aria-allowed-role

Le rôle explicite doit être autorisé pour son élément hôte

automaticconfiance : highgravité : moderaterobust

Vérifie qu’un attribut role="" explicite fait partie des rôles que la spécification ARIA in HTML autorise pour l’élément hôte (p. ex. role="tab" n’est pas autorisé sur <nav>).

Applicabilité. S’applique aux éléments dotés d’un rôle explicite, valide et non abstrait, lorsque la combinaison élément hôte/attribut fait l’objet d’une contrainte de rôles autorisés dans la table des rôles autorisés de la spécification ARIA in HTML.

Attendu. Le rôle explicite fait partie des rôles que la spécification ARIA in HTML autorise pour cet élément hôte. Signalé en cantTell plutôt qu’en fail : la table des rôles autorisés d’ARIA in HTML est une exigence de conformité pour les auteurs, sans règle ACT ni correspondance WCAG dans aucune source. Le rôle demandé par l’auteur reste celui que les technologies d’assistance exposent ; savoir si la combinaison gêne quelqu’un dépend donc du widget, pas de la table.

Ce que rapporte un constat.

  • role : le rôle explicite non autorisé sur l’élément hôte.

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 role="navigation">...</nav>

role="navigation" est autorisé sur <nav> par la spécification ARIA in HTML (c’est aussi le rôle implicite de l’élément).

can't tell
<nav role="tab">...</nav>

role="tab" ne fait pas partie des rôles qu’ARIA in HTML autorise sur <nav>.

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.

ARIA_ROLE_NOT_ALLOWED_FOR_ELEMENT

  1. Inspectez l’élément indiqué par le rapport et notez sa balise et son attribut role.
  2. Ouvrez le panneau Accessibilité des outils de développement du navigateur et vérifiez quel rôle est exposé.
  3. Appuyez sur Tab pour voir si l’élément reçoit le focus clavier et, s’il s’agit d’un contrôle, essayez de l’actionner avec Entrée ou Espace.
  4. Avec un lecteur d’écran, placez-vous sur l’élément et comparez ce qui est annoncé avec ce que fait l’élément à l’écran.

Réussite. Le rôle annoncé correspond à l’apparence et au comportement de l’élément (ou le rôle none/presentation a été ignoré sur un contrôle focalisable, qui garde son rôle natif).

Échec. Le rôle annoncé contredit le comportement de l’élément, par exemple un bouton focalisable annoncé comme un titre, ce qui ne respecte pas ARIA in HTML et peut ne pas respecter le critère WCAG 4.1.2.

Règles associées

Voir le code source