Cypress:在第一次失败时中断所有测试

2024-04-06

如何在第一次测试失败时中断所有赛普拉斯测试?

我们使用信号量为每个 PR 与 Cypress 启动完整的 e2e 测试。但这需要太多时间。

我想在第一次测试失败时中断所有测试。

获取完整的错误是每个开发人员在开发时的职责。如果在部署之前出现任何问题,我只想尽快得到通知,而不必等待完整的测试完成。

到目前为止,我想出的唯一解决方案是用 Cypress 中断对当前规范文件的测试。

afterEach(() => {
        if (this.currentTest.state === 'failed') {
            Cypress.runner.end();
        }
    });

但这还不够,因为它只中断位于规范文件上的测试,而不是所有其他文件。我今天对此事进行了一些深入的搜索,这似乎不是 Cypress 上的事情。

所以我正在尝试其他解决方案。

1:带信号量

fail_fast:
  stop:
    when: "true"

它应该在错误时中断脚本。但它不起作用:测试在错误后继续运行。我的猜测是,只有当所有测试完成时,Cypress 才会抛出错误。

2:也许脚本启动赛普拉斯,但我没有主意 现在这是我的脚本

"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"

EDIT:似乎引入了此功能,但它需要付费版本的 Cypress(商业计划)。更多相关信息:Docs https://docs.cypress.io/guides/dashboard/smart-orchestration#Cancel-test-run-when-a-test-fails, 在话题中发表评论 https://github.com/cypress-io/cypress/issues/518#issuecomment-809514077


原答案:

这是赛普拉斯长期以来要求的功能,但由于某种原因仍未推出。社区提出了一些解决方法,但不能保证它们一定有效。检查 Cypress 的 Github 上的此线程以了解更多详细信息,也许您会找到适合您的情况的解决方法。 https://github.com/cypress-io/cypress/issues/518

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cypress:在第一次失败时中断所有测试 的相关文章

随机推荐