Lighthouse

Что это такое

Lighthouse — это автоматический аудит: он загружает страницу в контролируемой среде, измеряет набор показателей, проверяет набор правил и выдаёт отчёт с оценками и списком возможностей улучшения. Аудит встроен в инструменты разработчика браузера, а запускается и из командной строки — именно это и делает его полезным в конвейере.

Почему это важно

Быстрее всего именно так получают структурированное и повторяемое мнение о странице. Пять категорий — performance, accessibility, best practices, SEO и, в браузере, PWA — пробегают меньше чем за минуту, а к каждому проваленному пункту приложены элемент, которого он касается, и описание исправления. При хорошем использовании смутное ощущение, что страница медленная или недоступная, превращается в нумерованный список. При плохом — в оценку, за которой гоняются, однако число остаётся лабораторным резюме, снятым в смоделированных условиях: страница может получить хорошую оценку и всё равно быть медленной для большинства своих пользователей.

Ключевые идеи

Это лабораторный тест на смоделированном устройстве

Аудит выполняется один раз, с замедленными процессором и сетью, на пустом кэше. Запуски от этого сравнимы между собой и с медленным устройством, и вместе с тем одиночный запуск становится шумным: разницу в несколько пунктов считайте шумом и берите медиану из нескольких запусков.

Читайте возможности улучшения раньше оценки

Оценка — взвешенное резюме, а полезная часть — список под ней. Каждая возможность улучшения сообщает оценённую экономию и конкретные ресурсы, за неё ответственные: какое изображение слишком велико, какой скрипт заблокировал первую отрисовку, какой срок жизни кэша слишком мал.

Reduce unused JavaScript         est. 210 KiB
Properly size images             est. 480 KiB   ← самый крупный, делайте первым
Eliminate render-blocking CSS    est. 120 ms

Исправление самого крупного пункта двигает оценку. Объяснение же и есть настоящий результат.

Категории находят разные вещи

Проверки accessibility ловят конкретные механические отказы: отсутствующее доступное имя, недостаточный контраст, поле формы без метки, порядок заголовков с пропущенным уровнем. Запутанный сценарий или непригодный диалог они не поймают, зато дешёвые ошибки поймают раньше пользователя. Проверки SEO ловят пропавшие метаданные и страницы, которые нельзя проиндексировать.

Он не видит ваших пользователей

Ничто в отчёте не приходит из настоящего визита. Страница с плохими полевыми данными может получить высокую оценку, если симуляция окажется доброй, а страница с отличными полевыми данными — низкую из-за одного медленного стороннего скрипта в лабораторном профиле. Оценка — дымовой тест, а правда — полевые показатели.

Запускайте его в конвейере против бюджета

Числа перестают сползать обратно только тогда, когда аудит идёт на каждой сборке и падает при выходе за порог — минимальная оценка accessibility, максимальный переданный объём. Бюджет, который требует сборка, — решение, а отчёт, который никто не открывает, — документ.

Не гонитесь за идеальной оценкой

Сотня — не цель, а её достижение часто означает удаление того, что помогает пользователям. Задайте нижнюю границу под вашу аудиторию, исправьте важные возможности улучшения и остановитесь, когда полевые данные хороши.

Практика

Проведите один аудит и займитесь самым крупным пунктом

Проведите аудит страницы, прочитайте возможности улучшения по порядку оценённой экономии и исправьте только самый крупный пункт. Запустите аудит снова.

Готово, когда: самая крупная возможность исчезла из отчёта, а затронутый ею показатель улучшился.

Добавьте порог доступности в сборку

Настройте аудит так, чтобы он выполнялся на одной показательной странице и падал, если оценка accessibility опустится ниже согласованного порога.

Готово, когда: сборка падает на странице с внесённым дефектом доступности и снова проходит, как только он исправлен.

Частые ошибки

  • Погоня за оценкой — усилия уходят в последние пункты, пока настоящая проблема остаётся; исправить: проходите возможности улучшения по оценённой экономии.
  • Отношение к одному запуску как к измерению — разница в несколько пунктов укладывается в шум и тянет за собой бессмысленную работу; исправить: повторяйте аудит и сравнивайте медианы.
  • Игнорирование полевых показателей — лабораторный результат не равен опыту пользователя; исправить: сверяйтесь с данными реальных пользователей рядом с отчётом.
  • Запуск аудита только локально перед релизом — регрессии приходят вместе с очередным коммитом; исправить: запускайте его в конвейере против бюджета.
  • Исправление предупреждения доступности без его понимания — проверка проходит, а интерфейс всё ещё непригоден; исправить: читайте, чего требует правило, а не только куда оно указывает.

Что читать дальше

  • Инструменты разработчика в браузере (02-frontend/27-browser-devtools) — панель аудита стоит рядом с инструментами, которые объясняют его находки.
  • Веб-производительность (Core Web Vitals) (02-frontend/26-web-performance-core-web-vitals) — показатели, из которых построена оценка производительности.
  • SEO (02-frontend/08-seo) — категория SEO в аудите — подмножество технической работы.