Retrouver dans le document les images structurées au moyen d’un élément <img> ou d’un élément possédant l’attribut WAI-ARIA role="img" ;
Pour chaque image, déterminer si l’image est porteuse d’information ;
Dans le cas où il s’agit d’un élément <img>, vérifier que l’image est pourvue au moins d’une alternative textuelle parmi les suivantes :
Passage de texte associé via l’attribut WAI-ARIA aria-labelledby ;
Contenu de l’attribut WAI-ARIA aria-label ;
Contenu de l’attribut alt ;
Contenu de l’attribut title.
Dans le cas où il s’agit d’un élément possédant l’attribut WAI-ARIA role="img", vérifier que l’image est pourvue au moins d’une alternative textuelle parmi les suivantes :
Passage de texte associé via l’attribut WAI-ARIA aria-labelledby ;
Contenu de l’attribut WAI-ARIA aria-label.
Si au moins une alternative textuelle est trouvée, le test est validé.
Retrouver dans le document les éléments <img> pourvus de l’attribut ismap ;
Pour chaque élément <img> pourvu de l’attribut ismap, vérifier la présence d’un lien ou d’un ensemble de liens (ou bien d’un autre type de composant d’interface qui jouerait un rôle similaire comme une liste de sélection, par exemple) permettant d’accéder aux mêmes ressources que lorsque l’image fait l’objet d’un clic.
Retrouver dans le document les informations données par la couleur dans un mot ou un ensemble de mots ;
Pour chacune de ces informations, vérifier qu’il existe un autre moyen de récupérer cette information (présence d’un attribut title, d’une icône ou d’un effet graphique de forme ou de position, un effet typographique…) ;
Si c’est le cas pour chaque information, le test est validé.
Retrouver dans le document les informations données par la couleur dans un texte ;
Pour chacune de ces informations, vérifier qu’il existe un autre moyen de récupérer cette information (présence d’un attribut title, d’une icône ou d’un effet graphique de forme ou de position, un effet typographique…) ;
Si c’est le cas pour chaque information, le test est validé.
Retrouver dans le document les informations données par la couleur dans une image ;
Pour chacune de ces informations, vérifier qu’il existe un autre moyen de récupérer cette information (présence d’un attribut title, d’une icône ou d’un effet graphique de forme ou de position, un effet typographique…) ;
Si c’est le cas pour chaque information, le test est validé.
Retrouver dans le document les informations données par la couleur dans une propriété CSS ;
Pour chacune de ces informations, vérifier qu’il existe un autre moyen de récupérer cette information (présence d’un attribut title, d’une icône ou d’un effet graphique de forme ou de position, un effet typographique…) ;
Si c’est le cas pour chaque information, le test est validé.
Retrouver dans le document les informations données par la couleur dans un média temporel ;
Pour chacune de ces informations, vérifier qu’il existe un autre moyen de récupérer cette information (présence d’un attribut title, d’une icône ou d’un effet graphique de forme ou de position, un effet typographique…) ;
Si c’est le cas pour chaque information, le test est validé.
Retrouver dans le document les informations données par la couleur dans un média non temporel ;
Pour chacune de ces informations, vérifier qu’il existe un autre moyen de récupérer cette information (présence d’un attribut title, d’une icône ou d’un effet graphique de forme ou de position, un effet typographique…) ;
Si c’est le cas pour chaque information, le test est validé.
Retrouver dans le document les médias temporels (éléments <video> ou <object>) synchronisés qui nécessitent une transcription textuelle ;
Pour chaque média temporel synchronisé, vérifier la présence :
Soit d’une transcription textuelle accessible au moyen d’un lien ou bouton adjacent (une URL ou une ancre) ;
Soit d’une transcription textuelle adjacente clairement identifiable ;
Soit d’une audiodescription synchronisée ;
Soit d’une version alternative avec une audiodescription synchronisée accessible au moyen d’un bouton ou d’un lien adjacent (une URL ou une ancre).
Si c’est le cas pour chaque média temporel, le test est validé.
Note : le critère est non applicable dans les situations où :
Le média temporel est utilisé à des fins décoratives (c’est-à-dire qu’il n’apporte aucune information) ;
Le média temporel est lui-même une alternative à un contenu de la page (une vidéo en langue des signes ou la vocalisation d’un texte, par exemple) ;
Le média temporel est utilisé pour accéder à une version agrandie ;
Le média temporel est utilisé comme un CAPTCHA ;
Le média temporel fait partie d’un test qui deviendrait inutile si la transcription textuelle, les sous-titres synchronisés ou l’audiodescription étaient communiqués ;
Pour les services de l’État, les collectivités territoriales et leurs établissements : si le média temporel a été publié entre le 23 septembre 2019 et le 23 septembre 2020 sur un site internet, intranet ou extranet créé depuis le 23 septembre 2018, il est exempté de l’obligation d’accessibilité ;
Pour les personnes de droit privé mentionnées aux 2° à 4° du I de l’article 47 de la loi du 11 février 2005 : si le média temporel a été publié avant le 23 septembre 2020, il est exempté de l’obligation d’accessibilité.
Au chargement du document, si un son se déclenche automatiquement, vérifier que :
Soit la séquence sonore a une durée inférieure ou égale à 3 secondes ;
Soit un dispositif (un bouton par exemple), sur l’élément ayant déclenché le son (voir note), ou dans la page, permet de le stopper ;
Soit le volume de la séquence peut être contrôlé par l’utilisateur, indépendamment du contrôle de volume du système.
Si c’est le cas, le test est validé.
Note : les éléments suivants sont susceptibles de déclencher des sons au chargement de la page : éléments <audio>, <video>, <object>, <embed>, <bgsound> ou un code JavaScript (utilisation de la Web Audio API, par exemple).
Retrouver dans le document les tableaux de données ;
Pour chaque en-tête (élément <th>) s’appliquant à la totalité de la ligne ou de la colonne et pourvu d’un attribut scope, vérifier que l’attribut scope possède :
Soit une valeur "row" pour les en-têtes de ligne ;
Soit une valeur "col" pour les en-têtes de colonne.
Si c’est le cas pour chaque en-tête s’appliquant à la totalité de la ligne ou de la colonne et pourvu d’un attribut scope, le test est validé.
Retrouver dans le document les tableaux de données ;
Pour chaque en-tête s’appliquant à la totalité de la ligne ou de la colonne et pourvu d’un attribut WAI-ARIA role="rowheader" ou "columnheader", vérifier que l’élément possède :
Soit un attribut WAI-ARIA role="rowheader" pour les en-têtes de ligne ;
Soit un attribut WAI-ARIA role="columnheader" pour les en-têtes de colonne.
Si c’est le cas pour chaque en-tête s’appliquant à la totalité de la ligne ou de la colonne et pourvu d’un attribut WAI-ARIA role="rowheader" ou "columnheader", le test est validé.
Retrouver dans le document les liens image (lien avec pour contenu un élément <img> ou un élément ayant l’attribut WAI-ARIA role="img", un élément <area> possédant un attribut href, un élément <object>, un élément <canvas> ou un élément <svg>) ;
Pour chaque lien image, vérifier que ce qui permet d’en comprendre la fonction et la destination est :
Soit l’intitulé du lien seul, fourni par l’alternative textuelle de l’image ;
Soit le contexte du lien.
Si c’est le cas pour chaque lien image, le test est validé.
Retrouver dans le document les liens autres que SVG dont le contenu est fourni à la fois par un intitulé visible et par le contenu soit d’un attribut title ou d’un attribut aria-label ou d’un attribut aria-labelledby ;
Pour chaque lien, vérifier que le contenu de l’attribut title ou de l’attribut aria-label ou de l’attribut aria-labelledby contient l’intitulé visible ;
Si c’est le cas pour chaque lien, le test est validé pour les liens autres que SVG.
Retrouver dans le document les liens SVG dont le contenu est fourni à la fois par un intitulé visible et par le contenu soit d’un attribut aria-labelledby, ou d’un attribut aria-label ou d’un élément title (enfant direct de l’élément <svg>) ou d’un attribut x-link:title (SVG 1.1) ou d’un ou plusieurs éléments <text>;
Pour chaque lien SVG, vérifier que le contenu de l’attribut aria-labelledby ou de l’attribut aria-label ou de l’élément <title> ou de l’attribut x-link:title ou d’un ou plusieurs éléments <text> contient l’intitulé visible ;
Si c’est le cas pour chaque lien SVG, le test est validé pour les liens SVG.
Si le test est validé à la fois pour les liens non SVG et pour les liens SVG, le test est globalement validé.
Note : considérant la détermination du nom accessible, il existe deux cas particuliers et une particularité liée aux expressions mathématiques :
La ponctuation et les lettres majuscules présentes dans le texte de l’intitulé visible peuvent être ignorées dans le nom accessible sans porter à conséquence.
Si le texte de l’intitulé visible sert de symbole, il ne doit pas être interprété littéralement au niveau du nom accessible. Le nom doit exprimer la fonction véhiculée par le symbole (par exemple, “B” au niveau d’un éditeur de texte aura pour nom accessible “Mettre en gras”, le signe “>” en fonction du contexte signifiera “Suivant” ou “Lancer la vidéo”). Le cas des symboles mathématiques fait cependant exception (voir le point ci-dessous).
Si l’étiquette visible représente une expression mathématique, les symboles mathématiques peuvent être repris littéralement pour servir d’étiquette au nom accessible (par exemple, “A>B”). Il est laissé à l’utilisateur le soin d’opérer la correspondance entre l’expression et ce qu’il doit épeler compte tenu de la connaissance qu’il a du fonctionnement de son logiciel de saisie vocale (“A plus grand que B” ou “A supérieur à B”).
Retrouver dans le document les liens quels qu’ils soient ;
Pour chaque lien, vérifier que le contenu de l’élément <a> (ou d’un élément pourvu d’un attribut WAI-ARIA role=link) contient un intitulé (texte ou alternative) ;
Si c’est le cas pour chaque lien, le test est validé.
Retrouver dans le document tous les composants d’interface générés ou contrôlés au moyen de JavaScript ;
Vérifier que :
Le composant possède un rôle cohérent avec son usage (généralement un bouton ou un lien) ;
Le composant possède un nom explicite ;
Le nom du composant est cohérent avec l’état de la fonctionnalité ou des contenus contrôlés (par exemple pour une fonctionnalité permettant d’afficher ou de masquer une zone de contenu).
Sinon, vérifier la présence d’un composant d’interface accessible permettant d’accéder aux mêmes fonctionnalités ;
Sinon, vérifier la présence d’une alternative accessible permettant d’accéder aux mêmes fonctionnalités.
Pour chacun des composants d’interface ayant validé le test 7.1.1, vérifier que le composant d’interface est correctement restitué par les technologies d’assistance ;
Sinon, vérifier qu’une alternative accessible au composant d’interface permet d’accéder aux mêmes fonctionnalités ;
Retrouver dans le document, tous les éléments sur lesquels est implémenté un gestionnaire d’événements JavaScript (par exemple click, focus, mouseover, blur, keydown, touch, …).
Vérifier que l’élément est accessible au moyen du clavier :
Il est atteignable avec la touche de tabulation (tab) ;
Si l’élément gère une action simple, il est activable au clavier avec la touche entrée (Entrée) ;
Si l’élément gère une action complexe, il est utilisable avec le clavier (généralement avec les touches de direction).
Sinon, vérifier qu’un élément accessible par le clavier permettant de réaliser la même action est présent dans la page.
Vérifier que l’élément est accessible par tout dispositif de pointage (souris, toucher, stylet, …).
Sinon, vérifier qu’un élément accessible au moyen d’un dispositif de pointage et permettant de réaliser la même action est présent dans la page.
Retrouver dans le document les titres (balise <hx> ou balise possédant un attribut WAI-ARIA role="heading" associé à un attribut WAI-ARIA aria-level) ;
Vérifier que la hiérarchie entre les titres est pertinente ;
Pour chaque titre identifié au test 9.1.1, vérifier que :
Soit il est structuré au moyen d’une balise <hx> (“x” désignant une valeur numérique comprise entre 1 et 6);
Soit il est structuré au moyen d’une balise possédant un attribut WAI-ARIA role="heading" et un attribut WAI-ARIA aria-level=x (“x” désignant une valeur numérique).
Si c’est le cas pour chaque titre, le test est validé.
Retrouver dans le document les éléments de type lien (élément <a> ou élément pourvu d’un attribut WAI-ARIA role="link") ;
Pour chaque élément de type lien, s’il peut être confondu avec un texte normal lorsqu’il est signalé uniquement par la couleur, vérifier que le contraste entre la couleur de police du lien et la couleur de police du texte environnant est de 3:1, au moins ;
Cette vérification doit être faite pour les différents états du lien s’ils sont présentés au moyen d’une couleur différente : l’état non visité, l’état visité, l’état activé, l’état au survol et l’état à la prise de focus ;
Si c’est le cas pour chaque élément de type lien, le test est validé.
Retrouver dans le document les éléments susceptibles de recevoir le focus (les éléments d’interface tels que les liens ou les contrôles de formulaire, ainsi que tout élément pourvu d’un attribut tabindex d’une valeur égale ou supérieure à 1) ;
Pour chaque élément susceptible de recevoir le focus, vérifier que l’indication visuelle de la prise de focus est présente (en agissant sur le contour ou le fond ou les deux) et est suffisamment contrastée (ratio de contraste égal ou supérieur à 3.0) ;
Si c’est le cas pour chaque élément susceptible de recevoir le focus, le test est validé.
Retrouver dans le document les champs de formulaire ;
Pour chaque champ de formulaire, vérifier que le champ de formulaire :
Possède un attribut WAI-ARIA aria-labelledby référençant un passage de texte identifié ;
Possède un attribut WAI-ARIA aria-label ;
Est associé à un élément <label> ayant un attribut for ;
Possède un attribut title ;
Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.
Si c’est le cas pour champ de formulaire, le test est validé.
Retrouver dans le document les champs de formulaire dont l’étiquette n’est pas visible ou à proximité (masquée, utilisation de l’attribut aria-label) ou n’est pas accolée au champ (utilisation de l’attribut aria-labelledby) ;
Pour chaque champ de formulaire, vérifier que le champ de formulaire :
soit possède un attribut title dont le contenu permet de comprendre la nature de la saisie attendue ;
est accompagné d’un passage de texte accolé au champ qui devient visible à la prise de focus permettant de comprendre la nature de la saisie attendue ;
est accompagné d’un passage de texte visible accolé au champ permettant de comprendre la nature de la saisie attendue.
Retrouver dans le document les champs de formulaire dont l’étiquette est fournie à la fois par un intitulé visible et par le contenu soit d’un élément <label>, soit d’un attribut title ou d’un attribut aria-label ou d’un attribut aria-labelledby ;
Pour chaque champ de formulaire, vérifier que le contenu de l’élément <label> ou de l’attribut title ou de l’attribut aria-label ou de l’attribut aria-labelledby contient l’intitulé visible ;
Si c’est le cas pour chaque champ de formulaire, le test est validé.
Retrouver dans le document les champs de formulaire de même nature (par exemple un groupe de saisie d’informations d’identité, une série de cases à cocher, une saisie de date sur plusieurs champs successifs…) ;
Pour chaque groupe de champs de formulaire de même nature, vérifier que ces champs de même nature sont regroupés :
Soit dans un élément <fieldset> ;
Soit dans un élément possédant un attribut WAI-ARIA role="group" ;
Soit dans un élément possédant un attribut WAI-ARIA role="radiogroup" ou "group", s’il s’agit d’éléments <input> de type radio ( ou d’éléments possédant un attribut WAI-ARIA role="radio").
Si c’est le cas pour chaque groupe de champs de formulaire de même nature, le test est validé.
Retrouver dans le document les champs de formulaire obligatoires auxquels est associée une instruction ou une indication du type de données et/ou de format obligatoire ;
Pour chaque champ de formulaire, vérifier que l’instruction ou l’indication du type de données et/ou de format obligatoire est préalablement à la validation du formulaire :
Soit visible et permet d’identifier nommément le champ concerné ;
Soit visible dans l’étiquette ou le passage de texte associé au champ.
Si c’est le cas pour chaque champ de formulaire obligatoire auxquel est associée une instruction ou une indication du type de données et/ou de format obligatoire, le test est validé.
Retrouver dans le document les messages d’erreur fournissant une instruction ou une indication du type de données et/ou de format obligatoire d’un champ ;
Pour chaque message d’erreur, vérifier que :
Soit le message d’erreur est visible et permet d’identifier nommément le champ concerné ;
Soit le champ associé au message d’erreur possède un attribut aria-invalid="true".
Si c’est le cas pour chaque message d’erreur indiquant l’absence de saisie d’un champ obligatoire, le test est validé.
Parcourir dans le document l’ensemble des contenus au moyen de la touche de tabulation vers l’avant (touche Tab) et vers l’arrière (touches Maj+Tab) ;
Vérifier que l’ordre de déplacement du focus reste cohérent relativement au contenu considéré (par exemple, l’ordre de tabulation dans une fenêtre modale ne doit considérer que les éléments d’interface présents au sein de cette fenêtre) ;
Si c’est le cas, le test est validé.
Note : il n’est pas obligatoire que la tabulation suive l’ordre de lecture naturel (de gauche à droite et de haut en bas par exemple) tant que les éléments sont accessibles dans un ordre cohérent.
Retrouver dans le document l’ensemble des contenus insérés au moyen d’un script (affichage d’éléments masqués, mise jour de contenu via AJAX par exemple) ;
Positionner la tabulation sur l’élément déclencheur et l’activer ;
Après l’affichage du contenu mis à jour, vérifier que la tabulation reste cohérente (repositionnement correct du focus) ;
Retrouver dans le document l’ensemble des éléments d’interface susceptibles de recevoir le focus (au moyen de la tabulation ou au moyen d’un script) ;
Pour chaque élément d’interface, vérifier que l’utilisateur peut atteindre l’élément suivant ou précédent pouvant recevoir le focus :
Soit au moyen de la touche de tabulation (Tab ou Maj+Tab) ;
Soit au moyen d’une autre interaction clavier dont l’utilisateur est informé (par exemple, les flèches de direction).
Si c’est le cas pour chaque élément d’interface, le test est validé.
Note : certains éléments d’interface complexes, comme un groupe de boutons radio, une liste de sélection et tous les composants développés avec WAI-ARIA font appel à des navigations optimisées qui utilisent généralement les flèches de direction pour passer d’une partie du composant à l’autre. Par exemple, dans un groupe de boutons radio les options sont navigables avec les flèches de direction. De même dans un système d’onglets l’utilisateur active les onglets avec les flèches de direction. Le test sur le piège au clavier se limite alors à vérifier que le composant est atteint avec la tabulation et qu’il est possible de passer au composant suivant ou revenir au composant précédent.