combobox-name-present

Les combobox ont un nom accessible

automaticWCAG 4.1.2 (A)confiance : highgravité : seriousrobust

Vérifie que les éléments dotés de role="combobox" exposent un nom accessible non vide.

Applicabilité. S’applique aux éléments dont l’attribut role se résout en combobox : son premier jeton désignant un rôle connu, sans tenir compte de la casse, est combobox, donc role="foo combobox" et role="COMBOBOX" comptent, alors que role="link combobox" (un lien) non. L’élément doit être inclus dans l’arbre d’accessibilité. Un élément ayant le rôle implicite correspondant mais sans attribut role est hors périmètre. Un élément personnalisé auquel ses ElementInternals donnent ce rôle (this.attachInternals().role), sans attribut role qui en nomme un autre, est lui aussi dans le périmètre : c’est son rôle par défaut, et aucune autre règle ne le vérifie.

Attendu. L’élément a un nom accessible non vide issu d’aria-label, d’un aria-labelledby qui se résout en texte non vide, ou de title. role="combobox" tire son nom uniquement de l’auteur, donc le texte du sous-arbre n’est jamais accepté : le texte placé dans un widget combobox personnalisé n’est pas exposé de façon fiable comme son nom. Sur un élément pouvant être libellé (<input role="combobox">), un <label> associé compte aussi. Sur un <input> de type texte ou un <textarea>, le placeholder compte en dernier (la dernière source de nom de HTML-AAM) : un libellé réduit à un placeholder relève du critère 3.3.2, pas d’un nom manquant.

Exemples

pass
<div role="combobox" tabindex="0" aria-label="Country"></div>

aria-label nomme la combobox.

fail
<div role="combobox" tabindex="0"></div>

Aucun nom accessible issu d’un mécanisme pris en charge.

Comment vérifier

Quand cette règle ne peut pas trancher, elle renvoie cantTell et laisse la question à une personne. Chaque question qu’elle peut poser figure ici sous son code de raison, avec les étapes pour y répondre. Un constat porte les mêmes étapes dans howToCheck, dans la langue de l’analyse. Voir Schéma de sortie.

name_internals

  1. Inspectez la zone de liste déroulante indiquée par le rapport, un élément personnalisé, et notez son rôle.
  2. Ouvrez le panneau Accessibilité des outils de développement du navigateur et lisez le nom accessible de l’élément.
  3. Avec un lecteur d’écran, placez-vous sur l’élément et écoutez le nom annoncé.

Réussite. L’arbre d’accessibilité montre un nom pour la zone de liste déroulante, défini par ses internals ou autrement, et le lecteur d’écran l’annonce.

Échec. La zone de liste déroulante n’a pas de nom dans l’arbre d’accessibilité et le lecteur d’écran n’annonce que son rôle, ce qui ne respecte pas le critère WCAG 4.1.2.

Voir le code source