如何在 TravisCI (Ubuntu 16.04/Xenial) 上使用 Chrome 运行 Karma?

How to run Karma with Chrome on TravisCI (Ubuntu 16.04/Xenial)?

我最近在 TravisCI 上的测试开始失败,因为 Google 显然放弃了对 Ubuntu 14.04 (Trusty) 的最新版本 Chrome 的支持。我已经升级到 Ubuntu 16.04 (Xenial) 但我现在无法让 Karma 连接到 Chrome:

11 09 2019 18:15:05.421:INFO [karma-server]: Karma v3.1.4 server started at http://0.0.0.0:9876/
11 09 2019 18:15:05.425:INFO [launcher]: Launching browsers Chrome_travis_ci with concurrency unlimited
11 09 2019 18:15:05.429:INFO [launcher]: Starting browser Chrome
11 09 2019 18:16:05.435:WARN [launcher]: Chrome have not captured in 60000 ms, killing.
11 09 2019 18:16:07.439:WARN [launcher]: Chrome was not killed in 2000 ms, sending SIGKILL.
11 09 2019 18:16:09.439:WARN [launcher]: Chrome was not killed by SIGKILL in 2000 ms, continuing.

我不清楚问题出在我的 Travis 配置、我的 Karma 配置还是其他方面。

尝试过的解决方案:

travis.yml:

sudo: required
dist: xenial
services:
  - xvfb
addons:
  apt:
    sources:
      - google-chrome
    packages:
      - google-chrome-stable

language: node_js
node_js:
  - "10"
  - "8"
cache:
  directories: node_modules

before_install:
  - export CHROME_BIN=chromium-browser

before_script:
  - npm rebuild node-sass

script:
  - npm run lint
  - npm run test:ci # Runs: xvfb-run -a karma start
  - npm run build

karma.conf.js:

module.exports = (config) => {
  config.set({
    browsers: [process.env.TRAVIS ? 'Chrome_travis_ci' : 'Chrome'],
    client: {
      captureConsole: false,
    },
    customLaunchers: {
      Chrome_travis_ci: {
        base: 'Chrome',
        flags: ['--no-sandbox', '--disable-setuid-sandbox'],
      },
    },
    files: ['test/index.js'],
    frameworks: ['mocha', 'chai'],
    preprocessors: {
      'test/index.js': ['webpack', 'sourcemap'],
    },
    reporters: ['dots'],
    singleRun: true,
    webpack: Object.assign(webpackConfigBase, {
      devtool: 'inline-source-map',
      mode: 'development',
    }),
    webpackServer: {
      noInfo: true,
    },
  });
};

感谢任何帮助或建议。谢谢!

解决方案:从我的 travis.yml 中完全删除 before_install 配置。

经过更多搜索后,this comment

终于告诉我可能的解决方案

At first I used Chromium, and decided to switch to google-chrome latest versions because of protractor tests. I... [found] that my karma was using (I don't know how) a chromium bin env variable, even though I did set it correctly with the dockerfile!

The only fix is to re-set this env variable in my jenkins job as well :

# Set CHROME_BIN because it is incorrect even from Dockerfile
export CHROME_BIN=/usr/bin/google-chrome

正在从

更新我的 travis.yml 文件
before_install:
  - export CHROME_BIN=chromium-browser

before_install:
  - export CHROME_BIN=/usr/bin/google-chrome

帮我解决了这个问题。然后我走得更远,完全删除了命令,一切仍然有效。