Struct.jsをnpmリポジトリに登録したついでにTravis CIでテスト実行するようにした。元々はブラウザ実行用のテストがjasmineを使って書いてあったが、ビルドサーバーでテスト実行できないので別の方式に変えた。
npm testでテスト実行可能にしておけば、.travis.yml には特にテスト起動方法は書かなくて良い。
ブラウザ実行テスト
ヘッドレスブラウザの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を利用するのに必要な手順は次の二つ。- Travis CIにgithubリポジトリのアクセス権を付与する
- .travis.ymlをリポジトリに追加してgithubにpushする。
npm testでテスト実行可能にしておけば、.travis.yml には特にテスト起動方法は書かなくて良い。
.travis.yml
language: node_js node_js: - 0.8 branches: only: - masternpm testの前にnpm installも勝手にやってくれる。ステータスはTravis CIの画面で確認できて便利。
Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
https://travis-ci.org/hagino3000/Struct.js
仕上げはおなじみの結果画像をReadmeに貼り付けて完了 →
https://travis-ci.org/hagino3000/Struct.js
![](https://travis-ci.org/hagino3000/Struct.js.png?branch=master)