Библиотека Axe-core представляет собой мощный инструмент для автоматизированной проверки доступности веб-страниц. Одним из ключевых элементов работы с Axe-core является получение и обработка уведомлений о проблемах, которые возникают при проверке интерфейса на соответствие стандартам доступности.
Axe-core классифицирует результаты проверки в несколько категорий:
Violations (Нарушения) Это критические проблемы, которые точно нарушают требования стандартов доступности, таких как WCAG. Нарушения включают, например, отсутствие текстовых альтернатив для изображений или недостаточный контраст текста и фона.
Incomplete (Неполные проверки) Проблемы, которые не могут быть однозначно оценены автоматически. Для их анализа может потребоваться ручная проверка. Пример: оценка адекватности текста альтернативного описания сложной инфографики.
Passes (Соответствия) Элементы, которые прошли проверку и полностью соответствуют требованиям доступности.
Inapplicable (Неприменимые) Сценарии, к которым
данное правило не применимо. Например, проверка атрибута
alt у элементов без изображений.
Каждое уведомление о проблеме содержит следующие ключевые поля:
id – уникальный идентификатор правила, по которому
произошло нарушение.
impact – уровень критичности:
"critical", "serious",
"moderate", "minor".
description – краткое описание сути
нарушения.
help – текст рекомендации по исправлению.
helpUrl – ссылка на документацию или руководство по
исправлению.
nodes – массив элементов DOM, на которых обнаружена
проблема. Каждый объект в nodes содержит:
html – фрагмент исходного HTML-кода элемента.target – селектор или путь к элементу.failureSummary – детальное объяснение причины
нарушения.any, all, none – подробные
данные о конкретных условиях проверки.Пример структуры элемента node:
{
"html": "<img src='logo.png'>",
"target": ["#header img"],
"failureSummary": "Элемент img отсутствует текстовая альтернатива",
"any": [...],
"all": [...],
"none": [...]
}
Для работы с уведомлениями используется метод axe.run.
Он принимает в качестве аргументов контейнер DOM и опциональные
настройки:
import axe from 'axe-core';
axe.run(document, { runOnly: { type: 'tag', values: ['wcag2aa'] } })
.then(results => {
console.log(results.violations);
console.log(results.incomplete);
})
.catch(err => {
console.error(err);
});
runOnly позволяет ограничить
проверку определёнными правилами или тегами.include/exclude
задаёт области DOM для проверки или исключения.Для удобного анализа рекомендуется:
const criticalViolations = results.violations.filter(v => v.impact === 'critical');
const grouped = results.violations.reduce((acc, v) => {
acc[v.id] = acc[v.id] || [];
acc[v.id].push(...v.nodes);
return acc;
}, {});
Axe-core позволяет управлять поведением уведомлений через конфигурацию правил:
axe.configure({
rules: [
{ id: 'color-contrast', enabled: false }
]
});
axe.configure({
rules: [
{ id: 'image-alt', impact: 'critical' }
]
});
axe.configure({
rules: [
{
id: 'custom-button-label',
selector: 'button',
any: [{ id: 'label-present', evaluate: node => !!node.textContent }]
}
]
});
Для проектов с большим количеством страниц часто используют CI/CD интеграцию:
axe.run
на страницах или компонентах.Axe-core предоставляет возможность подсвечивать элементы с нарушениями прямо на странице:
axe.run(document).then(results => {
results.violations.forEach(v => {
v.nodes.forEach(node => {
const el = document.querySelector(node.target.join(', '));
el.style.outline = '3px solid red';
});
});
});
Это облегчает идентификацию проблем и ускоряет процесс их исправления.
Axe-core интегрируется с браузерными расширениями и тестовыми фреймворками:
Использование уведомлений позволяет не только выявлять ошибки доступности, но и внедрять процессы контроля качества интерфейсов на всех этапах разработки.