첫 λ²μ§Έ μ€ν¨κ° λ°κ²¬λλ©΄ ν μ€νΈλ₯Ό μ€μ§ν΄μΌ ν©λλ€. μ λ κ°λκΈ°λ₯Ό μ¬μ©νκ³ μμ΅λλ€. λ΄κ° λ§λ :
this.After(function (scenario, callback) {
if (scenario.isFailed()) {
browser.takeScreenshot().then(function(png) {
var decodedImage = new Buffer(png, 'base64').toString('binary');
scenario.attach(decodedImage, 'image/png');
browser.quit();
callback();
});
} else {
callback();
}
});
κ·Έλ¬λ λλ μ΄ μ κ·Ό λ°©μμ΄ μ ν λ§μμ λ€μ§ μμ΅λλ€! λ¬Έμ λ λλ¨Έμ§ μλ리μ€μμ λ€λ₯Έ νμμ΄ λ³Ό λ νΌλμ€λ¬μ΄ μ€λ₯κ° λ°μνλ€λ κ²μ λλ€! λμΈ μ μλ? λλ μ£Όμλ₯Ό λλ¬λ³΄μκ³ μ무κ²λ λ°κ²¬νμ§ λͺ»νλ€!
κ°μ¬ ν΄μ
μ€μ΄-jsμλ 첫 λ²μ§Έ μ€ν¨ ν ν
μ€νΈ μ€νμ μ€μ§νλ --fail-fast
CLI μ΅μ
μ΄ μμ΅λλ€.
λλ κ·Έκ²μ μλνμ§λ§ μλνμ§ μλ κ² κ°μ΅λλ€. "e2e-local": "scripts/test-e2e.sh local"
npm task
$κ° μ€νλ©λλ€. grunt test:e2e:"$1" --tags "$2"
κ·Έλ¦¬κ³ κ·Έλ°νΈ νμΌμ κ°λκΈ° μμ
μ λ€μκ³Ό κ°μ΅λλ€.
// Functional test configuration
protractor: {
options: {
configFile: 'test/protractor-devel-conf.js',
keepAlive: false,
noColor: false,
args: {
cucumberOpts: {
tags: grunt.option('tags')
}
}
},
local: {
options: {
configFile: 'test/protractor-devel-conf.js',
keepAlive: false
}
},
live: {
options: {
configFile: 'test/protractor-live-conf.js',
keepAlive: false
}
}
},
λ€μκ³Ό κ°μ΄ νΈμΆνλ λͺ¨λ μ§μ μμ --fail-fast
λ₯Ό μΆκ°νλ €κ³ νμ΅λλ€.
npm run e2e-local --tags <strong i="14">@TAG</strong> --fail-fast
μλνμ§ μμgrunt test:e2e:"$1" --tags "$2" --fail-fast
νμ§λ§ λ λ€...λ΄κ° λ μλͺ»νκ³ μλμ§ λ³Ό μ μμ΄! λΉμ μ λ§ν μ μμ΅λλ€!?
μ¬μ© μ€μΈ κ·Έλ°νΈ νλ¬κ·ΈμΈμ μ μ₯μμμ μ€μ λ‘ μ΄ μ§λ¬Έμ ν΄μΌ νλ€κ³ μκ°ν©λλ€. λ΄ μ§κ°μ ꡬμ±μ cucumberOpts λΈλ‘μ 무μΈκ°λ₯Ό μΆκ°ν΄μΌ νλ€λ κ²μ λλ€.
@bmsoko μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ? μ΄κ²μ λ«μ§ μλλ€λ©΄
λΉνμ±μΌλ‘ μΈν νμ. νμνλ©΄ λ€μ μ΄μ΄μ£ΌμΈμ
@charlierudolph λ΅λ³ μ£Όμ μ λλ¨ν κ°μ¬ν©λλ€! λλ μ΄ μ§λ¬Έμ λν΄ grunt νλ¬κ·ΈμΈ κ°λ°μμκ² μ°λ½νμ§ μμμ§λ§ 곧 μ°λ½ν κ²μ΄κ³ λΉμ μ΄ κ·Έκ²μ λν΄ μκ² λ κ²μ λλ€.
μ΄ μ€λ λλ λ«ν ν μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ κ²Όμ΅λλ€. κ΄λ ¨ λ²κ·Έμ λν μ λ¬Έμ λ₯Ό μ¬μμμ€.
κ°μ₯ μ μ©ν λκΈ
μ€μ΄-jsμλ 첫 λ²μ§Έ μ€ν¨ ν ν μ€νΈ μ€νμ μ€μ§νλ
--fail-fast
CLI μ΅μ μ΄ μμ΅λλ€.