Библиотека Axe-core — это инструмент для автоматической проверки доступности веб-приложений, разработанный с целью соответствия стандартам WCAG (Web Content Accessibility Guidelines) и лучшим практикам доступности. Центральным элементом её работы являются checks — проверки конкретных аспектов доступимости на странице.
Каждый check представляет собой самостоятельный модуль, который анализирует DOM и выявляет потенциальные нарушения. Проверки классифицируются по типу, цели и уровню серьёзности.
Каждый check в Axe-core описывается следующими компонентами:
wcag2a,
wcag2aa, best-practice).Пример структуры простого check:
const exampleCheck = {
id: "image-alt-check",
evaluate: (node) => {
return node.tagName === "IMG" && !node.hasAttribute("alt")
? { result: "fail", message: "Изображение без атрибута alt" }
: { result: "pass" };
},
options: {},
tags: ["wcag2a", "best-practice"],
enabled: true,
};
Checks в Axe-core делятся на несколько ключевых категорий:
Семантические ошибки (Semantic checks) Проверяют правильность структуры HTML: использование заголовков, списков, таблиц и других элементов, влияющих на восприятие контента.
Атрибуты и свойства (Attribute checks)
Контролируют наличие обязательных атрибутов: alt для
изображений, aria-label для интерактивных элементов,
role для специальных контейнеров.
Визуальные и контрастные проверки (Visual checks) Определяют читаемость элементов, контраст текста и фона, размеры интерактивных зон.
Фокус и навигация (Focus checks) Анализируют логическую последовательность фокуса, доступность элементов через клавиатуру и соответствие стандартам ARIA.
Best Practices Общие рекомендации по улучшению доступности, не всегда обязательные, но повышающие качество интерфейса.
Axe-core позволяет включать и отключать отдельные проверки, а также переопределять их опции для конкретного проекта.
Пример включения только выбранных checks:
const axeConfig = {
runOnly: {
type: "tag",
values: ["wcag2a", "wcag2aa"]
}
};
axe.run(document, axeConfig).then(results => {
console.log(results.violations);
});
Для более детального контроля можно управлять опциями отдельных checks:
axe.configure({
rules: [
{
id: "color-contrast",
enabled: true,
options: {
minContrastRatio: 4.5
}
},
{
id: "image-alt",
enabled: false
}
]
});
Сканирование DOM Axe-core проходит по каждому узлу документа, применяя набор активных checks.
Применение evaluate Функция evaluate каждой проверки анализирует узел на соответствие правилам.
Сбор результатов Каждое нарушение или успешная проверка добавляется в результирующий объект.
Генерация отчёта После сканирования формируется
структурированный отчёт с подробностями о каждом нарушении:
id, описание, уровень серьёзности (minor,
serious, critical), рекомендации по
исправлению.
alt у изображений.<label> для элементов формы.tabindex для управления последовательностью
фокуса.Каждый из этих checks можно настраивать по уровню строгости, игнорируемым селекторам и другим параметрам.
Checks в Axe-core легко интегрируются с юнит-тестами и CI/CD:
import axe from 'axe-core';
describe('Accessibility tests', () => {
it('should have no violations', async () => {
const results = await axe.run(document.body);
expect(results.violations).toHaveLength(0);
});
});
Такой подход позволяет обеспечивать доступность на уровне разработки, выявляя нарушения до деплоя.
Axe-core поддерживает добавление кастомных checks, что позволяет создавать проверки под уникальные требования проекта:
axe.register({
id: "custom-heading-check",
evaluate: (node) => {
return node.tagName === "H2" && node.textContent.length < 5
? { result: "fail", message: "Заголовок слишком короткий" }
: { result: "pass" };
},
tags: ["best-practice"],
enabled: true
});
Кастомные проверки полностью интегрируются с отчётами и инструментами анализа.
Теги (tags) в checks позволяют группировать проверки по стандартам и важности. Это удобно для:
Примеры тегов: wcag2a, wcag2aa,
wcag21aa, best-practice,
experimental.
Каждый check оптимизирован для быстрого обхода DOM, но при большом количестве сложных правил можно:
Это позволяет интегрировать Axe-core даже в крупные веб-приложения без ощутимого влияния на производительность.
Модель checks является ядром Axe-core, объединяя:
Понимание структуры и возможностей checks позволяет гибко управлять доступностью веб-приложений и интегрировать автоматические проверки в любой процесс разработки.