Библиотека Axe-core предназначена для автоматического анализа доступности веб-контента и интегрируется с JavaScript-приложениями для проведения аудитов элементов страницы. Она предоставляет детальные отчёты о нарушениях стандартов доступности WCAG, что позволяет повысить качество интерфейсов и соответствие нормативам.
Для использования Axe-core в браузере её можно подключить через npm
или CDN. В Node.js-среде применяется пакет axe-core вместе
с инструментами рендеринга страницы, например, jsdom или
интеграцией в тестовые фреймворки.
Пример подключения через npm:
import axe from 'axe-core';
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
}
}, (err, results) => {
if (err) throw err;
console.log(results.violations);
});
Ключевой момент: объект document задаёт контекст
проверки, а runOnly позволяет ограничить проверку только
определёнными категориями правил.
Каждое событие и каждая проверка Axe-core сопровождаются
меткой времени (timestamp), что
обеспечивает возможность отслеживания момента проведения аудита и
анализа динамических изменений DOM. Timestamp представляет собой
значение времени в миллисекундах с начала эпохи Unix и используется в
следующих случаях:
В объекте результатов (results) timestamp находится в
разделе timestamp верхнего уровня, а также внутри каждого
обнаруженного нарушения. Пример структуры:
{
"timestamp": 1678790123456,
"url": "https://example.com",
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"description": "Элементы с низкой контрастностью текста",
"timestamp": 1678790123478
}
]
}
Здесь видно, что общий timestamp фиксирует момент
запуска проверки, а вложенные timestamp’ы отражают точное время
обнаружения каждой проблемы.
Окружение (environment) определяет
условия, в которых проводится аудит:
<iframe> с наследованием контекста.Параметры окружения задаются через объект конфигурации при вызове
axe.run:
axe.run(document, {
rules: {
'label': { enabled: true },
'color-contrast': { enabled: true }
},
reporter: 'v2',
iframes: true
}).then(results => console.log(results));
Важный аспект — правильная настройка проверки фреймов, иначе
нарушения в <iframe> не будут зафиксированы.
Axe-core работает асинхронно и возвращает результаты через коллбэк или Promise. Это позволяет запускать аудит на страницах с динамическим контентом, где элементы появляются после загрузки.
Пример с использованием async/await:
async function runAxeAudit() {
const results = await axe.run(document, {
runOnly: { type: 'tag', values: ['wcag2aa'] }
});
console.log(results.violations);
}
runAxeAudit();
Каждое нарушение содержит поля: id, impact,
tags, nodes. Timestamp интегрирован в каждый
узел (nodes) для точного отслеживания момента обнаружения
проблемы.
Использование timestamp в сочетании с объектом окружения позволяет:
Для аналитики рекомендуется сохранять результаты в формате JSON и
проводить агрегацию по timestamp и id
нарушения.
document или контейнер конкретного
компонента, чтобы сократить время проверки.<iframe> увеличивает нагрузку.Использование timestamp и корректной настройки окружения является основой для построения системного подхода к доступности веб-приложений с помощью Axe-core, позволяя не только выявлять нарушения, но и отслеживать их динамику во времени.