Для начала необходимо установить библиотеку axe-core. В
среде Node.js это делается через npm:
npm install axe-core
В браузере можно подключить библиотеку через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.9.6/axe.min.js"></script>
После подключения доступна глобальная переменная axe,
через которую осуществляется взаимодействие с API библиотеки.
Глобальная конфигурация axe-core управляет поведением
всех проверок доступности на странице. Она задаётся методом
axe.configure().
axe.configure({
branding: {
application: "MyApp",
icon: false
},
rules: [
{ id: 'color-contrast', enabled: true },
{ id: 'image-alt', enabled: false }
],
checks: [],
reporter: 'v2'
});
Пояснение параметров:
id.'v1',
'v2'), влияет на структуру JSON-результата.Правила в axe-core можно настраивать глобально,
отключать или изменять их приоритет.
axe.configure({
rules: [
{ id: 'color-contrast', enabled: true, selector: 'body *' },
{ id: 'label', enabled: false }
]
});
axe.configure({
rules: [
{
id: 'color-contrast',
options: { threshold: 4.5 }
}
]
});
threshold задаёт минимальное отношение контраста текста
к фону, используемое для проверки.
Для крупных проектов часто необходимо исключать определённые элементы
из всех проверок. Это настраивается через exclude:
axe.configure({
exclude: [
['.ignore-axe'], // CSS-селекторы
[document.querySelector('#ad')] // DOM-элементы
]
});
Элементы, указанные в exclude, полностью пропускаются
при всех проверках доступности.
axe-core позволяет добавлять собственные правила на
глобальном уровне. Для этого используется метод
axe.registerRule():
axe.registerRule({
id: 'custom-heading',
selector: 'h1, h2, h3',
enabled: true,
any: ['text'],
evaluate: function(node) {
return node.textContent.trim().length > 0;
}
});
Параметры кастомного правила:
true
(успешно) или false (ошибка).Axe позволяет задавать контекст выполнения проверок через глобальный
context. Это полезно для страниц с динамическим
контентом:
axe.configure({
context: {
include: [['main']],
exclude: [['.dynamic-banner']]
}
});
Контекст можно переопределять локально при вызове
axe.run(), но глобальная конфигурация обеспечивает единый
стандарт для всех запусков на странице.
Формат вывода и уровень детализации можно контролировать глобально:
axe.configure({
reporter: 'v2',
branding: { application: 'AccessibilityTest' }
});
Глобальная конфигурация позволяет централизованно управлять правилами, исключениями и форматом отчетов, что особенно важно для масштабных проектов с многократными проверками доступности.
При интеграции с Jest, Cypress или
Mocha глобальная конфигурация задаётся один раз в файле и
применяется ко всем тестам:
beforeAll(() => {
axe.configure({
rules: [{ id: 'color-contrast', enabled: true }],
branding: { application: 'TestSuite' }
});
});
Это обеспечивает единообразие проверок и предотвращает конфликты между различными тестовыми сценариями.