Karma + TravisCI の結果を Coveralls へ送信する

https://coveralls.io というものがあり
CIのcoverageがweb上で参照できるサービスがあります。
Github上にバッチも表示できて嬉しいです。

karma-coveralls

jsのテストでは利用したことがなかったのですが、karmaだとプラグインが用意されていて
簡単に導入できました。
caitp/karma-coveralls: A Karma plugin to upload coverage reports to coveralls.io
installして、設定ファイルを修正、各サービスの設定をちょろっと変更するだけでok。

install

$ npm install karma-coveralls --save-dev

karma.conf.js

以下を設定します。

      reporters: ['coverage', 'coveralls'],
      coverageReporter: {
        type: 'lcov', // lcov or lcovonly are required for generating lcov.info files
        dir: 'coverage/'
      }

実際はTravisCIの場合のみ有効にしておけば良いので、このようになります。

  if (process.env.TRAVIS) {
    var configuration = {
      customLaunchers: {
        chromeTravisCi: {
          base: 'Chrome',
          flags: ['--no-sandbox']
        }
      },
      browsers: ['chromeTravisCi'],
      reporters: ['coverage', 'coveralls'],
      coverageReporter: {
        type: 'lcov', // lcov or lcovonly are required for generating lcov.info files
        dir: 'coverage/'
      }
    }
    config.set(configuration);
  }

coveralls/travis設定

https://coveralls.io でプロジェクトを選んで有効にすると
tokenが発行されますので、その値を TravisCIの設定画面で環境変数として設定します。
環境変数名は、COVERALLS_REPO_TOKEN 。
f:id:rochefort:20160306023832p:plain
あとはpushすればテストがTravisCI上で実行され、coverallsにcoverageが連携されます。

ちなみにバッジは以下のようにcoverallsでコピペできるようになっています。 f:id:rochefort:20160306023848p:plain