Библиотека Axe-core является инструментом для
автоматизированного тестирования доступности веб-страниц. Она может быть
использована в браузере напрямую через скрипт или интегрирована в
тестовые фреймворки, такие как Jest,
Cypress или Puppeteer. Основной объект
— axe — предоставляет методы для запуска проверок
доступности и получения подробных отчётов о найденных нарушениях.
Для начала работы достаточно подключить библиотеку:
import axe from 'axe-core';
// или через CDN
// <script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.7.0/axe.min.js"></script>
После подключения необходимо инициализировать сканирование:
axe.run(document, {
// настройки конфигурации
}, (err, results) => {
if (err) throw err;
console.log(results.violations);
});
Ключевым элементом конфигурации являются checks — правила, по которым выполняется аудит доступности.
В Axe-core проверка доступности может быть выполнена с использованием
трёх стратегий: any, all и none.
Они определяют логику сопоставления элементов DOM с правилами.
anyСтратегия any означает, что элемент
считается проблемным, если хотя бы одно условие из группы checks
нарушено. Это наиболее мягкая проверка, которая выявляет
потенциальные проблемы без строгого соответствия всем критериям.
Пример конфигурации:
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: true }
},
checks: {
type: 'any'
}
}, (err, results) => {
console.log(results.violations);
});
Особенности any:
allСтратегия all подразумевает, что
элемент считается проблемным, только если все условия checks
нарушены одновременно. Это строгая проверка, выявляющая
элементы с комплексными проблемами доступности.
Пример использования:
axe.run(document, {
rules: {
'label': { enabled: true },
'aria-required-children': { enabled: true }
},
checks: {
type: 'all'
}
}, (err, results) => {
console.log(results.violations);
});
Особенности all:
noneСтратегия none полностью игнорирует
выбранные checks для элементов или правил. Элемент никогда не будет
считаться проблемным в рамках отключённых проверок. Это полезно, когда
необходимо исключить специфические правила, которые не применимы к
проекту.
Пример настройки:
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'aria-hidden-focus': { enabled: true }
},
checks: {
type: 'none'
}
}, (err, results) => {
console.log(results.violations);
});
Особенности none:
selectors для
таргетирования конкретных частей DOM.Axe-core позволяет тонко настраивать аудит, комбинируя стратегии
any, all и none с фильтрацией по
CSS-селекторам или группам правил:
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: true },
'label': { enabled: true }
},
checks: [
{ type: 'any', selector: '.interactive' },
{ type: 'all', selector: '.form-control' },
{ type: 'none', selector: '.decorative' }
]
}, (err, results) => {
console.log(results.violations);
});
Преимущества комбинированного подхода:
all) для
критических элементов, мягкие (any) для менее значимых, и
исключать (none) декоративные компоненты.any.all.none.Стратегии any, all и none
обеспечивают мощный инструмент контроля доступности на разных этапах
разработки, позволяя гибко балансировать между полнотой проверки и
практической применимостью результатов.