Écrire des tests Cucumber
Rédiger des tests d'accessibilité en utilisant Cucumber avec Axe DevTools pour le Web pour Java
Utiliser Cucumber avec Axe DevTools
Prérequis
Pour écrire des tests d'accessibilité et obtenir des résultats, vous devez avoir déjà 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.
Configuration
Tout d'abord, ajoutez Axe DevTools à votre configuration
public class AppConfiguration {
@Bean
public static AxeWorld axeWorld() {
return new AxeWorld();
}
}Ajoutez maintenant les étapes requises pour utiliser Axe DevTools
public class StepDefinitions {
private AxeWorld axeWorld;
public StepDefinitions(AxeWorld axeWorld) {
this.axeWorld = axeWorld;
}
private WebDriver webDriver;
@Before
public void setup() throws IOException {
webDriver = new ChromeDriver();
axeWorld.setPage(new AxeDriver(webDriver));
}
@After
public void tearDown() throws Exception {
webDriver.quit();
}
@When("^I visit \"([^\"]*)\"$")
public void iVisit(String url) throws Throwable {
webDriver.get(url);
}
}Écriture des tests
Avant de pouvoir tester une page, vous devez y accéder. La première étape consiste à instancier Selenium WebDriver et à accéder à une page
WebDriver webDriver = new ChromeDriver();
webDriver.get("'https://broken-workshop.dequelabs.com'");Ensuite, vous pouvez créer un objet de pilote de scan Axe DevTools et passer le WebDriver
AxeDriver axeDriver = new AxeDriver(webDriver);Enfin, incluez le axeDriver dans vos définitions d'étapes
// Inject AxeWorld into your step definitions.
public StepDefinitions(AxeWorld axeWorld) {
this.axeWorld = axeWorld;
}
// Provide the page to the Axe World
axeWorld.setPage(new axeDriver(webDriver));Vous pouvez ensuite tester la page pour l'accessibilité. Actuellement, Axe DevTools prend en charge les tests Pico et Spring via Cucumber.
Utilisation
Étapes Cucumber pour l'accessibilité
Les exemples de vérifications d'accessibilité ci-dessous utilisent Then the page should be axe clean, mais toutes les vérifications fonctionnent de manière interchangeable avec Then the page should be audited for accessibility. La différence entre ces deux est de savoir si le test échouera sur des violations d'accessibilité avec Then the page should be axe clean, ou ne pas échouer avec Then the page should be audited for accessibility.
Pour construire une étape Cucumber d'accessibilité axe, commencez par l'étape de base et ajoutez les clauses nécessaires. Toutes les clauses suivantes peuvent être mélangées et assorties ; cependant, elles doivent apparaître dans l'ordre spécifié :
Then the page should be axe clean [including] [excluding] [according-to] [checking-rules/checking-only-rules] [skipping-rules]Étape de base
L'étape de base est le composant central de l'étape Cucumber. Elle est une étape complète à elle seule et vérifie que la page actuellement chargée est accessible. Elle effectue un audit de l'accessibilité de votre page. L'audit consigne les problèmes d'accessibilité dans target/axe-report/accessibility-check.log et crée une sortie JSON des résultats à target/axe-report/accessibility-check.json.
Then the page should be axe cleanThis step will cause test suite failures if accessibility violations are foundThen the page should be audited for accessibilityThis step will require handling of violations outside of test suite failures, as this step does not trigger the suite to fail if violations are found.Détermination de la portée
Axe DevTools permet d'effectuer des scans d'accessibilité avec une portée inclusive et exclusive. De plus, ces portées peuvent fonctionner les unes avec les autres pour créer des enclaves et exclaves complexes de portée. Ces portées fonctionnent à l'aide de sélecteurs CSS.
Clause d'inclusion
La clause d'inclusion within "#selector" spécifie quels éléments vérifier sur la page. Seuls les éléments dans la portée sélectionnée seront scannés. La clause d'inclusion doit inclure un sélecteur CSS valide entouré de guillemets doubles. Utilisez des sélecteurs composés pour sélectionner plusieurs éléments. Par exemple within "#header, .footer"
Then the page should be axe clean within "#selector"Clause d'exclusion
La clause d'exclusion excluding "#selector" spécifie quels éléments ignorer. Aucun élément dans la portée sélectionnée ne sera scanné. La clause d'exclusion doit inclure un sélecteur CSS valide entouré de guillemets doubles. Utilisez des sélecteurs composés pour sélectionner plusieurs éléments. Par exemple excluding "#widget, .ad"
Then the page should be axe clean excluding "#selector"Enchaînement des clauses d'inclusion et d'exclusion
Pour enchaîner les clauses d'inclusion et d'exclusion, utilisez le point-virgule (;) ou le mot mais pour les séparer.
Then the page should be axe clean within "main"; excluding "aside"
Then the page should be axe clean within "main" but excluding "aside"Configuration des règles
Il existe plusieurs façons de modifier votre configuration de règles standard à l'aide de l'API Cucumber. Vous pouvez sélectionner des règles par groupe à l'aide de tags, ou sélectionner des règles individuellement par leur ID de règle.
Clause du tag de règle
La clause de tag spécifie quelle norme d'accessibilité (ou quelles normes) utiliser dans la vérification de la page. Spécifiez les normes d'accessibilité par nom (tag). Plusieurs normes peuvent être spécifiées lorsqu'elles sont séparées par des virgules. Par exemple according to: wcag2a, section508
Tous les les noms de tags sont documentés en plus d'une liste complète des descriptions des règles qui correspondent à chaque tag.
Then the page should be axe clean according to: best-practiceClause de vérification des règles supplémentaires
Cette clause vous permet d'ajouter des règles supplémentaires à vos règles existantes. Vous pouvez spécifier une seule règle par son ID de règle, ou une liste de règles séparées par des virgules. Consultez la documentation des règles pour une liste des règles et de leurs IDs de règle. Utilisez un point-virgule (;) ou le mot and pour séparer la clause de vérification des règles de toute clause précédente.
Then the page should be axe clean checking: color-contrastThen the page should be axe clean according to: wcag2a; checking: color-contrast
Then the page should be axe clean according to: wcag2a and checking: color-contrastClause de vérification uniquement des règles spécifiées
En ajoutant le mot only à la clause de vérification des règles, vous pouvez changer la signification de l'étape. Comme décrit précédemment, la clause de vérification des règles spécifie des règles supplémentaires à exécuter. Seules les règles spécifiées sont vérifiées si le mot only est utilisé. Consultez la documentation des règles pour une liste des règles et de leurs IDs de règle. Utilisez un point-virgule (;) ou le mot and pour séparer la clause de vérification des règles de toute clause précédente.
Then the page should be axe clean checking only: color-contrastClause des règles à sauter
La clause des règles à sauter spécifie quelles règles ignorer dans la configuration de règles existante. Les règles à sauter sont spécifiées par leurs IDs de règle séparés par des virgules. Consultez la documentation des règles pour une liste des règles et de leurs IDs de règle. Utilisez un point-virgule (;) ou le mot and pour séparer la clause de vérification des règles de toute clause précédente.
Then the page should be axe clean skipping: color-contrastThen the page should be axe clean according to: wcag2a; skipping: color-contrast
Then the page should be axe clean according to: wcag2a but skipping: color-contrastClause de sélection de l'ensemble des règles
Accédez aux ensembles de règles tagués dans le axeDriver via une clause Cucumber. Cette fonctionnalité vous permet de spécifier un ensemble de règles (par exemple : 508, wcag2, wcag2.1) pour auditer l'accessibilité des pages.
Then the page should be axe clean according to ruleset: wcag2.1Service d'utilisation
Obtenez des informations sur les tendances d'utilisation d'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 signalé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 |
Prochaines étapes
Pour une utilisation ultérieure de vos résultats d'analyse Axe DevTools, comme le reporting, consultez le 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, atteignez-nous via notre service d'assistance, ou envoyez-nous un email. Nous serons ravis de vous aider à démarrer vos efforts de tests d'accessibilité.
