最近追加された、OutSystemsのClient Actionに対してユニットテストを書けるモジュール、BDDFramework Client Side。
このモジュールにも、BDDFrameworkと同じREST APIが提供されていて、外部から自動実行させることができます。
確認環境
Personal Environment(Version 11.12.0 (Build 30002))
Service Studio (Version 11.11.9)
BDDFramework Client Side (Version 1.0.0)
REST APIでのテスト動作の仕組み
①:利用者が、TestRunner_APIモジュールにあるREST APIに実行をリクエスト
②:REST APIは、内部でTestRunner_Ext ExtensionにあるActionを起動
③:Actionは、PuppeteerSharpというライブラリを経由してChromiumをサーバー上で操作
④:渡されたパラメーターからテスト対象画面のURLを決定し、Chromiumに開くことでテストを実行する。実行が完了したことを検知すると、テストスイートのJavaScriptオブジェクトをJSONに変換する関数を実行して結果を取り出す
API実行方法
事前準備
BDDFrameworkClientSideをブラウザでプレビューすると、Welcome Screenが以下の通り開きます。
テストをAPI経由で実行するためには、この画面でChromiumをサーバーにインストールしておく必要があります。
インストール作業はボタンを押すだけ。背後で、必要なファイルのダウンロードと保存が行われます。
一度ダウンロードしておけば、Welcome画面の「Chromium Status」が「Chromium is correctly installed.」に変わるのでわかります。
API
Forgeからインストールしたアプリケーション内に、TestRunner_APIというモジュールがあります。
このモジュールのLogicタブ > Integrationsフォルダ > RESTの下に、
というAPI。
2つありますが、処理はほぼ同じ。ここでは、v2の方のインターフェースを見ていきます。
なんで出たばかりのモジュールにv1とv2の2バージョンのAPIがあるのかというと、(Client Sideではない)BDDFrameworkに合わせたものと思われます。
BDDFramework APIのバージョンの違いについては、以下を参照してください。
API V2
パラメータの確認
ここでは、動作確認に必要な分だけ見ていきます。
- TestESpace:BDDFramework Client Sideを利用して作成した「テストケースを含むモジュール名」
- TestSuiteScreen:上記モジュール内で、実行したい「テストスイート画面名」
必須なのは上記2つのみ。
APIのURLは、
https://OutSystems環境のホスト/TestRunner_API/rest/v2/BDDTestRunner/「テストケースを含むモジュール名」/「テストスイート画面名」
TestESpaceとTestSuiteScreen以外のパラメータはheader渡しであるため、HTTPリクエストのヘッダーに詰めて渡す。テストするときはPostmanとかFiddlerが便利ですね。API動作確認が目的であれば、指定不要です。
実行結果はJSONで返ってきます。テストスイート内での成功ケース数、失敗ケース数、各ケースのidやDescriptionなど。
PEでの動作について
API経由でのテスト実行は、Personal Environmentではサポートされていません。
ドキュメントによると、Chromiumをサーバーにインストールする権限がないためとのこと。
Chromiumのダウンロードは、TestRunner_Ext ExtensionのDownloadChromium Actionで行います。このActionはPuppeteerSharpを使っています。実はUltimatePDFという別のForgeコンポーネントもこれを使っていて、そちらはTempフォルダにダウンロードすることで権限問題を回避しているようです。つまり、この方法を取れば、BDDFramework Client SideをPersonal Environmentで実行することは不可能ではないことに。