Жизненный цикл аудита в Lighthouse начинается с подготовки окружения и конфигурации. На этом этапе формируется объект настроек, определяющий стратегию анализа:
Ключевым элементом является конфигурационный объект
(Lighthouse config), который управляет всей дальнейшей
цепочкой выполнения. Внутри него определяются:
Перед запуском также инициализируется соединение с браузером через
Chrome DevTools Protocol (CDP). Обычно используется экземпляр Chromium,
запущенный с флагом --remote-debugging-port.
Основная задача этапа — получение сырых данных о поведении страницы. Lighthouse выполняет серию проходов (passes), каждый из которых может включать:
Каждый проход описывается в конфигурации и может иметь собственные настройки.
1. Trace (трассировка выполнения) Фиксирует события рендеринга, загрузки ресурсов, выполнение скриптов. Используется для анализа производительности.
2. DevTools Log (network log) Содержит информацию о сетевых запросах: тайминги, размеры, статус.
3. DOM snapshot Состояние DOM-дерева на момент завершения загрузки.
4. Artifacts (артефакты) Промежуточные структуры данных, создаваемые gatherers.
Gatherers — специальные модули, отвечающие за сбор конкретных типов данных. Каждый gatherer реализует интерфейс с методами жизненного цикла:
beforePass — выполняется перед началом проходаpass — основной этап (часто используется редко)afterPass — выполняется после завершенияПримеры gatherers:
Результат работы gatherer — артефакт, который сохраняется в объекте
artifacts.
После завершения всех проходов начинается этап трансформации данных. На этом этапе:
Артефакты становятся входными данными для аудитов.
Аудиты — это изолированные проверки, каждая из которых анализирует артефакты и возвращает результат.
Каждый аудит реализует метод:
static audit(artifacts, context)
score — значение от 0 до 1displayValue — человекочитаемый результатdetails — дополнительные данныеnumericValue — числовая метрика1. Performance audits Основаны на trace и network данных. Примеры:
2. Accessibility audits Проверяют соответствие стандартам доступности (ARIA, контрастность).
3. Best Practices Анализируют безопасность и современные стандарты разработки.
4. SEO audits Проверяют мета-теги, индексацию, мобильную адаптацию.
После выполнения всех аудитов начинается агрегирование результатов. Каждая категория имеет:
Итоговый score категории вычисляется как взвешенная сумма:
score = Σ (audit_score × weight) / Σ weights
Для Performance используется более сложная модель, основанная на логарифмических кривых распределения (scoring curves).
На основе результатов аудитов формируется финальный отчёт. Lighthouse поддерживает несколько форматов:
HTML-отчёт дополнительно включает визуализацию:
HTML-отчёт генерируется с помощью шаблонов и включает:
Отчёт можно встроить в CI/CD или использовать как standalone документ.
После генерации отчёта происходит очистка:
Если Lighthouse запускается программно, возвращается объект
результата (LHR), который может быть использован для:
Lighthouse предоставляет возможности для вмешательства в жизненный цикл:
1. Кастомные gatherers Добавление собственных источников данных.
2. Кастомные audits Создание специфичных проверок.
3. Переопределение конфигурации Изменение passes, throttling, категорий.
4. Плагины Расширение функциональности через plugin API.
Жизненный цикл может отличаться в зависимости от режима:
Navigation mode Полный цикл: загрузка страницы + сбор всех метрик.
Snapshot mode Анализ уже загруженной страницы без навигации.
Timespan mode Сбор данных в течение пользовательского сценария (например, взаимодействие).
Каждый режим влияет на:
Общий pipeline Lighthouse выглядит следующим образом:
На всех этапах жизненного цикла Lighthouse активно использует CDP:
Это позволяет Lighthouse работать на низком уровне и получать точные данные о поведении страницы.
Жизненный цикл построен на асинхронной модели:
Это обеспечивает:
На каждом этапе предусмотрена система обработки ошибок:
Ошибки не прерывают весь процесс — Lighthouse старается вернуть максимально полный отчёт даже при частичных сбоях.
Для ускорения повторных запусков могут использоваться:
Однако для точности результатов чаще используется чистая среда без кэша.
Каждое изменение конфигурации напрямую влияет на pipeline:
Таким образом, жизненный цикл Lighthouse — это гибкая, модульная система, в которой каждый этап тесно связан с конфигурацией и влияет на конечный результат анализа.