2012/09/02

[CI]JavascriptのUnitテストをスケジューリング(Jenkins,phantomjs,qunit)

JavascriptのUnitテストをJenkinsで定期的に実施することを目標にやってみました。
今回はAWSのEC2(Amazon Linux AMI 2012.03 64bit)をCIサーバとして利用してます。

QUnitを下記からダウンロード(画面右側のqunit-1.9.0.js,qunit-1.9.0.cssの2ファイル )
http://qunitjs.com/

使い方としてはテストするwebページに上記2つのファイルと、作成したテストコードのjsファイルを読み込みます。あとは<div id="qunit"></div>をBody内に用意すればQUnitのテスト結果が表示されます。※QUnitの使い方は本家や他サイトを参考にしてください。

ただこれではブラウザでwebページを表示しなければテストができないので、Jenkinsに設定できません。なのでコマンドから実行するためにphantomjsを使用します。
phantomjsはWebkitベースでコマンドからJavascriptが実行できるツールです。
今回の環境では下記のLinux(For64bit)を設置するだけで問題なく利用できました。(phantomjs version1.6.1)
http://phantomjs.org/download.html

※別サーバのCentOSでも試してみましたが上記では動作せず、qt47webkitをインストールした後、下記手順でインストールしました。(phantomjs version1.5.0)
http://phantomjs.org/build.html

phantomjsでQUnitのテストを実施するには下記ファイルを利用します。
phantomjs/examples/run-qunit.js
※この中にTimeout間での時間や再実行のための時間などが設定されています。起動に時間がかかる場合はこのファイルを適せん変更してください。

下記コマンドを実行することでQUnitのテストが実施できます。
$ phantomjs run-qunit.js http://dummy.com/test.html

結果は下記用のような感じ(6つのテストを実施してすべて成功)

'waitFor()' finished in 201ms.
Tests completed in 27 milliseconds.
6 tests of 6 passed, 0 failed.


※phantomjsコマンドの第1引数はWebページを起動する前に読み込ませるJsファイルが指定できます。(http経由ではエラーとなりました。。)

後はJenkinsに登録すればOKです。

1.新規ジョブ作成から下記画面の設定で「OK」ボタンクリック



2.作成したジョブから「設定」で「ビルド手順の追加」から「シェルの実行」をクリック


3.phantomjsのコマンドを設定し保存



これでビルド実行でテストが実施されます。テストが問題なければjenkins側でも成功として表示されます。



0 件のコメント:

コメントを投稿