A acessibilidade é um aspecto crítico do desenvolvimento web, garantindo que todos os usuários, incluindo aqueles com deficiência, possam interagir com seus aplicativos web de forma eficaz. Os testes automatizados de acessibilidade ajudam a identificar e corrigir problemas de acessibilidade no início do processo de desenvolvimento. Nesta postagem, exploraremos como implementar testes automatizados de acessibilidade usando Cypress, aproveitando ferramentas como cypress-axe para tornar seus aplicativos mais inclusivos.
Para realizar testes automatizados de acessibilidade no Cypress, usaremos o plugin cypress-axe, que integra o mecanismo de acessibilidade Ax com o Cypress.
Etapa 1: Instale Cypress e cypress-axe
Primeiro, certifique-se de ter o Cypress instalado em seu projeto. Caso contrário, você pode instalá-lo usando o seguinte comando:
npm install cypress --save-dev
Em seguida, instale o plugin cypress-axe:
npm install cypress-axe --save-dev
Etapa 2: configurar o cypress-axe
Crie um novo arquivo no diretório cypress/support chamado comandos.js e adicione o seguinte código para importar e configurar o 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); } }); }); } }); }); } }); }); });
Etapa 3: Criar testes de acessibilidade
Agora, vamos criar um teste Cypress para verificar a acessibilidade de uma página web. Crie um novo arquivo no diretório cypress/e2e chamado acessibilidade.spec.js e adicione o seguinte código:
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'); }); });
Neste exemplo, estamos realizando verificações de acessibilidade em toda a página, bem como em elementos específicos, como cabeçalho, conteúdo principal e rodapé.
Você pode personalizar as verificações de acessibilidade fornecendo opções e configurando regras. Por exemplo, você pode ignorar certas regras ou executar apenas verificações específicas.
Exemplo: ignorando regras específicas
cy.checkA11y(null, { rules: { 'color-contrast': { enabled: false } } });
Exemplo: execução de verificações específicas
cy.checkA11y(null, { runOnly: { type: 'tag', values: ['wcag2a', 'wcag2aa'] } });
Você pode lidar com violações de acessibilidade fornecendo uma função de retorno de chamada para registrar ou processar as violações. Por exemplo:
cy.checkA11y(null, null, (violations) => { violations.forEach((violation) => { cy.log(`${violation.id} - ${violation.description}`); violation.nodes.forEach((node) => { cy.log(`Node: ${node.target}`); }); }); });
Testes automatizados de acessibilidade com Cypress e cypress-axe são uma maneira poderosa de garantir que seus aplicativos da web sejam acessíveis a todos os usuários. Ao integrar verificações de acessibilidade ao seu processo de teste, você pode identificar e corrigir problemas antecipadamente, proporcionando uma melhor experiência ao usuário e garantindo a conformidade com os padrões de acessibilidade. Siga as práticas recomendadas descritas neste guia para tornar seus aplicativos mais inclusivos e acessíveis.
Bom teste!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3