WCAG (Web Content Accessibility Guidelines) представляют собой набор рекомендаций для обеспечения доступности веб-контента для людей с различными ограничениями. Эти стандарты регулируют видимость элементов, доступность навигации, корректное использование семантики HTML и поддержку вспомогательных технологий, таких как скринридеры.
В контексте автоматизированного тестирования, проверка WCAG позволяет выявлять нарушения доступности на ранних этапах разработки, снижая риск недоступности интерфейсов и улучшая пользовательский опыт.
Для проверки стандартов WCAG в Cypress часто используют библиотеку
cypress-axe, которая интегрирует
возможности axe-core. Axe-core анализирует DOM страницы
на наличие нарушений доступности и возвращает детализированные
отчеты.
npm install --save-dev cypress-axe
В cypress/support/commands.js подключается команда для
инициализации:
import 'cypress-axe';
Cypress.Commands.add('injectAxe', () => {
cy.window({ log: false }).then((win) => {
// Подключение axe-core в контекст страницы
win.axe.run();
});
});
Cypress.Commands.add('checkA11y', (context = null, options = {}, violationCallback = null) => {
cy.window({ log: false }).then((win) => {
win.axe.run(context, options, (err, results) => {
if (err) throw err;
if (results.violations.length) {
results.violations.forEach((violation) => {
if (violationCallback) violationCallback(violation);
});
}
});
});
});
Тесты на доступность в Cypress строятся по следующему сценарию:
Пример проверки главной страницы:
describe('Accessibility WCAG', () => {
beforeEach(() => {
cy.visit('/');
cy.injectAxe();
});
it('Проверка на нарушения WCAG', () => {
cy.checkA11y(null, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
}
}, (violation) => {
cy.log(`${violation.id} нарушает доступность: ${violation.nodes.length} элементов`);
});
});
});
Ключевые моменты:
runOnly.type = 'tag' позволяет фильтровать проверку по
категориям стандартов (например, WCAG 2.0 A и AA).violationCallback дает возможность вывести
подробные отчеты о нарушениях, что удобно для CI/CD пайплайнов.img без alt).h1–h6) и отсутствие семантики.button, input), недоступные для клавиатурной
навигации.Проверка через Cypress и axe позволяет автоматически выявлять эти проблемы без ручного аудита.
Для интеграции с CI/CD рекомендуется использовать JSON или HTML отчеты:
cy.checkA11y(null, {
detailedReport: true,
reportLevels: ['critical', 'serious']
}, (violation) => {
cy.writeFile('cypress/reports/accessibility.json', violation, { flag: 'a+' });
});
Дополнительно можно генерировать визуальные отчеты с указанием конкретных элементов, нарушающих стандарты.
Cypress позволяет объединять проверку доступности с обычными тестами пользовательских сценариев. Например:
it('Форма обратной связи доступна и соответствует WCAG', () => {
cy.visit('/contact');
cy.get('form').should('be.visible');
cy.injectAxe();
cy.checkA11y('form');
});
Таким образом, проверка доступности становится частью полного цикла тестирования интерфейса.
cy.checkA11y({
exclude: [['.decorative-image', '#banner-ad']]
});
cy.checkA11y(null, {
rules: {
'color-contrast': { enabled: true },
'label': { enabled: false }
}
});
Эти возможности позволяют гибко адаптировать проверку под специфику проекта и минимизировать ложные срабатывания.
cy.wait() или ожидание API).axe-core и
cypress-axe для поддержки последних стандартов WCAG.Проверка доступности через Cypress превращает WCAG из абстрактных рекомендаций в инструмент контроля качества интерфейсов.