Maison  >  Article  >  interface Web  >  Tests d'accessibilité automatisés avec Cypress : un guide complet

Tests d'accessibilité automatisés avec Cypress : un guide complet

PHPz
PHPzoriginal
2024-07-21 07:30:291078parcourir

Automated Accessibility Testing with Cypress: A Comprehensive Guide

Introduction

L'accessibilité est un aspect essentiel du développement Web, car elle garantit que tous les utilisateurs, y compris ceux handicapés, peuvent interagir efficacement avec vos applications Web. Les tests d'accessibilité automatisés permettent d'identifier et de résoudre les problèmes d'accessibilité dès le début du processus de développement. Dans cet article, nous explorerons comment mettre en œuvre des tests d'accessibilité automatisés à l'aide de Cypress, en tirant parti d'outils tels que cypress-axe pour rendre vos applications plus inclusives.

Pourquoi l'accessibilité est importante

  1. Conformité juridique : garantit que votre candidature répond aux exigences légales telles que l'Americans with Disabilities Act (ADA) et les directives pour l'accessibilité du contenu Web (WCAG).
  2. Expérience utilisateur : Améliore l'expérience utilisateur globale pour tous les utilisateurs, y compris ceux handicapés.
  3. Inclusivité : Démontre un engagement en faveur de l'inclusivité et de la diversité, rendant votre candidature accessible à un public plus large.
  4. Avantages SEO : Améliore l'optimisation des moteurs de recherche, car les moteurs de recherche favorisent les sites Web accessibles.

Configuration de tests d'accessibilité automatisés dans Cypress

Pour effectuer des tests d'accessibilité automatisés dans Cypress, nous utiliserons le plugin cypress-axe, qui intègre le moteur d'accessibilité Axe avec Cypress.

Étape 1 : Installer Cypress et cypress-axe
Tout d’abord, assurez-vous que Cypress est installé dans votre projet. Sinon, vous pouvez l'installer à l'aide de la commande suivante :

npm install cypress --save-dev

Ensuite, installez le plugin cypress-axe :

npm install cypress-axe --save-dev

Étape 2 : Configurer cypress-axe
Créez un nouveau fichier dans le répertoire cypress/support appelé commands.js et ajoutez le code suivant pour importer et configurer cypress-axe :

import 'cypress-axe';

Cypress.Commands.add('injectAxe', () => {
    cy.window({ log: false }).then(window => {
        let axe = require('axe-core');
        window.eval(axe.source);
    });
});

Cypress.Commands.add('checkA11y', (selector = null, options = null, violationCallback = null, skipFailures = false) => {
    cy.window({ log: false }).then(window => {
        let document = window.document;
        return axe.run(document, options).then(({ violations }) => {
            if (violations.length) {
                cy.wrap(violations, { log: false }).each(violation => {
                    let nodes = Cypress._.get(violation, 'nodes', []);
                    Cypress._.each(nodes, node => {
                        let target = Cypress._.get(node, 'target', []);
                        if (target.length) {
                            Cypress._.each(target, target => {
                                cy.wrap(target, { log: false }).then($target => {
                                    if (!skipFailures) {
                                        Cypress.log({
                                            name: 'a11y error!',
                                            message: violation.help,
                                            consoleProps: () => violation
                                        });

                                        violationCallback && violationCallback(violation);
                                    }
                                });
                            });
                        }
                    });
                });
            }
        });
    });
});

Étape 3 : Créer des tests d'accessibilité
Créons maintenant un test Cypress pour vérifier l'accessibilité d'une page Web. Créez un nouveau fichier dans le répertoire cypress/e2e appelé accessibilité.spec.js et ajoutez le code suivant :

describe('Automated Accessibility Testing with Cypress', () => {
    beforeEach(() => {
        cy.visit('/');
        cy.injectAxe();
    });

    it('should have no detectable accessibility violations on load', () => {
        cy.checkA11y();
    });

    it('should have no detectable accessibility violations on specific elements', () => {
        cy.checkA11y('header');
        cy.checkA11y('main');
        cy.checkA11y('footer');
    });
});

Dans cet exemple, nous effectuons des contrôles d'accessibilité sur la page entière ainsi que sur des éléments spécifiques tels que l'en-tête, le contenu principal et le pied de page.

Personnalisation des contrôles d'accessibilité

Vous pouvez personnaliser les contrôles d'accessibilité en fournissant des options et en configurant des règles. Par exemple, vous pouvez ignorer certaines règles ou effectuer uniquement des contrôles spécifiques.

Exemple : Ignorer des règles spécifiques

cy.checkA11y(null, {
    rules: {
        'color-contrast': { enabled: false }
    }
});

Exemple : exécution de contrôles spécifiques

cy.checkA11y(null, {
    runOnly: {
        type: 'tag',
        values: ['wcag2a', 'wcag2aa']
    }
});

Gestion des violations d'accessibilité

Vous pouvez gérer les violations d'accessibilité en fournissant une fonction de rappel pour enregistrer ou traiter les violations. Par exemple :

cy.checkA11y(null, null, (violations) => {
    violations.forEach((violation) => {
        cy.log(`${violation.id} - ${violation.description}`);
        violation.nodes.forEach((node) => {
            cy.log(`Node: ${node.target}`);
        });
    });
});

Meilleures pratiques pour les tests d'accessibilité

  1. Intégrer tôt : Intégrez les tests d'accessibilité dès le début du processus de développement pour détecter les problèmes plus tôt.
  2. Testez régulièrement : Exécutez régulièrement des tests d'accessibilité dans le cadre de votre pipeline CI/CD pour garantir une conformité continue.
  3. Éduquez votre équipe : Formez votre équipe de développement aux meilleures pratiques et directives en matière d'accessibilité.
  4. Utiliser les tests manuels : Combinez les tests automatisés et manuels pour couvrir tous les aspects de l'accessibilité, car les outils automatisés peuvent ne pas tout détecter.

Conclusion

Les tests d'accessibilité automatisés avec Cypress et cypress-axe sont un moyen puissant de garantir que vos applications Web sont accessibles à tous les utilisateurs. En intégrant les contrôles d'accessibilité dans votre processus de test, vous pouvez identifier et résoudre les problèmes plus tôt, offrant ainsi une meilleure expérience utilisateur et garantissant le respect des normes d'accessibilité. Suivez les meilleures pratiques décrites dans ce guide pour rendre vos candidatures plus inclusives et accessibles.

Bon test !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn