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

如何配置Windows虚拟机上GitHub Actions的Cypress有序并行测试

解决Cypress测试重复执行并实现精准并行分配的配置修改

要在Windows虚拟机环境下实现90个测试的有序并行(22/22/24分配),同时避免重复执行,你需要修改GitHub Actions配置,通过**矩阵策略(matrix strategy)**预先分配测试集到3台虚拟机。以下是修改后的完整配置:

name: UP Automation regression

on:
  push:
    branches: [ Alex ]
  pull_request:
    branches: [ Alex ]

jobs:
  run-automation-regression-tests:
    runs-on: windows-latest
    # 定义3个并行任务,分别对应不同的测试集
    strategy:
      matrix:
        include:
          # 第一台虚拟机执行22个测试,替换为你的测试文件路径/匹配规则
          - specs: "cypress/e2e/test-group-1/**/*.cy.js"
          # 第二台虚拟机执行22个测试
          - specs: "cypress/e2e/test-group-2/**/*.cy.js"
          # 第三台虚拟机执行24个测试
          - specs: "cypress/e2e/test-group-3/**/*.cy.js"
      # 最多同时启动3台虚拟机
      max-parallel: 3
    steps:
      - run: git config --global url."https://TOKEN".insteadOf https://github.com/
      - name: Checkout
        uses: actions/checkout@v4
        with:
          persist-credentials: false
      - name: Cypress run
        uses: cypress-io/github-action@v6
        with:
          browser: electron
          record: true
          # 启用Cypress并行模式
          parallel: true
          # 执行当前矩阵分配的测试集
          spec: ${{ matrix.specs }}
        env:
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # 统一构建ID,确保测试结果在Cypress Dashboard中归为同一批次
          CI_BUILD_ID: ${{ github.sha }}-${{ github.run_id }}

关键修改说明

  1. 矩阵策略分配测试集:通过matrix.include定义3个独立任务,每个任务绑定预先划分好的测试文件路径。你需要手动将90个测试分成3组(22/22/24),可以:
    • 按文件夹分组(比如创建test-group-1/test-group-2/test-group-3文件夹,放入对应数量的测试文件)
    • 按文件名匹配(比如测试文件按编号命名,用specs: "cypress/e2e/test-{01..22}.cy.js"这种glob规则匹配)
  2. 启用并行执行:设置parallel: true并配合max-parallel: 3,确保GitHub同时启动3台Windows虚拟机执行任务
  3. 避免重复执行:每个任务只跑指定的测试集,从根源上避免多机重复执行同一测试
  4. 统一构建跟踪:设置CI_BUILD_ID,让Cypress Dashboard将3台机器的测试结果归为同一构建批次,方便查看汇总结果

替代方案(自动分片,非精准数量)

如果不需要严格的22/22/24分配,只想自动均分测试避免重复,可以用Cypress的自动分片功能,无需手动分组:

# 仅修改jobs部分
jobs:
  run-automation-regression-tests:
    runs-on: windows-latest
    strategy:
      # 启动3个并行任务
      matrix:
        node-version: [18]
        # 分片索引:0/1/2,对应3台机器
        shard: [0,1,2]
      max-parallel: 3
    steps:
      # ... 其他步骤不变
      - name: Cypress run
        uses: cypress-io/github-action@v6
        with:
          browser: electron
          record: true
          parallel: true
          # 指定分片参数:总分片数3,当前分片索引为matrix.shard
          command: npx cypress run --shard=${{ matrix.shard }}/3
        env:
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:05:57