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

如何在单个Jenkins Job中并行运行Cypress回归与冒烟测试套件

最优Jenkins Pipeline实现方案

核心思路

  • 采用声明式Pipeline,结构清晰、维护成本低
  • 利用并行阶段同时执行多环境测试,大幅压缩总运行时间
  • 统一配置无头Chrome运行参数,保证测试执行环境一致性
  • 将测试套件、目标环境抽为可复用变量,后续调整需求无需改动核心执行逻辑

完整Pipeline代码

pipeline {
    agent any

    environment {
        // 定义需执行的测试套件
        TEST_SUITES = ['smoke', 'regression']
        // 定义目标测试环境
        TEST_ENVS = ['int', 'prd', 'prd01']
        // Cypress无头Chrome运行基础参数
        CYPRESS_BASE_ARGS = '--headless --browser chrome --no-exit false'
    }

    stages {
        stage('安装依赖') {
            steps {
                script {
                    // 用npm ci保证依赖版本与lock文件完全匹配,避免环境差异
                    sh 'npm ci'
                    // 验证Cypress安装状态,提前规避运行报错
                    sh 'npx cypress verify'
                }
            }
        }

        stage('并行执行测试') {
            parallel {
                // 遍历所有环境,为每个环境创建独立并行阶段
                for (env in TEST_ENVS) {
                    stage("测试 - ${env}环境") {
                        steps {
                            script {
                                // 遍历所有套件,依次执行当前环境下的套件测试
                                for (suite in TEST_SUITES) {
                                    echo "启动${env}环境的${suite}测试..."
                                    sh """
                                        npx cypress run \
                                            ${CYPRESS_BASE_ARGS} \
                                            --env environment=${env} \
                                            --spec "cypress/integration/${suite}/**/*.js"
                                    """
                                }
                            }
                        }
                        post {
                            always {
                                // 收集JUnit格式报告,Jenkins可直接展示测试结果
                                junit 'cypress/results/*.xml'
                                // 归档测试截图、录屏,方便排查失败用例
                                archiveArtifacts artifacts: 'cypress/screenshots/**, cypress/videos/**', allowEmptyArchive: true
                            }
                        }
                    }
                }
            }
        }
    }

    post {
        success {
            echo '所有测试执行通过!'
        }
        failure {
            echo '部分测试失败,请查看报告及归档文件排查问题。'
        }
    }
}

关键细节说明

  1. 并行执行效率:通过parallel块循环生成各环境测试阶段,int、prd、prd01三个环境的测试同时运行,比串行执行节省至少2/3的时间
  2. 配置可维护性:所有可变项集中在environment块,后续新增环境或套件只需修改数组,无需调整核心执行代码
  3. 无头Chrome适配:--headless --browser chrome专门针对CI无图形界面场景配置,避免因缺少显示服务导致测试崩溃
  4. 依赖一致性:npm ci严格按照package-lock.json安装依赖,杜绝不同环境依赖版本不一致引发的测试失败
  5. 结果留存与排查:junit插件直观展示测试通过率与失败用例,归档的截图、录屏可快速定位用例失败原因
  6. 环境参数传递:通过--env environment=${env}将当前测试环境传给Cypress,测试代码中可通过Cypress.env('environment')获取,动态切换接口地址等配置

注意事项

  • 确保Jenkins节点已安装Node.js和Chrome浏览器;若使用Docker节点,推荐官方镜像cypress/browsers:node18.12.0-chrome108,自带所有依赖
  • 若测试套件实际路径与cypress/integration/${suite}不符,需调整--spec参数适配真实目录结构
  • 若不同环境需配置独立基础URL,可在environment块新增对应变量,或在cypress.config.js中根据environment变量动态设置

内容的提问来源于stack exchange,提问作者Rasamalla Pavan kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:24:26