Настройка автоматического тестирования доступности через WAVE

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка автоматического тестирования доступности через WAVE
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Тестирование доступности с WAVE

WAVE (Web Accessibility Evaluation Tool) от WebAIM — визуальный инструмент для проверки доступности. Накладывает иконки прямо на страницу, показывая где находятся ошибки. Используется через браузерное расширение, веб-интерфейс на wave.webaim.org или REST API для автоматизации.

WAVE API для автоматизации

# Базовый запрос
curl "https://wave.webaim.org/api/request?key=YOUR_KEY&url=https://example.com&reporttype=4&format=json"
// scripts/wave-audit.js
const axios = require('axios');
const fs    = require('fs');

const WAVE_API_KEY = process.env.WAVE_API_KEY;
const BASE_URL     = 'https://wave.webaim.org/api/request';

async function auditPage(url) {
  const response = await axios.get(BASE_URL, {
    params: {
      key:        WAVE_API_KEY,
      url:        url,
      reporttype: 4,  // 1=summary, 2=summary+items, 3=+structure, 4=+screenshots
      format:     'json',
    },
  });

  return response.data;
}

async function auditSite(urls) {
  const results = [];

  for (const url of urls) {
    console.log(`WAVE: ${url}`);
    const data = await auditPage(url);

    results.push({
      url,
      errors:          data.categories.error.count,
      alerts:          data.categories.alert.count,
      features:        data.categories.feature.count,
      structure:       data.categories.structure.count,
      aria:            data.categories.aria.count,
      contrast_errors: data.categories.contrast.count,
      // Детали по каждому типу
      error_items:     Object.values(data.categories.error.items || {}),
    });

    // WAVE API: 500 запросов/месяц на бесплатном, делаем паузу
    await new Promise(r => setTimeout(r, 1000));
  }

  // Генерируем HTML-отчёт
  generateHtmlReport(results);
  return results;
}

function generateHtmlReport(results) {
  const total_errors = results.reduce((s, r) => s + r.errors, 0);

  const html = `
<!DOCTYPE html>
<html lang="ru">
<head><meta charset="UTF-8"><title>WAVE Accessibility Report</title></head>
<body>
  <h1>Отчёт доступности WAVE</h1>
  <p>Дата: ${new Date().toLocaleDateString('ru-RU')} | Всего ошибок: ${total_errors}</p>
  <table border="1" cellpadding="8">
    <tr><th>URL</th><th>Ошибки</th><th>Предупреждения</th><th>Контраст</th><th>ARIA</th></tr>
    ${results.map(r => `
      <tr style="background: ${r.errors > 0 ? '#fee2e2' : '#f0fdf4'}">
        <td>${r.url}</td>
        <td><b>${r.errors}</b></td>
        <td>${r.alerts}</td>
        <td>${r.contrast_errors}</td>
        <td>${r.aria}</td>
      </tr>
    `).join('')}
  </table>
</body>
</html>`;

  fs.writeFileSync('wave-report.html', html);
}

Типы проблем в отчётах WAVE

Категория Иконка Описание
Errors Красный круг Нарушения WCAG, блокируют доступ
Alerts Жёлтый треугольник Потенциальные проблемы для проверки
Features Зелёный круг Позитивные элементы доступности
Structural Elements Синие иконки Заголовки, landmarks, списки
ARIA Фиолетовые ARIA role/label/описания
Contrast Errors Оранжевые Недостаточный цветовой контраст

Браузерное расширение

WAVE Extension для Chrome/Firefox не требует API-ключа и хорошо подходит для ручной проверки страниц с авторизацией — расширение работает в текущей сессии браузера с куками пользователя.

// Нельзя автоматизировать расширение напрямую,
// но можно комбинировать: Pa11y/axe для CI, WAVE Extension для ручного аудита

Интеграция в workflow

# .github/workflows/accessibility.yml
- name: WAVE API Audit
  env:
    WAVE_API_KEY: ${{ secrets.WAVE_API_KEY }}
  run: |
    node scripts/wave-audit.js
    # Публикуем отчёт как artifact
- uses: actions/upload-artifact@v3
  with:
    name: wave-report
    path: wave-report.html

Сроки

Настройка WAVE API аудита с HTML-отчётом и CI-интеграцией: 1–2 рабочих дня.