AxeWatcherController クラス
Selenium および Playwright Java テスト内で Axe Watcher を用いてアクセシビリティテストの実行タイミングと方法を制御
このAxeWatcherControllerクラスは、Selenium テスト中に Axe Watcher がアクセシビリティ分析を実行するタイミングと方法について詳細な制御を提供します。(Playwright には、同じ API を提供するAxeWatcherPlaywrightControllerを使用します。)テスト結果を開始、停止、分析、フラッシュするメソッドを提供し、テストプロセスを特定のニーズに合わせてカスタマイズできます。
自動テストを実行する際、Axe Watcherは2つのモードで動作します。
- 自動モード(デフォルト):テストスイートによって訪問された各ページを自動的に分析
- 手動モード:分析するページや状態を制御する
特定のページを分析から除外したい場合や、特定のページ状態に焦点を当てたい場合にAxeWatcherControllerは特に有用です。
コントローラーへのアクセス
AxeWatcherControllerを直接インスタンス化することはありません。代わりに、ラップされたWebDriverインスタンスを通じてアクセスします。
WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));
AxeWatcherController controller = ((AxeWatcherDriver) driver).axeWatcher();メソッド
setTestContext(String testFilePath, List<String> testLocation)
現在実行中のテストを記録して、そのテストが引き起こすアクセシビリティ違反を Axe Developer Hub に帰属させることができます。テストが分析をトリガーする前、通常は@BeforeEachフック内でこれを呼び出します。
以前に設定されたコンテキストをクリアするためにnull, nullを渡します。
パラメーター:
testFilePath- テストソースファイルへのパス、またはnullが不明な場合。絶対パスはユーザーのホームディレクトリに対して相対的にされます。testLocation- ファイル内のテストの場所(例えばクラスとメソッド名、またはdescribe/itタイトルチェーン)、またはnull。
戻り値:
AxeWatcherController- メソッドチェーンのための現在のインスタンス
例:
@BeforeEach
public void setUp() {
((AxeWatcherDriver) driver).axeWatcher().setTestContext(
"src/test/java/com/acme/LoginTest.java",
java.util.Arrays.asList("LoginTest", "rejects bad password")
);
}詳細についてはテストへの違反の帰属を参照してください。
stop()
Axe Watcherによるページの自動分析を停止します。このメソッドを呼び出すと、start()を呼び出すまでAxe Watcherはページを自動的に分析しません。
戻り値:
AxeWatcherController- メソッドチェーンのための現在のインスタンス
例:
WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));
((AxeWatcherDriver) driver).axeWatcher().stop();
// These pages won't be analyzed automatically
driver.get("https://example.com/login");
driver.findElement(By.id("username")).sendKeys("testuser");
driver.findElement(By.id("password")).sendKeys("password");
driver.findElement(By.id("submit")).click();start()
停止後にAxe Watcherによるページの自動分析を再開します。これにより、テストがアプリケーションとやり取りする際にページの自動分析が再開されます。
戻り値:
AxeWatcherController- メソッドチェーンのための現在のインスタンス
例:
WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));
// Disable automatic analysis for login process
((AxeWatcherDriver) driver).axeWatcher().stop();
driver.get("https://example.com/login");
driver.findElement(By.id("login-button")).click();
// Re-enable automatic analysis for the main application
((AxeWatcherDriver) driver).axeWatcher().start();
// These pages will be automatically analyzed
driver.findElement(By.id("dashboard-link")).click();
driver.findElement(By.id("settings-button")).click();analyze()
現在のページで手動のアクセシビリティ分析をトリガーします。このメソッドは、現在のページ状態で強制的にアクセシビリティスキャンを行いたいときに、明確に呼び出すことができます。自動分析の有効・無効にかかわらず使用可能です。
戻り値:
AxeWatcherController- メソッドチェーンのための現在のインスタンス
例:
WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));
// Navigate to a page
driver.get("https://example.com");
// Open a modal dialog
driver.findElement(By.id("open-modal-button")).click();
// Explicitly analyze the page with the modal open
((AxeWatcherDriver) driver).axeWatcher().analyze();flush()
アクセシビリティ分析の結果をAxe Developer Hubに送信します。このメソッドは、すべての結果をAxe Developer Hubに送信することを確実にするために、各テストの終了時(通常は@AfterEachまたはそれに相当するメソッドで)に呼び出す必要があります。
戻り値:
AxeWatcherController- メソッドチェーンのための現在のインスタンス
例:
@AfterEach
public void tearDown() {
if (driver instanceof AxeWatcherDriver) {
((AxeWatcherDriver) driver).axeWatcher().flush();
}
driver.quit();
}メソッドチェーン
AxeWatcherControllerにあるすべてのメソッドはメソッドチェーンをサポートしており、複数の操作を組み合わせることができます:
((AxeWatcherDriver) driver).axeWatcher()
.stop() // Stop automatic analysis
.analyze() // Perform a manual analysis
.start() // Resume automatic analysis
.flush(); // Flush results to axe Developer Hub重要な注意事項
-
iFrames:
analyze()、start()、およびstop()などのコントローラーメソッドは、iframe 内から呼び出されると動作しません。これらのメソッドを使用する際は常に最上位フレームにいることを確認してください。 -
ページプロトコル:コントローラーメソッドは
http:、https:、またはfile:以外のプロトコルを持つページでは動作しません。 -
結果のフラッシュ: すべてのアクセシビリティ結果がAxe Developer Hubに送信されるように、テストの最後には必ず
flush()を呼び出してください。 -
状態の認識:コントローラーはその状態を追跡するので、すでに停止しているときに
stop()を呼び出したり、すでに開始されているときにstart()を呼び出しても効果はありません。
