identical-links-same-purpose
Los enlaces con el mismo nombre accesible deberían llevar al mismo destino
Marca grupos de enlaces que comparten el mismo nombre accesible pero se resuelven en más de un destino distinto, para revisión manual de si cumplen el mismo propósito.
Ámbito de aplicación. Conjuntos de dos o más elementos a[href], o elementos cuyo atributo role se resuelve en link (su primer token de rol real, sin distinguir mayúsculas de minúsculas), que comparten un nombre accesible no vacío (recortado, con espacios en blanco colapsados, sin distinción de mayúsculas/minúsculas), como en ACT b20e66. Un enlace cuyo nombre no comparte ningún otro enlace no tiene nada con lo que compararse. Un elemento personalizado cuyos ElementInternals le dan el rol link (this.attachInternals().role), sin un atributo role que nombre otro, cuenta como lo hace un elemento nativo con ese rol.
Resultado esperado. Dentro de una página, se espera que los enlaces que comparten el mismo nombre accesible cumplan el mismo propósito (es decir, que se resuelvan en el mismo destino, la URL resuelta completa, incluido cualquier fragmento). Los enlaces con el mismo texto pero distinto destino son habituales y a menudo intencionados en sitios reales (por ejemplo, enlaces "Read more" repetidos en cada tarjeta de artículo), por lo que esta regla se define como type: 'manual' (con tope en cantTell, nunca fail) en lugar de un fallo estricto, marcando un desajuste real de nombre/destino para el criterio humano en vez de adivinar la intención.
Qué informa un hallazgo.
name: el nombre accesible que comparten los enlaces, sin espacios al principio ni al final, con los espacios en blanco colapsados y en minúsculas.href: la URL completa a la que lleva este enlace.distinctDestinationCount: a cuántas URL distintas llevan los enlaces con este nombre, un recuento de 2 o más.linkKind: de qué está hecho este enlace (helpers.getLinkKind):svgpara un<a>en SVG;imagepara un<area>, o un enlace cuyo contenido son solo imágenes (<img>,<svg>,<object>,<canvas>,role="img");compositepara texto y una imagen;texten los demás casos, incluido un enlace sin contenido (nombrado por sus atributos).
Estos campos de data.details ayudan a leer y reproducir un hallazgo. Salvo reasonCode y los pocos campos que Esquema de salida indica como estables, no son un contrato estable: un campo puede cambiar de nombre o desaparecer en una versión menor, así que no construyas sobre ellos.
Ejemplos
<a href="/contact">Contact us</a><a href="/contact">Contact us</a>
Los dos enlaces llamados "Contact us" llevan a la misma página.
<a href="/articles/1">Read more</a><a href="/articles/2">Read more</a>
Ambos enlaces comparten el nombre accesible "Read more" pero se resuelven en destinos distintos.
<a href="/articles/1">Read more: Quarterly results</a><a href="/articles/2">Read more: Product launch</a>
El nombre accesible de cada enlace es distinto, por lo que no hay ningún grupo del mismo nombre dentro del cual comparar destinos.
Cómo comprobarlo
Cuando esta regla no puede decidir, informa cantTell y deja la pregunta a una persona. Cada pregunta que puede plantear aparece aquí bajo su código de motivo, con los pasos para responderla. Un hallazgo lleva los mismos pasos en howToCheck, en el idioma del análisis. Consulta Esquema de salida.
SAME_NAME_DIFFERENT_DESTINATION
- Localizar todos los enlaces con el nombre que da el informe (la lista de enlaces de un lector de pantalla ayuda) y anotar adónde lleva cada uno.
- Abrir cada enlace y comparar las páginas a las que llega.
- Decidir si las páginas tienen la misma finalidad (la misma página con parámetros de seguimiento, o páginas equivalentes) o finalidades distintas.
- Si llevan a páginas de distinto tipo, comprobar si la página ofrece una forma de que los nombres de los enlaces digan más, como un ajuste que muestra el texto completo del enlace. Solo cuenta si se puede activar con el teclado y, activado, el nombre de cada enlace dice adónde lleva.
Se cumple. Todos los enlaces con este nombre llevan a la misma página o a páginas con el mismo propósito, o un ajuste que se puede activar con el teclado hace que el nombre de cada enlace diga adónde lleva.
No se cumple. Enlaces con el mismo nombre, como «Leer más», llevan a páginas con propósitos distintos y nada en la página permite distinguirlos por su nombre, lo que incumple WCAG 2.4.9 (ACT b20e66).