Exemple fictif : la Boutique Ar Mor n'existe pas. Ce rapport a été produit par l'outil sur une page de démonstration qui contient des erreurs volontaires.
Pré-diagnostic automatique
Accessibilité : boutique-ar-mor.exampleBoutique Ar Mor – démo
Ceci n'est pas un audit de conformité. Les tests automatiques couvrent partiellement 35 critères RGAA sur 106. Les autres critères demandent une vérification humaine : une page sans problème détecté peut quand même gêner certains visiteurs.
Chiffres clés
COUVERTURE DES TESTS
Carte des 106 critères du RGAA 4.1
Chaque case est un critère. Elle montre ce que l'analyse automatique a pu examiner : c'est l'étendue des tests, pas un verdict sur le site.
- Examiné, rien détecté
- À vérifier
- En échec
- Demande une personne
PROBLÈMES DÉTECTÉS
Ce que les tests ont relevé
Classés du plus grave au moins grave. Chaque problème indique le critère RGAA concerné, les éléments en cause et la correction à apporter.
1.1 BLOQUANTLes images doivent avoir une alternative textuelle 2éléments concernés
Vérifier que les éléments <img> ont une alternative textuelle, ou un rôle de type 'none' ou 'presentation'
Correction suggérée
Ajoutez un attribut alt à chaque image : un texte court qui donne la même information que l'image (par exemple le nom de la marque pour un logo), ou alt="" si l'image est purement décorative.
Tests RGAA : 1.1.1 · contrôle image-alt · documentation de la règle (en anglais)
Éléments en cause
-
img[src$="logo.png"]<img src="logo.png">L’élément n’a pas d’attribut alt
-
img[src$="panier.svg"]<img src="panier.svg">L’élément n’a pas d’attribut alt
11.1 BLOQUANTL’élément 'select' doit avoir un nom accessible 1élément concerné
Vérifier que l’élément 'select' a un nom accessible
Correction suggérée
Associez une étiquette visible à la liste : label for="pays" et id="pays" sur l'élément select.
Tests RGAA : 11.1.1 · contrôle select-name · documentation de la règle (en anglais)
Éléments en cause
-
select<select><option>France</option><option>Belgique</option></select>L’élément de formulaire n’a pas de <label> implicite (imbriqué)
11.9 BLOQUANTLes boutons doivent avoir un texte perceptible 1élément concerné
Vérifier que les boutons ont un texte perceptible
Correction suggérée
Donnez au bouton un texte qui dit ce qu'il fait (« S'inscrire », « Rechercher »). S'il ne contient qu'une icône, ajoutez aria-label.
Tests RGAA : 11.9.1 · contrôle button-name · documentation de la règle (en anglais)
Éléments en cause
-
button<button></button>L’élément n’a aucun contenu textuel visible par les lecteurs d’écran
2.1 MAJEURChaque cadre doit avoir un attribut title 1élément concerné
Vérifier que les éléments <iframe> et <frame> ont un attribut title non vide
Correction suggérée
Ajoutez au cadre un attribut title qui décrit son contenu (« Carte d'accès au magasin »), ou supprimez le cadre s'il ne sert à rien.
Tests RGAA : 2.1.1 · contrôle frame-title · documentation de la règle (en anglais)
Éléments en cause
-
iframe<iframe src="about:blank"></iframe>L’élément n’a pas d’attribut title
3.2 MAJEURLes éléments doivent avoir un contraste de couleurs suffisant 2éléments concernés
Vérifier que les contrastes entre le premier plan et l’arrière-plan rencontrent les seuils de contrastes exigés par les WCAG 2 AA
Correction suggérée
Foncez le texte ou éclaircissez le fond jusqu'à un rapport de contraste d'au moins 4,5:1 (3:1 pour les grands textes).
Tests RGAA : 3.2.1 · contrôle color-contrast · documentation de la règle (en anglais)
Éléments en cause
-
p<p class="promo">-20 % sur toute la collection marinière jusqu'à dimanche</p>L’élément a un contraste de couleurs insuffisant de 2.81 (couleur d’avant plan : #9a9a9a, couleur d’arrière plan : #ffffff, taille de police : 12.0pt (16px), graisse : normal). Contraste de couleur attendu : 4.5:1
-
span<span class="btn" onclick="ajouter()">Ajouter au panier</span>L’élément a un contraste de couleurs insuffisant de 1.7 (couleur d’avant plan : #ffffff, couleur d’arrière plan : #f0c040, taille de police : 12.0pt (16px), graisse : normal). Contraste de couleur attendu : 4.5:1
6.2 MAJEURLes liens doivent avoir un texte perceptible 2éléments concernés
Vérifier que les liens ont un texte perceptible
Correction suggérée
Donnez un intitulé à chaque lien : un texte visible, ou une alternative sur l'image qu'il contient (alt="Panier").
Tests RGAA : 6.2.1 · contrôle link-name · documentation de la règle (en anglais)
Éléments en cause
-
a[href$="panier"]<a href="/panier"><img src="panier.svg"></a>L’élément est dans l’ordre de tabulation et n’a pas d’intitulé accessible
-
a[href$="compte"]<a href="/compte"></a>L’élément est dans l’ordre de tabulation et n’a pas d’intitulé accessible
8.3 MAJEURL’élément <html> doit avoir un attribut lang 1élément concerné
Vérifier que chaque document HTML a un attribut lang
Correction suggérée
Déclarez la langue principale de la page : html lang="fr".
Tests RGAA : 8.3.1 · contrôle html-has-lang · documentation de la règle (en anglais)
Éléments en cause
-
html<html>L’élément <html> n’a pas d’attribut lang
9.2 MODÉRÉLe contenu doit être localisé dans une région 10éléments concernés
Vérifier que tout le contenu est localisé dans une région
Correction suggérée
Placez le contenu dans des zones identifiées : header, nav, main et footer.
Tests RGAA : 9.2.1 · contrôle region · documentation de la règle (en anglais)
Éléments en cause
-
.header<div class="header"> <img src="logo.png"> <a href="/panier"><img src="panier.svg"></a> <a href="/compte"></a> </div>Contenu non imbriqué dans une région ARIA
-
h1<h1>Bienvenue</h1>Contenu non imbriqué dans une région ARIA
-
h4<h4>Nos nouveautés</h4>Contenu non imbriqué dans une région ARIA
-
p<p class="promo">-20 % sur toute la collection marinière jusqu'à dimanche</p>Contenu non imbriqué dans une région ARIA
-
.produit<div class="produit"> <img src="mariniere.jpg" alt="mariniere.jpg"> <span class="btn" onclick="ajouter()">Ajouter au panier</span> </div>Contenu non imbriqué dans une région ARIA
-
input<input type="email" placeholder="Votre e-mail">Contenu non imbriqué dans une région ARIA
-
select<select><option>France</option><option>Belgique</option></select>Contenu non imbriqué dans une région ARIA
-
table<table> <tbody><tr><td>Taille</td><td>Tour de poitrine</td></tr> <tr><td>M</td><td>96 cm</td></tr> </tbody></table>Contenu non imbriqué dans une région ARIA
-
div:nth-child(9)<div id="dup">a</div>Contenu non imbriqué dans une région ARIA
-
div:nth-child(10)<div id="dup">b</div>Contenu non imbriqué dans une région ARIA
POINTS À VÉRIFIER
Points à vérifier à la main
Les tests n'ont pas pu conclure seuls sur ces éléments : une personne doit juger s'ils posent problème.
1.3 À VÉRIFIERAlternative textuelle qui ressemble à un nom de fichier 1élément concerné
Une alternative comme « photo.jpg » ne décrit pas l'image. Vérifier qu'elle est pertinente.
Correction suggérée
Remplacez le nom de fichier par une description de ce que montre l'image, ou par alt="" si le texte voisin donne déjà l'information.
Tests RGAA : – · contrôle mw-alt-fichier
Éléments en cause
-
img<img src="mariniere.jpg" alt="mariniere.jpg">
5.6 À VÉRIFIERTableau sans cellule d'en-tête 1élément concerné
S'il s'agit d'un tableau de données, ses en-têtes doivent être balisés en th. S'il sert à la mise en page, ajouter role="presentation".
Correction suggérée
S'il s'agit d'un tableau de données, balisez les en-têtes en th scope="col" ou th scope="row" ; s'il sert à la mise en page, ajoutez role="presentation".
Tests RGAA : – · contrôle mw-tableau-sans-entete
Éléments en cause
-
table<table> <tbody><tr><td>Taille</td><td>Tour de poitrine</td></tr> <tr><td>M</td><td>96 cm</td></tr> </tbody></table>
7.1 À VÉRIFIERÉlément cliquable qui n'est ni un lien ni un bouton 1élément concerné
Un élément avec onclick sans rôle ni tabindex n'est pas utilisable au clavier ni annoncé aux lecteurs d'écran.
Correction suggérée
Remplacez l'élément par un vrai button type="button" (action) ou un lien a href (navigation).
Tests RGAA : – · contrôle mw-clic-non-interactif
Éléments en cause
-
span.btn<span class="btn" onclick="ajouter()">Ajouter au panier</span>
9.1 À VÉRIFIERSaut de niveau dans la hiérarchie des titres 1élément concerné
Un titre descend de plus d'un niveau (par exemple de h1 à h4). Vérifier que la structure reste cohérente.
Correction suggérée
Utilisez le niveau de titre qui suit logiquement (h2 après h1) et réglez la taille en CSS.
Tests RGAA : – · contrôle mw-saut-titre
Éléments en cause
-
h4<h4>Nos nouveautés</h4>
11.1 À VÉRIFIERChamp dont la seule étiquette est le texte indicatif (placeholder) 1élément concerné
Le RGAA ne retient pas le placeholder comme étiquette : il disparaît à la saisie. Ajouter un label, aria-label ou title.
Correction suggérée
Ajoutez une étiquette visible label : le texte indicatif peut rester, en complément.
Tests RGAA : – · contrôle mw-placeholder-seul
Éléments en cause
-
input<input type="email" placeholder="Votre e-mail">
EN CLAIR
En clair : les 5 problèmes les plus importants
Pour les personnes qui décident sans lire le code : ce que chaque problème change pour vos visiteurs. Les plus graves d'abord, puis les plus fréquents.
Des images n'ont pas de texte de remplacement
- Pourquoi c'est important
- Une image sans alternative est passée sous silence ou annoncée par son nom de fichier : un logo ou une icône de panier devient une énigme.
- Qui est gêné
- Les personnes aveugles, et tout le monde quand les images ne se chargent pas.
- Sur la page analysée
- 2 éléments concernés (Bloquant, RGAA 1.1).
Une liste de choix n'a pas d'étiquette
- Pourquoi c'est important
- La personne ne sait pas ce qu'on lui demande de choisir, ni à quoi sert la liste. Dans un formulaire de commande, c'est un blocage.
- Qui est gêné
- Les utilisateurs de lecteur d'écran et de commande vocale.
- Sur la page analysée
- 1 élément concerné (Bloquant, RGAA 11.1).
Un bouton n'a pas d'intitulé
- Pourquoi c'est important
- Le bouton est annoncé « bouton », sans dire ce qu'il fait : la personne hésite à l'activer, ou abandonne.
- Qui est gêné
- Les utilisateurs de lecteur d'écran et de commande vocale.
- Sur la page analysée
- 1 élément concerné (Bloquant, RGAA 11.9).
Des textes sont trop pâles sur leur fond
- Pourquoi c'est important
- Un texte peu contrasté se lit mal, voire pas du tout. Quand il s'agit d'un prix, d'une promotion ou d'un bouton, l'information est perdue.
- Qui est gêné
- Les personnes malvoyantes, les seniors, et chacun sur un téléphone en plein soleil.
- Sur la page analysée
- 2 éléments concernés (Majeur, RGAA 3.2).
Des liens n'ont pas d'intitulé
- Pourquoi c'est important
- Un lien sans intitulé est annoncé « lien », sans plus : impossible de savoir s'il mène au panier, au compte ou ailleurs.
- Qui est gêné
- Les utilisateurs de lecteur d'écran et de commande vocale, qui ne peuvent pas dire « cliquer sur Panier ».
- Sur la page analysée
- 2 éléments concernés (Majeur, RGAA 6.2).
ET ENSUITE
Ce qu'un audit humain ajouterait
- Fait
Pré-diagnostic automatique
35 critères examinés sur 1 page.
Audit humain
Les 71 autres critères, au clavier et avec des lecteurs d'écran.
Plan de correction
Anomalies classées par priorité, avec la correction à apporter.
Contre-vérification
Contrôle des corrections une fois appliquées.
- Les 71 critères que les tests automatiques ne couvrent pas, et la vérification complète des 35 autres.
- La pertinence des textes : une alternative, un titre ou un intitulé présents mais qui ne disent rien d'utile.
- Le parcours complet, au clavier seul et avec des lecteurs d'écran, jusqu'à la validation d'une commande ou d'un formulaire.
- Les pages que le robot n'atteint pas : compte client, panier, formulaire de commande.
- Un plan de correction priorisé, puis une contre-vérification après les corrections.
Voir un exemple d'audit approfondi sur la même boutique fictive
Parlons de votre site : www.kevrea.fr/contact
Vous voulez corriger ces problèmes ?
Je peux reprendre ce rapport avec vous, compléter par un audit et corriger dans votre Drupal, Symfony ou WordPress.
Moteur d'analyse : axe-core 4.13.0 de Deque Systems, publié sous licence Mozilla Public License 2.0, avec son jeu de règles RGAA et sa traduction française. Les correspondances avec les critères du RGAA 4.1 sont celles d'axe-core.