Auditer
Méthode de calcul
Cette page explique précisément comment l'outil décide du statut de chaque critère. Elle sert à justifier un résultat auprès d'un client ou d'un auditeur.
Sources
- Référentiel : fichier officiel
criteres.jsonde la DINUM (106 critères, tests et références). - Méthodologie de test : fichier officiel
methodologies.jsonde la DINUM, affiché dans l'audit guidé. - Moteur de règles : axe-core, dont chaque règle est étiquetée avec les tests RGAA qu'elle couvre (par exemple
RGAA-1.1.1). Seules ces règles sont exécutées. - Contrôles complémentaires propres à l'outil (voir plus bas).
Statut d'un critère sur une page
Pour chaque critère, l'outil réunit les résultats d'axe-core et de ses contrôles, puis applique dans l'ordre :
- Non conforme si au moins une erreur certaine a été trouvée.
- Sinon non applicable si la page ne contient aucun élément concerné (voir « Applicabilité »), ou si un test a établi que le critère ne s'applique pas (par exemple aucun lien vers un plan du site).
- Sinon conforme si le critère fait partie des critères qu'une machine sait trancher seule, et qu'aucun point à vérifier n'a été relevé.
- Sinon conforme si un test automatique l'a établi par une règle heuristique (voir « Décisions automatiques à confirmer »), sans point à vérifier.
- Sinon à vérifier.
Un verdict de l'auditeur (audit guidé ou menu « Statut après vérification ») remplace toujours ce résultat automatique.
Critères tranchés automatiquement
Ces 9 critères sont déclarés conformes avec certitude quand aucune erreur ni aucun point à vérifier n'est trouvé : 2.1 (titre des cadres), 6.2 (intitulé des liens), 8.1 (type de document), 8.3 (langue par défaut), 8.4 (code de langue valide), 8.5 (titre de page), 8.8 (codes des changements de langue), 11.1 (étiquette des champs), 13.9 (orientation de l'écran).
Pour deux d'entre eux, le moteur axe-core est plus permissif que le RGAA. Grilla ajoute alors sa propre vérification, alignée sur la méthodologie officielle :
- 11.1 : axe-core accepte un champ nommé seulement par son texte d'exemple (
placeholder) ou par un<label>qui l'entoure. La méthodologie RGAA ne reconnaît ni l'un ni l'autre : elle demande un<label>relié au champ parforetid,aria-labelledby,aria-labeloutitle(tests 11.1.1 et 11.1.2). Ces deux cas rendent le critère non conforme (règlesplaceholder-seuletlabel-sans-for). Le test 11.1.3 (une étiquette visible ou accolée au champ) ne peut pas être tranché par une machine : si un champ est nommé pararia-label,aria-labelledby,titleou un label masqué, le critère reste à vérifier (règleetiquette-non-visible). Le 11.1 n'est donc déclaré conforme automatiquement que si chaque champ a un<label for>visible. - 2.1 : axe-core accepte un cadre nommé par
aria-label,aria-labelledbyou un rôle de présentation. Le RGAA exige un attributtitlesur chaque cadre (iframe,frame). Sans lui, le critère est non conforme (règlecadre-sans-title).
Décisions automatiques à confirmer
D'autres critères sont tranchés par des tests qui reproduisent le geste d'un auditeur (navigation au clavier, zoom) ou par des règles heuristiques. Ils comptent dans le taux, mais le rapport les signale par la mention auto, avec leur justification, pour que l'auditeur les confirme :
| Critère | Test | Conforme si | Non conforme ou à vérifier si |
|---|---|---|---|
| 10.4 | Page affichée comme avec un zoom à 200 % (fenêtre de 640 × 400) | Aucun texte coupé | Texte coupé (erreur) ; texte tronqué par des points de suspension (à vérifier) |
| 10.12 | Interligne 1,5, espacement des lettres 0,12 em, des mots 0,16 em, des paragraphes 2 em | Aucun texte coupé | Idem |
| 10.7 | Parcours au clavier avec Tab (30 éléments au plus) ; comparaison de l'écran avec et sans focus | L'écran change pour chaque élément | Aucun changement visible, ou élément invisible (opacité nulle) au focus : erreur |
| 12.9 | Même parcours | Le focus avance toujours | Le focus reste bloqué : erreur |
| 12.8 | Même parcours | L'ordre suit l'ordre visuel de la page | tabindex positif, ou l'ordre remonte souvent dans la page : à vérifier |
| 8.6 | Titre de page comparé au titre principal (h1) | Le titre reprend un mot significatif du h1 | Titre générique (« Accueil », « Document »…) ou nom de domaine : erreur |
| 6.1 | Intitulés de liens | Aucun intitulé générique ni ambigu | « En savoir plus », « cliquez ici »… : à vérifier avec leur contexte ; même intitulé vers plusieurs destinations : à vérifier |
| 12.6 | Régions de la page | Région principale et navigation ou en-tête balisées, ou liens d'accès rapide | Ni l'un ni l'autre : à vérifier |
| 12.1 | Systèmes de navigation | Menu, plus moteur de recherche ou plan du site | Sinon : à vérifier |
| 9.1 | Hiérarchie des titres | Un h1, aucun saut de niveau | Sinon : à vérifier ou erreur |
Pour éviter les fausses alertes, les tests de zoom et d'espacement ne signalent que le texte que ces réglages coupent : un texte déjà masqué dans l'affichage normal (bouton-icône, titre volontairement tronqué) n'est pas compté. Le test du focus compare tout l'écran, pour reconnaître aussi un indicateur dessiné autour d'une carte entière ou par un pseudo-élément.
Applicabilité
Un critère est jugé non applicable quand la page ne contient pas ce sur quoi il porte :
| Critères | Applicables si la page contient |
|---|---|
| 1.x Images | Une image, une zone d'image réactive, un SVG, un canvas, un objet |
| 1.5 CAPTCHA | Un CAPTCHA connu (reCAPTCHA, hCaptcha, Turnstile…) |
| 1.9 Légendes | Un élément figure |
| 2.x Cadres | Un iframe ou un frame |
| 4.x Multimédia | Une vidéo, un son, ou un lecteur YouTube, Vimeo, Dailymotion, PeerTube |
| 5.1, 5.2 | Un tableau de données complexe (fusion de cellules) |
| 5.3, 5.8 | Un tableau de mise en forme (sans en-tête ni titre) |
| 5.4 à 5.7 | Un tableau de données |
| 6.x Liens | Un lien |
| 7.1 à 7.3 Scripts | Un composant interactif personnalisé (rôle ARIA de widget, aria-expanded, onclick, tabindex sur un élément non interactif, dialog, details) |
| 7.4 | Un champ de formulaire |
| 7.5 | Un champ de formulaire ou une zone de message dynamique (role=status, alert, aria-live) |
| 8.8 | Un attribut lang ailleurs que sur la balise html |
| 8.10 | Un attribut dir |
| 9.4 | Une citation (q, blockquote) |
| 11.x Formulaires | Un champ de saisie ; 11.8 une liste déroulante ; 11.13 un champ de données personnelles |
| 12.3, 12.4 | Un lien vers un plan du site |
| 12.5 | Un moteur de recherche |
| 13.1 | Un rafraîchissement ou une redirection automatique (meta refresh) |
| 13.2 | Un lien qui ouvre une nouvelle fenêtre |
| 13.3, 13.4 | Un lien vers un document bureautique (PDF, Word, tableur…) |
| 13.7, 13.8 | Une animation, une vidéo, un carrousel, un GIF |
Les autres critères (couleurs, structure, présentation, navigation…) sont toujours applicables.
Contrôles complémentaires
En plus d'axe-core, l'outil vérifie :
| Critère | Contrôle | Résultat |
|---|---|---|
| 8.1 | Présence d'un doctype | Erreur si absent |
| 9.1 | Présence de titres h1 à h6 ; sauts de niveau ; présence d'un h1 | Erreur si aucun titre, sinon point à vérifier |
| 10.1 | Balises et attributs de présentation listés dans le glossaire RGAA (font, center, bgcolor, align…) | Erreur |
| 10.11 | Défilement horizontal à 320 pixels de large | Erreur |
| 7.1 et 7.3 | Éléments cliquables par script (onclick) qui ne sont ni des liens ni des boutons, sans rôle ou sans possibilité de focus clavier | Erreur |
| 7.4 | Champs qui déclenchent un script à la modification | Point à vérifier |
| 12.7 | Lien vers le contenu parmi les 5 premiers éléments focalisables | Erreur si absent |
| 13.2 | Liens qui ouvrent une nouvelle fenêtre | Point à vérifier |
Taux de conformité
- Page : critères conformes ÷ (conformes + non conformes + à vérifier). Les « à vérifier » comptent comme non conformes : c'est le pire cas. La borne haute de la fourchette les compte comme conformes.
- Site (méthode DINUM) : un critère est non conforme s'il l'est sur une page au moins, non applicable s'il l'est sur toutes, à vérifier s'il l'est sur une page au moins, conforme sinon. Taux global = conformes ÷ applicables.
- Taux moyen : moyenne des taux des pages.
Limites connues
- Les contrastes de texte posé sur une image ou un dégradé ne sont pas mesurables automatiquement : ils ressortent « à vérifier ».
- La pertinence d'une alternative, d'un titre ou d'un intitulé ne peut pas être jugée par une machine.
- L'analyse porte sur l'état de la page au chargement : les contenus qui apparaissent après une action (menu, modale, onglet) ne sont pas explorés.
- Le parcours au clavier s'arrête à 30 éléments ; la justification indique s'il a couvert toute la page.
- Une animation pilotée par JavaScript (carrousel) peut faire croire à un changement visible au focus.
- Les limites de temps créées en JavaScript (déconnexion après inactivité) ne sont pas détectées : 13.1 est jugé non applicable sans rafraîchissement automatique, à confirmer.
Pré-analyse IA
Pour les critères qui restent à vérifier, une pré-analyse par intelligence artificielle peut proposer un verdict. Ces suggestions ne sont jamais appliquées automatiquement et ne comptent pas dans le taux tant que l'auditeur ne les a pas acceptées. Voir Assistants IA.
- L'audit d'une page ne dit rien des autres pages du site.