landmark-unique

Les landmarks de même rôle doivent avoir des noms uniques

manualconfiance : mediumgravité : minoroperable

Vérifie que, lorsque deux landmarks ou plus partagent le même rôle, chacun a un nom accessible distinct.

Applicabilité. S’applique dès que deux régions landmark ou plus de la page partagent le même rôle de landmark (banner, contentinfo, main, navigation, complementary, region, form ou search). Un élément personnalisé auquel ses ElementInternals donnent un rôle de landmark (this.attachInternals().role), sans attribut role qui en nomme un autre, est un landmark au même titre qu’un élément natif doté de ce rôle.

Attendu. Parmi les landmarks qui partagent un rôle, chacun a un nom accessible distinct (via aria-label/aria-labelledby ; les landmarks ne tirent pas leur nom de leur contenu). Deux landmarks de même rôle portant le même nom (y compris deux landmarks laissés sans nom) sont impossibles à distinguer pour les utilisateurs de technologies d’assistance qui naviguent par landmarks. Un nom partagé est signalé en cantTell, jamais comme un échec : les ARIA Authoring Practices l’admettent lorsque les landmarks ont le même contenu et la même fonction, comme une pagination répétée au-dessus et au-dessous d’un tableau, ce que seule une personne peut confirmer. Deux landmarks sans nom ont besoin de noms dans tous les cas, et la même tolérance s’applique alors à ces noms.

Ce que rapporte un constat.

  • role : le rôle de landmark que partagent les landmarks en collision, comme navigation.
  • name : le nom qu’ils partagent, en minuscules, espaces fusionnés. Vide lorsqu’aucun n’a de nom.
  • groupSize : le nombre de landmarks de ce rôle qui partagent ce nom.

Ces champs de data.details aident à lire et à reproduire un constat. À part reasonCode et les quelques champs que la page Schéma de sortie donne comme stables, ils ne constituent pas un contrat stable : un champ peut être renommé ou supprimé dans une version mineure, ne vous appuyez donc pas dessus.

Exemples

pass
<nav aria-label="Primary">Primary nav</nav>
<nav aria-label="Footer">Footer nav</nav>

Chaque landmark navigation a un nom accessible distinct.

can't tell
<nav aria-label="Site">First</nav>
<nav aria-label="Site">Second</nav>

Deux landmarks navigation portent exactement le même nom accessible : un utilisateur de lecteur d’écran ne peut pas les distinguer dans la liste des landmarks. Une personne vérifie si leur contenu est identique, le seul cas où les ARIA Authoring Practices admettent un nom partagé.

n/a
<nav aria-label="Primary">Primary nav</nav>
<main>Content</main>

Aucun rôle de landmark n’est utilisé plus d’une fois.

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.

LANDMARK_NOT_UNIQUE

  1. Repérez les repères indiqués par le rapport ; ils partagent un même rôle, comme navigation, et un même nom ou aucun nom.
  2. Regardez chacun d’eux sur la page et comparez leur contenu et leur fonction.
  3. S’ils ont des fonctions différentes (par exemple menu principal et liens de pied de page), vérifiez si chacun a un aria-label ou un aria-labelledby qui les distingue.
  4. Ouvrez le panneau Accessibilité des outils de développement du navigateur et confirmez le nom qu’expose chaque repère.

Réussite. Les repères contiennent le même contenu pour la même fonction (comme une pagination répétée au-dessus et en dessous d’une liste), ou chacun a désormais un nom distinct qui dit ce qu’il est.

Échec. Des repères au contenu différent partagent un nom ou n’en ont aucun : on ne peut pas les distinguer en naviguant par repères (bonne pratique, ARIA13).

Voir le code source