[salesforce][CI] JavascriptのUnitTest
今回はQUnitを利用してJavascriptのUnitTestをやってみました。またJenkinsからCUIで起動したかったのでPhantomJSも利用しています。
※Qunit、PhantomJSの利用方法については本家サイトをご覧ください。
まずテスト対象のWebページ(VisualforcePage)にQUnit.js、QUnit.css、テストコードを書いたJS(今回は’samp_test.js’)を読み込みます。
[php]
<apex:stylesheet value="{!URLFOR($Resource.sf, ‘/qunit/qunit.css’)}"/>
<apex:includeScript value="{!URLFOR($Resource.sf, ‘/qunit/qunit.js’)}" />
<apex:includeScript value="{!URLFOR($Resource.sf, ‘samp_test.js’)}" />
[/php]
またBody内にQunitで利用するタグを追記します。
[php]
<div id="qunit"></div>
<div id="qunit-fixture">test markup</div>
[/php]
この状態で対象のページにアクセスするとQUnitのテスト結果が表示されます。
(standardStylesheets=”true”で表示すると多少レイアウトが崩れています)
このテストをCUI(PhantomJS)で動かします。PhantomJSではQUnitを動かすための起動ファイルが、Sampleとして用意されていますので、こちらに少し手を加えます。
・phantomjs / examples / run-qunit.js
[php]
//ログイン処理の関係上、3秒ではTimeoutしてしまうため20秒に変更(16行目周辺)
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 20000, //< Default Max Timout is 3s
[/php]
これで準備は完了です。
下記コマンドを実行するとテスト結果が戻ってきます。
$ phantomjs –web-security=no run-qunit.js ‘https://login.salesforce.com/?un=testuser%40dummy.jp&pw=dummy&startURL=apex%2fdummy’
※Salesforceではログインページ右側の広告がiframeとなっており、別ドメインから読み込まれていると警告を出力してしまうため、オプション”–web-security=no”を付加してします。