Библиотека Axe-core предназначена для автоматической
проверки доступности веб-страниц и веб-приложений. Основной результат
анализа представлен в виде массивов объектов, среди которых ключевое
место занимает объект violation. Он
описывает конкретное нарушение правил доступности и содержит всю
необходимую информацию для его диагностики и исправления.
violationОбъект violation представляет собой JavaScript-объект с
набором стандартных полей:
id Уникальный идентификатор
правила, которое было нарушено. Обычно совпадает с названием правила в
стандартной библиотеке Axe-core. Пример:
"id": "color-contrast"impact Уровень серьезности
нарушения. Возможные значения:
critical — критическое нарушение, требует немедленного
исправления.serious — серьёзное нарушение, может существенно
повлиять на доступность.moderate — умеренное нарушение.minor — незначительное нарушение, часто косметического
характера.description Краткое текстовое
описание нарушения, поясняющее его суть. Обычно формулируется в
контексте доступности для пользователей с ограниченными
возможностями.
help Короткая строка с наглядным
объяснением того, что не так. Часто используется для отображения в
интерфейсе инструментов разработчика.
helpUrl Ссылка на официальную
документацию или страницу с рекомендациями по исправлению конкретного
нарушения. Пример:
"helpUrl": "https://dequeuniversity.com/rules/axe/4.5/color-contrast"nodes Массив объектов, каждый из
которых соответствует конкретному элементу DOM, где обнаружено
нарушение. Это одно из наиболее информативных полей.
nodesКаждый объект в nodes содержит несколько ключевых
полей:
target Массив селекторов CSS,
однозначно идентифицирующих элемент на странице. Пример:
"target": ["#submit-button", ".form-control"]html Строка с HTML-разметкой
элемента, в котором выявлено нарушение. Полезно для быстрой визуальной
проверки.
failureSummary Подробное текстовое
объяснение того, почему данный элемент нарушает правило. Может включать
рекомендации и конкретные значения атрибутов.
any Массив объектов, описывающих
частичные нарушения правила. Каждый объект содержит:
id — идентификатор подправила.impact — серьёзность.message — объяснение конкретного нарушения.all Массив объектов, которые
описывают элементы, полностью подпадающие под правило. Используется для
правил, которые требуют соблюдения всех условий сразу.
none Пустой массив или объекты для
элементов, которые не нарушают ни одно из условий правила. Используется
для полной структуры анализа.
any и all vs
none Эти три поля помогают различать нарушения,
которые могут быть частичными (any), обязательными
(all) или отсутствующими (none).
violation{
"id": "color-contrast",
"impact": "critical",
"description": "Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds",
"help": "Fix color contrast",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.5/color-contrast",
"nodes": [
{
"target": ["#submit-button"],
"html": "<button id='submit-button'>Submit</button>",
"failureSummary": "This element has insufficient color contrast of 2.5 (foreground color: #888888, background color: #ffffff). Expected contrast ratio of 4.5:1",
"any": [
{
"id": "color-contrast",
"impact": "critical",
"message": "Element has insufficient color contrast"
}
],
"all": [],
"none": []
}
]
}
В этом примере видно, что объект violation содержит
полную информацию о проблеме: идентификатор правила, уровень
серьёзности, ссылки на документацию, и точные элементы DOM, где
нарушение проявляется.
violation в практикеviolation
легко сериализуется в JSON и используется для генерации отчётов.nodes позволяет быстро найти
элементы с проблемами и исправить их без ручного аудита всей
страницы.Структура violation обеспечивает детальный,
стандартизированный подход к фиксации нарушений доступности, облегчая
интеграцию Axe-core в любой процесс разработки и тестирования
веб-приложений.