listitem-parent-valid

Les éléments de liste doivent se trouver dans un conteneur de liste

automaticWCAG 1.3.1 (A)confiance : highgravité : seriousperceivable

Vérifie que les éléments <li> sont contenus dans un <ul>, un <ol>, un <menu> ou un élément avec role="list".

Applicabilité. S’applique aux éléments <li> qui ont un élément parent.

Attendu. Le parent est un <ul>/<ol>/<menu> sans rôle de substitution (tous trois ont le rôle implicite list), ou un élément avec un rôle explicite "list", "directory" (obsolète, mais parent requis de listitem dans WAI-ARIA 1.2), "presentation" ou "none". Un <li> utilisé hors d’un vrai conteneur de liste (p. ex. comme élément flex/grid générique sous un <div>) n’est pas exposé comme élément de liste aux technologies d’assistance.

Ce que rapporte un constat.

  • reasonCode : LIST_ROLE_OVERRIDDEN lorsque le parent est un <ul>, un <ol> ou un <menu> dont le rôle explicite remplace list (<ul role="tablist">), LISTITEM_INVALID_PARENT sinon. Les deux échouent.
  • parentElement : le nom de balise du parent du <li>, le conteneur dans lequel il se trouve au lieu d’une liste.
  • parentRole : avec LIST_ROLE_OVERRIDDEN, le rôle du parent.
  • parentElement est un contrat stable, contrairement au reste de data.details.

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
<ul>
<li>Apple</li>
</ul>

Le <li> se trouve dans un <ul>.

fail
<div>
<li>Date</li>
</div>

Le <li> n’a aucun ancêtre <ul>/<ol>/role="list".

Voir le code source