mcpField
A
accessibility-selenium-testing

accessibility-selenium-testing

github.com/fugaziテスト・品質25639 回インストール2 日前に更新
リポジトリ

accessibility-selenium-testing について

Selenium WebDriver と axe-core を使ったブラウザー内のアクセシビリティテストを支援するスキルです。WCAG スキャンやキーボード操作の確認、CI レポートを扱い、自動検査には手動レビューも必要である点を説明します。

主な機能

  1. 01axe-core による WCAG 違反のスキャン
  2. 02タグやセレクターによる範囲指定
  3. 03違反レベルとスキャン結果の処理
  4. 04キーボード操作とフォーカス順の確認
  5. 05JUnit 5、Allure、CI との連携

活用シーン

  1. 01既存の Selenium テストへの検査追加
  2. 02ログインモーダルなど特定コンポーネントの監査
  3. 03CI で重大度の高い違反を検出
  4. 04レポート作成後の手動レビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fugazi/test-automation-skills-agents --skill accessibility-selenium-testing

インストール後、Claude Code で/accessibility-selenium-testingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE.txt
references/
axe-api-reference.md
axe-patterns-helper-processing.md
axe-patterns-helper-scanning.md
axe-patterns-keyboard-and-cicd.md
axe-patterns-tags-and-tests.md
code-patterns.md
wcag21aa-checklist-additions-exceptions.md
wcag21aa-checklist-perceivable-operable.md
wcag21aa-checklist-understandable-robust.md
scripts/
AccessibilityHelper.java
pom-template.xml

詳細

Selenium WebDriver と Axe Core によるアクセシビリティテスト

このスキルは、axe-core エンジンを使用して Selenium WebDriver フレームワーク内でアクセシビリティを自動分析し、ブラウザー上で WCAG 違反やベストプラクティスに関する問題を検出できるようにします。

有効化: WCAG 準拠の検証、アクセシビリティ違反のスキャン、キーボードナビゲーションのテスト、ARIA セマンティクスの監査、または a11y レポートの生成が必要な場合に、このスキルが起動します。

最初に確認する質問

  • 対象となるアプリの URL やユーザーフローは何ですか(また、明確に対象外となるものは何ですか)?
  • 既存の Selenium 環境はありますか。また、CI はどのように実行されていますか?
  • 対象とする規格は何ですか(デフォルトは WCAG 2.2 AA)。組織固有のポリシーはありますか?
  • リスクが最も高いページやコンポーネント(認証、チェックアウト、フォーム、モーダル、ナビゲーション)はどれですか?
  • 例外が必要となる既知の制約(レガシーなマークアップ、サードパーティ製ウィジェット)はありますか?

前提条件

コンポーネントバージョン用途
Java JDK21+最新機能を備えたランタイム
Maven3.9+依存関係管理
Selenium WebDriver4.xブラウザーの自動化
axe-core-selenium4.10+Deque axe-core との連携
JUnit 55.10+テストフレームワーク
AssertJ3.x読みやすい失敗メッセージのための流れるようなアサーション
Allure2.xa11y 違反の添付ファイルを含むレポート

注: axe 連携には、Maven 依存関係 com.deque.html.axe-core:selenium を使用してください。


対象: WCAG 2.2 AA(wcag2a、wcag2aa、wcag21a、wcag21aa、wcag22a、wcag22aa)。WCAG 2.2 仕様を参照してください。

使用しないケース
  • Playwright/TypeScript によるアクセシビリティテスト(a11y-playwright-testing を使用してください)。
  • Selenium による機能的な UI テストの作成(webapp-selenium-testing を使用してください)。
  • 完全な適合性の最終確認。自動 axe スキャンで検出できる問題は約 30~50%です。手動監査と支援技術によるテストも引き続き必要です。

Axe-Core ツールリファレンス

AxeBuilder の設定
メソッド用途例
new AxeBuilder()スキャナーインスタンスを作成エントリポイント
.withTags(List<String>)WCAG タグで絞り込むwcag2aa、wcag21aa、wcag22aa
.include(String)特定のセレクターをスキャン#main-content
.exclude(String)セレクターをスキャン対象から除外.third-party-widget
.disableRules(List<String>)特定のルールを無効化color-contrast
.withRules(List<String>)特定のルールのみ実行label、button-name
.analyze(WebDriver)スキャンを実行Results を返します
Results オブジェクト
メソッド戻り値用途
getViolations()List<Rule>失敗したルール
getPasses()List<Rule>合格したルール
getIncomplete()List<Rule>手動レビューが必要なルール
getInapplicable()List<Rule>ページに適用されないルール
violationFree()boolean違反がない場合に True
違反の影響度
影響度深刻度CI での対応
Criticalユーザーの利用を完全に妨げる常にビルドを失敗させる
Serious重大な障壁となる常にビルドを失敗させる
Moderate多少の困難がある警告するか、失敗させる
Minor不便が生じるレビュー用に記録する

ステップごとのワークフロー

ワークフロー 1:既存のテストに A11y スキャンを追加する
  1. pom.xml に依存関係を追加する

    <dependency>
        <groupId>com.deque.html.axe-core</groupId>
        <artifactId>selenium</artifactId>
        <version>4.10.0</version>
    </dependency>
    
  2. AccessibilityHelper ユーティリティを作成する

  3. ページの読み込み後にスキャンを追加する

    driver.get("https://example.com");
    waitForPageReady();
    AccessibilityHelper.verifyPageAccessibility(driver);
    
  4. 実行して違反を確認する

    mvn test -Dtest=A11yTest
    
ワークフロー 2:特定のコンポーネントをテストする
  1. コンポーネントが表示されているページに移動する

  2. コンポーネントの状態を切り替える(モーダルを開く、ドロップダウンを表示する)

  3. コンポーネントのみをスキャンする

    Results results = new AxeBuilder()
        .withTags(List.of("wcag2a", "wcag2aa", "wcag22aa"))
        .include("#login-modal")
        .analyze(driver);
    
  4. アサーションを行い、記録する

ワークフロー 3:キーボードナビゲーションの監査
  1. すべてのインタラクティブ要素を特定する
  2. プログラムからページ内を Tab キーで移動する
    element.sendKeys(Keys.TAB);
    WebElement focused = driver.switchTo().activeElement();
    
  3. フォーカスの順序が論理的であることを確認する
  4. Escape キーでモーダルが閉じることをテストする
  5. キーボードトラップがないことを確認する
ワークフロー 4:CI との統合
  1. ヘッドレスブラウザーを設定する

    mvn test -Dheadless=true -Dgroups=a11y
    
  2. Critical/Serious の許容件数をゼロに設定する

    long criticalCount = violations.stream()
        .filter(v -> List.of("critical", "serious").contains(v.getImpact()))
        .count();
    assertThat(criticalCount).isZero();
    
  3. 追跡用に JSON レポートを生成する


コードパターン

AxeBuilder のスキャンパターン、違反のログ記録、JUnit 5 との統合、CI/CD YAML の詳細については、references/code-patterns.md を参照してください。

主要なコード例:

Results results = new AxeBuilder()
    .withTags(List.of("wcag2a", "wcag2aa", "wcag21a", "wcag21aa", "wcag22a", "wcag22aa"))
    .analyze(driver);
assertThat(results.violationFree()).as("A11y violations").isTrue();

トラブルシューティング

問題原因解決策
Axe の結果が空になるページの読み込みが完了していないページの準備状態を明示的に待機する
コントラストに関する誤検出動的なテーマライトモードとダークモードの両方でテストする
サードパーティ製ウィジェットでの違反ベンダーのコードを変更できないドキュメント化されたチケットを添えて .exclude() を使用する
ルールが不完全手動レビューが必要手動監査用に記録し、自動的に失敗としない
実行ごとに結果が異なる非同期のコンテンツ読み込みスキャン前にページの状態を確定的にする
CI では失敗するが、ローカルでは成功するビューポート/ブラウザーが異なるCI と同じヘッドレス設定を使用する

POUR 原則に基づくトリアージ

原則主な確認項目よくある違反
知覚可能テキストによる代替、キャプション、コントラスト、構造代替テキストがない、コントラストが低い、ラベルがない
操作可能キーボード操作、フォーカス順序、コンテンツをスキップする手段キーボードトラップ、スキップリンクがない、フォーカスが見えない
理解可能ラベル、予測可能な動作、エラー処理説明が不明瞭、予期しない変更
堅牢有効な HTML、ARIA、名前/ロール/値無効な ARIA、重複 ID、ロールがない

テストの実行

Maven コマンド
コマンド目的
mvn test -Dgroups=a11yすべてのアクセシビリティテストを実行する
mvn test -Dtest=A11yTest特定のテストクラスを実行する
mvn test -Dheadless=trueヘッドレスモードで実行する(CI モード)
mvn allure:serve違反を含む Allure レポートを表示する
CI/CD との統合
- name: Run Accessibility Tests
  run: mvn test -Dgroups=a11y -Dheadless=true

- name: Upload A11y Report
  uses: actions/upload-artifact@v3
  with:
    name: a11y-report
    path: target/a11y-results/

注意すべき点

  • axe スキャンで違反がないことを、WCAG に完全準拠していることと見なすこと。自動化で確認できるのは基準の約 30〜50%にすぎません。
  • ドキュメント化された修正チケットを添えた範囲限定の .exclude() ではなく、ルールをグローバルに無効化すること。
  • ページの読み込みが完了する前にスキャンすること。非同期コンテンツによって、「違反 0 件」という誤った結果が生じます。
  • incomplete ルールでビルドを失敗させること。これらは自動的に失敗とするのではなく、手動でレビューする必要があります。

参考資料


検証

  • Axe WebDriver の監査に合格 — AxeBuilder.analyze(driver) で重大な違反がゼロ件であること
  • キーボードアクセシビリティを確認済み — Tab キーによるナビゲーションで、すべてのインタラクティブ要素にアクセスできること
  • WCAG 2.2 AA に準拠 — AA レベルのすべてのルールに合格していること(WCAG 2.2 で追加された項目として、フォーカスの非遮蔽、ドラッグ操作、ターゲットサイズの最小要件を含む)

コメント