Функция evaluate является одним из ключевых инструментов
библиотеки Axe-core для автоматизированной проверки
доступности веб-контента. Она позволяет запускать анализ конкретного
элемента или целой страницы и получать структурированные результаты,
включающие обнаруженные ошибки, предупреждения и рекомендации по
исправлению.
Для использования evaluate необходимо подключить
библиотеку Axe-core. Наиболее часто это делается через npm:
import axe from 'axe-core';
Для работы в браузере возможна загрузка через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.9.7/axe.min.js"></script>
После загрузки библиотеки становится доступна глобальная функция
axe.run, которая является основной для анализа, но
evaluate используется внутри для обработки и фильтрации
результатов.
evaluateФункция evaluate применяется к объекту, описывающему
контекст проверки:
axe.evaluate(options, callback);
Параметры:
options — объект с настройками проверки. Может
содержать:
element — DOM-элемент, для которого проводится анализ.
Если не указан, анализируется весь документ.runOnly — массив правил или категорий правил для
ограничения проверки.includedImpacts — список уровней влияния (critical,
serious, moderate, minor), которые будут включены в результат.callback — функция обратного вызова, которая
получает результаты проверки после завершения анализа.
Пример базового вызова:
axe.evaluate({ element: document.body }, function(results) {
console.log(results.violations);
});
Результат, возвращаемый функцией evaluate, представляет
собой объект с несколькими ключевыми полями:
violations — массив объектов с выявленными
нарушениями. Каждый объект содержит:
id — уникальный идентификатор правила.impact — уровень воздействия.description — текстовое описание проблемы.help — краткая рекомендация.nodes — массив элементов DOM, на которых обнаружена
проблема, с подробной информацией о селекторах и HTML-контексте.passes — массив объектов правил, успешно пройденных
на странице.
incomplete — правила, которые не удалось полностью
проверить.
inapplicable — правила, которые не применимы к
текущему контенту.
Пример обработки результата:
axe.evaluate({ element: document.body }, function(results) {
results.violations.forEach(violation => {
console.log(`Ошибка: ${violation.description} (уровень: ${violation.impact})`);
violation.nodes.forEach(node => {
console.log(`Элемент: ${node.target}`);
});
});
});
Функция evaluate поддерживает гибкую фильтрацию по
правилам и уровням важности. Это позволяет сосредоточиться на наиболее
критичных проблемах:
const options = {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
},
includedImpacts: ['critical', 'serious']
};
axe.evaluate(options, function(results) {
console.log(results.violations.length + ' критических и серьёзных нарушений обнаружено.');
});
runOnly с type: 'tag' позволяет запускать
проверку только для выбранных стандартов WCAG.includedImpacts ограничивает результат только
указанными уровнями влияния.Для интеграции с современными приложениями удобен промис-ориентированный вариант:
async function checkAccessibility() {
const results = await axe.run(document.body);
results.violations.forEach(v => console.log(v.description));
}
Хотя axe.run используется чаще, evaluate
лежит в основе обработки данных и обеспечивает расширенные возможности
фильтрации, особенно при создании собственных инструментов
отчётности.
evaluate часто используется совместно с Jest, Mocha или
Cypress для автоматизации тестирования доступности:
import axe from 'axe-core';
import { mount } from '@cypress/react';
it('проверяет доступность компонента', () => {
mount(<MyComponent />);
cy.document().then(doc => {
axe.evaluate({ element: doc.body }, (results) => {
expect(results.violations).to.have.length(0);
});
});
});
Это позволяет интегрировать анализ доступности в CI/CD и выявлять ошибки до публикации продукта.
element снижает
время анализа больших страниц.runOnly и
includedImpacts помогает сосредоточиться на критических
проблемах.evaluate после рендеринга элементов, чтобы результаты
отражали актуальное состояние DOM.Функция evaluate является фундаментальной для построения
расширенных систем анализа доступности. Она обеспечивает детальную
диагностику, позволяет фильтровать и структурировать результаты, а также
легко интегрируется в тестовые сценарии и автоматические проверки.