Écrire des tests Hamcrest
Écrire des tests d'accessibilité en utilisant les matchers Hamcrest avec Axe DevTools pour Web pour Java
Utilisation des Matchers Hamcrest avec Axe DevTools
Prérequis
Pour écrire des tests d'accessibilité et produire des résultats, vous devez déjà avoir créé un fichier de test avec Axe DevTools et votre choix de Selenium WebDriver pré-importé et pré-initialisé. Si vous ne l'avez pas encore fait, lisez ce guide pour savoir comment procéder.
Un ensemble de matchers a été fourni pour les tests d'accessibilité via hamcrest en utilisant Selenium WebDriver. Ces matchers peuvent être utilisés dans un cadre de test unitaire ou dans des étapes personnalisées de Cucumber.
Choisir une méthode de balayage
Comme vu dans les instructions d'importation, il existe deux méthodes de balayage d'accessibilité. La première, isAxeClean, lancera une exception et arrêtera les tests si des violations sont trouvées. La seconde, isAuditedForAccessibility, n'arrêtera pas les tests et ne lancera pas d'exception quelle que soit le niveau d'accessibilité de la page balayée.
Écriture des tests
Pour les exemples restants, la méthode isAxeClean est montrée pour des raisons de brièveté, mais les deux méthodes fonctionnent de manière interchangeable. Avec vos objets WebDriver et AxeDriver instanciés et initialisés, créer un balayage est aussi simple que d'ajouter ces deux lignes de code à une méthode de test. Remplacez $URL par l'URL souhaitée de la page que vous souhaitez balayer.
webDriver.get("$URL");
assertThat(axedriver, isAxeClean());Lors du test de plusieurs pages, vous pouvez répéter le processus de récupération et de balayage sans avoir besoin de créer de nouvelles instances des pilotes. Afin de balayer différents états d'une page, vous pouvez manipuler la page en utilisant l'API webdriver, puis lancer un nouveau balayage.
Référence supplémentaire
Plusieurs méthodes de chaînage sont disponibles pour modifier la façon dont la page est balayée. Ces méthodes comprennent des clauses d'exclusion/inclusion ou la limitation et les modifications des normes d'accessibilité, des règles d'accessibilité et des ensembles de règles d'accessibilité. Pour des raisons de brièveté, toutes les méthodes de chaîne sont couplées à isAxeClean(), mais elles sont interchangeables avec isAuditedForAccessibility().
Normes d'accessibilité
Deque propose une méthode de chaîne, selon, qui peut spécifier directement quelles normes de test d'accessibilité sont utilisées par un balayage.
| Nom de la balise | Norme d'accessibilité |
|---|---|
| wcag2a | WCAG 2.0 Niveau A |
| wcag2aa | WCAG 2.0 Niveau AA |
| wcag2aaa | WCAG 2.0 Niveau AAA |
| wcag21a | WCAG 2.1 Niveau A |
| wcag21aa | WCAG 2.1 Niveau AA |
| wcag21aaa | WCAG 2.0 Niveau AAA |
| wcag22a | WCAG 2.2 Niveau A |
| wcag22aa | WCAG 2.2 Niveau AA |
| wcag22aaa | WCAG 2.2 Niveau AAA |
| section508 | Section 508 |
| EN-301-549 | EN 301 549 |
| RGAAv4 | Version RGAA 4 |
| TTv5 | Trusted Tester v5 |
| meilleure-pratique | Bonnes pratiques approuvées par Deque |
Si vous ne savez pas quelle norme est faite pour vous, lisez la documentation axe-core pour savoir quelles règles sont associées à quelle norme, ou contactez-nous par l'intermédiaire de votre représentant Deque ou de notre service d'assistance. Pour une liste complète des règles appliquées à chaque norme, consultez cette page sur Descriptions des Règles
Pour utiliser une norme unique, il suffit d'ajouter la méthode de chaîne selon et de passer votre norme souhaitée
assertThat(axedriver, isAxeClean().accordingTo("wcag2a"));En plus d'utiliser une norme de test unique, il existe deux façons de balayer contre deux ou plusieurs normes de test. Les deux fonctionnent de manière identique.
assertThat(axedriver, isAxeClean().accordingTo("wcag2a", "section508"));
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").accordingTo("section508"));Délimitation
Deque propose deux méthodes enchaînées pour aider à la délimitation des analyses. La méthode within() modifie l'analyse pour ne scanner que la page dans les limites du sélecteur passé en paramètre. La méthode excluding() fonctionne de manière opposée. Elle modifie l'analyse pour ignorer le contenu à l'intérieur du sélecteur passé en paramètre. Les exemples ci-dessous montrent tous la méthode within(), mais la méthode excluding() fonctionne de manière identique.
De manière simple, l'assertion est modifiée avec un seul sélecteur
assertThat(axedriver, isAxeClean().within("#selector1")); Les sélecteurs composés sont également possibles. Dans l'exemple ci-dessous, seuls les éléments avec le sélecteur 2 à l'intérieur du sélecteur 1 sont analysés
assertThat(axedriver, isAxeClean().within("#selector1 .selector2"));Il existe trois manières d'effectuer une sélection multiple, ou de sélectionner plusieurs portées à tester. Dans tous ces exemples, les éléments sont à l'intérieur du sélecteur 1 et sélecteur 2.
assertThat(axedriver, isAxeClean().within("#selector1, .selector2"));
assertThat(axedriver, isAxeClean().within("#selector1", ".selector2"));
assertThat(axedriver, isAxeClean().within("#selector1").within(".selector2"));Pour délimiter à l'intérieur d'un IFrame, un sélecteur d'IFrame doit être déclaré. La portée à analyser à l'intérieur de l'IFrame est passée en tant que paramètre supplémentaire.
assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "#selector1")));La délimitation à l'intérieur de plusieurs IFrames fonctionne de la même manière que la sélection multiple standard. Il suffit de créer deux sélecteurs d'IFrame ou plus séparés par des virgules.
assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "selector1"),
new IFrameSelector("#frame2", "#selector2")));Il est également possible de délimiter à l'intérieur d'IFrames imbriqués. Cet exemple montre une analyse de l'intérieur du sélecteur 1 d'un IFrame qui se trouve à l'intérieur d'un deuxième IFrame.
assertThat(axedriver, isAxeClean().within(
new IFrameSelector("#frame1",
new IFrameSelector("#frame2", "#selector1"))));Enfin, il est possible de définir plusieurs portées à l'intérieur d'une page ainsi qu'à l'intérieur d'un IFrame. Pour que cela fonctionne, un objet sélecteur d'élément est nécessaire.
assertThat(axedriver, isAxeClean().within(
new ElementSelector("#selector1"),
new ElementSelector("#selector2"),
new IFrameSelector("#frame", "selector3")));Sélection de règles
L'API offre également la possibilité de modifier les règles utilisées dans une analyse. Il existe trois façons de modifier les règles utilisées : vérifier des règles supplémentaires en dehors de l'ensemble de règles standard pour l'analyse, ne pas vérifier les règles de l'ensemble de règles standard pour l'analyse, et vérifier uniquement celles qui sont spécifiquement définies.
Pour une liste complète des balises de règles valides que vous pouvez utiliser avec ces méthodes et ce qu'elles testent, lisez la documentation sur les règles
Pour vérifier des règles supplémentaires, utilisez la méthode checking. Pour tester une seule règle supplémentaire, il suffit de passer l'étiquette de la règle dans la méthode checking
assertThat(axedriver, isAxeClean().checking("label"));Comme pour les autres méthodes enchaînées, plusieurs règles supplémentaires peuvent être vérifiées avec la méthode checking de deux manières :
assertThat(axedriver, isAxeClean().checking("label", "tabindex"));
assertThat(axedriver, isAxeClean().checking("label").checking("tabindex"));La méthode checking peut également être enchaînée avec une méthode de sélection de règles.
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").checking("tabindex"));Il est également possible d'omettre des règles d'une analyse. Cela est possible grâce à la méthode skipping. Elle fonctionne de manière identique à la méthode checking sauf qu'elle exclut des règles au lieu de les ajouter.
assertThat(axedriver, isAxeClean().skipping("label"));Elle peut également être utilisée pour omettre plusieurs règles.
assertThat(axedriver, isAxeClean().skipping("label", "tabindex"));
assertThat(axedriver, isAxeClean().skipping("label").skipping("tabindex));Enfin, elle peut également être utilisée avec une méthode de sélection de règles.
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").skipping("#label"));La dernière méthode est utilisée lorsque seules des règles spécifiques sont souhaitées. La méthode checking only modifie l'analyse pour vérifier uniquement les règles explicitement passées en paramètre. De plus, cette méthode ne s’enchaînera pas avec la méthode de sélection des standards d'accessibilité. Pour vérifier une seule règle :
assertThat(axedriver, isAxeClean().checkingOnly("label"));Cette méthode peut également être utilisée pour vérifier plusieurs règles de deux manières.
assertThat(axedriver, isAxeClean().checkingOnly("label", "tabindex"));
assertThat(axedriver, isAxeClean().checkingOnly("label").checkingOnly("tabindex"));Pour une liste complète des balises de règles valides que vous pouvez utiliser avec ces méthodes et ce qu'elles testent, lisez la documentation sur les règles.
Ignorer les violations
Il est possible de configurer l'analyse pour ignorer des instances spécifiques de violations. Pour ce faire, on utilise la méthode ignoring. Elle fonctionne en passant le(s) sélecteur(s) des éléments que vous souhaitez ignorer sous forme de tableau, accompagné de la règle qu'ils violent.
assertThat(axedriver, isAxeClean().ignoring("[\".sidebar\", \"#branded-content\"]", "color-contrast"));Service d'utilisation
Obtenez des informations sur les tendances d'utilisation de Axe DevTools au sein de votre organisation
Par défaut, le service d'utilisation est activé et l'URL par défaut est https://usage.deque.com. Définissez la variable d'environnement AXE_TRACK_USAGE sur false pour le désactiver. Si vos événements d'utilisation n'atteignent pas Deque, définissez explicitement la variable d'environnement AXE_METRICS_URL.
Variables d'environnement
Ces variables d'environnement vous permettent de configurer le service d'utilisation et de modifier les propriétés des événements rapportés.
| Nom | Type | Peut remplacer | Description |
|---|---|---|---|
AXE_DISTINCT_ID |
Chaîne de caractères | — | Un identifiant UUID qui reste le même pour l'utilisateur connecté (sauf s'il est régénéré). En Ruby, cette variable est nommée DEQUE_DISTINCT_ID. |
AXE_INCLUDE_TEST_RESULTS |
Booléen | — | Définir sur true pour inclure les résultats complets de axe-core dans l'objet testResults de chaque événement (la valeur par défaut est false). Pris en charge uniquement par la CLI et les API Node.js. |
AXE_METRICS_URL |
Chaîne de caractères | — | L'URL du point de terminaison de l'utilisation REST (la valeur par défaut est https://usage.deque.com) |
AXE_TRACK_USAGE |
Booléen | — | Définir sur false pour désactiver le rapport de service d'utilisation. Le rapport est activé par défaut. |
AXE_APPLICATION |
Chaîne de caractères | faux | L'application qui a été utilisée pour vérifier les erreurs d'accessibilité |
AXE_DEV_INSTANCE |
Booléen | vrai | Indique si cet événement provient d'actions d'un développeur logiciel. Utile pour marquer et supprimer ensuite les événements enregistrés pendant le développement ou les tests. |
AXE_DEPARTMENT |
Chaîne de caractères | vrai | Le département de l'utilisateur au sein de l'organisation |
AXE_KEYCLOAK_ID |
Chaîne de caractères | faux | L'ID Keycloak de l'utilisateur |
AXE_LOGGED_IN |
Booléen | faux | Enregistre si l'utilisateur est connecté à l'application en test |
AXE_ORGANIZATION |
Chaîne de caractères | vrai | L'organisation de l'utilisateur. Pour que votre utilisation apparaisse dans Axe Reports, définissez ceci sur l'ID de votre organisation (contactez Deque pour l'obtenir). |
AXE_SESSION_ID |
Chaîne de caractères | faux | Un UUID identifiant la session de l'utilisateur |
AXE_USER_ID |
Chaîne de caractères | faux | L'identité d'un utilisateur spécifique, telle qu'une adresse e-mail, un nom ou un identifiant de connexion. Axe Reports compte les utilisateurs uniques à partir de cette valeur. |
AXE_USER_JOB_ROLE |
Chaîne de caractères | faux | Le rôle professionnel de l'utilisateur |
AXE_USER_STATUS |
Chaîne de caractères | faux | Informations de statut que vous souhaitez associer à l'utilisateur |
Étapes suivantes
Pour une utilisation plus poussée de vos résultats d'analyse Axe DevTools, comme le reporting, consultez la documentation du package Axe DevTools Java Selenium
Dépannage
Si vous rencontrez des problèmes lors de la configuration de vos tests d'accessibilité, contactez directement votre représentant Deque, contactez-nous via notre service d'assistance ou envoyez-nous un e-mail. Nous serons heureux de vous aider à lancer vos efforts de tests d'accessibilité.
