最近は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); } }