Библиотека Axe-core является мощным инструментом для автоматизированного тестирования доступности веб-приложений. Она реализует набор правил, проверяющих соответствие элементов интерфейса стандартам WCAG (Web Content Accessibility Guidelines). Каждое правило в Axe-core ориентировано на конкретные аспекты доступности, от семантической разметки до контрастности текста и корректного использования ARIA-атрибутов.
Axe-core интегрируется с JavaScript через несколько способов: как библиотека для браузера, через Node.js для серверного тестирования и через плагины для популярных фреймворков и инструментов тестирования, таких как Jest, Cypress, Playwright.
Каждое правило Axe-core представляет собой объект с несколькими ключевыми свойствами:
wcag2a, wcag2aa, wcag21aa, что
позволяет фильтровать правила по уровню соответствия.critical, serious, moderate,
minor.true или false в зависимости от
соответствия элемента правилу.Пример структуры правила:
{
id: "color-contrast",
description: "Проверка контрастности текста и фона",
help: "Использовать контраст не менее 4.5:1 для обычного текста",
tags: ["wcag2aa", "color"],
impact: "serious",
selector: "body *",
evaluate: function(node) {
// Логика проверки контраста
return nodeHasSufficientContrast(node);
}
}
Axe-core группирует проверки по функциональным и тематическим категориям:
, ,
, а также ARIA-атрибутов.label
для , корректное использование
aria-describedby, aria-required.alt у изображений, субтитров для видео, описаний для
сложных графиков.Каждое правило может быть включено или исключено из проверки через API Axe-core, что позволяет гибко настраивать тесты под конкретный проект.
Axe-core применяет правила к дереву DOM и анализирует свойства элементов. Основные методы взаимодействия:
Пример вызова:
axe.run(document, {
runOnly: {
type: "tag",
values: ["wcag2aa"]
},
rules: {
"color-contrast": { enabled: true },
"label": { enabled: true }
}
}).then(results => {
console.log(results.violations);
});
Результат содержит массив объектов violations, каждый из которых привязан к конкретному правилу и элементам DOM, нарушающим его. Объект включает:
id – идентификатор правила, нарушенного на
странице.impact – уровень критичности.description и help – текстовое описание и
рекомендации.nodes – массив объектов с конкретными элементами,
селекторами и HTML-кодом, вызывающими нарушение.Axe-core позволяет создавать собственные правила и расширять существующие, задавая:
id, description, help –
идентификатор и описание.tags – теги для фильтрации.selector – CSS-селекторы для поиска элементов.evaluate – функцию проверки элемента или группы
элементов.Пользовательские правила интегрируются через
axe.configure(), что позволяет включать их в стандартный
процесс тестирования.
Для крупных проектов Axe-core применяют в связке с фреймворками тестирования:
Axe-core поддерживает асинхронную работу, что позволяет проверять страницы с динамическим контентом и SPA-приложения.