Библиотека Axe-core является мощным инструментом для
проверки доступности веб-приложений и компонентов. Один из ключевых
параметров при конфигурации правил Axe — это ancestry. Он
определяет контекст элемента в дереве DOM, который учитывается при
выполнении правил.
Параметр ancestry используется для указания набора
предков элемента, которые должны быть проверены или проигнорированы при
анализе доступности. В терминах Axe-core это массив объектов, каждый из
которых описывает условия фильтрации на уровне родительских
элементов:
{
ancestry: [
{
element: 'div',
attributes: { role: 'banner' },
selector: '.main-header'
},
{
element: 'section',
attributes: { 'aria-hidden': 'true' }
}
]
}
Каждый объект внутри массива может содержать следующие свойства:
element — тег HTML родителя, на
который накладываются условия проверки.attributes — объект с парой
ключ-значение для фильтрации по атрибутам.selector — CSS-селектор для более
точного определения элемента в дереве DOM.Использование ancestry позволяет задавать контекст, при
котором правило Axe будет срабатывать или игнорироваться. Это особенно
важно для сложных интерфейсов с повторяющимися компонентами или
динамическим контентом.
Если требуется исключить из проверки элементы внутри контейнеров с
aria-hidden="true":
const config = {
rules: {
'color-contrast': {
enabled: true,
ancestry: [
{ attributes: { 'aria-hidden': 'true' } }
]
}
}
};
axe.run(document, config).then(results => {
console.log(results.violations);
});
В этом примере правило color-contrast не будет
применяться к элементам, находящимся внутри скрытых блоков.
const config = {
rules: {
'label': {
enabled: true,
ancestry: [
{ selector: '.form-group' }
]
}
}
};
Правило label проверяет только элементы внутри блоков с
классом .form-group, что исключает ложные срабатывания в
других частях страницы.
Можно одновременно использовать element,
attributes и selector для точного определения
контекста:
ancestry: [
{
element: 'nav',
attributes: { role: 'navigation' },
selector: '#main-nav'
}
]
Такое определение гарантирует, что правило будет проверять элементы только внутри основного навигационного меню, игнорируя второстепенные блоки.
Параметр ancestry изменяет дерево обхода DOM для
конкретного правила:
ancestry проверяются все подходящие элементы на
странице.ancestry проверка ограничивается элементами, которые
находятся в указанном контексте предков.ancestry приводит к пропуску
элемента при проверке правила.Это позволяет избегать ложных срабатываний и уменьшать количество нерелевантных ошибок доступности.
ancestry важен: Axe
проверяет соответствие условий последовательно.selector может использовать сложные CSS-селекторы,
включая псевдоклассы и комбинированные селекторы, что повышает гибкость
фильтрации.ancestry не влияет на глобальные
настройки Axe и применяется только к конкретному правилу.ancestry критичен при тестировании приложений с
компонентной архитектурой, SPA или динамическими интерфейсами. Он
позволяет:
Применение ancestry обеспечивает более точные и
управляемые результаты автоматической проверки доступности.