Библиотека Axe-core предназначена для автоматизации проверки доступности веб-приложений и сайтов. Одной из ключевых возможностей является гибкое управление проверками с помощью разделения их на отдельные категории и правила. Это позволяет проводить выборочные аудиты, оптимизировать время анализа и интегрировать Axe-core в сложные пайплайны тестирования.
Все проверки в Axe-core организованы в виде правил (rules), которые объединены в категории (tags). Каждое правило содержит условия, необходимые для его выполнения, и описание возможного нарушения. Основные теги:
Разделение по тегам позволяет запускать только необходимые группы правил, уменьшая нагрузку на систему и время аудита.
Для управления набором правил используется объект конфигурации при
вызове axe.run(). Примеры ключевых параметров:
await axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2aa', 'best-practice']
}
});
await axe.run(document, {
rules: {
'color-contrast': { enabled: false },
'image-alt': { enabled: true }
}
});
Использование rules особенно полезно для игнорирования
ложноположительных срабатываний или специфичных условий проекта.
Axe-core поддерживает выполнение проверок не на всей странице, а на
выбранных элементах DOM. Это достигается передачей
селектора или элемента в axe.run():
const section = document.querySelector('#main-content');
const results = await axe.run(section, {
runOnly: { type: 'tag', values: ['wcag2aa'] }
});
Такой подход позволяет интегрировать проверку доступности в модульные тесты компонентов или динамически загружаемые части интерфейса.
В сложных интерфейсах некоторые элементы не должны проверяться (например, декоративные изображения или сторонние виджеты). Для этого используется параметр exclude:
await axe.run(document, {
exclude: [['#ads', '.decorative-icons']]
});
Исключенные элементы полностью игнорируются, что повышает точность отчетов и снижает количество ложных нарушений.
После выполнения проверки результаты можно фильтровать и группировать
по тегам. Структура объекта results.violations содержит
подробную информацию о каждом нарушении:
Пример фильтрации критичных нарушений уровня WCAG 2.1 AA:
const criticalAA = results.violations.filter(v =>
v.impact === 'critical' && v.tags.includes('wcag2aa')
);
Это позволяет создавать отдельные отчеты для команд разработки, тестирования и менеджмента, распределяя внимание на самые важные проблемы.
Разделение проверок облегчает автоматизацию тестирования в пайплайнах CI/CD. Использование селективных правил снижает время выполнения тестов и минимизирует ложные срабатывания. Типичный подход:
Такое разделение позволяет балансировать скорость, точность и полноту проверки.
Axe-core предоставляет возможность добавления пользовательских правил. Новые правила могут быть привязаны к существующим тегам или иметь собственные. Формат пользовательского правила включает:
Пример пользовательской проверки:
axe.configure({
rules: [
{
id: 'custom-heading-order',
description: 'Проверка правильного порядка заголовков',
tags: ['wcag2aa', 'best-practice'],
evaluate: function(node) {
// логика проверки заголовков
}
}
]
});
Это позволяет полностью адаптировать инструмент под требования конкретного проекта и интегрировать нестандартные правила доступности.
Разделение проверок в Axe-core обеспечивает гибкость, управляемость и масштабируемость тестирования доступности. Комбинация фильтрации по тегам, выборочных элементов и настройки индивидуальных правил делает библиотеку мощным инструментом для интеграции в любые процессы разработки.