Доступность — это важнейший аспект веб-разработки, гарантирующий, что все пользователи, включая людей с ограниченными возможностями, смогут эффективно взаимодействовать с вашими веб-приложениями. Автоматизированное тестирование доступности помогает выявлять и устранять проблемы доступности на ранних этапах процесса разработки. В этом посте мы рассмотрим, как реализовать автоматическое тестирование доступности с помощью Cypress, используя такие инструменты, как cypress-axe, чтобы сделать ваши приложения более инклюзивными.
Чтобы выполнить автоматическое тестирование специальных возможностей в Cypress, мы будем использовать плагин cypress-axe, который интегрирует механизм специальных возможностей Axe с Cypress.
Шаг 1. Установите Cypress и Cypress-axe
Сначала убедитесь, что в вашем проекте установлен Cypress. Если нет, вы можете установить его с помощью следующей команды:
npm install cypress --save-dev
Далее установите плагин cypress-axe:
npm install cypress-axe --save-dev
Шаг 2: Настройте кипарис-топор
Создайте новый файл в каталоге cypress/support с именем messages.js и добавьте следующий код для импорта и настройки 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); } }); }); } }); }); } }); }); });
Шаг 3. Создайте тесты доступности
Теперь давайте создадим тест Cypress для проверки доступности веб-страницы. Создайте новый файл в каталоге cypress/e2e с именем accessibility.spec.js и добавьте следующий код:
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'); }); });
В этом примере мы выполняем проверки доступности всей страницы, а также отдельных элементов, таких как заголовок, основной контент и нижний колонтитул.
Вы можете настроить проверки доступности, предоставив параметры и настроив правила. Например, вы можете игнорировать определенные правила или запускать только определенные проверки.
Пример: игнорирование определенных правил
cy.checkA11y(null, { rules: { 'color-contrast': { enabled: false } } });
Пример: выполнение определенных проверок
cy.checkA11y(null, { runOnly: { type: 'tag', values: ['wcag2a', 'wcag2aa'] } });
Вы можете обрабатывать нарушения доступности, предоставляя функцию обратного вызова для регистрации или обработки нарушений. Например:
cy.checkA11y(null, null, (violations) => { violations.forEach((violation) => { cy.log(`${violation.id} - ${violation.description}`); violation.nodes.forEach((node) => { cy.log(`Node: ${node.target}`); }); }); });
Автоматическое тестирование доступности с помощью Cypress и cypress-axe — это мощный способ гарантировать доступность ваших веб-приложений для всех пользователей. Интегрируя проверки доступности в процесс тестирования, вы можете выявлять и устранять проблемы на ранней стадии, обеспечивая лучший пользовательский опыт и обеспечивая соответствие стандартам доступности. Следуйте рекомендациям, изложенным в этом руководстве, чтобы сделать ваши приложения более инклюзивными и доступными.
Удачного тестирования!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3