Библиотека Axe-core предназначена для автоматизированного анализа доступности веб-страниц и предоставляет результаты проверки в виде структурированных объектов JavaScript. Понимание структуры этих объектов позволяет эффективно обрабатывать, фильтровать и интерпретировать результаты тестирования.
Объект результатов Axe-core формируется после выполнения функции
axe.run() и представляет собой JavaScript-объект с
несколькими ключевыми свойствами:
{
"violations": [],
"passes": [],
"incomplete": [],
"inapplicable": [],
"testEngine": { ... },
"testEnvironment": { ... }
}
violationsКаждая запись в массиве violations имеет следующую
форму:
{
"id": "image-alt",
"impact": "critical",
"description": "Все изображения должны иметь текстовое описание",
"help": "Добавьте атрибут alt ко всем изображениям",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.4/image-alt?application=axeAPI",
"tags": ["wcag2a", "wcag111", "section508"],
"nodes": [ ... ]
}
minor, moderate, serious,
critical.nodesКаждый объект node содержит подробную информацию о
конкретном элементе страницы, нарушающем правило:
{
"html": "<img src='logo.png'>",
"target": ["#logo"],
"impact": "critical",
"any": [ ... ],
"all": [ ... ],
"none": [ ... ]
}
html — HTML-код элемента в виде строки.
target — CSS-селектор или массив селекторов, идентифицирующих элемент в DOM.
impact — уровень критичности для данного узла (может совпадать с уровнем правила или быть индивидуальным).
any, all, none — массивы результатов проверок, которые уточняют, какие конкретно условия правила выполнены или нарушены:
Пример элемента внутри any:
{
"id": "image-alt",
"impact": "critical",
"message": "Элемент <img> не имеет атрибута alt",
"relatedNodes": []
}
Структурированность объектов позволяет применять фильтры и группировки. Например, можно получить все критические нарушения:
const criticalViolations = results.violations.filter(v => v.impact === "critical");
Для каждого нарушения можно перебирать nodes и извлекать
информацию о конкретных элементах:
criticalViolations.forEach(rule => {
rule.nodes.forEach(node => {
console.log("Элемент:", node.html);
console.log("Селектор:", node.target.join(", "));
});
});
any, all, none позволяют точно
определить, какие условия выполнены, а какие нет.helpUrl
упрощает процесс исправления ошибок.wcag2a, wcag2aa и др. помогает
классифицировать результаты по уровню доступности.axe.run(document, {}, (err, results) => {
if (err) throw err;
console.table(results.violations.map(v => ({
id: v.id,
impact: v.impact,
nodes: v.nodes.length
})));
});
Фильтрация по типу контента: для страниц с
большим количеством элементов можно отделять нарушения по типу элементов
(img, button, form) и
автоматически генерировать отчёты.
Экспорт в JSON: структура результатов полностью сериализуема, что позволяет сохранять отчеты и интегрировать с CI/CD системами.
Структура объектов Axe-core обеспечивает полный контроль над процессом проверки доступности и позволяет строить сложные автоматизированные отчеты, адаптированные под конкретные требования проекта. Она сочетает в себе простоту доступа к информации о нарушениях и высокую детализацию для точного анализа и исправления ошибок.