progressbar-name-present

プログレスバーにアクセシブルな名前があります

automaticWCAG 1.1.1 (A)確度:high重大度:seriousperceivable

role="progressbar"を持つ要素が空でないアクセシブルな名前を公開していることを確認します。

適用範囲:role属性がprogressbarに解決される要素に適用されます。既知のロールを指す最初のトークンを大文字と小文字を区別せずに照合した結果がprogressbarであるものを指し、role="foo progressbar"やrole="PROGRESSBAR"は該当しますが、role="link progressbar"(リンク)は該当しません。要素はアクセシビリティツリーに含まれている必要があります。一致する暗黙のロールを持っていてもrole属性がない要素は対象外です。ElementInternalsによってこのロールを与えられたカスタム要素(this.attachInternals().role)も、別のロールを示すrole属性がなければ対象です。それがその要素の既定のロールであり、ほかにそれを確認するルールはないためです。

期待される結果:要素が、aria-label、空でないテキストに解決されるaria-labelledby、またはtitleから、空でないアクセシブルな名前を得ています。role="progressbar"は作成者によってのみ名前が付けられるロールなので、サブツリーのテキストは受け付けません。カスタムのプログレスバーウィジェット内にあるテキストは、その名前として確実に公開されるとは限らないためです。ラベル付け可能な要素(<progress role="progressbar">)では、関連付けられた<label>も認められます。

例

pass
<div role="progressbar" aria-valuenow="50" aria-label="Upload progress"></div>

aria-labelがプログレスバーに名前を付けています。

fail
<div role="progressbar" aria-valuenow="50"></div>

サポートされているどの手段からもアクセシブルな名前が得られません。

確認方法

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

name_internals

  1. レポートに示されたプログレスバーを調べ、カスタム要素であることとそのロールを控えてください。
  2. ブラウザーの開発者ツールでアクセシビリティペインを開き、要素のアクセシブルな名前を読んでください。
  3. スクリーンリーダーで要素に移動し、読み上げられる名前を聞いてください。

満たす場合:アクセシビリティツリーにプログレスバーの名前が表示され(internalsで設定されたものでも、それ以外でもかまいません)、スクリーンリーダーがそれを読み上げます。

満たさない場合:プログレスバーにはアクセシビリティツリー上の名前がなく、スクリーンリーダーはロールしか読み上げないため、WCAG 1.1.1を満たしません。

ソースコードを見る