Библиотека Axe-core предназначена для автоматизированного тестирования доступности веб-приложений и компонентов интерфейса. Один из ключевых механизмов её гибкой настройки — составные конфигурации, позволяющие комбинировать наборы правил, параметров и контекстов для достижения точного и детального аудита доступности.
Конфигурация в Axe-core — это объект, который задаёт:
Пример базовой конфигурации:
const customConfig = {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: false }
},
runOnly: {
type: 'tag',
values: ['wcag2aa', 'wcag21aa']
}
};
В этом примере включено правило проверки контраста текста, а проверка
наличия атрибута alt на изображениях отключена.
Составные конфигурации позволяют объединять несколько наборов правил в один объект. Это особенно полезно, когда проект требует одновременно соблюдения разных стандартов доступности или проверок на специфичных элементах интерфейса.
const baseConfig = {
rules: { 'label': { enabled: true } }
};
const experimentalConfig = {
rules: { 'focus-order-semantics': { enabled: true } }
};
const combinedConfig = {
...baseConfig,
rules: { ...baseConfig.rules, ...experimentalConfig.rules }
};
В этом примере происходит слияние правил из двух конфигураций, позволяя одновременно проверять корректность меток и порядок фокуса в интерфейсе.
Axe-core поддерживает детальную настройку областей проверки через
поля includedContexts и excludedContexts. Эти
контексты могут быть CSS-селекторами, DOM-элементами или
функциями, возвращающими набор элементов.
Пример:
const contextConfig = {
includedContexts: ['#main-content', '.accessible-section'],
excludedContexts: ['.ads-banner', '#hidden-modal']
};
Здесь проверка будет применяться только к основной части контента и специально отмеченным секциям, игнорируя баннеры и скрытые модальные окна.
Составные конфигурации можно динамически менять в процессе выполнения теста. Это удобно, если необходимо адаптировать проверку под конкретное состояние страницы.
const pageConfig = {
rules: { 'color-contrast': { enabled: true } }
};
if (document.querySelector('.dynamic-component')) {
pageConfig.rules['aria-roles'] = { enabled: true };
}
Такая стратегия позволяет адаптировать набор правил под изменяющийся DOM, повышая точность анализа.
Теги (tags) являются мощным инструментом для составных
конфигураций. Можно создать конфигурацию с комбинированными
тегами, чтобы запускать сразу несколько групп правил,
например:
const taggedConfig = {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa', 'best-practice']
}
};
Эта конфигурация запускает проверку всех правил, относящихся к основным уровням доступности WCAG 2.0, а также к дополнительным лучшим практикам.
Составные конфигурации легко интегрируются с такими инструментами,
как Jest, Cypress,
Puppeteer, что позволяет создавать модульные и
повторяемые проверки доступности на всех уровнях проекта. В
этом случае объект конфигурации передается в метод
axe.run:
const results = await axe.run(document, combinedConfig);
results содержит подробную информацию о найденных
нарушениях, их приоритетах, селекторах элементов и рекомендациях по
исправлению.
Составные конфигурации Axe-core обеспечивают гибкость, масштабируемость и точность автоматизированного анализа доступности, позволяя адаптировать проверку под уникальные требования проекта и конкретные сценарии интерфейса.