diff --git a/json/index.php b/json/index.php new file mode 100644 index 0000000..959486f --- /dev/null +++ b/json/index.php @@ -0,0 +1,26 @@ + + + + + + + Critères RGAA - Tanaguru + + + +)(.*)(<\/body.*$)/is", $rgaaFile, $matches); +echo $matches[2]; +?> + + +` ou balise possédant l'attribut WAI-ARIA`role=\"img\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) a-t-elle une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ?" + ], + "2": [ + "Chaque [zone](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-123) d'une [image réactive](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-50) (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) a-t-elle une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ?" + ], + "3": [ + "Chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) de type image (balise`` avec l'attribut`type=\"image\"` ) a-t-il une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ?" + ], + "4": [ + "Chaque [zone cliquable](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-124) d'une [image réactive](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-50) côté serveur est-elle doublée d’un mécanisme utilisable quel que soit le dispositif de pointage utilisé et permettant d’accéder à la même destination ?" + ], + "5": [ + "Chaque image vectorielle (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , vérifie-t-elle ces conditions ?", + "La balise`` possède un attribut WAI-ARIA`role=\"img\"` .", + "La balise`` a une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ." + ], + "6": [ + "Chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , vérifie-t-elle une de ces conditions ?", + "La balise`` possède une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et un attribut`role=\"img\"` .", + "L'élément`` est immédiatement suivi d'un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) .", + "Un mécanisme permet à l'utilisateur de remplacer l'élément`` par un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) ." + ], + "7": [ + "Chaque image embarquée (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , vérifie-t-elle une de ces conditions ?", + "La balise`` possède une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et un attribut`role=\"img\"` .", + "L'élément`` est immédiatement suivie d'un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) .", + "Un mécanisme permet à l'utilisateur de remplacer l'élément`` par un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) ." + ], + "8": [ + "Chaque image bitmap (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , vérifie-t-elle une de ces conditions ?", + "La balise`` possède une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et un attribut`role=\"img\"` .", + "Un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est présent entre les balises`` et`` .", + "L'élément`` est immédiatement suivi d'un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) .", + "Un mécanisme permet à l'utilisateur de remplacer l'élément`` par un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) ." + ] + }, + "references": [ + { + "techniques": [ + "H36", + "H37", + "H53", + "H24", + "F65" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Chaque [image de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) est-elle correctement ignorée par les technologies d'assistance ?", + "tests": { + "1": [ + "Chaque image (balise`` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) , sans [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) , vérifie-t-elle une de ces conditions ?", + "La balise`` possède un attribut`alt` vide (`alt=\"\"` ) et est dépourvue de tout autre attribut permettant de fournir une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) .", + "La balise`` possède un attribut WAI-ARIA`aria-hidden=\"true\"` ou`role=\"presentation\"` ." + ], + "2": [ + "Chaque [zone non cliquable](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-128) (balise`` sans attribut`href` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) , vérifie-t-elle une de ces conditions ?", + "La balise`` possède un attribut`alt` vide (`alt=\"\"` ) et est dépourvue de tout autre attribut permettant de fournir une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) .", + "La balise`` possède un attribut WAI-ARIA`aria-hidden=\"true\"` ou`role=\"presentation\"` ." + ], + "3": [ + "Chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`` avec l'attribut`type=\"image/…\"` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) , sans [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) , vérifie-t-elle ces conditions ?", + "La balise`` possède un attribut WAI-ARIA`aria-hidden=\"true\"` .", + "La balise`` est dépourvue d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) .", + "Il n'y a aucun texte faisant office d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) entre`` et`` ." + ], + "4": [ + "Chaque image vectorielle (balise`` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) , sans [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) , vérifie-t-elle ces conditions ?", + "La balise`` possède un attribut WAI-ARIA`aria-hidden=\"true\"` .", + "La balise`` et ses enfants sont dépourvus d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) .", + "Les balises`` et`` sont absentes ou vides.", + "La balise`` et ses enfants sont dépourvus d'attribut`title` ." + ], + "5": [ + "Chaque image bitmap (balise`` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) , sans [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) , vérifie-t-elle ces conditions ?", + "La balise`` possède un attribut WAI-ARIA`aria-hidden=\"true\"` .", + "La balise`` et ses enfants sont dépourvus d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) .", + "Il n'y a aucun texte faisant office d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) entre`` et`` ." + ], + "6": [ + "Chaque image embarquée (balise`` avec l'attribut`type=\"image/…\"` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) , sans [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) , vérifie-t-elle ces conditions ?", + "La balise`` possède un attribut WAI-ARIA`aria-hidden=\"true\"` .", + "La balise`` et ses enfants sont dépourvus d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ." + ] + }, + "references": [ + { + "techniques": [ + "H67", + "G196", + "C9", + "F39", + "F38", + "ARIA4", + "ARIA10" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "technicalNote": [ + "Lorsqu'une image est associée à une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) , la note technique WCAG recommande de prévoir systématiquement une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) (cf. ). Dans ce cas le critère 1.2 est non applicable.", + "Dans le cas d'une image vectorielle (balise`` ) [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) qui serait affichée au travers d'un élément`` enfant de l'élément`` , le test 1.2.4 s'appliquera également à la balise`` associée par le biais de la balise`` .", + "Un attribut WAI-ARIA`role=\"presentation\"` peut être utilisé sur les [images de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) et les zones non cliquables [de décoration](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-47) . Le rôle`\"none\"` introduit en ARIA 1.1 et synonyme du rôle`\"presentation\"` peut être aussi utilisé. Il reste préférable cependant d'utiliser le rôle`\"presentation\"` en attendant un support satisfaisant du rôle`\"none\"` ." + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Pour chaque image [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ( ) ?", + "tests": { + "1": [ + "Pour chaque image (balise`` ou balise possédant l'attribut WAI-ARIA`role=\"img\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'attribut`alt` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "2": [ + "Pour chaque zone (balise`` ) d'une [image réactive](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-50) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'attribut`alt` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "3": [ + "Pour chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) de type`image` (balise`` avec l'attribut`type=\"image\"` ), ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'attribut`alt` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "4": [ + "Pour chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ou un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent le [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est pertinent." + ], + "5": [ + "Pour chaque image embarquée (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ou un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent le [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est pertinent." + ], + "6": [ + "Pour chaque image vectorielle (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'élément`` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "7": [ + "Pour chaque image bitmap (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ou un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) , cette alternative est-elle pertinente ( ) ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent le [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est pertinent." + ], + "8": [ + "Pour chaque image bitmap (balise`` ) porteuse d'information et ayant un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) entre`` et`` , ce [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est-il [correctement restitué par les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-98) ?" + ], + "9": [ + "Pour chaque image [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) et ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est-elle [courte et concise](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-7) ( ) ?" + ] + }, + "references": [ + { + "techniques": [ + "G94", + "G95", + "F30", + "F71", + "G196", + "ARIA6", + "ARIA9", + "ARIA10" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particuliers lorsque l'image est utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) . Dans cette situation, où il n'est pas possible de donner une alternative pertinente sans détruire l'objet du [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou du test, le critère est non applicable.", + "Note : le cas des [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) et des [images-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) est traité de manière spécifique par le ." + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Pour chaque image utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une alternative textuelle, cette alternative permet-elle d'identifier la nature et la fonction de l'image ?", + "tests": { + "1": [ + "Pour chaque image (balise`` ) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`alt` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "2": [ + "Pour chaque zone (balise`` ) d'une [image réactive](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-50) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une alternative textuelle, cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`alt` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "3": [ + "Pour chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) de type image (balise`` avec l'attribut`type=\"image\"` ) utilisé comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) , cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`alt` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "4": [ + "Pour chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`` avec l'attribut`type=\"image/…\"` ) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ou un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) , cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent le [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est pertinent." + ], + "5": [ + "Pour chaque image embarquée (balise`` avec l'attribut`type=\"image/…\"` ) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ou un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) , cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent le [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est pertinent." + ], + "6": [ + "Pour chaque image vectorielle (balise`` ) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une alternative textuelle, cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent." + ], + "7": [ + "Pour chaque image bitmap (balise`` ) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ou comme [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) , ayant une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) ou un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) , cette alternative est-elle pertinente ?", + "S'il est présent, le contenu de l'attribut`title` est pertinent.", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent le [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) est pertinent." + ] + }, + "references": [ + { + "techniques": [ + "G100", + "G143" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Pour chaque image utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) , une solution d'accès alternatif au contenu ou à la fonction du [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) est-elle présente ?", + "tests": { + "1": [ + "Chaque image (balises`` ,`` ,`` ,`` ,`` ,`` ou possédant un attribut WAI-ARIA`role=\"img\"` ) utilisée comme [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) vérifie-t-elle une de ces conditions ?", + "Il existe une autre forme de [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) non graphique, au moins.", + "Il existe une autre solution d'accès à la fonctionnalité qui est sécurisée par le [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ." + ], + "2": [ + "Chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) associé à une image (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe un attribut`longdesc` qui donne l'adresse (URL) d'une page ou d'un emplacement dans la page contenant la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) contenant la référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image.", + "Il existe un [lien ou un bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ], + "2": [ + "Chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) contenant la référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image.", + "Il existe un [lien ou un bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ], + "3": [ + "Chaque image embarquée (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) contenant la référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image.", + "Il existe un [lien ou un bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ], + "4": [ + "Chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) de type`image` (balise`` avec l'attribut`type=\"image\"` ) [porteur d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe une [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) contenant la référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image.", + "Il existe un [lien ou un bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un attribut WAI-ARIA`aria-describedby` associant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ], + "5": [ + "Chaque image vectorielle (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe un attribut WAI-ARIA`aria-label` contenant l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et une référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente.", + "Il existe un attribut WAI-ARIA`aria-labelledby` associant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) faisant office d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et un autre faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un attribut WAI-ARIA`aria-describedby` associant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un [lien ou un bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ], + "6": [ + "Pour chaque image vectorielle (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , la référence éventuelle à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans l'attribut WAI-ARIA`aria-label` et la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) associée par l'attribut WAI-ARIA`aria-labelledby` ou`aria-describedby` sont-elles [correctement restituées](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-98) par les technologies d'assistance ?" + ], + "7": [ + "Chaque image bitmap (balise`` ), [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe un attribut WAI-ARIA`aria-label` contenant l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et une référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente.", + "Il existe un attribut WAI-ARIA`aria-labelledby` associant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) faisant office d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et un autre faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un contenu textuel entre`` et`` faisant référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image bitmap.", + "Il existe un contenu textuel entre`` et`` faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ], + "8": [ + "Pour chaque image bitmap (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui implémente une référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente, cette référence est-elle [correctement restituée par les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-98) ?" + ], + "9": [ + "Pour chaque image (balise`` ,`` avec l'attribut`type=\"image\"` ,`` ,`` ,`` ,`` ,`` , ou possédant un attribut WAI-ARIA`role=\"img\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui est accompagnée d'une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) et qui utilise un attribut WAI-ARIA`aria-describedby` , l'attribut WAI-ARIA`aria-describedby` associe-t-il la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ?" + ], + "10": [ + "Chaque balise possédant un attribut WAI-ARIA`role=\"img\"` [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , qui nécessite une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle une de ces conditions ?", + "Il existe un attribut WAI-ARIA`aria-label` contenant l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et une référence à une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente.", + "Il existe un attribut WAI-ARIA`aria-labelledby` associant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) faisant office d' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) et un autre faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un attribut WAI-ARIA`aria-describedby` associant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) faisant office de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "Il existe un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) permettant d'accéder à la [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) ." + ] + }, + "references": [ + { + "techniques": [ + "G92", + "G74", + "G73", + "H45", + "ARIA6" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ], + "technicalNote": [ + "Dans le cas du SVG, le manque de support de l'élément`` et`` par les technologies d'assistance crée une difficulté dans le cas de l'implémentation de l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) de l'image et de sa [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) . Dans ce cas, il est recommandé d'utiliser l'attribut WAI-ARIA`aria-label` pour implémenter à la fois l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) courte et la référence à [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente ou l'attribut WAI-ARIA`aria-labelledby` pour associer les passages de texte faisant office d'alternative courte et de [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) .", + "L'utilisation de l'attribut WAI-ARIA`aria-describedby` n'est pas recommandée pour lier une image (`` ,`` ,`` ,`` ) à sa [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) par manque de support des technologies d'assistance. Néanmoins, lorsqu’il est utilisé, l’attribut devra nécessairement faire référence à l’`id` de la zone contenant la description détaillée.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente peut être implémentée via une balise`
` , dans ce cas le doit être vérifié (utilisation de`
` et des attributs WAI-ARIA`role=\"figure\"` et`aria-label` , notamment)." + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Pour chaque image [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , cette description est-elle pertinente ?", + "tests": { + "1": [ + "Chaque image (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle ces conditions ?", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via l'adresse référencée dans l'attribut`longdesc` est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est pertinente.", + "Le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-describedby` est pertinent." + ], + "2": [ + "Chaque bouton de type`image` (balise`` avec l'attribut`type=\"image\"` ) [porteur d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle ces conditions ?", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est pertinente.", + "Le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-describedby` est pertinent." + ], + "3": [ + "Chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle ces conditions ?", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l' [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est pertinente.", + "Le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-describedby` est pertinent." + ], + "4": [ + "Chaque image embarquée (balise`` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle ces conditions ?", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image embarquée est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est pertinente.", + "Le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-describedby` est pertinent." + ], + "5": [ + "Chaque image vectorielle (balise`` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle ces conditions ?", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par le texte contenu dans balise`` ou`` est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) contenue dans la balise`<desc>` est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est pertinente.", + "Le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-describedby` est pertinent." + ], + "6": [ + "Chaque image bitmap (balise`<canvas>` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , ayant une [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) , vérifie-t-elle ces conditions ?", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par l' [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) dans la page et signalée par le texte contenu entre`<canvas>` et`</canvas>` est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) contenue entre`<canvas>` et`</canvas>` est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) adjacente à l'image bitmap est pertinente.", + "La [description détaillée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-35) via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est pertinente.", + "Le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-describedby` est pertinent." + ] + }, + "references": [ + { + "techniques": [ + "G92", + "F67" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Chaque [image texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , en l'absence d'un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacée par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [image texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) (balise`<img>` ou possédant un attribut WAI-ARIA`role=\"img\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , en l'absence d'un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacée par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?" + ], + "2": [ + "Chaque bouton « [image texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) » (balise`<input>` avec l'attribut`type=\"image\"` ) [porteur d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , en l'absence d'un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacé par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?" + ], + "3": [ + "Chaque [image texte objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-53) (balise`<object>` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , en l'absence d'un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacée par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?" + ], + "4": [ + "Chaque [image texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) embarquée (balise`<embed>` avec l'attribut`type=\"image/…\"` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , en l'absence d'un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacée par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?" + ], + "5": [ + "Chaque [image texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) bitmap (balise`<canvas>` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) , en l'absence d'un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacée par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?" + ], + "6": [ + "Chaque [image texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) SVG (balise`<svg>` ) [porteuse d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) et dont le texte n’est pas complètement structuré au moyen d’éléments`<text>` , en l’absence d’un [mécanisme de remplacement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-76) , doit si possible être remplacée par du [texte stylé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-112) . Cette règle est-elle respectée (hors cas particuliers) ?" + ] + }, + "references": [ + { + "techniques": [ + "G136", + "G140", + "C22", + "C30" + ] + }, + { + "wcag": [ + "9.1.4.5 / 1.4.5 Images of Text (AA)." + ] + } + ], + "technicalNote": [ + "Le texte dans les images vectorielles étant du texte réel, il n'est pas concerné par ce critère." + ], + "particularCases": [ + "Pour ce critère, il existe une gestion de cas particulier lorsque le texte fait partie du logo, d'une dénomination commerciale, d'un [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) , d'une [image-test](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-51) ou d'une image dont l'exactitude graphique serait considérée comme essentielle à la bonne transmission de l'information véhiculée par l'image. Dans ces situations, le critère est non applicable pour ces éléments.", + "Le texte dans les images vectorielles étant du texte réel, il n'est pas concerné par ce critère." + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Chaque [légende d'image](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) est-elle, si nécessaire, correctement reliée à l'image correspondante ?", + "tests": { + "1": [ + "Chaque image pourvue d'une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) (balise`<img>` ,`<input>` avec l'attribut`type=\"image\"` ou possédant un attribut WAI-ARIA`role=\"img\"` associée à une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente), vérifie-t-elle, si nécessaire, ces conditions ?", + "L'image (balise`<img>` ,`<input>` avec l'attribut`type=\"image\"` ou possédant un attribut WAI-ARIA`role=\"img\"` ) et sa [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente sont contenues dans une balise`<figure>` .", + "La balise`<figure>` possède un attribut WAI-ARIA`role=\"figure\"` ou`role=\"group\"` .", + "La balise`<figure>` possède un attribut WAI-ARIA`aria-label` dont le contenu est identique au contenu de la [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) .", + "La [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) est contenue dans une balise`<figcaption>` ." + ], + "2": [ + "Chaque [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) pourvue d'une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) (balise`<object>` avec l'attribut`type=\"image/…\"` associée à une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente), vérifie-t-elle, si nécessaire, ces conditions ?", + "L' [image objet](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-48) (balise`<object>` ) et sa [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente sont contenues dans une balise`<figure>` .", + "La balise`<figure>` possède un attribut WAI-ARIA`role=\"figure\"` ou`role=\"group\"` .", + "La balise`<figure>` possède un attribut WAI-ARIA`aria-label` dont le contenu est identique au contenu de la [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) .", + "La [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) est contenue dans une balise`<figcaption>` ." + ], + "3": [ + "Chaque image embarquée pourvue d'une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) (balise`<embed>` associée à une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente), vérifie-t-elle, si nécessaire, ces conditions ?", + "L'image embarquée (balise`<embed>` ) et sa [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente sont contenues dans une balise`<figure>` .", + "La balise`<figure>` possède un attribut WAI-ARIA`role=\"figure\"` ou`role=\"group\"` .", + "La balise`<figure>` possède un attribut WAI-ARIA`aria-label` dont le contenu est identique au contenu de la [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) .", + "La [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) est contenue dans une balise`<figcaption>` ." + ], + "4": [ + "Chaque image vectorielle pourvue d'une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) (balise`<svg>` associée à une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente), vérifie-t-elle, si nécessaire, ces conditions ?", + "L'image vectorielle (balise`<svg>` ) et sa [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente sont contenues dans une balise`<figure>` .", + "La balise`<figure>` possède un attribut WAI-ARIA`role=\"figure\"` ou`role=\"group\"` .", + "La balise`<figure>` possède un attribut WAI-ARIA`aria-label` dont le contenu est identique au contenu de la [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) .", + "La [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) est contenue dans une balise`<figcaption>` ." + ], + "5": [ + "Chaque image bitmap pourvue d'une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) (balise`<canvas>` associée à une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente), vérifie-t-elle, si nécessaire, ces conditions ?", + "L'image bitmap (balise`<canvas>` ) et sa [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) adjacente sont contenues dans une balise`<figure>` .", + "La balise`<figure>` possède un attribut WAI-ARIA`role=\"figure\"` ou`role=\"group\"` .", + "La balise`<figure>` possède un attribut WAI-ARIA`aria-label` dont le contenu est identique au contenu de la [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) .", + "La [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) est contenue dans une balise`<figcaption>` ." + ] + }, + "references": [ + { + "techniques": [ + "G140", + "ARIA4", + "ARIA6" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "technicalNote": [ + "L'implémentation d'un attribut WAI-ARIA`role=\"group\"` ou`role=\"figure\"` sur l'élément parent`<figure>` est destiné à pallier le manque de support actuel des éléments`<figure>` par les technologies d'assistance. L'utilisation d'un élément`<figcaption>` pour associer une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-64) à une image impose au minimum l'utilisation d'un attribut WAI-ARIA`aria-label` sur l'élément parent`<figure>` dont le contenu sera identique au contenu de l'élément`<figcaption>` . Pour s’assurer d’un support optimal, il peut également être fait une association explicite entre le contenu de l’ [alternative textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-8) de l’image et le contenu de l’élément`<figcaption>` , par exemple :" + ] + } + } + ] + }, + { + "topic": "Cadres", + "number": "2", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-14) a-t-il un [titre de cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-114) ?", + "tests": { + "1": [ + "Chaque [cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-14) (balise`<iframe>` ou`<frame>` ) a-t-il un attribut`title` ?" + ] + }, + "references": [ + { + "techniques": [ + "H64" + ] + }, + { + "wcag": [ + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Pour chaque [cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-14) ayant un [titre de cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-114) , ce [titre de cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-114) est-il pertinent ?", + "tests": { + "1": [ + "Pour chaque [cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-14) (balise`<iframe>` ou`<frame>` ) ayant un attribut`title` , le contenu de cet attribut est-il pertinent ?" + ] + }, + "references": [ + { + "techniques": [ + "H64" + ] + }, + { + "wcag": [ + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + } + ] + }, + { + "topic": "Couleurs", + "number": "3", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Dans chaque page web, l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?", + "tests": { + "1": [ + "Pour chaque mot ou ensemble de mots dont la mise en couleur est porteuse d'information, l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?" + ], + "2": [ + "Pour chaque indication de couleur donnée par un texte, l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?" + ], + "3": [ + "Pour chaque image [véhiculant une information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-54) , l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?" + ], + "4": [ + "Pour chaque [propriété CSS déterminant une couleur](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-93) et [véhiculant une information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-54) , l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?" + ], + "5": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) [véhiculant une information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-54) , l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?" + ], + "6": [ + "Pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) [véhiculant une information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-54) , l' [information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-56) ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?" + ] + }, + "references": [ + { + "techniques": [ + "G14", + "G182", + "G111", + "G117", + "G138", + "G205" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.1.4.1 / 1.4.1 Use of color (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Dans chaque page web, le [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, le texte et le texte en image sans effet de graisse d'une taille restituée inférieure à 24px vérifient-ils une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre le texte et son arrière-plan est de 4.5:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet à l'utilisateur d'afficher le texte avec un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 4.5:1, au moins." + ], + "2": [ + "Dans chaque page web, le texte et le texte en image en gras d’une taille restituée inférieure à 18,5px vérifient-ils une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre le texte et son arrière-plan est de 4.5:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet à l'utilisateur d'afficher le texte avec un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 4.5:1, au moins." + ], + "3": [ + "Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée supérieure ou égale à 24px vérifient-ils une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre le texte et son arrière-plan est de 3:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet à l'utilisateur d'afficher le texte avec un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 3:1, au moins." + ], + "4": [ + "Dans chaque page web, le texte et le texte en image en gras d'une taille restituée supérieure ou égale à 18,5px vérifient-ils une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre le texte et son arrière-plan est de 3:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet à l'utilisateur d'afficher le texte avec un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 3:1, au moins." + ], + "5": [ + "Dans le [mécanisme qui permet d'afficher un rapport de contraste conforme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) , le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre le texte et la couleur d’arrière-plan est-il suffisamment élevé ?" + ] + }, + "references": [ + { + "techniques": [ + "G18", + "G136", + "G148", + "G174", + "G145", + "C29" + ] + }, + { + "wcag": [ + "9.1.4.3 / 1.4.3 Contrast (Minimum) (AA)." + ] + } + ], + "particularCases": [ + "Dans ces situations, les critères sont non applicables pour ces éléments.", + { + "ul": [ + "Le texte fait partie d'un logo ou d'un nom de marque d'un organisme ou d'une société ;", + "Le texte ou l'image de texte est purement décoratif ;", + "Le texte fait partie d'une image [véhiculant une information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-54) mais le texte lui-même n'apporte aucune information essentielle ;", + "Le texte ou l'image de texte fait partie d'un élément d'interface sur lequel aucune action n'est possible (par exemple un bouton avec l'attribut`disabled` )." + ] + } + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Dans chaque page web, les couleurs utilisées dans les [composants d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) ou les éléments graphiques porteurs d'informations sont-elles suffisamment contrastées (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) entre les couleurs d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) dans ses différents états et la [couleur d'arrière-plan contiguë](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-34) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) est de 3:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 3:1, au moins." + ], + "2": [ + "Dans chaque page web, le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) des différentes couleurs composant un [élément graphique](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-36) , lorsqu'elles sont nécessaires à sa compréhension, et la [couleur d'arrière-plan contiguë](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-34) , vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) est de 3:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 3:1, au moins." + ], + "3": [ + "Dans chaque page web, le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) des différentes [couleurs contiguës](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-34) entre elles d'un [élément graphique](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-36) , lorsqu'elles sont nécessaires à sa compréhension, vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Le rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) est de 3:1, au moins.", + "Un [mécanisme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) permet un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) de 3:1, au moins." + ], + "4": [ + "Dans le [mécanisme qui permet d'afficher un rapport de contraste conforme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-77) , les couleurs du composant ou des éléments graphiques porteurs d’informations qui le composent, sont-elles suffisamment contrastées ?" + ] + }, + "references": [ + { + "techniques": [ + "G18", + "G195", + "G207", + "G174", + "G145", + "G183", + "F78" + ] + }, + { + "wcag": [ + "9.1.4.11 / 1.4.11 Non-text Contrast (AA)." + ] + } + ], + "particularCases": [ + "Les cas suivants sont non applicables pour ce critère :", + { + "ul": [ + "[Composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) inactif (exemple un bouton avec un attribut`disabled` ) sur lequel aucune action n'est possible.", + "[Composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) pour lequel l'apparence est gérée par les styles natifs du navigateur sans aucune modification par l'auteur (exemple le style au focus natif dans Chrome ou Firefox).", + "[Composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) pour lequel la couleur n'est pas nécessaire pour identifier le composant ou son état (exemple un groupe de liens faisant office de navigation dont la position dans la page, la taille et la couleur du texte permettent de comprendre qu'il s'agit de liens même si la couleur du soulignement des liens avec le fond blanc n'a pas un ratio de 3:1 et que le texte lui a un ratio de 4.5:1).", + "Élément graphique ou parties d'élément graphique non [porteur d'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-49) ou ayant une alternative (description longue, informations identiques visibles dans la page).", + "Élément graphique ou parties d'élément graphique faisant partie d'un logo ou du nom de marque d'un organisme ou d'une société.", + "Élément graphique ou parties d'élément graphique dont la présentation est essentielle à l'information véhiculée (exemples : drapeaux, logotypes, photos de personnes ou de scènes, captures d'écran, diagrammes médicaux, carte de chaleurs).", + "Élément graphique ou parties d'élément graphique dynamiques dont le [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) au survol / focus est suffisant." + ] + } + ] + } + } + ] + }, + { + "topic": "Multimédia", + "number": "4", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré a-t-il, si nécessaire, une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) ou une audiodescription (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré seulement audio, vérifie-t-il, si nécessaire, l'une de ces conditions (hors cas particuliers) ?", + "Il existe une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) .", + "Il existe une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) adjacente clairement identifiable." + ], + "2": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré seulement vidéo vérifie-t-il, si nécessaire, l'une de ces conditions (hors cas particuliers) ?", + "Il existe une [version alternative « audio seulement »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-122) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) .", + "Il existe une [version alternative « audio seulement »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-122) adjacente clairement identifiable.", + "Il existe une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) .", + "Il existe une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) adjacente clairement identifiable.", + "Il existe une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) .", + "Il existe une version alternative avec une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) ." + ], + "3": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré vérifie-t-il, si nécessaire, une de ces conditions (hors cas particuliers) ?", + "Il existe une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) .", + "Il existe une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) adjacente clairement identifiable.", + "Il existe une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) .", + "Il existe une version alternative avec une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) ." + ] + }, + "references": [ + { + "techniques": [ + "G58", + "G69", + "G78", + "G158", + "G159", + "G173", + "G8", + "G166", + "H96", + "SM6", + "SM7" + ] + }, + { + "wcag": [ + "9.1.2.1 / 1.2.1 Audio-only and Video-only (Prerecorded) (A),", + "9.1.2.3 / 1.2.3 Audio Description and Media Alternative (Prerecorded) (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque :", + { + "ul": [ + "Le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) est utilisé à des fins décoratives (c'est-à-dire qu'il n'apporte aucune information) ;", + "Le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) 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](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) est utilisé pour accéder à une version agrandie ;", + "Le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) est utilisé comme un [CAPTCHA](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-15) ;", + "Le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) fait partie d'un test qui deviendrait inutile si la [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) , les [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) ou l'audiodescription étaient communiqués ;", + "Pour les services de l’État, les collectivités territoriales et leurs établissements : si le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) 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](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) a été publié avant le 23 septembre 2020, il est exempté de l’obligation d’accessibilité." + ] + }, + "Dans ces situations, le critère est non applicable.", + "Ce cas particulier s'applique également aux critères , , ." + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré ayant une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) ou une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) , celles-ci sont-elles pertinentes (hors cas particuliers) ?", + "tests": { + "1": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré seulement audio, ayant une [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) , celle-ci est-elle pertinente (hors cas particuliers) ?" + ], + "2": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré seulement vidéo vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "La [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) est pertinente.", + "L' [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) est pertinente.", + "L' [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) de la version alternative est pertinente.", + "La [version alternative « audio seulement »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-122) est pertinente." + ], + "3": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré vérifie-t-il, si nécessaire, une de ces conditions (hors cas particuliers) ?", + "La [transcription textuelle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-116) est pertinente.", + "L’ [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) est pertinente.", + "L’ [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) de la version alternative est pertinente." + ] + }, + "references": [ + { + "techniques": [ + "F30", + "F67", + "SM6", + "SM7" + ] + }, + { + "wcag": [ + "9.1.2.1 / 1.2.1 Audio-only and Video-only (Prerecorded) (A),", + "9.1.2.3 / 1.2.3 Audio Description and Media Alternative (Prerecorded) (A)." + ] + } + ], + "particularCases": [ + "Voir cas particuliers ." + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré a-t-il, si nécessaire, des [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré vérifie-t-il, si nécessaire, l'une de ces conditions (hors cas particuliers) ?", + "Le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé possède des [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) .", + "Il existe une version alternative possédant des [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) ." + ], + "2": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré possédant des [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) diffusés via une balise`<track>` , la balise`<track>` possède-t-elle un attribut`kind=\"captions\"` ?" + ] + }, + "references": [ + { + "techniques": [ + "G58", + "G93", + "G87", + "H95", + "SM11", + "SM12", + "F74", + "F75" + ] + }, + { + "wcag": [ + "9.1.2.2 / 1.2.2 Captions (Prerecorded) (A)." + ] + } + ], + "particularCases": [ + "Voir cas particuliers ." + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré ayant des [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) , ces sous-titres sont-ils pertinents ?", + "tests": { + "1": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré ayant des [sous-titres synchronisés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-104) , ces sous-titres sont-ils pertinents ?" + ] + }, + "references": [ + { + "techniques": [ + "G93", + "G87", + "SM11", + "SM12", + "F8", + "F74", + "F75" + ] + }, + { + "wcag": [ + "9.1.2.2 / 1.2.2 Captions (Prerecorded) (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré a-t-il, si nécessaire, une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré seulement vidéo vérifie-t-il, si nécessaire, une de ces conditions (hors cas particuliers) ?", + "Il existe une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) .", + "Il existe une version alternative avec une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) ." + ], + "2": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé pré-enregistré vérifie-t-il, si nécessaire, une de ces conditions (hors cas particuliers) ?", + "Il existe une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) .", + "Il existe une version alternative avec une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) ." + ] + }, + "references": [ + { + "techniques": [ + "G8", + "G58", + "G78", + "G173", + "H96", + "SM1", + "SM2", + "SM6", + "SM7" + ] + }, + { + "wcag": [ + "9.1.2.5 / 1.2.5 Audio Description (Prerecorded) (AA)." + ] + } + ], + "particularCases": [ + "Voir cas particuliers ." + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré ayant une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) , celle-ci est-elle pertinente ?", + "tests": { + "1": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) pré-enregistré seulement vidéo ayant une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) , celle-ci est-elle pertinente ?" + ], + "2": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) synchronisé ayant une [audiodescription synchronisée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-11) , celle-ci est-elle pertinente ?" + ] + }, + "references": [ + { + "techniques": [ + "SM1", + "SM2", + "SM6", + "SM7" + ] + }, + { + "wcag": [ + "9.1.2.5 / 1.2.5 Audio Description (Prerecorded) (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) est-il clairement identifiable (hors cas particuliers) ?", + "tests": { + "1": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) seulement son, seulement vidéo ou synchronisé, le contenu textuel adjacent permet-il d'identifier clairement le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) (hors cas particuliers) ?" + ] + }, + "references": [ + { + "techniques": [ + "G68", + "G100" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) est utilisé à des fins décoratives (c'est-à-dire qu'il n'apporte aucune information). Dans cette situation, le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) a-t-il, si nécessaire, une alternative (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) vérifie-t-il, si nécessaire, une de ces conditions (hors cas particuliers) ?", + "Un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) , clairement identifiable, permet d’accéder à une page contenant une alternative.", + "Un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) , clairement identifiable, permet d'accéder à une alternative dans la page." + ], + "2": [ + "Chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) associé à une alternative vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "La page référencée par le [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) est accessible.", + "L'alternative dans la page, référencée par le [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) , est accessible." + ] + }, + "references": [ + { + "techniques": [ + "H35", + "H46" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque :", + { + "ul": [ + "Le [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) est utilisé à des fins décoratives (c'est-à-dire qu'il n'apporte aucune information) ;", + "Le [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) est diffusé dans un [environnement maîtrisé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-39) ;", + "Le [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) est inséré via JavaScript en vérifiant la présence et la version du plug-in, en remplacement d'un [contenu alternatif](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-25) déjà présent." + ] + }, + "Dans ces situations, le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) ayant une alternative, cette alternative est-elle pertinente ?", + "tests": { + "1": [ + "Pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) ayant une alternative, cette alternative permet-elle d'accéder au même contenu et à des fonctionnalités similaires ?" + ] + }, + "references": [ + { + "techniques": [ + "H46", + "F30" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "10", + "title": "Chaque son déclenché automatiquement est-il [contrôlable](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-31) par l'utilisateur ?", + "tests": { + "1": [ + "Chaque séquence sonore déclenchée automatiquement via une balise`<object>` ,`<video>` ,`<audio>` ,`<embed>` ,`<bgsound>` ou un code JavaScript vérifie-t-elle une de ces conditions ?", + "La séquence sonore a une durée inférieure ou égale à 3 secondes.", + "La séquence sonore peut être stoppée sur action de l'utilisateur.", + "Le volume de la séquence sonore peut être contrôlé par l'utilisateur indépendamment du contrôle de volume du système." + ] + }, + "references": [ + { + "techniques": [ + "G60", + "G170", + "G171", + "F23", + "F93" + ] + }, + { + "wcag": [ + "9.1.4.2 / 1.4.2 Audio Control (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "11", + "title": "La consultation de chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) est-elle, si nécessaire, [contrôlable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) ?", + "tests": { + "1": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) a-t-il, si nécessaire, les [fonctionnalités de contrôle](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-32) de sa consultation ?" + ], + "2": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) , chaque fonctionnalité vérifie-t-elle une de ces conditions ?", + "La fonctionnalité est [contrôlable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) .", + "Une fonctionnalité [accessible par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) permettant de réaliser la même action est présente dans la page." + ], + "3": [ + "Pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) , chaque fonctionnalité vérifie-t-elle une de ces conditions ?", + "La fonctionnalité est [activable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) .", + "Une fonctionnalité [activable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) permettant de réaliser la même action est présente dans la page." + ] + }, + "references": [ + { + "techniques": [ + "G4", + "G90", + "G202" + ] + }, + { + "wcag": [ + "9.2.1.1 / 2.1.1 Keyboard (A),", + " 9.2.1.2 / 2.1.2 No Keyboard Trap (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "12", + "title": "La consultation de chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) est-elle [contrôlable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) ?", + "tests": { + "1": [ + "Pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) , chaque fonctionnalité vérifie-t-elle une de ces conditions ?", + "La fonctionnalité est [accessible par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) .", + "Une fonctionnalité [accessible par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) permettant de réaliser la même action est présente dans la page." + ], + "2": [ + "Pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) , chaque fonctionnalité vérifie-t-elle une de ces conditions ?", + "La fonctionnalité est [activable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) .", + "Une fonctionnalité [activable par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) permettant de réaliser la même action est présente dans la page." + ] + }, + "references": [ + { + "techniques": [ + "G4", + "G90" + ] + }, + { + "wcag": [ + " 9.2.1.1 / 2.1.1 Keyboard (A),", + " 9.2.1.2 / 2.1.2 No Keyboard Trap (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "13", + "title": "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) et [non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) est-il [compatible avec les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-22) (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) et [non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "[Le nom, le rôle, la valeur, le paramétrage et les changements d'états](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-62) des [composants d'interfaces](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) sont accessibles aux technologies d'assistance via une API d'accessibilité.", + "Une alternative [compatible avec une API d'accessibilité](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-22) permet d'accéder aux mêmes fonctionnalités." + ], + "2": [ + "Chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) et [non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) qui possède une alternative [compatible avec les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-22) , vérifie-t-il une de ces conditions ?", + "L'alternative est adjacente au [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) ou [non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) .", + "L'alternative est accessible via un [lien ou bouton adjacent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-66) .", + "Un mécanisme permet de remplacer le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) ou [non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) par son alternative." + ] + }, + "references": [ + { + "techniques": [ + "G10", + "G135", + "F15", + "F54" + ] + }, + { + "wcag": [ + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque le [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) ou [non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) est utilisé à des fins décoratives (c'est-à-dire qu'il n'apporte aucune information). Dans ces situations, le critère est non applicable." + ] + } + } + ] + }, + { + "topic": "Tableaux", + "number": "5", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [tableau de données complexe](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-109) a-t-il un [résumé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-99) ?", + "tests": { + "1": [ + "Pour chaque [tableau de données complexe](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-109) un [résumé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-99) est-il disponible ?" + ] + }, + "references": [ + { + "techniques": [ + "H73" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ], + "technicalNote": [ + "La spécification HTML propose plusieurs [méthodes pour lier un résumé à un tableau](https://html.spec.whatwg.org/multipage/tables.html#table-descriptions-techniques) (tableau lié à un passage de texte avec l’attribut`aria-describedby` , tableau groupé dans un élément`figure` avec un résumé présent dans un élément`figcaption` ou un élément`p` , résumé présent dans un élément`details` contenu dans l’élément`caption` ). Ces méthodes n’ont pas un support suffisant pour être utilisées actuellement." + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Pour chaque [tableau de données complexe](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-109) ayant un [résumé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-99) , celui-ci est-il pertinent ?", + "tests": { + "1": [ + "Pour chaque [tableau de données complexe](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-109) ayant un [résumé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-99) , celui-ci est-il pertinent ?" + ] + }, + "references": [ + { + "techniques": [ + "H73" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Pour chaque [tableau de mise en forme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-110) , le contenu linéarisé reste-t-il compréhensible ?", + "tests": { + "1": [ + "Chaque [tableau de mise en forme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-110) vérifie-t-il ces conditions ?", + "Le contenu linéarisé reste compréhensible.", + "La balise`<table>` possède un attribut`role=\"presentation\"` ." + ] + }, + "references": [ + { + "techniques": [ + "F49", + "ARIA4" + ] + }, + { + "wcag": [ + "9.1.3.2 / 1.3.2 Meaningful Sequence (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Pour chaque [tableau de données ayant un titre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-108) , le titre est-il correctement [associé au tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-108) ?", + "tests": { + "1": [ + "Pour chaque [tableau de données ayant un titre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-108) , le titre est-il correctement [associé au tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-108) ?" + ] + }, + "references": [ + { + "techniques": [ + "H39" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Pour chaque [tableau de données ayant un titre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-108) , celui-ci est-il pertinent ?", + "tests": { + "1": [ + "Pour chaque [tableau de données ayant un titre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-108) , ce titre permet-il d'identifier le contenu du [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) de manière claire et concise ?" + ] + }, + "references": [ + { + "techniques": [ + "H39" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Pour chaque [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) , chaque [en-tête de colonnes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) et chaque [en-tête de lignes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) sont-ils correctement déclarés ?", + "tests": { + "1": [ + "Pour chaque [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) , chaque [en-tête de colonnes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) s'appliquant à la totalité de la colonne vérifie-t-il une de ces conditions ?", + "L' [en-tête de colonnes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) est structuré au moyen d'une balise`<th>` .", + "L' [en-tête de colonnes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) est structuré au moyen d'une balise pourvue d'un attribut WAI-ARIA`role=\"columnheader\"` ." + ], + "2": [ + "Pour chaque [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) , chaque [en-tête de lignes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) s'appliquant à la totalité de la ligne vérifie-t-il une de ces conditions ?", + "L' [en-tête de lignes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) est structuré au moyen d'une balise`<th>` .", + "L' [en-tête de lignes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) est structuré au moyen d'une balise pourvue d'un attribut WAI-ARIA`role=\"rowheader\"` ." + ], + "3": [ + "Pour chaque [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) , chaque [en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) ne s'appliquant pas à la totalité de la ligne ou de la colonne est-il structuré au moyen d'une balise`<th>` ?" + ], + "4": [ + "Pour chaque [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) , chaque cellule associée à plusieurs [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) est-elle structurée au moyen d’une balise`<td>` ou`<th>` ?" + ] + }, + "references": [ + { + "techniques": [ + "H51", + "F91" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Pour chaque [tableau de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) , la technique appropriée permettant d'associer chaque cellule avec ses [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) est-elle utilisée (hors cas particuliers) ?", + "tests": { + "1": [ + "Pour chaque contenu de balise`<th>` s'appliquant à la totalité de la ligne ou de la colonne, la balise`<th>` respecte-t-elle une de ces conditions (hors cas particuliers) ?", + "La balise`<th>` possède un attribut`id` unique.", + "La balise`<th>` possède un attribut`scope` .", + "La balise`<th>` possède un attribut WAI-ARIA`role=\"rowheader\"` ou`role=\"columnheader\"` ." + ], + "2": [ + "Pour chaque contenu de balise`<th>` s'appliquant à la totalité de la ligne ou de la colonne et possédant un attribut`scope` , la balise`<th>` vérifie-t-elle une de ces conditions ?", + "La balise`<th>` possède un attribut`scope` avec la valeur`\"row\"` pour les [en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) de lignes.", + "La balise`<th>` possède un attribut`scope` avec la valeur`\"col\"` pour les [en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) de colonnes." + ], + "3": [ + "Pour chaque contenu de balise`<th>` ne s'appliquant pas à la totalité de la ligne ou de la colonne, la balise`<th>` vérifie-t-elle ces conditions ?", + "La balise`<th>` ne possède pas d'attribut`scope` .", + "La balise`<th>` ne possède pas d'attribut WAI-ARIA`role=\"rowheader\"` ou`role=\"columnheader\"` .", + "La balise`<th>` possède un attribut`id` unique." + ], + "4": [ + "Pour chaque contenu de balise`<td>` ou`<th>` associée à un ou plusieurs [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) possédant un attribut`id` , la balise vérifie-t-elle ces conditions ?", + "La balise possède un attribut`headers` .", + "L'attribut`headers` possède la liste des valeurs d'attribut`id` des [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) associés." + ], + "5": [ + "Pour chaque balise pourvue d'un attribut WAI-ARIA`role=\"rowheader\"` ou`role=\"columnheader\"` dont le contenu s'applique à la totalité de la ligne ou de la colonne, la balise vérifie-t-elle une de ces conditions ?", + "La balise possède un attribut WAI-ARIA`role=\"rowheader\"` pour les [en-têtes de lignes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) .", + "La balise possède un attribut WAI-ARIA`role=\"columnheader\"` pour les [en-têtes de colonnes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) ." + ] + }, + "references": [ + { + "techniques": [ + "H43", + "H63", + "F90" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ], + "technicalNote": [ + "Si l'attribut`headers` est implémenté sur une cellule déjà reliée à un [en-tête (de ligne ou de colonne)](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) avec l'attribut`scope` (avec la valeur`col` ou`row` ), c'est l' [en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) ou les [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) référencés par l'attribut`headers` qui seront restitués aux technologies d'assistance. Les [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) reliés avec l'attribut`scope` seront ignorés." + ], + "particularCases": [ + "Dans le cas de tableaux de données ayant des [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) sur une seule ligne ou une seule colonne, les [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) peuvent être structurés à l'aide de balise`<th>` sans attribut`scope` .", + "Si l'attribut`headers` est implémenté sur une cellule déjà reliée à un [en-tête (de ligne ou de colonne)](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) avec l'attribut`scope` (avec la valeur`col` ou`row` ), c'est l' [en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) ou les [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) référencés par l'attribut`headers` qui seront restitués aux technologies d'assistance. Les [en-têtes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-38) reliés avec l'attribut`scope` seront ignorés." + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Chaque [tableau de mise en forme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-110) ne doit pas utiliser d'éléments propres aux [tableaux de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-107) . Cette règle est-elle respectée ?", + "tests": { + "1": [ + "Chaque [tableau de mise en forme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-110) (balise`<table>` ) vérifie-t-il ces conditions ?", + "Le [tableau de mise en forme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-110) (balise`<table>` ) n’a pas d’attribut`summary` (sinon vide) et ne contient pas de balises`<caption>` ,`<th>` ,`<thead>` ,`<tfoot>` ,`<colgroup>` ou de balises ayant un attribut WAI-ARIA`role=\"rowheader\"` ,`role=\"columnheader\"` .", + "Les cellules du [tableau de mise en forme](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-110) (balises`<td>` ) ne possèdent pas d'attributs`scope` ,`headers` ,`axis` ." + ] + }, + "references": [ + { + "techniques": [ + "F46" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + } + ] + }, + { + "topic": "Liens", + "number": "6", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-65) est-il explicite (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [lien texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-70) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) seul permet d'en comprendre la fonction et la destination.", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) additionné au [contexte du lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-28) permet d'en comprendre la fonction et la destination." + ], + "2": [ + "Chaque [lien image](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-69) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) seul permet d'en comprendre la fonction et la destination.", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) additionné au [contexte du lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-28) permet d'en comprendre la fonction et la destination." + ], + "3": [ + "Chaque [lien composite](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-67) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) seul permet d'en comprendre la fonction et la destination.", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) additionné au [contexte du lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-28) permet d'en comprendre la fonction et la destination." + ], + "4": [ + "Chaque [lien SVG](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-73) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) seul permet d'en comprendre la fonction et la destination.", + "L' [intitulé de lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) additionné au [contexte du lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-28) permet d'en comprendre la fonction et la destination." + ], + "5": [ + "Pour chaque [lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-65) ayant un [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) , le [nom accessible du lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) contient-il au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) (hors cas particuliers) ?" + ] + }, + "references": [ + { + "techniques": [ + "H30", + "H78", + "H79", + "H80", + "H81", + "G53", + "G91", + "F63", + "F89", + "ARIA7", + "ARIA8" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.2.4.4 / 2.4.4 Link Purpose (In Context) (A),", + "9.2.5.3 / 2.5.3 Label in Name (A)." + ] + } + ], + "technicalNote": [ + "Lorsque l’intitulé visible est complété par une autre expression dans le nom accessible :", + { + "ul": [ + "WCAG insiste sur le placement de l’intitulé visible au début du nom accessible sans toutefois réserver l’exclusivité de cet emplacement ;", + "WCAG considère comme un cas d’échec une correspondance non exacte de la chaîne de caractères de l’intitulé visible au sein du nom accessible." + ] + }, + "Par exemple, si l’on considère l’intitulé visible « Commander maintenant » complété dans le nom accessible par l’expression « produit X », on peut avoir les différents cas suivants :", + { + "ul": [ + "« Commander maintenant produit X » est valide (bonne pratique) ;", + "« Produit X : commander maintenant » est valide ;", + "« Commander produit X maintenant » est non valide." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier pour les tests 6.1.1, 6.1.2, 6.1.3 et 6.1.4 lorsque le lien est [ambigu pour tout le monde](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-9) . Dans cette situation, où il n'est pas possible de rendre le lien explicite dans son contexte, le critère est non applicable.", + "Il existe une gestion de cas particulier pour le test 6.1.5 lorsque :", + { + "ul": [ + "La ponctuation et les lettres majuscules sont présentes dans le texte de l’ [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) : elles peuvent être ignorées dans le nom accessible sans porter à conséquence.", + "Le texte de l’ [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) sert de symbole : le texte 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 la note ci-dessous)." + ] + }, + "Note : 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 (ex. : « 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 »).", + "Lorsque l’intitulé visible est complété par une autre expression dans le nom accessible :", + { + "ul": [ + "WCAG insiste sur le placement de l’intitulé visible au début du nom accessible sans toutefois réserver l’exclusivité de cet emplacement ;", + "WCAG considère comme un cas d’échec une correspondance non exacte de la chaîne de caractères de l’intitulé visible au sein du nom accessible." + ] + }, + "Par exemple, si l’on considère l’intitulé visible « Commander maintenant » complété dans le nom accessible par l’expression « produit X », on peut avoir les différents cas suivants :", + { + "ul": [ + "« Commander maintenant produit X » est valide (bonne pratique) ;", + "« Produit X : commander maintenant » est valide ;", + "« Commander produit X maintenant » est non valide." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Dans chaque page web, chaque [lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-65) a-t-il un [intitulé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) ?", + "tests": { + "1": [ + "Dans chaque page web, chaque [lien](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-65) a-t-il un [intitulé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) entre`<a>` et`</a>` ?" + ] + }, + "references": [ + { + "techniques": [ + "H30", + "G91", + "F89" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.2.4.4 / 2.4.4 Link Purpose (In Context) (A)." + ] + } + ], + "technicalNote": [ + "Une ancre n’est pas un lien même si pendant longtemps l’élément`<a>` a servi de support à cette technique. Elle n’est donc pas concernée par le présent critère.", + "Il faut distinguer les ancres et les [liens](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-65) vers les ancres. Dans le cadre de ce critère, les ancres dont il est question sont des éléments`<a>` sans attribut`href` avec un attribut`name` (avant HTML5) ou`id` qui permettent de faire, ensuite, un lien vers la zone identifiée.", + "Ainsi, une ancre, par exemple`<a id=\"ancre\"></a>` , n'entre pas dans le périmètre de ce critère mais un lien vers une ancre, par exemple`<a href=\"#ancre\"></a>` , sera bien concerné et devra avoir un intitulé entre les balises ouvrante et fermante.", + "Il faut distinguer les ancres et les [liens](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-65) vers les ancres. Dans le cadre de ce critère, les ancres dont il est question sont des éléments`<a>` sans attribut`href` avec un attribut`name` (avant HTML5) ou`id` qui permettent de faire, ensuite, un lien vers la zone identifiée.", + "Ainsi, une ancre, par exemple`<a id=\"ancre\"></a>` , n'entre pas dans le périmètre de ce critère mais un lien vers une ancre, par exemple`<a href=\"#ancre\"></a>` , sera bien concerné et devra avoir un intitulé entre les balises ouvrante et fermante." + ] + } + } + ] + }, + { + "topic": "Scripts", + "number": "7", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) est-il, si nécessaire, [compatible avec les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-22) ?", + "tests": { + "1": [ + "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui génère ou contrôle un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) vérifie-t-il, si nécessaire, une de ces conditions ?", + "[Le nom, le rôle, la valeur, le paramétrage et les changements d'états](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-62) sont accessibles aux technologies d'assistance via une API d'accessibilité.", + "Un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) accessible permettant d'accéder aux mêmes fonctionnalités est présent dans la page.", + "Une [alternative](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-5) accessible permet d'accéder aux mêmes fonctionnalités." + ], + "2": [ + "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui génère ou contrôle un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) respecte-t-il une de ces conditions ?", + "Le [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) est [correctement restitué](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-98) par les technologies d'assistance.", + "Une [alternative](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-5) accessible permet d'accéder aux mêmes fonctionnalités." + ], + "3": [ + "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui génère ou contrôle un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) vérifie-t-il ces conditions (hors cas particuliers) ?", + "Le composant possède un nom pertinent.", + "Le nom accessible du composant contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "Le composant possède un rôle pertinent." + ] + }, + "references": [ + { + "techniques": [ + "G10", + "G135", + "G136", + "F15", + "F19", + "F20", + "F42", + "F59", + "F79", + "ARIA4", + "ARIA5", + "ARIA18", + "ARIA19", + "SCR21" + ] + }, + { + "wcag": [ + "9.2.5.3 / 2.5.3 Label in Name (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "technicalNote": [ + "Le critère 7.1 implémente la notion de « [compatible avec les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-22) » tel que définie par les WCAG, ainsi que le recours à WAI-ARIA pour rendre un composant ou une fonctionnalité accessible. Le bon usage de WAI-ARIA est vérifié via les tests 7.1.1, 7.1.2, 7.1.3.", + "Note importante : dans un environnement HTML5, beaucoup de composants peuvent nécessiter JavaScript pour fonctionner ; en conséquence la fourniture d'une alternative à un composant JavaScript qui ne pourrait pas être rendu accessible devra bénéficier d'une méthode spécifique au composant en cause, permettant de le remplacer par une alternative accessible (et de le réactiver). Cela signifie que la désactivation de JavaScript pour l'ensemble de la page ne sera pas acceptée comme une méthode valable, à moins qu'elle ne remette pas en cause l'utilisation des autres composants." + ], + "particularCases": [ + "Il existe une gestion de cas particulier pour le test 7.1.3 lorsque :", + { + "ul": [ + "La ponctuation et les lettres majuscules sont présentes dans le texte de l’ [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) : elles peuvent être ignorées dans le nom accessible sans porter à conséquence.", + "Le texte de l’ [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) sert de symbole : le texte 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 la note ci-dessous)." + ] + }, + "Note : 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 (ex. : « 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 »).", + "Le critère 7.1 implémente la notion de « [compatible avec les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-22) » tel que définie par les WCAG, ainsi que le recours à WAI-ARIA pour rendre un composant ou une fonctionnalité accessible. Le bon usage de WAI-ARIA est vérifié via les tests 7.1.1, 7.1.2, 7.1.3.", + "Note importante : dans un environnement HTML5, beaucoup de composants peuvent nécessiter JavaScript pour fonctionner ; en conséquence la fourniture d'une alternative à un composant JavaScript qui ne pourrait pas être rendu accessible devra bénéficier d'une méthode spécifique au composant en cause, permettant de le remplacer par une alternative accessible (et de le réactiver). Cela signifie que la désactivation de JavaScript pour l'ensemble de la page ne sera pas acceptée comme une méthode valable, à moins qu'elle ne remette pas en cause l'utilisation des autres composants." + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Pour chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) ayant une alternative, cette alternative est-elle pertinente ?", + "tests": { + "1": [ + "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) débutant par la balise`<script>` et ayant une alternative vérifie-t-il une de ces conditions ?", + "L'alternative entre`<noscript>` et`</noscript>` permet d'accéder à des contenus et des fonctionnalités similaires.", + "La page affichée, lorsque JavaScript est désactivé, permet d'accéder à des contenus et des fonctionnalités similaires.", + "La page alternative permet d'accéder à des contenus et des fonctionnalités similaires.", + "Le langage de script côté serveur permet d'accéder à des contenus et des fonctionnalités similaires.", + "L'alternative présente dans la page permet d'accéder à des contenus et des fonctionnalités similaires." + ], + "2": [ + "Chaque élément non textuel mis à jour par un [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) (dans la page, ou dans un [cadre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-14) ) et ayant une [alternative](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-5) vérifie-t-il ces conditions ?", + "L’alternative de l’élément non textuel est mise à jour.", + "L’alternative mise à jour est pertinente." + ] + }, + "references": [ + { + "techniques": [ + "G136", + "F19", + "F20" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) est-il [contrôlable par le clavier et par tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque élément possédant un gestionnaire d'événement contrôlé par un [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L'élément est [accessible par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) .", + "Un élément [accessible par le clavier et tout dispositif de pointage](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-2) permettant de réaliser la même action est présent dans la page." + ], + "2": [ + "Un [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) ne doit pas supprimer le focus d'un élément qui le reçoit. Cette règle est-elle respectée (hors cas particuliers) ?" + ] + }, + "references": [ + { + "techniques": [ + "G90", + "G202", + "F42", + "F54", + "F55", + "SCR2", + "SCR20", + "SCR29", + "SCR35" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.2.1.1 / 2.1.1 Keyboard (A),", + "9.2.4.7 / 2.4.7 Focus Visible (AA)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque la fonctionnalité dépend de l'utilisation d'un gestionnaire d'événement sans équivalent universel ; par exemple, une application de dessin à main levée ne pourra pas être rendue contrôlable au clavier. Dans ces situations, le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Pour chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui initie un [changement de contexte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-19) , l'utilisateur est-il averti ou en a-t-il le contrôle ?", + "tests": { + "1": [ + "Chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui initie un [changement de contexte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-19) vérifie-t-il une de ces conditions ?", + "L'utilisateur est averti par un texte de l'action du [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) et du type de changement avant son déclenchement.", + "Le [changement de contexte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-19) est initié par un bouton (`<input>` de type`submit` ,`button` ou`image` ou balise`<button>` ) explicite.", + "Le [changement de contexte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-19) est initié par un lien explicite." + ] + }, + "references": [ + { + "techniques": [ + "G13", + "G76", + "G80", + "G107", + "H32", + "H84", + "F9", + "F22", + "F36", + "F37", + "F41", + "SCR19" + ] + }, + { + "wcag": [ + "9.3.2.1 / 3.2.1 On Focus (A),", + "9.3.2.2 / 3.2.2 On Input (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Dans chaque page web, les [messages de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) sont-ils [correctement restitués par les technologies d'assistance](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-98) ?", + "tests": { + "1": [ + "Chaque [message de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) qui informe de la réussite, du résultat d'une action ou bien de l'état d'une application utilise-t-il l'attribut WAI-ARIA`role=\"status\"` ?" + ], + "2": [ + "Chaque [message de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) qui présente une suggestion, ou avertit de l'existence d'une erreur utilise-t-il l'attribut WAI-ARIA`role=\"alert\"` ?" + ], + "3": [ + "Chaque [message de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) qui indique la progression d'un processus utilise-t-il l'un des attributs WAI-ARIA`role=\"log\"` ,`role=\"progressbar\"` ou`role=\"status\"` ?" + ] + }, + "references": [ + { + "techniques": [ + "ARIA19", + "ARIA22", + "ARIA23" + ] + }, + { + "wcag": [ + "9.4.1.3 / 4.1.3 Status Messages (AA)." + ] + } + ], + "technicalNote": [ + "Les rôles WAI-ARIA`log` ,`status` et`alert` ont implicitement une valeur d'attribut WAI-ARIA`aria-live` et`aria-atomic` . On pourra donc considérer (conformément à la spécification WAI-ARIA 1.1) que :", + { + "ul": [ + "Un attribut WAI-ARIA`aria-live=\"polite\"` associé à un [message de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) peut valoir pour un rôle WAI-ARIA`log` .", + "Un attribut WAI-ARIA`aria-live=\"polite\"` et un attribut`aria-atomic=\"true\"` associés à un [message de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) peuvent valoir pour un rôle WAI-ARIA`status` .", + "Un attribut`aria-live=\"assertive\"` et un attribut`aria-atomic=\"true\"` associés à un [message de statut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-80) peuvent valoir pour un rôle WAI-ARIA`alert` ." + ] + }, + "C'est sous réserve que la nature du message de statut satisfasse bien à la correspondance implicitement établie. Dans le cas d'un message de statut indiquant la progression d'un processus et matérialisé graphiquement par une barre de progression, un rôle WAI-ARIA`progressbar` explicite est nécessaire." + ] + } + } + ] + }, + { + "topic": "Éléments Obligatoires", + "number": "8", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque page web est-elle définie par un [type de document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-117) ?", + "tests": { + "1": [ + "Pour chaque page web, le [type de document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-117) (balise`doctype` ) est-il présent ?" + ], + "2": [ + "Pour chaque page web, le [type de document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-117) (balise`doctype` ) est-il valide ?" + ], + "3": [ + "Pour chaque page web possédant une déclaration de [type de document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-117) , celle-ci est-elle située avant la balise`<html>` dans le code source ?" + ] + }, + "references": [ + { + "techniques": [ + "G134", + "G192" + ] + }, + { + "wcag": [ + "9.4.1.1 / 4.1.1 Parsing (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Pour chaque page web, le code source généré est-il valide selon le [type de document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-117) spécifié ?", + "tests": { + "1": [ + "Pour chaque déclaration de [type de document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-117) , le code source généré de la page vérifie-t-il ces conditions ?", + "Les balises, attributs et valeurs d'attributs respectent les [règles d'écriture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-96) ;", + "L'imbrication des balises est conforme ;", + "L'ouverture et la fermeture des balises sont conformes ;", + "Les valeurs d'attribut`id` sont uniques dans la page ;", + "Les attributs ne sont pas doublés sur un même élément." + ] + }, + "references": [ + { + "techniques": [ + "H74", + "H93", + "H94", + "F70", + "F77" + ] + }, + { + "wcag": [ + "9.4.1.1 / 4.1.1 Parsing (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Dans chaque page web, la [langue par défaut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-61) est-elle présente ?", + "tests": { + "1": [ + "Pour chaque page web, l'indication de [langue par défaut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-61) vérifie-t-elle une de ces conditions ?", + "L'indication de la langue de la page (attribut`lang` et/ou`xml:lang` ) est donnée pour l'élément`<html>` .", + "L'indication de la langue de la page (attribut`lang` et/ou`xml:lang` ) est donnée sur chaque élément de texte ou sur l'un des éléments parents." + ] + }, + "references": [ + { + "techniques": [ + "H57" + ] + }, + { + "wcag": [ + "9.3.1.1 / 3.1.1 Language of Page (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Pour chaque page web ayant une [langue par défaut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-61) , le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) est-il pertinent ?", + "tests": { + "1": [ + "Pour chaque page web ayant une [langue par défaut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-61) , le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) vérifie-t-il ces conditions ?", + "Le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) est valide.", + "Le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) est pertinent." + ] + }, + "references": [ + { + "techniques": [ + "H57" + ] + }, + { + "wcag": [ + "9.3.1.1 / 3.1.1 Language of Page (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Chaque page web a-t-elle un [titre de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-115) ?", + "tests": { + "1": [ + "Chaque page web a-t-elle un [titre de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-115) (balise`<title>` ) ?" + ] + }, + "references": [ + { + "techniques": [ + "G88", + "G127", + "H25" + ] + }, + { + "wcag": [ + "9.2.4.2 / 2.4.2 Page Titled (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Pour chaque page web ayant un [titre de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-115) , ce titre est-il pertinent ?", + "tests": { + "1": [ + "Pour chaque page web ayant un [titre de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-115) (balise`<title>` ), le contenu de cette balise est-il pertinent ?" + ] + }, + "references": [ + { + "techniques": [ + "G88", + "G127", + "H25" + ] + }, + { + "wcag": [ + "9.2.4.2 / 2.4.2 Page Titled (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Dans chaque page web, chaque [changement de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-20) est-il indiqué dans le code source (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, chaque texte écrit dans une langue différente de la [langue par défaut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-61) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L'indication de langue est donnée sur l'élément contenant le texte (attribut`lang` et / ou`xml:lang` ).", + "L'indication de langue est donnée sur un des éléments parents (attribut`lang` et/ou`xml:lang` )." + ] + }, + "references": [ + { + "techniques": [ + "H58" + ] + }, + { + "wcag": [ + "9.3.1.2 / 3.1.2 Language of Parts (AA)." + ] + } + ], + "particularCases": [ + "Il y a une gestion de cas particuliers sur le [changement de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-20) pour les cas suivants :", + { + "ul": [ + "Nom propre, le critère est non applicable ;", + "Nom commun de langue étrangère présent dans le dictionnaire officiel de la langue (voir note 1 ci-dessous) par défaut de la page web, le critère est non applicable ;", + "Le terme de langue étrangère soumis, via un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) et rappelé dans la page (par exemple comme indication du terme recherché dans le cas d'un moteur de recherche), le critère est non applicable ;", + "Passage de texte dont la langue ne peut pas être déterminée : le critère est non applicable ;", + "Terme ou passage de texte issus d'une langue morte ou imaginaire pour laquelle il n'existe pas d'interprétation vocale : le critère est non applicable." + ] + }, + "le dictionnaire officiel est celui recommandé par l'académie en charge de la langue en question. Pour la France, par exemple, le lien vers le dictionnaire officiel se trouve sur le site de l'Académie française à l'adresse suivante : [http://www.academie-francaise.fr/le-dictionnaire/la-9e-edition](http://www.academie-francaise.fr/le-dictionnaire/la-9e-edition) . Pour toute demande auprès du service du dictionnaire de l'Académie française, utiliser le formulaire de contact du service du dictionnaire.", + "pour les noms communs de langue étrangère, absents dans le dictionnaire officiel de la [langue par défaut](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-61) de la page web, et qui sont passés dans le langage commun (exemple : newsletter) : le critère est applicable, uniquement lorsque l'absence d'indication de langue peut provoquer une incompréhension pour la restitution." + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Dans chaque page web, le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) de chaque [changement de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-20) est-il valide et pertinent ?", + "tests": { + "1": [ + "Pour chaque page web, le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) de chaque [changement de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-20) vérifie-t-il ces conditions ?", + "Le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) est valide.", + "Le [code de langue](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-21) est pertinent." + ] + }, + "references": [ + { + "techniques": [ + "H58" + ] + }, + { + "wcag": [ + "9.3.1.2 / 3.1.2 Language of Parts (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Dans chaque page web, les balises ne doivent pas être utilisées [uniquement à des fins de présentation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-119) . Cette règle est-elle respectée ?", + "tests": { + "1": [ + "Dans chaque page web les balises (à l'exception de`<div>` ,`<span>` et`<table>` ) ne doivent pas être utilisées [uniquement à des fins de présentation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-119) . Cette règle est-elle respectée ?" + ] + }, + "references": [ + { + "techniques": [ + "G115", + "H88", + "F43", + "F92" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "10", + "title": "Dans chaque page web, les changements du [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) sont-ils signalés ?", + "tests": { + "1": [ + "Dans chaque page web, chaque texte dont le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) est différent du [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) par défaut est contenu dans une balise possédant un attribut`dir` ?" + ], + "2": [ + "Dans chaque page web, chaque changement du [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) (attribut`dir` ) vérifie-t-il ces conditions ?", + "La valeur de l'attribut`dir` est conforme (`rtl` ou`ltr` ).", + "La valeur de l'attribut`dir` est pertinente." + ] + }, + "references": [ + { + "techniques": [ + "H56" + ] + }, + { + "wcag": [ + "9.1.3.2 / 1.3.2 Meaningful Sequence (A)." + ] + } + ] + } + } + ] + }, + { + "topic": "Structuration de l'information", + "number": "9", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Dans chaque page web, l'information est-elle structurée par l'utilisation appropriée de [titres](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-113) ?", + "tests": { + "1": [ + "Dans chaque page web, la hiérarchie entre les [titres](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-113) (balise`<hx>` ou balise possédant un attribut WAI-ARIA`role=\"heading\"` associé à un attribut WAI-ARIA`aria-level` ) est-elle pertinente ?" + ], + "2": [ + "Dans chaque page web, le contenu de chaque [titre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-113) (balise`<hx>` ou balise possédant un attribut WAI-ARIA`role=\"heading\"` associé à un attribut WAI-ARIA`aria-level` ) est-il pertinent ?" + ], + "3": [ + "Dans chaque page web, chaque passage de texte constituant un [titre](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-113) est-il structuré à l'aide d'une balise`<hx>` ou d'une balise possédant un attribut WAI-ARIA`role=\"heading\"` associé à un attribut WAI-ARIA`aria-level` ?" + ] + }, + "references": [ + { + "techniques": [ + "G115", + "G130", + "H42", + "G141", + "ARIA4", + "ARIA12" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.2.4.1 / 2.4.1 Bypass Block (A),", + "9.2.4.6 / 2.4.6 Headings and Labels (AA),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "technicalNote": [ + "WAI-ARIA permet de définir des [titres](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-113) via le rôle`heading` et l'attribut`aria-level` (indication du niveau de titre). Bien qu'il soit préférable d'utiliser l'élément de titre natif en HTML`<hx>` , l'utilisation du rôle WAI-ARIA`heading` est compatible avec l'accessibilité." + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Dans chaque page web, la [structure du document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-105) est-elle cohérente (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, la [structure du document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-105) vérifie-t-elle ces conditions (hors cas particuliers) ?", + "La [zone d'en-tête de la page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-125) est structurée via une balise`<header>` .", + "Les [zones de navigation principales et secondaires](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) sont structurées via une balise`<nav>` .", + "La balise`<nav>` est réservée à la structuration des [zones de navigation principales et secondaires](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) .", + "La [zone de contenu principal](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-126) est structurée via une balise`<main>` .", + "La [structure du document](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-105) utilise une balise`<main>` visible unique.", + "La [zone de pied de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-127) est structurée via une balise`<footer>` ." + ] + }, + "references": [ + { + "techniques": [ + "G115", + "ARIA11" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ], + "technicalNote": [ + "La balise`<main>` peut être utilisée plusieurs fois dans le même document HTML. Néanmoins, il ne peut y avoir en permanence qu'une seule balise visible et lisible par les technologies d'assistance, les autres devant disposer d'un attribut`hidden` ou d’un style permettant de les masquer aux technologies d’assistance. À noter cependant que l’utilisation d’un style seul restera insuffisante pour assurer l’unicité d’une balise`<main>` visible en cas de désactivation des [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) ." + ], + "particularCases": [ + "Lorsque le doctype déclaré dans la page n’est pas le doctype HTML5, ce critère est non applicable.", + "La balise`<main>` peut être utilisée plusieurs fois dans le même document HTML. Néanmoins, il ne peut y avoir en permanence qu'une seule balise visible et lisible par les technologies d'assistance, les autres devant disposer d'un attribut`hidden` ou d’un style permettant de les masquer aux technologies d’assistance. À noter cependant que l’utilisation d’un style seul restera insuffisante pour assurer l’unicité d’une balise`<main>` visible en cas de désactivation des [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) ." + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Dans chaque page web, chaque [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) est-elle correctement structurée ?", + "tests": { + "1": [ + "Dans chaque page web, les informations regroupées visuellement sous forme de [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) non ordonnée vérifient-elles une de ces conditions ?", + "La [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) utilise les balises HTML`<ul>` et`<li>` .", + "La [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) utilise les attributs WAI-ARIA`role=\"list\"` et`role=\"listitem\"` ." + ], + "2": [ + "Dans chaque page web, les informations regroupées visuellement sous forme de [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) ordonnée vérifient-elles une de ces conditions ?", + "La [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) utilise les balises HTML`<ol>` et`<li>` .", + "La [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) utilise les attributs WAI-ARIA`role=\"list\"` et`role=\"listitem\"` ." + ], + "3": [ + "Dans chaque page web, les informations regroupées sous forme de [liste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-74) de description utilisent-elles les balises`<dl>` et`<dt>` /`<dd>` ?" + ] + }, + "references": [ + { + "techniques": [ + "G115", + "G153", + "H40", + "H48", + "F2" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ], + "technicalNote": [ + "Les attributs WAI-ARIA`role=\"list\"` et`role=\"listitem\"` peuvent nécessiter l'utilisation des attributs WAI-ARIA`aria-setsize` et`aria-posinset` dans le cas où l'ensemble de la liste n'est pas disponible via le DOM généré au moment de la consultation.", + "Les attributs WAI-ARIA`role=\"tree\"` ,`role=\"tablist\"` ,`role=\"menu\"` ,`role=\"combobox\"` et`role=\"listbox\"` ne sont pas équivalents à une liste HTML`<ul>` ou`<ol>` .", + "Voir : [The roles model - list](https://www.w3.org/TR/wai-aria/#list)" + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Dans chaque page web, chaque citation est-elle correctement indiquée ?", + "tests": { + "1": [ + "Dans chaque page web, chaque citation courte utilise-t-elle une balise`<q>` ?" + ], + "2": [ + "Dans chaque page web, chaque bloc de citation utilise-t-il une balise`<blockquote>` ?" + ] + }, + "references": [ + { + "techniques": [ + "G115", + "H49", + "F2" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + } + ] + }, + { + "topic": "Présentation de l'information", + "number": "10", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Dans le site web, des [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) sont-elles utilisées pour contrôler la [présentation de l'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-89) ?", + "tests": { + "1": [ + "Dans chaque page web, les balises servant à la [présentation de l'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-89) ne doivent pas être présentes dans le code source généré des pages. Cette règle est-elle respectée ?" + ], + "2": [ + "Dans chaque page web, les attributs servant à la [présentation de l'information](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-89) ne doivent pas être présents dans le code source généré des pages. Cette règle est-elle respectée ?" + ], + "3": [ + "Dans chaque page web, l'utilisation des espaces vérifie-t-elle ces conditions ?", + "Les espaces ne sont pas utilisées pour séparer les lettres d'un mot.", + "Les espaces ne sont pas utilisées pour simuler des tableaux.", + "Les espaces ne sont pas utilisées pour simuler des colonnes de texte." + ] + }, + "references": [ + { + "techniques": [ + "G140", + "F32", + "F33", + "F34", + "F48", + "C6", + "C8", + "C18", + "C22" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.1.3.2 / 1.3.2 Meaningful Sequence (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Dans chaque page web, le [contenu visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-27) porteur d’information reste-t-il présent lorsque les [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) sont désactivées ?", + "tests": { + "1": [ + "Dans chaque page web, l'information reste-t-elle présente lorsque les [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) sont désactivées ?" + ] + }, + "references": [ + { + "techniques": [ + "G140", + "F3", + "F87" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Dans chaque page web, l'information reste-t-elle [compréhensible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-24) lorsque les [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) sont désactivées ?", + "tests": { + "1": [ + "Dans chaque page web, l'information reste-t-elle [compréhensible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-24) lorsque les [feuilles de style](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-42) sont désactivées ?" + ] + }, + "references": [ + { + "techniques": [ + "G59", + "G140", + "F1" + ] + }, + { + "wcag": [ + "9.1.3.2 / 1.3.2 Meaningful Sequence (A),", + "9.2.4.3 / 2.4.3 Focus Order (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Dans chaque page web, le texte reste-t-il lisible lorsque la [taille des caractères](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-111) est augmentée jusqu'à 200%, au moins (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, l'augmentation de la [taille des caractères](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-111) jusqu'à 200 %, au moins, ne doit pas provoquer de perte d'information. Cette règle est-elle respectée selon une de ces conditions (hors cas particuliers) ?", + "Lors de l'utilisation de la fonction d'agrandissement du texte du navigateur.", + "Lors de l'utilisation des fonctions de zoom graphique du navigateur.", + "Lors de l'utilisation d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) propre au site permettant d'agrandir le texte ou de zoomer." + ], + "2": [ + "Dans chaque page web, l'augmentation de la taille des caractères jusqu'à 200 %, au moins, doit être possible pour l’ensemble du texte dans la page. Cette règle est-elle respectée selon une de ces conditions (hors cas particuliers) ?", + "Lors de l'utilisation de la fonction d'agrandissement du texte du navigateur.", + "Lors de l'utilisation des fonctions de zoom graphique du navigateur.", + "Lors de l'utilisation d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) propre au site permettant d'agrandir le texte ou de zoomer." + ] + }, + "references": [ + { + "techniques": [ + "G146", + "G179", + "F69", + "F80", + "SCR34", + "C12", + "C13", + "C14", + "C17", + "C28" + ] + }, + { + "wcag": [ + "9.1.4.4 / 1.4.4 Resize Text (AA)." + ] + } + ], + "particularCases": [ + "Dans le cas des textes en image et des sous-titres de vidéo le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Dans chaque page web, les déclarations CSS de couleurs de fond d'élément et de police sont-elles correctement utilisées ?", + "tests": { + "1": [ + "Dans chaque page web, chaque déclaration CSS de couleurs de police (`color` ), d'un élément susceptible de contenir du texte, est-elle accompagnée d'une déclaration de couleur de fond (`background` ,`background-color` ), au moins, héritée d'un parent ?" + ], + "2": [ + "Dans chaque page web, chaque déclaration de couleur de fond (`background` ,`background-color` ), d'un élément susceptible de contenir du texte, est-elle accompagnée d'une déclaration de couleur de police (`color` ) au moins, héritée d'un parent ?" + ], + "3": [ + "Dans chaque page web, chaque utilisation d'une image pour créer une couleur de fond d'un élément susceptible de contenir du texte, via CSS (`background` ,`background-image` ), est-elle accompagnée d'une déclaration de couleur de fond (`background` ,`background-color` ), au moins, héritée d'un parent ?" + ] + }, + "references": [ + { + "techniques": [ + "F24" + ] + }, + { + "wcag": [ + "9.1.4.3 / 1.4.3 Contrast (Minimum) (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Dans chaque page web, chaque [lien dont la nature n'est pas évidente](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-68) est-il visible par rapport au texte environnant ?", + "tests": { + "1": [ + "Dans chaque page web, chaque [lien texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-70) signalé uniquement par la couleur, et dont la nature n'est pas évidente, vérifie-t-il ces conditions ?", + "La couleur du lien à un rapport de [contraste](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-29) supérieur ou égal à 3:1 par rapport au texte environnant.", + "Le lien dispose d'une indication visuelle au survol autre qu'un changement de couleur.", + "Le lien dispose d'une indication visuelle au focus autre qu'un changement de couleur." + ] + }, + "references": [ + { + "techniques": [ + "G183", + "F73" + ] + }, + { + "wcag": [ + "9.1.4.1 / 1.4.1 Use of Color (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Dans chaque page web, pour chaque élément recevant le focus, la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) est-elle visible ?", + "tests": { + "1": [ + "Pour chaque élément recevant le focus, la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) vérifie-t-elle une de ces conditions ?", + "Le style du focus natif du navigateur n'est pas supprimé ou dégradé.", + "Un style du focus défini par l'auteur est visible." + ] + }, + "references": [ + { + "techniques": [ + "G149", + "G165", + "G183", + "G195", + "F73", + "F78", + "SCR31", + "C15" + ] + }, + { + "wcag": [ + "9.1.4.1 / 1.4.1 Use of Color (A),", + " 9.2.4.7 / 2.4.7 Focus Visible (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Pour chaque page web, les [contenus cachés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-26) ont-ils vocation à être ignorés par les technologies d'assistance ?", + "tests": { + "1": [ + "Dans chaque page web, chaque [contenu caché](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-26) vérifie-t-il une de ces conditions ?", + "Le [contenu caché](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-26) a vocation à être ignoré par les technologies d'assistance.", + "Le [contenu caché](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-26) n’a pas vocation à être ignoré par les technologies d’assistances et est rendu restituable par les technologies d'assistance suite à une action de l'utilisateur réalisable au clavier ou par tout dispositif de pointage sur un élément précédent le [contenu caché](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-26) ou suite à un repositionnement du focus dessus." + ] + }, + "references": [ + { + "techniques": [ + "G57" + ] + }, + { + "wcag": [ + "9.1.3.2 / 1.3.2 Meaningful Sequence (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value." + ] + } + ], + "technicalNote": [ + "WAI-ARIA propose un attribut`aria-hidden` (`true` ou`false` ) qui permet d'inhiber la restitution d'un contenu en direction des technologies d'assistance, sans action sur sa visibilité en direction des agents utilisateurs : un contenu avec`aria-hidden=\"true\"` ne sera donc plus vocalisable, mais restera visible.", + "Sauf si le contenu contrôlé par`aria-hidden` n'a pas vocation à être restitué par les technologies d'assistance, la valeur de l'attribut`aria-hidden` doit être cohérente avec l'état affiché ou masqué du contenu à l'écran.", + "La spécification HTML5 propose un attribut`hidden` qui permet de rendre indisponible (quand l'attribut`hidden` est présent) un contenu dans le DOM généré (de manière similaire au`type=\"hidden\"` sur un contrôle de formulaire).", + "Il est possible d'avoir des situations où un contenu contrôlé par`hidden` ou`aria-hidden` se trouve momentanément dans un état incohérent avec le statut affiché ou masqué du contenu, par exemple si l'on désire rendre disponible un élément, mais que son affichage à l'écran reste dépendant d'une action ultérieure. Dans ce cas, c'est l'état final du contenu qui doit être considéré." + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Dans chaque page web, l'information ne doit pas être donnée uniquement [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) . Cette règle est-elle respectée ?", + "tests": { + "1": [ + "Dans chaque page web, pour chaque texte ou ensemble de textes, l'information ne doit pas être donnée uniquement [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) . Cette règle est-elle respectée ?" + ], + "2": [ + "Dans chaque page web, pour chaque image ou ensemble d'images, l'information ne doit pas être donnée uniquement [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) . Cette règle est-elle respectée ?" + ], + "3": [ + "Dans chaque page web, pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) , l'information ne doit pas être donnée uniquement [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) . Cette règle est-elle respectée ?" + ], + "4": [ + "Dans chaque page web, pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) , l'information ne doit pas être donnée uniquement [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) . Cette règle est-elle respectée ?" + ] + }, + "references": [ + { + "techniques": [ + "G96", + "G140", + "F14", + "F26" + ] + }, + { + "wcag": [ + "9.1.3.3 / 1.3.3 Sensory Characteristics (A),", + "9.1.4.1 / 1.4.1 Use of Color (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "10", + "title": "Dans chaque page web, l'information ne doit pas être donnée [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) uniquement. Cette règle est-elle implémentée de façon pertinente ?", + "tests": { + "1": [ + "Dans chaque page web, pour chaque texte ou ensemble de textes, l'information ne doit pas être donnée uniquement [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) . Cette règle est-elle implémentée de façon pertinente ?" + ], + "2": [ + "Dans chaque page web, pour chaque image ou ensemble d'images, l'information ne doit pas être donnée [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) uniquement. Cette règle est-elle implémentée de façon pertinente ?" + ], + "3": [ + "Dans chaque page web, pour chaque [média temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-79) , l'information ne doit pas être donnée [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) uniquement. Cette règle est-elle implémentée de façon pertinente ?" + ], + "4": [ + "Dans chaque page web, pour chaque [média non temporel](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-78) , l'information ne doit pas être donnée [par la forme, taille ou position](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-55) uniquement. Cette règle est-elle implémentée de façon pertinente ?" + ] + }, + "references": [ + { + "techniques": [ + "G96", + "G140", + "F14", + "F26" + ] + }, + { + "wcag": [ + "9.1.3.3 / 1.3.3 Sensory Characteristics (A),", + "9.1.4.1 / 1.4.1 Use of Color (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "11", + "title": "Pour chaque page web, les contenus peuvent-ils être présentés sans avoir recours à un défilement vertical pour une fenêtre ayant une hauteur de 256px ou à un défilement horizontal pour une fenêtre ayant une largeur de 320px (hors cas particuliers) ?", + "tests": { + "1": [ + "Pour chaque page web, lorsque le contenu dont le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) est horizontal est affiché dans une fenêtre réduite à une largeur de 320px, l'ensemble des informations et des fonctionnalités sont-elles disponibles sans aucun défilement horizontal (hors cas particuliers) ?" + ], + "2": [ + "Pour chaque page web, lorsque le contenu dont le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) est vertical est affiché dans une fenêtre réduite à une hauteur de 256px, l'ensemble des informations et des fonctionnalités sont-elles disponibles sans aucun défilement vertical (hors cas particuliers) ?" + ] + }, + "references": [ + { + "wcag": [ + "9.1.4.10 / 1.4.10 Reflow (AA)." + ] + } + ], + "technicalNote": [ + "Lorsqu’il est ici question de pixel, il s’agit du pixel CSS tel que défini par le W3C ( [reference pixel](https://www.w3.org/TR/css3-values/#reference-pixel) )." + ], + "particularCases": [ + "Font exception à ce critère les contenus dont l'agencement requiert deux dimensions pour être compris ou utilisés comme :", + { + "ul": [ + "Les images, les graphiques ou les vidéos.", + "Les jeux (jeux de plateforme, par exemple).", + "Les présentations (type diaporama, par exemple).", + "Les tableaux de données.", + "Les interfaces où il est nécessaire d'avoir un ascenseur horizontal lors de la manipulation de l'interface." + ] + }, + "Note : la majorité des navigateurs sur les systèmes d'exploitation mobile (Android, iOS) ne gère pas correctement la redistribution en cas de zoom. Dans ce contexte le critère sera considéré comme non applicable sur ces environnements.", + "Lorsqu’il est ici question de pixel, il s’agit du pixel CSS tel que défini par le W3C ( [reference pixel](https://www.w3.org/TR/css3-values/#reference-pixel) )." + ] + } + }, + { + "criterium": { + "number": "12", + "title": "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) ?", + "tests": { + "1": [ + "Dans chaque page web, le texte reste-t-il lisible lorsque l'affichage est modifié selon ces conditions (hors cas particuliers) ?", + "L'espacement entre les lignes (`line-height` ) est augmenté jusqu'à 1,5 fois la taille de la police ;", + "L'espacement suivant les paragraphes (balise`<p>` ) est augmenté jusqu'à 2 fois la taille de la police ;", + "L'espacement des lettres (`letter-spacing` ) est augmenté jusqu'à 0,12 fois la taille de la police ;", + "L'espacement des mots (`word-spacing` ) est augmenté jusqu'à 0,16 fois la taille de la police." + ] + }, + "references": [ + { + "techniques": [ + "C8", + "C21", + "C35", + "C36" + ] + }, + { + "wcag": [ + "9.1.4.12 / 1.4.12 Text Spacing (AA)." + ] + } + ], + "particularCases": [ + "Font exception à ce critère les contenus pour lesquels l'utilisateur n'a pas de possibilité de personnalisation :", + { + "ul": [ + "Les sous-titres directement intégrés à une vidéo.", + "Les [images texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-52) .", + "Le texte au sein d'une balise`<canvas>` ." + ] + } + ] + } + }, + { + "criterium": { + "number": "13", + "title": "Dans chaque page web, les contenus additionnels apparaissant à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) ou au survol d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) sont-ils contrôlables par l'utilisateur (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque contenu additionnel devenant visible à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) ou au survol d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) peut-il être masqué par une action utilisateur sans déplacer le focus ou le pointeur de la souris (hors cas particuliers) ?" + ], + "2": [ + "Chaque contenu additionnel qui apparaît au survol d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) peut-il être survolé par le pointeur de la souris sans disparaître (hors cas particuliers) ?" + ], + "3": [ + "Chaque contenu additionnel qui apparaît à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) ou au survol d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Le contenu additionnel reste visible jusqu'à ce que l'utilisateur retire le pointeur souris ou le focus du contenu additionnel et du [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) ayant déclenché son apparition.", + "Le contenu additionnel reste visible jusqu'à ce que l'utilisateur déclenche une action masquant ce contenu sans déplacer le focus ou le pointeur souris du [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) ayant déclenché son apparition.", + "Le contenu additionnel reste visible jusqu'à ce qu'il ne soit plus valide." + ] + }, + "references": [ + { + "techniques": [ + "F95" + ] + }, + { + "wcag": [ + "9.1.4.13 / 1.4.13 Content on Hover or Focus (AA)." + ] + } + ], + "particularCases": [ + "Lorsque le contenu additionnel est contrôlé par l'agent utilisateur (par exemple, attribut`title` ou validation native de formulaire) ou correspond à une fenêtre modale conforme au [motif de conception](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-83) WAI-ARIA`dialog` , le critère 10.13 est non applicable.", + "Lorsque le contenu additionnel ne masque ou ne remplace aucun contenu porteur d'information, le test 10.13.1 est non applicable." + ] + } + }, + { + "criterium": { + "number": "14", + "title": "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 ?", + "tests": { + "1": [ + "Dans chaque page web, les contenus additionnels apparaissant au survol d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) via les styles CSS respectent-ils si nécessaire une de ces conditions ?", + "Les contenus additionnels apparaissent également à l'activation du composant via le clavier et tout dispositif de pointage.", + "Les contenus additionnels apparaissent également à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) du composant.", + "Les contenus additionnels apparaissent également par le biais de l'activation ou de la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) d'un autre composant." + ], + "2": [ + "Dans chaque page web, les contenus additionnels apparaissant au focus d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) via les styles CSS respectent-ils si nécessaire une de ces conditions ?", + "Les contenus additionnels apparaissent également à l'activation du composant via le clavier et tout dispositif de pointage.", + "Les contenus additionnels apparaissent également au survol du composant.", + "Les contenus additionnels apparaissent également par le biais de l'activation ou du survol d'un autre composant." + ] + }, + "references": [ + { + "techniques": [ + "G202" + ] + }, + { + "wcag": [ + "9.2.1.1 / 2.1.1 Keyboard (A)." + ] + } + ] + } + } + ] + }, + { + "topic": "Formulaires", + "number": "11", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) a-t-il une [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) ?", + "tests": { + "1": [ + "Chaque [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) vérifie-t-il une de ces conditions ?", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) possède un attribut WAI-ARIA`aria-labelledby` référençant un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) identifié.", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) possède un attribut WAI-ARIA`aria-label` .", + "Une balise`<label>` ayant un attribut`for` est associée au [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) .", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) possède un attribut`title` .", + "Un [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) adjacent au [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) 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." + ], + "2": [ + "Chaque [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) associé à une balise`<label>` ayant un attribut`for` , vérifie-t-il ces conditions ?", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) possède un attribut`id` .", + "La valeur de l'attribut`for` est égale à la valeur de l'attribut`id` du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) associé." + ], + "3": [ + "Chaque [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ayant une [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) dont le contenu n'est pas visible ou à proximité (masqué,`aria-label` ) ou qui n’est pas [accolé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) au champ (`aria-labelledby` ), vérifie-t-il une de ses conditions ?", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) possède un attribut`title` dont le contenu permet de comprendre la nature de la saisie attendue.", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) est accompagné d'un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) [accolé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) au champ qui devient visible à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) permettant de comprendre la nature de la saisie attendue.", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) est accompagné d'un [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) visible [accolé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) au champ permettant de comprendre la nature de la saisie attendue." + ] + }, + "references": [ + { + "techniques": [ + "G82", + "G131", + "H44", + "H65", + "F68", + "F82", + "F86", + "ARIA6", + "ARIA9", + "ARIA14", + "ARIA16" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.2.4.6 / 2.4.6 Headings and Labels (AA),", + "9.3.3.2 / 3.3.2 Labels or Instructions (AA),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) associée à un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) est-elle pertinente (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque balise`<label>` permet-elle de connaître la fonction exacte du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) auquel elle est associée ?" + ], + "2": [ + "Chaque attribut`title` permet-il de connaître la fonction exacte du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) auquel il est associé ?" + ], + "3": [ + "Chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) implémentée via l'attribut WAI-ARIA`aria-label` permet-elle de connaître la fonction exacte du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) auquel elle est associée ?" + ], + "4": [ + "Chaque [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé via l'attribut WAI-ARIA`aria-labelledby` permet-il de connaître la fonction exacte du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) auquel il est associé ?" + ], + "5": [ + "Chaque [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ayant un [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) vérifie-t-il ces conditions (hors cas particuliers) ?", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) lié au [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) via un attribut WAI-ARIA`aria-labelledby` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le contenu de l'attribut`title` du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent le contenu de la balise`<label>` associé au [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) ." + ], + "6": [ + "Chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) adjacent au [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) qui fournit une étiquette visible permet-il de connaître la fonction exacte du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) auquel il est associé ?" + ] + }, + "references": [ + { + "techniques": [ + "G82", + "G131", + "H44", + "H65", + "ARIA6", + "ARIA9", + "ARIA14", + "ARIA16" + ] + }, + { + "wcag": [ + "9.2.4.6 / 2.4.6 Headings and Labels (AA),", + "9.2.5.3 / 2.5.3 Label in Name (A),", + "9.3.3.2 / 3.3.2 Labels or Instructions (AA)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier pour le test 11.2.5 lorsque :", + { + "ul": [ + "La ponctuation et les lettres majuscules sont présentes dans le texte de l’ [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) : elles peuvent être ignorées dans le nom accessible sans porter à conséquence.", + "Le texte de l’ [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) sert de symbole : le texte 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 la note ci-dessous)." + ] + }, + "Note : 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 (ex. : « 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 »).", + "Ce cas particulier s’applique également au test 11.9.2." + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) associée à un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ayant la même fonction et répétée plusieurs fois dans une même page ou dans un [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) est-elle [cohérente](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-41) ?", + "tests": { + "1": [ + "Chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) associée à un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ayant la même fonction et répétée plusieurs fois dans une même page est-elle [cohérente](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-41) ?" + ], + "2": [ + "Chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) associée à un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ayant la même fonction et répétée dans un [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) est-elle [cohérente](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-41) ?" + ] + }, + "references": [ + { + "techniques": [ + "F31" + ] + }, + { + "wcag": [ + "9.3.2.4 / 3.2.4 Consistent Identification (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , chaque [étiquette de champ](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) et son [champ](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) associé sont-ils [accolés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [étiquette de champ](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) et son [champ](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) associé sont-ils [accolés](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) ?" + ], + "2": [ + "Chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) [accolée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) à un [champ](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) (à l'exception des case à cocher, bouton radio ou balise ayant un attribut WAI-ARIA`role=\"checkbox\"` ,`role=\"radio\"` ou`role=\"switch\"` ), vérifie-t-elle ces conditions (hors cas particuliers) ?", + "L' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est visuellement [accolée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) immédiatement au-dessus ou à gauche du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) lorsque le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) de la langue de l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est de gauche à droite.", + "L' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est visuellement [accolée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) immédiatement au-dessus ou à droite du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) lorsque le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) de la langue de l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est de droite à gauche." + ], + "3": [ + "Chaque [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) [accolée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) à un [champ](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) de type`checkbox` ou`radio` ou à une balise ayant un attribut WAI-ARIA`role=\"checkbox\"` ,`role=\"radio\"` ou`role=\"switch\"` , vérifie-t-elle ces conditions (hors cas particuliers) ?", + "L' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est visuellement [accolée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) immédiatement au-dessous ou à droite du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) lorsque le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) de la langue de l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est de gauche à droite.", + "L' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est visuellement [accolée](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-3) immédiatement au-dessous ou à gauche du [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) lorsque le [sens de lecture](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-101) de la langue de l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) est de droite à gauche." + ] + }, + "references": [ + { + "techniques": [ + "G162" + ] + }, + { + "wcag": [ + "9.3.3.2 / 3.3.2 Labels or Instructions (AA)." + ] + } + ], + "particularCases": [ + "Les tests 11.4.2 et 11.4.3 seront considérés comme non applicable :", + { + "ul": [ + "Dans le cas où l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) mélange une portion de texte qui se lit de droite à gauche avec une portion de texte qui se lit de gauche à droite.", + "Dans le cas où un [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) contient des labels de plusieurs langues qui se liraient de droite à gauche et inversement. Par exemple un [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) de commande en arabe qui propose une liste de cases à cocher de produit en langue française ou mixant des produits en langue arabe et en langue française.", + "Dans le cas où les champs de type`radio` ou`checkbox` et les balises ayant un attribut WAI-ARIA`role=\"checkbox\"` ,`role=\"radio\"` ou`role=\"switch\"` ne sont pas visuellement présentés sous forme de bouton radio ou de case à cocher.", + "Dans le cas où les champs seraient utilisés dans un contexte où il pourrait être légitime, du point de vue de l'expérience utilisateur, de placer les [étiquettes](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) de manière différente à celle requise dans les tests 11.4.2 et 11.4.3." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , les [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) sont-ils regroupés, si nécessaire ?", + "tests": { + "1": [ + "Les [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) vérifient-ils l'une de ces conditions, si nécessaire ?", + "Les [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) sont regroupés dans une balise`<fieldset>` .", + "Les [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) sont regroupés dans une balise possédant un attribut WAI-ARIA`role=\"group\"` .", + "Les [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) de type radio (`<input type=\"radio\">` ou balises possédant un attribut WAI-ARIA`role=\"radio\"` ) sont regroupés dans une balise possédant un attribut WAI-ARIA`role=\"radiogroup\"` ou`role=\"group\"` ." + ] + }, + "references": [ + { + "techniques": [ + "H71", + "ARIA17" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.3.3.2 / 3.3.2 Labels or Instructions (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , chaque regroupement de [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) a-t-il une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-63) ?", + "tests": { + "1": [ + "Chaque regroupement de [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) possède-t-il une [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-63) ?" + ] + }, + "references": [ + { + "techniques": [ + "H71", + "ARIA17" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.3.3.2 / 3.3.2 Labels or Instructions (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , chaque [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-63) associée à un regroupement de [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) est-elle pertinente ?", + "tests": { + "1": [ + "Chaque [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-63) associée à un regroupement de [champs de même nature](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-16) est-elle pertinente ?" + ] + }, + "references": [ + { + "techniques": [ + "H71", + "ARIA17" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.3.3.2 / 3.3.2 Labels or Instructions (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , les [items de même nature d'une liste de choix](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-59) sont-ils regroupés de manière pertinente ?", + "tests": { + "1": [ + "Pour chaque balise`<select>` , les [items de même nature d'une liste de choix](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-59) sont-ils regroupés avec une balise`<optgroup>` , si nécessaire ?" + ], + "2": [ + "Dans chaque balise`<select>` , chaque balise`<optgroup>` possède-t-elle un attribut`label` ?" + ], + "3": [ + "Pour chaque balise`<optgroup>` ayant un attribut`label` , le contenu de l'attribut`label` est-il pertinent ?" + ] + }, + "references": [ + { + "techniques": [ + "H85" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A)." + ] + } + ], + "technicalNote": [ + "Il est possible d’utiliser une balise ayant un attribut WAI-ARIA`role=\"listbox\"` en remplacement d’une balise`<select>` . En revanche, il est impossible de créer des groupes d’options au moyen de WAI-ARIA. De ce fait, une liste nécessitant un regroupement d’options et structurée à l’aide d’une balise ayant un attribut WAI-ARIA`role=\"listbox\"` sera considérée comme non conforme au critère 11.8." + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , l'intitulé de chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) est-il pertinent (hors cas particuliers) ?", + "tests": { + "1": [ + "L'intitulé de chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) est-il pertinent ?", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` est pertinent.", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) lié au [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) via un attribut WAI-ARIA`aria-labelledby` est pertinent.", + "S'il est présent, le contenu de l'attribut`value` d'une balise`<input>` de type`submit` ,`reset` ou`button` est pertinent.", + "S'il est présent, le contenu de la balise`<button>` est pertinent.", + "S'il est présent, le contenu de l'attribut`alt` d'une balise`<input>` de type`image` est pertinent.", + "S'il est présent, le contenu de l'attribut`title` est pertinent." + ], + "2": [ + "Chaque [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) affichant un [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) vérifie-t-il ces conditions (hors cas particuliers) ?", + "S'il est présent, le contenu de l'attribut WAI-ARIA`aria-label` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) lié au [bouton](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-13) via un attribut WAI-ARIA`aria-labelledby` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le contenu de l'attribut`value` d'une balise`<input>` de type`submit` ,`reset` ou`button` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le contenu de la balise`<button>` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le contenu de l'attribut`alt` d'une balise`<input>` de type`image` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) .", + "S'il est présent, le contenu de l'attribut`title` contient au moins l' [intitulé visible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-58) ." + ] + }, + "references": [ + { + "techniques": [ + "H36", + "H91", + "ARIA6", + "ARIA9", + "ARIA14", + "ARIA16" + ] + }, + { + "wcag": [ + "9.2.5.3 / 2.5.3 Label in Name (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "particularCases": [ + "Pour le test 11.9.2, voir cas particuliers ." + ] + } + }, + { + "criterium": { + "number": "10", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , le [contrôle de saisie](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-33) est-il utilisé de manière pertinente (hors cas particuliers) ?", + "tests": { + "1": [ + "Les indications du caractère obligatoire de la saisie des champs vérifient-elles une de ces conditions (hors cas particuliers) ?", + "Une [indication de champ obligatoire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-45) est visible et permet d'identifier nommément le champ concerné préalablement à la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) .", + "Le champ obligatoire dispose de l'attribut`aria-required=\"true\"` ou`required` préalablement à la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) ." + ], + "2": [ + "Les champs obligatoires ayant l'attribut`aria-required=\"true\"` ou`required` vérifient-ils une de ces conditions ?", + "Une [indication de champ obligatoire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-45) est visible et située dans l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) associé au champ préalablement à la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) .", + "Une [indication de champ obligatoire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-45) est visible et située dans le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé au champ préalablement à la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) ." + ], + "3": [ + "Les messages d'erreur indiquant l'absence de saisie d'un champ obligatoire vérifient-ils une de ces conditions ?", + "Le message d'erreur indiquant l'absence de saisie d'un champ obligatoire est visible et permet d'identifier nommément le champ concerné.", + "Le champ obligatoire dispose de l'attribut`aria-invalid=\"true\"` ." + ], + "4": [ + "Les champs obligatoires ayant l'attribut`aria-invalid=\"true\"` vérifient-ils une de ces conditions ?", + "Le message d’erreur indiquant le caractère invalide de la saisie est visible et situé dans l’étiquette associée au champ.", + "Le message d’erreur indiquant le caractère invalide de la saisie est visible et situé dans le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé au champ." + ], + "5": [ + "Les [instructions et indications du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoires vérifient-elles une de ces conditions ?", + "Une [instruction ou une indication du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoire est visible et permet d'identifier nommément le champ concerné préalablement à la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) .", + "Une [instruction ou une indication du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoire est visible dans l' [étiquette](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-40) ou le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé au champ préalablement à la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) ." + ], + "6": [ + "Les messages d'erreurs fournissant une [instruction ou une indication du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoire des champs vérifient-ils une de ces conditions ?", + "Le message d'erreur fournissant une [instruction ou une indication du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoire est visible et identifie le champ concerné.", + "Le champ dispose de l'attribut`aria-invalid=\"true\"` ." + ], + "7": [ + "Les champs ayant l'attribut`aria-invalid=\"true\"` dont la saisie requiert un type de données et/ou de format obligatoire vérifient-ils une de ces conditions ?", + "Une [instruction ou une indication du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoire est visible et située dans la balise`<label>` associée au champ.", + "Une [instruction ou une indication du type de données et/ou de format](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-46) obligatoire est visible et située dans le [passage de texte](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-87) associé au champ." + ] + }, + "references": [ + { + "techniques": [ + "G83", + "G84", + "G85", + "G89", + "G184", + "H44", + "H81", + "H89", + "H90", + "F81", + "SCR18", + "SCR32", + "ARIA1", + "ARIA2", + "ARIA6", + "ARIA9", + "ARIA16", + "ARIA21" + ] + }, + { + "wcag": [ + "9.3.3.1 / 3.3.1 Error Identification (A),", + "9.3.3.2 / 3.3.2 Labels or Instructions (AA)." + ] + } + ], + "technicalNote": [ + "Dans un long formulaire dont la majorité des champs sont obligatoires, on pourrait constater que ce sont les quelques champs restés facultatifs qui sont explicitement signalés comme tels. Dans ce cas, il faudrait s’assurer que :", + { + "ul": [ + "Un message précise visuellement en haut de formulaire que « tous les champs sont obligatoires sauf ceux indiqués comme étant facultatifs » ;", + "Une mention « facultatif » est présente visuellement dans le libellé des champs facultatifs ou dans la légende d’un groupe de champs facultatifs ;", + "Un attribut`required` ou`aria-required=\"true\"` reste associé à chaque champ qui n’est pas concerné par ce caractère facultatif." + ] + } + ], + "particularCases": [ + "Le test 11.10.1 et le test 11.10.2 seront considérés comme non applicables lorsque le [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) comporte un seul [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ou qu'il indique les champs optionnels de manière :", + { + "ul": [ + "Visible ;", + "Dans la balise`<label>` ou dans la [légende](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-63) associée au champ." + ] + }, + "Dans le cas où l'ensemble des champs d'un [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) sont obligatoires, les tests 11.10.1 et 11.10.2 restent applicables.", + "Dans un long formulaire dont la majorité des champs sont obligatoires, on pourrait constater que ce sont les quelques champs restés facultatifs qui sont explicitement signalés comme tels. Dans ce cas, il faudrait s’assurer que :", + { + "ul": [ + "Un message précise visuellement en haut de formulaire que « tous les champs sont obligatoires sauf ceux indiqués comme étant facultatifs » ;", + "Une mention « facultatif » est présente visuellement dans le libellé des champs facultatifs ou dans la légende d’un groupe de champs facultatifs ;", + "Un attribut`required` ou`aria-required=\"true\"` reste associé à chaque champ qui n’est pas concerné par ce caractère facultatif." + ] + } + ] + } + }, + { + "criterium": { + "number": "11", + "title": "Dans chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) , le [contrôle de saisie](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-33) est-il accompagné, si nécessaire, de suggestions facilitant la correction des erreurs de saisie ?", + "tests": { + "1": [ + "Pour chaque erreur de saisie, [les types et les formats de données](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-118) sont-ils suggérés, si nécessaire ?" + ], + "2": [ + "Pour chaque erreur de saisie, des exemples de valeurs attendues sont-ils suggérés, si nécessaire ?" + ] + }, + "references": [ + { + "techniques": [ + "G84", + "G85", + "G89", + "G177", + "H89" + ] + }, + { + "wcag": [ + "9.3.3.3 / 3.3.3 Error Suggestion (AA)." + ] + } + ], + "technicalNote": [ + "Certains types de contrôles en HTML5 proposent des messages d'aide à la saisie automatique : par exemple le type`email` affiche un message du type « veuillez saisir une adresse e-mail valide » dans le cas où l'adresse e-mail saisie ne correspond pas au format attendu. Ces messages sont personnalisables via l'API Constraint Validation, ce qui permet de personnaliser les messages d'erreur et de valider le critère. L’attribut`pattern` permet d'effectuer automatiquement des contrôles de format (via des expressions régulières) et affiche un message d'aide personnalisable via l'attribut`title` : ce dispositif valide également le critère." + ] + } + }, + { + "criterium": { + "number": "12", + "title": "Pour chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) 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 ?", + "tests": { + "1": [ + "Pour chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) 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, la saisie des données vérifie-t-elle une de ces conditions ?", + "L'utilisateur peut [modifier ou annuler les données et les actions effectuées](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-81) sur ces données après la validation du [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) .", + "L'utilisateur peut vérifier et corriger les données avant la validation d'un [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) en plusieurs étapes.", + "Un mécanisme de confirmation explicite, via une case à cocher (balise`<input>` de type`checkbox` ou balise ayant un attribut WAI-ARIA`role=\"checkbox\"` ) ou une étape supplémentaire, est présent." + ], + "2": [ + "Chaque [formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-43) dont la validation modifie ou supprime des données à caractère financier, juridique ou personnel vérifie-t-il une de ces conditions ?", + "Un mécanisme permet de récupérer les données supprimées ou modifiées par l'utilisateur.", + "Un mécanisme de demande de confirmation explicite de la suppression ou de la modification, via un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) ou une étape supplémentaire, est proposé." + ] + }, + "references": [ + { + "techniques": [ + "G98", + "G99", + "G155", + "G164", + "G168" + ] + }, + { + "wcag": [ + "9.3.3.4 / 3.3.4 Error Prevention (Legal, Financial, Data) (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "13", + "title": "La finalité d'un [champ de saisie](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l'utilisateur ?", + "tests": { + "1": [ + "Chaque [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) dont l'objet se rapporte à une information concernant l'utilisateur vérifie-t-il ces conditions ?", + "Le [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) possède un attribut`autocomplete` .", + "L'attribut`autocomplete` est pourvu d'une valeur présente dans la [liste des valeurs possibles pour l'attribut autocomplete](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-75) associés à un [champ de formulaire](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-17) .", + "La valeur indiquée pour l'attribut`autocomplete` est pertinente au regard du type d'information attendu." + ] + }, + "references": [ + { + "techniques": [ + "H98" + ] + }, + { + "wcag": [ + "9.1.3.5/ 1.3.5 Identify Input Purpose (AA)." + ] + } + ], + "technicalNote": [ + "La [liste des valeurs possibles pour l'attribut autocomplete](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-75) repose sur la liste des valeurs présentes dans la spécification WCAG 2.1 qui reprend elle-même la liste des valeurs de type « » de la spécification HTML5.2. Le critère WCAG demande à ce que l'une de ces valeurs soit présente pour qualifier un champ de saisie concernant l'utilisateur.", + "Ce que le critère WCAG laisse implicite, ce sont les différentes règles de construction possibles pour obtenir une valeur (simple ou composée) pour l'attribut`autocomplete` . C'est cependant l'affaire du développeur de fournir à l'attribut`autocomplete` une valeur ou un ensemble de valeurs valides au regard des exigences de l'algorithme fourni par la spécification HTML5.2. Ainsi, un attribut`autocomplete` ne peut contenir qu'une seule valeur de type « », comme`name` ou`street-address` . On peut avoir également un ensemble composé de différentes valeurs comme, par exemple,`autocomplete=\"shipping name\"` ou`autocomplete=\"section-software shipping street-address\"` : «`section-software` » renvoie à une valeur de type et «`shipping` » à une valeur de type « », mais toujours une seule valeur de type « »." + ] + } + } + ] + }, + { + "topic": "Navigation", + "number": "12", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) dispose-t-il de deux [systèmes de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-106) différents, au moins (hors cas particuliers) ?", + "tests": { + "1": [ + "Chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Un [menu de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) et un [plan du site](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) sont présents.", + "Un [menu de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) et un [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) sont présents.", + "Un [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) et un [plan du site](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) sont présents." + ] + }, + "references": [ + { + "techniques": [ + "G63", + "G64", + "G161" + ] + }, + { + "wcag": [ + "9.2.4.5 / 2.4.5 Multiple Ways (AA)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque le site web est constitué d’une seule page ou d’un nombre très limité de pages (cf. note). Dans ce cas-là, le critère est non applicable.", + "Le critère est également non applicable pour les pages d’un ensemble de pages qui sont le résultat ou une partie d’un processus (un processus de paiement ou de prise de commande, par exemple).", + "Note : l’appréciation d’un nombre très limité de pages devrait être réservé à un site dont l’ensemble des pages sont atteignables depuis la page d’accueil." + ] + } + }, + { + "criterium": { + "number": "2", + "title": "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , le [menu et les barres de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) sont-ils toujours à la même place (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , chaque page disposant d'un [menu ou de barres de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) vérifie-t-elle ces conditions (hors cas particuliers) ?", + "Le [menu ou les barres de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) sont toujours à la même place dans la présentation.", + "Le [menu ou les barres de navigation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) se présentent toujours dans le même ordre relatif dans le code source." + ] + }, + "references": [ + { + "techniques": [ + "G61", + "F66" + ] + }, + { + "wcag": [ + "9.3.2.3 / 3.2.3 Consistent Navigation (AA)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque :", + { + "ul": [ + "La page est la page d’accueil ;", + "Le site web est constitué d'une seule page ;", + "Le changement fait suite à une modification initiée par l’utilisateur." + ] + }, + "Dans ces situations, le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "3", + "title": "La [page « plan du site »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) est-elle pertinente ?", + "tests": { + "1": [ + "La [page « plan du site »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) est-elle représentative de l'architecture générale du site ?" + ], + "2": [ + "Les liens du [plan du site](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) sont-ils fonctionnels ?" + ], + "3": [ + "Les liens du [plan du site](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) renvoient-ils bien vers les pages indiquées par l' [intitulé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-57) ?" + ] + }, + "references": [ + { + "techniques": [ + "G63" + ] + }, + { + "wcag": [ + "9.2.4.5 / 2.4.5 Multiple Ways (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , la [page « plan du site »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) est-elle atteignable de manière identique ?", + "tests": { + "1": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , la [page « plan du site »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) est-elle accessible à partir d'une fonctionnalité identique ?" + ], + "2": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , la fonctionnalité vers la [page « plan du site »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) est-elle située à la même place dans la présentation ?" + ], + "3": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , la fonctionnalité vers la [page « plan du site »](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-85) se présente-t-elle toujours dans le même ordre relatif dans le code source ?" + ] + }, + "references": [ + { + "techniques": [ + "G61", + "G63" + ] + }, + { + "wcag": [ + "9.2.4.5 / 2.4.5 Multiple Ways (AA),", + "9.3.2.3 / 3.2.3 Consistent Navigation (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , le [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) est-il atteignable de manière identique ?", + "tests": { + "1": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , le [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) est-il accessible à partir d'une fonctionnalité identique ?" + ], + "2": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , la fonctionnalité vers le [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) est-elle située à la même place dans la présentation ?" + ], + "3": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , la fonctionnalité vers le [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) se présente-t-elle toujours dans le même ordre relatif dans le code source ?" + ] + }, + "references": [ + { + "techniques": [ + "G61", + "F66" + ] + }, + { + "wcag": [ + "9.3.2.3 / 3.2.3 Consistent Navigation (AA)." + ] + } + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Les zones de regroupement de contenus présentes dans plusieurs pages web (zones d' [en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-125) , de [navigation principale](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) , de [contenu principal](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-126) , de [pied de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-127) et de [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) ) peuvent-elles être atteintes ou évitées ?", + "tests": { + "1": [ + "Dans chaque page web où elles sont présentes, la [zone d'en-tête](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-125) , de [navigation principale](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-12) , de [contenu principal](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-126) , de [pied de page](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-127) et de [moteur de recherche](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-82) respectent-elles au moins une de ces conditions :", + "La zone possède un rôle WAI-ARIA de type [landmark](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-60) correspondant à sa nature.", + "La zone possède un titre dont le contenu permet de comprendre la nature du contenu de la zone.", + "La zone peut être masquée par le biais d'un bouton précédant directement la zone dans l'ordre du code source.", + "La zone peut être évitée par le biais d'un [lien d'évitement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-71) précédant directement la zone dans l'ordre du code source.", + "La zone peut être atteinte par le biais d’un [lien d'accès rapide](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-71) visible ou, à défaut, visible à la prise de focus." + ] + }, + "references": [ + { + "techniques": [ + "H69", + "G115", + "ARIA4", + "ARIA11" + ] + }, + { + "wcag": [ + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.2.4.1 / 2.4.1 Bypass Blocks (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Dans chaque page web, un [lien d'évitement ou d'accès rapide](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-71) à la [zone de contenu principal](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-126) est-il présent (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, un lien permet-il d'éviter la [zone de contenu principal](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-126) ou d'y accéder (hors cas particuliers) ?" + ], + "2": [ + "Dans chaque [ensemble de pages](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-37) , le [lien d'évitement ou d'accès rapide](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-71) à la [zone de contenu principal](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-126) vérifient-il ces conditions (hors cas particuliers) ?", + "Le lien est situé à la même place dans la présentation.", + "Le lien se présente toujours dans le même ordre relatif dans le code source.", + "Le lien est visible ou, à défaut, visible à la prise de focus.", + "Le lien est fonctionnel." + ] + }, + "references": [ + { + "techniques": [ + "G1", + "G59", + "G123", + "G124", + "SCR28", + "F66" + ] + }, + { + "wcag": [ + "9.2.4.1 / 2.4.1 Bypass Blocks (A),", + "9.2.4.3 / 2.4.3 Focus Order (A),", + " 9.3.2.3 / 3.2.3 Consistent Navigation (AA)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particuliers lorsque le site web est constitué d'une seule page.", + "Dans ce cas de figure, l'obligation de la présence d'un lien d'accès rapide est liée au contexte de la page : présence ou absence de navigation ou de contenus additionnels, par exemple. Le critère peut être considéré comme non applicable lorsqu'il est avéré qu'un lien d'accès rapide est inutile." + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Dans chaque page web, l' [ordre de tabulation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-84) est-il [cohérent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-24) ?", + "tests": { + "1": [ + "Dans chaque page web, l' [ordre de tabulation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-84) dans le contenu est-il [cohérent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-24) ?" + ], + "2": [ + "Pour chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui met à jour ou insère un contenu, l' [ordre de tabulation](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-84) reste-t-il [cohérent](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-24) ?" + ] + }, + "references": [ + { + "techniques": [ + "G59", + "H4", + "F44", + "F85", + "SCR26", + "SCR27", + "SCR37", + "C7" + ] + }, + { + "wcag": [ + " 9.2.4.3 / 2.4.3 Focus Order (A). " + ] + } + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Dans chaque page web, la navigation ne doit pas contenir de piège au clavier. Cette règle est-elle respectée ?", + "tests": { + "1": [ + "Dans chaque page web, chaque [élément recevant le focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) vérifie-t-il une de ces conditions ?", + "Il est possible d'atteindre l'élément suivant ou précédent pouvant recevoir le focus avec la touche de tabulation.", + "L'utilisateur est informé d'un mécanisme fonctionnel permettant d'atteindre au clavier l'élément suivant ou précédent pouvant recevoir le focus." + ] + }, + "references": [ + { + "techniques": [ + "G21", + "H91", + "F10" + ] + }, + { + "wcag": [ + "9.2.1.1 / 2.1.1 Keyboard (A),", + "9.2.1.2 / 2.1.2 No Keyboard Trap (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "10", + "title": "Dans chaque page web, les [raccourcis clavier](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-94) n'utilisant qu'une seule touche (lettre minuscule ou majuscule, ponctuation, chiffre ou symbole) sont-ils contrôlables par l’utilisateur ?", + "tests": { + "1": [ + "Dans chaque page web, chaque [raccourci clavier](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-94) n'utilisant qu'une seule touche (lettres minuscule ou majuscule, ponctuation, chiffre ou symbole) vérifie-t-il l'une de ces conditions ?", + "Un mécanisme est disponible pour désactiver le [raccourci clavier](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-94) .", + "Un mécanisme est disponible pour configurer la touche de [raccourci clavier](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-94) au moyen des touches de modification ( , , , etc).", + "Dans le cas d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) utilisateur, le [raccourci clavier](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-94) qui lui est associé ne peut être activé que si le focus clavier est sur ce composant." + ] + }, + "references": [ + { + "techniques": [ + "F99", + "G217" + ] + }, + { + "wcag": [ + "9.2.1.4 / 2.1.4 Character Key Shortcuts (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "11", + "title": "Dans chaque page web, les contenus additionnels apparaissant au survol, à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) ou à l'activation d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) sont-ils, si nécessaire, atteignables au clavier ?", + "tests": { + "1": [ + "Dans chaque page web, les contenus additionnels apparaissant au survol, à la [prise de focus](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-91) ou à l'activation d'un [composant d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) sont-ils, si nécessaire, atteignables au clavier ?" + ] + }, + "references": [ + { + "wcag": [ + "9.2.1.1 / 2.1.1 Keyboard (A)." + ] + } + ], + "technicalNote": [ + "Ce critère adresse les situations où un contenu additionnel contient des [composants d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) avec lesquels il doit être possible d'interagir au clavier. Par exemple, une infobulle personnalisée qui propose un lien dans son contenu." + ] + } + } + ] + }, + { + "topic": "Consultation", + "number": "13", + "criteria": [ + { + "criterium": { + "number": "1", + "title": "Pour chaque page web, l'utilisateur a-t-il le contrôle de chaque limite de temps modifiant le contenu (hors cas particuliers) ?", + "tests": { + "1": [ + "Pour chaque page web, chaque [procédé de rafraîchissement](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-92) (balise`<object>` , balise`<embed>` , balise`<svg>` , balise`<canvas>` , balise`<meta>` ) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L'utilisateur peut arrêter ou relancer le rafraîchissement.", + "L'utilisateur peut augmenter la limite de temps entre deux rafraîchissements de dix fois, au moins.", + "L'utilisateur est averti de l'imminence du rafraîchissement et dispose de vingt secondes, au moins, pour augmenter la limite de temps avant le prochain rafraîchissement.", + "La limite de temps entre deux rafraîchissements est de vingt heures, au moins." + ], + "2": [ + "Pour chaque page web, chaque procédé de [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) effectué via une balise`<meta>` est-il immédiat (hors cas particuliers) ?" + ], + "3": [ + "Pour chaque page web, chaque procédé de [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) effectué via un [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L'utilisateur peut arrêter ou relancer la [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) .", + "L'utilisateur peut augmenter la limite de temps avant la [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) de dix fois, au moins.", + "L'utilisateur est averti de l'imminence de la [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) et dispose de vingt secondes, au moins, pour augmenter la limite de temps avant la prochaine [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) .", + "La limite de temps avant la [redirection](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-95) est de vingt heures, au moins." + ], + "4": [ + "Pour chaque page web, chaque procédé limitant le temps d'une session vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "L'utilisateur peut supprimer la limite de temps.", + "L'utilisateur peut augmenter la limite de temps.", + "La limite de temps avant la fin de la session est de vingt heures au moins." + ] + }, + "references": [ + { + "techniques": [ + "F40", + "F41", + "F58", + "F61", + "G75", + "G76", + "G110", + "G133", + "G180", + "G186", + "G198", + "H76", + "SCR1", + "SCR16", + "SCR36", + "SVR1" + ] + }, + { + "wcag": [ + "9.2.2.1 / 2.2.1 Timing adjustable (A),", + "9.2.2.2 / 2.2.2 Pause, Stop, Hide (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particuliers lorsque la limite de temps est essentielle, notamment lorsqu'elle ne pourrait pas être supprimée sans changer fondamentalement le contenu ou les fonctionnalités liées au contenu.", + "Dans ces situations, le critère est non applicable. Par exemple, le rafraîchissement d'un flux RSS dans une page n'est pas une limite de temps essentielle ; le critère est applicable. En revanche, une redirection automatique qui amène vers la nouvelle version d'une page à partir d'une URL obsolète est essentielle ; le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "2", + "title": "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 ?", + "tests": { + "1": [ + "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 ?" + ] + }, + "references": [ + { + "techniques": [ + "F55", + "G107" + ] + }, + { + "wcag": [ + "9.3.2.1 / 3.2.1 On focus (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "3", + "title": "Dans chaque page web, chaque document bureautique en téléchargement possède-t-il, si nécessaire, une [version accessible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-121) (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, chaque fonctionnalité de téléchargement d'un document bureautique vérifie-t-elle une de ces conditions ?", + "Le document en téléchargement est compatible avec l'accessibilité.", + "Il existe une version alternative du document en téléchargement compatible avec l'accessibilité.", + "Il existe une version alternative du document en téléchargement au format HTML." + ] + }, + "references": [ + { + "techniques": [ + "F15", + "G10", + "G135" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.1.3.2 / 1.3.2 Meaningful Sequence (AA),", + "9.2.4.1 / 2.4.1 Bypass Blocks (AA),", + "9.2.4.3 / 2.4.3 Focus Order (A),", + "9.3.1.1 / 3.1.1 Language of Page (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particuliers : 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 les fichiers bureautiques (ex : PDF, documents Microsoft ou libreOffice etc.) ont été publiés avant le 23 septembre 2018 (sauf si ce sont des documents nécessaires pour accomplir une démarche administrative relevant des tâches effectuées par l’organisme concerné), ils sont exemptés de l’obligation d’accessibilité.", + "Dans cette situation, le critère est non applicable." + ] + } + }, + { + "criterium": { + "number": "4", + "title": "Pour chaque document bureautique ayant une [version accessible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-121) , cette version offre-t-elle la même information ?", + "tests": { + "1": [ + "Chaque document bureautique ayant une [version accessible](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-121) vérifie-t-il une de ces conditions ?", + "La version compatible avec l'accessibilité offre la même information.", + "La version alternative au format HTML est pertinente et offre la même information." + ] + }, + "references": [ + { + "techniques": [ + "F15", + "G10", + "G135" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A),", + "9.1.3.1 / 1.3.1 Info and Relationships (A),", + "9.1.3.2 / 1.3.2 Meaningful Sequence (AA),", + "9.2.4.1 / 2.4.1 Bypass Blocks (AA),", + "9.2.4.3 / 2.4.3 Focus Order (A),", + "9.3.1.1 / 3.1.1 Language of Page (A),", + "9.4.1.2 / 4.1.2 Name, Role, Value (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "5", + "title": "Dans chaque page web, chaque contenu cryptique (art ASCII, émoticon, syntaxe cryptique) a-t-il une alternative ?", + "tests": { + "1": [ + "Dans chaque page web, chaque contenu cryptique (art ASCII, émoticon, syntaxe cryptique) vérifie-t-il une de ces conditions ?", + "Un attribut`title` est disponible.", + "Une définition est donnée par le contexte adjacent." + ] + }, + "references": [ + { + "techniques": [ + "F71", + "F72", + "G153", + "H86" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "6", + "title": "Dans chaque page web, pour chaque contenu cryptique (art ASCII, émoticon, syntaxe cryptique) ayant une alternative, cette alternative est-elle pertinente ?", + "tests": { + "1": [ + "Dans chaque page web, chaque contenu cryptique (art ASCII, émoticon, syntaxe cryptique) vérifie-t-il une de ces conditions ?", + "Le contenu de l'attribut`title` est pertinent.", + "La définition donnée par le contexte adjacent est pertinente." + ] + }, + "references": [ + { + "techniques": [ + "F71", + "F72", + "H86" + ] + }, + { + "wcag": [ + "9.1.1.1 / 1.1.1 Non-text Content (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "7", + "title": "Dans chaque page web, les [changements brusques de luminosité ou les effets de flash](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-18) sont-ils correctement utilisés ?", + "tests": { + "1": [ + "Dans chaque page web, chaque image ou élément multimédia (balise`<video>` , balise`<img>` , balise`<svg>` , balise`<canvas>` , balise`<embed>` ou balise`<object>` ) qui provoque un [changement brusque de luminosité ou un effet de flash](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-18) vérifie-t-elle une de ces conditions ?", + "La fréquence de l'effet est inférieure à 3 par seconde.", + "La surface totale cumulée des effets est inférieure ou égale à 21 824 pixels." + ], + "2": [ + "Dans chaque page web, chaque [script](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-100) qui provoque un [changement brusque de luminosité ou un effet de flash](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-18) vérifie-t-il une de ces conditions ?", + "La fréquence de l'effet est inférieure à 3 par seconde.", + "La surface totale cumulée des effets est inférieure ou égale à 21 824 pixels." + ], + "3": [ + "Dans chaque page web, chaque mise en forme CSS qui provoque un [changement brusque de luminosité ou un effet de flash](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-18) vérifie-t-elle une de ces conditions ?", + "La fréquence de l'effet est inférieure à 3 par seconde.", + "La surface totale cumulée des effets est inférieure ou égale à 21 824 pixels." + ] + }, + "references": [ + { + "techniques": [ + "G15", + "G19", + "G176" + ] + }, + { + "wcag": [ + "9.2.3.1 / 2.3.1 Three Flashes or Below Threshold (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "8", + "title": "Dans chaque page web, chaque contenu en mouvement ou clignotant est-il [contrôlable](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-30) par l'utilisateur ?", + "tests": { + "1": [ + "Dans chaque page web, chaque contenu en mouvement, déclenché automatiquement, vérifie-t-il une de ces conditions ?", + "La durée du mouvement est inférieure ou égale à 5 secondes.", + "L'utilisateur peut arrêter et relancer le mouvement.", + "L'utilisateur peut afficher et masquer le contenu en mouvement.", + "L'utilisateur peut afficher la totalité de l'information sans le mouvement." + ], + "2": [ + "Dans chaque page web, chaque contenu clignotant, déclenché automatiquement, vérifie-t-il une de ces conditions ?", + "La durée du clignotement est inférieure ou égale à 5 secondes.", + "L'utilisateur peut arrêter et relancer le clignotement.", + "L'utilisateur peut afficher et masquer le contenu clignotant.", + "L'utilisateur peut afficher la totalité de l'information sans le clignotement." + ] + }, + "references": [ + { + "techniques": [ + "F4", + "F7", + "F16", + "F47", + "F50", + "G4", + "G11", + "G152", + "G186", + "G187", + "G191", + "SCR22", + "SCR33", + "SCR36", + "SM11", + "SM12" + ] + }, + { + "wcag": [ + "9.2.2.1 / 2.2.1 Timing Adjustable (A),", + "9.2.2.1 / 2.2.2 Pause, Stop, Hide (A)." + ] + } + ] + } + }, + { + "criterium": { + "number": "9", + "title": "Dans chaque page web, le contenu proposé est-il consultable quelle que soit l'orientation de l'écran (portrait ou paysage) (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, chaque contenu vérifie-t-il ces conditions (hors cas particuliers) ?", + "La consultation est possible quel que soit le mode d'orientation de l'écran.", + "Le contenu proposé reste le même quel que soit le mode d'orientation de l'écran utilisé même si sa présentation et le moyen d'y accéder peut différer." + ] + }, + "references": [ + { + "wcag": [ + "9.1.3.4 / 1.3.4 Orientation (AA)." + ] + } + ], + "particularCases": [ + "Il existe des interfaces pour lesquelles l'orientation du périphérique est essentielle à leur utilisation.", + "Dans ces situations, le critère est non applicable. Il peut s'agir d'interfaces de jeu, de piano, de dépôt de chèques bancaires, etc.", + "Si l'interface est le seul moyen d'accéder au service proposé, une alternative devrait être mise en place pour pallier cette carence.", + "Références documentaires :", + { + "ul": [ + "[API JS](https://www.w3.org/TR/screen-orientation/)", + "[API Viewport](https://www.w3.org/TR/css-device-adapt-1/#orientation-desc)" + ] + } + ] + } + }, + { + "criterium": { + "number": "10", + "title": "Dans chaque page web, les fonctionnalités utilisables ou disponibles au moyen d'un [geste complexe](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-44) peuvent-elles être également disponibles au moyen d'un [geste simple](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-44) (hors cas particuliers) ?", + "tests": { + "1": [ + "Dans chaque page web, chaque fonctionnalité utilisable ou disponible suite à un contact multipoint est-elle également utilisable ou disponible suite à un contact en un point unique de l’écran (hors cas particuliers) ?" + ], + "2": [ + "Dans chaque page web, chaque fonctionnalité utilisable ou disponible suite à un geste basé sur le suivi d'une trajectoire sur l'écran est-elle également utilisable ou disponible suite à un contact en un point unique de l'écran (hors cas particuliers) ?" + ] + }, + "references": [ + { + "techniques": [ + "G215", + "G216" + ] + }, + { + "wcag": [ + "9.2.5.1 / 2.5.1 Pointer Gestures (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particuliers dans deux types de situation :", + { + "ul": [ + "Le critère ne s'applique qu'à des fonctionnalités mises en place par l'auteur du site. Il ne concerne donc pas les gestes requis par l'agent utilisateur ou le système d'exploitation.", + "Le critère ne s'applique pas aux fonctionnalités dont la réalisation d'un [geste complexe](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-44) est essentielle (exécuter le tracé d'une signature, par exemple)." + ] + } + ] + } + }, + { + "criterium": { + "number": "11", + "title": "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) ?", + "tests": { + "1": [ + "Dans chaque page web, les actions déclenchées au moyen d'un dispositif de pointage sur un point unique de l'écran vérifient-elles l'une de ces conditions (hors cas particuliers) ?", + "L'action est déclenchée au moment où le dispositif de pointage est [relâché ou relevé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-97) ;", + "L'action est déclenchée au moment où le dispositif de pointage est [pressé ou posé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-90) puis annulée lorsque le dispositif de pointage est [relâché ou relevé](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-97) ;", + "Un mécanisme est disponible pour abandonner (avant achèvement de l'action) ou annuler (après achèvement) l'exécution de l'action." + ] + }, + "references": [ + { + "wcag": [ + "9.2.5.2 / 2.5.2 Pointer Cancellation (A)." + ] + } + ], + "technicalNote": [ + "Deux exemples de mécanisme mis en place pour annuler ou abandonner une action déclenchée au moyen d’un dispositif de pointage sur un point unique de l’écran :", + { + "ul": [ + "Une fenêtre modale permettant d’annuler l’action après son achèvement ;", + "Pour une fonction de glisser/déposer, le fait d’abandonner l’action si l’utilisateur relâche l’élément en dehors de la zone cible." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque la fonctionnalité nécessite que le comportement attendu soit réalisé lors d'un événement descendant, par exemple, un émulateur de clavier dont les touches doivent s'activer à la pression comme sur un clavier physique. Dans ces situations, le critère est non applicable.", + "Deux exemples de mécanisme mis en place pour annuler ou abandonner une action déclenchée au moyen d’un dispositif de pointage sur un point unique de l’écran :", + { + "ul": [ + "Une fenêtre modale permettant d’annuler l’action après son achèvement ;", + "Pour une fonction de glisser/déposer, le fait d’abandonner l’action si l’utilisateur relâche l’élément en dehors de la zone cible." + ] + } + ] + } + }, + { + "criterium": { + "number": "12", + "title": "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) ?", + "tests": { + "1": [ + "Dans chaque page web, les fonctionnalités disponibles en bougeant l'appareil peuvent-elles être accomplies avec des [composants d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) utilisateur (hors cas particuliers) ?" + ], + "2": [ + "Dans chaque page web, les fonctionnalités disponibles en faisant un geste en direction de l'appareil peuvent-elles être accomplies avec des [composants d'interface](https://rgaa.tanaguru.com/rgaa4-1-glossaire.html#glossaire-23) utilisateur (hors cas particuliers) ?" + ], + "3": [ + "L'utilisateur a-t-il la possibilité de désactiver la détection du mouvement pour éviter un déclenchement accidentel de la fonctionnalité (hors cas particuliers) ?" + ] + }, + "references": [ + { + "wcag": [ + "9.2.5.4 / 2.5.4 Motion Actuation (A)." + ] + } + ], + "particularCases": [ + "Il existe une gestion de cas particulier lorsque :", + { + "ul": [ + "Le mouvement est essentiel à l'accomplissement de la fonctionnalité (ex. podomètre).", + "La détection du mouvement est utilisée pour contrôler une fonctionnalité au travers d'une interface compatible avec l'accessibilité." + ] + } + ] + } + } + ] + } + ] +} diff --git a/json/script.js b/json/script.js new file mode 100644 index 0000000..d2dfa1c --- /dev/null +++ b/json/script.js @@ -0,0 +1,175 @@ +function getData() { + const content = document.querySelector('#main .page:last-child'); + const categories = content.querySelectorAll('article'); + var rgaa = { + "topics": [] + }; + + function rewrite(el) { + let result = ""; + let elChildren = el.childNodes; + let base = "https://rgaa.tanaguru.com/"; + + elChildren.forEach(item => { + if(item.nodeType === 3) { + result += ' '+item.data.trim(); + } + + if(item.nodeType === 1) { + if(item.tagName.toLowerCase() === 'a') { + let url = item.getAttribute('href'); + if(url.match(/glossaire\.html#glossaire/)) { + result += ' '+'['+item.textContent+']('+base+url+')'; + } + + else if(!url.startsWith('#')) { + result += ' '+'['+item.textContent+']('+url+')'; + } + } + + if(item.tagName.toLowerCase() === 'code') { + result += '`'+item.textContent+'`'; + } + } + }); + + result = result.replace(/\n/g,' '); + result = result.replace(/\s{2,}/g, ' '); + result; + + return result.trim(); + } + + categories.forEach(cat => { + let h2 = cat.querySelector('header h2').textContent; + let topic = h2.match(/[^\d.]+/)[0].trim(); + let nb = h2.match(/\d+/)[0]; + let criteria = cat.querySelectorAll('section'); + var topicObject = { + "topic": topic, + "number": nb, + "criteria": [] + }; + + criteria.forEach(crit => { + var title = crit.querySelector('h3'); + var critere = rewrite(title); + var critNB = title.id.split('-')[2]; + + var list = {}; + + var tests = crit.querySelectorAll('h3+ul>li'); + tests.forEach(test => { + var testNB = test.id.split('-')[3]; + var testName = rewrite(test).replace(/\:/, '').trim(); + var steps = []; + var details = test.querySelectorAll('ul>li'); + details.forEach(e => { + steps.push(rewrite(e)); + }); + + var resultTest = []; + resultTest.push(testName); + + steps.forEach(step => { + resultTest.push(step); + }); + + list[testNB] = resultTest; + }); + + var critObject = { + "number": critNB, + "title": critere, + "tests": list + }; + + var complementary = crit.querySelector('.criterion-complementary'); + var notReferences = crit.querySelectorAll('.criterion-complementary>h4'); + if(complementary) { + var references = complementary.querySelector('.criterion-mapping'); + if(references) { + var ref = []; + var tech = []; + var wcag = []; + + references.querySelectorAll('a[href*="Techniques"]').forEach(ref => { + tech.push(ref.textContent); + }); + + let correspondances = references.querySelectorAll('h4'); + correspondances.forEach(cpd => { + if(!cpd.textContent.match(/WCAG/)) { + let listEN = cpd.nextElementSibling; + listEN.querySelectorAll('li').forEach(w => { + wcag.push(w.textContent); + }); + } + }); + + if(tech.length > 0 || wcag.length > 0) { + if(tech.length > 0) ref.push({"techniques":tech}); + if(wcag.length > 0) ref.push({"wcag":wcag}); + + critObject["references"] = ref; + } + + } + + if(notReferences.length > 0) { + var technicalNote = []; + var particularCases = []; + + notReferences.forEach(e => { + if(e.textContent.match(/particuliers/)) { + let nextEl = e.nextElementSibling; + while(nextEl && !nextEl.hasAttribute('class')) { + if(nextEl.tagName.toLowerCase() === 'p') particularCases.push(rewrite(nextEl)); + + else if(nextEl.tagName.toLowerCase() === 'ul') { + let plist = []; + nextEl.querySelectorAll('li').forEach(i => { + plist.push(rewrite(i)); + }); + particularCases.push({"ul":plist}); + } + + nextEl = nextEl.nextElementSibling; + } + } else { + let nextEl = e.nextElementSibling; + while(nextEl && !nextEl.hasAttribute('class')) { + if(nextEl.tagName.toLowerCase() === 'p') technicalNote.push(rewrite(nextEl)); + + else if(nextEl.tagName.toLowerCase() === 'ul') { + let plist = []; + nextEl.querySelectorAll('li').forEach(i => { + plist.push(rewrite(i)); + }); + technicalNote.push({"ul":plist}); + } + + nextEl = nextEl.nextElementSibling; + } + } + }); + + if(technicalNote.length > 0) critObject["technicalNote"] = technicalNote; + if(particularCases.length > 0) critObject["particularCases"] = particularCases; + } + } + + topicObject.criteria.push({"criterium": critObject}); + }); + rgaa.topics.push(topicObject); + }); + + var json = JSON.stringify(rgaa); + var xhr = new XMLHttpRequest(); + xhr.open('POST', 'index.php', true); + xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + xhr.send('json='+json); +} + +document.addEventListener('DOMContentLoaded', getData); +