Angular 10 的 ng 测试挂在 gitlab ci

ng test for Angular 10 hangs out in gitlab ci

我正在将 gitlab ci 配置为 运行 Angular 10 个测试。
但是他们出去玩了(运行 超过 10 分钟)。
为什么会这样?如何修复?

使用的应用程序已由 ng new <app-name> 创建。

.gitlab-ci.yml

image: node:14.13.1-alpine3.12

before_script:
  - npm install @angular/cli

build:
  stage: build
  script: npm test --watch=false
  only:
    - master
    - merge_requests

上次日志来自 ci

Compiling @angular/router/testing : es2015 as esm2015
09 10 2020 09:32:21.905:WARN [karma]: No captured browser, open http://localhost:9876/
09 10 2020 09:32:21.911:INFO [karma-server]: Karma v5.0.9 server started at http://0.0.0.0:9876/
09 10 2020 09:32:21.912:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
09 10 2020 09:32:21.917:INFO [launcher]: Starting browser Chrome
09 10 2020 09:32:21.919:ERROR [launcher]: No binary for Chrome browser on your platform.
  Please, set "CHROME_BIN" env variable.
09 10 2020 09:32:26.975:WARN [karma]: No captured browser, open http://localhost:9876/

它不起作用,这是正常的,因为在 CI 环境中,如 gitlab-ci,没有可供 运行 浏览器使用的图形用户界面 就像你在本地环境中做的那样,你必须配置 PhantomJS 或其他解决方案,你必须更新你的 karma.conf.js:

browsers: ['ChromeHeadless'],

以防你使用 PhantomJS

npm install --save-dev phantomjs-prebuilt karma-phantomjs-launcher

将这一行添加到您的插件中

plugins: [
  require('karma-jasmine'),
  require('karma-phantomjs-launcher'),  // add this line 
  require('karma-jasmine-html-reporter'),
  require('karma-coverage-istanbul-reporter'),
  require('@angular/cli/plugins/karma')
],
...
browsers: ['PhantomJS'],

也许您需要为此添加一些 polyfill

你可以在本地测试

ng test --watch=false