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

在Jenkins流水线中添加Cypress组件测试遇依赖问题求助

解决Jenkins流水线中Cypress组件测试的依赖问题

问题背景

  • Angular项目已安装Cypress 12.7,package.json配置测试命令:
    "cypress:run": "cypress run --component --browser chrome --headless"
    
  • Jenkinsfile中添加对应测试阶段:
    stage('Cypress Test') {
        environment {
            ELECTRON_RUN_AS_NODE = 1
          }
        steps {
            dir("${ANGULAR_WORKSPACE}") {
                sh 'npm run cypress:run'
            }
        }
    }
    
  • 首次未加--headless运行时,报错提示缺失Xvfb组件;添加ELECTRON_RUN_AS_NODE=1环境变量后,又出现libdrm.so.2: cannot open shared object file的依赖缺失错误。

解决方案

方案1:在Jenkins节点(Red Hat 8.4)安装系统依赖

直接在运行测试的Jenkins节点上执行以下命令,安装Cypress运行所需的全部系统依赖:

sudo yum install -y xorg-x11-server-Xvfb libXcomposite libXcursor libXdamage libXext libXi libXtst cups-libs libXScrnSaver libXrandr GConf2 alsa-lib atk gtk3 libdrm mesa-libgbm

安装完成后重新触发流水线即可。

方案2:使用Cypress官方Docker容器(推荐)

无需在Jenkins节点维护依赖,直接利用Cypress官方预配置好所有依赖的Docker镜像运行测试,修改Jenkinsfile的测试阶段如下:

stage('Cypress Test') {
    agent {
        docker {
            image 'cypress/included:12.7.0'
            args '-v /dev/shm:/dev/shm'
        }
    }
    steps {
        dir("${ANGULAR_WORKSPACE}") {
            sh 'npm run cypress:run'
        }
    }
}

该方式将测试运行在隔离的Docker环境中,避免节点环境差异导致的问题,稳定性更强。

注意事项

  • 移除ELECTRON_RUN_AS_NODE=1环境变量,该配置不适用于Chrome无头模式的测试场景。
  • 若采用Docker方案,需确保Jenkins节点具备Docker运行权限,或已配置Docker代理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:32:03