Веб-доступность (accessibility, сокращённо a11y) — это способность веб-приложений и сайтов быть удобными и функциональными для всех пользователей, включая людей с ограниченными возможностями. Основная цель доступности — предоставить равные возможности взаимодействия с интерфейсом вне зависимости от физических или когнитивных ограничений.
В контексте тестирования это означает проверку элементов интерфейса на соответствие стандартам доступности, корректную работу вспомогательных технологий (экранных читалок, клавиатурной навигации, увеличения шрифта) и правильное использование семантических HTML-элементов.
Для проверки доступности чаще всего ориентируются на WCAG (Web Content Accessibility Guidelines), последние версии которых структурированы по четырём принципам:
Playwright предоставляет возможности для автоматизированного тестирования доступности с помощью axe-core или встроенных методов анализа страниц. Основной подход — проверка доступности после загрузки страницы или динамического обновления интерфейса.
npm install @axe-core/playwright
const { injectAxe, checkA11y } = require('@axe-core/playwright');
test('Проверка доступности главной страницы', async ({ page }) => {
await page.goto('https://example.com');
// Внедрение axe-core на страницу
await injectAxe(page);
// Проверка доступности всей страницы
await checkA11y(page, null, {
detailedReport: true,
detailedReportOptions: { html: true }
});
});
Ключевые параметры checkA11y позволяют:
detailedReport: true — получать детальный отчёт с
описанием всех нарушений.detailedReportOptions.html — включить HTML-отчёт для
визуального анализа.Playwright позволяет проверять доступность отдельных элементов, а не всей страницы:
const button = await page.$('button#submit');
await checkA11y(page, { include: [button] });
Такой подход особенно полезен для динамических компонентов, модальных окон или виджетов, которые появляются после действий пользователя.
ARIA (Accessible Rich Internet Applications) — это набор атрибутов, расширяющих семантику HTML-элементов. В Playwright можно проверять корректность использования ARIA:
role — указывает назначение элемента.aria-label и aria-labelledby —
обеспечивают читаемые названия для экранных читалок.aria-hidden — скрывает элементы от вспомогательных
технологий.Пример проверки наличия ARIA-атрибутов:
test('Кнопка имеет корректные ARIA-атрибуты', async ({ page }) => {
const button = await page.$('button#submit');
const role = await button.getAttribute('role');
const label = await button.getAttribute('aria-label');
expect(role).toBe('button');
expect(label).not.toBeNull();
});
Доступность включает в себя управление с клавиатуры. В Playwright это можно тестировать через эмуляцию нажатий клавиш:
await page.focus('input#search');
await page.keyboard.press('Tab'); // перемещение на следующий элемент
await page.keyboard.press('Enter'); // активация элемента
Важно проверять, что порядок табуляции логичен, фокус видим и элементы активируются ожидаемым образом.
Высокий контраст текста и элементов интерфейса критичен для
пользователей с нарушениями зрения. Playwright не имеет встроенного
анализа контрастности, но можно интегрировать сторонние инструменты или
использовать axe-core, который включает правила проверки контрастности
(color-contrast):
await checkA11y(page, null, {
rules: {
'color-contrast': { enabled: true }
}
});
Для многоязычных сайтов важно проверять, чтобы все ARIA-метки, альтернативные тексты и подсказки соответствовали языку интерфейса. Это предотвращает ситуации, когда экранная читалка озвучивает текст на неправильном языке.
Результаты тестов доступности рекомендуется интегрировать в CI/CD. Playwright с axe-core позволяет формировать JSON-отчёты, которые можно анализировать автоматически:
await checkA11y(page, null, { reportLevels: ['violations'] });
Можно настроить автоматическое падение сборки при критических
нарушениях (critical), что гарантирует постоянное
соблюдение стандартов доступности.
<button>, <header>,
<nav> вместо <div> с обработчиками
событий.Внедрение этих практик в Playwright позволяет создать надежную систему автоматизированного контроля доступности, повышая качество продукта и удовлетворяя требования современных стандартов WCAG.