landmark-role-name-present
regionロールとformロールはアクセシブルな名前を持つ必要があります
role="region"またはrole="form"を指定した要素がアクセシブルな名前を持つことを確認します。名前がなければ、その要素はランドマークとして公開されません。
適用範囲:role属性がregionまたはformに解決され(既知で抽象的でない最初のトークンを大文字と小文字を区別せずに読みます。role="foo region"は該当し、role="search region"はsearchランドマークです)、アクセシビリティツリーに含まれる要素に適用されます。ElementInternalsによってこれらのロールのいずれかを与えられたカスタム要素(this.attachInternals().role)も、別のロールを示すrole属性がなければ対象です。それがその要素の既定のロールであり、ほかにそれを確認するルールはないためです。
期待される結果:要素が、aria-labelledby、aria-label、またはtitleによる空でないアクセシブルな名前を持っています。WAI-ARIAは名前を必須としており(「Authors MUST give each element with role region a brief label」。formも同様です)、名前がなければ要素はランドマークとしてまったく公開されず、作成者が指定したロールが失われます。FAILではなくCANTTELLとして報告されます。この要件はWCAGの達成基準ではなくWAI-ARIAのものだからです。支援技術には単なるコンテナーとして伝わり、誤った情報は届かないため、ランドマークが失われることで誰かが困るかどうかはページによります。
検出結果が報告する内容:
role:名前が必要なロールで、regionまたはformです。
これらのdata.detailsのフィールドは、検出結果を読み解き、再現するのに役立ちます。reasonCodeと、出力スキーマで安定と明記された一部のフィールドを除き、安定した契約ではありません。マイナーリリースで名前が変わったり、なくなったりすることがあるため、これらに依存した実装はしないでください。
例
<div role="region" aria-labelledby="news-h"><h2 id="news-h">Latest news</h2>...</div>
regionは表示されている見出しで名前が付けられているため、「Latest news」という名前のランドマークとして公開されます。
<div role="region"><h2>Latest news</h2>...</div>
名前のないrole="region"です。WAI-ARIAは名前を必須としており、名前がなければ要素はランドマークではなく単なるコンテナーとして公開されます。この要件はWCAGの達成基準に基づくものではないため不合格ではなく、ランドマークが失われることが問題になるかどうかは人が判断します。
<section><h2>Latest news</h2>...</section>
ランドマークを求めるroleはありません。名前のない<section>は、ランドマークになることを意図したものではありません。
確認方法
このルールが判断できない場合はcantTellを報告し、判断を人に委ねます。ルールが投げかける各質問を、理由コードごとに、答えるための手順とともにここに示します。検出結果にも同じ手順がhowToCheckとして、スキャンの言語で含まれます。出力スキーマを参照してください。
LANDMARK_ROLE_NAME_MISSING
- レポートに示された要素を調べ、そのロール(regionまたはform)を控えてください。
- その要素が囲むコンテンツと、冒頭にある表示された見出しを確認してください。
- その領域が、利用者がランドマークとして移動できるべきほど重要かを判断してください。
- そうであれば、たとえば見出しを指すaria-labelledbyによって名前が付けられているか確認してください。
満たす場合:その領域はランドマークである必要がない(ロールは削除できる)か、ランドマークにするための名前が付けられています。
満たさない場合:ランドマークとして意図された領域に名前がないため、ランドマークとして公開されず、regionおよびformロールにはラベルを付けるというWAI-ARIAの要件を満たしません(ベストプラクティス、ARIA13)。