diff --git a/confiture-web-app/.gitignore b/confiture-web-app/.gitignore index 560f8470b..9cb6b7611 100644 --- a/confiture-web-app/.gitignore +++ b/confiture-web-app/.gitignore @@ -31,5 +31,4 @@ accessibilite.numerique.gouv.fr ReferentielAccessibiliteWeb ReferentielAccessibiliteMobile src/rgaa -src/raam src/raweb diff --git a/confiture-web-app/package.json b/confiture-web-app/package.json index c02d83dc2..c1eaaff2c 100644 --- a/confiture-web-app/package.json +++ b/confiture-web-app/package.json @@ -26,7 +26,7 @@ "marked": "^4.2.4", "pinia": "^2.0.28", "slugify": "^1.6.5", - "vite": "^4.5.0", + "vite": "^4.5.3", "vue": "^3.3.8", "vue-matomo": "^4.2.0", "vue-router": "^4.2.5" diff --git a/confiture-web-app/src/raam/criteres.json b/confiture-web-app/src/raam/criteres.json new file mode 100644 index 000000000..36392bb0d --- /dev/null +++ b/confiture-web-app/src/raam/criteres.json @@ -0,0 +1,2121 @@ +{ + "wcag": { + "version": 2.1 + }, + "en301549": { + "version": "3.2.1" + }, + "topics": [ + { + "criteria": [ + { + "criterium": { + "tests": {}, + "number": 1, + "title": "Chaque [élément graphique de décoration](glossaire.md#element-graphique-de-decoration) est-il [ignoré par les technologies d’assistance](glossaire.md#ignore-par-les-technologies-d-assistance) ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Chaque [élément graphique porteur d’information](glossaire.md#element-graphique-porteur-d-information) possède-t-il une alternative [accessible aux technologies d’assistance](glossaire.md#accessible-aux-technologies-d-assistance) ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 3, + "title": "Pour chaque [élément graphique porteur d’information](glossaire.md#element-graphique-porteur-d-information), l’alternative [accessible aux technologies d’assistance](glossaire.md#accessible-aux-technologies-d-assistance) est-elle pertinente (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque l’élément graphique est utilisé comme [CAPTCHA](glossaire.md#captcha) ou comme [élément graphique de test](glossaire.md#element-graphique-de-test). Dans cette situation, où il n’est pas possible de donner une alternative pertinente sans détruire l’objet du CAPTCHA ou du test, le critère est non applicable.", + "Note : le cas des CAPTCHAs et des éléments graphiques tests est traité de manière spécifique par le [critère 1.4](#crit-1-4)." + ], + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Pour chaque [élément graphique](glossaire.md#element-graphique) utilisé comme [CAPTCHA](glossaire.md#captcha) ou comme [élément graphique de test](glossaire.md#element-graphique-de-test), l’alternative restituée par les technologies d’assistance permet-elle d’identifier la nature et la fonction de l’élément graphique ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque élément graphique utilisé comme CAPTCHA respecte-t-il une de ces conditions ?", + "Il existe une autre forme de CAPTCHA non graphique, au moins ;", + "Il existe une autre solution d’accès à la fonctionnalité sécurisée par le CAPTCHA." + ] + }, + "number": 5, + "title": "Chaque [élément graphique](glossaire.md#element-graphique) utilisé comme [CAPTCHA](glossaire.md#captcha) possède-t-il une alternative ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque élément graphique porteur d’information qui nécessite une description détaillée vérifie-t-il une de ces conditions ?", + "Depuis l’élément graphique, les technologies d’assistance restituent ou donnent accès à une description détaillée ;", + "Il existe une description détaillée clairement identifiable adjacente à l’élément graphique ;", + "Il existe une fonctionnalité qui permet d’accéder à une description détaillée." + ] + }, + "number": 6, + "title": "Chaque [élément graphique porteur d’information](glossaire.md#element-graphique-porteur-d-information) a-t-il, si nécessaire, une [description détaillée](glossaire.md#description-detaillee) ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 7, + "title": "Pour chaque [élément graphique porteur d’information](glossaire.md#element-graphique-porteur-d-information) ayant une [description détaillée](glossaire.md#description-detaillee), celle-ci est-elle pertinente ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 8, + "title": "Chaque [élément graphique texte](glossaire.md#element-graphique-texte) porteur d’information, en l’absence d’un [mécanisme de remplacement](glossaire.md#mecanisme-de-remplacement), doit, si possible être remplacé par du [texte stylé](glossaire.md#texte-style). Cette règle est-elle respectée (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "Lorsque le texte fait partie d’un logo ou d’un élément associé à l’identité graphique d’un organisme ou d’une société (un slogan, par exemple).", + "Lorsque le texte contenu dans l’élément graphique est utilisé comme [CAPTCHA](glossaire.md#captcha) ou comme [élément graphique de test](glossaire.md#element-graphique-de-test).", + "Lorsque le texte fait partie d’un élément dont l’exactitude graphique est considérée comme essentielle à la bonne transmission de l’information véhiculée par l’élément graphique." + ] + } + ], + "references": { + "wcag": [ + "1.4.5 Texte sous forme d’image (AA)" + ], + "norm": [ + "11.1.4.5.1 Images of text" + ] + } + } + } + ], + "topic": "Éléments graphiques", + "number": 1 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Dans chaque écran, chaque élément dont la mise en couleur est porteuse d’information respecte-t-il au moins une de ces conditions ?", + "L’information n’est pas donnée uniquement par la couleur ;", + "Un [mécanisme de remplacement](glossaire.md#mecanisme-de-remplacement) permet à l’utilisateur d’afficher une alternative à la couleur." + ] + }, + "number": 1, + "title": "Dans chaque écran, l’[information ne doit pas être donnée uniquement par la couleur](glossaire.md#information-donnee-par-la-couleur). Cette règle est-elle respectée ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Info and Relationships (A)", + "1.4.1 Use of color (A)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.1.4.1 Use of colour" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque texte, le contraste entre la couleur du texte et la couleur de son arrière-plan respecte-t-il une de ces conditions ?", + "Le rapport de contraste entre le texte et son arrière-plan est d’au moins 4.5:1 pour le texte en [taille normale](glossaire.md#contraste-taille-des-textes) et d’au moins 3:1 pour le [texte de grande taille](glossaire.md#contraste-taille-des-textes) ;", + "Un [mécanisme de remplacement](glossaire.md#mecanisme-de-remplacement) permet à l’utilisateur d’afficher le texte en [taille normale](glossaire.md#contraste-taille-des-textes) avec un rapport de contraste de 4.5:1 au moins et le [texte de grande taille](glossaire.md#contraste-taille-des-textes) avec un rapport de contraste de 3:1 au moins." + ] + }, + "number": 2, + "title": "Dans chaque écran, le [contraste](glossaire.md#contraste) entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "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 le texte contenu dans l’élément graphique est purement décoratif.", + "Le texte fait partie d’un élément graphique porteur d’information, mais le texte lui-même n’apporte aucune information essentielle.", + "Le texte ou le texte contenu dans l’élément graphique fait partie d’un élément d’interface sur lequel aucune action n’est possible (par exemple, un bouton désactivé)." + ] + } + ], + "references": { + "wcag": [ + "1.4.3 Contraste (minimum) (AA)" + ], + "norm": [ + "11.1.4.3 Contrast (Minimum)", + "11.7 User preferences" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Dans chaque écran, le rapport de contraste entre les couleurs d’un [composant d’interface](glossaire.md#composant-d-interface) dans ses différents états et les [couleurs adjacentes](glossaire.md#couleur-adjacente) vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Le rapport de contraste est de 3:1, au moins ;", + "Un [mécanisme de remplacement](glossaire.md#mecanisme-de-remplacement) permet d’afficher le composant d’interface avec un rapport de contraste de 3:1, au moins." + ], + "2": [ + "Dans chaque écran, le rapport de contraste de chaque couleur nécessaire à la compréhension d’un élément graphique et les [couleurs adjacentes](glossaire.md#couleur-adjacente), vérifie-t-il une de ces conditions (hors cas particuliers) ?", + "Le rapport de contraste est de 3:1, au moins ;", + "Un [mécanisme de remplacement](glossaire.md#mecanisme-de-remplacement) permet un rapport de contraste de 3:1, au moins." + ] + }, + "number": 3, + "title": "Dans chaque écran, les couleurs utilisées dans les [composants d’interface](glossaire.md#composant-d-interface) et les éléments graphiques porteurs d’informations sont-elles suffisamment contrastées (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "Composant d’interface inactif (par exemple, un bouton désactivé) sur lequel aucune action n’est possible.", + "Composant d’interface géré par la plateforme et pour lequel il n’existe pas de méthode simple de développement pour le modifier.", + "Composant d’interface dont la couleur n’est pas nécessaire pour identifier le composant ou son état (par exemple, le soulignement des liens qui aurait un rapport de contraste inférieur à 3:1 mais dont le texte a un rapport de contraste de 4.5:1).", + "[Élément graphique](glossaire.md#element-graphique) ou parties d’élément graphique non porteur d’information ou ayant une alternative, une description détaillée, une information identique visible dans l’écran).", + "[Élément graphique](glossaire.md#element-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](glossaire.md#element-graphique) ou parties d’élément graphique dont la présentation est essentielle à l’information véhiculée (par exemple, drapeaux, logotypes, photos de personnes ou de scènes, captures d’écran, diagrammes médicaux, carte de chaleurs).", + "[Élément graphique](glossaire.md#element-graphique) ou parties d’élément graphique dynamique dont le contraste peut varier si d’autres éléments sont survolés (ou reçoivent le focus), mais dont le survol ou focus permet de le rendre suffisamment contrasté (par exemple, un diagramme en camembert composé de plusieurs sections suffisamment contrastées, mais lorsque la souris survole une section du camembert, les autres sections ne sont plus suffisamment contrastées, leur opacité est réduite pour mettre en avant la section survolée)." + ] + } + ], + "references": { + "wcag": [ + "1.4.11 Contraste du contenu non textuel (AA)" + ], + "norm": [ + "11.1.4.11 Non-text Contrast", + "11.7 User preference" + ] + } + } + } + ], + "topic": "Couleurs", + "number": 2 + }, + { + "criteria": [ + { + "criterium": { + "tests": {}, + "number": 1, + "title": "Chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré seulement audio a-t-il, si nécessaire, une [transcription textuelle](glossaire.md#transcription-textuelle-media-temporel) [adjacente clairement identifiable](glossaire.md#adjacente-clairement-identifiable) (hors cas particuliers) ?", + "level": "A", + "references": { + "wcag": [ + "1.2.1 Contenus seulement audio et seulement vidéo (pré-enregistrés) (A)", + "1.2.3 Audio-description ou version de remplacement pour un média temporel (pré-enregistré) (A)" + ], + "norm": [ + "11.1.2.1.1 Audio-only and Video-only (Pre-recorded)", + "11.1.2.3.1 Audio Description or Media Alternative (Pre-recorded)" + ] + }, + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "Le média temporel est utilisé à des fins décoratives (c’est-à-dire qu’il n’apporte aucune information).", + "Le média temporel est lui-même une alternative à un contenu de l’écran (une vidéo en langue des signes ou la vocalisation d’un texte, par exemple).", + "Le média temporel est utilisé pour accéder à une version agrandie.", + "Le média temporel est utilisé comme un CAPTCHA.", + "Le média temporel fait partie d’un test qui deviendrait inutile si la transcription textuelle, les sous-titres synchronisés ou l’audiodescription étaient communiqués.", + "Le média temporel a été publié avant le 23 septembre 2020 (d’après la [loi du 28 mai 2019](http://legilux.public.lu/eli/etat/leg/loi/2019/05/28/a373/jo))." + ] + } + ] + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré seulement audio ayant une [transcription textuelle](glossaire.md#transcription-textuelle-media-temporel), celle-ci est-elle pertinente (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.1 Contenus seulement audio et seulement vidéo (pré-enregistrés) (A)" + ], + "norm": [ + "11.1.2.1.1 Audio-only and Video-only (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque média temporel 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 »](glossaire.md#version-alternative-audio-seulement) [adjacente clairement identifiable](glossaire.md#adjacente-clairement-identifiable) ;", + "Il existe une [transcription textuelle](glossaire.md#transcription-textuelle-media-temporel) accessible [adjacente clairement identifiable](glossaire.md#adjacente-clairement-identifiable) ;", + "Il existe une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel) ;", + "Il existe une version alternative avec une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel) accessible via un composant adjacent (un bouton ou un lien)." + ] + }, + "number": 3, + "title": "Chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré seulement vidéo a-t-il, si nécessaire, une alternative (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.1 Contenus seulement audio et seulement vidéo (pré-enregistrés) (A)", + "1.2.3 Audio-description ou version de remplacement pour un média temporel (pré-enregistré) (A)" + ], + "norm": [ + "11.1.2.1.1 Audio-only and Video-only (Pre-recorded)", + "11.1.2.3.1 Audio Description or Media Alternative (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque média temporel pré-enregistré seulement vidéo respecte-t-il une de ces conditions ?", + "La [transcription textuelle](glossaire.md#transcription-textuelle-media-temporel) est pertinente ;", + "L’[audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel) est pertinente et correctement synchronisée ;", + "La [version alternative « audio seulement »](glossaire.md#version-alternative-audio-seulement) est pertinente." + ] + }, + "number": 4, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré seulement vidéo ayant une alternative, celle-ci est-elle pertinente (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.1 Contenus seulement audio et seulement vidéo (pré-enregistrés) (A)", + "1.2.3 Audio-description ou version de remplacement pour un média temporel (pré-enregistré) (A)" + ], + "norm": [ + "11.1.2.1.1 Audio-only and Video-only (Pre-recorded)", + "11.1.2.3.1 Audio Description or Media Alternative (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque média temporel synchronisé pré-enregistré vérifie-t-il, si nécessaire, l’une de ces conditions (hors cas particuliers) ?", + "Il existe une [transcription textuelle](glossaire.md#transcription-textuelle-media-temporel) accessible [adjacente clairement identifiable](glossaire.md#adjacente-clairement-identifiable) ;", + "Il existe une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel) ;", + "Il existe une version alternative avec une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel) accessible via un composant adjacent (un bouton ou un lien)." + ] + }, + "number": 5, + "title": "Chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) synchronisé pré-enregistré a-t-il, si nécessaire, une alternative (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.3 Audio-description ou version de remplacement pour un média temporel (pré-enregistré) (A)" + ], + "norm": [ + "11.1.2.3.1 Audio Description or Media Alternative (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque média temporel pré-enregistré synchronisé respecte-t-il une de ces conditions ?", + "L’audiodescription est pertinente et correctement synchronisée ;", + "La transcription textuelle est pertinente." + ] + }, + "number": 6, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) synchronisé pré-enregistré ayant une alternative, celle-ci est-elle pertinente (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.3 Audio-description ou version de remplacement pour un média temporel (pré-enregistré) (A)" + ], + "norm": [ + "7.2.2 Audio description synchronization", + "11.1.2.3.1 Audio Description or Media Alternative (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 7, + "title": "Chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) synchronisé pré-enregistré a-t-il, si nécessaire, des [sous-titres synchronisés](glossaire.md#sous-titres-synchronises-objet-multimedia) (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.2 Sous-titres (pré-enregistrés) (A)" + ], + "norm": [ + "11.1.2.2 Captions (Prerecorded)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque média temporel synchronisé pré-enregistré ayant des sous-titres synchronisés, les sous-titres respectent-ils ces conditions ?", + "Les sous-titres sont pertinents ;", + "Les sous-titres sont correctement synchronisés." + ] + }, + "number": 8, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) synchronisé pré-enregistré ayant des [sous-titres synchronisés](glossaire.md#sous-titres-synchronises-objet-multimedia), ceux-ci sont-ils pertinents ?", + "level": "A", + "references": { + "wcag": [ + "1.2.2 Sous-titres (pré-enregistrés) (A)" + ], + "norm": [ + "7.1.2 Captioning synchronization", + "11.1.2.2 Captions (Prerecorded)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 9, + "title": "Chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré (seulement vidéo ou synchronisé) a-t-il, si nécessaire, une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel) (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "[Voir les cas particuliers du critère 3.1](#crit-3-1)" + ], + "references": { + "wcag": [ + "1.2.5 Audio-description (pré-enregistrée) (AA)" + ], + "norm": [ + "11.1.2.5 Audio Description (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque média temporel pré-enregistré seulement vidéo ou synchronisé ayant une audiodescription, celle-ci respecte-t-elle ces conditions ?", + "L’audiodescription est pertinente ;", + "L’audiodescription est correctement synchronisée (la bande-son de l’audiodescription coïncide correctement avec la bande vidéo)." + ] + }, + "number": 10, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré (seulement vidéo ou synchronisé) ayant une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel), celle-ci est-elle pertinente ?", + "level": "AA", + "references": { + "wcag": [ + "1.2.5 Audio-description (pré-enregistrée) (AA)" + ], + "norm": [ + "7.2.2 Audio description synchronization", + "11.1.2.5 Audio Description (Pre-recorded)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 11, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré, le contenu textuel adjacent permet-il d’identifier clairement le média temporel (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque le média temporel est utilisé à des fins décoratives (c’est-à-dire qu’il n’apporte aucune information)." + ], + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque séquence sonore déclenchée automatiquement 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." + ] + }, + "number": 12, + "title": "Chaque séquence sonore déclenchée automatiquement est-elle [contrôlable](glossaire.md#controle-son-declenche-automatiquement) par l’utilisateur ?", + "level": "A", + "references": { + "wcag": [ + "1.4.2 Contrôle du son (A)" + ], + "norm": [ + "11.1.4.2 Audio Control" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 13, + "title": "Chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) a-t-il, si nécessaire, les [fonctionnalités de contrôle de sa consultation](glossaire.md#controle-de-la-consultation-d-un-media-temporel) ?", + "level": "A", + "references": { + "wcag": [ + "2.1.1 Clavier (A)" + ], + "norm": [ + "7.1.1 Captioning playback", + "7.2.1 Audio description playback", + "11.2.1.1.1 Keyboard" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque média temporel, les fonctionnalités de contrôle des alternatives respectent-elles ces conditions ?", + "Pour chaque média temporel, la fonctionnalité qui permet d’activer et désactiver les sous-titres est présentée au même niveau que les autres fonctionnalités de contrôle primaires ;", + "Pour chaque média temporel, la fonctionnalité qui permet d’activer et désactiver l’audiodescription est présentée au même niveau que les autres fonctionnalités de contrôle primaires." + ] + }, + "number": 14, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise), les fonctionnalités de contrôle des alternatives sont-elles présentées au même niveau que les autres fonctionnalités de [contrôle primaires](glossaire.md#controle-primaire-d-un-media-temporel) ?", + "level": "AA", + "references": { + "norm": [ + "7.3 User controls for captions and audio description" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque fonctionnalité qui transmet, convertit ou enregistre une vidéo qui possède une piste de sous-titres, à l’issue du processus, les sous-titres respectent-ils ces conditions ?", + "Les sous-titres sont présents ;", + "Les sous-titres peuvent être affichés ;", + "Les sous-titres sont correctement synchronisés ;", + "Les [caractéristiques essentielles des sous-titres](glossaire.md#caracteristiques-essentielles-des-sous-titres) sont conservées." + ] + }, + "number": 15, + "title": "Pour chaque fonctionnalité qui transmet, convertit ou enregistre un [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) synchronisé pré-enregistré qui possède une piste de sous-titres, à l’issue du processus, les sous-titres sont-ils correctement conservés ?", + "level": "AA", + "references": { + "norm": [ + "5.4 Preservation of accessibility information during conversion", + "7.1.3 Preservation of captioning" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque fonctionnalité qui transmet, convertit ou enregistre un média temporel pré-enregistré avec une audiodescription synchronisée, à l’issue du processus l’audiodescription respecte-t-elle ces conditions ?", + "L’audiodescription est présente ;", + "L’audiodescription peut être activée ;", + "L’audiodescription est correctement synchronisée." + ] + }, + "number": 16, + "title": "Pour chaque fonctionnalité qui transmet, convertit ou enregistre un [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré avec une [audiodescription synchronisée](glossaire.md#audiodescription-synchronisee-media-temporel), à l’issue du processus, l’audiodescription est-elle correctement conservée ?", + "level": "AA", + "references": { + "norm": [ + "5.4 Preservation of accessibility information during conversion", + "7.2.3 Preservation of audio description" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 17, + "title": "Pour chaque [média temporel](glossaire.md#media-temporel-type-son-video-et-synchronise) pré-enregistré, la présentation des sous-titres est-elle contrôlable par l’utilisateur (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable pour les sous-titres incrustés (_open captions_)." + ], + "references": { + "norm": [ + "7.1.4 Captions characteristics", + "11.7 User preferences" + ] + } + } + } + ], + "topic": "Multimédia", + "number": 3 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Chaque média temporel synchronisé pré-enregistré qui possède des sous-titres synchronisés respecte-t-il une de ces conditions ?", + "Les sous-titres sont dans un format standardisé ;", + "Il existe une piste audio supplémentaire qui contient les sous-titres vocalisés." + ] + }, + "number": 1, + "title": "Chaque [tableau de données complexe](glossaire.md#tableau-de-donnees-complexe) a-t-il un [résumé](glossaire.md#resume-de-tableau) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable dans les cas suivants :", + { + "ul": [ + "Les sous-titres sont incrustés dans la vidéo.", + "La vidéo et les sous-titres utilisent la même langue. Le critère ne concerne que les sous-titres de traduction." + ] + } + ], + "references": { + "wcag": [ + "1.3.1 Information et relations (A)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.5.2.5 Object information" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Pour chaque [tableau de données complexe](glossaire.md#tableau-de-donnees-complexe) ayant un [résumé](glossaire.md#resume-de-tableau), celui-ci est-il pertinent ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Information et relations (A)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.5.2.5 Object information" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 3, + "title": "Chaque [tableau de données](glossaire.md#tableau-de-donnees) a-t-il un [titre](glossaire.md#titre-d-un-tableau-de-donnees) ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Information et relations (A)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.5.2.5 Object information" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Pour chaque [tableau de données](glossaire.md#tableau-de-donnees) ayant un [titre](glossaire.md#titre-d-un-tableau-de-donnees), celui-ci est-il pertinent ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Information et relations (A)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.5.2.5 Object information" + ] + } + } + } + ], + "topic": "Tableaux", + "number": 4 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Chaque composant d’interface 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](glossaire.md#nom-role-valeur-parametrage-et-changements-d-etat) sont [accessibles aux technologies d’assistance](glossaire.md#accessible-aux-technologies-d-assistance) via une API d’accessibilité ;", + "Une alternative [adjacente clairement identifiable](glossaire.md#adjacente-clairement-identifiable) compatible avec une API d’accessibilité permet d’accéder aux mêmes fonctionnalités." + ], + "2": [ + "Chaque composant d’interface 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 ;", + "Le composant possède un rôle pertinent ;", + "Le composant possède une valeur pertinente ;", + "Le composant possède un état pertinent." + ] + }, + "number": 1, + "title": "Chaque [composant d’interface](glossaire.md#composant-d-interface) est-il, si nécessaire, [compatible avec les technologies d’assistance](glossaire.md#compatible-avec-les-technologies-d-assistance) (hors cas particuliers) ?", + "level": "A", + "references": { + "wcag": [ + "2.4.4 Link Purpose (In Context)", + "2.5.3 Étiquette dans le nom (A)", + "4.1.2 Nom, rôle et valeur (A)" + ], + "norm": [ + "5.6.1 Tactile or auditory status", + "11.2.4.4 Link Purpose (in context)", + "11.2.5.3.1 Label in Name", + "11.4.1.2.1 Name, role, value", + "11.5.2.3 Use of accessibility services", + "11.5.2.5 Object information", + "11.5.2.7 Values", + "11.5.2.8 Label relationships", + "11.5.2.9 Parent-child relationships", + "11.5.2.11 List of available actions", + "11.5.2.12 Execution of available actions", + "11.5.2.16 Modifications of states and properties", + "11.6.2 No disruption of accessibility features" + ] + }, + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "L’application est soumise à des exigences de sécurité strictes qui empêchent d’autres applications d’interagir avec son interface (comme une technologie d’assistance). Des exemples de systèmes soumis à des exigences de sécurité strictes sont les systèmes traitant des activités de renseignement, des activités de cryptologie liées à la sécurité nationale, du commandement et du contrôle des forces militaires.", + "Les cartes et les services de cartographie en ligne, pour autant que les informations essentielles soient fournies sous une forme numérique accessible pour ce qui concerne les cartes destinées à la navigation." + ] + }, + "Il existe une gestion de cas particuliers pour le [test 5.1.2](#test-5-1-2) lorsque :", + { + "ul": [ + "La ponctuation et les lettres majuscules sont présentes dans le texte de l’intitulé visible : elles peuvent être ignorées dans le nom accessible sans porter à conséquence.", + "Le texte de l’intitulé visible 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”)." + ] + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Chaque [composant d’interface](glossaire.md#composant-d-interface) est-il [contrôlable par le clavier et tout dispositif de pointage](glossaire.md#accessible-et-activable-par-le-clavier-et-tout-dispositif-de-pointage) (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "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.", + "L’application est soumise à des exigences de sécurité strictes qui empêchent d’autres applications d’interagir avec son interface (comme une technologie d’assistance). Des exemples de systèmes soumis à des exigences de sécurité strictes sont les systèmes traitant des activités de renseignement, des activités de cryptologie liées à la sécurité nationale, du commandement et du contrôle des forces militaires.", + "Les cartes et les services de cartographie en ligne, pour autant que les informations essentielles soient fournies sous une forme numérique accessible pour ce qui concerne les cartes destinées à la navigation." + ] + } + ], + "references": { + "wcag": [ + "1.3.1 Info and Relationships (A)", + "2.1.1 Keyboard (A)", + "2.4.7 Visibilité du focus (AA)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.2.1.1.1 Keyboard", + "11.2.4.7 Focus Visible", + "11.5.2.3 Use of accessibility services", + "11.5.2.7 Values", + "11.5.2.12 Execution of available actions", + "11.5.2.13 Tracking of focus and selection attributes", + "11.5.2.14 Modification of focus and selection attributes", + "11.5.2.17 Modifications of values and text" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque changement de contexte respecte-t-il une de ces conditions ?", + "L’utilisateur est averti par un texte du type de changement avant son déclenchement ;", + "Le changement de contexte est initié par une action de l’utilisateur sur un composant ayant un nom explicite." + ] + }, + "number": 3, + "title": "Chaque [changement de contexte](glossaire.md#changement-de-contexte) respecte-t-il une de ces conditions ?", + "level": "A", + "references": { + "wcag": [ + "3.2.1 Au focus (A)", + "3.2.2 À la saisie (A)" + ], + "norm": [ + "11.3.2.1 On Focus", + "11.3.2.2 On Input" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Dans chaque écran, les [messages de statut](glossaire.md#message-de-statut) sont-ils correctement restitués par les technologies d’assistance ?", + "level": "AA", + "references": { + "wcag": [ + "4.1.3 Messages d’état (AA)" + ], + "norm": [ + "11.4.1.3.1 Status Messages", + "11.5.2.3 Use of accessibility services", + "11.5.2.15 Change notification" + ] + } + } + } + ], + "topic": "Composants interactifs", + "number": 5 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Pour chaque état d’un contrôle à bascule présenté à l’utilisateur, les conditions suivantes sont-elles respectées ?", + "L’état de la fonctionnalité est visible sur l’interface sans modifier l’état du contrôle ;", + "L’état de la fonctionnalité peut être déterminé par le toucher ou le son sans modifier l’état du contrôle." + ] + }, + "number": 1, + "title": "Dans chaque écran, les textes sont-ils restitués par les technologies d’assistance dans la langue principale de l’écran ?", + "level": "A", + "references": { + "wcag": [ + "3.1.1 Langue de la page (A)" + ], + "norm": [ + "11.3.1.1.1 Language of software" + ] + } + } + } + ], + "topic": "Éléments obligatoires", + "number": 6 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Chaque écran vérifie-t-il ces conditions ?", + "Le contenu de chaque titre est pertinent ;", + "Chaque passage de texte constituant un titre est identifié comme un titre." + ] + }, + "number": 1, + "title": "Dans chaque écran, l’information est-elle structurée par l’utilisation appropriée de titres ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Information et relations (A)", + "2.4.6 En-têtes et étiquettes (AA)", + "4.1.2 Nom, rôle et valeur (A)" + ], + "norm": [ + "11.1.3.1.1 Info and Relationships", + "11.2.4.6 Headings and Labels", + "11.4.1.2 Name, Role, Value", + "11.5.2.3 Use of accessibility services", + "11.5.2.5 Object information", + "11.5.2.9 Parent-child relationships" + ] + } + } + } + ], + "topic": "Structuration de l’information", + "number": 7 + }, + { + "criteria": [ + { + "criterium": { + "tests": {}, + "number": 1, + "title": "Dans chaque écran, le contenu visible porteur d’information est-il accessible aux technologies d’assistance ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)", + "1.3.1 Information et relations (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content", + "11.1.3.1.1 Info and Relationships", + "11.5.2.10 Text" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque écran vérifie-t-il ces conditions ?", + "L’utilisateur peut agrandir la taille des textes de 200% en utilisant les paramètres de la plateforme ;", + "Tous les textes de l’écran sont agrandis ;", + "Tous les textes agrandis restent lisibles et les composants interactifs utilisables." + ] + }, + "number": 2, + "title": "Dans chaque écran, l’utilisateur peut-il augmenter la taille des caractères de 200% au moins (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "Les éléments graphiques texte ;", + "Les sous-titres de vidéo." + ] + } + ], + "references": { + "wcag": [ + "1.4.4 Redimensionnement du texte (AA)" + ], + "norm": [ + "11.1.4.4.1 Resize Text (AA)", + "11.5.2.3 Use of accessibility services", + "11.7 User preferences" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 3, + "title": "Dans chaque écran, chaque [composant en environnement de texte dont la nature n’est pas évidente](glossaire.md#composant-dont-la-nature-n-est-pas-evidente) a-t-il un rapport de contraste supérieur ou égal à 3:1 par rapport au texte environnant ?", + "level": "A", + "references": { + "wcag": [ + "1.4.1 Utilisation de la couleur (A)" + ], + "norm": [ + "11.1.4.1 Use of Colour" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Dans chaque écran, pour chaque [composant en environnement de texte dont la nature n’est pas évidente](glossaire.md#composant-dont-la-nature-n-est-pas-evidente), une indication autre que la couleur permet-elle de signaler la prise de focus et le survol à la souris ?", + "level": "A", + "references": { + "wcag": [ + "1.4.1 Utilisation de la couleur (A)" + ], + "norm": [ + "11.1.4.1 Use of Colour" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 5, + "title": "Dans chaque écran, pour chaque élément recevant le focus, la [prise de focus](glossaire.md#prise-de-focus) est-elle visible ?", + "level": "A", + "references": { + "wcag": [ + "1.4.1 Utilisation de la couleur (A)", + "2.4.7 Visibilité du focus (AA)" + ], + "norm": [ + "11.1.4.1 Use of Colour", + "11.2.4.7 Focus Visible", + "11.7 User preferences" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 6, + "title": "Dans chaque écran, l’information ne doit pas être donnée uniquement par [la forme, taille ou position](glossaire.md#indication-donnee-par-la-forme-la-taille-ou-la-position). Cette règle est-elle respectée ?", + "level": "A", + "references": { + "wcag": [ + "1.3.3 Caractéristiques sensorielles (A)", + "1.4.1 Utilisation de la couleur (A)" + ], + "norm": [ + "11.1.3.3 Sensory Characteristics", + "11.1.4.1 Use of Colour" + ] + } + } + } + ], + "topic": "Présentation de l’information", + "number": 8 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Chaque contenu additionnel devenant visible à la prise de focus ou au survol d’un composant d’interface peut-il être masqué par une action de l’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 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 ou au survol d’un composant d’interface 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 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 de la souris du composant d’interface ayant déclenché son apparition ;", + "Le contenu additionnel reste visible jusqu’à ce qu’il ne soit plus valide." + ] + }, + "number": 1, + "title": "Chaque champ de formulaire a-t-il une étiquette visible ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque le contenu additionnel est contrôlé par la plateforme (par exemple, attribut `title` en HTML) ou correspond à une fenêtre modale.", + "Lorsque le contenu additionnel ne masque ou ne remplace aucun contenu porteur d’information, le [test 8.7.1](#test-8-7-1) est non applicable." + ], + "references": { + "wcag": [ + "2.4.6 En-têtes et étiquettes (AA)" + ], + "norm": [ + "11.2.4.6 Headings and Labels" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Chaque champ de formulaire a-t-il une étiquette accessible aux technologies d’assistance ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Information et relations (A)", + "3.3.2 Étiquettes ou instructions (A)", + "4.1.2 Nom, rôle et valeur (A)" + ], + "norm": [ + "11.1.3.1 Info and Relationships (A)", + "11.3.3.2 Labels or Instructions (A)", + "11.4.1.2.1 Name, role, value (A)", + "11.5.2.3 Use of accessibility services", + "11.5.2.5 Object information", + "11.5.2.8 Label relationships" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque étiquette associée à un champ de formulaire respecte-t-elle ces conditions ?", + "L’étiquette accessible aux technologies d’assistance est pertinente ;", + "L’étiquette visible est contenue dans l’étiquette accessible aux technologies d’assistance." + ] + }, + "number": 3, + "title": "Chaque étiquette associée à un champ de formulaire est-elle pertinente ?", + "level": "A", + "references": { + "wcag": [ + "2.4.6 En-têtes et étiquettes (AA)", + "2.5.3 Étiquette dans le nom (A)", + "3.3.2 Étiquettes ou instructions (A)" + ], + "norm": [ + "11.2.4.6 Headings and Labels", + "11.2.5.3.1 Label in Name", + "11.3.3.2 Labels or Instructions (A)", + "11.5.2.5 Object information" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Chaque étiquette de champ et son champ associé sont-ils [accolés](glossaire.md#accoles-etiquette-et-champ-accoles) ?", + "level": "A", + "references": { + "wcag": [ + "3.3.2 Étiquettes ou instructions (A)" + ], + "norm": [ + "11.3.3.2 Labels or Instructions (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque bouton de formulaire respecte-t-il ces conditions ?", + "L’intitulé du bouton accessible aux technologies d’assistance est pertinent ;", + "L’intitulé visible du bouton est contenu dans l’intitulé accessible aux technologies d’assistance." + ] + }, + "number": 5, + "title": "Dans chaque formulaire, l’intitulé de chaque bouton est-il pertinent ?", + "level": "A", + "references": { + "wcag": [ + "2.5.3 Étiquette dans le nom (A)", + "4.1.2 Nom, rôle et valeur (A)" + ], + "norm": [ + "11.2.5.3.1 Label in Name (A)", + "11.4.1.2.1 Name, role, value (A)", + "11.5.2.5 Object information", + "11.5.2.8 Label relationships" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Les champs de même nature respectent-ils ces conditions, si nécessaire ?", + "Les champs sont regroupés dans un élément commun ;", + "Le regroupement possède un titre pertinent." + ] + }, + "number": 6, + "title": "Dans chaque formulaire, les [champs de même nature](glossaire.md#champs-de-meme-nature) sont-ils identifiés, si nécessaire ?", + "level": "A", + "references": { + "wcag": [ + "1.3.1 Information et relations (A)", + "3.3.2 Étiquettes ou instructions (A)" + ], + "norm": [ + "11.1.3.1 Info and Relationships", + "11.3.3.2 Labels or Instructions" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque champ de formulaire obligatoire vérifie-t-il ces conditions ?", + "Le caractère obligatoire est visible ;", + "Le caractère obligatoire est accessible aux technologies d’assistance." + ] + }, + "number": 7, + "title": "Les champs de formulaire obligatoires sont-ils correctement identifiés (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque le formulaire comporte un seul champ de formulaire ou qu’il indique les champs optionnels de manière :", + { + "ul": [ + "visible ;", + "dans l’étiquette du champ." + ] + }, + "Dans le cas où l’ensemble des champs d’un formulaire sont obligatoires, le critère reste applicable." + ], + "references": { + "wcag": [ + "3.3.2 Étiquettes ou instructions (A)" + ], + "norm": [ + "11.3.3.2 Labels or Instructions (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque champ de formulaire obligatoire respecte-t-il ces conditions ?", + "Le type de données et/ou de format est visible ;", + "Le type de données et/ou de format est accessible aux technologies d’assistance." + ] + }, + "number": 8, + "title": "Pour chaque champ de formulaire obligatoire, le type de données et/ou de format attendu est-il disponible ?", + "level": "A", + "references": { + "wcag": [ + "3.3.2 Étiquettes ou instructions (A)" + ], + "norm": [ + "11.3.3.2 Labels or Instructions (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque erreur de saisie respecte-t-elle ces conditions ?", + "L’erreur de saisie est visible ;", + "L’erreur de saisie est accessible aux technologies d’assistance." + ] + }, + "number": 9, + "title": "Dans chaque formulaire, les erreurs de saisie sont-elles accessibles ?", + "level": "A", + "references": { + "wcag": [ + "3.3.1 Identification des erreurs (A)" + ], + "norm": [ + "11.3.3.1.1 Error Identification (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Dans chaque formulaire, le contrôle de saisie vérifie-t-il ces conditions ?", + "Le contrôle de saisie est accompagné, si nécessaire, de suggestions des types et formats de données attendus ;", + "Le contrôle de saisie est accompagné, si nécessaire, de suggestions de valeurs attendues." + ] + }, + "number": 10, + "title": "Dans chaque formulaire, le [contrôle de saisie](glossaire.md#controle-de-saisie-formulaire) est-il accompagné, si nécessaire, de suggestions des types, formats de données ou valeurs attendus ?", + "level": "AA", + "references": { + "wcag": [ + "3.3.3 Suggestion après une erreur (AA)" + ], + "norm": [ + "11.3.3.3 Error Suggestion (AA)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 11, + "title": "Pour chaque formulaire 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 ?", + "level": "AA", + "references": { + "wcag": [ + "3.3.4 Prévention des erreurs (juridiques, financières, de données) (AA)" + ], + "norm": [ + "11.3.3.4 Error Prevention (Legal, Financial, Data) (AA)" + ] + } + } + } + ], + "topic": "Formulaires", + "number": 9 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Chaque champ qui attend une donnée personnelle de l’utilisateur respecte-t-il ces conditions ?", + "Les [contrôles natifs adéquats de la plateforme](glossaire.md#controles-natifs-de-la-plateforme) sont présentés à l’utilisateur ;", + "Le champ est compatible avec une fonctionnalité de remplissage automatique." + ] + }, + "number": 1, + "title": "Dans chaque écran, l’[ordre de tabulation](glossaire.md#ordre-de-tabulation) au clavier est-il [cohérent](glossaire.md#coherent-ordre-de-lecture) ?", + "level": "A", + "references": { + "wcag": [ + "2.4.3 Parcours du focus (A)" + ], + "norm": [ + "11.2.4.3 Focus Order (A)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Dans chaque écran, l’ordre de restitution par les technologies d’assistance est-il [cohérent](glossaire.md#coherent-ordre-de-lecture) ?", + "level": "A", + "references": { + "wcag": [ + "1.3.2 Ordre séquentiel logique (A)", + "2.4.3 Parcours du focus (A)" + ], + "norm": [ + "11.1.3.2.1 Meaningful Sequence", + "11.2.4.3 Focus Order (A)", + "11.5.2.10 Text" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Dans chaque écran, chaque élément recevant le focus 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 le clavier ;", + "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." + ] + }, + "number": 3, + "title": "Dans chaque écran, la navigation ne doit pas contenir de [piège au clavier](glossaire.md#piege-au-clavier). Cette règle est-elle respectée ?", + "level": "A", + "references": { + "wcag": [ + "2.1.1 Clavier (A)", + "2.1.2 Pas de piège au clavier (A)" + ], + "norm": [ + "11.2.1.1.1 Keyboard (A)", + "11.2.1.2 No Keyboard Trap (A)" + ] + } + } + } + ], + "topic": "Navigation", + "number": 10 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "Chaque limite de temps respecte-t-elle une de ces conditions ?", + "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." + ] + }, + "number": 1, + "title": "Pour chaque écran, l’utilisateur a-t-il le contrôle de chaque [limite de temps modifiant le contenu](glossaire.md#procede-de-rafraichissement) (hors cas particuliers) ?", + "level": "A", + "references": { + "wcag": [ + "2.2.1 Réglage du délai (A)", + "2.2.2 Mettre en pause, arrêter, masquer (A)" + ], + "norm": [ + "11.2.2.1 Timing adjustable (A)", + "11.2.2.2 Pause, Stop, Hide (A)" + ] + }, + "particularCases": [ + "Le critère est non applicable 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." + ] + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque procédé limitant le temps d’une session respecte-t-il une de ces conditions ?", + "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." + ] + }, + "number": 2, + "title": "Pour chaque écran, chaque procédé limitant le temps d’une session peut-il être arrêté ou supprimé (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable 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." + ], + "references": { + "wcag": [ + "2.2.1 Réglage du délai (A)" + ], + "norm": [ + "11.2.2.1 Timing adjustable" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque document bureautique vérifie-t-il 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 dans l’application accessible aux technologies d’assistance." + ] + }, + "number": 3, + "title": "Dans chaque écran, chaque document bureautique en téléchargement possède-t-il, si nécessaire, une [version accessible](glossaire.md#version-accessible) (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque les documents bureautiques (ex : PDF, documents Microsoft ou libreOffice, etc.) ont été publiés avant le 23 septembre 2018 (sauf si ces contenus sont nécessaires pour les besoins de processus administratifs actifs concernant des tâches effectuées par l’organisme du secteur public concerné), ils sont exemptés de l’obligation d’accessibilité, d’après la loi du [28 mai 2019](http://legilux.public.lu/eli/etat/leg/loi/2019/05/28/a373/jo)." + ], + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)", + "1.3.1 Information et relations (A)", + "1.3.2 Ordre séquentiel logique (A)", + "2.4.1 Contourner des blocs (A)", + "2.4.3 Parcours du focus (A)", + "3.1.1 Langue de la page (A)", + "4.1.2 Nom, rôle et valeur (A)" + ], + "norm": [ + "Non-web documents" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Pour chaque document bureautique ayant une [version accessible](glossaire.md#version-accessible), cette version offre-t-elle la même information (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque les documents bureautiques (ex : PDF, documents Microsoft ou libreOffice, etc.) ont été publiés avant le 23 septembre 2018 (sauf si ces contenus sont nécessaires pour les besoins de processus administratifs actifs concernant des tâches effectuées par l’organisme du secteur public concerné), ils sont exemptés de l’obligation d’accessibilité, d’après la loi du [28 mai 2019](http://legilux.public.lu/eli/etat/leg/loi/2019/05/28/a373/jo)." + ], + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)", + "1.3.1 Information et relations (A)", + "1.3.2 Ordre séquentiel logique (A)", + "2.4.1 Contourner des blocs (A)", + "2.4.3 Parcours du focus (A)", + "3.1.1 Langue de la page (A)", + "4.1.2 Nom, rôle et valeur (A)" + ], + "norm": [ + "Non-web documents" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 5, + "title": "Dans chaque écran, chaque contenu cryptique (art ASCII, émoticon, syntaxe cryptique) a-t-il une alternative ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content (A)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 6, + "title": "Dans chaque écran, pour chaque contenu cryptique (art ASCII, émoticône, syntaxe cryptique) ayant une alternative, cette alternative est-elle pertinente ?", + "level": "A", + "references": { + "wcag": [ + "1.1.1 Contenu non textuel (A)" + ], + "norm": [ + "11.1.1.1.1 Non-text Content (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Les changements brusques de luminosité ou les effets de flash vérifient-ils 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." + ] + }, + "number": 7, + "title": "Dans chaque écran, les [changements brusques de luminosité ou les effets de flash](glossaire.md#changement-brusque-de-luminosite-ou-effet-de-flash) sont-ils correctement utilisés ?", + "level": "A", + "references": { + "wcag": [ + "2.3.1 Pas plus de trois flashs ou sous le seuil critique (A)" + ], + "norm": [ + "11.2.3.1 Three Flashes or Below Threshold (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque contenu en mouvement ou clignotant respecte-t-il une de ces conditions ?", + "La durée du mouvement ou du clignotement est inférieure ou égale à 5 secondes ;", + "L’utilisateur peut arrêter et relancer le mouvement ou le clignotement ;", + "L’utilisateur peut afficher et masquer le contenu en mouvement ou clignotant ;", + "L’utilisateur peut afficher la totalité de l’information sans le mouvement ou le clignotement." + ] + }, + "number": 8, + "title": "Dans chaque écran, chaque contenu en mouvement ou clignotant est-il [contrôlable](glossaire.md#controle-contenu-en-mouvement-ou-clignotant) par l’utilisateur ?", + "level": "A", + "references": { + "wcag": [ + "2.2.1 Réglage du délai (A)", + "2.2.2 Mettre en pause, arrêter, masquer (A)" + ], + "norm": [ + "11.2.2.1 Timing Adjustable (A)", + "11.2.2.2 Pause, Stop, Hide (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Dans chaque écran, chaque contenu vérifie-t-il ces conditions ?", + "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 même si sa présentation et le moyen d’y accéder peuvent différer." + ] + }, + "number": 9, + "title": "Dans chaque écran, le contenu proposé est-il consultable quelle que soit l’orientation de l’écran (portrait ou paysage) (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable lorsque l’orientation du périphérique est essentielle à l’utilisation de l’application, par exemple : interfaces de jeu, de piano, etc. Si l’interface est le seul moyen d’accéder au service proposé, une alternative devrait être mise en place." + ], + "references": { + "wcag": [ + "1.3.4 Orientation (AA)" + ], + "norm": [ + "11.1.3.4 Orientation" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 10, + "title": "Dans chaque écran, les fonctionnalités activables au moyen d’un [geste complexe](glossaire.md#gestes-complexes-et-gestes-simples) sont-elles activables au moyen d’un [geste simple](glossaire.md#gestes-complexes-et-gestes-simples) (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable pour les éléments suivants :", + { + "ul": [ + "Les gestes requis par la plateforme.", + "Les fonctionnalités pour lesquelles la réalisation d’un geste complexe est essentielle (exécuter le tracé d’une signature, par exemple)." + ] + } + ], + "references": { + "wcag": [ + "2.5.1 Gestes pour le contrôle du pointeur (A)" + ], + "norm": [ + "5.5.1 Means of operation", + "5.9 Simultaneous user actions", + "11.2.5.1 Pointer Gestures" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 11, + "title": "Dans chaque écran, les fonctionnalités activables par la réalisation d’actions simultanées sont-elles activables au moyen d’une action unique. Cette règle est-elle respectée (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable pour les actions requises par la plateforme." + ], + "references": { + "norm": [ + "5.9 Simultaneous user actions" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Dans chaque écran, 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é ;", + "L’action est déclenchée au moment où le dispositif de pointage est pressé ou posé puis annulée lorsque le dispositif de pointage est relâché ou relevé ;", + "L’[action est complexe](glossaire.md#action-complexe) et 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." + ] + }, + "number": 12, + "title": "Dans chaque écran, 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) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable 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." + ], + "references": { + "wcag": [ + "2.5.2 Annulation de l’action du pointeur (A)" + ], + "norm": [ + "11.2.5.2 Pointer Cancellation (A)" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque fonctionnalité qui implique un mouvement de l’appareil ou vers l’appareil respecte-t-elle ces conditions ?", + "La fonctionnalité peut être déclenchée avec un composant d’interface ;", + "L’utilisateur a la possibilité de désactiver la détection du mouvement pour éviter un déclenchement accidentel de la fonctionnalité." + ] + }, + "number": 13, + "title": "Dans chaque écran, 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) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable 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é." + ] + } + ], + "references": { + "wcag": [ + "2.5.4 Activation par le mouvement (A)" + ], + "norm": [ + "5.5.1 Means of operation", + "11.2.5.4 Motion Actuation (A)" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 14, + "title": "Pour chaque fonctionnalité de conversion d’un document, les [informations relatives à l’accessibilité](glossaire.md#information-d-accessibilite) disponibles dans le document source sont-elles conservées dans le document de destination (hors cas particuliers) ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable lorsque le format de conversion ne dispose pas des éléments nécessaires à l’identification des informations d’accessibilité. Par exemple, si la conversion se fait depuis un format HTML vers un format TXT, alors le critère est non applicable." + ], + "references": { + "norm": [ + "5.4 Preservation of accessibility information during conversion" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque fonctionnalité d’identification ou de contrôle de l’application qui repose sur l’utilisation de caractéristique biologique de l’utilisateur respecte-t-elle une de ces conditions ?", + "Il existe une alternative qui ne repose pas sur une caractéristique biologique de l’utilisateur ;", + "Il existe une alternative qui repose sur une caractéristique biologique de l’utilisateur qui soit suffisamment différente." + ] + }, + "number": 15, + "title": "Chaque fonctionnalité d’identification ou de contrôle de l’application qui repose sur l’utilisation de [caractéristique biologique](glossaire.md#caracteristique-biologique) de l’utilisateur, dispose-t-elle d’une méthode alternative ?", + "level": "A", + "references": { + "norm": [ + "5.3 Biometrics" + ] + } + } + } + ], + "topic": "Consultation", + "number": 11 + }, + { + "criteria": [ + { + "criterium": { + "tests": { + "1": [ + "La documentation de l’application inclut-elle les éléments suivants au moins ?", + "Une description des fonctionnalités d’accessibilité de l’application ;", + "Une explication de l’utilisation des fonctionnalités d’accessibilité de l’application ;", + "Des informations concernant l’accessibilité de la plateforme et sa compatibilité avec les technologies d’assistance." + ] + }, + "number": 1, + "title": "La documentation de l’application décrit-elle les [fonctionnalités d’accessibilité](glossaire.md#fonctionnalite-d-accessibilite) de l’application et leur utilisation ?", + "level": "AA", + "particularCases": [ + "Le critère est non applicable :", + { + "ul": [ + "Pour les répétitions de touches gérées au niveau de la plateforme ;", + "Pour les applications qui disposent d’une méthode permettant de désactiver la fonctionnalité de répétition des touches." + ] + } + ], + "references": { + "norm": [ + "12.1.1 Accessibility and compatibility features" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "Pour chaque [fonctionnalité d’accessibilité](glossaire.md#fonctionnalite-d-accessibilite) décrite dans la documentation, l’ensemble du parcours qui permet de l’activer répond aux besoins d’accessibilité des utilisateurs qui en ont besoin. Cette règle est-elle respectée (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable pour les fonctionnalités intégrées à la plateforme." + ], + "references": { + "norm": [ + "5.2 Activation of accessibility features" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 3, + "title": "L’application ne perturbe pas les fonctionnalités d’accessibilité de la plateforme. Cette règle est-elle respectée ?", + "level": "A", + "references": { + "norm": [ + "11.6.2 No disruption of accessibility features" + ] + } + } + } + ], + "topic": "Documentation et fonctionnalités d’accessibilité", + "number": 12 + }, + { + "criteria": [ + { + "criterium": { + "tests": {}, + "number": 1, + "title": "L’[outil d’édition](glossaire.md#outil-d-edition) permet-il de définir les [informations d’accessibilité](glossaire.md#information-d-accessibilite) nécessaires pour créer un contenu conforme ?", + "level": "A", + "references": { + "norm": [ + "11.8.1 Content technology", + "11.8.2 Accessible content creation" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 2, + "title": "L’[outil d’édition](glossaire.md#outil-d-edition) met-il à disposition des aides à la création de contenus accessibles ?", + "level": "A", + "references": { + "norm": [ + "11.8.1 Content technology", + "11.8.2 Accessible content creation" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 3, + "title": "Le contenu généré par chaque [transformation](glossaire.md#transformation) des contenus est-il accessible (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque le format de destination ne permet pas de conserver les informations d’accessibilité présentes dans le contenu en entrée." + ], + "references": { + "norm": [ + "11.8.1 Content technology", + "11.8.3 Preservation of accessibility information in transformations" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 4, + "title": "Pour chaque erreur d’accessibilité relevée par un test d’accessibilité automatique ou semi-automatique, l’outil d’édition fournit-il des suggestions de réparation ?", + "level": "AA", + "references": { + "norm": [ + "11.8.1 Content technology", + "11.8.4 Repair Assistance" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 5, + "title": "Pour chaque ensemble de [gabarits](glossaire.md#gabarit), un gabarit au moins permet de répondre aux exigences du [RAWeb](../raweb1/criteres.html). Cette règle est-elle respectée ?", + "level": "A", + "references": { + "norm": [ + "11.8.1 Content technology", + "11.8.5 Templates" + ] + } + } + } + ], + "topic": "Outils d’édition", + "number": 13 + }, + { + "criteria": [ + { + "criterium": { + "tests": {}, + "number": 1, + "title": "Chaque [service d’assistance](glossaire.md#service-d-assistance) fournit-il des informations relatives aux [fonctionnalités d’accessibilité](glossaire.md#fonctionnalite-d-accessibilite) de l’application décrites dans la documentation ?", + "level": "AA", + "references": { + "norm": [ + "12.2.2 Information on accessibility and compatibility features" + ] + } + } + } + ], + "topic": "Services d’assistance", + "number": 14 + }, + { + "criteria": [ + { + "criterium": { + "tests": {}, + "number": 1, + "title": "Pour chaque [application de communication orale bidirectionnelle](glossaire.md#application-de-communication-orale-bidirectionnelle), l’application est-elle capable d’encoder et de décoder cette communication avec une gamme de fréquences dont la limite supérieure est de 7 000 Hz au moins ?", + "level": "A", + "references": { + "norm": [ + "6.1 Audio bandwidth for speech" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Chaque application qui permet une communication orale bidirectionnelle respecte-t-elle une de ces conditions ?", + "L’application dispose d’une fonctionnalité intégrée de communication écrite en temps réel ;", + "L’application peut être connectée à un terminal qui intègre une fonctionnalité de communication écrite en temps réel." + ] + }, + "number": 2, + "title": "Chaque application qui permet une [communication orale bidirectionnelle](glossaire.md#application-de-communication-orale-bidirectionnelle) dispose-t-elle d’une fonctionnalité de [communication écrite en temps réel](glossaire.md#communication-ecrite-en-temps-reel) ?", + "level": "A", + "references": { + "norm": [ + "6.2.1.1 RTT communication" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 3, + "title": "Pour chaque application qui permet une [communication orale bidirectionnelle](glossaire.md#application-de-communication-orale-bidirectionnelle) et [écrite en temps réel](glossaire.md#communication-ecrite-en-temps-reel), les deux modes sont-ils utilisables simultanément ?", + "level": "A", + "references": { + "norm": [ + "6.2.1.2 Concurrent voice and text" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque fonctionnalité de communication écrite en temps réel, les messages respectent-ils ces conditions ?", + "Les messages reçus et envoyés sont séparés dans la présentation ;", + "La présentation permet d’identifier la nature du message (reçu ou envoyé) ;", + "La présentation permet d’identifier les auteurs des messages ;", + "La nature du message (reçu ou envoyé) est accessible aux technologies d’assistance ;", + "L’identification de l’auteur du message est accessible aux technologies d’assistance." + ] + }, + "number": 4, + "title": "Pour chaque fonctionnalité de [communication écrite en temps réel](glossaire.md#communication-ecrite-en-temps-reel), les messages peuvent-ils être identifiés (hors cas particuliers) ?", + "level": "A", + "particularCases": [ + "Le critère est non applicable lorsque la fonctionnalité de communication orale bidirectionnelle ne permet pas d’identifier les participants, il n’est alors pas requis que la fonctionnalité de communication écrite en temps réel identifie les auteurs des messages." + ], + "references": { + "norm": [ + "6.2.2.1 Visually distinguishable display", + "6.2.2.2 Programmatically determinable send and receive direction", + "6.2.2.3 Speaker identification" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque application de communication orale et écrite en temps réel, un indicateur visuel de l’activité orale est-il présent ?" + ], + "2": [ + "Pour chaque application de communication orale bidirectionnelle qui dispose d’une vidéo en temps réel, un indicateur visuel de l’activité orale est-il présent ?" + ] + }, + "number": 5, + "title": "Pour chaque application de [communication orale bidirectionnelle](glossaire.md#application-de-communication-orale-bidirectionnelle), un indicateur visuel de l’activité orale est-il présent ?", + "level": "A", + "references": { + "norm": [ + "6.2.2.4 Visual indicator of Audio with RTT", + "6.5.5 Visual indicator of audio with video" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 6, + "title": "Chaque application de [communication écrite en temps réel](glossaire.md#communication-ecrite-en-temps-reel) qui peut interagir avec d’autres applications de [communication écrite en temps réel](glossaire.md#communication-ecrite-en-temps-reel) respecte-t-elle les règles d’interopérabilité en vigueur ?", + "level": "A", + "references": { + "norm": [ + "6.2.3 Interoperability" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 7, + "title": "Pour chaque application qui permet une [communication écrite en temps réel](glossaire.md#communication-ecrite-en-temps-reel), le délai de transmission de chaque [unité de saisie](glossaire.md#unite-de-saisie) est de 500ms ou moins. Cette règle est-elle respectée ?", + "level": "AA", + "references": { + "norm": [ + "6.2.4 RTT Responsiveness" + ] + } + } + }, + { + "criterium": { + "tests": { + "1": [ + "Pour chaque application de télécommunication qui fournit l’identification de l’interlocuteur, l’identification respecte-t-elle ces conditions ?", + "L’identification de l’interlocuteur est présentée sous forme de texte ;", + "L’identification de l’interlocuteur est accessible aux technologies d’assistance." + ] + }, + "number": 8, + "title": "Pour chaque application de télécommunication, l’identification de l’interlocuteur qui initie un appel est-elle accessible ?", + "level": "A", + "references": { + "norm": [ + "6.3 Caller ID" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 9, + "title": "Pour chaque application de [communication orale bidirectionnelle](glossaire.md#application-de-communication-orale-bidirectionnelle) qui fournit l’identification de l’interlocuteur, existe-t-il un moyen de présenter cette identification pour les utilisateurs de langue des signes ?", + "level": "A", + "references": { + "norm": [ + "6.5.6 Speaker identification with video (sign language) communication" + ] + } + } + }, + { + "criterium": { + "tests": {}, + "number": 10, + "title": "Pour chaque application de [communication orale bidirectionnelle](glossaire.md#application-de-communication-orale-bidirectionnelle) qui dispose de [fonctionnalités vocales](glossaire.md#fonctionnalites-vocales), celles-ci sont-elles utilisables sans la nécessité d’écouter ou parler ?", + "level": "A", + "references": { + "norm": [ + "6.4 Alternatives to voice-based services" + ] + } + } + } + ], + "topic": "Communication en temps réel", + "number": 15 + } + ] +} \ No newline at end of file diff --git a/confiture-web-app/src/raam/methodologies.json b/confiture-web-app/src/raam/methodologies.json new file mode 100644 index 000000000..abd4c4b00 --- /dev/null +++ b/confiture-web-app/src/raam/methodologies.json @@ -0,0 +1,109 @@ +{ + "1.1": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les éléments graphiques décoratifs ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)).\n3. Vérifier :\n * qu’ils ne peuvent pas être atteints avec le lecteur d’écran ;\n * que leur contenu n’est pas restitué par ailleurs depuis un autre élément dans l’écran.\n4. Si c’est le cas, le critère est validé.", + "1.2": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les éléments graphiques porteurs d’informations ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)), par exemple, une image ou une icône.\n3. Vérifier :\n * qu’ils peuvent être atteints avec le lecteur d’écran ;\n * ou que l’information qu’ils véhiculent est restituée depuis un autre élément dans l’écran.\n4. Si c’est le cas, le critère est validé.", + "1.3": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les éléments graphiques porteurs d’information ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)).\n3. Vérifier :\n * que l’alternative restituée par le lecteur d’écran est pertinente ;\n * ou que l’information restituée depuis un autre élément dans l’écran est pertinente.\n4. Si c’est le cas, le critère est validé.", + "1.4": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les éléments graphiques utilisés comme CAPTCHA ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)).\n3. Vérifier que l’alternative restituée par le lecteur d’écran permet de comprendre la fonction de l’élément graphique (par exemple « Code secret à saisir », « Code de sécurité »).\n4. Si c’est le cas, le critère est validé.", + "1.5": "###### iOS et Android\n1. Repérer dans l’écran les éléments graphiques utilisés comme CAPTCHA ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)).\n2. Vérifier :\n * la présence d’une alternative non graphique (CAPTCHA sonore ou logique) ;\n * ou la présence d’une autre solution d’accès à la fonctionnalité sécurisée par le CAPTCHA (envoi d’un code sms, envoi d’un email de confirmation, etc.).\n3. Si c’est le cas, le critère est validé.", + "1.6": "###### iOS et Android\n1. Repérer dans l’écran les éléments graphiques porteurs d’information qui nécessitent une description détaillée ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)). Par exemple :\n * éléments graphiques pour lesquels l’alternative à fournir est trop longue (plus d’une phrase par exemple) ou nécessite une structuration (titres, listes ou tableau) ;\n * éléments graphiques qui cumulent plusieurs problématiques (information par la couleur, élément graphique texte, contrastes, etc.) comme les graphiques ou les cartes.\n2. Vérifier :\n * la présence d’une description détaillée clairement identifiable adjacente à l’élément graphique ;\n * ou la présence d’une fonctionnalité (un bouton, un lien) permettant d’accéder à une description détaillée.\n3. Sinon, activer le **lecteur d’écran** et naviguer jusqu’à l’élément graphique.\n4. Vérifier que le lecteur d’écran restitue une description détaillée.\n5. Si c’est le cas, le critère est validé.", + "1.7": "###### iOS et Android\n1. Repérer dans l’écran les éléments graphiques qui possèdent une description détaillée.\n2. Vérifier que chaque description détaillée est pertinente. On doit y trouver toutes les informations présentes dans l’élément graphique et nécessaires à la compréhension du contenu.\n3. Si c’est le cas, le critère est validé.", + "1.8": "###### iOS et Android\n1. Repérer dans l’écran les éléments graphiques texte porteurs d’information ([voir la note de glossaire concernant les particularités de restitution](glossaire.md#element-graphique)) :\n * Activer le **lecteur d’écran**, parcourir le contenu et repérer si les éléments restitués « élément graphique » ou « image » contiennent du texte porteur d’information.\n2. Vérifier :\n * qu’il existe un mécanisme de remplacement des éléments graphiques texte par du texte modifiable selon les préférences d’affichage de l’utilisateur (taille, couleur, graisse…) ;\n * ou que les styles et effets ne peuvent pas être reproduits via du [texte stylé](glossaire.md#texte-style).\n3. Si c’est le cas, le critère est validé.", + "1.9": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux éléments graphiques légendés.\n3. Vérifier que la légende de l’élément graphique est restituée lorsque le focus atteint l’élément graphique (l’élément graphique et la légende sont contenus dans un seul élément atteignable par le lecteur d’écran).\n4. Si c’est le cas, le critère est validé.", + "2.1": "###### iOS\n1. Activer l’option **Différencier sans couleur** (_Réglages > Accessibilité > Affichage et taille du texte > Différencier sans couleur_).\n2. Repérer dans l’écran les mots ou ensemble de mots, les textes, les éléments graphiques porteurs d’information et les médias temporels dont la mise en couleur est porteuse d’information.\n3. Vérifier qu’il existe un autre moyen visuel de récupérer cette information : présence d’une icône ou d’un effet graphique de forme ou de position, un effet typographique, etc.\n4. Avec le **lecteur d’écran**, accéder à l’information donnée par la couleur.\n5. Vérifier qu’une information équivalente est restituée par le lecteur d’écran (par exemple l’état « sélectionné » d’un bouton vert).\n6. Si c’est le cas, le critère est validé.\n###### Android\n1. Repérer dans l’écran les mots ou ensemble de mots, les textes, les éléments graphiques porteurs d’information et les médias temporels dont la mise en couleur est porteuse d’information.\n2. Vérifier qu’il existe un autre moyen visuel de récupérer cette information : présence d’une icône ou d’un effet graphique de forme ou de position, un effet typographique, etc.).\n3. Avec le **lecteur d’écran**, accéder à l’information donnée par la couleur.\n4. Vérifier qu’une information équivalente est restituée par le lecteur d’écran (par exemple l’état « sélectionné » d’un bouton vert).\n5. Si c’est le cas, le critère est validé.", + "2.2": "###### iOS\n1. Activer l’option **Augmenter le contraste** (_Réglages > Accessibilité > Affichage et taille du texte > Augmenter le contraste_) ou s’il est présent dans l’application, activer le mécanisme de remplacement permettant d’afficher l’application avec un rapport de contraste suffisant.\n2. Repérer dans l’écran les textes, les textes contenus dans des éléments graphiques et les textes incrustés dans les vidéos qui pourraient poser des problèmes de contraste.\n3. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs d’avant-plan et d’arrière-plan sur le terminal mobile soit :\n * En [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * En réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n4. Vérifier :\n * Pour les textes en taille normale, que la valeur de contraste est de 4.5:1, au moins ;\n * Pour les textes de grande taille, que la valeur de contraste est de 3:1 au moins.\n5. Si c’est le cas, le critère est validé.\nNote : Il est possible d’utiliser l’application **[Accessibility Inspector](methodologie.md#applications-de-tests)**{lang=en} disponible sur macOS pour réaliser une évaluation rapide des contrastes des écrans. Le logiciel dispose d’une fonctionnalité « Audit » qui permet de faire des tests automatiques de certains éléments textes et graphiques des écrans. Cette fonctionnalité ne détecte pas l’ensemble des défauts de contraste, des tests complémentaires suivant la méthodologie décrite ci-avant seront nécessaires.\n###### Android\n1. S’il existe dans l’application, activer le mécanisme de remplacement permettant d’afficher l’application avec un rapport de contraste suffisant.\n2. Repérer dans l’écran les textes, les textes contenus dans des éléments graphiques et les textes incrustés dans les vidéos qui pourraient poser des problèmes de contraste.\n3. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs d’avant-plan et d’arrière-plan sur le terminal mobile soit :\n * En [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * En réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n4. Vérifier :\n * Pour les textes en taille normale, que la valeur de contraste est de 4.5:1, au moins ;\n * Pour les textes de grande taille, que la valeur de contraste est de 3:1 au moins.\n5. Si c’est le cas, le critère est validé.\nNote : Il est possible d’utiliser l’application **[Accessibility Scanner](methodologie.md#applications-de-tests)** pour réaliser une évaluation rapide des contrastes des écrans. L’application ne détecte pas l’ensemble des défauts de contrastes, des tests complémentaires suivant la méthodologie décrite ci-avant seront nécessaires.", + "2.3": "###### iOS\n1. Activer l’option **Augmenter le contraste** (_Réglages > Accessibilité > Affichage et taille du texte > Augmenter le contraste_) ou s’il est présent dans l’application, activer le mécanisme de remplacement permettant d’afficher les éléments graphiques avec un rapport de contraste suffisant.\n2. Repérer dans l’écran les éléments graphiques porteurs d’information et pour chacun :\n * Identifier quelle(s) couleur(s) du composant sont nécessaires à l’identification de la localisation et/ou de l’information véhiculée (cela peut être la bordure, la couleur d’une icône, la couleur de fond) ;\n * Identifier les couleurs adjacentes qui ont un impact sur la visibilité de la ou les couleurs du composant.\n3. Repérer dans l’écran les composants interactifs qui peuvent avoir plusieurs états (survolés, focus, activé, coché) et pour chacun :\n * Identifier quelle(s) couleur(s) du composant sont nécessaires à l’identification de la localisation et/ou de l’information véhiculée et de l’état (cela peut être la bordure, la couleur d’une icône, la couleur de fond) pour chacun des états ;\n * Identifier les couleurs adjacentes qui ont un impact sur la visibilité de la ou les couleurs du composant.\n4. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs d’avant-plan et d’arrière-plan sur le terminal mobile soit :\n * En [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * En réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n5. Vérifier que le rapport de contraste entre les couleurs identifiées est de 3:1 au moins.\n6. Si c’est le cas, le critère est validé.\nNote : Il est possible d’utiliser l’application **[Accessibility Inspector](methodologie.md#applications-de-tests)**{lang=en} disponible sur macOS pour réaliser une évaluation rapide des contrastes des écrans. Le logiciel dispose d’une fonctionnalité « Audit » qui permet de faire des tests automatiques de certains éléments textes et graphiques des écrans. Cette fonctionnalité ne détecte pas l’ensemble des défauts de contraste, des tests complémentaires suivant la méthodologie décrite ci-avant seront nécessaires.\n###### Android\n1. S’il existe dans l’application, activer le mécanisme de remplacement de l’application permettant d’afficher les éléments graphiques avec un rapport de contraste suffisant.\n2. Repérer dans l’écran les éléments graphiques porteurs d’information et pour chacun :\n * Identifier quelle(s) couleur(s) du composant sont nécessaires à l’identification de la localisation et/ou de l’information véhiculée (cela peut être la bordure, la couleur d’une icône, la couleur de fond) ;\n * Identifier les couleurs adjacentes qui ont un impact sur la visibilité de la ou les couleurs du composant.\n3. Repérer dans l’écran les composants interactifs qui peuvent avoir plusieurs états (survolés, focus, activé, coché) et pour chacun :\n * Identifier quelle(s) couleur(s) du composant sont nécessaires à l’identification de la localisation et/ou de l’information véhiculée et de l’état (cela peut être la bordure, la couleur d’une icône, la couleur de fond) pour chacun des états ;\n * Identifier les couleurs adjacentes qui ont un impact sur la visibilité de la ou les couleurs du composant.\n4. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs d’avant-plan et d’arrière-plan sur le terminal mobile soit :\n * En [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * En réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n5. Vérifier que le rapport de contraste entre les couleurs identifiées est de 3:1 au moins.\n6. Si c’est le cas, le critère est validé.\nNote : Il est possible d’utiliser l’application **[Accessibility Scanner](methodologie.md#applications-de-tests)** pour réaliser une évaluation rapide des contrastes des écrans. L’application ne détecte pas l’ensemble des défauts de contrastes, des tests complémentaires suivant la méthodologie décrite ci-avant seront nécessaires.", + "2.4": "###### iOS\n1. Vérifier que l’option **Augmenter le contraste** (_Réglages > Accessibilité > Affichage et taille du texte > Augmenter le contraste_) est désactivée.\n2. Repérer la présence d’un mécanisme de remplacement permettant d’afficher l’application avec un rapport de contraste suffisant.\n3. Vérifier qu’il n’est pas activé (c’est-à-dire que l’écran est diffusé avec les contrastes par défaut).\n4. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs d’avant-plan et d’arrière-plan sur le terminal mobile soit :\n * En [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * En réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n5. Si le mécanisme de remplacement est identifié par un texte, capturer les couleurs d’avant-plan et d’arrière-plan et vérifier :\n * Pour les textes en taille normale, que la valeur de contraste est de 4.5:1, au moins ;\n * Pour les textes en taille agrandie, que la valeur de contraste est de 3:1 au moins.\n6. Si le mécanisme de remplacement est identifié par un élément non textuel uniquement (une icône par exemple) :\n 1. Identifier quelle(s) couleur(s) du composant sont nécessaires à l’identification de la localisation et/ou de l’information (cela peut être la bordure, la couleur d’une icône, la couleur de fond) ;\n 2. Identifier les couleurs adjacentes qui ont un impact sur la visibilité de la couleur ;\n 3. Vérifier que le rapport de contraste entre les couleurs identifiées est de 3:1 au moins.\n7. Si c’est le cas, le critère est validé.\n###### Android\n1. Repérer la présence d’un mécanisme de remplacement permettant d’afficher l’application avec un rapport de contraste suffisant.\n2. Vérifier qu’il n’est pas activé (c’est-à-dire que l’écran est diffusé avec les contrastes par défaut).\n3. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs d’avant-plan et d’arrière-plan sur le terminal mobile soit :\n * En [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * En réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n4. Si le mécanisme de remplacement est identifié par un texte, capturer les couleurs d’avant-plan et d’arrière-plan et vérifier :\n * Pour les textes en taille normale, que la valeur de contraste est de 4.5:1, au moins ;\n * Pour les textes en taille agrandie, que la valeur de contraste est de 3:1 au moins.\n5. Si le mécanisme de remplacement est identifié par un élément non textuel uniquement (une icône par exemple) :\n 1. Identifier quelle(s) couleur(s) du composant sont nécessaires à l’identification de la localisation et/ou de l’information (cela peut être la bordure, la couleur d’une icône, la couleur de fond) ;\n 2. Identifier les couleurs adjacentes qui ont un impact sur la visibilité de la couleur ;\n 3. Vérifier que le rapport de contraste entre les couleurs identifiées est de 3:1 au moins.\n6. Si c’est le cas, le critère est validé.", + "3.1": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels seulement audio qui nécessitent une transcription textuelle.\n2. Vérifier :\n * La présence d’une transcription textuelle accessible via un composant adjacent (un bouton ou un lien) ;\n * Ou la présence d’une transcription textuelle adjacente clairement identifiable.\n3. Si c’est le cas, le critère est validé.", + "3.2": "###### iOS et Android\n1. Repérer dans l’écran les transcriptions textuelles des médias temporels seulement audio.\n2. Vérifier que chaque transcription textuelle est pertinente (toutes les informations sonores ou visuelles importantes sont présentes, les dialogues et les textes incrustés notamment).\n3. Si c’est le cas, le critère est validé.", + "3.3": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels seulement vidéo qui nécessitent une transcription textuelle.\n2. Vérifier :\n * la présence d’une version alternative audio seulement accessible via un composant adjacent (un bouton ou un lien) ;\n * ou la présence d’une version alternative audio seulement adjacente ;\n * ou la présence d’une transcription textuelle adjacente (un bouton ou un lien) ;\n * ou la présence d’une transcription textuelle adjacente clairement identifiable ;\n * ou la présence d’une audiodescription synchronisée ;\n * ou la présence d’une version alternative avec une audiodescription synchronisée accessible via un composant adjacent (un bouton ou un lien).\n3. Si c’est le cas, le critère est validé.", + "3.4": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels seulement vidéo avec une alternative (transcription textuelle ou une version audio seulement).\n2. Si la transcription textuelle est présente, vérifier :\n * que celle-ci est pertinente (toutes les informations sonores ou visuelles importantes sont présentes, les dialogues et les textes incrustés notamment).\n3. Si une audiodescription est présente, vérifier :\n * que celle-ci est pertinente (toutes les informations visuelles importantes sont présentes) ;\n * et que celle-ci est correctement synchronisée (la bande-son de l’audiodescription coïncide correctement avec la bande vidéo).\n4. Si une version « audio seulement » est présente, vérifier :\n * que celle-ci est pertinente (toutes les informations sonores ou visuelles importantes sont présentes, les dialogues et les textes incrustés notamment).\n5. Si c’est le cas, le critère est validé.", + "3.5": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels synchronisés qui nécessitent une transcription textuelle.\n2. Vérifier :\n * la présence d’une transcription textuelle adjacente clairement identifiable ;\n * ou la présence d’une transcription textuelle accessible via un composant adjacent (un bouton ou un lien) ;\n * ou la présence d’une audiodescription synchronisée ;\n * ou la présence d’une version alternative avec une audiodescription synchronisée accessible via un composant adjacent (un bouton ou un lien).\n3. Si c’est le cas, le critère est validé.", + "3.6": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels synchronisés avec une audiodescription ou une transcription textuelle.\n2. Si une audiodescription est présente, vérifier :\n * que celle-ci est pertinente (toutes les informations visuelles importantes sont présentes) ;\n * et que celle-ci est correctement synchronisée (la bande-son de l’audiodescription coïncide correctement avec la bande vidéo).\n3. Si une transcription textuelle est présente, vérifier :\n * que celle-ci est pertinente (toutes les informations sonores ou visuelles importantes sont présentes, les dialogues et les textes incrustés notamment).\n4. Si c’est le cas, le critère est validé.", + "3.7": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels synchronisés qui nécessitent des sous-titres (c’est-à-dire dont la bande son apporte de l’information, comme le discours d’une personne).\n2. Vérifier :\n * qu’il existe des sous-titres synchronisés ;\n * ou qu’il existe une version alternative possédant des sous-titres synchronisés accessible via un composant adjacent (un bouton ou un lien).\n3. Si c’est le cas, le critère est validé.", + "3.8": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels synchronisés possédant des sous-titres.\n2. Vérifier que les sous-titres sont :\n * pertinents (toutes les informations sonores importantes sont présentes, les dialogues notamment) ;\n * et correctement synchronisés. Si vous n’observez pas de décalage entre le discours oralisé et l’apparition des sous-titres, les sous-titres sont correctement synchronisés. La norme de référence spécifie que les sous-titres doivent apparaître dans les 100 ms suivant l’[horodatage du sous-titre](glossaire.md#horodatage-time-stamp).\n3. Si c’est le cas, le critère est validé.", + "3.9": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels pré-enregistrés seulement vidéo et synchronisés qui nécessitent une audiodescription.\n2. Vérifier :\n * la présence d’une audiodescription synchronisée ;\n * ou la présence d’une version alternative avec une audiodescription synchronisée adjacente ou accessible via un composant adjacent (un bouton ou un lien).\n3. Si c’est le cas, le critère est validé.", + "3.10": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels seulement vidéo ou synchronisé avec une audiodescription.\n2. Vérifier que l’audiodescription est :\n * pertinente (toutes les informations visuelles importantes sont présentes) ;\n * correctement synchronisée :\n * les sons et paroles de l’audiodescription ne chevauchent pas ceux de la bande-son originale pour provoquer des problèmes de perception et de compréhension ;\n * les informations véhiculées dans l’audiodescription sont données au moment où apparaissent les informations visuelles équivalentes.\n3. Si c’est le cas, le critère est validé.", + "3.11": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels seulement vidéo, audio ou synchronisés pré-enregistrés.\n2. Vérifier :\n * qu’un passage de texte (un titre ou un paragraphe par exemple), permettant d’identifier le média temporel, le précède ou le suit immédiatement ;\n * que le passage de texte est situé à l’extérieur du lecteur de contenu multimédia.\n3. Si c’est le cas, le critère est validé.", + "3.12": "###### iOS et Android\n1. Au chargement de l’écran, si un son se déclenche automatiquement, vérifier :\n * que la séquence sonore a une durée inférieure ou égale à 3 secondes ;\n * ou qu’un dispositif (un bouton par exemple), sur l’élément ayant déclenché le son, ou dans l’écran, permet de le stopper ;\n * ou que le volume de la séquence peut être contrôlé par l’utilisateur, indépendamment du contrôle de volume du système.\n2. Si c’est le cas, le critère est validé.", + "3.13": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels pré-enregistrés.\n2. Vérifier que les fonctionnalités suivantes au moins sont présentes :\n * une fonctionnalité de lecture ;\n * une fonctionnalité de mise en pause ou d’arrêt ;\n * si le média possède une piste sonore, une fonctionnalité qui permet d’activer et désactiver le son ;\n3. Si le média possède une audiodescription, vérifier qu’il existe une fonctionnalité qui permet d’activer et désactiver l’audiodescription.\n4. Si le média possède des sous-titres synchronisés :\n * s’il s’agit de sous-titres incrustés (_open captions_{lang=en}) en tant qu’image, vérifier qu’ils sont affichés au lancement de la lecture de la vidéo ;\n * s’il s’agit de sous-titres non incrustés (_closed captions_{lang=en}) , vérifier qu’il existe une fonctionnalité qui permet d’activer et désactiver ces sous-titres.\n5. Si c’est le cas, le critère est validé.", + "3.14": "###### iOS et Android\n1. Repérer dans l’écran les médias temporels pré-enregistrés ayant une alternative (sous-titres synchronisés ou audiodescription).\n2. Si des sous-titres sont présents, vérifier que la fonctionnalité qui permet d’activer et désactiver les sous-titres est présentée au même niveau que les autres fonctionnalités (comme la fonctionnalité de lecture par exemple), c’est-à-dire qu’il n’est pas nécessaire de réaliser plus d’actions pour déclencher les sous-titres que pour déclencher les autres fonctionnalités. Par exemple, si le bouton de lecture peut être activé depuis l’interface par un simple geste de tap (sans la nécessité d’activer un premier composant), la fonction de sous-titres doit être disponible de manière équivalente, avec un simple geste de tap. Si la fonction des sous-titres est disponible depuis un menu déroulant qui doit être activé (par un geste de tap par exemple), elle ne sera pas considérée comme étant au même niveau puisqu’il y aura une étape supplémentaire à réaliser.\n3. Si une audiodescription est présente, vérifier que la fonctionnalité qui permet d’activer et désactiver l’audiodescription est présentée au même niveau que les autres fonctionnalités.\n4. Si c’est le cas, le critère est validé.\nNote : Bien que les contrôles de volume et de lecture puissent être des composants physiques des terminaux (boutons de volume d’un smartphone par exemple), il n’est pas requis que ces terminaux possèdent des contrôles physiques dédiés à l’activation des sous-titres et de l’audiodescription ou que ces contrôles, s’ils existent, soient situés au même niveau.", + "3.15": "###### iOS et Android\n1. Repérer les fonctionnalités qui permettent de transmettre (envoyer un contenu vers un autre terminal par exemple), convertir ou enregistrer un média temporel.\n2. Exécuter chacune des fonctionnalités (transmettre, convertir et enregistrer).\n3. Pour chacun des médias résultant de la fonctionnalité, évaluer :\n * si les sous-titres sont toujours présents ;\n * si les sous-titres peuvent être affichés ;\n * si les sous-titres sont correctement synchronisés ;\n * si les caractéristiques essentielles des sous-titres sont conservées (par exemple, si dans le média original les sous-titres étaient colorés en fonction du locuteur, cette coloration doit se retrouver dans le média qui résulte de la fonctionnalité).\n4. Si c’est le cas, le critère est validé.", + "3.16": "###### iOS et Android\n1. Repérer les fonctionnalités qui permettent de transmettre (envoyer un contenu vers un autre terminal par exemple), convertir ou enregistrer un média temporel.\n2. Exécuter chacune des fonctionnalités (transmettre, convertir et enregistrer).\n3. Pour chacun des médias résultant de la fonctionnalité, évaluer :\n * si l’audiodescription est présente ;\n * si l’audiodescription peut être activée ;\n * si l’audiodescription est correctement synchronisée :\n * les sons et paroles de l’audiodescription ne chevauchent pas ceux de la bande-son originale pour provoquer des problèmes de perception et de compréhension ;\n * les informations véhiculées dans l’audiodescription sont données au moment où apparaissent les informations visuelles équivalentes.\n4. Si c’est le cas, le critère est validé.", + "3.17": "###### iOS\n1. Repérer dans l’écran les médias temporels pré-enregistrés qui possèdent des sous-titres.\n2. Modifier les paramètres de présentation des sous-titres depuis la plateforme :\n * Aller dans _Réglages > Accessibilité > Sous-titres codés et SM > Style_ ;\n * Sélectionner **Créer un style** pour définir un style de sous-titres personnalisé et reconnaissable.\n * Définir un ou plusieurs paramètres parmi : la taille des sous-titres, la couleur, le style de bordure des sous-titres, la couleur d’arrière-plan ou encore l’opacité de l’arrière-plan (vérifier que le paramètre **Ignorer les réglages personnalisés** en bas d’écran est désactivé).\n3. Vérifier que les paramètres définis au niveau de la plateforme sont appliqués aux sous-titres.\n4. Si ce n’est pas le cas, vérifier dans le média la présence d’une fonctionnalité permettant de modifier les paramètres de présentation des sous-titres.\n5. Vérifier que les paramètres définis ci-avant sont appliqués aux sous-titres.\n6. Si c’est le cas, le critère est validé.\n###### Android\n1. Repérer dans l’écran les médias temporels pré-enregistrés qui possèdent des sous-titres.\n2. Modifier les paramètres de présentation des sous-titres depuis la plateforme :\n * Aller dans _Paramètres > Accessibilité > Préférence pour les sous-titres > Style et taille des sous-titres_ ;\n * Définir un ou plusieurs paramètres parmi : la taille des sous-titres, la couleur, le style de bordure des sous-titres, la couleur d’arrière-plan ou encore l’opacité de l’arrière-plan.\n3. Vérifier que les paramètres au niveau de la plateforme sont appliqués aux sous-titres.\n4. Si ce n’est pas le cas, vérifier dans le média la présence d’une fonctionnalité permettant de modifier les paramètres de présentation des sous-titres.\n5. Vérifier que les paramètres définis ci-avant sont appliqués aux sous-titres.\n6. Si c’est le cas, le critère est validé.", + "3.18": "###### iOS\n1. Repérer dans l’écran les médias temporels synchronisés pré-enregistrés qui possèdent des sous-titres de traduction.\n2. Vérifier que les sous-titres sont dans un format standardisé (par exemple, le format .srt).\n3. Sinon, activer le **lecteur d’écran** et naviguer jusqu’au lecteur multimédia.\n4. [Activer le rotor](https://support.apple.com/fr-fr/guide/iphone/iph3e2e3a6d/ios).\n5. Faire défiler les paramètres du rotor et trouver l’option « Description multimédia ».\n6. Si c’est le cas, en balayant vers le haut, sélectionner l’option « Énonciation ».\n7. Activer les sous-titres de la vidéo et lancer la vidéo.\n8. Vérifier que les sous-titres affichés sont restitués par le lecteur d’écran.\n9. Si ce n’est pas le cas, vérifier la présence dans le lecteur multimédia d’une piste sonore supplémentaire qui serait la version vocalisée des sous-titres.\n10. Activer la piste audio supplémentaire et vérifier que les sous-titres vocalisés correspondent aux sous-titres affichés.\n11. Si c’est le cas, le critère est validé.\nNote : Si l’option « Description multimédia » n’est pas disponible dans le rotor, déplacer le focus du lecteur d’écran pour atteindre la vidéo et utiliser à nouveau le rotor. Si l’option n’apparaît toujours pas, les sous-titres ne pourront pas être restitués par le lecteur d’écran, le critère est non conforme.\n###### Android\n1. Repérer dans l’écran les médias temporels synchronisés pré-enregistrés qui possèdent des sous-titres de traduction.\n2. Vérifier que les sous-titres sont dans un format standardisé (par exemple, le format .srt).\n3. Sinon, vérifier la présence dans le lecteur multimédia d’une piste sonore supplémentaire qui serait la version vocalisée des sous-titres.\n4. Activer la piste audio supplémentaire et vérifier que les sous-titres vocalisés correspondent aux sous-titres affichés.\n5. Si c’est le cas, le critère est validé.", + "4.1": "###### iOS et Android\n1. Repérer dans l’écran les tableaux de données complexes.\n2. Activer le **lecteur d’écran**.\n3. Vérifier :\n * qu’un résumé est restitué lorsque le lecteur d’écran atteint le tableau ;\n * ou qu’un résumé est disponible avant le tableau, sous la forme d’un texte précédant le tableau.\n4. Si c’est le cas, le critère est validé.", + "4.2": "###### iOS et Android\n1. Vérifier que chaque résumé de tableau est pertinent, c’est-à-dire qu’il permet de comprendre la nature des données et la construction du tableau.\n2. Si c’est le cas, le critère est validé.", + "4.3": "###### iOS et Android\n1. Repérer dans l’écran les tableaux de données.\n2. Activer le **lecteur d’écran**.\n3. Vérifier qu’un titre est restitué lorsque le lecteur d’écran atteint le tableau.\n4. Si c’est le cas, le critère est validé.", + "4.4": "###### iOS et Android\n1. Vérifier que chaque titre de tableau de données est pertinent, c’est-à-dire qu’il permet d’identifier la nature des données présentées dans le tableau.\n2. Si c’est le cas, le critère est validé.", + "4.5": "###### iOS et Android\n1. Repérer dans l’écran les tableaux de données.\n2. Activer le **lecteur d’écran** et parcourir les cellules de données.\n3. Vérifier que les entêtes sont correctement restitués.\n4. Si c’est le cas, le critère est validé.", + "5.1": "Le test le plus complet est un test de restitution avec un lecteur d’écran. En effet tous les éléments à évaluer, s’ils sont présents, sont restitués par les lecteurs d’écran. D’autres tests avec d’autres technologies d’assistance peuvent être nécessaires pour s’assurer de la compatibilité. Plusieurs méthodes d’évaluation plus ou moins complètes vous sont décrites.\nPlusieurs méthodes sont disponibles avec iOS, mais seul le test avec VoiceOver est le test qui permet d’évaluer l’ensemble des éléments demandé par le critère.\nDe plus, il n’existe pas comme pour le web de documentation technique permettant de décrire le fonctionnement et les implémentations attendues (par exemple pour les fenêtres modales ou les potentiomètres). En l’absence d’une telle documentation, afin d’évaluer au plus juste ce type de composant il est conseillé tout de même de se rapprocher :\n* de ce que décrit [la spécification ARIA pour les modèles de conception](https://www.w3.org/TR/wai-aria-practices-1.1/) ;\n* des [documentations des éditeurs de plateformes dédiées aux développeurs](methodologie.md#ressources-des-editeurs).\n###### iOS avec VoiceOver\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les composants interactifs (par exemple, bouton, lien).\n3. Accéder à chaque composant interactif en utilisant les gestes du lecteur d’écran.\n4. Vérifier :\n * qu’un rôle est restitué (par exemple, bouton, zone de modification, lien) ;\n * que le rôle restitué est pertinent au regard de la fonctionnalité associée (par exemple, un composant qui déclenche l’ouverture d’une fenêtre modale et qui est restitué « zone de modification » a un rôle non pertinent, il devrait être identifié comme un bouton) ;\n * qu’un nom est restitué et que ce nom est pertinent, c’est-à-dire qu’il permet de comprendre la fonction de l’élément (pour les champs de formulaire, on se reportera à la thématique « Formulaires » pour les évaluer) ;\n * que si le composant possède un nom visible (un texte visible), l’intitulé est restitué ;\n * que si le composant a un état perceptible (activé, désactivé, sélectionné), cet état est restitué ;\n * que si le composant peut changer d’état (par exemple bouton à bascule, potentiomètre), réaliser les actions nécessaires pour tester les différents états et vérifier que chaque changement d’état est correctement restitué (le passage à l’état sélectionné, l’augmentation du potentiomètre) ;\n * que si le composant a une valeur perceptible (valeur d’un potentiomètre), cette valeur est restituée.\n5. Si c’est le cas, le critère est validé.\n###### iOS Avec **Accessibility Inspector**{lang=en}\n1. Connecter le terminal mobile iOS à l’ordinateur avec macOS.\n2. Activer le logiciel **Accessibility Inspector**{lang=en}.\n3. Choisir le terminal mobile comme source et rester sur l’onglet « Inspection » (boutons en haut à droite).\n4. Avec les flèches de _Accessibility Inspector_{lang=en}, accéder à chaque élément de l’interface.\n5. Vérifier :\n * qu’un rôle est disponible dans le paramètre « _Traits_{lang=en} » (par exemple, _Bouton, Tab, Text Field_{lang=en}) ;\n * que le rôle est pertinent au regard de la fonctionnalité associée (par exemple, un composant qui déclenche l’ouverture d’une fenêtre modale et qui est présenté comme _Static text_{lang=en} a un rôle non pertinent, il devrait être identifié comme un bouton) ;\n * qu’un nom est disponible dans le paramètre « Label » et que ce nom est pertinent, c’est-à-dire qu’il permet de comprendre la fonction de l’élément (pour les champs de formulaire, on se reportera à la thématique « Formulaires » pour les évaluer) ;\n * que si le composant possède un nom visible (un texte visible), l’intitulé défini dans le paramètre « Label » contient au moins cet intitulé.\n6. Si le composant a un état perceptible (activé, désactivé, sélectionné), vérifier que cet état :\n * est disponible dans le paramètre « _Traits_{lang=en} » ;\n * ou est indiqué dans le paramètre « Label ».\n7. Si le composant peut changer d’état (par exemple bouton à bascule, potentiomètre), réaliser les actions nécessaires pour tester les différents états et vérifier que chaque changement d’état (le passage à l’état sélectionné, l’augmentation du potentiomètre) :\n * est disponible dans le paramètre « _Traits_{lang=en} » ;\n * ou est indiqué dans le paramètre « Label ».\n8. Si c’est le cas, le critère est validé.\n###### iOS Avec le contrôle vocal\nL’application de contrôle vocal permet aux utilisateurs de naviguer à la voix.\nLe critère 5.1 dans sa globalité ne peut pas être évalué avec le contrôle vocal, mais une fonctionnalité du contrôle vocal (l’affichage des libellés) permet d’avoir une vue d’ensemble rapide de l’état des composants interactifs.\nLe contrôle vocal va permettre de déceler les composants utilisables au toucher qui ne sont pas des composants interactifs détectables par les technologies d’assistance, la présence d’un intitulé et sa pertinence, et la présence du nom visible dans le nom accessible.\n1. Activer le contrôle vocal : _Réglages > Accessibilité > Contrôle vocal_.\n2. Afficher les libellés des composants interactifs : depuis l’écran de paramètres du contrôle vocal, atteindre le bouton « Superposition » et l’activer, puis choisir « Noms des éléments ».\n3. Dorénavant, lorsque le contrôle vocal sera activé, des infobulles grises apparaitront au-dessus des éléments interactifs qui ont des labels. À noter que si l’écran possède un très grand nombre de contrôles interactifs, les labels s’afficheront par groupes successifs (un groupe de label disparait et un autre apparaît).\nCe qu’il faut savoir : seuls les éléments qui ont des rôles interactifs reconnus par l’API d’accessibilité posséderont un label. Ceci va permettre de repérer rapidement quels éléments utilisables au toucher ne sont pas reconnus par le contrôle vocal et ne sont donc pas des éléments interactifs (ce qui constitue une non conformité).\nProcédure :\n1. Repérer dans l’écran tous les contrôles interactifs (activables au toucher).\n2. Activer le contrôle vocal et vérifier que tous les contrôles interactifs identifiés possèdent un label associé (infobulle grise).\n3. Si c’est le cas, vérifier que :\n * le label associé est pertinent ;\n * et que le nom visible (s’il en possède un) est compris dans ce label.\n4. Si c’est le cas, les conditions sur la pertinence de l’intitulé et la présence du nom visible dans le nom accessible sont remplies.\n###### Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les composants interactifs (par exemple, bouton, lien).\n3. Accéder à chaque composant interactif avec les gestes du lecteur d’écran.\n4. Vérifier :\n * qu’un rôle est restitué (par exemple, bouton, zone de modification, lien) ;\n * que le rôle restitué est pertinent au regard de la fonctionnalité associée (par exemple, un composant qui déclenche l’ouverture d’une fenêtre modale et qui est restitué « zone de modification » a un rôle non pertinent, il devrait être identifié comme un bouton) ;\n * qu’un nom est restitué et que ce nom est pertinent, c’est-à-dire qu’il permet de comprendre la fonction de l’élément (pour les champs de formulaire, on se reportera à la thématique [« Formulaires »](#topic-9) pour les évaluer) ;\n * que si le composant possède un nom visible (un texte visible), l’intitulé est restitué ;\n * que si le composant a un état perceptible (activé, désactivé, sélectionné), cet état est restitué ;\n * que si le composant peut changer d’état (par exemple bouton à bascule, potentiomètre), réaliser les actions nécessaires pour tester les différents états et vérifier que chaque changement d’état est correctement restitué (le passage à l’état sélectionné, l’augmentation du potentiomètre) ;\n * que si le composant a une valeur perceptible (valeur d’un potentiomètre), cette valeur est restituée.\n5. Si c’est le cas, le critère est validé.", + "5.2": "Il s’agit ici de s’assurer que le composant peut être utilisé par le lecteur d’écran, le contrôle vocal, un clavier externe ou tout autre commutateur externe. On peut limiter les tests à quelques dispositifs de pointage puisque les caractéristiques nécessaires (sur les composants interactifs) sont semblables.\nIl est néanmoins nécessaire de tester au moins avec le lecteur d’écran et un clavier externe.\nPour le clavier externe, [certains paramétrages sont nécessaires pour que le périphérique soit pleinement fonctionnel](methodologie.md#clavier-externe).\n###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Parcourir l’ensemble des composants interactifs.\n3. Vérifier :\n * qu’il peut être atteint avec le lecteur d’écran ;\n * qu’il peut être activé avec le lecteur d’écran.\n4. Si c’est un composant modifiable (champ de saisie, case à cocher, potentiomètre), vérifier qu’il peut être modifié avec le lecteur d’écran.\n5. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n6. Parcourir l’ensemble des composants interactifs.\n7. Vérifier :\n * qu’il peut être atteint avec les touches du clavier ;\n * qu’il peut être activé avec la touche dédiée du clavier.\n8. Si c’est un composant modifiable (champ de saisie, case à cocher, potentiomètre), vérifier qu’il peut être modifié avec les touches du clavier.\n9. Si c’est le cas, le critère est validé.", + "5.3": "###### iOS et Android\n1. Repérer dans l’écran tous les événements qui initient un changement de contexte, par exemple :\n * une mise à jour dynamique de champs de formulaire ;\n * l’ouverture d’une nouvelle page sur la sélection d’une entrée de liste ;\n * la mise à jour d’une partie essentielle de l’écran sans action de l’utilisateur ;\n * le lancement automatique d’un lecteur vidéo sur la sélection d’une playlist ;\n * la manipulation du focus ayant pour résultat de modifier la position courante de l’utilisateur dans l’écran.\n2. Vérifier :\n * que l’utilisateur est averti par un texte du type de changement avant son déclenchement ;\n * ou que le changement de contexte est initié par un bouton ou un lien explicite.\n3. Si c’est le cas, le critère est validé.", + "5.4": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Réaliser les actions nécessaires à l’apparition d’un message de statut par exemple :\n * remplir correctement un formulaire et le valider pour faire apparaître un message indiquant l’envoi avec succès ;\n * soumettre un formulaire avec des champs obligatoires sans saisie pour faire apparaître un message indiquant la présence d’erreurs ;\n * afficher un écran qui nécessite un certain temps de chargement pour faire apparaître un message de progression ou un indicateur de progression de chargement.\n3. Vérifier que lorsque le statut apparaît, le lecteur d’écran restitue l’information et que cette information est compréhensible.\n4. Si c’est le cas, le critère est validé.", + "5.5": "###### iOS et Android\n1. Repérer dans l’écran les contrôles à bascule (boutons avec un ou plusieurs états, par exemple, cases à cocher, bouton radio, _switch_{lang=en}).\n2. Vérifier qu’il est possible de déterminer l’état du contrôle sur la base de sa présentation dans l’interface (par exemple, un changement de forme lorsque le contrôle passe d’un état à l’autre).\n3. Activer le **lecteur d’écran** et naviguer jusqu’au contrôle.\n4. Vérifier que l’état du contrôle est restitué par le lecteur d’écran sans avoir à interagir avec le contrôle.\n5. Si c’est le cas, le critère est validé.", + "6.1": "###### iOS\n1. Aller dans _Réglages > Accessibilité > VoiceOver > Parole_ et activer le paramètre « Détecter les langues ».\n2. Activer le **lecteur d’écran** et parcourir l’ensemble des éléments de l’écran.\n3. Vérifier que le texte est restitué dans la langue principale de l’écran.\n4. Si c’est le cas, le critère est validé.\n###### Android\n1. Aller dans _Paramètres > Accessibilité > TalkBack > Paramètres > Paramètres de la synthèse vocale_ (selon la version de la plateforme, le chemin d’accès peut être différent) :\n * Vérifier que le paramètre « Moteur préféré » est « Synthèse vocale Google » ;\n * Activer les paramètres de la synthèse (bouton à droite de « Moteur préféré ») et vérifier que le paramètre « Détection de la langue » est sur « Forcée ».\n2. Activer le **lecteur d’écran** et parcourir l’ensemble des éléments de l’écran.\n3. Vérifier que les textes sont restitués dans la langue principale de l’écran.\n4. Si c’est le cas, le critère est validé.", + "6.2": "Dans ce critère, on ne contrôle que les éléments qui ne doivent pas être interactifs (les éléments texte, les tableaux par exemple).\n###### iOS avec VoiceOver\n1. Activer le **lecteur d’écran** et parcourir l’ensemble des éléments de l’écran.\n2. Vérifier que le rôle restitué par le lecteur d’écran correspond à la nature de l’élément (par exemple, lorsque le lecteur d’écran atteint ce qui apparaît comme un paragraphe et qu’il restitue « Bouton », il s’agit d’une erreur, aucun rôle n’est restitué sur les paragraphes).\n3. Si c’est le cas, le critère est validé.\n###### iOS Avec _Accessibility Inspector_{lang=en}\n1. Connecter le terminal mobile iOS à l’ordinateur avec macOS.\n2. Activer le logiciel **Accessibility Inspector**{lang=en}.\n3. Choisir le terminal mobile comme source et rester sur l’onglet « Inspection » (boutons en haut à droite).\n4. Avec les flèches de _Accessibility Inspector_{lang=en}, accéder à chaque élément de l’interface.\n5. Vérifier que le rôle disponible dans le paramètre « _Traits_{lang=en} » est pertinent au regard de la nature de l’élément associé (par exemple, un simple texte qui aurait un rôle de bouton serait considéré non conforme, il devrait être identifié comme un texte statique).\n6. Si c’est le cas, le critère est validé.\n###### Android\n1. Activer le **lecteur d’écran** et parcourir l’ensemble des éléments de l’écran.\n2. Vérifier que le rôle restitué par le lecteur d’écran correspond à la nature de l’élément (par exemple, lorsque le lecteur d’écran atteint ce qui apparaît comme un paragraphe et qu’il restitue « Bouton », il s’agit d’une erreur, aucun rôle n’est restitué sur les paragraphes).\n3. Si c’est le cas, le critère est validé.", + "7.1": "###### iOS avec VoiceOver\n1. Activer le **lecteur d’écran**.\n2. Utiliser le rotor et sélectionner « En-têtes ».\n3. Parcourir les entêtes en glissant un doigt vers le haut ou vers le bas.\n4. Vérifier :\n * que chaque texte qui structure l’écran peut être atteint ;\n * que chaque entête atteint est pertinent, c’est-à-dire :\n * que le titre est utile à la structuration de l’écran ;\n * que le texte contenu dans le titre permet de comprendre le contenu de la section titrée.\n5. Si c’est le cas, le critère est validé.\n###### iOS avec _Accessibility Inspector_{lang=en}\n1. Connecter le terminal mobile iOS à l’ordinateur avec macOS.\n2. Activer le logiciel **Accessibility Inspector**{lang=en}.\n3. Choisir le terminal mobile comme source et rester sur l’onglet « Inspection » (boutons en haut à droite).\n4. Avec les flèches de _Accessibility Inspector_{lang=en}, accéder à chaque élément de l’interface.\n5. Vérifier :\n * que pour chaque texte qui structure l’écran, le paramètre « _Traits_{lang=en} » contient la valeur « En-têtes » ;\n * que chaque texte dont le paramètre « _Traits_{lang=en} » contient la valeur « En-têtes » est pertinent, c’est-à-dire :\n * que le titre ainsi déclaré est utile à la structuration de l’écran ;\n * que le texte contenu dans le titre permet de comprendre le contenu de la section ainsi titrée.\n6. Si c’est le cas, le critère est validé.\n###### Android\n1. Activer le **lecteur d’écran**.\n2. Utiliser le menu des commandes de lecture et sélectionner « Titres ».\n3. Parcourir les titres en glissant un doigt vers le haut ou vers le bas.\n4. Vérifier :\n * que chaque texte qui structure l’écran est atteint de cette manière et est restitué comme titre ;\n * que chaque titre atteint est pertinent, c’est-à-dire :\n * que le titre est utile à la structuration de l’écran ;\n * que le texte contenu dans le titre permet de comprendre le contenu de la section ainsi titrée.\n5. Si c’est le cas, le critère est validé.", + "7.2": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les éléments rassemblés sous forme de liste.\n3. Vérifier que le lecteur d’écran restitue « Liste » lorsqu’il atteint le groupe d’éléments.\n4. Si c’est le cas, le critère est validé.", + "8.1": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Parcourir l’ensemble des éléments en utilisant les gestes du lecteur d’écran.\n3. Vérifier que l’ensemble des informations visibles à l’écran sont restituées par le lecteur d’écran.\n4. Si c’est le cas, le critère est validé.\nNote : Dans les applications, il est possible de réaliser des regroupements d’éléments. Par exemple, dans un catalogue de produits, chaque item possède un titre, un prix et une description. Au lieu de prendre le focus avec le lecteur d’écran sur chacun des 3 items, l’application peut être conçue pour que le lecteur d’écran accède seulement à l’item dans sa globalité, ainsi le lecteur d’écran restitue l’ensemble des informations sans que l’utilisateur ait à réaliser plusieurs gestes pour atteindre les 3 items. Ceci est conforme (voire encouragé puisque cela limite les actions à réaliser pour parcourir le contenu), il faut s’assurer que tous les textes contenus sont bien restitués par le lecteur d’écran.", + "8.2": "###### iOS\n1. Accéder aux paramètres de réglages des tailles de caractères de la plateforme : _Réglages > Accessibilité > Affichage et taille du texte > Police plus grande_.\n2. Activer le bouton « Taille de police plus grande » et augmenter la valeur de la taille de la police (potentiomètre en bas de l’écran) jusqu’à atteindre un agrandissement de 200% (le maximum de la jauge permet d’atteindre un zoom supérieur à 200%, le test peut donc se limiter à augmenter le zoom en utilisant l’avant-dernière position du potentiomètre).\n3. Si nécessaire, redémarrer l’application pour s’assurer que le paramètre est pris en compte par l’application.\n4. Vérifier :\n * que tous les textes de l’interface ont été agrandis ;\n * que tous les textes de l’interface restent lisibles et les fonctionnalités utilisables ;\n * que des contenus ne disparaissent pas ;\n * si des textes ont disparu, qu’il existe une méthode dans l’écran pour afficher les textes à la demande (par exemple avec l’appui prolongé sur une icône).\n5. Si c’est le cas, le critère est validé.\n###### Android\n1. Accéder aux paramètres de réglages des tailles de caractères de la plateforme : _Paramètres > Accessibilité > Taille de la police_ (selon la version de la plateforme, le chemin d’accès peut être différent) ;\n2. Augmenter la valeur de la taille de la police (potentiomètre en bas de l’écran) jusqu’à atteindre un agrandissement de 200% (sur certains terminaux, la jauge du potentiomètre peut être différente et offrir des valeurs qui permettent d’atteindre un zoom supérieur à 200%, il faudra alors vérifier que le test ne se fait que pour une valeur de 200%).\n3. Si nécessaire, redémarrer l’application pour s’assurer que le paramètre est pris en compte par l’application.\n4. Vérifier :\n * que tous les textes de l’interface ont été agrandis ;\n * que tous les textes de l’interface restent lisibles et les fonctionnalités utilisables ;\n * que des contenus ne disparaissent pas ;\n * si des textes ont disparu, qu’il existe une méthode dans l’écran pour afficher les textes à la demande (par exemple avec l’appui prolongé sur une icône).\n5. Si c’est le cas, le critère est validé.", + "8.3": "###### iOS\n1. Activer l’option **Différencier sans couleur** (_Réglages > Accessibilité > Affichage et taille du texte > Différencier sans couleur_).\n2. Activer l’option **Augmenter le contraste** (_Réglages > Accessibilité > Affichage et taille du texte > Augmenter le contraste_) ou s’il est présent dans l’application, activer le mécanisme de remplacement permettant d’afficher l’application avec un rapport de contraste suffisant.\n3. Repérer dans l’écran les composants d’interface (liens, boutons) avec du texte intégrés dans un environnement de texte (dans une phrase par exemple), signifiés uniquement par la couleur (sans autre mise en forme qui les distingue du reste du texte dans lequel ils sont intégrés).\n4. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs du texte environnant et du composant interactif sur le terminal mobile, soit :\n * en [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * en réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n5. Vérifier que le contraste entre la couleur de police du composant et la couleur de police du texte environnant est de 3:1, au moins.\n6. Si c’est le cas, le critère est validé.\n###### Android\n1. S’il existe dans l’application, activer le mécanisme de remplacement permettant d’afficher l’application avec un rapport de contraste suffisant.\n2. Repérer dans l’écran les composants d’interface (liens, boutons) avec du texte intégrés dans un environnement de texte (dans une phrase par exemple) signifiés uniquement par la couleur (sans autre mise en forme qui les distingue du reste du texte dans lequel ils sont intégrés).\n3. Activer le logiciel **Colour Contrast Analyser**{lang=en} sur l’ordinateur et capturer les couleurs du texte environnant et du composant interactif sur le terminal mobile, soit :\n * en [diffusant l’écran du terminal mobile sur l’ordinateur](methodologie.md#diffuser-l-ecran-du-terminal-mobile) ;\n * en réalisant des [captures d’écran](methodologie.md#realiser-des-captures-d-ecran) des éléments à évaluer (et en les important sur l’ordinateur).\n4. Vérifier que le contraste entre la couleur de police du composant et la couleur de police du texte environnant est de 3:1, au moins.\n5. Si c’est le cas, le critère est validé.", + "8.4": "###### iOS et Android\n1. Repérer dans l’écran les composants d’interface (liens, boutons) avec du texte intégrés dans un environnement de texte (dans une phrase par exemple), signifiés uniquement par la couleur (sans autre mise en forme qui les distingue du reste du texte dans lequel ils sont intégrés).\n2. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n3. Vérifier que la visibilité du focus telle que définie au niveau du système est préservée sur ces éléments.\n4. Connecter une **souris**.\n5. Vérifier que le survol des composants interactifs en environnement de texte est signifié par un autre moyen que la couleur (mise en gras, soulignement par exemple).\n6. Si c’est le cas, le critère est validé.", + "8.5": "###### iOS\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Activer tous les [paramètres disponibles de style de focus](methodologie.md#clavier-externe).\n3. Naviguer dans l’application et évaluer si la visibilité du focus telle que définie au niveau du système est préservée sur l’ensemble des éléments de l’application.\n4. Si c’est le cas, le critère est validé.\n###### Android\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Naviguer dans l’application et évaluer si la visibilité du focus telle que définie au niveau du système est préservée sur l’ensemble des éléments de l’application.\n3. Si c’est le cas, le critère est validé.", + "8.6": "###### iOS et Android\n1. Repérer dans l’écran les informations données par la forme, la taille ou la position dans un texte, un élément graphique, un média temporel ou non temporel. Ce peut être une icône positionnée à gauche d’un composant pour signifier qu’il est actif, ou une consigne dans l’écran qui demande d’activer un composant positionné à un certain endroit dans l’écran.\n2. Vérifier qu’il existe un autre moyen de récupérer cette information dans l’écran (par exemple, un texte lisible par tous qui donne la même information).\n3. Si ce n’est pas le cas, activer le **lecteur d’écran** et vérifier qu’une information alternative à la forme, la taille ou la position et restituée par le lecteur d’écran.\n4. Si c’est le cas, le critère est validé.", + "8.7": "###### iOS\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Parcourir l’écran et repérer les contenus additionnels qui apparaissent à la prise de focus sur un composant d’interface.\n3. Vérifier que le contenu additionnel peut être masqué par une touche du clavier (la touche ESC par exemple).\n4. Vérifier que le contenu additionnel reste visible :\n * jusqu’à ce que le focus soit déplacé en dehors du composant d’interface et du contenu additionnel ;\n * ou tant que le focus est positionné sur le composant d’interface ou dans le contenu additionnel ;\n * ou tant que le contenu additionnel est valide.\n5. Connecter une **souris**.\n6. Balayer l’écran avec la souris et repérer les contenus additionnels qui apparaissent au survol d’un composant d’interface.\n7. Vérifier que le contenu additionnel peut être survolé par la souris.\n8. Vérifier que le contenu additionnel reste visible :\n * jusqu’à ce que le pointeur de la souris soit déplacé en dehors du composant d’interface et du contenu additionnel ;\n * ou tant que le pointeur de la souris survole le composant d’interface ou le contenu additionnel ;\n * ou tant que le contenu additionnel est valide.\n9. Si c’est le cas, le critère est validé.\n###### Android\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Parcourir l’écran et repérer les contenus additionnels qui apparaissent à la prise de focus sur un composant d’interface.\n3. Vérifier que le contenu additionnel peut être masqué par une touche du clavier (généralement la touche ou la combinaison de touches qui aura été associée dans _Switch Access_{lang=en} pour le paramètre _Retour_)\n4. Vérifier que le contenu additionnel reste visible :\n * jusqu’à ce que le focus soit déplacé en dehors du composant d’interface et du contenu additionnel ;\n * ou tant que le focus est positionné sur le composant d’interface ou dans le contenu additionnel ;\n * ou tant que le contenu additionnel est valide.\n5. Connecter une **souris**.\n6. Balayer l’écran avec la souris et repérer les contenus additionnels qui apparaissent au survol d’un composant d’interface.\n7. Vérifier que le contenu additionnel peut être survolé par la souris.\n8. Vérifier que le contenu additionnel reste visible :\n * jusqu’à ce que le pointeur de la souris soit déplacé en dehors du composant d’interface et du contenu additionnel ;\n * ou tant que le pointeur de la souris survole le composant d’interface ou le contenu additionnel ;\n * ou tant que le contenu additionnel est valide.\n9. Si c’est le cas, le critère est validé.", + "9.1": "###### iOS et Android\n1. Repérer dans l’écran les champs de formulaire (champ de saisie, bouton radio, case à cocher).\n2. Vérifier la présence d’une étiquette visible adjacente.\n3. Activer le champ de formulaire (par exemple, saisir du texte).\n4. Vérifier que l’étiquette reste visible.\n5. Si c’est le cas, le critère est validé.", + "9.2": "###### iOS avec VoiceOver\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux éléments de formulaire en utilisant les gestes du lecteur d’écran.\n3. Vérifier qu’une étiquette est restituée lorsque le focus du lecteur d’écran est sur le champ de formulaire.\n4. Si c’est le cas, le critère est validé.\n###### iOS avec le contrôle vocal\n1. Activer le **contrôle vocal**.\n2. Repérer dans l’écran tous les champs de formulaire.\n3. Vérifier qu’une étiquette est détectée par le contrôle vocal (apparition d’une infobulle grise au-dessus du champ).\n4. Si c’est le cas, le critère est validé.\n###### Android\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux éléments de formulaire en utilisant les gestes du lecteur d’écran.\n3. Vérifier qu’une étiquette est restituée lorsque le focus du lecteur d’écran est sur le champ de formulaire.\n4. Si c’est le cas, le critère est validé.", + "9.3": "###### iOS avec VoiceOver\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux éléments de formulaire en utilisant les gestes du lecteur d’écran.\n3. Vérifier :\n * que l’étiquette restituée par le lecteur d’écran est pertinente (elle permet de comprendre la nature de la saisie attendue) ;\n * que l’étiquette visible est contenue dans l’étiquette restituée par le lecteur d’écran.\n4. Si c’est le cas, le critère est validé.\n###### Avec le contrôle vocal\n1. Activer le **contrôle vocal**.\n2. Repérer dans l’écran tous les champs de formulaire.\n3. Vérifier :\n * que l’étiquette détectée par le contrôle vocal (infobulle grise) est pertinente (elle permet de comprendre la nature de la saisie attendue) ;\n * que l’étiquette visible est contenue dans l’étiquette détectée par le contrôle vocal (infobulle grise).\n4. Si c’est le cas, le critère est validé.\n###### Android\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux éléments de formulaire en utilisant les gestes du lecteur d’écran.\n3. Vérifier :\n * que l’étiquette restituée par le lecteur d’écran est pertinente (elle permet de comprendre la nature de la saisie attendue) ;\n * que l’étiquette visible est contenue dans l’étiquette restituée par le lecteur d’écran.\n4. Si c’est le cas, le critère est validé.", + "9.4": "###### iOS et Android\n1. Repérer dans l’écran tous les champs de formulaire.\n2. Pour chaque champ de formulaire, vérifier que l’étiquette visible est accolée au champ auquel elle est liée.\n3. Si c’est le cas, le critère est validé.", + "9.5": "2 méthodes d’évaluation sur iOS sont proposées. Les deux méthodes aboutissent aux mêmes résultats. Une seule de ces méthodes est nécessaire pour évaluer le critère sur iOS.\n###### iOS avec VoiceOver\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux boutons de formulaire en utilisant les gestes du lecteur d’écran.\n3. Vérifier :\n * que l’intitulé restitué par le lecteur d’écran est pertinent (il permet de comprendre l’action du bouton) ;\n * que l’intitulé visible est contenu dans l’intitulé restitué par le lecteur d’écran.\n4. Si c’est le cas, le critère est validé.\n###### iOS avec le contrôle vocal\n1. Activer le **contrôle vocal**.\n2. Repérer dans l’écran les boutons de formulaire.\n3. Vérifier :\n * que l’intitulé détecté par le contrôle vocal (infobulle grise) est pertinent (il permet de comprendre l’action du bouton) ;\n * que l’intitulé visible est contenu dans l’intitulé détecté par le contrôle vocal (infobulle grise) ;\n4. Si c’est le cas, le critère est validé.\n###### Android\n1. Activer le **lecteur d’écran**.\n2. Naviguer jusqu’aux boutons de formulaire en utilisant les gestes du lecteur d’écran.\n3. Vérifier :\n * que l’intitulé restitué par le lecteur d’écran est pertinent (il permet de comprendre l’action du bouton) ;\n * que l’intitulé visible est contenu dans l’intitulé restitué par le lecteur d’écran.\n4. Si c’est le cas, le critère est validé.", + "9.6": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Repérer dans l’écran les champs de même nature qui nécessitent d’être regroupés (par exemple, les champs de saisies des différentes suites de chiffres d’un code de carte bleue).\n3. Vérifier :\n * qu’une information est restituée à la prise de focus sur le premier champ, qui permette d’identifier le groupe auquel appartient le champ (bien que cela soit important pour les utilisateurs, il n’est pas requis que l’information du regroupement soit restituée sur chacun des champs de formulaire, mais seulement au moins sur le premier champ du regroupement) ;\n * que l’information restituée est pertinente, c’est-à-dire qu’elle permet de comprendre quelle est la nature du regroupement.\n4. Si c’est le cas, le critère est validé.", + "9.7": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Valider le formulaire sans saisir de données afin d’identifier les champs obligatoires.\n3. Pour chaque champ obligatoire, Vérifier :\n * que les informations restituées par le lecteur d’écran à la prise de focus sur le champ contiennent la mention du caractère obligatoire ;\n * et qu’un texte visible à proximité du champ indique le caractère obligatoire du champ de formulaire.\n4. Si c’est le cas, le critère est validé.", + "9.8": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Remplir les champs de formulaire avec des valeurs susceptibles de provoquer des erreurs de saisies (entrer une adresse _e-mail_{lang=en} mal formée par exemple).\n3. Valider le formulaire.\n4. Pour chaque champ de formulaire obligatoire qui possède un contrôle du format (qui sera présenté avec une erreur après la validation), vérifier :\n * que le type de données et/ou le format attendu sont restitués par le lecteur d’écran à la prise de focus sur le champ ;\n * qu’un texte visible à proximité du champ indique le type de données et/ou le format attendu.\n5. Si c’est le cas, le critère est validé.", + "9.9": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Remplir les champs de formulaire avec des valeurs susceptibles de provoquer des erreurs de saisie (laisser un champ vide, entrer une adresse e-mail mal formée par exemple).\n3. Valider le formulaire.\n4. Pour chaque champ en erreur, vérifier :\n * que le message d’erreur est visible à proximité du champ ;\n * que le message d’erreur est restitué par le lecteur d’écran à la prise de focus sur le champ.\n5. Si c’est le cas, le critère est validé.", + "9.10": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Remplir les champs de formulaire avec des valeurs susceptibles de provoquer des erreurs de saisies (entrer une adresse e-mail mal formée par exemple).\n3. Valider le formulaire.\n4. Pour chaque champ en erreur qui possède un contrôle du format, vérifier la présence d’un exemple réel de saisie dans le message d’erreur (par exemple, pour une adresse _e-mail_{lang=en}, vérifier la mention d’une adresse réelle sur le modèle « jean.schmitt@accessibilite.lu »).\n5. Si c’est le cas, le critère est validé.", + "9.11": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Remplir le formulaire.\n3. Pour chaque donnée à caractère financier (par exemple, une indication de revenu), juridique (par exemple, une référence d’acte administratif), personnelle (par exemple, un numéro de téléphone), pour chaque formulaire qui transmet des réponses à un test ou à un examen, vérifier que l’utilisateur peut :\n * modifier ou annuler les données et les actions effectuées sur ces données en cours de saisie (par exemple la saisie du champ et la fonctionnalité d’annulation d’édition du navigateur ne sont pas désactivées) ;\n * ou confirmer, de manière explicite, l’envoi de ces données via un mécanisme dédié (par exemple, un champ de formulaire ou une étape supplémentaire).\n4. Pour chaque formulaire qui modifie ou supprime des données (par exemple la suppression d’une adresse postale), vérifier que l’utilisateur peut :\n * récupérer les données supprimées en cours de saisie ;\n * ou confirmer, de manière explicite, la suppression de ces données via un mécanisme dédié (par exemple, un champ de formulaire ou une étape supplémentaire).\n5. Si c’est le cas, le critère est validé.", + "9.12": "###### iOS\n1. Accéder à chacun des champs de formulaire (taper sur le champ de saisie par exemple pour activer l’apparition des contrôles de saisie).\n2. Pour chaque champ qui attend une donnée personnelle sur l’utilisateur, vérifier que les [contrôles natifs adéquats de la plateforme](glossaire.md#controles-natifs-de-la-plateforme) sont présentés à l’utilisateur. Par exemple :\n * pour un champ demandant la saisie de l’adresse _e-mail_{lang=en} de l’utilisateur, le clavier présenté possède le caractère @ sans que l’utilisateur ait de manipulation de clavier à réaliser (comme afficher le clavier secondaire) ;\n * pour un champ demandant la saisie d’un numéro de téléphone, le pavé numérique est présenté directement à l’utilisateur ;\n * etc.\n3. Vérifier que le formulaire est compatible avec un mécanisme de remplissage automatique. Par exemple, iOS permet un remplissage automatique des champs sur la base des dernières valeurs saisies en fonction de leur nature (adresse postale, ville, nom, prénom, adresse _e-mail_{lang=en}). Vérifier que des valeurs pertinentes sont suggérées sur ces champs.\n4. Si c’est le cas, le critère est validé.\n###### Android\n1. Accéder à chacun des champs de formulaire (taper sur le champ de saisie par exemple pour activer l’apparition des contrôles de saisie).\n2. Pour chaque champ qui attend une donnée personnelle sur l’utilisateur, vérifier que les [contrôles natifs adéquats de la plateforme](glossaire.md#controles-natifs-de-la-plateforme) sont présentés à l’utilisateur. Par exemple :\n * pour un champ demandant la saisie de l’adresse _e-mail_{lang=en} de l’utilisateur, le clavier présenté possède le caractère @ sans que l’utilisateur ait de manipulation de clavier à réaliser (comme afficher le clavier secondaire) ;\n * pour un champ demandant la saisie d’un numéro de téléphone, le pavé numérique est présenté directement à l’utilisateur ;\n * etc.\n3. Vérifier que le formulaire est compatible avec un mécanisme de remplissage automatique. Par exemple, Google fournit un système de remplissage automatique sur Android. Aller dans _Paramètres > Système > Langues et saisie > Paramètres avancés > Service de saisie automatique_ (selon la version de la plateforme, le chemin d’accès peut être différent) pour activer et paramétrer les données.\n4. Sur le formulaire de l’application, vérifier que le système vous propose une option pour remplir automatiquement avec les données renseignées.\n5. Si c’est le cas, le critère est validé.", + "10.1": "###### iOS et Android\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Naviguer sur l’ensemble des éléments de l’écran et vérifier que l’ordre de tabulation reste cohérent. Il n’est pas obligatoire que la tabulation suive l’ordre de lecture naturel (de gauche à droite et de haut en bas par exemple) tant que les éléments sont accessibles dans un ordre cohérent.\n3. Repérer dans l’écran les composants (bouton par exemple) qui mettent à jour un contenu (affichage d’élément masqué, mise à jour dynamique de contenus par exemple) :\n 1. activer le composant ;\n 2. après l’affichage du contenu mis à jour, vérifier que la tabulation reste cohérente.\n4. Si c’est le cas, le critère est validé.", + "10.2": "###### iOS et Android\n1. Activer le **lecteur d’écran**.\n2. Naviguer sur l’ensemble des éléments de l’écran avec les gestes du lecteur d’écran et vérifier que l’ordre d’accès aux éléments de l’écran (composants interactifs et textes) reste cohérent. Il n’est pas obligatoire que l’ordre suive l’ordre de lecture naturel (de gauche à droite et de haut en bas par exemple) tant que les éléments sont accessibles dans un ordre cohérent qui ne pose pas de problèmes de compréhension.\n3. Repérer dans l’écran les composants (bouton par exemple) qui mettent à jour un contenu (affichage d’élément masqué, mise à jour dynamique de contenus par exemple) :\n 1. activer le composant ;\n 2. après l’affichage du contenu mis à jour, vérifier que le parcours du lecteur d’écran reste cohérent.\n4. Si c’est le cas, le critère est validé.\n**Exemple de contenu dont l’implémentation pose un problème de compréhension :** une heure d’arrivée et une heure de départ sont affichées à l’écran sous forme de deux blocs d’informations visuelles (heure d’arrivée 17h00 ; heure de départ 18h00). Le lecteur d’écran atteint séquentiellement « heure d’arrivée » puis « heure de départ » puis « 17h00 » et enfin « 18h00 ». L’ordre de lecture ne correspond pas à l’ordre visuel, et l’ordre de lecture est problématique puisqu’il ne permet pas de lier les informations entre elles.", + "10.3": "###### iOS\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Naviguer sur l’ensemble des éléments de l’écran en utilisant les touches du clavier dédiées (par défaut dans iOS, ce sont les touches Tab et les flèches de direction qui sont utilisées pour naviguer dans les contenus).\n3. Vérifier que :\n * à partir de la position courante, l’élément focusable suivant ou précédent est atteignable avec les touches de navigation du clavier ;\n * l’élément possédant actuellement le focus propose une méthode utilisable au clavier (par exemple, un raccourci clavier) permettant d’atteindre l’élément suivant ou précédent.\n4. Si c’est le cas, le critère est validé.\n**Note :** Certains éléments complexes, souvent gérés par la plateforme, peuvent faire appel à des navigations optimisées qui utilisent généralement les flèches de direction pour passer d’une partie du composant à l’autre. Le test sur le piège au clavier se limite alors à vérifier que le composant peut être atteint et qu’il est possible de passer au composant suivant ou revenir au composant précédent. On ne vérifie pas l’utilisation même du composant dans ce critère.\n###### Android\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Naviguer sur l’ensemble des éléments de l’écran en utilisant les touches du clavier (les touches ou la combinaison de touches qui aura été associée dans _Switch Access_{lang=en} pour les paramètres « Passer à l’option suivante » et « Passer à l’option précédente »).\n3. Vérifier que :\n * à partir de la position courante, l’élément focusable suivant ou précédent est atteignable avec la touche de navigation du clavier ;\n * l’élément possédant actuellement le focus propose une méthode utilisable au clavier (par exemple, un raccourci clavier) permettant d’atteindre l’élément suivant ou précédent.\n4. Si c’est le cas, le critère est validé.\n**Note :** Certains éléments complexes, souvent gérés par la plateforme, peuvent faire appel à des navigations optimisées qui utilisent généralement les flèches de direction pour passer d’une partie du composant à l’autre. Le test sur le piège au clavier se limite alors à vérifier que le composant peut être atteint et qu’il est possible de passer au composant suivant ou revenir au composant précédent. On ne vérifie pas l’utilisation même du composant dans ce critère.", + "10.4": "###### iOS et Android\n1. Connecter un **clavier externe** (et [paramétrer la navigation au clavier](methodologie.md#clavier-externe)).\n2. Depuis l’application, appuyer successivement sur chacune des touches de caractère imprimable (les lettres minuscules a-z, les majuscules A-Z, les chiffres 0-9, tous les symboles comme $,\\*,%,! etc. à partir du moment où ils peuvent être inscrits à l’écran).\n3. Si le raccourci clavier est associé à un seul composant isolé de l’écran, vérifier qu’il ne peut être activé que si le focus clavier est à l’intérieur de ce composant.\n4. Sinon, si une action est déclenchée, vérifier la présence dans l’application d’un élément de configuration permettant :\n * de désactiver ces raccourcis clavier à touche unique ;\n * de configurer ces raccourcis clavier en leur ajoutant une touche de modification Ctrl, Alt, Maj, etc.\n5. Si c’est le cas, le critère est validé.", + "11.1": "###### iOS et Android\n1. Repérer les procédés limitant le temps d’une session (par exemple après une authentification).\n2. Vérifier :\n * la présence d’un mécanisme permettant à l’utilisateur de supprimer la limite de temps (par exemple, un bouton à bascule permettant à l’utilisateur d’activer ou désactiver la limite de temps de la session) ;\n * ou la présence d’un mécanisme permettant à l’utilisateur d’augmenter la limite de temps (par exemple, une liste déroulante avec des valeurs de temps de connexion disponibles) ;\n * ou la présence d’un mécanisme qui avertit l’utilisateur de l’imminence de la limite de temps et laisse 20 secondes, au moins, à l’utilisateur pour augmenter la limite de temps (par exemple, l’ouverture d’une modale avec un bouton permettant d’augmenter la limite de temps) ;\n * ou que la limite de temps est de vingt heures, au moins.\n3. Si c’est le cas, le critère est validé.", + "11.2": "###### iOS et Android\n1. Repérer les limites de temps de session (par exemple, la déconnexion d’un compte client).\n2. Vérifier :\n * la présence d’un mécanisme permettant à l’utilisateur de supprimer la limite de temps (par exemple, un bouton avec un intitulé explicite) ;\n * ou la présence d’un mécanisme permettant à l’utilisateur d’augmenter la limite de temps (par exemple, un paramètre disponible dans l’application pour gérer les temps de sessions) ;\n * ou que la durée de la session est de vingt heures, au moins.\n3. Si c’est le cas, le critère est validé.", + "11.3": "###### iOS et Android\n1. Repérer dans l’écran les composants (un lien, un bouton de formulaire ou un formulaire de téléchargement par exemple) permettant de télécharger un fichier au format bureautique (.doc, .docx, .pdf par exemple).\n2. Pour chaque fichier proposé au téléchargement, dans un format bureautique, vérifier la présence d’une version alternative présentée comme accessible.\n3. Si l’alternative est proposée dans un format bureautique (pdf, odt, doc, docx, EPUB/DAISY) :\n * télécharger le fichier de l’alternative proposée ;\n * si ce fichier est au format PDF, vérifier qu’il est conforme au [référentiel d’évaluation de l’accessibilité des documents au format PDF (RAPDF 1)](../rapdf1/index.html).\n * si ce fichier est dans un autre format, vérifier qu’il est conforme aux critères de la [section 10 Non-web documents](https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf#page=52) de la norme européenne EN 301 549 v3.2.1.\n4. Si l’alternative est proposée dans l’application, vérifier que le contenu est conforme au présent référentiel.\n5. Sinon, pour les documents au format bureautique (pdf, odt, doc, docx, EPUB/DAISY) :\n * télécharger le fichier ;\n * si ce fichier est au format PDF, vérifier qu’il est conforme au [référentiel d’évaluation de l’accessibilité des documents au format PDF (RAPDF 1)](../rapdf1/index.html).\n * si ce fichier est dans un autre format, vérifier qu’il est conforme aux critères de la [section 10 Non-web documents](https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf#page=52) de la norme européenne EN 301 549 v3.2.1.\n6. Si c’est le cas, le critère est validé.", + "11.4": "###### iOS et Android\n1. Pour chaque fichier proposé au téléchargement dans un format bureautique qui possède une version alternative présentée comme accessible, vérifier que les deux documents (le document d’origine et la version accessible dans un format bureautique ou dans l’application) offrent la même information.\n2. Si c’est le cas, le critère est validé.", + "11.5": "###### iOS et Android\n1. Repérer dans l’écran les contenus cryptiques (art ascii, émoticône, syntaxe cryptique).\n2. Vérifier qu’une définition est disponible dans le contexte adjacent (immédiatement avant ou après le contenu cryptique, dans le texte adjacent ou via l’activation d’un composant d’interface).\n3. Sinon, activer le **lecteur d’écran**.\n4. Naviguer jusqu’au contenu cryptique et vérifier qu’une alternative est restituée.\n5. Si c’est le cas, le critère est validé.", + "11.6": "###### iOS et Android\n1. Pour chaque contenu cryptique qui possède une alternative, vérifier que l’alternative donnée est pertinente (elle permet de comprendre le contenu ou la fonction).\n2. Si c’est le cas, le critère est validé.", + "11.7": "###### iOS et Android\n1. Repérer dans l’écran les contenus clignotants ou qui provoquent des effets de flash : élément graphique animé, vidéo ou animation, effet de mise en forme.\n2. Vérifier :\n * que la fréquence de l’effet est inférieure à 3 flashs par seconde ;\n * ou que la surface cumulée est inférieure à 21824 pixels.\n3. Si c’est le cas, le critère est validé.\nNote : L’outil [PEAT](https://trace.umd.edu/peat/) permet d’analyser les vidéos au format .avi.", + "11.8": "###### iOS et Android\n1. Repérer dans l’écran les contenus en mouvement ou clignotants (un élément graphique, un effet de mise en forme, un carrousel par exemple) déclenchés automatiquement au chargement de l’écran ou lors de l’affichage d’un contenu (cf. note).\n2. Vérifier :\n * que la durée totale du mouvement ou du clignotement est inférieure à 5 secondes ;\n * ou la présence d’un mécanisme (un bouton par exemple) qui permet d’arrêter et de relancer le mouvement ou le clignotement ;\n * ou la présence d’un mécanisme (un bouton par exemple) qui permet de cacher et d’afficher à nouveau le contenu en mouvement ou clignotant ;\n * ou la présence d’un mécanisme (un bouton par exemple) qui permet d’afficher le contenu sans mouvement ou clignotement.\n3. Si c’est le cas, le critère est validé.\n**Note :**\n* l’arrêt ou la mise en pause d’un contenu en mouvement ou clignotant via la prise de focus (l’effet est suspendu uniquement pendant la prise de focus mais reprend une fois la prise de focus perdue) ou au toucher sur le contenu en mouvement (l’effet est suspendu uniquement pendant qu’une pression est effectuée sur le contenu, mais reprend une fois la pression relâchée) ne sont pas considérés comme des procédés conformes.\n* dans certains cas, le mouvement ne peut pas être arrêté, par exemple, une barre de progression, dans ce cas, le critère est non applicable.", + "11.9": "###### iOS\n1. Ouvrir le **Centre de contrôle**.\n2. Vérifier que l’orientation de l’écran n’est pas verrouillée dans les paramètres de la plateforme ([voir la documentation officielle](https://support.apple.com/fr-fr/guide/iphone/iph3badf94ec/ios)).\n3. Afficher l’application et basculer le terminal alternativement en mode paysage et portrait.\n4. Vérifier :\n * que l’application est utilisable dans les deux orientations, c’est-à-dire que les éléments de l’application sont repositionnés pour être lisibles ;\n * que les contenus disponibles dans une orientation sont toujours disponibles dans l’autre orientation (directement ou par l’activation d’un composant supplémentaire par exemple).\n5. Si c’est le cas, le critère est validé.\n###### Android\n1. Ouvrir le panneau de **configuration rapide**.\n2. Vérifier que le paramètre « Rotation automatique » est activé ([voir la documentation officielle](https://support.google.com/android/answer/9083864?hl=fr)).\n3. Afficher l’application et basculer le terminal alternativement en mode paysage et portrait.\n4. Vérifier :\n * que l’application est utilisable dans les deux orientations, c’est-à-dire que les éléments de l’application sont repositionnés pour être lisibles ;\n * que les contenus disponibles dans une orientation sont toujours disponibles dans l’autre orientation (directement ou par l’activation d’un composant supplémentaire par exemple).\n5. Si c’est le cas, le critère est validé.", + "11.10": "###### iOS et Android\n1. Repérer dans l’écran les fonctionnalités qui nécessitent de réaliser des gestes complexes (repérer la présence de consignes dans l’interface ou dans une documentation associée à l’application), par exemple :\n * l’utilisation simultanée de deux doigts ou plus ;\n * la réalisation d’un tracé de trajectoire (comme le geste _swipe_{lang=en}).\n2. Vérifier qu’il existe une méthode alternative pour réaliser l’action associée avec un geste simple, par exemple l’appui sur une seule touche du clavier ou un bouton.\n3. Si c’est le cas, le critère est validé.", + "11.11": "###### iOS et Android\n1. Repérer dans l’écran les fonctionnalités qui nécessitent la réalisation de deux actions simultanées, par exemple :\n * l’utilisation simultanée de deux touches d’un clavier ou plus ;\n * devoir énoncer une commande vocale et toucher l’écran en même temps pour réaliser une action.\n2. Vérifier qu’il existe dans l’écran ou l’application une méthode alternative pour réaliser l’action associée avec une action unique, par exemple l’appui sur un bouton.\n3. Si c’est le cas, le critère est validé.", + "11.12": "###### iOS et Android\n1. Repérer dans l’écran les composants interactifs (par exemple, bouton ou lien).\n2. Pour chaque composant interactif, effectuer un appui simple dessus et conserver la pression.\n3. Déplacer le doigt en dehors de la zone interactive et constater que l’action associée n’est pas déclenchée.\n4. Si c’est le cas, le critère est validé.", + "11.13": "###### iOS et Android\n1. Repérer dans l’écran les fonctionnalités qui se déclenchent au moyen d’un mouvement de l’appareil ou d’un geste vers l’appareil (repérer par exemple la présence de consignes dans l’interface ou dans une documentation associée à l’application qui décrive ce type de déclenchement).\n2. Vérifier :\n * que la fonctionnalité peut être déclenchée sans mouvement, par exemple par l’activation d’un bouton ou d’un lien ;\n * et que l’application propose une méthode pour désactiver la détection du mouvement (par exemple, un paramètre dans l’application).\n3. Si c’est le cas, le critère est validé.", + "11.14": "###### iOS et Android\n1. Repérer dans l’écran les fonctionnalités de conversion de document (par exemple exportation en PDF, en .odt, HTML etc.)\n2. Repérer dans le contenu original les informations d’accessibilité présentes (par exemple, une alternative d’un élément graphique, des niveaux de titres, une table des matières).\n3. Vérifier que dans le document résultant de la conversion, les informations d’accessibilité sont toujours présentes (sauf si le format de conversion choisi ne possède pas de support pour les informations d’accessibilité du document source).\n4. Si c’est le cas, le test est validé.", + "11.15": "###### iOS et Android\n1. Repérer dans l’écran les fonctionnalités d’identification (authentification) et de contrôle qui reposent sur l’utilisation de caractéristiques biologiques (par exemple reconnaissance vocale, empreinte digitale, reconnaissance faciale).\n2. Vérifier qu’il existe une méthode alternative pour réaliser l’action, par exemple :\n * pour une fonctionnalité d’authentification qui passe par une reconnaissance d’empreinte digitale, un bouton est disponible sur l’écran de connexion pour accéder à la saisie d’un mot de passe à la place.\n * pour une fonctionnalité d’authentification qui passe par une reconnaissance vocale, l’application propose également une reconnaissance d’empreinte digitale (si la méthode alternative repose également sur une caractéristique biologique, il est souhaitable qu’elle n’implique pas une caractéristique biologique similaire. Par exemple, si la méthode initiale implique la voix, la méthode alternative ne devrait pas impliquer la voix.)\n3. Si c’est le cas, le critère est validé.", + "11.16": "###### iOS et Android\n1. Repérer dans l’application la présence d’une fonctionnalité de répétition de touches (repérer par exemple la présence de consignes dans l’interface ou dans une documentation associée à l’application).\n2. Vérifier que le délai de déclenchement de la fonction de répétition (le délai entre la toute première pression de touche à répéter et la mise en œuvre de la fonction de répétition) :\n * est de 2 secondes au moins ;\n * ou qu’il existe une méthode permettant de le paramétrer à 2 secondes au moins (par exemple, un champ de saisie dans les paramètres utilisateurs de l’application).\n3. Vérifier que le délai entre deux répétitions :\n * est de 2 secondes au moins ;\n * ou qu’il existe une méthode permettant de le paramétrer à 2 secondes au moins (par exemple, un champ de saisie dans les paramètres utilisateurs de l’application).\n4. Si c’est le cas, le test est validé.", + "12.1": "###### iOS et Android\n1. Repérer dans l’application la présence d’une documentation, par exemple :\n * un écran d’aide ;\n * une [déclaration d’accessibilité](../obligations.html#d%C3%A9claration-daccessibilit%C3%A9) ;\n * tout autre contenu qui fait office de documentation.\n2. Repérer dans l’application la présence de fonctionnalités d’accessibilité.\n3. Vérifier la présence dans la documentation :\n * de la description des fonctionnalités d’accessibilité de l’application, par exemple :\n * des paramètres d’accessibilité intégrés dans l’application comme la gestion des couleurs, des tailles de polices, la gestion des animations ;\n * un rotor personnalisé sur certains écrans (le rotor est une fonctionnalité des lecteurs d’écran qui permet une navigation rapide entre des types d’éléments d’un écran, certaines plateformes permettent de définir des éléments de navigation rapide spécifique à une application dans ce rotor. [Voir une démonstration](https://developer.apple.com/videos/play/wwdc2020/10116/)) ;\n * des gestes ou mouvements d’appareil qui déclenchent des fonctionnalités ;\n * des raccourcis clavier spéciaux disponibles pour certaines technologies d’assistance.\n * de la description des composants complexes pour lesquels il est mis en place une gestion particulière selon les technologies d’assistance ;\n * d’explications sur les modalités d’utilisation de ces fonctionnalités (leur localisation, les méthodes pour les activer) ;\n * de la description des éléments non conformes ou non compatibles avec certaines technologies d’assistance, et de la présence d’alternatives le cas échéant.\n4. Si c’est le cas, le critère est validé.", + "12.2": "###### iOS et Android\n1. Repérer dans l’application les fonctionnalités d’accessibilité décrites dans la documentation. Par exemple :\n * une fonctionnalité qui permet d’accéder à une version en langage simplifié de l’application ;\n * une fonctionnalité qui permet de verrouiller l’orientation d’un écran.\n2. Vérifier qu’il est possible pour les utilisateurs qui ont besoin :\n * de percevoir la présence de cette fonctionnalité dans l’interface ;\n * d’activer cette fonctionnalité, par exemple, une fonctionnalité est disponible qui permet d’accéder à une version en langage simplifié de l’application, alors tous les composants qui composent le parcours permettant d’atteindre la fonctionnalité doivent être en langage simplifié.\n3. Si c’est le cas, le critère est validé.", + "12.3": "###### iOS\n1. Identifier dans la documentation de la plateforme les fonctionnalités d’accessibilité mises à disposition des utilisateurs (voir la [documentation concernant les fonctionnalités d’accessibilité fournie par iOS](https://www.apple.com/fr/accessibility/?afid=p238%7CsfxtLHWp4-dc_mtid_2092576239937_pcrid_483515907294_pgrid_110868765821_&cid=wwa-fr-kwgo-features--slid---productid---Accessibility-Accessibility-)).\n2. Vérifier que l’application n’empêche pas leur utilisation, par exemple :\n * si l’application implémente des interactions qui déclenchent des fonctionnalités, ces interactions n’empêchent pas le bon fonctionnement des fonctionnalités d’accessibilité de la plateforme comme le lecteur d’écran ou les autres fonctionnalités basées sur le toucher ;\n * si l’application embarque une reconnaissance vocale, alors l’utilisation de la commande vocale intégrée à la plateforme n’est pas perturbée ;\n * si l’application implémente des raccourcis clavier, ceux-ci n’utilisent pas des combinaisons de touches déjà employées par la plateforme pour des fonctionnalités d’accessibilité ([VoiceOver peut être utilisé avec un clavier](https://support.apple.com/fr-fr/guide/iphone/iph6c494dc6/ios) par exemple, les raccourcis proposés ne doivent pas interférer) ;\n * ou toute autre fonctionnalité de l’application.\n3. Si c’est le cas, le critère est validé.\n###### Android\n1. Identifier dans la documentation de la plateforme les fonctionnalités d’accessibilité mises à disposition des utilisateurs (voir la [documentation concernant les fonctionnalités d’accessibilité fournie par Android](https://support.google.com/accessibility/android/answer/6006564?hl=fr)).\n2. Vérifier que l’application n’empêche pas leur utilisation, par exemple :\n * si l’application implémente des interactions qui déclenchent des fonctionnalités, ces interactions n’empêchent pas le bon fonctionnement des fonctionnalités d’accessibilité de la plateforme comme le lecteur d’écran ou les autres fonctionnalités basées sur le toucher ;\n * si l’application embarque une reconnaissance vocale, alors l’utilisation de la commande vocale intégrée à la plateforme n’est pas perturbée ;\n * si l’application implémente des raccourcis clavier, ceux-ci n’utilisent pas des combinaisons de touches déjà employées par la plateforme pour des fonctionnalités d’accessibilité ([TalkBack peut être utilisé avec un clavier](https://support.google.com/accessibility/android/answer/6110948?hl=fr&ref_topic=10602074) par exemple, les raccourcis proposés ne doivent pas interférer) ;\n * ou toute autre fonctionnalité de l’application.\n3. Si c’est le cas, le critère est validé.", + "12.4": "###### iOS et Android\n1. Repérer dans l’application la présence d’une documentation, par exemple :\n * un écran d’aide ;\n * une [déclaration d’accessibilité](../obligations.html#d%C3%A9claration-daccessibilit%C3%A9) ;\n * tout autre contenu qui fait office de documentation (cela peut être un document pdf, une page HTML externe lisible dans un navigateur web).\n2. Si c’est le cas, vérifier pour chaque élément de documentation :\n * s’il s’agit d’une page web, qu’il respecte le [RAWeb1](../raweb1/criteres.html) ;\n * s’il s’agit d’un document bureautique au format PDF, qu’il respecte le [référentiel d’évaluation de l’accessibilité des documents au format PDF (RAPDF 1)](../rapdf1/index.html).\n * s’il s’agit d’un document bureautique dans un autre format, qu’il respecte les critères de la [section 10 Non-web documents](https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf#page=52) de la norme européenne EN 301 549 v3.2.1 ;\n * s’il s’agit d’un écran de l’application, que le présent référentiel est respecté (la page **[Obligations](../obligations.html)** détaille par ailleurs que les écrans relatifs à la documentation doivent être inclus dans l’échantillon d’évaluation).\n3. Si c’est le cas, le critère est validé.", + "13.1": "###### iOS et Android\n1. Repérer dans l’outil les fonctionnalités d’édition (par exemple, un éditeur de texte, mais cela peut être une médiathèque ou toute autre interface qui permet de saisir du texte ou définir des propriétés).\n2. Vérifier qu’il est possible de définir les informations d’accessibilité nécessaires pour rendre le contenu conforme au RAWeb. Par exemple :\n * définir l’alternative textuelle d’une image depuis l’éditeur de texte ou une médiathèque ;\n * définir un intitulé de lien ;\n * etc.\n3. Si c’est le cas, le critère est validé.", + "13.2": "###### iOS et Android\n1. Repérer dans l’outil la présence d’aides à la création de contenus accessibles. Cela peut être :\n * une documentation utilisateur qui explique comment définir les propriétés d’accessibilité pour chaque élément de contenu ;\n * des tests automatiques ou semi-automatiques disponibles depuis les fonctionnalités d’édition ;\n * des tests manuels disponibles depuis les fonctionnalités d’édition pour guider les auteurs dans la détection d’erreurs.\n2. Vérifier que les aides à la création de contenus accessibles sont pertinentes, c’est-à-dire qu’elles permettent de créer un contenu accessible.\n3. Si c’est le cas, le critère est validé.", + "13.3": "###### iOS et Android\n1. Depuis les fonctionnalités d’édition (un éditeur de texte, mais cela peut être une médiathèque et toute autre interface qui permet de saisir du texte ou définir des propriétés), saisir les typologies de contenus proposées par l’éditeur (titre, liste, tableau, image, etc.). Utiliser également les différents paramètres permettant de définir des informations d’accessibilité (renseigner l’alternative textuelle d’une image, ajouter une description sur un lien, etc.)\n2. Enregistrer les saisies.\n3. Consulter le contenu généré :\n * dans la fonctionnalité d’édition (par exemple, dans l’éditeur de texte) ;\n * dans l’interface de publication des contenus (par exemple, la page web de publication).\n4. Vérifier :\n * que les informations d’accessibilité (par exemple l’alternative d’une image, les niveaux de titres) sont préservées dans le contenu généré ;\n * que la technologie prend en charge les informations d’accessibilité pour la forme restructurée de l’information (vérifier que la transformation des informations est compatible avec la technologie, notamment pour s’assurer que ces informations pourront être exploitées par les technologies d’assistance).\n5. Si c’est le cas, le critère est validé.", + "13.4": "###### iOS et Android\n1. Repérer dans l’outil la présence de fonctionnalités de tests automatiques ou semi-automatiques.\n2. Modifier les valeurs ou contenus dans les zones d’édition afin de créer des erreurs d’accessibilité dans le contenu généré (web et non web).\n3. Activer les fonctionnalités de tests.\n4. Vérifier :\n * que l’outil répare automatiquement l’erreur ;\n * ou que l’outil met à disposition de l’auteur des suggestions de réparations.\n5. Dans le cas d’un test semi-automatique, vérifier :\n * l’outil met à disposition une aide à la décision et des suggestions de réparations ;\n * ou que l’outil met à disposition de l’auteur des explications lui permettant d’effectuer la réparation.\n6. Si c’est le cas, le critère est validé.", + "13.5": "###### iOS et Android\n1. Repérer la présence de gabarits mis à disposition par l’outil d’édition.\n2. Tester le respect des critères du [RAWeb](../raweb1/criteres.html) et vérifier qu’au moins un des gabarits est totalement conforme.\n3. Si c’est le cas, le critère est validé.", + "13.6": "###### iOS et Android\n1. Repérer la présence de gabarits totalement conformes au [RAWeb](../raweb1/criteres.html) mis à disposition par l’outil d’édition.\n2. Vérifier la présence d’une mention explicite permettant de les identifier. Par exemple, depuis la liste des gabarits, les gabarits conformes possèdent une étiquette « gabarit accessible ».\n3. Si c’est le cas, le critère est validé.", + "14.1": "###### iOS et Android\n1. Repérer la mise à disposition d’un service d’assistance depuis l’application.\n2. Si c’est le cas, repérer dans l’application la présence d’une documentation, par exemple :\n * un écran d’aide ;\n * une [déclaration d’accessibilité](../obligations.html#d%C3%A9claration-daccessibilit%C3%A9) ;\n * tout autre contenu qui fait office de documentation.\n3. Repérer la présence dans la documentation :\n * de la description des fonctionnalités d’accessibilité de l’application, par exemple :\n * des paramètres d’accessibilité intégrés dans l’application comme la gestion des couleurs, des tailles de polices, la gestion des animations ;\n * un rotor personnalisé sur certains écrans (le rotor est une fonctionnalité des lecteurs d’écran qui permet une navigation rapide entre des types d’éléments d’un écran, certaines plateformes permettent de définir des éléments de navigation rapide spécifique à une application dans ce rotor. [Voir une démonstration](https://developer.apple.com/videos/play/wwdc2020/10116/)) ;\n * des gestes ou mouvements d’appareil qui déclenchent des fonctionnalités ;\n * des raccourcis clavier spéciaux disponibles pour certaines technologies d’assistance.\n * de la description des composants complexes pour lesquels il est mis en place une gestion particulière selon les technologies d’assistance ;\n * d’explications sur les modalités d’utilisation de ces fonctionnalités (leur localisation, les méthodes pour les activer) ;\n * de la description des éléments non conformes ou non compatibles avec certaines technologies d’assistance, et de la présence d’alternatives le cas échéant.\n4. Vérifier que le service support propose des informations concernant ces fonctionnalités.\n5. Si c’est le cas, le critère est validé.", + "14.2": "###### iOS et Android\n1. Repérer la présence dans l’application d’un service d’assistance.\n2. Si c’est le cas, vérifier que le service d’assistance peut être utilisé par toutes les personnes en situation de handicap. Il peut être utile de rechercher dans la documentation de l’application pour trouver ces informations. Par exemple, si le service d’assistance est disponible depuis un numéro de téléphone, vérifier qu’il existe des moyens alternatifs pour les utilisateurs qui ne peuvent pas s’exprimer à l’oral (personnes sourdes ou malentendantes) ou qui ne peuvent pas utiliser le langage verbal (personnes aphasiques). Par exemple :\n * une messagerie instantanée qui fournit un service équivalent (dialogue en temps réel avec un opérateur humain) ;\n * la mise à disposition d’une traduction écrite simultanée ou visuelle des informations orales ou sonores, ou la mise à disposition d’un interprète en langue des signes (utilisation d’un service de relais).\n3. Si c’est le cas, le critère est validé.", + "15.1": "###### iOS et Android\nLa façon la plus sûre d’évaluer ce critère est de faire une recherche soit dans l’interface soit dans la documentation de l’application pour obtenir cette information. Il est également recommandé de demander à l’éditeur de l’application de fournir cette information.\nUne implémentation de la [recommandation UIT-T G.722](https://www.itu.int/rec/T-REC-G.722/fr) par exemple semble être une solution optimale.", + "15.2": "###### iOS et Android\n1. Vérifier que l’application permet la communication orale bidirectionnelle.\n2. Si c’est le cas, vérifier la présence d’une fonctionnalité de communication écrite en temps réel (il peut être parfois nécessaire d’activer un paramètre dédié dans l’application pour permettre la communication écrite en temps réel).\n3. Sinon, vérifier si l’application peut se connecter à un terminal intégrant une fonctionnalité de communication écrite en temps réel (cette évaluation peut être complexe à mener sans la mise à disposition d’un terminal de communication en temps réel ou si le réseau utilisé par le terminal ne supporte pas les protocoles de texte en temps réel. Une première étape peut être de rechercher dans la documentation ou de questionner directement l’éditeur de l’application.)\n4. Si c’est le cas, le critère est validé.", + "15.3": "###### iOS et Android\n1. Vérifier que l’application permet la communication orale bidirectionnelle.\n2. Si c’est le cas, vérifier la présence d’une fonctionnalité de communication écrite en temps réel.\n3. Si c’est le cas, vérifier qu’il est possible d’utiliser les deux modes de communications en même temps, c’est-à-dire que des utilisateurs peuvent envoyer des messages écrits en temps réels au même moment que d’autres utilisateurs parlent par exemple.\n4. Si c’est le cas, le critère est validé.", + "15.4": "###### iOS et Android\n1. Activer l’application et la fonctionnalité de communication écrite en temps réel de l’application sur deux terminaux et les connecter à une même session.\n2. Envoyer un message écrit depuis les deux terminaux pour obtenir des messages avec des statuts différents (envoyé et reçus).\n3. Vérifier :\n * que les messages envoyés et reçus sont visuellement séparés (par exemple, les messages envoyés sont dans une fenêtre et les messages reçus dans une autre, ou il y a un saut de ligne entre chaque message reçu et envoyé s’ils sont présentés dans une même fenêtre) ;\n * qu’il est possible visuellement de distinguer les messages envoyés et les messages reçus (par exemple, repérer la mention « Envoyé » à proximité d’un message envoyé ou « Reçu » à proximité d’un message reçu) ;\n * si l’identification de l’interlocuteur est disponible pour le mode de communication oral (par exemple, mise en avant de l’avatar de la personne ayant la parole), que les auteurs des messages écrits sont identifiés également (par exemple, la présence d’un nom ou un identifiant précédant le message).\n4. Activer le **lecteur d’écran** et naviguer dans les messages.\n5. Vérifier que le lecteur d’écran restitue :\n * l’information du statut envoyé ou reçu de chaque message ;\n * l’identification de l’auteur du message.\n6. Si c’est le cas, le critère est validé.", + "15.5": "###### iOS et Android\n1. Vérifier que l’application permet la communication orale bidirectionnelle et la communication écrite en temps réel ou la diffusion de la vidéo en temps réel.\n2. Si c’est le cas, activer l’application sur deux terminaux et les connecter à une même session.\n3. Faire parler un utilisateur depuis un des terminaux.\n4. Vérifier sur l’interface l’apparition d’un indicateur visuel permettant d’identifier qu’une personne est en train de parler. Il n’est pas nécessaire pour ce critère d’identifier qui parle, mais simplement d’identifier qu’il y a une personne qui est en train de parler. Par exemple, un halo autour ou une icône à proximité de l’avatar de la personne qui parle.\n5. Si c’est le cas, le critère est validé.", + "15.6": "###### iOS et Android\nIl n’est pas proposé de méthode d’évaluation pour ce critère.\n**Note importante :** Ce critère est très complexe à évaluer et demande une certaine maîtrise de l’ensemble des concepts et normes d’interopérabilité. Si l’application que vous évaluez ou développez doit couvrir ce critère, nous vous renvoyons à la lecture intégrale du critère _6.2.3 Interoperability_{lang=en} dans la norme EN 301 549.", + "15.7": "###### iOS et Android\n1. Vérifier que l’application permet la communication écrite en temps réel.\n2. Si c’est le cas, activer l’application et la fonctionnalité de communication écrite sur deux terminaux distincts et les connecter à une même session.\n3. Saisir du texte sur le premier terminal et observer son apparition sur le second terminal. L’apparition sur le second terminal doit être instantanée (inférieure à une demi-seconde). Selon le fonctionnement de la fonctionnalité, chaque caractère n’est pas envoyé individuellement. En effet, si la fonctionnalité de communication écrite en temps réel implémente une prédiction de mots, c’est lorsque le mot désiré sera sélectionné qu’il sera envoyé, pas lors de la saisie des premiers caractères servant à déclencher l’affichage de suggestion. Un test par observation simple peut être suffisant pour constater l’apparition instantanée sur le terminal qui reçoit le message écrit.\n4. Si c’est le cas, le critère est validé.", + "15.8": "###### iOS et Android\n1. Activer le **lecteur d’écran** depuis un terminal.\n2. Depuis un second terminal, lancer un appel vers le premier terminal.\n3. Lorsque l’appel entrant apparaît, vérifier :\n * que l’identification de l’interlocuteur est disponible sous format texte visible (par exemple, un nom ou un numéro de téléphone) ;\n * et que cette identification est correctement restituée par **le lecteur d’écran**.\n4. Si c’est le cas, le critère est validé.", + "15.9": "###### iOS et Android\n1. Activer l’application et lancer un appel vidéo entre les deux terminaux.\n2. Vérifier la présence sur le terminal recevant l’appel d’une méthode permettant aux utilisateurs de langue des signes d’identifier l’interlocuteur.\n3. Si c’est le cas, le critère est validé.", + "15.10": "###### iOS et Android\n1. Repérer les fonctionnalités disponibles (en dehors de la fonctionnalité de communication orale) qui se basent sur l’écoute d’information ou l’énonciation de commande, par exemple :\n * une messagerie vocale ;\n * un standard téléphonique automatique (par exemple, qui demande d’énoncer un chiffre entre 1 et 4 pour être redirigé vers un service) ;\n * ou tout autre serveur vocal interactif.\n2. Vérifier :\n * que l’information est disponible sans devoir écouter ou parler ;\n * que les actions peuvent être réalisées sans devoir écouter ou parler ou qu’il existe une alternative à la fonctionnalité qui peut être utilisée sans devoir écouter ou parler.\n3. Si c’est le cas, le critère est validé.", + "15.11": "###### iOS et Android\nPour les conditions concernant la résolution et la fréquence des images, la façon la plus sûre d’évaluer ce critère est de faire une recherche soit dans l’interface soit dans la documentation de l’application pour obtenir ces informations. Il est également recommandé de demander à l’éditeur de l’application de fournir ces détails techniques.\nPour la dernière condition concernant le décalage entre la vidéo et l’audio, le test peut s’établir sur une simple observation :\n1. Activer l’application sur deux terminaux.\n2. Établir une connexion d’appel vidéo entre les deux terminaux.\n3. Vérifier la synchronisation entre les paroles et la vidéo (synchronisation labiale, mouvement des lèvres).\n4. Si c’est le cas, le critère est validé." +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 5ee23acef..ae814be72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10315,10 +10315,10 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vite@^4.5.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" - integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== +vite@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.3.tgz#d88a4529ea58bae97294c7e2e6f0eab39a50fb1a" + integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg== dependencies: esbuild "^0.18.10" postcss "^8.4.27"