ARIA (Accessible Rich Internet Applications) — набор атрибутов, позволяющих сделать веб-приложения доступными для пользователей с ограниченными возможностями. В контексте автоматизированного тестирования на Playwright, проверка ARIA-атрибутов становится важной частью тестов на доступность и корректность поведения интерфейсов.
Среди наиболее часто используемых атрибутов выделяются:
button, checkbox, dialog.true, false, mixed).true или false).Проверка этих атрибутов позволяет убедиться, что интерактивные элементы корректно описаны и доступны.
Playwright поддерживает селекторы по ARIA напрямую через синтаксис:
await page.getByRole('button', { name: 'Отправить' });
Метод getByRole позволяет:
role.name.checked или expanded.Примеры:
// Получение чекбокса, который выбран
const checkbox = page.getByRole('checkbox', { checked: true });
// Получение раскрывающегося меню
const dropdown = page.getByRole('button', { name: 'Меню', expanded: false });
Использование getByRole делает тесты более надежными,
так как они не зависят от классов и структуры DOM, а ориентируются на
семантику интерфейса.
Для проверки атрибутов существует метод getAttribute.
Пример проверки aria-checked:
const checkbox = page.getByRole('checkbox', { name: 'Согласие' });
const isChecked = await checkbox.getAttribute('aria-checked');
expect(isChecked).toBe('true');
Другой способ — использовать проверку через
toHaveAttribute в сочетании с expect:
await expect(checkbox).toHaveAttribute('aria-checked', 'true');
await expect(dropdown).toHaveAttribute('aria-expanded', 'false');
Такой подход обеспечивает читаемость тестов и строгую проверку состояния элементов.
Многие интерфейсы изменяют ARIA-атрибуты динамически при взаимодействии пользователя. Для их тестирования важно:
waitForFunction или locator.waitFor:const button = page.getByRole('button', { name: 'Подробнее' });
await button.click();
await button.waitFor({ state: 'attached' });
await expect(button).toHaveAttribute('aria-expanded', 'true');
getByRole:const expandedSection = page.getByRole('region', { expanded: true });
Это позволяет тесту сразу находить элементы в нужном состоянии без дополнительных проверок.
Для компонентов с вложенной структурой, например таблиц или аккордеонов, важно проверять:
aria-controls — связь управляющего элемента с
управляемым.aria-selected — состояние выбранной вкладки.aria-modal — активность модальных окон.Пример проверки модального окна:
const modal = page.getByRole('dialog');
await expect(modal).toHaveAttribute('aria-modal', 'true');
await expect(modal).toHaveAttribute('aria-hidden', 'false');
Такое тестирование гарантирует, что интерактивность элементов соответствует стандартам доступности.
getByRole вместо классов
или селекторов CSS, если доступна семантическая
информация.getByRole, getByLabel и
getAttribute, чтобы обеспечить полное покрытие
состояния элементов.Автоматические проверки ARIA-атрибутов легко интегрируются в пайплайны. Тесты можно запускать параллельно с функциональными, чтобы сразу выявлять проблемы доступности и гарантировать соответствие стандартам WAI-ARIA.