如何在第一次测试失败时中断所有赛普拉斯测试?
我们正在使用信号量针对每个PR与Cypress一起启动完整的e2e测试。但这需要太多时间。
我想在第一次测试失败时中断所有测试。
获得完整的错误是每个开发人员的工作。我只想尽快通知部署是否有任何问题,而不必等待完整的测试完成。
到目前为止,我想出的唯一解决方案是使用赛普拉斯中断当前规范文件上的测试。
afterEach(() => {
if (this.currentTest.state === 'failed') {
Cypress.runner.end();
}
});
但是这还不够,因为它仅中断位于规格文件上的测试,而不中断所有其他文件。我今天在此问题上进行了深入的搜索,在Cypress上似乎并不是一件容易的事。
所以我正在尝试其他解决方案。
1:带有信号灯
fail_fast:
stop:
when: "true"
应该在出错时中断脚本。但这是行不通的:测试在出现错误后仍继续运行。我的猜测是,只有在所有测试完成后,赛普拉斯才会抛出错误。
2:也许是因为脚本启动了Cypress,但我没有主意现在这是我的脚本]
"cy:run": "npx cypress run",
"cy:run:dev": "CYPRESS_env=dev npx cypress run",
"cy:test": "start-server-and-test start http-get://localhost:4202 cy:run"
由于某些原因,这是赛普拉斯长期以来要求的功能,至今尚未引入。社区提出了一些解决方法,但是不能保证它们会起作用。 Check this thread on Cypress' Github for more details, maybe you will find a workaround that works for your case.