我想阻止黄瓜运行失败的测试直到最后,因为我们需要快速反馈,这会浪费我们持续集成的时间。
我正在使用黄瓜,黄瓜js与量角器的javascript实现。
这是我的所作所为,但不起作用:
hooks.js
this.registerHandler('AfterScenario', function (scenario, callback) {
console.log('\n After each scenario...');
if (scenario.isFailed() ===true) {
console.log('\n Scenario failed \n\n\n\n\n\n\n...');
callback.fail(new Error("\n\n\n\nThis scenario definitely failed!!"));
}
});
我在 protractor.conf.js 中加入了 hook.js ,如下所示:
cucumberOpts: {
require: [
conf.paths.e2e + '/utilities/hooks.js',
],
}
我知道钩子是从下面的错误输出触发的;但是,无法弄清楚为什么或如何修复错误:
e #01-1] Specs failed ? : C:\someFeature.feature
[chrome #01-1] Scenario failed! Creating snapshot at: C:\someFeature.png
[chrome #01-1]
[chrome #01-1]
[chrome #01-1] After each scenario...
[chrome #01-1] TypeError: e2e\utilities\hooks.js:34 scenario.isFailed is not a function
[chrome #01-1] at C:\Hooks.js:36:18
[chrome #01-1] at nextTickCallbackWith0Args (node.js:420:9)
[chrome #01-1] at process._tickCallback (node.js:349:13)
答案 0 :(得分:2)
如果我是正确的,黄瓜中有一个fail-fast
选项,如果第一个失败则会失败。试一试 -
cucumberOpts: {
require: [
conf.paths.e2e + '/utilities/hooks.js',
],
format: 'pretty',
'fail-fast': true
},
我认为需要报价!
答案 1 :(得分:0)
可靠的问题 - 看起来像在cucumber-js 1.3.1和之前,在这些registerHandler钩子中引发的错误将被认为是致命的,并且会在失败时终止测试运行;它看起来像2.0.0-rc.6对于在AfterScenario等事件中传递给回调的registeredHandler错误有一些更好的处理,尽管设置2.0.0将需要在用户端进行一些重组来定义他们的stepdefs。
为了在我的1.3.1用例中解决这个问题,我已经将所需的AfterScenario代码拉到了一个明确添加到场景结尾的步骤 - 有点笨重。