heading-quality
Le texte des titres devrait être descriptif, pas un texte de remplissage
Signale les titres dont le nom accessible est un texte de remplissage plutôt qu’une description du contenu qui suit : un mot générique (« Heading », « Untitled »), un emplacement de modèle numéroté (« Section 2 »), un nom de fichier ou une URL. Les expressions anglaises sont toujours reconnues, et les allemandes, espagnoles, françaises ou japonaises lorsque le titre est dans cette langue.
Applicabilité. Éléments ayant un rôle de titre (<h1>-<h6> natifs, ou tout élément dont l’attribut role se résout en heading : le premier jeton désignant un rôle connu, sans tenir compte de la casse) inclus dans l’arbre d’accessibilité et dotés d’un nom accessible non vide. Un titre sans aucun nom relève d’empty-heading, pas de cette règle. Un élément personnalisé auquel ses ElementInternals donnent le rôle heading (this.attachInternals().role), sans attribut role qui en nomme un autre, compte comme un élément natif doté de ce rôle.
Attendu. Le nom accessible du titre, normalisé (espaces fusionnés, casse uniformisée, ponctuation finale supprimée), n’est pas un texte de remplissage oublié dans le balisage : un mot générique connu (« heading », « title », « untitled », « lorem ipsum », ...), un emplacement de modèle numéroté (« Heading 2 », « Section 3 »), un nom de fichier ou une URL. Aucun de ces textes ne décrit le sujet ni l’objet du contenu qu’ils introduisent.
Ce que rapporte un constat.
name: le nom accessible du titre, espaces fusionnés.normalizedName: le même nom tel qu’il a été comparé : en minuscules, ponctuation finale retirée.
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
<h3>Heading</h3><p>We are open Monday through Friday from 10 to 16.</p>
Le texte du titre est le mot de remplissage générique « Heading » lui-même, pas une description de la section.
<h3>Opening hours</h3><p>We are open Monday through Friday from 10 to 16.</p>
Le titre nomme son véritable sujet.
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.
FILENAME_LIKE_HEADING
- Repérez le titre indiqué par le rapport et lisez son texte.
- Lisez le contenu qui le suit, jusqu’au titre suivant.
- Déterminez si ce fichier est le sujet de la section (un fichier proposé au téléchargement) ou un nom resté par erreur, comme le nom de fichier d’une image.
Réussite. Le nom de fichier est le vrai sujet de la section, comme le document qu’elle propose.
Échec. Le titre est un nom de fichier resté par erreur (comme IMG_1234.jpg) qui ne décrit pas le contenu qui le suit, ce qui ne respecte pas le critère WCAG 2.4.6 (G130).
PLACEHOLDER_HEADING_TEXT
- Repérez le titre indiqué par le rapport et lisez son texte.
- Lisez le contenu qui le suit, jusqu’au titre suivant.
- Déterminez si le titre décrit ce contenu ou s’il s’agit d’un texte de modèle comme « Titre », « Lorem ipsum » ou « Sans titre ».
Réussite. Le titre nomme le sujet du contenu qui le suit (un « Étape 1 » numéroté au-dessus de la première étape convient).
Échec. Le titre est un texte de remplacement qui ne décrit pas le contenu qui le suit, ce qui ne respecte pas le critère WCAG 2.4.6 (G130).
URL_LIKE_HEADING
- Repérez le titre indiqué par le rapport et lisez son texte.
- Lisez le contenu qui le suit, jusqu’au titre suivant.
- Déterminez si l’adresse web est le sujet de cette section (un site évalué ou répertorié) ou si elle tient lieu de vrai titre.
Réussite. L’adresse est le sujet de la section : elle décrit donc le contenu qui la suit.
Échec. L’adresse ne décrit pas le contenu qui la suit, ce qui ne respecte pas le critère WCAG 2.4.6 (G130).