Couverture : qui décide quoi sur les 106 critères
Chaque critère du RGAA 4.1.2 est classé selon ce qui peut rendre un verdict : une règle automatique, ou un jugement. Ces chiffres sont calculés depuis le code d’ultra11y 5.55.2 à chaque publication, pas estimés.
- 2 / 106entièrement déterministes : conforme et non conforme sans IA (8.3 et 8.5)
- 22 / 106où une règle peut prouver une non-conformité ; le « conforme » reste un jugement
- 30 / 106où des règles donnent des indices ; l’IA tranche
- 52 / 106sans aucune règle : jugement de l’IA ou d’un humain seul
Le niveau d’automatisation
Un « conforme » est plus exigeant qu’un « non conforme » : une règle qui détecte un défaut ne prouve pas l’absence de défaut. D’où quatre niveaux, du plus au moins automatisé.
Un carré par critère, du plus au moins automatisé. Sur 106 critères, une règle peut prouver une non-conformité dans 24.
- 2 critères · Déterministe — conforme et non conforme décidés sans IA
- 22 critères · Non-conformité prouvée — une règle prouve le défaut ; le « conforme » reste un jugement
- 30 critères · Indices — des règles signalent des candidats, l’IA tranche
- 52 critères · Jugement seul — aucune règle ne fournit de preuve : l’IA ou un humain juge
Même classement que la colonne « routage » de rgaa-automation.md. Une recommandation non normative ne compte jamais comme preuve : le critère 6.1, qui n’a qu’une recommandation, est classé « jugement seul ».
Les 106 critères par thématique
1. Images
4. Multimédia
5. Tableaux
8. Éléments obligatoires
9. Structuration de l’information
10. Présentation de l’information
11. Formulaires
- 11.1 : Non-conformité prouvée
- 11.2 : Non-conformité prouvée
- 11.3 : Jugement seul
- 11.4 : Jugement seul
- 11.5 : Non-conformité prouvée
- 11.6 : Non-conformité prouvée
- 11.7 : Jugement seul
- 11.8 : Non-conformité prouvée
- 11.9 : Non-conformité prouvée
- 11.10 : Indices
- 11.11 : Jugement seul
- 11.12 : Jugement seul
- 11.13 : Indices
12. Navigation
Chaque case renvoie à la ligne du critère dans le tableau complet, en bas de page. La couleur et le symbole (★ déterministe, ▲ non-conformité prouvée, ◆ indices, aucun symbole pour le jugement seul) donnent le niveau. Le bouton actif entoure les critères de la source choisie.
Ce que chaque source apporte
Pour chaque source, le nombre de critères où elle prouve une non-conformité, puis le nombre où elle donne seulement un indice. Un même critère peut figurer chez plusieurs sources.
| Source | NC prouvée | Indice seul | Total | Répartition |
|---|---|---|---|---|
| Moteur statiquelit le code source, sans navigateur | 20 | 24 | 44 | 20 sur 44 prouvées |
| axe-corependant scan, dans un vrai navigateur | 9 | 17 | 26 | 9 sur 26 prouvées |
| Sondes navigateurfocus, zoom, espacement, survol | 1 | 6 | 7 | 1 sur 7 prouvées |
| Rendu (capture)styles calculés, capture d’écran | 0 | 5 | 5 | 0 sur 5 prouvées |
| Règles spécifiques au RGAAécrites pour le RGAA, hors WCAG | 3 | 0 | 3 | 3 sur 3 prouvées |
Le moteur statique
Il lit le code source, sans navigateur. C’est la seule source qui tourne partout : sur un poste, dans un hook de commit, en CI. Ses 102 règles couvrent les défauts que le code montre à coup sûr, plus 7 règles qui suivent les imports entre fichiers (--graph).
axe-core
axe-core est une bibliothèque de tests d’accessibilité très utilisée. ultra11y la lance pendant scan, dans un vrai navigateur. 69 de ses règles sont reliées à des critères RGAA. axe-core ne tourne pas sans navigateur : en CI, il faut une page servie.
Et Lighthouse ?
Lighthouse n’est pas intégré à ultra11y. Son onglet accessibilité exécute une partie des règles d’axe-core. Il n’apporterait donc aucun critère que axe-core ne couvre déjà : c’est axe-core, en plus restreint.
Les sondes navigateur et le rendu
Les sondes agissent sur la page : tabulation, zoom à 200 %, espacement du texte, survol. Le rendu lit une copie de la page (styles calculés, capture d’écran) sans navigateur actif : contraste mesuré sur la capture, liens repérés par la seule couleur.
Les règles spécifiques au RGAA
Le RGAA exige quelques points que les WCAG ne vérifient pas tels quels : un doctype présent, une valeur de dir valide, un optgroup étiqueté. Le paquet RGAA d’ultra11y embarque 4 règles écrites pour lui, sans code, dans un format déclaratif.
L’IA
L’IA intervient sur 104 critères sur 106 pour dire « conforme ». C’est un choix, pas un manque : le moteur refuse de conclure « conforme » sur un silence. L’IA reçoit les preuves collectées, doit citer ce qu’elle a lu, et ses verdicts passent par check et verify.
Bien couvert, mal couvert
Bien couvert
- Étiquettes de formulaire (11.1)
- Langue et titre de page (8.3, 8.5)
- En-têtes de tableaux (5.7)
- Titres des cadres, listes, code valide
Mal couvert aujourd’hui
- Contrastes (3.2, 3.3) : des indices, verdict à confirmer
- Zoom, affichage sur petit écran, survol (10.4, 10.11, 10.13) : demandent le scan
- Pertinence d’une alternative, d’un intitulé de lien : l’IA juge
- Multimédia (thématique 4), navigation et consultation (thématiques 12 et 13) : surtout du jugement
Parmi les 52 critères sans règle, beaucoup portent sur un contenu que personne ne voit dans le code : transcription d’une vidéo, audiodescription, pertinence d’une alternative, cohérence de la navigation d’une page à l’autre. Ce sont les vrais « non gérés » automatiquement.
Annexe : les 106 critères
Pour chaque critère : son niveau, les sources qui le touchent, les règles décisives (qui prouvent une non-conformité) et les règles qui donnent un indice. Les identifiants de règles sont ceux du moteur ; axe: désigne une règle axe-core, dyn- une sonde, pack:rgaa: une règle spécifique au RGAA.
| Critère | Intitulé | Niveau | Sources | Règles décisives | Indices |
|---|---|---|---|---|---|
| 1.1 | Chaque image porteuse d’information a-t-elle une alternative textuelle ? | NC prouvée | Moteur statique, axe-core | axe:area-alt, axe:input-image-alt, input-image-alt-missing | axe:image-alt, axe:object-alt, axe:role-img-alt, axe:svg-img-alt, canvas-fallback-missing, chart-no-accessible-name, img-alt-missing, object-embed-no-name |
| 1.2 | Chaque image de décoration est-elle correctement ignorée par les technologies d’assistance ? | Indices | Moteur statique, axe-core | — | axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed |
| 1.3 | Pour chaque image porteuse d’information ayant une alternative textuelle, cette alternative est-elle pertinente (hors cas particuliers) ? | Jugement seul | — | — | — |
| 1.4 | Pour chaque image utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative permet-elle d’identifier la nature et la fonction de l’image ? | Jugement seul | — | — | — |
| 1.5 | Pour chaque image utilisée comme CAPTCHA, une solution d’accès alternatif au contenu ou à la fonction du CAPTCHA est-elle présente ? | Jugement seul | — | — | — |
| 1.6 | Chaque image porteuse d’information a-t-elle, si nécessaire, une description détaillée ? | Jugement seul | — | — | — |
| 1.7 | Pour chaque image porteuse d’information ayant une description détaillée, cette description est-elle pertinente ? | Jugement seul | — | — | — |
| 1.8 | Chaque image texte porteuse d’information, en l’absence d’un mécanisme de remplacement, doit si possible être remplacée par du texte stylé. Cette règle est-elle respectée (hors cas particuliers) ? | Jugement seul | — | — | — |
| 1.9 | Chaque légende d’image est-elle, si nécessaire, correctement reliée à l’image correspondante ? | NC prouvée | Moteur statique | figure-caption-unassociated | — |
| 2.1 | Chaque cadre a-t-il un titre de cadre ? | NC prouvée | Moteur statique, axe-core | axe:frame-title, iframe-title-missing | axe:frame-title-unique |
| 2.2 | Pour chaque cadre ayant un titre de cadre, ce titre de cadre est-il pertinent ? | Jugement seul | — | — | — |
| 3.1 | Dans chaque page web, l’information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ? | Jugement seul | — | — | — |
| 3.2 | Dans chaque page web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé (hors cas particuliers) ? | Indices | Moteur statique, axe-core, Rendu (capture) | — | axe:color-contrast, axe:color-contrast-enhanced, contrast-literal, rendered-contrast, rendered-contrast-pixel |
| 3.3 | Dans chaque page web, les couleurs utilisées dans les composants d’interface ou les éléments graphiques porteurs d’informations sont-elles suffisamment contrastées (hors cas particuliers) ? | Indices | Rendu (capture) | — | rendered-nontext-contrast |
| 4.1 | Chaque média temporel pré-enregistré a-t-il, si nécessaire, une transcription textuelle ou une audiodescription (hors cas particuliers) ? | Jugement seul | — | — | — |
| 4.2 | Pour chaque média temporel pré-enregistré ayant une transcription textuelle ou une audiodescription synchronisée, celles-ci sont-elles pertinentes (hors cas particuliers) ? | Jugement seul | — | — | — |
| 4.3 | Chaque média temporel synchronisé pré-enregistré a-t-il, si nécessaire, des sous-titres synchronisés (hors cas particuliers) ? | Indices | Moteur statique, axe-core | — | axe:audio-caption, axe:video-caption, media-no-track |
| 4.4 | Pour chaque média temporel synchronisé pré-enregistré ayant des sous-titres synchronisés, ces sous-titres sont-ils pertinents ? | Jugement seul | — | — | — |
| 4.5 | Chaque média temporel pré-enregistré a-t-il, si nécessaire, une audiodescription synchronisée (hors cas particuliers) ? | Jugement seul | — | — | — |
| 4.6 | Pour chaque média temporel pré-enregistré ayant une audiodescription synchronisée, celle-ci est-elle pertinente ? | Jugement seul | — | — | — |
| 4.7 | Chaque média temporel est-il clairement identifiable (hors cas particuliers) ? | Jugement seul | — | — | — |
| 4.8 | Chaque média non temporel a-t-il, si nécessaire, une alternative (hors cas particuliers) ? | Jugement seul | — | — | — |
| 4.9 | Pour chaque média non temporel ayant une alternative, cette alternative est-elle pertinente ? | Jugement seul | — | — | — |
| 4.10 | Chaque son déclenché automatiquement est-il contrôlable par l’utilisateur ? | Indices | Moteur statique, axe-core | — | autoplay-media, axe:no-autoplay-audio |
| 4.11 | La consultation de chaque média temporel est-elle, si nécessaire, contrôlable par le clavier et tout dispositif de pointage ? | Jugement seul | — | — | — |
| 4.12 | La consultation de chaque média non temporel est-elle contrôlable par le clavier et tout dispositif de pointage ? | Jugement seul | — | — | — |
| 4.13 | Chaque média temporel et non temporel est-il compatible avec les technologies d’assistance (hors cas particuliers) ? | Jugement seul | — | — | — |
| 5.1 | Chaque tableau de données complexe a-t-il un résumé ? | Jugement seul | — | — | — |
| 5.2 | Pour chaque tableau de données complexe ayant un résumé, celui-ci est-il pertinent ? | Jugement seul | — | — | — |
| 5.3 | Pour chaque tableau de mise en forme, le contenu linéarisé reste-t-il compréhensible ? | Jugement seul | — | — | — |
| 5.4 | Pour chaque tableau de données ayant un titre, le titre est-il correctement associé au tableau de données ? | Indices | Moteur statique | — | table-caption-missing |
| 5.5 | Pour chaque tableau de données ayant un titre, celui-ci est-il pertinent ? | Jugement seul | — | — | — |
| 5.6 | Pour chaque tableau de données, chaque en-tête de colonne et chaque en-tête de ligne sont-ils correctement déclarés ? | Indices | Moteur statique, axe-core | — | axe:td-has-header, axe:th-has-data-cells, data-table-no-headers, th-no-data-cells |
| 5.7 | Pour chaque tableau de données, la technique appropriée permettant d’associer chaque cellule avec ses en-têtes est-elle utilisée (hors cas particuliers) ? | NC prouvée | Moteur statique, axe-core | headers-attr-dangling, table-scope-invalid | axe:scope-attr-valid, axe:td-headers-attr, data-table-no-headers |
| 5.8 | Chaque tableau de mise en forme ne doit pas utiliser d’éléments propres aux tableaux de données. Cette règle est-elle respectée ? | NC prouvée | Moteur statique, axe-core | layout-table-data-markup | axe:table-fake-caption |
| 6.1 | Chaque lien est-il explicite (hors cas particuliers) ? | NC prouvée | Moteur statique | link-label-in-name-mismatch | — |
| 6.2 | Dans chaque page web, chaque lien a-t-il un intitulé ? | NC prouvée | Moteur statique, axe-core | axe:link-name, icon-only-control-unnamed, link-empty-name | — |
| 7.1 | Chaque script est-il, si nécessaire, compatible avec les technologies d’assistance ? | NC prouvée | Moteur statique, axe-core | axe:button-name, axe:input-button-name, button-empty-name, label-in-name-mismatch, menuitem-empty-name | aria-hidden-focusable, aria-prohibited-attr, aria-ref-missing-id, aria-required-attr, aria-required-children, axe:aria-allowed-attr, axe:aria-allowed-role, axe:aria-command-name, axe:aria-dialog-name, axe:aria-hidden-focus, axe:aria-meter-name, axe:aria-progressbar-name, axe:aria-required-attr, axe:aria-required-children, axe:aria-required-parent, axe:aria-roles, axe:aria-tooltip-name, axe:aria-valid-attr, axe:aria-valid-attr-value, axe:nested-interactive, axe:presentation-role-conflict, cross-prop-drilled-name-lost, disabled-context-content, invalid-aria-attr, invalid-aria-role, invalid-aria-value, nested-interactive, presentational-children-focusable, redundant-aria |
| 7.2 | Pour chaque script ayant une alternative, cette alternative est-elle pertinente ? | Jugement seul | — | — | — |
| 7.3 | Chaque script est-il contrôlable par le clavier et par tout dispositif de pointage (hors cas particuliers) ? | Indices | Moteur statique | — | clickable-noninteractive |
| 7.4 | Pour chaque script qui initie un changement de contexte, l’utilisateur est-il averti ou en a-t-il le contrôle ? | Indices | Moteur statique | — | on-input-context-change |
| 7.5 | Dans chaque page web, les messages de statut sont-ils correctement restitués par les technologies d’assistance ? | Indices | Moteur statique, Sondes navigateur | — | dyn-live-region, live-region-conflict, status-message-not-assertive |
| 8.1 | Chaque page web est-elle définie par un type de document ? | NC prouvée | Règles spécifiques au RGAA | pack:rgaa:doctype-missing | — |
| 8.2 | Pour chaque page web, le code source généré est-il valide selon le type de document spécifié ? | NC prouvée | Moteur statique, axe-core | axe:duplicate-id, axe:duplicate-id-active, axe:duplicate-id-aria, duplicate-attribute, duplicate-id, invalid-aria-attr, invalid-aria-value | — |
| 8.3 | Dans chaque page web, la langue par défaut est-elle présente ? | Déterministe | Moteur statique, axe-core | document-language-missing | axe:html-has-lang, html-lang-missing |
| 8.4 | Pour chaque page web ayant une langue par défaut, le code de langue est-il pertinent ? | NC prouvée | Moteur statique, axe-core | axe:html-lang-valid, html-lang-xml-lang-mismatch, lang-invalid | axe:html-xml-lang-mismatch |
| 8.5 | Chaque page web a-t-elle un titre de page ? | Déterministe | Moteur statique, axe-core | axe:document-title, title-missing-empty | — |
| 8.6 | Pour chaque page web ayant un titre de page, ce titre est-il pertinent ? | Jugement seul | — | — | — |
| 8.7 | Dans chaque page web, chaque changement de langue est-il indiqué dans le code source (hors cas particuliers) ? | Indices | Moteur statique | — | inline-lang-change-missing |
| 8.8 | Dans chaque page web, le code de langue de chaque changement de langue est-il valide et pertinent ? | Indices | Moteur statique, axe-core | — | axe:valid-lang, lang-invalid |
| 8.9 | Dans chaque page web, les balises ne doivent pas être utilisées uniquement à des fins de présentation. Cette règle est-elle respectée ? | Jugement seul | — | — | — |
| 8.10 | Dans chaque page web, les changements du sens de lecture sont-ils signalés ? | NC prouvée | Règles spécifiques au RGAA | pack:rgaa:dir-value-invalid | — |
| 9.1 | Dans chaque page web, l’information est-elle structurée par l’utilisation appropriée de titres ? | Indices | Moteur statique, axe-core | — | axe:empty-heading, axe:heading-order, axe:page-has-heading-one, empty-heading, h1-missing, h1-multiple, heading-order-skip |
| 9.2 | Dans chaque page web, la structure du document est-elle cohérente (hors cas particuliers) ? | Indices | Moteur statique | — | missing-main-landmark, multiple-main-landmark, nav-landmark-missing |
| 9.3 | Dans chaque page web, chaque liste est-elle correctement structurée ? | NC prouvée | Moteur statique, axe-core | axe:definition-list, axe:dlitem, axe:list, axe:listitem, list-structure | dl-structure |
| 9.4 | Dans chaque page web, chaque citation est-elle correctement indiquée ? | Jugement seul | — | — | — |
| 10.1 | Dans le site web, des feuilles de styles sont-elles utilisées pour contrôler la présentation de l’information ? | NC prouvée | Moteur statique | presentational-attribute, presentational-element, presentational-spacing | — |
| 10.2 | Dans chaque page web, le contenu visible porteur d’information reste-t-il présent lorsque les feuilles de styles sont désactivées ? | Indices | Moteur statique | — | css-generated-content-informative |
| 10.3 | Dans chaque page web, l’information reste-t-elle compréhensible lorsque les feuilles de styles sont désactivées ? | Jugement seul | — | — | — |
| 10.4 | Dans chaque page web, le texte reste-t-il lisible lorsque la taille des caractères est augmentée jusqu’à 200 %, au moins (hors cas particuliers) ? | Indices | Moteur statique, axe-core, Sondes navigateur | — | axe:meta-viewport, axe:meta-viewport-large, dyn-input-overflow-zoom, dyn-reflow-zoom, meta-viewport-zoom-block |
| 10.5 | Dans chaque page web, les déclarations CSS de couleurs de fond d’élément et de police sont-elles correctement utilisées ? | Jugement seul | — | — | — |
| 10.6 | Dans chaque page web, chaque lien dont la nature n’est pas évidente est-il visible par rapport au texte environnant ? | Indices | axe-core, Rendu (capture) | — | axe:link-in-text-block, rendered-link-colour-only |
| 10.7 | Dans chaque page web, pour chaque élément recevant le focus, la prise de focus est-elle visible ? | NC prouvée | Sondes navigateur, Rendu (capture) | dyn-focus-visible | rendered-focus-not-visible |
| 10.8 | Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance ? | Indices | Moteur statique | — | disabled-context-content |
| 10.9 | Dans chaque page web, l’information ne doit pas être donnée uniquement par la forme, taille ou position. Cette règle est-elle respectée ? | Jugement seul | — | — | — |
| 10.10 | Dans chaque page web, l’information ne doit pas être donnée par la forme, taille ou position uniquement. Cette règle est-elle implémentée de façon pertinente ? | Jugement seul | — | — | — |
| 10.11 | Pour chaque page web, les contenus peuvent-ils être présentés sans perte d’information ou de fonctionnalité et sans avoir recours soit à un défilement vertical pour une fenêtre ayant une hauteur de 256 px, soit à un défilement horizontal pour une fenêtre ayant une largeur de 320 px (hors cas particuliers) ? | Indices | Sondes navigateur | — | dyn-input-overflow-reflow, dyn-reflow |
| 10.12 | Dans chaque page web, les propriétés d’espacement du texte peuvent-elles être redéfinies par l’utilisateur sans perte de contenu ou de fonctionnalité (hors cas particuliers) ? | NC prouvée | Moteur statique, Sondes navigateur | letter-spacing-important, line-height-important, word-spacing-important | dyn-input-overflow-spacing, dyn-text-spacing |
| 10.13 | Dans chaque page web, les contenus additionnels apparaissant à la prise de focus ou au survol d’un composant d’interface sont-ils contrôlables par l’utilisateur (hors cas particuliers) ? | Indices | Sondes navigateur | — | dyn-hover |
| 10.14 | Dans chaque page web, les contenus additionnels apparaissant via les styles CSS uniquement peuvent-ils être rendus visibles au clavier et par tout dispositif de pointage ? | Jugement seul | — | — | — |
| 11.1 | Chaque champ de formulaire a-t-il une étiquette ? | NC prouvée | Moteur statique, axe-core | axe:aria-input-field-name, axe:aria-toggle-field-name, axe:label, axe:select-name, control-label-missing | axe:form-field-multiple-labels, axe:label-title-only, control-name-title-only, field-purpose-incomplete, form-field-multiple-labels, label-for-dangling, placeholder-as-label, select-has-option |
| 11.2 | Chaque étiquette associée à un champ de formulaire est-elle pertinente (hors cas particuliers) ? | NC prouvée | Moteur statique | field-label-in-name-mismatch | — |
| 11.3 | Dans chaque formulaire, chaque étiquette associée à un champ de formulaire ayant la même fonction et répétée plusieurs fois dans une même page ou dans un ensemble de pages est-elle cohérente ? | Jugement seul | — | — | — |
| 11.4 | Dans chaque formulaire, chaque étiquette de champ et son champ associé sont-ils accolés (hors cas particuliers) ? | Jugement seul | — | — | — |
| 11.5 | Dans chaque formulaire, les champs de même nature sont-ils regroupés, si nécessaire ? | NC prouvée | Moteur statique | radio-checkbox-group-ungrouped | date-fields-ungrouped |
| 11.6 | Dans chaque formulaire, chaque regroupement de champs de même nature a-t-il une légende ? | NC prouvée | Moteur statique | fieldset-legend-missing | — |
| 11.7 | Dans chaque formulaire, chaque légende associée à un regroupement de champs de même nature est-elle pertinente ? | Jugement seul | — | — | — |
| 11.8 | Dans chaque formulaire, les items de même nature d’une liste de choix sont-ils regroupés de manière pertinente ? | NC prouvée | Règles spécifiques au RGAA | pack:rgaa:optgroup-without-label | — |
| 11.9 | Dans chaque formulaire, l’intitulé de chaque bouton est-il pertinent (hors cas particuliers) ? | NC prouvée | Moteur statique | form-button-empty-name, form-label-in-name-mismatch | cross-icon-only-unnamed, icon-only-control-unnamed |
| 11.10 | Dans chaque formulaire, le contrôle de saisie est-il utilisé de manière pertinente (hors cas particuliers) ? | Indices | Moteur statique | — | aria-invalid-no-description, error-not-associated |
| 11.11 | Dans chaque formulaire, le contrôle de saisie est-il accompagné, si nécessaire, de suggestions facilitant la correction des erreurs de saisie ? | Jugement seul | — | — | — |
| 11.12 | Pour chaque formulaire qui modifie ou supprime des données, ou qui transmet des réponses à un test ou à un examen, ou dont la validation a des conséquences financières ou juridiques, les données saisies peuvent-elles être modifiées, mises à jour ou récupérées par l’utilisateur ? | Jugement seul | — | — | — |
| 11.13 | La finalité d’un champ de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l’utilisateur ? | Indices | Moteur statique, axe-core | — | autocomplete-token-invalid, axe:autocomplete-valid, field-purpose-incomplete |
| 12.1 | Chaque ensemble de pages dispose-t-il de deux systèmes de navigation différents, au moins (hors cas particuliers) ? | Jugement seul | — | — | — |
| 12.2 | Dans chaque ensemble de pages, le menu et les barres de navigation sont-ils toujours à la même place (hors cas particuliers) ? | Jugement seul | — | — | — |
| 12.3 | La page « plan du site » est-elle pertinente ? | Jugement seul | — | — | — |
| 12.4 | Dans chaque ensemble de pages, la page « plan du site » est-elle accessible à partir d’une fonctionnalité identique ? | Jugement seul | — | — | — |
| 12.5 | Dans chaque ensemble de pages, le moteur de recherche est-il atteignable de manière identique ? | Jugement seul | — | — | — |
| 12.6 | Les zones de regroupement de contenus présentes dans plusieurs pages web (zones d’en-tête, de navigation principale, de contenu principal, de pied de page et de moteur de recherche) peuvent-elles être atteintes ou évitées ? | Indices | Moteur statique, axe-core | — | axe:landmark-one-main, bypass-blocks-missing, missing-main-landmark, multiple-main-landmark, nav-landmark-missing, nav-landmark-unnamed |
| 12.7 | Dans chaque page web, un lien d’évitement ou d’accès rapide à la zone de contenu principal est-il présent (hors cas particuliers) ? | Indices | Moteur statique, axe-core | — | axe:bypass, axe:skip-link, bypass-blocks-missing, skip-link-target-missing |
| 12.8 | Dans chaque page web, l’ordre de tabulation est-il cohérent ? | Indices | Moteur statique, axe-core | — | axe:tabindex, positive-tabindex |
| 12.9 | Dans chaque page web, la navigation ne doit pas contenir de piège au clavier. Cette règle est-elle respectée ? | Indices | Sondes navigateur | — | dyn-keyboard-trap |
| 12.10 | Dans chaque page web, les raccourcis clavier n’utilisant qu’une seule touche (lettre minuscule ou majuscule, ponctuation, chiffre ou symbole) sont-ils contrôlables par l’utilisateur ? | Jugement seul | — | — | — |
| 12.11 | Dans chaque page web, les contenus additionnels apparaissant au survol, à la prise de focus ou à l’activation d’un composant d’interface sont-ils si nécessaire atteignables au clavier ? | Jugement seul | — | — | — |
| 13.1 | Pour chaque page web, l’utilisateur a-t-il le contrôle de chaque limite de temps modifiant le contenu (hors cas particuliers) ? | Indices | Moteur statique | — | meta-refresh-redirect |
| 13.2 | Dans chaque page web, l’ouverture d’une nouvelle fenêtre ne doit pas être déclenchée sans action de l’utilisateur. Cette règle est-elle respectée ? | Jugement seul | — | — | — |
| 13.3 | Dans chaque page web, chaque document bureautique en téléchargement possède-t-il, si nécessaire, une version accessible (hors cas particuliers) ? | Indices | Moteur statique | — | pdf-lang-missing, pdf-no-text, pdf-structure-shallow, pdf-title-missing, pdf-untagged |
| 13.4 | Pour chaque document bureautique ayant une version accessible, cette version offre-t-elle la même information ? | Jugement seul | — | — | — |
| 13.5 | Dans chaque page web, chaque contenu cryptique (art ASCII, émoticône, syntaxe cryptique) a-t-il une alternative ? | Jugement seul | — | — | — |
| 13.6 | Dans chaque page web, pour chaque contenu cryptique (art ASCII, émoticône, syntaxe cryptique) ayant une alternative, cette alternative est-elle pertinente ? | Jugement seul | — | — | — |
| 13.7 | Dans chaque page web, les changements brusques de luminosité ou les effets de flash sont-ils correctement utilisés ? | Jugement seul | — | — | — |
| 13.8 | Dans chaque page web, chaque contenu en mouvement ou clignotant est-il contrôlable par l’utilisateur ? | Indices | Moteur statique, axe-core | — | axe:blink, axe:marquee, blink-marquee |
| 13.9 | Dans chaque page web, le contenu proposé est-il consultable quelle que soit l’orientation de l’écran (portrait ou paysage) (hors cas particuliers) ? | Indices | Rendu (capture) | — | rendered-orientation-lock |
| 13.10 | Dans chaque page web, les fonctionnalités utilisables ou disponibles au moyen d’un geste complexe peuvent-elles être également disponibles au moyen d’un geste simple (hors cas particuliers) ? | Jugement seul | — | — | — |
| 13.11 | Dans chaque page web, les actions déclenchées au moyen d’un dispositif de pointage sur un point unique de l’écran peuvent-elles faire l’objet d’une annulation (hors cas particuliers) ? | Jugement seul | — | — | — |
| 13.12 | Dans chaque page web, les fonctionnalités qui impliquent un mouvement de l’appareil ou vers l’appareil peuvent-elles être satisfaites de manière alternative (hors cas particuliers) ? | Jugement seul | — | — | — |