SauceLabs および saucectl
SauceLabs は、クラウドベースのテスト プラットフォームであり、手動も自動も含めてすべてのテストを実行するために必要なインフラストラクチャおよびツールを提供します。SauceLabs で利用できるツールの 1 つが saucectl
です。このコマンド ライン インターフェイスは、フレームワーク内のテストと SauceLabs の高度な並行化、テスト履歴フィルタリング、解析機能の関係をオーケストレーションします。また、テスト セッションの情報で拡張された JUnit レポートをサポートしています。
TestRail への結果の統合
TestRail には、自動テストの結果を簡単にインポートするほか、テスト ケースを自動作成することもできるコマンド ライン インターフェイス ツールがあります。TestRail CLI の基本的な機能は、JUnit レポートを解析して特定の実行データを TestRail にインポートし、テスト結果を中央化できるようにすることです。
いっぽうのツールが JUnit レポートを生成し、他方のツールがそのレポートを処理するため、SauceLabs と TestRail の統合は、下の図のように非常にシンプルになります。
すぐに使い始められるサンプル コードが必要な場合は、GitHub 上の Cypress-saucectl サンプル プロジェクトを参照してください。
TestRail CLI の使用
このセクションの内容をよりよく理解するために、TestRail CLI ドキュメントも読むことを推奨します。
上記のとおり、デフォルトでは、TestRail CLI は JUnit レポートを解析して特定の実行データをインポートします。SauceLabs によって生成されたレポートは、セッション情報で拡張されており、1 つのレポートに複数の実行が含まれているため、TestRail CLI はこのケースに対応した特別なパーサーを持っています。SauceLabs の結果をインポートするには、コマンド ラインで TestRail CLI を実行するときに --special-parser saucectl
オプションを使用する必要があります。これによって、すべてのテスト実行を TestRail の個別のテスト ランにインポートできます。
<testsuites tests="8"> <testsuite name="Firefox - test_suite_1.cy.js" tests="1" time="48"> <properties> <property name="url" value="https://app.saucelabs.com/tests/7d7544f09a47428fb97ee53d1a5b1419"/> <property name="browser" value="firefox 108"/> <property name="platform" value="Windows 11"/> </properties> <testcase name="Component 1 Verify page structure" time="0.9450" classname="Verify page structure"/> </testsuite> <testsuite name="Firefox - test_suite_2.cy.js" tests="1" time="80"> <properties> <property name="url" value="https://app.saucelabs.com/tests/cbb864e049c645e1a96d56e953fe33f0"/> <property name="browser" value="firefox 108"/> <property name="platform" value="Windows 11"/> </properties> <testcase name="Component 2 Verify page structure" time="0.9670" classname="Verify page structure"/> </testsuite> <testsuite name="Chrome - test_suite_1.cy.js" tests="1" time="65"> <properties> <property name="url" value="https://app.saucelabs.com/tests/349cf779c0f94e649f7ea6ccc42e1753"/> <property name="browser" value="chrome 106"/> <property name="platform" value="Windows 11"/> </properties> <testcase name="Component 1 Verify page structure" time="0.7500" classname="Verify page structure"> <failure type="element not found" message="Fail due to...">stacktrace...</failure> </testcase> </testsuite> <testsuite name="Chrome - test_suite_2.cy.js" tests="1" time="33"> <properties> <property name="url" value="https://app.saucelabs.com/tests/c0e3ddae1e104b86b940ed7e8026ff83"/> <property name="browser" value="chrome 106"/> <property name="platform" value="Windows 11"/> </properties> <testcase name="Component 2 Verify page structure" time="0.7570" classname="Verify page structure"/> </testsuite> </testsuites>
このレポートは、Firefox と Chrome の 2 つのデバイスでの 1 つのプロジェクトの実行を含んでおり、次の画像のとおり、testsuite 要素名で識別できます。つまり、TestRail CLI は TestRail に 2 つのテスト ランを作成し、それぞれのテスト結果を追加します。各テスト ランには、Component 2 Verify page structure
および Component 1 Verify page structure
という同じテストが含まれています。
また、TestRail は、各テスト ランの説明に browser
および platform
の値を追加し、セッションの url
を各テスト ケースの結果に追加します。
1 つの SauceLabs セッションで複数のテスト ケースが実行される場合があるため、複数のテスト結果に同じセッションへの URL が追加される場合があることに注意してください。
下のスニペットは、SauceLabs レポートの解析に使用するコマンドのサンプルです。通常の TestRail CLI の使用と異なる点は、--special-parser saucectl
オプションです。
$ trcli -y \ > -h https://INSERT-INSTANCE-NAME.testrail.io \ > --project "My Project" \ > --username INSERT-EMAIL \ > --password INSERT-PASSWORD \ > parse_junit \ > --title "Cross-browser automated tests" \ > --special-parser "saucectl" \ > "./saucelabs-report.xml"
上記のサンプルを使用してこのコマンドを実行し、[テスト ケース] ページに移動すると、テスト ケースが自動作成されており、下の図のようなテスト スイートが表示されます。レポート ファイルには 4 つの testcase 要素がありますが、同じ 2 つのテスト ケースが 2 つのブラウザーで実行されたこと表しているため、TestRail には 2 つのテストだけが作成されます。
[テスト ランと結果] ページを開くと、ブラウザーごとに 1 つずつ、2 つのテスト ランが表示され、テスト ランのタイトルに括弧に囲まれたブラウザー名が追加されています。
Chrome を使用した自動テスト実行に関する最初のテスト ランをドリル ダウンすると、テスト ランの説明に実行プラットフォームの情報が表示され、テスト 結果にはセッション URL が表示されます。これにより、実行のコンテキストを把握したり、すばやく SauceLabs セッションに移動してテスト実行自体に関するより詳しい情報を参照したりできます。