Параметр runOnly

В библиотеке Axe-core параметр runOnly отвечает за выбор конкретных правил и проверок, которые будут выполняться при анализе страницы на доступность. Он позволяет ограничить набор правил, оптимизируя время сканирования и концентрируясь на нужных аспектах доступности.

Формат и структура параметра

runOnly может принимать два типа значений:

  1. Массив идентификаторов правил Позволяет указать конкретные правила, которые нужно запустить. Пример:
const options = {
  runOnly: {
    type: 'rule',
    values: ['color-contrast', 'image-alt']
  }
};

В этом примере будут выполнены только проверки на контрастность текста (color-contrast) и наличие альтернативного текста у изображений (image-alt).

  1. Массовое выполнение категорий Вместо отдельных правил можно указать категории проверок, такие как wcag2a, wcag2aa или best-practice:
const options = {
  runOnly: {
    type: 'tag',
    values: ['wcag2aa', 'section508']
  }
};

Здесь сканирование будет запускать все правила, помеченные соответствующими тегами, что удобно для соответствия стандартам WCAG или Section 508.

Особенности использования

  • Комбинирование правил и тегов Нельзя одновременно использовать type: 'rule' и type: 'tag' в одном объекте runOnly. Для комплексного анализа необходимо создавать несколько запусков с разными настройками.

  • Приоритет runOnly над другими настройками Если указаны конкретные правила или категории через runOnly, то другие настройки, такие как exclude или includedImpacts, применяются только к выбранным правилам.

  • Влияние на производительность Ограничение анализа конкретными правилами позволяет существенно сократить время сканирования страниц с большим количеством элементов. Особенно это важно при автоматическом тестировании в CI/CD или при анализе страниц с динамическим контентом.

Примеры практического применения

  1. Запуск только проверок контрастности текста:
const axe = require('axe-core');

axe.run(document, {
  runOnly: {
    type: 'rule',
    values: ['color-contrast']
  }
}).then(results => {
  console.log(results.violations);
});
  1. Проверка всех правил уровня AA WCAG 2.1:
axe.run(document, {
  runOnly: {
    type: 'tag',
    values: ['wcag2aa']
  }
}).then(results => {
  console.log(results.violations);
});
  1. Использование с Puppeteer для автоматического тестирования:
const puppeteer = require('puppeteer');
const axeCore = require('axe-core');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  const results = await page.evaluate(async () => {
    return await axe.run({
      runOnly: {
        type: 'tag',
        values: ['best-practice']
      }
    });
  });

  console.log(results.violations);
  await browser.close();
})();

Рекомендации при работе с runOnly

  • Использовать runOnly для оптимизации сканирования страниц с большим количеством элементов и сложной разметкой.
  • При тестировании на соответствие стандартам WCAG лучше использовать type: 'tag' с нужными уровнями (wcag2a, wcag2aa), чтобы не пропустить критические ошибки.
  • Для быстрых проверок отдельных аспектов доступности, таких как альтернативные тексты изображений или контраст, применять type: 'rule' с конкретными идентификаторами правил.
  • Проверять результаты на малых страницах сначала, чтобы убедиться, что выбранные правила работают корректно, прежде чем запускать массовое сканирование больших проектов.

runOnly является мощным инструментом настройки анализов в Axe-core. Гибкое использование этого параметра позволяет настраивать баланс между полнотой проверки и скоростью сканирования, обеспечивая точные и управляемые результаты.