Axe-core — это мощная библиотека для автоматического тестирования доступности веб-приложений на JavaScript. Она позволяет выявлять нарушения стандартов WCAG, ARIA и других спецификаций доступности. Особое место занимает режим debug, который используется для детального анализа и диагностики ошибок доступности.
Режим debug не является отдельной функцией библиотеки, это скорее
способ работы с выводом ошибок и дополнительными инструментами для
разработчиков. Для его активации используют объект конфигурации при
вызове axe.run(). Основные параметры:
axe.run(document, {
reporter: 'v2',
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: true }
},
resultTypes: ['violations', 'incomplete', 'passes', 'inapplicable']
}).then(results => {
console.log(results);
});
Ключевые моменты:
reporter — формат вывода, режим debug предполагает
использование подробного формата (обычно 'v2' или
'v3').resultTypes — список типов результатов, которые
возвращаются. Для отладки важно включить все возможные
типы, чтобы видеть не только ошибки (violations),
но и элементы, которые прошли проверку (passes) и частично
проверенные (incomplete).При работе в режиме debug каждый объект ошибки
(violation) содержит расширенную информацию:
id — уникальный идентификатор правила.
impact — уровень воздействия (critical, serious,
moderate, minor).
description — краткое описание нарушения.
help и helpUrl — рекомендации по
исправлению и ссылка на документацию.
nodes — массив объектов DOM-узлов, где обнаружено
нарушение.
html — исходный HTML узла.target — CSS-селектор узла.failureSummary — подробный текст ошибки.Пример структуры:
{
"id": "color-contrast",
"impact": "serious",
"description": "Цвет текста и фона недостаточно контрастны",
"help": "Увеличить контраст между текстом и фоном",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.4/color-contrast",
"nodes": [
{
"html": "<p style='color: #aaa; background: #fff;'>Пример текста</p>",
"target": ["p"],
"failureSummary": "Контраст 2.5:1, минимальный рекомендуемый 4.5:1"
}
]
}
Эта информация позволяет быстро локализовать проблему и понять контекст, включая стили и DOM-структуру.
Режим debug особенно полезен при интеграции Axe-core с DevTools:
console.log(results) с параметром
JSON.stringify(results, null, 2) обеспечивает читаемую
структуру.axe.run() на
отдельных контейнерах или компонентах позволяет отслеживать ошибки на
уровне конкретных блоков страницы.Фильтрация правил: можно временно отключать или включать определённые проверки для упрощения анализа.
axe.run(document, {
rules: {
'color-contrast': { enabled: false },
'label': { enabled: true }
}
});Селективная проверка элементов: режим debug позволяет запускать анализ не на всей странице, а на конкретном DOM-узле.
const node = document.querySelector('#form');
axe.run(node).then(results => console.log(results));Визуализация нарушений: через
nodes[target] можно напрямую подсветить проблемные элементы
на странице, что ускоряет исправление ошибок.
Анализ динамического контента: для SPA и
приложений с динамическим рендерингом axe.run() в режиме
debug можно вызывать после изменения DOM, чтобы фиксировать новые
нарушения.
Режим debug часто подразумевает ведение журнала ошибок для последующего анализа:
axe.run(document).then(results => {
const fs = require('fs');
fs.writeFileSync('axe-results.json', JSON.stringify(results, null, 2));
});
Такой подход позволяет:
resultTypes: ['violations','passes','incomplete','inapplicable']
для полного контекста.helpUrl и failureSummary для
получения рекомендаций по исправлению.Режим debug в Axe-core превращает библиотеку не просто в инструмент выявления ошибок, а в полноценный инструмент диагностики доступности, позволяющий детально анализировать DOM, стили и соответствие стандартам WCAG.