You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress并行模式下,如何在所有.spec文件执行后运行指定清理.spec文件

解决Cypress并行模式下全局清理的方案

方案1:分阶段运行(最直接可靠)

因为Cypress并行模式是按文件分发任务,所以把清理操作和普通测试拆成两个独立运行阶段,确保所有并行测试完成后再执行清理:

  • 第一步:并行运行所有非清理测试文件
    用命令行指定排除清理文件:
    cypress run --parallel --spec "cypress/e2e/**/*.spec.js" --exclude "cypress/e2e/cleanup.spec.js"
    
    或者用cypress-grep插件给普通测试打标签,只运行带标签的测试:
    先给普通测试加标签:
    describe('普通测试', { tags: '@normal' }, () => {
      // 测试内容
    })
    
    然后执行命令:
    cypress run --parallel --env grepTags=@normal
    
  • 第二步:单独运行清理测试文件
    等第一步所有并行任务完成后,执行:
    cypress run --spec "cypress/e2e/cleanup.spec.js"
    
    在CI环境(如GitHub Actions、GitLab CI)中,可将两步拆成两个job,设置第二个job依赖第一个job的成功完成,严格保证执行顺序。

方案2:CI工作流依赖(适合分布式并行)

如果你的4台机器是通过CI并行job实现的,直接利用CI的工作流机制:

  • 先创建包含4个并行实例的测试job,执行所有非清理测试
  • 创建清理job,设置为仅在所有并行测试job成功完成后触发
  • 在清理job中单独运行你的清理.spec文件

这种方式完全由CI控制执行顺序,无需修改Cypress配置,可靠性极高。

关键注意事项

  • 清理操作必须仅执行一次,绝对不能让它参与并行分发,否则多台机器会重复执行API调用,可能导致数据异常或清理不彻底
  • 不要依赖Cypress的after/afterAll钩子,它们的作用域仅限于单个.spec文件,无法覆盖所有测试文件的全局生命周期

内容的提问来源于stack exchange,提问作者Nicole Milea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:10:28