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

如何在Azure CI/CD中按组并行执行Cypress E2E测试

解决方案:Azure Pipeline层面实现Cypress测试组并行执行

针对你的测试组依赖共享数据、无法用Cypress原生并行的问题,核心解决思路是放弃Cypress的spec级并行,改用Azure Pipeline的矩阵并行策略——让每个测试组对应一个独立的代理任务,组内所有spec在同一代理上顺序执行,不同组的任务则并行运行,完美适配你的资源共享架构。

1. 调整测试执行命令

原来的npm run test会执行所有spec,现在需要针对单个组执行。你可以直接在Pipeline里指定Cypress的spec路径,或者在package.json里添加分组脚本:

方式1:直接在命令行指定路径

比如执行app-mgt-test-group1的命令:

cypress run --spec "cypress/e2e/app-mgt-test-group1/**/*.spec.ts"

如果需要将运行结果同步到Cypress Dashboard,加上--record --key 你的Cypress记录密钥即可。

方式2:在package.json添加分组脚本

{
  "scripts": {
    "test:app-group": "cypress run --spec \"cypress/e2e/app-mgt-test-group1/**/*.spec.ts\"",
    "test:user-group": "cypress run --spec \"cypress/e2e/user-mgt-test-group2/**/*.spec.ts\""
  }
}

2. Azure Pipeline YAML配置示例

使用矩阵策略定义测试组,每个组对应一个并行任务。完整配置如下:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest' # 也可以用windows-latest或自定义代理池

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '18.x' # 匹配你的项目Node版本
  displayName: '安装Node.js'

- script: npm install
  displayName: '安装依赖'

# 并行执行不同测试组的核心配置
- job: RunCypressTests
  displayName: '按组执行Cypress E2E测试'
  strategy:
    matrix:
      应用管理测试组:
        TEST_GROUP_NAME: 'app-mgt-test-group1'
        SPEC_PATH: 'cypress/e2e/app-mgt-test-group1/**/*.spec.ts'
      用户管理测试组:
        TEST_GROUP_NAME: 'user-mgt-test-group2'
        SPEC_PATH: 'cypress/e2e/user-mgt-test-group2/**/*.spec.ts'
    maxParallel: 2 # 并行任务数,根据你的代理池容量调整

  steps:
  - script: |
      npm run cypress:run -- --spec "$(SPEC_PATH)"
      # 如果用package.json的分组脚本,替换为:npm run test:$(TEST_GROUP_NAME)
    displayName: '执行$(TEST_GROUP_NAME)测试'
    env:
      # 传递测试所需的环境变量(按需添加)
      CYPRESS_BASE_URL: $(TEST_ENV_URL)
      # 如果需要记录到Dashboard,添加密钥
      # CYPRESS_RECORD_KEY: $(CYPRESS_RECORD_KEY)

配置说明

  • strategy.matrix:定义所有需要并行的测试组,每个组对应独立的代理任务
  • maxParallel:设置最大并行任务数,需和你的Azure代理池可用代理数匹配
  • 组内执行顺序:Cypress默认按文件名的字典序执行spec,所以确保你的create-*、业务spec、delete-*文件名能保证顺序(比如给create-*加前缀00-,delete-*加前缀99-),就能确保数据创建→业务测试→数据清理的流程正确

3. 关键注意事项

  • 代理环境隔离:每个测试组在独立代理上运行,组间测试数据不会互相干扰,完全适配你的资源共享架构
  • 代理池容量:如果需要并行更多测试组,需确保Azure代理池有足够的并行代理资源,否则任务会进入排队状态
  • Cypress Dashboard记录:如果要将每个组的运行结果同步到Dashboard,只需在命令中添加--record --key参数即可,每个组的运行会作为独立条目展示

关于Cypress --group选项的补充

你之前使用的--group参数仅用于在Cypress Dashboard中分类展示测试结果,不会影响Cypress的spec分配逻辑,因此无法实现将整个测试组绑定到同一代理的需求,这也是为什么需要从Azure Pipeline层面解决的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:10:31