Référence de la norme · mise à jour le 2 septembre 2026

WCAG 2.2 AA, sans la prose de la norme

EN 301 549 renvoie à WCAG 2.2 niveau AA pour le contenu web ; c’est donc la liste à laquelle votre client est confronté. Voici ce qui a changé, ce qu’un scanner voit, et où une personne doit s’asseoir avec un clavier.

Publié
Recommandation du W3C, octobre 2023
Nouveaux critères
Neuf ajoutés, six en A ou AA
Retiré
4.1.1 Analyse syntaxique, obsolète
Automatisation
Voit environ un quart à un tiers

Ce que signifie vraiment le niveau AA

WCAG s’organise en trois niveaux. A est le plancher, AA est le niveau sur lequel s’appuient les marchés publics européens et EN 301 549, et AAA est un objectif que personne n’est tenu d’atteindre sur tout un site. Quand un appel d’offres demande « WCAG 2.2 AA », cela signifie chaque critère de succès A et AA, sur chaque page dans le périmètre, dans chaque état qu’un utilisateur peut atteindre.

Les critères de succès sont des énoncés vérifiables, pas des techniques. « Contraste (minimum) » ne vous dit pas quel token changer ; il vous dit le rapport mesuré qu’un texte doit atteindre. Cette distinction compte dans un audit : une anomalie est défendable quand elle nomme le critère, l’élément et la mesure, pas quand elle nomme un outil.

Un site ne réussit ni n’échoue dans son ensemble. La conformité est revendiquée par page, et un seul élément non conforme sur une page retire la revendication pour cette page. C’est pourquoi la surveillance continue l’emporte sur un audit ponctuel : une mise à jour de thème peut annuler la revendication de cent pages d’un coup.

Les neuf critères ajoutés par WCAG 2.2

Six d’entre eux se situent en A ou AA et entrent donc dans le périmètre d’une évaluation EN 301 549. La dernière colonne indique si un scanner peut en juger ou si une personne le doit.

Critères de succès ajoutés dans WCAG 2.2, leur niveau et la façon dont chacun est testé
CSNomNiveauComment c’est testé
2.4.11Focus non masqué (minimum)AAmanuel
2.4.12Focus non masqué (amélioré)AAAmanuel
2.4.13Apparence du focusAAAmanuel
2.5.7Mouvements de glissementAAmanuel
2.5.8Taille de cible (minimum)AAautomatisé
3.2.6Aide cohérenteAmanuel
3.3.7Saisie redondanteAmanuel
3.3.8Authentification accessible (minimum)AApartiellement automatisé
3.3.9Authentification accessible (améliorée)AAAmanuel

Ce que le scanner contrôle, règle par règle

Chaque règle automatisée porte les deux références : une anomalie se lit comme un critère de succès WCAG pour le développeur et comme une clause d’EN 301 549 pour l’évaluateur. Voici les règles préchargées dans la table de correspondance publique ; le catalogue dans le produit est plus vaste et maintenu de façon centralisée.74 rules seeded
Règles automatisées préchargées avec leurs critères de succès WCAG, leurs clauses EN 301 549 et leur impact typique
RègleWhat it detectsWCAGEN 301 549Impact typique
accesskeysTwo elements claim the same access key2.1.19.2.1.1serious
area-altImage map region without alternative text1.1.1, 2.4.4, 4.1.29.1.1.1, 9.2.4.4, 9.4.1.2critical
aria-allowed-attrARIA attribute not allowed on this role4.1.29.4.1.2critical
aria-command-nameCustom button, link or menu item without a name4.1.29.4.1.2serious
aria-hidden-bodyWhole document hidden from assistive technology4.1.29.4.1.2critical
aria-hidden-focusFocusable element hidden from assistive technology1.3.1, 4.1.29.1.3.1, 9.4.1.2serious
aria-input-field-nameCustom input field without an accessible name4.1.29.4.1.2serious
aria-meter-nameMeter without an accessible name1.1.19.1.1.1serious
aria-progressbar-nameProgress indicator without an accessible name1.1.19.1.1.1serious
aria-required-attrARIA role missing a required attribute4.1.29.4.1.2critical
aria-required-childrenComposite role without its required child roles1.3.19.1.3.1critical
aria-required-parentARIA role placed outside its required container1.3.19.1.3.1critical
aria-rolesRole value is not a recognised ARIA role4.1.29.4.1.2critical
aria-toggle-field-nameCheckbox, radio or switch without an accessible name4.1.29.4.1.2serious
aria-tooltip-nameTooltip role without any text4.1.29.4.1.2serious
aria-valid-attrAttribute name is not a valid ARIA attribute4.1.29.4.1.2critical
aria-valid-attr-valueARIA attribute points at a value that does not resolve4.1.29.4.1.2critical
audio-captionAudio without a captions or transcript track1.2.19.1.2.1critical
autocomplete-validautocomplete value not recognised1.3.59.1.3.5serious
avoid-inline-spacingText spacing locked by an inline style1.4.129.1.4.12serious
blinkBlinking content that cannot be stopped2.2.29.2.2.2serious
button-nameButton without an accessible name4.1.29.4.1.2critical
bypassNo way to skip the repeated navigation2.4.19.2.4.1serious
color-contrastText contrast below the required ratio1.4.39.1.4.3serious
css-orientation-lockContent locked to one screen orientation1.3.49.1.3.4serious
definition-listDefinition list built from the wrong children1.3.19.1.3.1serious
dlitemDefinition term or description outside a list1.3.19.1.3.1serious
document-titlePage has no title2.4.29.2.4.2serious
duplicate-id-activeDuplicate id on an interactive element4.1.19.4.1.1serious
empty-headingHeading with no text1.3.19.1.3.1minor
empty-table-headerTable header cell with no text1.3.19.1.3.1minor
focus-order-semanticsFocusable element with no interactive role2.4.39.2.4.3minor
form-field-multiple-labelsField bound to more than one label3.3.29.3.3.2moderate
frame-titleFrame without a title2.4.1, 4.1.29.2.4.1, 9.4.1.2serious
heading-orderHeading level skipped1.3.19.1.3.1moderate
html-has-langPage language not declared3.1.19.3.1.1serious
html-lang-validPage language code is not valid3.1.19.3.1.1serious
html-xml-lang-mismatchlang and xml:lang disagree3.1.19.3.1.1moderate
identical-links-same-purposeLinks with the same text lead somewhere different2.4.99.2.4.9minor
image-altImage without a text alternative1.1.19.1.1.1critical
input-button-nameInput button with no value or label4.1.29.4.1.2critical
input-image-altImage button without alternative text1.1.1, 4.1.29.1.1.1, 9.4.1.2critical
labelForm field without a programmatic label1.3.1, 4.1.29.1.3.1, 9.4.1.2critical
landmark-banner-is-top-levelBanner landmark nested inside another region1.3.19.1.3.1moderate
landmark-complementary-is-top-levelComplementary landmark nested inside another region1.3.19.1.3.1moderate
landmark-no-duplicate-mainMore than one main landmark on the page1.3.19.1.3.1moderate
landmark-one-mainPage has no single main landmark1.3.1, 2.4.19.1.3.1, 9.2.4.1moderate
landmark-uniqueTwo landmarks share a role and a name1.3.19.1.3.1moderate
link-nameLink without discernible text2.4.4, 4.1.29.2.4.4, 9.4.1.2serious
listList contains elements that are not list items1.3.19.1.3.1moderate
listitemList item outside a list1.3.19.1.3.1serious
marqueeScrolling marquee content2.2.29.2.2.2serious
meta-viewportZoom disabled by the viewport meta tag1.4.49.1.4.4serious
nested-interactiveInteractive control nested inside another4.1.29.4.1.2serious
no-autoplay-audioAudio starts on its own for more than three seconds1.4.29.1.4.2moderate
object-altEmbedded object without a text alternative1.1.19.1.1.1serious
p-as-headingParagraph styled to look like a heading1.3.19.1.3.1serious
page-has-heading-onePage has no level one heading1.3.19.1.3.1moderate
presentation-role-conflictPresentation role cancelled by other markup4.1.29.4.1.2minor
regionContent sits outside any landmark1.3.19.1.3.1moderate
role-img-altElement with role img has no alternative text1.1.19.1.1.1serious
scrollable-region-focusableScrollable area cannot be reached by keyboard2.1.19.2.1.1serious
select-nameSelect element without an accessible name1.3.1, 4.1.29.1.3.1, 9.4.1.2critical
server-side-image-mapServer-side image map in use2.1.19.2.1.1minor
summary-nameDisclosure summary without a name4.1.29.4.1.2serious
svg-img-altMeaningful SVG without a text alternative1.1.19.1.1.1serious
tabindexPositive tabindex overrides the natural focus order2.4.39.2.4.3serious
table-fake-captionTable title styled as a caption instead of marked as one1.3.19.1.3.1serious
target-sizeTouch target smaller than 24 by 24 pixels2.5.89.2.5.8moderate
td-has-headerData cell in a large table has no header1.3.19.1.3.1serious
td-headers-attrData cell not associated with a header1.3.19.1.3.1serious
th-has-data-cellsTable header with no data cells attached1.3.19.1.3.1serious
valid-langLanguage of a passage is not a valid code3.1.29.3.1.2serious
video-captionVideo without a captions track1.2.29.1.2.2critical

Ce que l’automatisation voit et ne voit pas

Chaque score dans Conforma porte la même phrase, car le nombre n’est qu’une partie du tableau. Les règles automatisées excellent sur les propriétés mesurables et sont aveugles à l’intention.

25–33 %
des barrières réelles trouvées par les seules règles automatisées, sur un site marketing typique
12
critères manuels dans notre liste de contrôle principale : clavier, ordre de focus, flux du lecteur d’écran, alternatives au glissement
0
certificats délivrés. Nous produisons des mesures et des preuves ; la déclaration reste chez l’opérateur

Les tests automatisés ne couvrent qu’une partie des obstacles à l’accessibilité. Une vérification manuelle est nécessaire pour une évaluation complète.

Comment Conforma teste WCAG 2.2 AA

  • Les règles automatisées s’exécutent sur chaque page d’une analyse, et chaque violation est consignée comme une anomalie avec la règle, le sélecteur, l’extrait HTML et une capture d’écran de l’élément en place.
  • Chaque anomalie porte les deux références : le critère de succès WCAG et la clause d’EN 301 549, de sorte qu’un rapport se lit de la même façon pour un développeur et pour un évaluateur des achats.
  • Les anomalies reçoivent une empreinte à partir de la règle, du sélecteur et du chemin. Une correction qui revient après un déploiement est signalée comme une régression au lieu d’être discrètement comptée comme un nouveau travail.
  • La liste de contrôle manuelle couvre ce que les règles ne peuvent pas juger, avec preuve vidéo, la technologie d’assistance utilisée et un testeur nommé, et elle est scellée dans le même dossier de preuves que l’exécution automatisée.

Les questions que l’on nous pose à ce sujet

WCAG 2.2 AA revient-il à satisfaire la loi sur l’accessibilité ?

Non. L’European Accessibility Act est la loi, EN 301 549 est la norme harmonisée servant à la démontrer, et EN 301 549 renvoie à WCAG 2.2 niveau AA pour le contenu web. Atteindre AA est la base technique d’une déclaration, pas un certificat.

Devons-nous passer de 2.1 à 2.2 dès maintenant ?

Pour tout ce qui est nouveau, la réponse prudente est oui. WCAG 2.2 est rétrocompatible : un contenu qui satisfait 2.2 satisfait aussi 2.1, donc tester par rapport à la version la plus récente ne coûte rien et couvre les deux.

Un score automatisé parfait signifie-t-il que le site est conforme ?

Cela signifie qu’aucune violation automatisée n’a été détectée sur les pages analysées. L’utilisation au clavier, l’ordre de focus et le flux du lecteur d’écran nécessitent encore une personne avant toute revendication.

Voyez les critères appliqués à vos propres pages

Un domaine, dix pages, sans compte. Vous obtenez les anomalies rattachées et un résumé de deux pages le jour même.