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

如何在Bitbucket上实现Cypress并行测试?问题排查及配置修复

在Bitbucket上实现Cypress并行测试的修复方案

问题根源

你的配置存在两个核心问题:

  1. Bitbucket流水线结构冗余,并行节点未正确复用依赖,导致Cypress的任务分配逻辑未生效
  2. package.json中的测试命令存在重复参数,干扰Cypress Dashboard的并行调度

1. 修复bitbucket-pipelines.yml配置

优化流水线流程,将依赖安装与构建前置为单个步骤,再将依赖产物传递给并行节点,避免重复操作并确保并行节点共享同一构建标识:

# 定义E2E测试模板,复用公共配置
e2e: &e2e
  name: E2E 并行测试节点
  caches:
    - node
    - cypress
  script:
    # 复用前置步骤的依赖,无需重复执行npm install
    - npm run start:ci
  artifacts:
    - cypress/videos/**/*.mp4
    - cypress/screenshots/**/*.png

pipelines:
  default:
    # 第一步:统一安装依赖并构建,仅执行一次
    - step:
        name: 安装依赖与构建
        caches:
          - npm
          - node
        script:
          - npm install
          - npm run build # 无构建需求可移除该行
        artifacts:
          - node_modules/** # 传递依赖给后续并行步骤
          - build/** # 传递构建产物
    # 第二步:启动3个并行节点执行测试
    - parallel:
        - step:
            <<: *e2e
        - step:
            <<: *e2e
        - step:
            <<: *e2e

关键调整说明

  • 移除重复的前置E2E tests步骤,改为统一的依赖安装流程,减少冗余执行
  • 并行节点复用前置步骤的node_modules,大幅缩短测试启动时间
  • 所有并行节点共享BITBUCKET_BUILD_NUMBER作为Cypress的ci-build-id,确保Dashboard能正确分配测试任务

2. 修复package.json中的测试命令

移除重复的--record参数,避免命令解析错误:

{
  "name": "profile",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "cypress open",
    "start:ci": "cypress run --record --parallel --ci-build-id $BITBUCKET_BUILD_NUMBER --key $CYPRESS_RECORD_KEY"
  }
}

3. 验证Cypress配置(cypress.config.js)

现有配置已满足并行测试要求,只需确认:

  • setupNodeEvents函数正确返回配置(当前配置符合要求)
  • 已在Bitbucket仓库的Settings > Repository variables中配置CYPRESS_RECORD_KEY环境变量

生效逻辑

流水线运行时:

  1. 先完成一次依赖安装与构建,生成并传递依赖和产物
  2. 3个并行节点同时启动,各自连接Cypress Dashboard
  3. Dashboard根据测试用例数量自动分配测试文件给每个节点,实现真正的并行执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:35:22