Библиотека Axe-core предоставляет мощный инструмент для проверки доступности веб-приложений, используя набор правил, каждая из которых имеет четко определённую структуру. Понимание структуры правила позволяет создавать собственные правила и эффективно анализировать результаты автоматизированного аудита.
Каждое правило в Axe-core описывается как объект с набором ключевых свойств. Ключевые поля:
id – уникальный идентификатор правила,
используемый для ссылки на него в отчётах и конфигурации. Пример:
"color-contrast", "label".
description – краткое текстовое описание цели
правила. Определяет, какую проблему доступности оно решает. Пример:
"Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds.".
help – более подробное объяснение с
рекомендациями по исправлению нарушений. Обычно содержит ссылку на
документацию WCAG или практические советы. Пример:
"Elements must have sufficient color contrast to be perceivable by users with low vision. See https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html".
tags – массив категорий, к которым относится
правило. Используется для фильтрации и группировки правил в отчётах.
Типичные теги:
["wcag2a", "wcag2aa", "wcag21aa", "experimental"].
context – CSS-селектор или XPath, определяющий
элементы DOM, к которым будет применяться правило. Этот селектор
ограничивает область проверки. Пример:
["button", "input[type='submit']"].
enabled – булевое значение, определяющее,
активировано ли правило по умолчанию. Позволяет включать или отключать
правило в конфигурации Axe-core. Пример: true.
evaluate – функция, выполняющая проверку
доступности на выбранных элементах. Принимает DOM-узел и возвращает
объект с результатом: pass, fail или
inapplicable. Стандартная сигнатура:
function evaluate(node, options) {
// Логика проверки
return {
result: "pass" | "fail" | "inapplicable",
message: "Описание нарушения"
};
}all, any, none – условия, определяющие, как агрегируются результаты для группы элементов или подправил. Эти поля используют массивы функций или селекторов и позволяют задавать логические комбинации проверок. Пример:
all: ["hasName", "isVisible"]matches – функция, которая проверяет, соответствует ли элемент условиям применения правила. Часто используется для фильтрации элементов перед основной проверкой.
matches: node => node.tagName === 'IMG' && !node.hasAttribute('alt')any и none – альтернативные
логические группы, применяемые для создания сложных условий. Например,
правило может считаться нарушением, если выполняется хотя бы одно из
условий в any или не выполняется ни одно из условий в
none.
metadata – объект, содержащий дополнительную информацию о правиле, включая версию стандарта WCAG, приоритет и категорию риска. Пример:
metadata: {
impact: "critical",
wcag: ["1.4.3", "2.4.4"],
tags: ["accessibility", "contrast"]
}context
или matches выбираются все элементы DOM, к которым
применяется правило.all, any, none для фильтрации
элементов или проверки подусловий.evaluate
анализирует выбранные элементы и возвращает результат.const imgAltRule = {
id: "image-alt",
description: "Проверка наличия атрибута alt у изображений",
help: "Все изображения должны иметь атрибут alt для доступности.",
tags: ["wcag2a", "images"],
context: "img",
enabled: true,
matches: node => node.tagName === "IMG",
evaluate: node => {
if (!node.hasAttribute("alt") || node.getAttribute("alt").trim() === "") {
return { result: "fail", message: "Изображение не имеет описания alt." };
}
return { result: "pass" };
}
};
В этом примере видно, как все элементы структуры правила интегрируются: идентификатор, описание, область применения, функция проверки и результат.
metadata для маркировки важности правила и
соответствия стандартам WCAG.all, any, none для
сложных сценариев, где один элемент может требовать множественных
проверок.Структура правила в Axe-core обеспечивает модульность, расширяемость и точное соответствие стандартам доступности, делая возможным создание собственных правил и настройку проверки под любые веб-приложения.