aria-roles-valid

role属性は有効で抽象的でないARIAロールである必要があります

automaticWCAG 1.3.1, 4.1.2 (A)確度:high重大度:seriousrobust

明示的なrole=""属性が、実在する抽象的でないWAI-ARIAロールに解決されることを確認します。

適用範囲:合成DOM内で、空でないrole=""属性を持つすべての要素に適用されます。

期待される結果:少なくとも1つのロールトークンが、具体的で抽象的でないARIAロールを指しています。どのトークンも該当しない場合に要素が何にフォールバックするかで判定します。

  • ロールを持たないホスト(div、span、カスタム要素)ではFAIL。genericとして公開されたままになり、作成者が意図したロールは誰にも伝わりません。
  • 要素がネイティブのロールを持つ場合(<button>、<nav>、<a href>)はCANTTELL。アクセシビリティツリーではそのロールが使われ続けます。ACT 674b10は4.1.2を副次的な要件としてのみ挙げ、「暗黙のロールによって満たされる」としているため、不正なトークンは報告する価値がありますが、それ自体が達成基準の不適合ではありません。

検出結果が報告する内容:

  • role:role属性の最初のトークンです。属性内のどのトークンも既知のロールでないか、既知のものがすべて抽象ロールです。
  • nativeRole(cantTellの場合):要素のネイティブのロールで、支援技術はこれを使い続けます。

これらのdata.detailsのフィールドは、検出結果を読み解き、再現するのに役立ちます。reasonCodeと、出力スキーマで安定と明記された一部のフィールドを除き、安定した契約ではありません。マイナーリリースで名前が変わったり、なくなったりすることがあるため、これらに依存した実装はしないでください。

例

pass
<div role="button">Click</div>

"button"は実在する具体的なARIAロールです。

fail
<div role="buton"></div>

"buton"は定義されたARIAロールのトークンではありません(タイプミス)。

確認方法

このルールが判断できない場合はcantTellを報告し、判断を人に委ねます。ルールが投げかける各質問を、理由コードごとに、答えるための手順とともにここに示します。検出結果にも同じ手順がhowToCheckとして、スキャンの言語で含まれます。出力スキーマを参照してください。

ARIA_ROLE_ABSTRACT

  1. レポートに示された要素を調べ、抽象ロール(landmark、widget、commandなど)とそのタグを控えてください。
  2. ブラウザーの開発者ツールでアクセシビリティペインを開き、代わりに公開されているロール(ネイティブのロール)を確認してください。
  3. ネイティブのロールが、指定された抽象ロールの具体的な種類であるか(landmarkに対するnav、widgetに対するbutton)を判断してください。

満たす場合:ネイティブのロールは作成者が指定したものの具体的な形であるため、要素は引き続き正しく公開されています(ただし抽象ロールは削除してください)。

満たさない場合:ネイティブのロールが意図と一致しない(landmarkと指定されたボタンなど)ため、意図されたロールが公開されることはなく、WCAG 4.1.2を満たしません(ACT 674b10)。

ARIA_ROLE_INVALID

  1. レポートに示された要素を調べ、不明なロールの値とそのタグを控えてください。
  2. どのロールが意図されていたかを推測してください(たとえば「buton」ならbutton)。
  3. ブラウザーの開発者ツールでアクセシビリティペインを開き、代わりに公開されているロール(要素のネイティブのロール)を確認してください。
  4. 公開されているロールを、意図されたロールおよび要素の動作と比べてください。

満たす場合:公開されているネイティブのロールが意図されたものであるため、利用者には正しいロールが伝わります(ただし誤字は修正してください)。

満たさない場合:意図されたロールと公開されているロールが異なるため、利用者に誤ったロールが伝わり、WCAG 4.1.2を満たしません(ACT 674b10)。

ソースコードを見る