Lighthouse — это инструмент для анализа производительности веб-страниц, качества кода и доступности контента. В контексте доступности (accessibility) он выполняет аудит страницы, выявляет проблемы, которые мешают пользователям с ограниченными возможностями использовать сайт, и предоставляет рекомендации по исправлению.
Семантическая структура документа Проверка
правильного использования заголовков
(<h1>–<h6>), списков
(<ul>, <ol>) и других структурных
элементов. Семантика HTML помогает вспомогательным технологиям, таким
как экранные читалки, корректно интерпретировать содержание
страницы.
Контрастность текста Lighthouse оценивает соотношение контраста текста и фона. Недостаточный контраст затрудняет чтение для людей с нарушениями зрения. Стандарт WCAG требует минимального соотношения 4.5:1 для текста обычного размера и 3:1 для крупного текста.
Атрибуты альтернативного текста для изображений
Все элементы <img> должны иметь атрибут
alt, описывающий смысл изображения. Lighthouse проверяет
наличие и корректность этих атрибутов.
Фокус и навигация с клавиатуры Проверяется
возможность перемещения по интерактивным элементам (ссылки, кнопки,
формы) с помощью клавиатуры. Элементы должны быть доступны через
tab и иметь видимый индикатор фокуса.
ARIA-атрибуты и роли Lighthouse проверяет
корректность использования ARIA (role,
aria-label, aria-hidden). Неправильное
использование ARIA может ухудшить доступность вместо её
улучшения.
Для запуска аудитов доступности программно используется модуль
lighthouse:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
const options = { port: chrome.port, onlyCategories: ['accessibility'] };
const url = 'https://example.com';
const runnerResult = await lighthouse(url, options);
const report = runnerResult.lhr;
console.log('Accessibility score:', report.categories.accessibility.score * 100);
report.audits.forEach(audit => {
if (audit.score !== 1) {
console.log(`${audit.id}: ${audit.title} — ${audit.description}`);
}
});
await chrome.kill();
})();
Пояснения к коду:
chromeLauncher.launch запускает экземпляр Chrome в
режиме headless.onlyCategories: ['accessibility'] ограничивает аудит
только проверкой доступности.runnerResult.lhr.categories.accessibility.score
возвращает процентное значение общего уровня доступности страницы.audits содержит детализированные рекомендации и ошибки,
которые нужно исправить.ARIA Attributes Проверка правильности ARIA-атрибутов, включая уникальность идентификаторов и соответствие ожидаемым ролям.
Buttons and Links Проверка интерактивных элементов на наличие текста или label, который информирует пользователя о действии.
Color Contrast Выявление текста и элементов интерфейса с недостаточным контрастом для пользователей с нарушениями зрения.
Form Elements Проверка корректного использования
<label> для полей форм. Поля без явного или скрытого
текста могут быть недоступны для экранных читалок.
Images Контроль наличия alt текста
и корректного использования декоративных изображений
(alt="").
Document Structure Проверка правильного
использования заголовков, семантических тегов
(<main>, <nav>,
<header>) и логического порядка контента.
Ошибка: Кнопка без текста
(<button></button>).
Исправление:
<button aria-label="Закрыть окно">×</button>
Ошибка: Низкий контраст текста. Исправление:
.button {
color: #ffffff; /* текст */
background-color: #007acc; /* фон */
}
Эти изменения повышают оценку доступности в Lighthouse и улучшают опыт пользователей с ограничениями.
Если требуется, можно также подключать lighthouse-plugin-accessibility для расширенных проверок специфических сценариев и кастомизации аудита под конкретный проект.