Rédiger des tests pour Axe DevTools for Web pour Playwright

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Comment rédiger des tests efficaces pour l'accessibilité en utilisant Axe DevTools for Web pour Playwright

Not for use with personal data

Rédiger des tests avec Axe DevTools

Produire des résultats de scan d'accessibilité avec Axe DevTools peut être aussi simple qu'une ligne de code. Ces résultats peuvent être consommés bruts, utilisés avec une bibliothèque d'assertions, ou servir à créer des rapports d'accessibilité.

Les extraits individuels dans les sections ci-dessous sont en JavaScript, et ils se compilent sans modification en TypeScript. La section Fichier d'exemple complet donne le test complet dans les deux langues.

Prérequis

Pour importer et initialiser Axe DevTools pour le Web, il doit d'abord être installé. Si ce n'est pas encore fait, lisez le guide sur la manière de l'installer à partir d'un bundle, depuis votre dépôt d'artéfacts ou depuis l'Agora de Deque. Vous aurez également besoin d'une version de Playwright téléchargée et configurée selon votre choix.

Importation et Initialisation

Importez à la fois Axe DevTools pour le Web et Playwright. La syntaxe dépend du langage et du système de modules utilisé par votre projet. Choisissez celui qui correspond à votre projet :

JavaScript avec modules CommonJS

C'est le standard par défaut pour un projet Node.js sans "type": "module" dans son package.json.

const { AxeDevToolsBuilder } = require('@axe-devtools/playwright');
const playwright = require('playwright');

JavaScript avec modules ES

Utilisez cette syntaxe dans un projet avec "type": "module" dans son package.json, ou dans des fichiers .mjs.

import { AxeDevToolsBuilder } from '@axe-devtools/playwright';
import * as playwright from 'playwright';

TypeScript

TypeScript utilise la même syntaxe import que les modules ES. @axe-devtools/playwright propose ses propres déclarations de types, donc il n'y a pas de paquet @types/ à installer séparément. Les résultats des analyses sont typés en tant que AxeResults, que axe-core exporte :

import { AxeDevToolsBuilder } from '@axe-devtools/playwright';
import * as playwright from 'playwright';
import type { AxeResults } from 'axe-core';

Initialisation de Playwright

Une fois que vous avez importé Axe DevTools pour le Web, vous pouvez initialiser le pilote. Chaque analyse nécessite sa propre instance de Axe DevTools pour le Web, donc vous l'initialiserez en écrivant les tests.

Le code d'initialisation est le même en JavaScript et en TypeScript, sauf que TypeScript peut inférer ou annoter les types que Playwright retourne. En JavaScript :

// This will open up a headless instance of chromium
const browser = await playwright.chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();

En TypeScript, avec les types écrits :

import type { Browser, BrowserContext, Page } from 'playwright';

// This will open up a headless instance of chromium
const browser: Browser = await playwright.chromium.launch();
const context: BrowserContext = await browser.newContext();
const page: Page = await context.newPage();

Obtention du Contexte de Scan

Avant de pouvoir scanner une page pour l'accessibilité, elle doit être accédée par Playwright.

//Launch the Playwright Driver
const browser = await playwright.chromium.launch();
//Create a new browser context
const context = await browser.newContext();
//Create a new page in the browser
const page = await context.newPage();
//Send the browser to the desired page to scan
await page.goto('$URL');

Contourner la Politique de Sécurité du Contenu

Si la page que vous essayez de scanner a activé la politique de sécurité du contenu, vous pourriez rencontrer des problèmes. Si vous rencontrez ce problème, Axe DevTools inclut une solution de contournement. Il suffit d'inclure cette instruction après que votre page soit créée :

await context = await browser.newContext({ bypassCSP: true })

Une fois que Playwright a accédé à la page, vous pouvez la scanner avec Axe DevTools et enregistrer les résultats. La façon la plus simple de visualiser les résultats du scan est de les journaliser dans la console.

const results = await new AxeDevToolsBuilder({ page }).analyze();
console.log(results);

Exemple de fichier complet

Le même test est présenté ci-dessous en JavaScript et en TypeScript. L'API Axe DevTools est identique dans les deux ; la version TypeScript utilise la syntaxe import et annote les valeurs Playwright et le retour du scan.

JavaScript

const playwright = require('playwright');
const { AxeDevToolsBuilder } = require('@axe-devtools/playwright');

(async () => {

    //Launch the Playwright Driver
    const browser = await playwright.chromium.launch();
    //Create a new browser context
    const context = await browser.newContext();
    //Create a new page in the browser
    const page = await context.newPage();

    //launch page for testing (has intentional accessibility issues)
    await page.goto('https://broken-workshop.dequelabs.com');

    //analyze page
    const results = await new AxeDevToolsBuilder({ page }).analyze();
    
    //log results
    console.log(results);

    //close webdriver
    browser.close();
})();

TypeScript

import * as playwright from 'playwright';
import type { Browser, BrowserContext, Page } from 'playwright';
import { AxeDevToolsBuilder } from '@axe-devtools/playwright';
import type { AxeResults } from 'axe-core';

(async () => {

    //Launch the Playwright Driver
    const browser: Browser = await playwright.chromium.launch();
    //Create a new browser context
    const context: BrowserContext = await browser.newContext();
    //Create a new page in the browser
    const page: Page = await context.newPage();

    //launch page for testing (has intentional accessibility issues)
    await page.goto('https://broken-workshop.dequelabs.com');

    //analyze page
    const results: AxeResults = await new AxeDevToolsBuilder({ page }).analyze();

    //log results
    console.log(results);

    //close webdriver
    await browser.close();
})();

Prochaines Étapes

Maintenant que vous avez réussi à effectuer un scan d'accessibilité, vous êtes prêt à passer à des sujets de scan plus avancés comme génération de rapports et utilisation de l'objet résultats.

Dépannage

Si vous avez des difficultés à obtenir les résultats de scan, contactez directement votre représentant Deque, joignez-nous via notre service d'assistance, ou envoyez-nous un email. Nous serons heureux de vous aider.