identical-links-same-purpose

Les liens ayant le même nom accessible devraient mener à la même destination

manualWCAG 2.4.9 (AAA)confiance : lowgravité : minoroperable

Signale, pour revue manuelle, les groupes de liens qui partagent le même nom accessible mais se résolvent vers plusieurs destinations distinctes, afin de vérifier s’ils ont la même fonction.

Applicabilité. Les ensembles de deux éléments ou plus, a[href] ou éléments dont l’attribut role se résout en link (son premier vrai jeton de rôle, sans tenir compte de la casse), qui partagent un nom accessible non vide (espaces retirés aux extrémités, espaces internes fusionnés, casse uniformisée), comme dans ACT b20e66. Un lien dont aucun autre lien ne partage le nom n’a rien à quoi être comparé. Un élément personnalisé auquel ses ElementInternals donnent le rôle link (this.attachInternals().role), sans attribut role qui en nomme un autre, compte comme un élément natif doté de ce rôle.

Attendu. Dans une page, les liens qui partagent le même nom accessible sont censés avoir la même fonction (c.-à-d. se résoudre vers la même destination, l’URL complète résolue, fragment compris). Les liens au même texte mais à destination différente sont courants et souvent intentionnels sur les sites réels (p. ex. des liens « Read more » répétés sur chaque carte d’article) ; cette règle est donc écrite en type: 'manual' (plafonnée à cantTell, jamais fail) plutôt qu’en échec strict : elle signale une vraie discordance nom/destination au jugement humain au lieu de deviner l’intention.

Ce que rapporte un constat.

  • name : le nom accessible que partagent les liens, sans espaces aux extrémités, espaces fusionnés et en minuscules.
  • href : l’URL complète vers laquelle mène ce lien.
  • distinctDestinationCount : le nombre d’URL différentes vers lesquelles mènent les liens portant ce nom, un décompte de 2 ou plus.

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
<a href="/contact">Contact us</a>
<a href="/contact">Contact us</a>

Les deux liens nommés « Contact us » mènent à la même page.

can't tell
<a href="/articles/1">Read more</a>
<a href="/articles/2">Read more</a>

Les deux liens partagent le nom accessible « Read more » mais se résolvent vers des destinations différentes.

n/a
<a href="/articles/1">Read more: Quarterly results</a>
<a href="/articles/2">Read more: Product launch</a>

Chaque lien a un nom accessible distinct, il n’y a donc aucun groupe de même nom dans lequel comparer les destinations.

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.

SAME_NAME_DIFFERENT_DESTINATION

  1. Repérez tous les liens portant le nom indiqué par le rapport (la liste des liens d’un lecteur d’écran aide) et notez où chacun mène.
  2. Ouvrez chaque lien et comparez les pages atteintes.
  3. Déterminez si les pages servent le même objectif (la même page avec des paramètres de suivi, ou des pages équivalentes) ou des objectifs différents.
  4. S’ils mènent à des pages de natures différentes, vérifiez si la page propose un moyen de rendre les noms des liens plus explicites, comme un réglage qui affiche le texte complet des liens. Cela ne compte que s’il peut être activé au clavier et que, une fois activé, chaque nom de lien dit où il mène.

Réussite. Chaque lien portant ce nom mène à la même page ou à des pages qui ont la même fonction, ou un réglage activable au clavier fait que chaque nom de lien dit où il mène.

Échec. Des liens de même nom, comme « Lire la suite », mènent à des pages aux fonctions différentes et rien dans la page ne permet de les distinguer par leur nom, ce qui ne respecte pas le critère WCAG 2.4.9 (ACT b20e66).

Voir le code source