Для работы с библиотекой необходимо установить её через npm:
npm install axe-core
После установки библиотеку можно подключить в проекте:
import axe from 'axe-core';
Для тестирования веб-страницы в браузере можно использовать
глобальный объект window.axe. В Node.js среде подключение и
настройка происходит через API библиотеки.
Библиотека Axe-core предназначена для автоматизированного аудита
доступности веб-страниц. Основной объект — axe —
предоставляет метод run, который выполняет проверку
указанного DOM-узла или всей страницы:
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
}
}).then(results => {
console.log(results.violations);
});
Важно учитывать, что Axe-core работает асинхронно, возвращая
Promise с результатами аудита.
Пороговые значения в Axe-core позволяют определять критичность нарушений и управлять обработкой результатов. По умолчанию библиотека классифицирует нарушения по уровням: critical, serious, moderate, minor.
Пример фильтрации результатов по пороговому уровню:
axe.run(document).then(results => {
const threshold = 'serious';
const filteredViolations = results.violations.filter(v => v.impact === threshold || v.impact === 'critical');
console.log(filteredViolations);
});
impact — уровень влияния нарушения на доступность.'critical') или массив
уровней (['critical', 'serious']).Использование порогов особенно важно в интеграции с CI/CD, чтобы тесты падали только при критических нарушениях, а менее значимые проблемы регистрировались для последующего исправления.
Axe-core позволяет гибко настраивать проверку через объект
config:
const config = {
rules: {
'color-contrast': { enabled: true },
'label': { enabled: false }
},
reporter: 'v2',
runOnly: {
type: 'tag',
values: ['wcag21aa']
}
};
axe.run(document, config).then(results => {
console.log(results);
});
v1,
v2, json).Для пороговой фильтрации удобно использовать кастомные функции:
function filterByThreshold(violations, threshold) {
const levels = ['minor', 'moderate', 'serious', 'critical'];
const thresholdIndex = levels.indexOf(threshold);
return violations.filter(v => levels.indexOf(v.impact) >= thresholdIndex);
}
axe.run(document).then(results => {
const seriousViolations = filterByThreshold(results.violations, 'serious');
console.log(seriousViolations);
});
Такой подход позволяет динамически менять пороговую границу без модификации конфигурации каждого правила.
Для автоматизированного тестирования Axe-core хорошо сочетается с Jest, Mocha и Cypress. Пример с Jest:
import { configureAxe, axe } from 'axe-core';
test('Проверка доступности страницы', async () => {
const results = await axe.run(document);
const violations = results.violations.filter(v => v.impact === 'critical');
expect(violations).toHaveLength(0);
});
Пороговые значения особенно важны при автоматизации:
critical impact.serious и
moderate нарушения логируются для исправления в
будущем.Пример скрипта для CI:
axe.run(document).then(results => {
const critical = results.violations.filter(v => v.impact === 'critical');
if (critical.length > 0) {
console.error('Критические нарушения доступности найдены', critical);
process.exit(1);
}
});
Этот подход позволяет поддерживать высокие стандарты доступности без блокирования разработки из-за второстепенных проблем.
Пороговые значения в Axe-core являются мощным инструментом управления качеством доступности. Они обеспечивают баланс между строгой проверкой и практической реализацией тестов, позволяя:
Использование порогов снижает шум тестов и делает аудит доступности управляемым и масштабируемым.