Библиотека Axe-core предоставляет гибкий механизм проверки доступности веб-контента и позволяет детально настраивать правила анализа. Настройка отдельных правил необходима для адаптации проверок под конкретный проект, исключения ложных срабатываний или фокусировки на ключевых проблемах доступности.
Для начала необходимо установить и подключить Axe-core в проект на Jav * aScript:
import axe from 'axe-core';
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
}
}).then(results => {
console.log(results.violations);
});
В этом примере используется фильтрация по тегам WCAG, но конфигурация может быть значительно тоньше — через отдельные правила.
Каждое правило в Axe-core имеет уникальный идентификатор. Для
управления конкретным правилом используется объект rules в
конфигурации axe.run:
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'duplicate-id': { enabled: false }
}
}).then(results => {
console.log(results.violations);
});
enabled: true — включение проверки правила.enabled: false — отключение правила для исключения из
анализа.Этот подход полезен при работе с проектами, где часть правил может давать ложные срабатывания или является нерелевантной.
Некоторые правила поддерживают дополнительные
параметры, которые позволяют уточнить их работу.
Например, правило color-contrast можно настроить с порогом
контраста:
axe.run(document, {
rules: {
'color-contrast': {
enabled: true,
options: { level: 'AAA', noScroll: true }
}
}
});
Параметры зависят от конкретного правила и могут включать:
level — минимальный уровень контраста
(AA или AAA).include / exclude —
селекторы, на которые правило распространяется или не
распространяется.impact — фильтрация по уровню влияния
проблемы (critical, serious,
moderate, minor).Это позволяет гибко адаптировать проверку под дизайн-систему и реальные требования проекта.
Axe-core поддерживает создание кастомных правил, что расширяет возможности библиотеки для нестандартных компонентов:
axe.configure({
rules: [
{
id: 'custom-button-name',
selector: 'button',
enabled: true,
any: [{
id: 'has-name',
evaluate: node => node.textContent.trim().length > 0,
}],
metadata: {
description: 'Проверка наличия текста у кнопок',
impact: 'critical'
}
}
]
});
Элементы кастомного правила:
id — уникальный идентификатор.selector — CSS-селектор элементов для
проверки.enabled — состояние правила.any / all /
none — логические блоки условий для проверки.metadata — описание, уровень влияния,
ссылки на стандарты.Кастомные правила интегрируются с существующими и отображаются в отчетах нарушений так же, как встроенные.
Каждое правило Axe-core имеет набор тегов, которые позволяют запускать выборочные проверки:
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa', 'best-practice']
}
});
wcag2a / wcag2aa —
проверки соответствия стандартам WCAG.best-practice — рекомендации по
улучшению UX и доступности.Правила можно изменять на лету через API, что удобно для тестирования:
const currentConfig = axe.getRules();
currentConfig['image-alt'].enabled = false;
axe.configure({ rules: currentConfig });
Такой подход позволяет отключать правила для отдельных страниц или компонентов без полной пересборки конфигурации.
Результаты анализа содержат подробную информацию по каждому нарушению, включая ID правила, селектор элемента и уровень влияния:
axe.run(document).then(results => {
const criticalViolations = results.violations.filter(v => v.impact === 'critical');
criticalViolations.forEach(v => {
console.log(`Правило: ${v.id}, Элемент: ${v.nodes.map(n => n.target).join(', ')}`);
});
});
Это позволяет строить целевые отчеты, фокусируясь на критических проблемах или конкретных правилах.
Эта гибкость делает Axe-core мощным инструментом для систематической работы с доступностью, позволяя строить точные и управляемые процессы проверки без избыточной нагрузки на разработчиков.