KarmaをTravisCI で実行する

最近はkarmaに執心しています。
 
公式を見てみると、TravisCIの他にSemaphoreCiというものとの接続例が記述されていました。
今回は慣れ親しんだ TravisCI を使ってみます。
Karma - Travis CI

Chromeでの実行例が記載されていない

Chrome Extension のテストなので Chrome でテストがしたいのですが
(あと、訳あって phantomjsだと意図しない動作があるためchromeでテストしたい)
どうやらphantomjsとfirefoxのみしか公式に記載されていません。

Chromeでの実行方法

以下が参考になりました。
How to run JavaScript tests in Chrome on Travis | A geek with a hat
Karma+ChromeでTravisCIする | niwaringo() {Tumblr}
 
scriptでkarmaを--single-runで実行するようにするのと
xvfb (仮想エミュレータ)を利用するようにします。

# .travis.yml
language: node_js
node_js:
  - "4"

script: node_modules/karma/bin/karma start karma.conf.js --single-run

before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start

karma.confで chrome のオプションに --no-sandbox を追加します。
こうすることで、Travis CIの仮想マシン上でもChromeを利用することができるようです。
なぜかは、よくわからなかった。誰か教えて。
Travis CIの時にのみ有効にするようにします。
今書いてて思いましたが、ここでconfigを上書きするなら、
.travis.ymlのscriptで指定している --single-run も同じように上書きする対応でも良いですね。
 

// karma.conf.js
  if (process.env.TRAVIS) {
    var configuration = {
      customLaunchers: {
        chromeTravisCi: {
          base: 'Chrome',
          flags: ['--no-sandbox']
        }
      },
      browsers: ['chromeTravisCi']
    }
    config.set(configuration);
  }
}