Библиотека Axe-core предназначена для
автоматизированного тестирования доступности веб-приложений. Одной из
ключевых возможностей при настройке анализа является параметр
context, который определяет область документа, подлежащую
проверке.
contextПараметр context позволяет ограничивать область
сканирования до конкретного элемента DOM или группы элементов. Без
явного указания context проверка выполняется на всём
документе (document.body). Использование
context повышает производительность сканирования и
позволяет сфокусироваться на важных участках интерфейса.
contextCSS-селектор Передача строки с CSS-селектором
(string) позволяет сканировать все элементы, подходящие под
данный селектор.
axe.run('.main-content', (err, results) => {
if (err) throw err;
console.log(results.violations);
});
В этом примере анализ ограничен блоком с классом
main-content.
DOM-элемент Вместо селектора можно передать
объект DOM, например document.getElementById() или
document.querySelector().
const element = document.getElementById('form-section');
axe.run(element).then(results => {
console.log(results.violations);
});
Использование элемента напрямую исключает неоднозначность селекторов и повышает точность.
Массив элементов Можно передавать массив элементов, чтобы проверить несколько областей одновременно.
const elements = document.querySelectorAll('.interactive');
axe.run(elements).then(results => {
console.log(results.violations);
});
Такой подход удобен для тестирования повторяющихся компонентов интерфейса, например карточек или кнопок.
context на
результатыcontext не изменяет правила
проверки, он лишь ограничивает область применения существующих
правил Axe-core.context тесно связан с другими опциями метода
axe.run:
include и exclude
Дополнительно можно уточнить, какие элементы включать или исключать из
анализа внутри выбранного контекста.
axe.run(document.body, {
include: [['#main-content']],
exclude: [['.ads-banner']]
}).then(results => console.log(results.violations));
Здесь сканируются элементы внутри #main-content, но блок
.ads-banner игнорируется.
rules Контекст не влияет на
применяемые правила, однако в сочетании с включением/исключением правил
можно гибко управлять глубиной проверки.
Асинхронная обработка context
поддерживается в промисах и коллбэках, что позволяет интегрировать
Axe-core в автоматические тесты с async/await:
const context = document.querySelector('#dashboard');
const results = await axe.run(context);
console.log(results.violations);context.document.body может быть медленной;
использование context ускоряет процесс.exclude: исключение
рекламных блоков, баннеров или сторонних виджетов уменьшает количество
ложных срабатываний.NodeList или массив DOM-элементов) позволяет
одновременно проверять все экземпляры компонента.// Проверка формы с исключением скрытых полей
const form = document.querySelector('#signup-form');
axe.run(form, {
exclude: [['input[type="hidden"]']]
}).then(results => console.log(results.violations));
// Проверка нескольких секций страницы
const sections = document.querySelectorAll('.section');
axe.run(sections).then(results => console.log(results.violations));
Параметр context является центральным инструментом
управления областью сканирования, позволяя гибко и точно настраивать
проверку доступности на страницах любого размера. Его использование
оптимизирует производительность и повышает релевантность результатов
анализа.