aria-required-children
コンテナーロールは必須の子ロールを少なくとも1つ所有する必要があります
「required owned elements」の項目が定められたコンテナーロール(list、listbox、menu、radiogroup、table、grid、tablist、tree、rowなど)が、許容される所有ロールを持つ子孫またはaria-ownsで参照される要素を少なくとも1つ含むことを確認します。
適用範囲:明示的で有効な、抽象的でないロールが、「required owned elements」の項目が定められたコンテナーロール(list、listbox、menu、menubar、radiogroup、rowgroup、table、grid、treegrid、tablist、tree、row)のいずれかである要素に適用されます。コンテナーには明示的なロールが必要ですが、所有される要素は、ネイティブ要素がタグのロールを持つのと同じように、カスタム要素のElementInternals(this.attachInternals().role)からロールを得てもかまいません。
期待される結果:少なくとも1つの子孫、またはaria-ownsで参照される要素が、そのコンテナーロールで許容される所有ロールのいずれかを持っています。そうした子孫を持たず、テキストを直接、または汎用的なラッパー(ロールのない<span>や<div>)を介して所有するコンテナーはFAILになります。必須の子があるべき場所にテキストがあるためで、項目にロールがないリストがその例です(ACT bc4a75、Failed Example 1)。何も所有しないコンテナーについては確認を求めます(CANTTELL)。誤った情報は伝えません。空のrole="list"は項目のないリストとして読み上げられ、実際にそのとおりであり、スクリプトが中身を入れる可能性もあるからです。コンテナーが所有するコンテンツが有効かどうかはaria-prohibited-childrenが判定し、そちらのルールは引き続き失敗を報告します。そのため、本当に誤って記述された構造(リスト項目に混じったrole="button"や、普通のボタンで構成されたtablist)は、これまでと同じ強さで検出されます。ネイティブHTMLの対応する要素もすでにこの方式です。このルールセットでは空の<ul>を失敗とするものはなく、list-children-validは実際に存在する子だけを判定します。
検出結果が報告する内容:
role:コンテナーのロールです。requiredOwnedRoles:コンテナーに、そのロールを持つ子が少なくとも1つ必要なロールです。各項目はロール名です。
これらのdata.detailsのフィールドは、検出結果を読み解き、再現するのに役立ちます。reasonCodeと、出力スキーマで安定と明記された一部のフィールドを除き、安定した契約ではありません。マイナーリリースで名前が変わったり、なくなったりすることがあるため、これらに依存した実装はしないでください。
例
<ul role="list"><li>Item</li></ul>
listロールが、listitemロールの子を少なくとも1つ所有しています。
<div role="list"></div>
空のrole="list"が必須の子ロールを1つも所有していません。項目のないリストとして読み上げられ、実際そのとおりですが、確認する価値はあります。
確認方法
このルールが判断できない場合はcantTellを報告し、判断を人に委ねます。ルールが投げかける各質問を、理由コードごとに、答えるための手順とともにここに示します。検出結果にも同じ手順がhowToCheckとして、スキャンの言語で含まれます。出力スキーマを参照してください。
ARIA_REQUIRED_CHILD_MISSING
- レポートに示されたコンテナーを調べ、そのロールと必要な子のロール(listならlistitem、listboxならoptionなど)を控えてください。
- 画面に表示されている内容を見て、空であるか、画像、アイコン、コントロールを含んでいるか確認してください。
- ページを操作し(メニューを開く、結果を読み込むなど)、必要なロールを持つ子が後から追加されるか確認してください。
- ブラウザーの開発者ツールでアクセシビリティペインを開き、含まれているもののロールを確認してください。
満たす場合:コンテナーは空で何も伝えていないか、表示している項目が必要なロールを持っています。
満たさない場合:必要な子のロールを持たない項目(画像、アイコン、コントロール)が表示されており、構造が伝わらないため、WCAG 1.3.1を満たしません(ACT bc4a75)。