Библиотека axe-core предназначена для автоматизированной проверки доступности веб-страниц. В её основе лежит система правил, которые анализируют DOM, CSS и ARIA-атрибуты для выявления нарушений стандартов WCAG. Два ключевых состояния проверки — passes и incomplete — играют центральную роль в интерпретации результатов.
Правильное понимание различий между этими состояниями позволяет адекватно интерпретировать результаты и избегать ложного ощущения безопасности.
Каждая проверка axe-core возвращает объект с четырьмя основными массивами: violations, passes, incomplete и inapplicable.
{
violations: [...],
passes: [...],
incomplete: [...],
inapplicable: [...]
}
{
id: "rule-id",
impact: "critical | serious | moderate | minor",
description: "текстовое описание правила",
help: "подсказка по исправлению",
nodes: [
{
html: "<button>Click me</button>",
target: ["#button1"],
failureSummary: "информация о непрохождении правила",
all: [...],
any: [...],
none: [...]
}
]
}
Ключевое отличие: у элементов в
passes.nodes все проверки пройдены, а в
incomplete.nodes — проверки частично выполнены или не могут
быть завершены.
Элементы в passes можно использовать для:
Пример фильтрации всех пройденных элементов с критическим impact:
const criticalPasses = results.passes.filter(rule => rule.impact === "critical");
criticalPasses.forEach(rule => {
rule.nodes.forEach(node => console.log(node.target));
});
Элементы в incomplete требуют особого внимания. Их
нельзя игнорировать, поскольку они могут скрывать реальные проблемы
доступности. Практики работы с ними:
all,
any, none внутри nodes, чтобы
понять, какие условия не выполнены.Пример обработки incomplete:
results.incomplete.forEach(rule => {
console.log(`Невозможно полностью проверить правило: ${rule.id}`);
rule.nodes.forEach(node => {
console.log(`Элемент: ${node.html}`);
console.log(`Проблемные условия:`, node.any.map(a => a.message));
});
});
Axe-core позволяет конфигурировать проверку через объект опций:
axe.run(document, {
runOnly: {
type: "tag",
values: ["wcag2a", "wcag2aa"]
},
rules: {
"color-contrast": { enabled: true },
"aria-roles": { enabled: false }
}
});
includeShadowDom: true.Для формирования отчетов удобно разделять элементы на три группы:
Это позволяет создать точную карту доступности страницы и эффективно планировать исправления.
Хотите, я могу подготовить отдельный блок с реальными примерами сложных случаев incomplete и способами их устранения на практике?