Skip to main content
Cypress应用

Cypress.stop

停止当前机器上正在运行的Cypress应用。这在测试失败或其他预设条件下停止测试执行时非常有用。

tip

自动取消功能:如果您希望在测试失败时自动停止跨多台机器的所有测试,请考虑使用Cypress Cloud中的自动取消功能

优势: 在并行化机器上首次出现失败时停止测试运行将:

  1. 节省时间。 及早发现故障并更快解决问题。
  2. 降低CI成本。 减少不必要的测试执行,为大型测试套件带来显著节省。
  3. 释放CI资源。 优先处理关键测试,保持CI流水线可用于验证修复。
  4. 优化未来运行。 通过**测试用例优先级排序自动取消**功能,失败的测试会在下次尝试时优先运行,如果问题持续存在则提前停止,以最大化效率。

语法

Cypress.stop()

示例

测试失败时停止测试

为确保在任何测试文件失败后立即停止测试,请将以下代码片段添加到您的support/index.js文件中:

afterEach(function () {
if (this.currentTest.state === 'failed') {
Cypress.stop()
return
}
})

满足条件时中止测试

beforeEach(() => {
if (env !== 'expected-condition') {
cy.log('停止测试 - 环境未正确设置')
Cypress.stop()
return
}
})

注意事项

调用Cypress.stop()会停止剩余测试的执行,但同一代码块(如beforeEachafterEach)中Cypress.stop()之后的代码仍会运行。为防止在Cypress.stop()后执行额外逻辑,请在其后立即添加return语句:

if (someCondition) {
Cypress.stop()
return // 阻止此代码块中后续代码的执行
}

cypress runcypress open的行为差异

cypress run期间调用Cypress.stop()会跳过当前测试文件中剩余的测试。如果正在录制到Cypress Cloud,所有截图、视频和测试回放仍将成功上传。

Cypress运行时的终端输出显示正在运行example.cy.ts文件,其中1个测试通过(绿色),1个测试失败(红色)并显示错误信息。结果表显示4个测试,1个通过,1个失败,2个跳过。

cypress open期间调用Cypress.stop()会停止Cypress应用的执行,但应用仍保持打开状态以供检查。剩余的测试不会运行。

Cypress应用显示正在运行example.cy.ts文件,其中1个通过的测试已折叠,1个失败的测试展开显示断言错误,其余测试未运行,状态显示为方形中立图标。

为什么选择自动取消功能?

自动取消功能是Cypress Cloud商业+计划的一部分。在测试失败时停止测试方面,它比Cypress.stop具有以下优势:

  1. 取消范围Cypress.stop仅停止当前测试文件,跳过其中的剩余测试。而自动取消功能会停止所有机器上的所有测试,并在Cypress Cloud中将整个运行标记为已取消,以提高可见性。
  2. 可配置阈值:自动取消功能允许您定义失败阈值。Cypress.stop在满足指定条件时立即执行。
  3. 简化配置:自动取消功能设置可在Cypress Cloud中管理,而Cypress.stop需要手动修改代码。
  4. 与测试优先级优化的结合:结合测试优先级(另一项商业+功能),自动取消功能通过在新运行中优先运行之前失败的测试,帮助高效分配资源。

要开始使用Cypress Cloud, 注册即可享受2周免费试用 - 包含所有 Cypress Cloud高级功能以及充足的测试结果, 让您体验Cypress Cloud的强大功能!

另请参阅