TypeScript + Node.js でアプリを作っているのですが、テストのカバレッジを取得して、
GitHub にて、そのバッジを README.md に表示してみようという試み。
TypeScript + Node.js だけじゃなく、 JavaScript でもいけます。
前提条件としては、下の通り。
- TypeScript (もしくは JavaScript)
- Node.js
- テストフレームワークは mocha
- CircleCI を使っている
- Coveralls を使っている
ということで、早速設定していきます。
まず、 CircleCI にて、 Coveralls のトークンを設定します。
はじめ、 Coveralls にリポジトリを登録した際には、 Travis CI 用の設定方法が書いてありますが、そこの repo_token
の値をコピーして、
CircleCI のプロジェクト設定の Environment variables に追加します。
Name
には COVERALLS_REPO_TOKEN
を、 Value
にはさっきコピーした文字列をいれます。
こんな感じ。
xxxx9zAK
ってのが、入力した値。
ついでに、COVERALLS_SERVICE_NAME
というのも、 Value
を CircleCI
にして追加します。
まぁ、なくても正常に動作はしますけども。
次に、 JavaScript 用のカバレッジツールを導入します。
とりあえず、 CircleCI でおすすめされていた blanket.js を使うことにしたので、
導入し、設定しておきます。
$ npm install blanket --save
で、 package.json
を開き、項目を追加します。
{ "name": "hoge", ... "config": { "blanket": { "pattern": [ "" ], "data-cover-never": [ "node_modules" ] } }, ... }
次に、生成されたレポートを Coveralls へ送信するためのモジュールを導入します。
この時、テストフレームワークとして mocha を使っているので、レポーターも導入します。
$ npm install coveralls --save-dev $ npm install mocha-lcov-reporter --save-dev
次は、 CI 側で、テストを実行するための設定をします。
test: override: - npm run test
{ "name": "hoge", ... "scripts": { "test": "NODE_ENV=test YOURPACKAGE_COVERAGE=1 mocha --require blanket --reporter mocha-lcov-reporter | ./node_modules/coveralls/bin/coveralls.js", ... }, ... }
これで、 CI 側は終了です。
あとは、テスト実行前に、 TypeScript のビルドを設定しておけば、カバレッジが取得できます。
ではでは〜。