在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
相关产品推荐
相关产品推荐

