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

Jenkins中Cypress无头Chrome测试失败:malloc与DISPLAY问题排查

解决Docker中Cypress无头Chrome运行的X server及malloc错误问题

问题根源分析

  1. 不必要的环境冲突:你使用的cypress/included官方镜像已经预装了适配版本的Node.js和Cypress,脚本中重新安装NVM、Node.js会导致依赖混乱,触发malloc(): invalid next size (unsorted)内存错误。
  2. 错误的DISPLAY变量操作:无头Chrome模式不需要X server支持,手动unset DISPLAY或强制设置空值会干扰镜像的默认配置逻辑,导致X server初始化失败。

修复方案

1. 简化cypress_run.sh脚本

删除所有NVM/Node安装逻辑,直接复用镜像自带的适配环境:

echo "Running Cypress Command"
npm install --legacy-peer-deps

echo "Installed NPM Packages!"
export CYPRESS_BASE_URL="$UNIFIED_URL"
export CYPRESS_USERNAME="admin"
export CYPRESS_PASSWORD="password"
echo "Cypress base Url: ${CYPRESS_BASE_URL}"

# 无需手动处理DISPLAY,直接运行无头测试
npx cypress run --record --key <KEY> --browser chrome --headless --config-file cypress.config.js --config baseUrl="$CYPRESS_BASE_URL" username="$CYPRESS_USERNAME" password="$CYPRESS_PASSWORD"

2. 优化Makefile配置

移除冗余参数,简化挂载逻辑:

run-cypress:
    docker run --rm \
         -e UNIFIED_URL=${UNIFIED_URL} \
         -e COMMIT_INFO_SHA="$(shell git rev-parse HEAD)" \
         -e COMMIT_INFO_MESSAGE="$(shell echo "$(shell git log --format=%B -n 1)" | sed 's/"//g')" \
         -e COMMIT_INFO_AUTHOR="$(shell git log --format='%an' -n 1)" \
         -e COMMIT_INFO_EMAIL="$(shell git log --format='%ae' -n 1)" \
         -v ${JSP_SRC_DIR}/test/e2e-ui:/e2e \
         -w /e2e <domain>/cypress/included-jf-cli:13.6.4 ./cypress_run.sh
  • 移除--entrypoint "/bin/bash"(若保留需确保脚本路径正确)
  • 直接挂载整个e2e-ui目录,避免逐个挂载文件的繁琐操作
  • 非必要情况下移除--network host,默认桥接网络即可满足测试需求

3. 额外验证项

  • 确认镜像兼容性:cypress/included:13.6.4已预装适配的Chrome版本,无需额外安装浏览器
  • 检查cypress.config.js,确保没有强制启用X11的配置,无头模式参数正常:
    export default defineConfig({
      e2e: {
        // 其他配置项
        chromeWebSecurity: false,
        experimentalSessionAndOrigin: true
      }
    })
    

核心提示

官方cypress/included镜像已预配置所有Cypress运行所需依赖(包括无头Chrome的适配环境),手动修改Node环境或DISPLAY变量会破坏镜像的原生适配,这是导致本次错误的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:30:33