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

320 views Asked by At

My tests recently started failing on TravisCI because Google apparently dropped support for Ubuntu 14.04 (Trusty) with the latest release of Chrome. I've upgraded to Ubuntu 16.04 (Xenial) but am now unable to get Karma to connect to 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.

It's unclear to me whether the issue is with my Travis config, my Karma config, or something else.

Solutions tried:

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,
    },
  });
};

Any help or suggestions appreciated. Thanks!

1

There are 1 answers

0
ericgio On BEST ANSWER

Solution: Remove the before_install config from my travis.yml completely.

After more searching I was finally tipped off to a possible solution by 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

Updating my travis.yml file from

before_install:
  - export CHROME_BIN=chromium-browser

to

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

solved the problem for me. I then went further and removed the command completely and everything still worked.