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

如何在CircleCI中拆分并行运行Cypress测试用例以缩短耗时?

CircleCI 并行拆分Cypress测试用例解决方案

核心问题

你没配置测试拆分逻辑,CircleCI不会自动帮你分配测试用例,得明确指定拆分规则才能避免4台机器重复跑全部用例。

快速修复步骤

1. 用CircleCI内置拆分工具配置

直接修改.circleci/config.yml里的Cypress任务,加上并行数和拆分命令:

jobs:
  cypress-test:
    docker:
      - image: cypress/base:18
    parallelism: 4 # 指定4台并行机器
    steps:
      - checkout
      - run: npm install
      - run:
          name: 拆分并执行测试
          command: |
            # 按文件大小拆分测试(让各机器执行时间更均衡)
            TEST_FILES=$(circleci tests split --split-by=filesize cypress/e2e/**/*.cy.js)
            # 只跑当前机器分配到的用例
            npx cypress run --spec "$TEST_FILES"

2. 关键注意事项

  • 确认cypress/e2e/**/*.cy.js是你实际的测试文件路径,不对就改成自己的
  • 要是想按用例数量平均拆分,把--split-by=filesize换成--split-by=count
  • 绝对不能硬编码所有测试文件路径,必须通过circleci tests split动态获取当前机器要跑的用例

3. 紧急手动拆分方案(怕配置出问题时用)

如果时间紧,直接手动把60个用例分成4组,给每台机器指定不同的测试目录:

jobs:
  cypress-test:
    docker:
      - image: cypress/base:18
    parallelism: 4
    steps:
      - checkout
      - run: npm install
      - run:
          name: 手动分组执行测试
          command: |
            case $CIRCLE_NODE_INDEX in
              0) npx cypress run --spec "cypress/e2e/group1/**/*.cy.js" ;;
              1) npx cypress run --spec "cypress/e2e/group2/**/*.cy.js" ;;
              2) npx cypress run --spec "cypress/e2e/group3/**/*.cy.js" ;;
              3) npx cypress run --spec "cypress/e2e/group4/**/*.cy.js" ;;
            esac

这种方式虽然麻烦,但能立刻解决重复执行的问题,适合赶截止日期的应急场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:25:29