2013-01-14

Travis CIでブラウザ・Node.js両対応ライブラリをテストする

Struct.jsをnpmリポジトリに登録したついでにTravis CIでテスト実行するようにした。元々はブラウザ実行用のテストがjasmineを使って書いてあったが、ビルドサーバーでテスト実行できないので別の方式に変えた。

ブラウザ実行テスト

ヘッドレスブラウザのPhantomjsにjasmineのテストページのURLを食わせれば良い。Travis CIもPhantomjsが使える
phantomjs run-jasmine.js "http://localhost:9999/test/spec_runner.html"
がしかし、テストがことごとくfailしてどうにもならない。原因はPhantomjsがECMA Script6の機能をサポートしていない、オプションで有効にする事もできない故。とりあえずブラウザ実行テストは今回は諦める。

Node.js実行テスト

元々のテストコードをそのまま使いたかったのでjasmine-nodeを使って --harmony オプション付きでテスト起動する。各テストファイルの先頭に、Node.js対応のコードを追記しておく。
var Struct = (typeof(require) != 'undefined') ? 
    require(__dirname + '/../struct.js') : window.Struct;
npm testが動く様にpackages.jsonにコマンドを記述する。
packages.json
"scripts": {
  "test": "node --harmony ./node_modules/jasmine-node/bin/jasmine-node test"
},

Travis CI導入

githubと共にTravis CIを利用するのに必要な手順は次の二つ。

  1. Travis CIにgithubリポジトリのアクセス権を付与する
  2. .travis.ymlをリポジトリに追加してgithubにpushする。

npm testでテスト実行可能にしておけば、.travis.yml には特にテスト起動方法は書かなくて良い。
.travis.yml
language: node_js
node_js:
  - 0.8
branches:
  only:
      - master
npm testの前にnpm installも勝手にやってくれる。ステータスはTravis CIの画面で確認できて便利。
仕上げはおなじみの結果画像をReadmeに貼り付けて完了 →

このエントリーをはてなブックマークに追加