Библиотека Axe-core представляет собой инструмент для автоматизированной проверки доступности веб-приложений. Основной способ подключения — через пакет npm:
npm install axe-core --save-dev
После установки можно импортировать библиотеку в проект:
import axe from 'axe-core';
Для браузерной среды возможен вариант подключения через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.7.2/axe.min.js"></script>
В обоих случаях становится доступен объект axe,
предоставляющий API для анализа DOM и генерации отчётов по
доступности.
Запуск анализа производится с помощью функции axe.run.
Она принимает DOM-узел (по умолчанию document) и объект
конфигурации. Результатом является Promise, который
возвращает отчёт в формате JSON.
axe.run(document, {}, (err, results) => {
if (err) throw err;
console.log(results);
});
Основные ключи объекта results:
violations — список нарушений с подробной
информацией.passes — элементы, соответствующие правилам
доступности.incomplete — проверки, завершившиеся частично.inapplicable — правила, не применимые к текущему
DOM.Axe-core поддерживает гибкую конфигурацию правил. Можно включать и исключать конкретные правила, а также настраивать их параметры.
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: false }
}
}, (err, results) => {
console.log(results.violations);
});
Ключевые моменты:
color-contrast).Для ускорения анализа больших страниц возможна проверка отдельных элементов:
const element = document.querySelector('#main-content');
axe.run(element).then(results => {
console.log(results.violations);
});
Это особенно полезно при интеграции Axe-core в динамические веб-приложения, где контент обновляется без перезагрузки страницы.
Axe-core полностью поддерживает Promise API, что позволяет использовать его в автоматизированных тестах на Jest, Cypress, Mocha и других фреймворках.
Пример с использованием async/await:
async function testAccessibility() {
const results = await axe.run(document);
if (results.violations.length > 0) {
console.error('Обнаружены нарушения доступности:', results.violations);
}
}
testAccessibility();
Преимущества асинхронного подхода:
Каждое нарушение содержит подробную информацию:
id — идентификатор правила.impact — уровень серьёзности (critical, serious,
moderate, minor).description — описание проблемы.help и helpUrl — рекомендации и ссылки на
документацию.nodes — конкретные DOM-элементы, где обнаружена
проблема.Пример фильтрации критических нарушений:
const criticalViolations = results.violations.filter(v => v.impact === 'critical');
criticalViolations.forEach(v => {
console.log(`${v.id}: ${v.description}`);
});
Для мгновенной проверки можно подключить Axe-core через консоль браузера. После загрузки страницы:
axe.run(document).then(results => console.table(results.violations));
Преимущество живого анализа:
Axe-core предоставляет мощный и гибкий инструмент для автоматизированной проверки доступности, подходящий как для разработки, так и для интеграции в тестовые среды. Благодаря детализированным отчётам, конфигурируемым правилам и возможности живого анализа, библиотека позволяет выявлять и устранять проблемы доступности на любом этапе разработки.