Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automating Web Accessibility Testing with AI Ag...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Gaudiy Dev Gaudiy Dev
September 06, 2025
0

Automating Web Accessibility Testing with AI Agents

フロントエンドカンファレンス北海道2025 登壇資料 by kotori(https://x.com/maminami_minami

Avatar for Gaudiy Dev

Gaudiy Dev

September 06, 2025
Tweet

Transcript

  1. 自己紹介 • kotori ( @maminami_minami) • 株式会社Gaudiy Enabling Team •

    札幌出身! • 趣味: 酒・アニメ・声優・お絵描き
  2. 全社的なAI活用の推進 • 週次の全社MTGで職種を横断した活用事例の共有 • 40,000円/月 まで経費で任意のAIツールを利用可能 (2025年9月時 点) • Claude

    Teamプラン Premiumシート • 先日TeamプランでもClaude Codeが利用可能に🔥 • プロダクト開発に携わるエンジニアのほとんどが利用
  3. アプローチ • AI以外の主要なツール • eslint-plugin-jsx-a11y • Storybook Test runner +

    axe-playwright • @storybook/addon-a11y • axe DevTools • 自動化 with AI エージェント • a11y試験 • レポート作成
  4. Storybook Test runner + axe-playwright • Storybook Test runner •

    .stories.tsx ファイルをテストファイルとみなす • Story のレンダリングと Play function を実行しチェック • axe-playwright • Playwright + axe-core を組み合わせたa11yテストライブラリ • WebアプリのWCAGコンプライアンスをチェック
  5. Storybook Coverage • .stories.tsx ファイルを起点とした、Component の coverage を収集・CIでチェック • 新規に

    Component を追加した際は必ず Storybook 上で確認で きることを担保 • 必ずしも Component と Story が1対1で存在する必要はなく、先 祖の Component の Story から確認可能であればパス
  6. Storybook Coverage • .stories.tsx ファイルを起点とした、Component の coverage を収集・CIでチェック • 新規に

    Component を追加した際は必ず Storybook 上で確認で きることを担保 • 必ずしも Component と Story が1対1で存在する必要はなく、先 祖の Component の Story から確認可能であればパス a11yチェックで広範囲をカバー 詳細: https://zenn.dev/gaudiy_blog/articles/97e924e39d02ae#storybook-coverage
  7. 最初の試み:Claude Desktop • Playwright MCP • 単体でa11yチェックする機能はない • axe-core等のスクリプトをPlaywright経由で注入する必要… •

    a11yチェック MCP • WCAGベースでチェックできるものは野良のツールのみ • 一応はチェック可能だが複数の課題あり (後述
  8. 構成 • Claude Code: a11yテストの実行と結果の分析 • Custom MCP🛠 • Playwright:

    マルチブラウザ対応, PC/モバイル ビューポート • axe-core: WCAG基準自動検証 • カスタム評価モジュール • Playwright MCP: a11y問題点の分析
  9. 評価モジュール実装 • 各WCAG項目に特化した評価ロジックを実装 • axe-core だけでの評価には課題 • 誤検出 (False Positive)

    の多さ • e.g. 「色だけで情報を伝えてはいけない」-> axe-coreは色の使用自体を違反 と判定しがち • 文脈を考慮しない • N/A判定 • 実際のユーザー操作をシミュレートした上で判定 • e.g. キーボード操作などによるフォーカストラップのテスト
  10. 評価モジュール実装 - 例 • 2.2.1 タイミング調整可能 • 課題: 時間制限機能の存在自体を検出できない •

    解決: セッションタイムアウト、カウントダウン、自動リダイレクトを動的に検出 • 効果: 時間制限がないページを自動的にN/A判定 • 3.3.3 エラー修正の提案 • 課題: エラーメッセージの質を判定できない • 解決: わざと誤入力→エラー内容を分析→修正提案の有無を判定 • 効果: 「メールアドレスが不正です」vs「@を含む形式で入力」を区別 • 4.1.3 ステータスメッセージ • 課題: 動的な状態変化の通知を検証できない • 解決: ライブリージョンを監視→アクション実行→通知発生を確認 • 効果: 「カートに追加しました」等の通知を自動検証
  11. 余熱NIGHT from FEC北海道&東京2025 • 日時: 2025年9月30日(火) 19:00〜 • 会場: Datadog

    Japan Tokyo オフィス • 参加費: 無料 • LT登壇者を募集中!! • 感想・現地レポ • 深掘り or 横展開 #FEC余熱NIGHT