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

如何为GitLab CI的NodeJS Docker镜像添加Chrome支持以运行Angular测试

问题根因

你使用的node:12.9是纯净的Node.js运行时镜像,未预装Chrome浏览器,因此无论是否启用无头模式,测试运行器都无法找到Chrome可执行文件。

解决方案1:更换预装Chrome的基础镜像(推荐)

直接使用同时预装了对应版本Node.js和Chrome的镜像,无需额外安装依赖,修改你的gitlab-ci.yml中image字段即可:

stages:
- build

variables:
  NPM_CONFIG_REGISTRY: https://test.com/xx/api/npm/npm-all
  # 提前配置Chrome二进制路径,避免识别失败
  CHROME_BIN: /usr/bin/google-chrome

build:
  stage: build
  # 替换为匹配node12版本、预装Chrome的镜像,可根据实际需要的node/Chrome版本选择对应tag
  image: cypress/browsers:node12.18.3-chrome89
  script:
    - npm install
    - npm run build:prod
    # 启动无头Chrome时额外加--no-sandbox参数,适配Docker容器无沙箱权限的环境
    - ng test --no-watch --browsers=ChromeHeadless --no-sandbox
  tags:
    - DOCKER

解决方案2:在原node镜像中手动安装Chrome

如果不想更换基础镜像,可以在构建脚本中增加Chrome安装步骤:

stages:
- build

variables:
  NPM_CONFIG_REGISTRY: https://test.com/xx/api/npm/npm-all
  CHROME_BIN: /usr/bin/google-chrome-stable

build:
  stage: build
  image: node:12.9
  script:
    # 安装Chrome依赖及Chrome本身
    - apt update && apt install -y wget gnupg2
    - wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
    - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
    - apt update && apt install -y google-chrome-stable
    # 原有构建步骤
    - npm install
    - npm run build:prod
    - ng test --no-watch --browsers=ChromeHeadless --no-sandbox
  tags:
    - DOCKER

可选优化:修改Karma配置固定运行参数

可以直接修改项目根目录下的karma.conf.js,把无头模式、无沙箱等参数配死,无需每次执行命令时额外传参:

// karma.conf.js 中对应配置段修改如下
browsers: ['ChromeHeadlessCI'],
customLaunchers: {
  ChromeHeadlessCI: {
    base: 'ChromeHeadless',
    flags: ['--no-sandbox', '--disable-gpu']
  }
},
singleRun: true, // 测试跑完自动退出,无需额外加--no-watch参数

修改后CI中的测试命令直接使用npm run test即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:54:02