èªååãã¹ãã®ç´¹ä»
è¤æ°ã®ãã©ã¦ã¶ã¼ã端æ«ã§ã 1 æ¥ã«ä½åº¦ããã¹ããæåã§å®è¡ããã®ã¯ãé¢åã§æéã®ããã使¥ã§ãããããå¹ççã«å¦çããããã«ã¯ãèªååãã¼ã«ã«æ £ãããã¨ã§ãããã®è¨äºã§ã¯ãå©ç¨ã§ãããã®ãã¿ã¹ã¯ã©ã³ãã¼ã®ä½¿ç¨æ¹æ³ã Sauce LabsãBrowserStackãTestingBot ãªã©ã®åç¨ãã©ã¦ã¶ã¼ãã¹ãèªååã¢ããªã®åºæ¬çãªä½¿ç¨æ¹æ³ãè¦ã¦ããã¾ãã
| åææ¡ä»¶: | HTMLãCSSãJavaScript è¨èªã®ä¸»è¦é¨ã«éãã¦ãããã¨ã ãã©ã¦ã¶ã¼æ¨ªæãã¹ãã®åºæ¬ã«ã¤ãã¦é«æ°´æºã®èããæã£ã¦ãããã¨ã |
|---|---|
| ç®ç: | èªåãã¹ããã©ã®ãããªãã®ããèªåãã¹ãã«ãã£ã¦ã©ã®ããã«ã©ã¤ããæ¥½ã«ãªãããã¾ããèªåãã¹ããæ¥½ã«ããåç¨è£½åãã©ã®ããã«ä½¿ç¨ãããã¨ãã§ããããçè§£ã§ããããã«ãããã¨ã |
èªååã§ç°¡åã«ãªã
ãã®ã¢ã¸ã¥ã¼ã«ãéãã¦ãã¦ã§ããµã¤ããã¢ããªããã¹ããããã¾ãã¾ãªæ¹æ³ãèªã¿è¾¼ãã ãããã¹ããããã©ã¦ã¶ã¼ãã¢ã¯ã»ã·ããªãã£ã®èæ ®ãªã©ããã©ã¦ã¶ã¼æ¨ªæãã¹ãã«ã©ã®ãããªç¯å²ãä¿æãã¹ããã説æãã¾ããã使¥ããã®ã大å¤ããã§ãããï¼
ååè¨äºã§è¦ã¦ãããã¨ããã¹ã¦æä½æ¥ã§ãã¹ãããã®ã¯æ¬å½ã«å¤§å¤ãªãã¨ã§ãã幸ããªãã¨ã«ããã®è¦çã®ä¸é¨ãèªååããã®ã«å½¹ç«ã¤ãã¼ã«ãããã¾ãããã®ã¢ã¸ã¥ã¼ã«ã§èª¬æãããã¹ããèªååããæ¹æ³ã¯ã主㫠2 ã¤ããã¾ãã
- GruntãGulpãnpm scripts ã®ãããªã¿ã¹ã¯ã©ã³ãã¼ã使ç¨ãã¦ããã«ãããã»ã¹ä¸ã«ãã¹ããå®è¡ããã³ã¼ããã¯ãªã¼ã³ã¢ãããã¾ããããã¯ãã³ã¼ãã®ãªã³ãã£ã³ã°ãæå°åã CSS æ¥é è¾ã追å ãããããã©ã¦ã¶ã¼éã§æå¤§éã®æ©è½ãå±éãããããã« JavaScript ã®æ°æ©è½ããã©ã³ã¹ãã¤ã«ãããªã©ã®ã¿ã¹ã¯ãå®è¡ããã®ã«æé©ãªæ¹æ³ã§ãã
- Selenium ã®ãããªãã©ã¦ã¶ã¼èªååã·ã¹ãã ã使ç¨ãã¦ãã¤ã³ã¹ãã¼ã«ããããã©ã¦ã¶ã¼ã«ããã¦åºæã®ãã¹ããå®è¡ããçµæãè¿ããã¨ã§ããã©ã¦ã¶ã¼ã§å¤±æãçºçããå ´åã«è¦åãçºãã¾ãã Sauce Labs ã BrowserStack ã®ãããªå¸è²©ã®ãã©ã¦ã¶ã¼æ¨ªæãã¹ãã¢ããªã¯ Selenium ããã¼ã¹ã«ãã¦ãã¾ãããåç´ãªã¤ã³ã¿ã¼ãã§ã¤ã¹ã使ç¨ãã¦ãªã¢ã¼ãã§è¨å®ã«ã¢ã¯ã»ã¹ãããã¨ãã§ããã®ã§ãèªåèªèº«ã§ãã¹ãã·ã¹ãã ãè¨å®ããæéãçããã¨ãã§ãã¾ãã
次ã®è¨äºã§ã¯ãèªåèªèº«ã§ Selenium ãã¼ã¹ã®ãã¹ãã·ã¹ãã ãè¨å®ããæ¹æ³ãè¦ã¦ããã¾ãããã®è¨äºã§ã¯ãã¿ã¹ã¯ã©ã³ãã¼ãè¨å®ããä¸è¨ã®ãããªåç¨ã·ã¹ãã ã®åºæ¬çãªæ©è½ã使ç¨ããæ¹æ³ãè¦ã¦ããã¾ãã
ã¡ã¢: ä¸è¨ã® 2 ã¤ã®ã«ãã´ãªã¼ã¯ç¸äºã«æä»çã§ã¯ããã¾ããã Sauce Labs ã®ãããªãµã¼ãã¹ã« API çµç±ã§ã¢ã¯ã»ã¹ãããã©ã¦ã¶ã¼æ¨ªæãã¹ããå®è¡ããçµæãè¿ãã¿ã¹ã¯ã©ã³ãã¼ãè¨å®ãããã¨ã¯å¯è½ã§ããä¸è¨ã§ãè¦ã¦ããã¾ãã
ã¿ã¹ã¯ã©ã³ãã¼ã使ç¨ãã¦ãã¹ããã¼ã«ãèªåå
ãã®ããã«ãã¿ã¹ã¯ã©ã³ãã¼ã使ç¨ãã¦ãæ§ç¯ããã»ã¹ã®ç¹å®ã®æç¹ã§èªåçã«å®è¡ããå¿ è¦ããããã¹ã¦ã®ã¿ã¹ã¯ãå®è¡ãããã¨ã§ãã³ã¼ãã®ãªã³ãã£ã³ã°ãæå°åãªã©ã®ä¸è¬çãªã¿ã¹ã¯ãå¤§å¹ ã«ã¹ãã¼ãã¢ããã§ãã¾ããä¾ãã°ããã¡ã¤ã«ãä¿åããæç¹ã ä»ã®æç¹ãªã©ã§ãããã®ç¯ã§ã¯ã Node ã¨åå¿è åãã®ãªãã·ã§ã³ã§ãã Gulp ã使ã£ã¦èª²é¡å®è¡ãèªååããæ¹æ³ãè¦ã¦ããã¾ãã
Node 㨠npm ã®è¨å®
æè¿ã®ã»ã¨ãã©ã®ãã¼ã«ã¯ Node.js ããã¼ã¹ã«ãã¦ããã®ã§ã対å¿ããããã±ã¼ã¸ããã¼ã¸ã£ã¼ã§ãã npm ããã¤ã³ã¹ãã¼ã«ããå¿
è¦ãããã¾ãã
- Node.js ã¨
npmãã¤ã³ã¹ãã¼ã«ããã³æ´æ°ããæãç°¡åãªæ¹æ³ã¯ã Node ãã¼ã¸ã§ã³ããã¼ã¸ã£ã¼ã使ç¨ãããã¨ã§ãã Node ã®ã¤ã³ã¹ãã¼ã«ã®æé ã«å¾ã£ã¦ãã ããã - ç¶ããåã«ãã¤ã³ã¹ãã¼ã«ãæåãããã¨ã確èªãã¦ãã ããã
- Node.js/
npmããã§ã«ã¤ã³ã¹ãã¼ã«ãã¦ããå ´åã¯ãããããææ°ãã¼ã¸ã§ã³ã«æ´æ°ããå¿ è¦ãããã¾ããããã¯ã Node ãã¼ã¸ã§ã³ããã¼ã¸ã£ã¼ã使ç¨ãã¦ææ°ã® LTS ãã¼ã¸ã§ã³ãã¤ã³ã¹ãã¼ã«ãããã¨ã§å®è¡ã§ãã¾ãï¼ä¸è¨ã®ãªã³ã¯å ã®èª¬æãåç §ãã¦ãã ããï¼ã
èªåã®ããã¸ã§ã¯ãã§ Node/npm ãã¼ã¹ã®ããã±ã¼ã¸ã使ç¨ãå§ããã«ã¯ãããã¸ã§ã¯ããã£ã¬ã¯ããªã¼ã npm ããã¸ã§ã¯ãã¨ãã¦è¨å®ããå¿ è¦ãããã¾ããããã¯ç°¡åã«ã§ãã¾ãã
ä¾ãã°ãä½ããå£ããªãããã«ãæåã« test ãã£ã¬ã¯ããªã¼ã使ãã¾ãããã
-
ãã¡ã¤ã«ããã¼ã¸ã£ã¼ã® UI ã使ç¨ãã¦ãã¾ãã¯ã³ãã³ãã©ã¤ã³ã§ãå¿ è¦ãªå ´æã«ç§»åãã¦ä»¥ä¸ã®ã³ãã³ããå®è¡ãã¦ãã©ããé©åãªå ´æã«æ°ãããã£ã¬ã¯ããªã¼ã使ãã¾ãã
bashmkdir node-test -
ãã®ãã£ã¬ã¯ããªã¼ã npm ããã¸ã§ã¯ãã«ããã«ã¯ã test ãã£ã¬ã¯ããªã¼ã®ä¸ã«å ¥ã£ã¦ã以ä¸ã使ã£ã¦åæåããã ãã§ãã
bashcd node-test npm init -
ãã® 2 ã¤ç®ã®ã³ãã³ãã¯ãèªåã®ããã¸ã§ã¯ããè¨å®ããã®ã«å¿ è¦ãªæ å ±ãæ¢ãããã«å¤ãã®è³ªåãè¦æ±ããã¾ããããã§ãæ¢å®å¤ã鏿ããã ãã§ãã
-
ãã¹ã¦ã®è³ªåãçµããã¨ãå ¥åããæ å ±ãåé¡ããªãããå°ãã¦ãã¾ãã
yesã¨å ¥åã㦠Enter/Return ãæ¼ãã¨ã npm ããã£ã¬ã¯ããªã¼ã«package.jsonãã¡ã¤ã«ãçæãã¾ãã
ãã®ãã¡ã¤ã«ã¯åºæ¬çã«èªåã®ããã¸ã§ã¯ãã®è¨å®ãã¡ã¤ã«ã§ããå¾ã§ã«ã¹ã¿ãã¤ãºãããã¨ãã§ãã¾ãããã¨ããããã¯ãããªæãã§ãã
{
"name": "node-test",
"version": "1.0.0",
"description": "Test for npm projects",
"main": "index.js",
"scripts": {
"test": "test"
},
"author": "Chris Mills",
"license": "MIT"
}
ããã§ç§»åããæºåã¯æ´ãã¾ããã
Gulp èªååã®ã»ããã¢ãã
Gulp ãè¨å®ãã¦ãããã¤ãã®ãã¹ããã¼ã«ãèªååããããã«ä½¿ç¨ãã¦ã¿ã¾ãããã
-
ã¾ãå§ãã«ãååã§èª¬æããæé ã§ãã¹ãç¨ã® npm ããã¸ã§ã¯ãã使ãã¾ãã ã¾ãã
package.jsonãã¡ã¤ã«ã«"type": "module"ã¨ããè¡ã追å ãã¦ã以ä¸ã®ãããªãã¡ã¤ã«ã«ãã¦ãã ãããjson{ "name": "node-test", "version": "1.0.0", "description": "Test for npm projects", "main": "index.js", "scripts": { "test": "test" }, "author": "Chris Mills", "license": "MIT", "type": "module" } -
次ã«ãã·ã¹ãã ããã¹ãããããã®ãµã³ãã« HTMLãCSS 㨠JavaScript ã³ã³ãã³ããå¿ è¦ã§ãããµã³ãã« index.htmlãmain.jsãstyle.css ãã¡ã¤ã«ãããã¸ã§ã¯ããã©ã«ãã¼å ã®
srcã¨ããååã®ãµããã©ã«ãã¼ã«ã³ãã¼ãã¦ãã ããã ã好ã¿ã§ç¬èªã®ãã¹ãã³ã³ãã³ãã試ãã¦ã¿ããã¨ãã§ãã¾ããããããããã¼ã«ã¯ HTML ãã¡ã¤ã«å ã« JS/CSS ãã¤ã³ã©ã¤ã³ã§è¨è¿°ããã¦ããå ´åããã¾ãåä½ããªããã¨ã«ã注æãã ãããå¥åã®ãã¡ã¤ã«ãç¨æããå¿ è¦ãããã¾ãã -
以ä¸ã®ã³ãã³ãã使ç¨ãã¦ã gulp ãã°ãã¼ãã«ã«ã¤ã³ã¹ãã¼ã«ãã¾ãï¼ã¤ã¾ãããã¹ã¦ã®ããã¸ã§ã¯ãã§å©ç¨ã§ããããã«ãªãã¾ãï¼ã
bashnpm install --global gulp-cli -
次ã«ã以ä¸ã®ã³ãã³ãã npm ããã¸ã§ã¯ãã®ã«ã¼ããã£ã¬ã¯ããªã¼å ã§å®è¡ãã gulp ãèªåã®ããã¸ã§ã¯ãã®ä¾åé¢ä¿ã¨ãã¦è¨å®ãã¾ãã
bashnpm install --save-dev gulp -
ããã§èªåã®ããã¸ã§ã¯ããã£ã¬ã¯ããªã¼ã«
gulpfile.mjsã¨å¼ã°ããæ°ãããã¡ã¤ã«ã使ãã¾ããããã¯ãã¹ã¦ã®èª²é¡ãå®è¡ãããã¡ã¤ã«ã§ãããã®ãã¡ã¤ã«ã®ä¸ã«ã次ã®ããã«è¨è¿°ãã¾ããjsimport gulp from "gulp"; export default function (cb) { console.log("Gulp running"); cb(); }ããã¯å ã»ã©ã¤ã³ã¹ãã¼ã«ãã
gulpã¢ã¸ã¥ã¼ã«ãè¦æ±ããã端æ«ã«ã¡ãã»ã¼ã¸ãåºåãã以å¤ã¯ä½ãããªãæ¢å®ã¿ã¹ã¯ãã¨ã¯ã¹ãã¼ããã¾ã - ãã㯠Gulp ãåä½ãã¦ãããã¨ãç¥ãããã®ã«æçã§ããæ¬¡ã®ããã¤ãã®ç¯ã§ããã®export defaultæãããæçãªãã®ã«æ¸ãæãã¦ããã¾ããå gulp ã¿ã¹ã¯ã¯åãåºæ¬æ¸å¼ã
exports function taskName(cb) {...}ã§ã¨ã¯ã¹ãã¼ãããã¾ããå颿°ã¯ 1 ã¤ã®å¼æ°ã課é¡ãå®å ¨ã«å®äºããã¨ãã«å®è¡ããã³ã¼ã«ããã¯ãåãã¾ãã -
以ä¸ã®ã³ãã³ãã§ gulp ã®æ¢å®ã¿ã¹ã¯ãå®è¡ãããã¨ãã§ãã¾ããããã§è©¦ãã¦ã¿ã¦ãã ããã
bashgulp
Gulp ã«å®éã®ã¿ã¹ã¯ã追å
ããã§ãGulp ãã¡ã¤ã«ã«ã¿ã¹ã¯ã追å ããæºåãæ´ãã¾ãããããããã®ã¿ã¹ã¯ã追å ããéã¯ãå¿
è¦ã«å¿ã㦠gulpfile.mjs ãã¡ã¤ã«ã次ã®ããã«å¤æ´ãã¦ãã ããã
importæã追å ããããä¾é ¼ãããå ´åã¯ãæ¢åã®importæã®ä¸è¨ã«è¿½å ãã¦ãã ããã- æ°ãã
export function ...æã追å ããããä¾é ¼ãããå ´åã¯ããã¡ã¤ã«ã®æ«å°¾ã«è¿½å ãã¦ãã ããã - ããã©ã«ãã®ã¨ã¯ã¹ãã¼ãã夿´ããããä¾é ¼ãããå ´åã¯ãæå®ããæ¹æ³ã§
export defaultæã夿´ãã¦ãã ããã
ããã«ãããgulpfile.mjs ãã¡ã¤ã«ã¯åæ§ã«å¤æ´ããã¾ãã
import gulp from "gulp";
// ããã«æ°ããã¤ã³ãã¼ãã追å
// ææ°ã®ããã©ã«ãã¨ã¯ã¹ãã¼ã
// export default ...
// æ°ããã¿ã¹ã¯ã®ã¨ã¯ã¹ãã¼ããããã«è¿½å
// export function ...
// export function ...
Gulp ã«å®éã®ã¿ã¹ã¯ã追å ããã«ã¯ãä½ããããããèããå¿ è¦ãããã¾ããèªåã®ããã¸ã§ã¯ãã§å®è¡ããåççãªåºæ¬æ©è½ã»ããã¯ä»¥ä¸ã§ãã
- html-tidyãcss-lintãjs-hint ã¯ãä¸è¬ç㪠HTML/CSS/JS ã®ã¨ã©ã¼ãæ¤æ»ããå ±å/ä¿®æ£ãã¾ãï¼gulp-htmltidyãgulp-csslintãgulp-jshint ãåç §ï¼ã
- Autoprefixer 㯠CSS ãã¹ãã£ã³ããå¿ è¦ãªã¨ããã«ã ãæ¥é è¾ã追å ãã¾ãï¼gulp-autoprefixer ãåç §ï¼ã
- babel ã¯æ°ãã JavaScript æ§ææ©è½ããå¤ããã©ã¦ã¶ã¼ã§åä½ããä¼çµ±çãªæ§æã«ãã©ã³ã¹ãã¤ã«ãã¾ãï¼gulp-babel ãåç §ï¼ã
ç§ãã¡ã使ç¨ãã¦ãããã¾ãã¾ãª gulp ããã±ã¼ã¸ã®å®å ¨ãªèª¬æã«ã¤ãã¦ã¯ãä¸è¨ã®ãªã³ã¯ãåç §ãã¦ãã ããã
åãã©ã°ã¤ã³ã使ç¨ããã«ã¯ãã¾ã npm çµç±ã§ãã©ã°ã¤ã³ãã¤ã³ã¹ãã¼ã«ããæ¬¡ã« gulpfile.mjs ãã¡ã¤ã«ã®å
é ã«ä¾åé¢ä¿ãè¦æ±ããããã®ä¸ã«ãã¹ãã追å ããæå¾ã« gulp ã®ã³ãã³ããã使ç¨ã§ããããã«èª²é¡ã®ååãã¨ã¯ã¹ãã¼ãããå¿
è¦ãããã¾ãã
html-tidy
-
以ä¸ã®è¡ã使ç¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã
bashnpm install --save-dev gulp-htmltidyã¡ã¢:
--save-devã¯ãããã±ã¼ã¸ãèªåã®ããã¸ã§ã¯ãã«ä¾åé¢ä¿ã¨ãã¦è¿½å ãã¾ããèªåã®ããã¸ã§ã¯ãã®package.jsonãã¡ã¤ã«ãè¦ã¦ããã¨ãdevDependenciesããããã£ã«ãã®é ç®ãããã¾ãã -
以ä¸ã®ä¾åé¢ä¿ã
gulpfile.mjsã«è¿½å ãã¾ããjsimport htmltidy from "gulp-htmltidy"; -
以ä¸ã®ãã¹ãã
gulpfile.mjsã®ä¸çªä¸ã«è¿½å ãã¾ããjsexport function html() { return gulp .src("src/index.html") .pipe(htmltidy()) .pipe(gulp.dest("build")); } -
æ¢å®ã®ã¨ã¯ã¹ãã¼ãã夿´ãã¾ãã
jsexport default html;
ããã§ã¯ãéçºãã index.html ãã¡ã¤ã«ã gulp.src() ã§åå¾ãã¦ãã¾ããããã¯ä½ããããããã«ã½ã¼ã¹ãã¡ã¤ã«ãåå¾ãããã¨ãã§ãã¾ãã
次㫠pipe() 颿°ã使ç¨ãã¦ããã®ã½ã¼ã¹ãå¥ã®ã³ãã³ãã«æ¸¡ãã¦å¥ã®å¦çãè¡ãã¾ãããã®é¢æ°ã¯ããã¤ã§ãã¤ãªãããã¨ãã§ãã¾ããæåã« htmltidy() ãã½ã¼ã¹ã«å¯¾ãã¦åä½ããã¾ãã 2 ã¤ç®ã® pipe() 颿°ã¯ãåºåããã HTML ãã¡ã¤ã«ã build ãã£ã¬ã¯ããªã¼ã«æ¸ãã¾ãã
å
¥åãã¼ã¸ã§ã³ã®ãã¡ã¤ã«ã§ã¯ã空㮠<p> è¦ç´ ãç½®ãããã¨ã«æ°ãä»ããããããã¾ããã htmltidy ã¯åºåãã¡ã¤ã«ã使ãããæç¹ã¾ã§ã«ãããé¤å»ãã¾ãã
Autoprefixer 㨠css-lint
-
以ä¸ã®è¡ã使ç¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã
bashnpm install --save-dev gulp-autoprefixer npm install --save-dev gulp-csslint -
以ä¸ã®ä¾åé¢ä¿ã
gulpfile.mjsã«è¿½å ãã¾ããjsimport autoprefixer from "gulp-autoprefixer"; import csslint from "gulp-csslint"; -
以ä¸ã®ãã¹ãã
gulpfile.mjsã®ä¸çªä¸ã«è¿½å ãã¾ããjsexport function css() { return gulp .src("src/style.css") .pipe(csslint()) .pipe(csslint.formatter("compact")) .pipe( autoprefixer({ cascade: false, }), ) .pipe(gulp.dest("build")); } -
以ä¸ã®ããããã£ã
package.jsonã«è¿½å ãã¾ããjson{ "browserslist": ["last 5 versions"] } -
æ¢å®ã§ã¿ã¹ã¯ã夿´ãã¾ãã
jsexport default gulp.series(html, css);
ããã§ã¯ã style.css ãã¡ã¤ã«ãåå¾ãã csslint ãå®è¡ãï¼CSS ã®ã¨ã©ã¼ã®ãªã¹ãã端æ«ã«åºåãã¾ãï¼ãå¤ããã©ã¦ã¶ã¼ã§æ°ãã CSS æ©è½ãåä½ãããããã«å¿
è¦ãªæ¥é è¾ã追å ããããã« autoprefixer ãå®è¡ãã¾ãããã¤ããã§ã¼ã³ã®çµããã§ã夿´ããæ¥é è¾ä»ãã® CSS ã build ãã£ã¬ã¯ããªã¼ã¸åºåãã¾ãããã㯠csslint ãã¨ã©ã¼ãè¦ã¤ããªãã£ãå ´åã«ã®ã¿åä½ãããã¨ã«æ³¨æãã¦ãã ããã CSS ãã¡ã¤ã«ãã䏿¬å¼§ãé¤å»ã㦠gulp ãåå®è¡ããã©ã®ãããªåºåãå¾ãããã試ãã¦ã¿ã¦ãã ããã
js-hint 㨠babel
-
以ä¸ã®è¡ã使ç¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã
bashnpm install --save-dev gulp-babel @babel/preset-env npm install --save-dev @babel/core npm install jshint gulp-jshint --save-dev -
以ä¸ã®ä¾åé¢ä¿ã
gulpfile.mjsã«è¿½å ãã¾ããjsimport babel from "gulp-babel"; import jshint from "gulp-jshint"; -
以ä¸ã®ãã¹ãã
gulpfile.mjsã®ä¸çªä¸ã«è¿½å ãã¾ããjsexport function js() { return gulp .src("src/main.js") .pipe(jshint()) .pipe(jshint.reporter("default")) .pipe( babel({ presets: ["@babel/env"], }), ) .pipe(gulp.dest("build")); } -
æ¢å®ã§ã¿ã¹ã¯ã夿´ãã¾ãã
jsexport default gulp.series(html, css, js);
ããã§ã¯ã main.js ãã¡ã¤ã«ãåå¾ããjshint ãåä½ããã jshint.reporter ã使ç¨ãã¦çµæã端æ«ã«åºåãã¾ããæ¬¡ã« babel ã«ãã¡ã¤ã«ã渡ãã¨ã babel ã¯ãããå¤ãæ§æã«å¤æããçµæã build ãã£ã¬ã¯ããªã¼ã«åºåãã¾ããå
ã³ã¼ãã«ã¯ fat ã¢ãã¼é¢æ°ãããã¾ãããã babel ã¯ãããå¤ãã¹ã¿ã¤ã«ã®é¢æ°ã«å¤æ´ãã¾ããã
ãããªãã¢ã¤ãã£ã¢
ããããã¹ã¦è¨å®ãããããèªåã®ããã¸ã§ã¯ããã£ã¬ã¯ããªã¼å
ã§ gulp ã³ãã³ããå®è¡ããã¨ã次ã®ãããªåºåãå¾ãããã¯ãã§ãã

èªååã¿ã¹ã¯ãåºåãããã¡ã¤ã«ã build ãã£ã¬ã¯ããªã¼ã®ä¸ã§è¦ããã build/index.html ãã¦ã§ããã©ã¦ã¶ã¼ã§èªã¿è¾¼ãã ããã¦è©¦ããã¨ãã§ãã¾ãã
ã¨ã©ã¼ãçºçããå ´åã¯ãä¸è¨ã®ããã«ä¾åé¢ä¿ã¨ãã¹ãããã¹ã¦è¿½å ããã¦ããã調ã¹ã¦ãã ãããã¾ãã HTML/CSS/JavaScript ã³ã¼ããã³ã¡ã³ãã¢ã¦ããã¦ãã gulp ãåå®è¡ãã¦ã¿ã¦ãåé¡ãä½ã§ããããåãåãããããã©ãã確èªãã¦ãã ããã
Gulp ã«ã¯ watch() 颿°ãç¨æããã¦ããããã¡ã¤ã«ãä¿åãããã³ã«ãã¡ã¤ã«ãç£è¦ãã¦ãã¹ããå®è¡ããããã«ä½¿ç¨ãããã¨ãã§ãã¾ããä¾ãã°ã次ã®ä¾ã gulpfile.mjs ã®ä¸çªä¸ã«è¿½å ãã¦ã¿ã¦ãã ããã
export function watch() {
gulp.watch("src/*.html", html);
gulp.watch("src/*.css", css);
gulp.watch("src/*.js", js);
}
ããã§ gulp watch ã³ãã³ãã端æ«ã«å
¥åãã¦ã¿ã¦ãã ãããããã§ Gulp ã¯ããªãã®ãã£ã¬ã¯ããªã¼ãç£è¦ããHTMLãCSSãJavaScript ãã¡ã¤ã«ã«å¤æ´ãä¿åãããã³ã«é©åãªèª²é¡ãå®è¡ãã¾ãã
ã¡ã¢:
* è¨å·ã¯ã¯ã¤ã«ãã«ã¼ãã§ãããããã®åã®ãã¡ã¤ã«ãä¿åããããããããã®ã¿ã¹ã¯ãå®è¡ãããã¨è¨ãã¾ããã¡ã¤ã³ã¿ã¹ã¯ã§ã¯ã¤ã«ãã«ã¼ãã使ç¨ãããã¨ãã§ãã¾ããä¾ãã° gulp.src('src/*.css') ã¯ãã¹ã¦ã® CSS ãã¡ã¤ã«ãåå¾ããããã«å¯¾ãã¦ãã¤ãã¿ã¹ã¯ãå®è¡ãã¾ãã
Gulp ã§ã§ãããã¨ã¯ã¾ã ããã¾ãã Gulp ãã©ã°ã¤ã³ãã£ã¬ã¯ããªã¼ã«ã¯ãæåéãä½åãã®ãã©ã°ã¤ã³ãæ¤ç´¢ã§ããããã«ãªã£ã¦ãã¾ãã
ä»ã®ã¿ã¹ã¯ã©ã³ãã¼
ä»ã«ãå©ç¨ã§ããã¿ã¹ã¯ã©ã³ãã¼ã¯ããããããã¾ãã Gulp ãæé«ã®ã½ãªã¥ã¼ã·ã§ã³ã§ããã¨è¨ãããããã§ã¯ããã¾ããããããã¯ç§ãã¡ã«ã¨ã£ã¦ãã¾ãããã¾ãããåå¿è ã«ã¨ã£ã¦ãããªãã¢ã¯ã»ã¹ãããããã®ã§ããä»ã«ã使ç¨ãããã¨ãã§ãã¾ãã
- Grunt 㯠Gulp ã¨ã¨ã¦ãããä¼¼ãæ¹æ³ã§åä½ãã¾ããã JavaScript ã§è¨è¿°ããã®ã§ã¯ãªããè¨å®ãã¡ã¤ã«ã§æå®ãã課é¡ã«é ¼ã£ã¦ããç¹ãç°ãªãã¾ãã詳ãã㯠Grunt ãå§ããã«ã¯ãåç §ãã¦ãã ããã
package.jsonãã¡ã¤ã«ã®ä¸ã«ãã npm ã¹ã¯ãªããã使ã£ã¦ç´æ¥ã¿ã¹ã¯ãå®è¡ãããã¨ãã§ãã¾ãããã㯠Gulp ãã©ã°ã¤ã³ã®ãããªãã®ãåºæ¬çã«ã³ãã³ãã©ã¤ã³ãã¼ã«ã®ã©ããã¼ã§ããã¨ããåæã§åä½ãã¾ããã¤ã¾ããã³ãã³ãã©ã¤ã³ã使ç¨ãã¦ãã¼ã«ãå®è¡ããæ¹æ³ãè¡ããã¨ãã§ããã°ã npm ã¹ã¯ãªããã使ç¨ãã¦ãã¼ã«ãå®è¡ãããã¨ãã§ãã¾ãã使¥ããã®ã¯å°ãããªããã¼ã§ãããã³ãã³ãã©ã¤ã³ã«å¼·ãããªãã«ã¨ã£ã¦ããããã®ãã使¥ã§ãã Why npm scripts? ã¯ãããã«å¤ãã®æ å ±ãå«ãè¯ãå ¥éæ¸ãæä¾ãã¦ãã¾ãã
ãã©ã¦ã¶ã¼ãã¹ãã®ã¹ãã¼ãã¢ããã®ããã«åç¨ãã¹ããµã¼ãã¹ã®ä½¿ç¨
ããã§ã忥çãªãµã¼ããã¼ãã£ã¼ã®ãã©ã¦ã¶ã¼ãã¹ããµã¼ãã¹ã¨ãããããç§ãã¡ã®ããã«ä½ãã§ããããè¦ã¦ããã¾ãããã
ãã®ãããªã¢ããªã±ã¼ã·ã§ã³ã®åºæ¬çãªåæã¯ããããããå®è¡ããä¼ç¤¾ããå¤ãã®ç°ãªããã¹ããå®è¡ã§ãã巨大ãªãµã¼ãã¼ãã¡ã¼ã ãæã£ã¦ããã¨ãããã¨ã§ãããµã¼ãã¹ã¯ã¼ã«ã¼ã¹ã¯ãªããã使ç¨ããå ´åããã¹ãããããã¼ã¸ã® URL ã¨ããã¹ãããããã©ã¦ã¶ã¼ãªã©ã®æ å ±ãæä¾ãã¾ããã¢ããªã¯ãæå®ããOSã¨ãã©ã¦ã¶ã¼ã«æ°ããVMãè¨å®ãããã¹ãçµæãã¹ã¯ãªã¼ã³ã·ã§ãããåç»ããã°ãã¡ã¤ã«ãããã¹ããªã©ã®å½¢ã§è¿ãã¾ãã
ãã®å¾ã段éçã« API ã使ç¨ãã¦ããã°ã©ã çã«æ©è½ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãããã®ãããªã¢ããªã¯ãèªåãã¹ãã使ããããã«ãèªåèªèº«ã§ãã¼ã«ã«ã® Selenium ç°å¢ãªã©ã®ã¿ã¹ã¯ã©ã³ãã¼ã¨çµã¿åããããã¨ãã§ãããã¨ãæå³ãã¦ãã¾ãã
ã¡ã¢: ä»ã«ãå©ç¨ã§ããåç¨ãã©ã¦ã¶ã¼ãã¹ãã·ã¹ãã ã¯ããã¾ããããã®è¨äºã§ã¯ BrowserStackãSauce Labs ã«ç¦ç¹ãå½ã¦ã¾ããããããå¿ ãããå©ç¨ã§ããæé«ã®ãã¼ã«ã ã¨ã¯è¨ãã¾ããããåå¿è ã§ãåç´ã«åå¾ãå®è¡ãããã¨ãã§ããè¯ããã¼ã«ã§ãã
BrowserStack
BrowserStack ãå§ãã
å§ããã«ã¯æ¬¡ã®ããã«ãã¾ãã
- BrowserStack ãã©ã¤ã¢ã«ã¢ã«ã¦ã³ãã使ãã¾ãã
- ãã°ã¤ã³ãã¦ãã ãããã¡ã¼ã«ã¢ãã¬ã¹ã®ç¢ºèªå¾ãèªåçã«ãã°ã¤ã³ãããã¯ãã§ãã
- ããã§ãªãå ´åã¯ããããããã²ã¼ã·ã§ã³ã¡ãã¥ã¼ã® Live ãªã³ã¯ãã¯ãªãã¯ãã¦ãã ããã
åºæ¬çãªæ©è½: æåãã¹ã
BrowserStack Live ã®ããã·ã¥ãã¼ãã§ã¯ããã¹ã対象ã®ãã©ãããã©ã¼ã ã端æ«ããã©ã¦ã¶ã¼ã鏿ãããã¨ãã§ãã¾ãã ãã¹ã¯ãããã®ãã¹ãã§ã¯ãOS ã¨ãã©ã¦ã¶ã¼ãç´æ¥é¸æãã¾ãã ã¢ãã¤ã«ç«¯æ«ã®å ´åã¯ãã¢ãã¤ã« OS ã¨ç«¯æ«ã鏿ãããã®å¾ããã®ç«¯æ«ã¨ãã©ã¦ã¶ã¼ã®çµã¿åããã«é©ãããã©ã¦ã¶ã¼ã鏿ãããã¨ãã§ãã¾ãã

ãã©ã¦ã¶ã¼ã®ã¢ã¤ã³ã³ãã¯ãªãã¯ããã¨ãã好ã¿ã®ãã©ãããã©ã¼ã /端æ«/ãã©ã¦ã¶ã¼ãèªã¿è¾¼ã¾ãã¾ããããã§é¸ãã§ã試ãã¦ã¿ã¦ãã ããã

ã¢ãã¬ã¹ãã¼ã« URL ãå ¥åãããããã¦ã¹ãã©ãã°ã«ããä¸ä¸ã®ã¹ã¯ãã¼ã«ãé©åãªã¸ã§ã¹ãã£ã¼ï¼ãã³ãï¼ãºã¼ã ã 2 æ¬æã§ã®ã¹ã¯ãã¼ã«ãªã©ï¼ã使ç¨ãããã¨ãã§ãã¾ãã
å©ç¨å¯è½ãªæ©è½ã¯ãèªã¿è¾¼ã¾ãã¦ãããã©ã¦ã¶ã¼ã«ãã£ã¦ç°ãªãã以ä¸ã®ãããªã³ã³ããã¼ã«ãå«ã¾ãã¾ãã
- ç¾å¨ã®ãã©ã¦ã¶ã¼ã®æ å ±ã表示
- ä»ã®ãã©ã¦ã¶ã¼ã¸ã®åãæ¿ã
- localhost URL ã®ãã¹ã
- ãºã¼ã ã¬ãã«ã®è¨å®ã¨æ¹åã®åãæ¿ã
- ããã¯ãã¼ã¯ã®ä¿åã¨èªã¿è¾¼ã¿
- ã¹ã¯ãªã¼ã³ã·ã§ããã®ãã£ããã£ï¼æ³¨éããã°ã¬ãã¼ãã®æåº
- ãã©ã¦ã¶ã¼ã®éçºè ãã¼ã«ã¸ã®ã¢ã¯ã»ã¹
- å ±åãããå ´æã®å¤æ´
- ãããã¯ã¼ã¯ã®ã¹ããããªã³ã°
- ã¹ã¯ãªã¼ã³ãªã¼ãã¼ã¸ã®ã¢ã¯ã»ã¹

æ å ±ã«ã¤ãã¦ã¯ãBrowserStack Live ã®ããã¥ã¡ã³ããã覧ãã ããã
é«åº¦ãªæ©è½: BrowserStack API
BrowserStack ã restful API ãä¿æãã¦ãããã¢ã«ã¦ã³ããã©ã³ãã»ãã·ã§ã³ããã«ããªã©ã®è©³ç´°ãããã°ã©ã ã§åç §ãããã¨ãã§ãã¾ãã
Node.js ã使ç¨ã㦠API ã«ã¢ã¯ã»ã¹ããæ¹æ³ãç°¡åã«è¦ã¦ããã¾ãããã
-
ã¾ããNode 㨠npm ã®è¨å®ã§è©³ãã説æãã¦ããããã«ãããããã¹ãããããã«æ°ãã npm ããã¸ã§ã¯ããè¨å®ãã¾ããä¾ãã°
bstack-testã®ããã«ã以åã¨ã¯ç°ãªããã£ã¬ã¯ããªã¼åã使ç¨ãã¦ãã ããã -
èªåã®ããã¸ã§ã¯ãã®ã«ã¼ãå ã«ã
call_bstack.jsã¨ããæ°ãããã¡ã¤ã«ã使ãã以ä¸ã®ã³ã³ãã³ããä¸ãã¾ããjsconst axios = require("axios"); const bsUser = "BROWSERSTACK_USERNAME"; const bsKey = "BROWSERSTACK_ACCESS_KEY"; const baseUrl = `https://${bsUser}:${bsKey}@www.browserstack.com/automate/`; function getPlanDetails() { axios.get(`${baseUrl}plan.json`).then((response) => { console.log(response.data); }); /* Response: { automate_plan: <string>, terminal_access: <string>. parallel_sessions_running: <int>, team_parallel_sessions_max_allowed: <int>, parallel_sessions_max_allowed: <int>, queued_sessions: <int>, queued_sessions_max_allowed: <int> } */ } getPlanDetails(); -
BrowserStack ã®ã¦ã¼ã¶ã¼å㨠API ãã¼ããææããé ç½®ããå¿ è¦ãããã¾ãããã®ãã¼ã¯ã BrowserStack Account & Profile Details ã® Authentication & Security ç¯ããåå¾ã§ãã¾ãããããå ¥åãã¦ãã ããã
-
端æ«ã§æ¬¡ã®ã³ãã³ããå®è¡ãã¦ã HTTP ãªã¯ã¨ã¹ãã®éä¿¡ãå¦çããããã«ã³ã¼ãã§ä½¿ç¨ãã¦ãã axios ã¢ã¸ã¥ã¼ã«ãã¤ã³ã¹ãã¼ã«ãã¾ãï¼axios ãé¸ãã ã®ã¯ãã·ã³ãã«ã§äººæ°ãããããããµãã¼ããåªãã¦ããããã§ãï¼ã
bashnpm install axios -
JavaScript ãã¡ã¤ã«ãä¿åããã¦ãããã¨ã確èªãã端æ«ã§ä»¥ä¸ã®ã³ãã³ããå®è¡ãã¦ãã ããã BrowserStack ãã©ã³ã®è©³ç´°ãå«ããªãã¸ã§ã¯ãã端æ«ã«åºåãããã¯ãã§ãã
bashnode call_bstack
ä¸è¨ã§ã¯ã BrowserStack restful API ã§ä½æ¥ããéã«æçã¨æããããä»ã«ãããã¤ãã®æ¢è£½ã®é¢æ°ãæä¾ãã¦ãã¾ãã
ãã®é¢æ°ã¯ã以åã«ä½æããããã¹ã¦ã®èªåãã«ãã®æ¦è¦è©³ç´°ãè¿ãã¾ãï¼BrowserStack èªåãã¹ãã®è©³ç´°ã«ã¤ãã¦ã¯ã次ã®è¨äºãåç §ãã¦ãã ããï¼ã
function getBuilds() {
axios.get(`${baseUrl}builds.json`).then((response) => {
console.log(response.data);
});
/* ã¬ã¹ãã³ã¹:
[
{
automation_build: {
name: <string>,
hashed_id: <string>,
duration: <int>,
status: <string>,
build_tag: <string>,
public_url: <string>
}
},
{
automation_build: {
name: <string>,
hashed_id: <string>,
duration: <int>,
status: <string>,
build_tag: <string>,
public_url: <string>
}
},
// â¦
]
*/
}
ãã®é¢æ°ã¯ãç¹å®ã®ãã«ãã«é¢ããç¹å®ã®ã»ãã·ã§ã³ã®è©³ç´°ãè¿ãã¾ãã
function getSessionsInBuild(build) {
const buildId = build.automation_build.hashed_id;
axios.get(`${baseUrl}builds/${buildId}/sessions.json`).then((response) => {
console.log(response.data);
});
/* Response:
[
{
automation_session: {
name: <string>,
duration: <int>,
os: <string>,
os_version: <string>,
browser_version: <string>,
browser: <string>,
device: <string>,
status: <string>,
hashed_id: <string>,
reason: <string>,
build_name: <string>,
project_name: <string>,
logs: <string>,
browser_url: <string>,
public_url: <string>,
appium_logs_url: <string>,
video_url: <string>,
browser_console_logs_url: <string>,
har_logs_url: <string>,
selenium_logs_url: <string>
}
},
{
automation_session: {
// â¦
}
},
// â¦
]
*/
}
次ã®é¢æ°ã¯ãç¹å®ã® 1 ã¤ã®ã»ãã·ã§ã³ã®è©³ç´°ãè¿ãã¾ãã
function getSessionDetails(session) {
const sessionId = session.automation_session.hashed_id;
axios.get(`${baseUrl}sessions/${sessionId}.json`).then((response) => {
console.log(response.data);
});
/* Response:
{
automation_session: {
name: <string>,
duration: <int>,
os: <string>,
os_version: <string>,
browser_version: <string>,
browser: <string>,
device: <string>,
status: <string>,
hashed_id: <string>,
reason: <string>,
build_name: <string>,
project_name: <string>,
logs: <string>,
browser_url: <string>,
public_url: <string>,
appium_logs_url: <string>,
video_url: <string>,
browser_console_logs_url: <string>,
har_logs_url: <string>,
selenium_logs_url: <string>
}
}
*/
}
é«åº¦ãªæ©è½: èªååãã¹ã
ãã®æ¬¡ã®è¨äºã§ã¯ãèªååãã BrowserStack ãã¹ããæ±ãã¾ãã
Sauce Labs
Sauce Labs ãå§ãã
Sauce Labs ãã©ã¤ã¢ã«ãå§ãã¾ãããã
- Sauce Labs ã®ãã©ã¤ã¢ã«ã¢ã«ã¦ã³ãã使ãã¾ãã
- ãã°ã¤ã³ãã¦ãã ãããã¡ã¼ã«ã¢ãã¬ã¹ã確èªããå¾ãèªåçã«ãã°ã¤ã³ããã¾ãã
åºæ¬çãªæ©è½: æåãã¹ã
Sauce Labs dashboard ã«ã¯ãå©ç¨ã§ãããªãã·ã§ã³ãããããããã¾ãã ãã°ã¤ã³ãããããã¼ã¸ã®å·¦ä¸ã«ãããã¯ããã«ãã¬ã¤ãã«å¾ã£ã¦ãã ããã
- "Run your first test" ã§ãDesktop browser ãã¯ãªãã¯ãã¾ãã
- 次ã®ç»é¢ã§ããã¹ãããããã¼ã¸ï¼ä¾ãã°ããã®ãã¼ã¸ãªã©ï¼ã® URL ãå
¥åãããã¾ãã¾ãªãã¿ã³ããªã¹ãã使ã£ã¦ãã¹ãããããã©ã¦ã¶ã¼ã¨ OS ã®çµã¿åãããé¸ã³ã¾ãã
ã覧ã®ããã«ã鏿è¢ã¯ããããããã¾ãã

- ãã¹ããéå§ããã¨ãèªã¿è¾¼ã¿ç»é¢ãç¾ãã鏿ãã端æ«ã¨ãã©ã¦ã¶ã¼ã®çµã¿åããã§å®è¡ãããç°å¢ãèµ·åãã¾ãã é¸ãã ãã©ã¦ã¶ã¼ã§å®è¡ããã¦ã§ããµã¤ãã®ãªã¢ã¼ããã¹ããå§ãããã¨ãã§ãã¾ãã
ãã®æ®µéã§ã¯ããã¹ã URL ãå ±æãã¦ä»ã®äººã«ãªã¢ã¼ãã§ãã¹ãã®æ§åãè¦ã¦ããã£ãããããã¹ããã¡ã¢ããªã¢ã¼ãã¯ãªãããã¼ãã«ã³ãã¼ããããç»é¢ã·ã§ãããæ®ã£ãããå ¨ç»é¢ã¢ã¼ãã§ãã¹ããè¡ã£ãããããªã©ããã¾ãã¾ãªæä½ãå¯è½ã§ãã
ã»ãã·ã§ã³ãçµäºããã¨ãLive ã¿ãã«æ»ããååæåã§å§ã¾ã£ãããããã®ã»ãã·ã§ã³ã®é ç®ã表示ããã¾ãã ãããã®é ç®ãã¯ãªãã¯ããã¨ããã®ã»ãã·ã§ã³ã®è©³ç´°ãªãã¼ã¿ã表示ããã¾ãã ããã§ã¯ãã¹ã¯ãªã¼ã³ã·ã§ããããã¦ã³ãã¼ãããããã»ãã·ã§ã³ã®åç»ãè¦ããããã¼ã¿ãã°ãåºåããããããã¨ãã§ãã¾ãã ããã¯ãã§ã«ã¨ã¦ãæçãªãã¨ã§ãè¤æ°ã®ã¨ãã¥ã¬ã¼ã¿ã¼ãä»®æ³ãã·ã³ããã¹ã¦èªåã§è¨å®ãããããã¯ããã«ä¾¿å©ã§ãã
詳ããã¯ãSauce Labs ã®ããã¥ã¡ã³ããã覧ãã ããã
é«åº¦ãªæ©è½: Sauce Labs API
Sauce Labs ã«ã¯ restful API ããããã¢ã«ã¦ã³ããæ¢åã®ãã¹ãã®è©³ç´°ãããã°ã©ã ã§åå¾ããããæåãã¹ãã ãã§ã¯è¨é²ã§ããªãåæ ¼/ä¸åæ ¼ç¶æ ãªã©ã®è©³ç´°æ å ±ããã¹ãã«ä»ä¸ããããããã¨ãã§ãã¾ããä¾ãã°ããããã©ã¦ã¶ã¼ã¨ OS ã®çµã¿åããããã¹ãããããã«ã Sauce Labs ã使ç¨ãã¦èªåèªèº«ã§ Selenium ãã¹ãã® 1 ã¤ããªã¢ã¼ãã§å®è¡ãããã¹ãçµæã Sauce Labs ã«æ¸¡ãã¨ãã¾ãã
PHPãJavaãNode.js ãªã©ãã好ã¿ã®ç°å¢ã使ç¨ã㦠API ãå©ç¨å¯è½ãªã¯ã©ã¤ã¢ã³ããããã¤ãããã¾ãã
Node.js 㨠node-saucelabs ã使ç¨ã㦠API ã«ã¢ã¯ã»ã¹ããæ¹æ³ãç°¡åã«è¦ã¦ããã¾ãããã
-
ã¾ããNode 㨠npm ã®è¨å®ã§è©³ãã説æãã¦ããããã«ãããããã¹ãããããã«æ°ãã npm ããã¸ã§ã¯ããè¨å®ãã¾ããä¾ãã°
sauce-testã®ããã«ã以åã¨ã¯ç°ãªããã£ã¬ã¯ããªã¼åã使ç¨ãã¾ãã -
以ä¸ã®ã³ãã³ãã使ç¨ãã¦ã Node Sauce Labs ã©ããã¼ãã¤ã³ã¹ãã¼ã«ãã¾ãã
bashnpm install saucelabs -
èªåã®ããã¸ã§ã¯ãã«ã¼ãã«æ°ãããã¡ã¤ã«
call_sauce.jsã使ãã以ä¸ã®ã³ã³ãã³ãã追å ãã¾ããjsconst SauceLabs = require("saucelabs").default; (async () => { const myAccount = new SauceLabs({ username: "your-sauce-username", password: "your-sauce-api-key", }); // é åã«å¿ãã¦ãã¯ã©ã¤ã¢ã³ãããå®å ¨ãª WebDriver URL ãåå¾ãã console.log(myAccount.webdriverEndpoint); // æå¾ã«å®è¡ããã¸ã§ãã®è©³ç´°ãåå¾ const jobs = await myAccount.listJobs("your-sauce-username", { limit: 1, full: true, }); console.log(jobs); })(); -
Sauce Labs ã®ã¦ã¼ã¶ã¼å㨠API ãã¼ã示ãé ç½®ã«è¨å ¥ãã¦ãã ããããããã¯ã¦ã¼ã¶ã¼è¨å®ãã¼ã¸ããåå¾ã§ãã¾ããããããå ¥ãã¦ãã ããã
-
ãã¹ã¦ãä¿åããã¦ãããã¨ã確èªããæ¬¡ã®ããã«ãã¡ã¤ã«ãå®è¡ãã¾ãã
bashnode call_sauce
é«åº¦ãªæ¹æ³: ãã¹ãã®èªåå
å®éã« Sauce Lab ã®èªåãã¹ããå®è¡ããæ¹æ³ã«ã¤ãã¦ã¯ããã®æ¬¡ã®è¨äºã§æ±ãã¾ãã
TestingBot
TestingBot ãå§ãã
ãã£ãã TestingBot ã®ãã©ã¤ã¢ã«ãå§ãã¦ã¿ã¾ãããã
- TestingBot ãã©ã¤ã¢ã«ã¢ã«ã¦ã³ãã使ãã¾ãã
- ãã°ã¤ã³ãã¦ãã ãããã¡ã¼ã«ã¢ãã¬ã¹ã確èªããå¾ãèªåçã«ãã°ã¤ã³ãã¾ãã
åºæ¬çãªæ©è½: æåãã¹ã
TestingBot ããã·ã¥ãã¼ãã«ã¯ãé¸ã¹ãæ§ã ãªãªãã·ã§ã³ãæ²è¼ããã¦ãã¾ããããã§ã Live Web Testing ã¿ãã«ãããã¨ã確èªãã¦ãã ããã
- ãã¹ãããããã¼ã¸ã® URL ãå ¥åãã¾ãã
- ãã¹ãããããã©ã¦ã¶ã¼ã¨ OS ã®çµã¿åãããã°ãªããã§é¸æãã¾ãã

- Start Browser ãã¯ãªãã¯ããã¨ãèªã¿è¾¼ã¿ä¸ç»é¢ãç¾ããé¸ãã çµã¿åãããå®è¡ããä»®æ³ãã·ã³ãèµ·åãã¾ãã
- èªã¿è¾¼ã¿ãå®äºããããé¸ãã ãã©ã¦ã¶ã¼ã§å®è¡ããã¦ã§ããµã¤ãã®ãªã¢ã¼ããã¹ããå§ãããã¨ãã§ãã¾ãã
- ããããããã¹ããã¦ãããã©ã¦ã¶ã¼ã§è¦ã¦ããã¬ã¤ã¢ã¦ããè¦ããããã¦ã¹ãåããã¦ãã¿ã³ãã¯ãªãã¯ãã¦ã¿ãããããã¨ãã§ãã¾ãããµã¤ãã¡ãã¥ã¼ã§ã¯ã以ä¸ã®ãã¨ãã§ãã¾ãã
- ã»ãã·ã§ã³ã®åæ¢
- ç»é¢ã®å å´ã¸è§£ååº¦å¤æ´
- ããã¹ã/ã¡ã¢ããªã¢ã¼ãã¯ãªãããã¼ãã¸ã³ãã¼
- ã¹ã¯ãªã¼ã³ã·ã§ããã®æ®å½±ãç·¨éããã¦ã³ãã¼ã
- å ¨ç»é¢ã¢ã¼ãã§ã®ãã¹ã
ã»ãã·ã§ã³ã忢ããã¨ã Live Web Testing ãã¼ã¸ã«æ»ããååå§ããæåã»ãã·ã§ã³ã®åé ç®ã表示ããã¾ãããããã®é ç®ã®ä¸ã¤ãã¯ãªãã¯ããã¨ããã®ã»ãã·ã§ã³ã®è©³ç´°ãªãã¼ã¿ã表示ããã¾ããããã§ã¯ãå°ããã¹ã¯ãªã¼ã³ã·ã§ããããã¦ã³ãã¼ããããããã¹ãã®åç»ãè¦ãããã»ãã·ã§ã³ã®ãã°ãåºåããããããã¨ãã§ãã¾ãã
é«åº¦ãªæ©è½: TestingBot API
TestingBot ã«ã¯ restful API ããããã¢ã«ã¦ã³ããæ¢åã®ãã¹ãã®è©³ç´°ãããã°ã©ã ã§åå¾ããããæåãã¹ãã ãã§ã¯è¨é²ã§ããªãåæ ¼/ä¸åæ ¼ç¶æ ãªã©ã®è©³ç´°æ å ±ããã¹ãã«æ³¨éãä»ããããããã¨ãã§ãã¾ãã
TestingBot ã«ã¯ãNode.jsãPythonãRubyãJavaãPHP ãªã©ã® API ã¯ã©ã¤ã¢ã³ãã使ç¨ãããã¨ãã§ãã¾ãã
ä¸è¨ã¯ã Node.js ã¯ã©ã¤ã¢ã³ã testingbot-api ã使ç¨ã㦠TestingBot API ã¨å¯¾è©±ããæ¹æ³ã®ä¾ã§ãã
-
ã¾ããNode 㨠npm ã®è¨å®ã§è©³ãã説æãã¦ããããã«ãããããã¹ãããããã«æ°ãã npm ããã¸ã§ã¯ããè¨å®ãã¾ããä¾ãã°
tb-testã®ããã«ã以åã¨ã¯ç°ãªããã£ã¬ã¯ããªã¼åã使ç¨ãã¦ãã ããã -
以ä¸ã®ã³ãã³ãã使ç¨ã㦠Node TestingBot ã©ããã¼ãã¤ã³ã¹ãã¼ã«ãã¾ãã
bashnpm install testingbot-api -
èªåã®ããã¸ã§ã¯ãã«ã¼ãã«
tb.jsã¨å¼ã°ããæ°ãããã¡ã¤ã«ã使ããä¸èº«ã以ä¸ã®ããã«ãã¾ããjsconst TestingBot = require("testingbot-api"); let tb = new TestingBot({ api_key: "your-tb-key", api_secret: "your-tb-secret", }); tb.getTests((err, tests) => { console.log(tests); }); -
TestingBot Key 㨠Secret ã示ããã¦ããå ´æã«è¨å ¥ããå¿ è¦ãããã¾ããããã㯠TestingBot dashboard ã§æ¢ããã¨ãã§ãã¾ãã
-
ãã¹ã¦ãä¿åããã¦ãããã¨ã確èªãããã¡ã¤ã«ãå®è¡ãã¦ãã ããã
bashnode tb.js
é«åº¦ãªæ©è½: èªåããã¹ã
å®éã« TestingBot ã®èªåãã¹ããå®è¡ããæ¹æ³ã«ã¤ãã¦ã¯ã次ã®è¨äºã§è¿°ã¹ã¾ãã
ã¾ã¨ã
ä»åã¯ããªãçãã ãããã®å 容ã§ããããèªååãã¼ã«ã使ç¨ãã¦ãã¹ãã«é¢ããåä»äºãè¡ããã¨ã®å©ç¹ãåããå§ããã®ã§ã¯ãªãã§ããããã
次ã®è¨äºã§ã¯ã Selenium ã使ç¨ãã¦èªåèªèº«ã§ãã¼ã«ã«ã®èªååã·ã¹ãã ãè¨å®ãã Sauce LabsãBrowserStackãTestingBot ãªã©ã®ãµã¼ãã¹ã¨çµã¿åãããæ¹æ³ãè¦ã¦ããã¾ãã