AxeWatcherController クラス

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Selenium および Playwright Java テスト内で Axe Watcher を用いてアクセシビリティテストの実行タイミングと方法を制御

Not for use with personal data

この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()を呼び出すまでページは自動的に分析されません。

戻り値:

  • 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

重要な注意事項

  1. iFramesanalyze()start()、およびstop()などのコントローラーメソッドは、iframe 内から呼び出されると動作しません。これらのメソッドを使用する際は常に最上位フレームにいることを確認してください。

  2. ページプロトコル:コントローラーメソッドはhttp:https:、またはfile:以外のプロトコルを持つページでは動作しません。

  3. 結果のフラッシュ:すべてのアクセシビリティ結果が axe Developer Hub に送信されることを確実にするために、テスト終了時には常にflush()を呼び出してください。

  4. 状態の認識:コントローラーはその状態を追跡するので、すでに停止しているときにstop()を呼び出したり、すでに開始されているときにstart()を呼び出しても効果はありません。

参照