SitePenは,同社の次世代JavaScriptテストスタックであるInternのバージョン2.1をリリースした。新たにHTMLとJUnitのレポータ,grepとskip機能が提供されるとともに,パフォーマンスも向上している。
プロジェクトのGitHub wikiに記載されたSitePenの説明によると,SitePenは"JavaScript用の完全なテストスタック"であり,開発者によるJavaScriptライブラリやアプリケーションの"一貫性のある,高品質なテストケース実行"の支援を目的としている。
同社シニアソフトウェアエンジニアのColin Snover氏がリストアップした最新リリースの改良点には,次のものが含まれている。
- 新しいHTMLおよびJUnitレポータ
- grepとskipの可能な新しいテストフィルタリング
- 機能テストのパフォーマンス改善
- プロキシのパフォーマンスと機能の改善
"Intern 2.1 Released"と題した記事では,同社ソフトウェアエンジニアのJason Cheatham氏が,HTMLとJUnitのレポータについて説明している。
HTMLレポータは,Internのブラウザクライアント・ランナ(client.html)の新しいデフォルトレポータです。実行完了後にテスト結果を要約して,読みやすいフォーマットで表示してくれます。
一方のJUnitレポータによる出力は,マシンでの利用を念頭に置いたものです。テストの実行結果を,一般的に利用されている標準形式であるJUnit-compatible XMLに集約して,report.xmlファイルに出力します。これによってInternを,JUnitレポートを受け入れる,例えばJenkinsのようなツールに,簡単にプラグインできるようになります。
Jenkinsなどの継続的インテグレーションサーバを使うことで,新しいJUnit XMLレポータは,GUIを使用したドリルダウンを実現する。
Internの新リリースでは,コマンドラインパラメータも追加されている。functionalSuitesとgrep,新機能であるテストのスキップだ。
Cheatham氏によると,"functionalSuites
パラメータは,既存のsuites
パラメータと単に同じような動作をする"もので,grep
は正規表現によるテストIDの選択を可能にするものだ。
氏はこの改良について詳しく説明している。grepを使ってテストをフィルタすることで,Internはそれをスキップすると同時に,スキップしたことをレポート出力するという。
新設されたスキップ機能を使うことで,プログラム的にテストをスキップすることができます。this.skip(
)を呼び出せば,いつでもテストの実行が中断されて,次のテストへと移行します。スキップメッセージがすべての組み込みレポータだけでなく,新たに追加された /test/skip メッセージをリッスンしているすべてのカスタムレポータによってレポートされます。
Snover氏は,ユニットテストシステム全体をバイパスして機能テストのみを実行すれば,サーバ側アプリのテスト機能のパフォーマンスが向上すると同時に,"実装されているプロキシにアクセスできないような状況でも,機能テストを行うことが可能"だと述べている。
Intern 2.1には,互換性のない変更もいくつかある。remote.moveMouseTo
コマンドの変更はそのひとつだ。バージョン2.0のこのコマンドには問題があり,最後に検出された要素に対して相対的ではなく,グローバルなマウスの移動を行っていた。このリグレッションが今回のバージョンで修正されている。すなわち,Intern 1.xで動作していたのと同じように再び機能するようになったのだ。
互換性のない変更のもうひとつは,Internが生成して,処理されずにリジェクトされたPromiseのbreakcingReportingに関するものだ。最近のエディションでは,this.async
やその他の内部パーツが有効になっている。リジェクトされたPromiseがエラーハンドラを持たずに生成された場合は,コンソールに追加のメッセージが書き込まれる可能性がある。
SitePenによるIntern 2.1の公式発表は,同社がFacebookやTwitterを通じて公開した詳細なコメント以上のものではなかったが,JavaScriptコミュニティからは好意的に受け入れらている。
Internは新BSDライセンスの条件の下で利用可能なオープンソースプロジェクトで,コミュニティからのコントリビューションを歓迎している。コンテンツライセンス契約に関する詳細は,こちらで確認することができる。