WebdriverIO は、シンプルなアプローチで Web アプリケーションをテストするための堅牢な自動テストフレームワークです。
このチュートリアルでは、TestRail CLI を使用して、WebdriverIO の自動テスト実行で生成されたテスト結果を TestRail に統合する方法を説明します。統合によって、自動テストの結果を中央で管理し、TestRail が提供するすべての解析およびレポート機能を活用できます。
概要
このチュートリアルでは、サンプル プロジェクトを使用して、TestRail CLI と互換性があるWebdriverIO の自動テスト プロジェクトをセットアップし、生成されたテスト結果をアップロードする手順を案内します。
このチュートリアルを通して読むと、以下のことができるようになります。
-
- 簡単な WebdriverIO プロジェクトからテストを実行する
- TestRail CLI をインストールする
- TestRail インスタンスを設定する
- CLI を実行する
- TestRail でテスト ケースとテスト結果を確認する
前提条件
WebdriverIO のテスト プロジェクトを実行するには、npm または WebdriverIO セットアップ ガイドに記載されている他のオプションのいずれかを使用してインストールします。このチュートリアルでは npm を使用してインストールします。 WebdriverIO は Node.js によってインストールされるため、まず Node.js をインストールする必要があります。
さらに、テスト結果を TestRail にインポートするために TestRail CLI をインストールして実行するには、Python が必要です。
| 前提条件 | 説明 |
|---|---|
| Node.js | OS に合ったバージョンをダウンロードし、インストール ウィザードの指示に従います。 正常にインストールされたことを確認するには、コマンド ラインから次のコマンドを実行します。 node --version および npm --version すると、インストールされたバージョンが出力されます。 |
| Python 3.x | OS に合ったバージョンをダウンロードし、インストール ウィザードの指示に従います。正常にインストールされたことを確認するには、コマンド ラインから python --version および pip --version コマンドを実行します。すると、バージョンが出力されます。 |
サンプル プロジェクトのインストール
まず、サンプル プロジェクトのコードを取得し、必要な依存ライブラリをインストールします。
-
- サンプル プロジェクトをクローンまたはダウンロードします。
- プロジェクトのルート フォルダーでコマンド プロンプトを開いて次のコマンドを実行します。
npm install
サンプル プロジェクトの確認
任意の IDE を使用してサンプル プロジェクトを開き、テスト ファイルを確認します。このチュートリアルでは、実行結果のインポート方法に集中できるよう、自動テストのコードはシンプルにしてあります。テストはログイン ページの簡単な操作で構成されます。
(サンプル フィーチャー ファイル)
Feature: The Internet Website Access
Scenario: As a user, I can log into the secure area
Given I am on the login page
When I login with and
Then I should see a flash message saying
Examples:
| username | password | message |
| tomsmith | SuperSecretPassword! | You logged into a secure area! |
Scenario: As a user, I can't log into the secure area
Given I am on the login page
When I login with and
Then I should see a flash message saying
Examples:
| username | password | message |
| tomsmith | barfoo | Your password invalid! |
(ステップ定義のサンプル)
import { Given, When, Then } from '@wdio/cucumber-framework';
import { expect, $ } from '@wdio/globals'
import LoginPage from '../pageobjects/login.page.js';
import SecurePage from '../pageobjects/secure.page.js';
const pages = {
login: LoginPage
}
Given(/^I am on the (\w+) page$/, async (page) = {
await pages[page].open()
});
When(/^I login with (\w+) and (.+)$/, async (username, password) = {
await LoginPage.login(username, password)
});
Then(/^I should see a flash message saying (.*)$/, async (message) = {
const now = new Date();
const timestamp = now.toISOString().replace(/[^\w]/g, '-');
const screenshotName = `screenshots-login-${timestamp}.png`;
await browser.saveScreenshot(`./results/screenshots/${screenshotName}`);
await expect(SecurePage.flashAlert).toBeExisting();
await expect(SecurePage.flashAlert).toHaveText(expect.stringContaining(message));
});
サンプル プロジェクトの実行
同じコマンド プロンプトで次のコマンドを実行し、プロジェクトで WebdriverIO のテストを実行して結果を JUnit XML 形式で保存します。
npx wdio run wdio.conf.js
WebdriverIO コマンドが正常に実行されたら、results フォルダーにテスト結果があるのが確認できます。プロジェクトは 1 つのレポート ファイルを生成するよう設定されています。
wdio.conf.js ファイルで指定したとおり、JUnit XML フォーマットのテスト結果を含む webdriverIO-test-results.xml というファイルもあるはずです。次のステップでは、このファイルを TestRail CLI で解析し、テスト ランを作成してテスト結果を TestRail へアップロードします。
TestRail への結果のインポート
TestRail CLI のインストール
すでにマシンに Python がインストールされている場合、TestRail CLI をインストールするには、コマンド ラインで次のコマンドを実行するだけです。
$ pip install trcli
TestRail の設定
次に、下の手順に従って TestRail インスタンスを設定する必要があります。
-
- [管理] > [サイト設定] に移動して [API] タブをクリックし、[API の有効化] オプションをオンにして TestRail API を有効化します。
- 自動テスト ケースのコードと実際の TestRail のケースをマッピングするためのカスタム フィールドを作成します。それには、[管理] > [カスタマイズ] に移動して [フィールドの追加] をクリックします。フィールド作成画面に移動したら、下記の 2 つの要件に従ってフィールドを作成します。
- システム名は automation_id
- [タイプ] は Text にする必要があります。
テストを実行し、JUnit 形式のレポート ファイルを生成したら、簡単にテスト結果 (およびテスト ケース) を TestRail にインポートできます。そうすると、自動テストの実行を可視化し、実際にどのようにアプリケーションがテストされているかに関する概要をすべて TestRail 内で参照できます。
TestRail への結果の送信
TestRail CLI をインストールし、TestRail インスタンスの設定が完了したら、次のコマンドを実行してテスト結果をアップロードできます。
$ trcli -y \ > -h https://INSERT-INSTANCE-NAME.testrail.io \ > --project "My Project" \ > --username INSERT-EMAIL \ > --password INSERT-PASSWORD \ > parse_junit \ > --title "Automation Demo - WebdriverIO" \ > -f "results/test-results.xml"
デフォルトの場所を変更した場合、-f オプションの後のファイル名がレポート ファイルへのパスに一致している必要があります。その他のオプションはすべて TestRail インスタンスおよびプロジェクトに合わせます。他のコマンド ライン オプションについては、プロジェクト リポジトリの TestRail CLI README.md ファイルまたは TRCLI のマニュアル ページを参照するか、下記のコマンドを実行して CLI の組み込みヘルプを参照します。
$ trcli --help $ trcli parse_junit --help
TestRail での結果の可視化
TestRail プロジェクトのテスト ケース ページに移動すると、テスト結果レポートに基づいて、TestRail CLI によってテストケースが自動的に作成されていることがわかるでしょう。
JUnit レポートの classname および name 属性を組み合わせて各テスト ケースに一意の Automation ID が割り当てられています。この Automation ID により、TestRail CLI は、実行のたびにテストケースを照合できます。同じ Automation ID を持つテス トケースがすでに存在する場合、該当テストケースが更新されます。テスト ケースが存在しない場合は新しいテスト ケースが作成されます。
[テスト ランと結果] ページでは、Automation Demo – WebdriverIO という名前のテスト ランが作成されたのを確認できます。テスト ランを開き、各自動テスト結果の詳細をドリルダウンします。下の図に示すように、テストが失敗したときには、画面ショットなどの添付ファイルとともにテスト自動化フレームワークが出力したエラー メッセージもテスト結果に登録されているため、テストが失敗した理由の高度な解析が可能です。
次のステップ
テスト結果が TestRail に集約されたので、失敗したテストのエラー メッセージも含めて自動テスト実行の結果を確認できるだけでなく、手動テストと自動テストをレポート上で集約し、アプリケーションに関する完全なテスト カバレッジを表示したり、テスト自動化プロセスを追跡したりすることも可能です。また、手動テストの結果だけでなく、自動テストの結果から任意の課題トラッカーに直接バグをレポートすることもできます。
TestRail のレポート機能を活用する方法については、TestRail のレポートおよびテスト メトリクスの動画を参照してください。


