Библиотека Axe-core распространяется через npm и CDN. В среде Node.js установка выполняется командой:
npm install axe-core
Для браузерного окружения можно подключить скрипт напрямую:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.6.6/axe.min.js"></script>
После подключения библиотеки объект axe становится
доступен в глобальном контексте, что позволяет сразу выполнять анализ
доступности.
Для запуска проверки на веб-странице используется метод
axe.run(). Он принимает два аргумента: корневой элемент для
проверки и объект конфигурации.
axe.run(document, {
runOnly: { type: 'tag', values: ['wcag2a', 'wcag2aa'] }
})
.then(results => {
console.log(results.violations);
});
Ключевые моменты:
document — проверка выполняется на всем DOM.runOnly — фильтрация по стандартам доступности.results.violations — массив обнаруженных нарушений с
полной структурой.Результат работы axe.run() возвращает объект с
несколькими основными свойствами:
violations — массив нарушений,
включающий:
id — уникальный идентификатор правила.impact — уровень важности (critical,
serious, moderate, minor).description — текстовое описание проблемы.nodes — элементы DOM, на которых обнаружено нарушение,
с детализацией.passes — элементы, которые прошли
проверку.
incomplete — правила, которые не
удалось полностью проверить.
inapplicable — правила, не
применимые к текущему DOM.
Каждое нарушение содержит детальную информацию о контексте, включая CSS-селекторы и атрибуты проблемных элементов.
Axe-core поддерживает несколько способов представления результатов:
axe.run().then(results => {
const jsonReport = JSON.stringify(results, null, 2);
console.log(jsonReport);
});
axe.run().then(results => {
results.violations.forEach(v => {
console.log(`${v.impact} | ${v.description} | ${v.helpUrl}`);
});
});
Конфигурация позволяет адаптировать отчет под конкретные задачи:
runOnly или
rules для включения/отключения отдельных проверок.include и
exclude для ограничения анализа конкретными
элементами.wcag2a,
wcag2aa, wcag21aa и другие.Пример кастомного запуска:
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'label': { enabled: false }
},
include: [['#main-content']],
exclude: [['.ads']]
})
.then(results => {
console.log(results);
});
Для автоматической проверки доступности при сборке проекта результаты отчета чаще всего сохраняются в JSON:
const fs = require('fs');
axe.run(document).then(results => {
fs.writeFileSync('axe-report.json', JSON.stringify(results, null, 2));
});
Далее этот файл может быть использован для:
Для удобства анализа violations можно группировать:
const grouped = results.violations.reduce((acc, v) => {
acc[v.impact] = acc[v.impact] || [];
acc[v.impact].push(v);
return acc;
}, {});
impact для приоритизации
исправлений.Формирование отчетов в Axe-core обеспечивает структурированный, детализированный и легко интегрируемый инструмент для анализа доступности, что делает его незаменимым для современных веб-проектов.