Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一旦测试失败,是否有可靠的方法让Cypress退出?_Javascript_Testing_Continuous Integration_Cypress - Fatal编程技术网

Javascript 一旦测试失败,是否有可靠的方法让Cypress退出?

Javascript 一旦测试失败,是否有可靠的方法让Cypress退出?,javascript,testing,continuous-integration,cypress,Javascript,Testing,Continuous Integration,Cypress,我们有一个在CI服务器上运行的大型测试套件,如果测试失败,似乎无法告诉Cypress退出。它总是运行整个套件 有一些讨论,但没有可行的解决办法 有没有可靠的方法可以让Cypress在测试失败后立即退出?正如您所提到的,它还没有得到官方支持(从3.6.0开始) 以下是我对黑客的看法(没有使用cookies等来保持状态): //cypress/plugins/index.js 让shouldSkip=false; module.exports=(打开)=>{ 关于(‘任务’{ resetShould

我们有一个在CI服务器上运行的大型测试套件,如果测试失败,似乎无法告诉Cypress退出。它总是运行整个套件

有一些讨论,但没有可行的解决办法


有没有可靠的方法可以让Cypress在测试失败后立即退出?

正如您所提到的,它还没有得到官方支持(从3.6.0开始)

以下是我对黑客的看法(没有使用cookies等来保持状态):

//cypress/plugins/index.js
让shouldSkip=false;
module.exports=(打开)=>{
关于(‘任务’{
resetShouldSkipFlag(){
shouldSkip=false;
返回null;
},
shouldSkip(值){
if(value!=null)shouldSkip=value;
返回应跳过;
}
});
}
//cypress/support/index.js
函数异常(){
if(this.currentTest.state==‘失败’){
返回cy.task('shouldSkip',true);
}
cy.task('shouldSkip')。然后(值=>{
如果(值)为this.skip();
});
}
在每一次之前(中止);
每次之后(中止);
之前(()=>{
如果(Cypress.browser.ishaded){
//在运行开始时重置shouldSkip标志,以便
//不会结转到后续运行中。
//仅对有头跑步进行此操作,因为在无头跑步中,
//对每个等级库文件执行'before'钩子。
cy.task('resetShouldSkipFlag');
}
});
一旦遇到故障,将跳过所有进一步的测试。输出将如下所示:


您也可以使用此Cypress插件,同时Cypress本机不支持此功能:

将插件添加到devdependences:

npm i--快速保存dev-cypress失败
在cypress/plugins/index.js内部:

module.exports=(打开,配置)=>{
要求(“cypress fail fast/plugin”)(打开,配置);
返回配置;
};
在cypress/support/index.js的顶部:

导入“cypress fail fast”;

这是一个很好的解决方案,但是这绝对应该得到开箱即用的支持。同意。不管怎么说,这都是一个丑陋的黑客。嗨,伙计们!你知道停止运行其他测试文件的方法吗?因此,一次失败应该停止整个运行测试的过程。它不会完全停止cypress,它只会中止一个测试文件hi@AlexandrZavalii,这不是插件的预期行为。From:“如果一个测试在最后一次重试后失败,那么其余的测试将被跳过”,还有一个屏幕截图显示了它如何在其余文件中跳过测试。如果插件不适合你,也许你应该在插件库中