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

如何基于标签分组Cypress测试并在CircleCI上按组并行执行?

配置CircleCI实现Cypress分组并行+组内串行

已配置的Cypress测试用例标签

测试用例已通过tags分组,同组用例存在数据依赖需串行执行:

it("Test1", { tags: ["Parallel", "Group1"] }, () => {
  cy.log("Test1");
});

it("Test2", { tags: ["Parallel", "Group2"] }, () => {
  cy.log("Test2");
});

it("Test3", { tags: ["Parallel", "Group1"] }, () => {
  cy.log("Test3");
});

it("Test4", { tags: ["Parallel", "Group2"] }, () => {
  cy.log("Test4");
});

预期执行逻辑

Parallel: 2
Machine 1: 串行执行Group1下所有测试用例
Machine 2: 串行执行Group2下所有测试用例

原CircleCI配置文件(circle.yml)

version: 2

workflows:
  version: 2

jobs:
  cypress-ci:
    parallelism: 1
    docker:
      - image: "cypress/included:10.0.0"
    working_directory: ~/app
    steps:
      - checkout
      - restore_cache:
          keys:
            - node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }}
      - run:
          name: Install Packages
          command: |
            cd cypress-tests
            npm install --legacy-peer-deps
      - save_cache:
          key: node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }}
          paths:
            - ~/cypress-tests/.npm
      - run:
          name: Execute cypress
          command: |
            cd cypress-tests
            npm run --env grepTags="Parallel" --RECORD_KEY=${RECORD_KEY}

修改后的CircleCI配置

version: 2

workflows:
  version: 2
  cypress-workflow:
    jobs:
      - cypress-ci

jobs:
  cypress-ci:
    parallelism: 2
    docker:
      - image: "cypress/included:10.0.0"
    working_directory: ~/app
    steps:
      - checkout
      - restore_cache:
          keys:
            - node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }}
      - run:
          name: Install Packages
          command: |
            cd cypress-tests
            npm install --legacy-peer-deps
      - save_cache:
          key: node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }}
          paths:
            - ~/cypress-tests/.npm
      - run:
          name: Execute cypress
          command: |
            cd cypress-tests
            # 根据CircleCI节点索引分配对应测试分组
            if [ "$CIRCLE_NODE_INDEX" == 0 ]; then
              npm run --env grepTags="Parallel+Group1" --RECORD_KEY=${RECORD_KEY}
            else
              npm run --env grepTags="Parallel+Group2" --RECORD_KEY=${RECORD_KEY}
            fi

关键修改说明

  • 将parallelism设为2,启动两台并行执行的机器
  • 利用CircleCI内置环境变量CIRCLE_NODE_INDEX(取值0和1)区分不同机器
  • 针对不同节点传递不同的grepTags参数,让每台机器只执行对应分组的测试
  • Cypress在单台机器上默认串行执行测试,自然满足同组用例串行的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:17:11