selectors — один из ключевых параметров библиотеки
Axe-core в JavaScript, отвечающий за точное определение
элементов DOM, к которым будет применён анализ доступности. Этот
параметр позволяет ограничить область проверки, исключить лишние узлы
или сосредоточиться на конкретных частях страницы, что критично для
оптимизации тестирования крупных интерфейсов.
selectors представляет собой массив CSS-селекторов или
строк, которые передаются в конфигурацию правил Axe-core. Каждый
селектор указывает, какие элементы будут включены или
исключены из анализа.
Пример базовой структуры:
const options = {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
},
selectors: ['#main-content', '.interactive-section']
};
axe.run(document, options).then(results => {
console.log(results.violations);
});
В этом примере анализ ограничен элементами с идентификатором
main-content и классом interactive-section.
Остальные узлы DOM игнорируются.
selectors работает в паре с опциями
include и exclude, позволяя создавать
более точные фильтры:
const options = {
include: ['#header', '.form-container'],
exclude: ['.ads', '.promo-banner']
};
axe.run(document, options).then(results => {
console.log(results.violations);
});
include — массив селекторов, указывающий, какие
элементы обязательно проверять.exclude — массив селекторов, которые
игнорируются даже если они попадают под включение.Это особенно полезно при тестировании динамически загружаемых компонентов, где часть DOM может быть неважной для доступности.
Поддержка вложенных селекторов Можно использовать сложные CSS-селекторы, включая псевдоклассы, combinator’ы и атрибутные селекторы:
const options = {
include: ['#main-content .button', 'section[role="region"]']
};
Это позволяет точно определять интерактивные элементы и семантические блоки страницы.
Комбинация с правилами selectors
может применяться не только глобально, но и на уровне конкретного
правила:
const options = {
rules: {
'color-contrast': {
enabled: true,
selectors: ['.high-contrast', '.important-text']
}
}
};
В данном случае проверка контраста будет выполняться только для элементов с указанными классами.
Оптимизация производительности При работе с большими приложениями проверка всех элементов DOM может быть ресурсоёмкой. Ограничение селекторов снижает нагрузку и ускоряет получение результатов.
Поддержка динамического контента Если элементы страницы создаются динамически через JavaScript, селекторы позволяют проверять только активные или видимые блоки, избегая ошибок из-за отсутствующих узлов.
selectors для больших SPA (Single
Page Applications), чтобы исключить скрытые элементы или временные
модальные окна.include и exclude, чтобы
гарантировать, что анализ охватывает только релевантные области.axe.run().data-*), чтобы анализ оставался
стабильным при изменении классов.selectors тесно связаны с параметрами
runOnly, rules и
frameWaitTime:
runOnly задаёт фильтр по типам правил
или тегам WCAG, а selectors ограничивает область их
применения.rules позволяет включать или отключать
отдельные проверки, при этом selectors указывает элементы,
к которым они применяются.frameWaitTime важен при проверке
контента в iframe: selectors может указывать только на узлы
внутри конкретного iframe, если frameWaitTime настроен
корректно.const options = {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
},
include: ['#app', '.modal-content'],
exclude: ['.ads', '.tooltip'],
rules: {
'image-alt': { enabled: true, selectors: ['img', 'picture img'] },
'color-contrast': { enabled: true }
}
};
axe.run(document, options).then(results => {
results.violations.forEach(v => {
console.log(v.id, v.nodes.map(n => n.target));
});
});
В этом примере:
#app и
.modal-content.image-alt проверка ограничена конкретными
тегами <img>.Использование selectors позволяет добиться точного,
контролируемого и эффективного анализа доступности интерфейсов, особенно
в сложных и динамических веб-приложениях.