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

GitLab流水线Docker容器中E2E测试失败(Chrome启动异常)

解决Docker容器中E2E测试Chrome启动失败的问题

问题根源

你碰到的DevToolsActivePort file doesn't exist错误,本质是Chrome在无图形界面的Docker容器环境下,默认启动配置不兼容导致的——容器里没有X11图形环境,同时默认的sandbox机制和共享内存限制会让Chrome异常退出。

解决方案步骤

1. 更新Protractor配置文件

找到项目里的protractor.conf.js(一般在根目录或e2e文件夹下),修改capabilities配置,给Chrome添加无头模式和必要的启动参数:

capabilities: {
  browserName: 'chrome',
  chromeOptions: {
    args: [
      '--headless', // 启用无头模式,无需图形界面
      '--no-sandbox', // 禁用sandbox,容器环境下必须开启这个参数
      '--disable-dev-shm-usage', // 规避容器内/dev/shm空间不足的问题
      '--disable-gpu', // 无头模式下不需要GPU加速
      '--window-size=1920,1080' // 固定窗口尺寸,确保测试元素能正常被定位
    ]
  }
},

2. 调整GitLab CI脚本

确保ng e2e命令能正确读取你的配置文件,如果需要可以直接在命令行指定路径:

ng e2e -c=mock --protractor-config=e2e/protractor.conf.js

(如果你的配置文件路径不同,替换成实际路径即可)

3. 验证版本兼容性

你使用的trion/ng-cli-karma:8.3.25镜像已经预装了对应版本的Chrome和ChromeDriver,不过可以在before_script里加一行验证版本匹配:

chromedriver --version

确保ChromeDriver版本和google-chrome --version的输出大版本一致(小版本差异通常不影响,但跨大版本不匹配会引发启动问题)。

额外备用方案

如果上述修改后仍有问题,可以尝试在CI的before_script里补充安装xvfb(虽然无头模式下通常不需要,但作为备用):

apt-get update && apt-get install -y xvfb

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:27:30