В библиотеке Axe-core результат с типом
inapplicable указывает на элементы, для которых конкретное
правило проверки недоступно или не применимо в текущем контексте. Такие
результаты отличаются от violations и passes и
требуют особого подхода при анализе отчетов доступности.
inapplicableinapplicable появляется, когда проверяемый элемент не
соответствует условиям применения правила. Например, правило проверки
альтернативного текста для изображений (image-alt) не будет
применяться к <div> элементу без фонового
изображения.
Ключевые моменты:
inapplicable не означает ошибку. Это
сигнал о том, что правило просто не применимо к данному элементу.inapplicable элементов может быть полезным
для оптимизации проверок и оценки покрытия тестов.inapplicable результатаКаждый результат inapplicable содержит стандартные поля
Axe-core:
{
"id": "image-alt",
"impact": null,
"description": "Элемент не требует альтернативного текста",
"nodes": [
{
"html": "<div class='placeholder'></div>",
"target": ["div.placeholder"],
"any": [],
"all": [],
"none": []
}
]
}
Описание полей:
image-alt, label,
aria-roles.null для
inapplicable.Фильтрация данных отчета
Для отчетов с большим количеством элементов рекомендуется исключать
inapplicable, чтобы отчет фокусировался на
violations и passes:
const results = axeResults.results;
const violations = results.violations;
const passes = results.passes;
const inapplicable = results.inapplicable;
console.log(`Найдено нарушений: ${violations.length}`);
console.log(`Элементов с inapplicable: ${inapplicable.length}`);Анализ покрытия правил
Количество inapplicable можно использовать для оценки,
насколько выбранные правила подходят для текущей страницы:
const totalRules = results.violations.length +
results.passes.length +
results.inapplicable.length;
const applicableRate = (results.violations.length + results.passes.length) / totalRules;
console.log(`Процент применимых правил: ${Math.round(applicableRate * 100)}%`);inapplicable на этапе рендера, а потом применимы
после обновления DOM.inapplicable для
последующего анализа, чтобы исключить ложные пропуски проверки.inapplicable помогает оптимизировать тестовые
наборы, исключая проверки, которые систематически не применимы.nodes в
inapplicableКаждый элемент в nodes содержит три основных массива:
any, all, none. Для
inapplicable они, как правило, пусты, но могут содержать
условия, если правило применялось частично.
Пример фильтрации элементов по типу:
const inapplicableNodes = axeResults.results.inapplicable.flatMap(rule => rule.nodes);
const divElements = inapplicableNodes.filter(node => node.target[0].startsWith("div"));
console.log(divElements.length);
Для отчетов в CI/CD или для визуального анализа рекомендуется:
violations, passes и
inapplicable на отдельные блоки.inapplicable с указанием причины,
чтобы разработчики понимали, почему правило не сработало.Пример в Node.js с использованием console.table:
console.table(inapplicable.map(rule => ({
Rule: rule.id,
Description: rule.description,
Elements: rule.nodes.length
})));
inapplicableОбработка inapplicable является важным элементом в
построении эффективного процесса тестирования
доступности и позволяет избежать ложных срабатываний, повышая
точность отчетов Axe-core.