Библиотека Axe-core предоставляет мощный набор инструментов для автоматизированного тестирования доступности веб-страниц. Одним из ключевых аспектов работы с Axe является управление конфигурацией правил и контекста анализа. Конфигурации позволяют гибко настраивать поведение библиотеки под конкретные требования проекта, включая выбор правил, исключения элементов и определение специфичных для приложения условий.
Конфигурация Axe строится на объекте с несколькими важными полями:
color-contrast или
image-alt.Пример базовой конфигурации:
const axeConfig = {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: false }
},
include: [['#main-content']],
exclude: [['.ads', '.hidden']],
};
Axe-core позволяет изменять правила не только при инициализации, но и во время работы приложения. Для этого используются методы, предоставляемые библиотекой:
axe.configure() – основной метод для
обновления глобальной конфигурации. При вызове с новым объектом
конфигурации предыдущие настройки частично или полностью
заменяются.enabled и disabled флаги
– управление состоянием отдельных правил без необходимости пересоздавать
весь объект конфигурации.Пример обновления правил в процессе тестирования:
axe.configure({
rules: {
'color-contrast': { enabled: false },
'label': { enabled: true }
}
});
Контекст в Axe-core определяет, какие части DOM будут анализироваться. Использование контекста позволяет:
Контекст задается как объект context с ключами
include и exclude:
const context = {
include: [['#app', '.modal']],
exclude: [['.tooltip']]
};
Контекст может комбинироваться с правилами при вызове анализа:
axe.run(context, axeConfig).then(results => {
console.log(results.violations);
});
Axe-core поддерживает добавление пользовательских правил. Это особенно важно для проектов с уникальными требованиями к доступности:
id, selector,
enabled, check.axe.configure() позволяет
зарегистрировать новые правила вместе с их конфигурацией.Пример кастомного правила:
const customRule = {
id: 'custom-heading',
selector: 'h1, h2, h3',
enabled: true,
check: (node, options) => {
if (!node.textContent.trim()) {
return { result: 'fail', message: 'Заголовок пустой' };
}
return { result: 'pass' };
}
};
axe.configure({
rules: {
'custom-heading': customRule
}
});
Обновление конфигураций в Axe-core — это ключ к созданию гибкой и точной системы проверки доступности. Возможность управлять правилами, контекстами и кастомными проверками позволяет адаптировать библиотеку под любые сценарии, минимизируя ложные срабатывания и повышая качество анализа.