RGAA 4.1.2 · Images · Critère 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 ?
Un lecteur d'écran qui annonce « captcha.png » ne dit pas qu'on est devant une étape obligatoire, ni qu'il existe peut-être une solution de rechange. L'utilisateur croit à une image de plus, ne comprend pas pourquoi le formulaire refuse de partir, et abandonne la démarche.
Ce que dit le référentiel
Transcription du RGAA 4.1.2, sans interprétation. C’est ce texte qui fait foi, et celui que vous citez dans un rapport.
- 1.4.1 Pour chaque image (balise
<img>) utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent.
- S’il est présent, le contenu de l’attribut
- 1.4.2 Pour chaque zone (balise
<area>) d’une image réactive utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent.
- S’il est présent, le contenu de l’attribut
- 1.4.3 Pour chaque bouton de type image (balise
<input>avec l’attributtype="image") utilisé comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent.
- S’il est présent, le contenu de l’attribut
- 1.4.4 Pour chaque image objet (balise
<object>avec l’attributtype="image/…") utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle ou un contenu alternatif, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent ; - S’il est présent le contenu alternatif est pertinent.
- S’il est présent, le contenu de l’attribut
- 1.4.5 Pour chaque image embarquée (balise
<embed>avec l’attributtype="image/…") utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle ou un contenu alternatif, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent ; - S’il est présent le contenu alternatif est pertinent.
- S’il est présent, le contenu de l’attribut
- 1.4.6 Pour chaque image vectorielle (balise
<svg>) utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent.
- S’il est présent, le contenu de l’attribut
- 1.4.7 Pour chaque image bitmap (balise
<canvas>) utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle ou un contenu alternatif, cette alternative est-elle pertinente ?- S’il est présent, le contenu de l’attribut
altest pertinent ; - S’il est présent, le contenu de l’attribut
titleest pertinent ; - S’il est présent, le contenu de l’attribut WAI-ARIA
aria-labelest pertinent ; - S’il est présent, le passage de texte associé via l’attribut WAI-ARIA
aria-labelledbyest pertinent ; - S’il est présent le contenu alternatif est pertinent.
- S’il est présent, le contenu de l’attribut
Comment le vérifier
- Repérer les images qui servent de test : le CAPTCHA anti-robot, mais aussi l'image-test — « cliquez sur la troisième étoile » — que le critère vise également.
- Vérifier d'abord qu'une alternative existe. Si elle manque, le constat se pose au 1.1 : le 1.4 ne juge que les alternatives présentes.
- Y chercher deux choses : la nature (« test de sécurité ») et la fonction (« vérifier que vous n'êtes pas un robot »). L'une des deux seule ne suffit pas.
- Vérifier qu'elle ne livre pas ce qu'il faut saisir : une alternative qui donne la réponse annule le test.
- Saisir une réponse fausse pour provoquer le rechargement, et relire l'alternative de l'image suivante.
Ce que notre outil fait
Jugement humain
Aucune machine ne tranche ce critère. L’outil vous présente les éléments et enregistre votre constat.
Rien dans le code ne distingue un CAPTCHA d'une autre image, et l'outil n'en reconnaît aucun. La question est donc posée une fois pour la page, sur l'écran de fin de l'assistant images — « cette page contient-elle un CAPTCHA visuel ? », puis, seulement si vous répondez oui, « son alternative dit-elle ce que c'est et à quoi ça sert ? ». Tant que vous n'avez pas répondu, le critère reste non testé : il ne sort plus « non applicable » de lui-même, comme il le faisait sur toutes les pages. Le verdict est écrit au niveau de la page, sans sélecteur d'élément : contrairement aux constats posés image par image, il n'emporte pas de capture d'écran.
Comment nous mesurons ce que l'outil sait faire · ce critère s'audite dans l'extension RGAA Lab.
Les pièges
Les erreurs qu’on rencontre vraiment, relevées au fil des audits.
alt="captcha"est le cas le plus fréquent : le mot donne à peu près la nature, jamais la fonction, et ne dit pas à l'utilisateur ce qu'on attend de lui.- Un gabarit qui écrit l'
altà partir de la valeur attendue divulgue la réponse. On le voit sur les CAPTCHA maison : l'alternative doit dire ce qu'est l'image, pas ce qu'il faut y lire. - Une case « je ne suis pas un robot » n'est pas une image. Le 1.4 ne commence qu'à la grille d'images qui apparaît en cas de doute — c'est cet état qu'il faut provoquer pour juger.
- Le 1.8 ne s'applique pas à un CAPTCHA : le texte déformé y est un cas particulier explicite du référentiel. Ne pas compter la faute deux fois.