Библиотека Axe-core представляет собой мощный инструмент для автоматизированной проверки доступности веб-контента, реализованный на JavaScript. Она ориентирована на разработчиков и тестировщиков, обеспечивая интеграцию в браузер и среду Node.js. Одним из ключевых аспектов работы Axe-core является контекст выполнения проверок, который определяет, какие элементы DOM будут анализироваться и как будут применяться правила.
Контекст в Axe-core задается объектом с конкретными свойствами:
const context = {
include: [['#main-content']], // CSS-селектор для включения в проверку
exclude: [['.skip-accessibility']] // CSS-селектор для исключения из проверки
};
Ключевые моменты:
include — массив селекторов, указывающий, какие
элементы следует анализировать. Если массив пуст, анализируются все
элементы документа.exclude — массив селекторов, указывающий, какие
элементы следует исключить из анализа. Исключения имеют приоритет над
включением.axe.run,
так и через глобальную конфигурацию.Пример использования:
axe.run(context).then(results => {
console.log(results.violations);
});
Это позволяет фокусироваться на конкретных частях страницы, что особенно полезно для больших веб-приложений с множеством компонентов.
В браузере контекст работы определяется DOM-элементами или селекторами. Можно передавать:
const mainContent = document.getElementById('main-content');
axe.run(mainContent).then(results => console.log(results));
axe.run({ include: [['.article-section']] }).then(results => console.log(results));
axe.run({ include: [['#header'], ['#footer']] }).then(results => console.log(results));
Важно: исключения (exclude) работают по
приоритету, блокируя любые элементы, совпадающие с селекторами, даже
если они попадают под include.
Для серверной проверки с использованием jsdom или подобных инструментов, контекст определяется аналогично:
const { JSDOM } = require('jsdom');
const axe = require('axe-core');
const dom = new JSDOM(`<body><div id="app"></div></body>`);
const document = dom.window.document;
const context = { include: [['#app']] };
axe.run(document, context).then(results => console.log(results.violations));
Особенности:
document, полученный из
jsdom.Каждое правило Axe-core имеет условие применения
(selector) и уровень воздействия
(impact). Контекст ограничивает область применения правил,
но не влияет на их внутренние условия.
Пример:
axe.run({
include: [['#form']],
exclude: [['.hidden']]
});
#form..hidden не будут анализироваться,
даже если они находятся внутри #form.Контекст можно менять на лету, что полезно при тестировании отдельных компонентов:
function checkComponent(id) {
return axe.run({ include: [[`#${id}`]] });
}
checkComponent('login-form').then(results => console.log(results.violations));
checkComponent('signup-form').then(results => console.log(results.violations));
Таким образом, одна и та же конфигурация правил может применяться к разным областям страницы без изменения глобальной настройки.
Ограничение области проверки до нужных элементов значительно снижает нагрузку:
exclude) предотвращает анализ
скрытых или декоративных элементов, ускоряя выполнение.include для выделения ключевых областей
интерфейса.include и exclude для
точного контроля.#id) для
стабильности или по классам (.class) для повторного
использования.Контекст выполнения проверок является фундаментальным механизмом Axe-core, позволяя управлять областью анализа, оптимизировать производительность и точно настраивать применение правил доступности для любых веб-компонентов.