Библиотека Axe-core предназначена для
автоматического анализа доступности веб-страниц и компонентов
пользовательского интерфейса. Один из ключевых инструментов настройки
вывода результатов проверки — параметр reporter. Он
позволяет контролировать формат представления результатов тестирования и
интегрировать их в различные рабочие процессы.
reporterПараметр reporter задается при вызове метода
axe.run() или при использовании командной строки, если
применяется библиотека через Node.js. Он принимает строковое значение,
определяющее формат отчета. В стандартной поставке Axe-core
поддерживаются следующие типы:
v2 Стандартный JSON-формат версии
2. Содержит подробную структуру результатов, включая сведения о
правилах, нарушениях, предупреждениях и информации о тестируемых
элементах. Пример структуры:
{
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": ["wcag2aa", "wcag143"],
"description": "Текст должен иметь достаточный контраст с фоном",
"nodes": [
{
"html": "<p style='color:#777;'>Пример текста</p>",
"target": ["p"],
"failureSummary": "Контраст недостаточен..."
}
]
}
]
}v1 Более старый формат JSON,
совместимый с предыдущими версиями Axe. Отличается меньшей структурной
детализацией. Используется при интеграции со старыми инструментами
автоматизации.
html Генерация отчета в виде
HTML-страницы. Позволяет быстро визуализировать нарушения и
предупреждения в браузере без дополнительной обработки. Поддерживает
цветовое выделение уровней нарушений (critical,
serious, moderate, minor) и
навигацию по DOM.
csv Формат для интеграции с
аналитическими системами. Каждая строка представляет отдельное нарушение
или узел, содержащий информацию о id правила, уровне
влияния и селекторах элементов. Удобно использовать для массовой
обработки и построения графиков доступности.
json Универсальный формат JSON,
предоставляющий полную информацию о проверке. Отличается от
v2 более гибкой структурой, которую можно модифицировать
под нужды конкретного проекта.
reporter в кодеПри запуске анализа через Jav * aScript:
const axe = require('axe-core');
axe.run(document, {
runOnly: ['wcag2aa'],
reporter: 'v2'
}).then(results => {
console.log(JSON.stringify(results, null, 2));
});
В данном примере результаты будут сформированы в формате
v2, что удобно для последующей интеграции в CI/CD или
системы логирования.
Множественные форматы Axe-core позволяет одновременно использовать несколько форматов через массив:
axe.run(document, {
reporter: ['v2', 'html']
});
В этом случае библиотека вернет результаты в формате JSON и сгенерирует HTML-отчет.
Совместимость с Node.js В серверных сценариях
параметр reporter позволяет направлять результаты проверки
в файлы или консоль:
const fs = require('fs');
axe.run(document, { reporter: 'html' }).then(results => {
fs.writeFileSync('axe-report.html', results);
});Пользовательские репортеры Axe-core поддерживает создание своих репортеров. Для этого достаточно определить функцию, принимающую объект результатов и возвращающую произвольное представление:
const customReporter = results => {
return results.violations.map(v => v.id).join(', ');
};
axe.run(document, { reporter: customReporter }).then(console.log);v2 или json, так как они содержат полную
информацию о нарушениях.html, так как визуализация ускоряет анализ и позволяет
быстро находить проблемные элементы.csv, так как его легко обрабатывать в таблицах и
BI-системах.reporterНезависимо от выбранного формата, результат содержит основные ключи:
Каждый элемент violations включает:
id — идентификатор правила;impact — уровень нарушения (critical,
serious, moderate, minor);description — текстовое описание нарушения;nodes — массив элементов DOM, к которым применимо
правило;failureSummary — краткое объяснение, почему элемент не
прошел проверку.reporterПараметр reporter является инструментом адаптации вывода
Axe-core под конкретные задачи проекта. Он обеспечивает удобное
представление данных, возможность интеграции с внешними системами и
гибкость в автоматизации процессов тестирования доступности.
Использование разных форматов в зависимости от контекста повышает эффективность анализа и упрощает обработку результатов в командах разработки и QA.