Lighthouse предоставляет мощные инструменты для контроля качества веб-приложений. Два ключевых аспекта, которые позволяют держать производительность, доступность и SEO под строгим контролем, — это assertions и budgets. Они помогают формализовать требования к метрикам и ресурсам, а также интегрировать проверку в CI/CD.
Assertions в Lighthouse — это механизм проверки соответствия определённых метрик заданным условиям. Они позволяют не просто измерять показатели, но и гарантировать, что они находятся в допустимых пределах. Основные метрики, которые можно проверять через assertions, включают:
alt, проблемы с фокусом.Assertions задаются в JSON-конфигурации Lighthouse и могут быть включены в процесс запуска через CLI или программно через Node.js. Структура assertion проста: указывается метрика и условие проверки, например:
{
"assertions": {
"first-contentful-paint": ["warn", "<2000"],
"largest-contentful-paint": ["error", "<2500"],
"total-blocking-time": ["error", "<300"]
}
}
Особенности работы assertions:
warn — предупреждение, не блокирует CI/CD.error — нарушение условий считается критическим и может
прерывать сборку или деплой.<,
<=, >, >=), что
позволяет гибко настроить требования под проект.Assertions можно использовать в сочетании с custom audits, расширяя стандартный набор проверок Lighthouse под специфические требования проекта.
Budgets — это механизм ограничения ресурсов веб-страницы и контроля их использования. Они позволяют задавать лимиты на размеры файлов и количество запросов, чтобы приложение не стало “тяжелым” и медленным.
Основные типы бюджетов:
Network request budgets Ограничивают количество сетевых запросов по категориям:
Пример ограничения числа запросов:
{
"resourceCounts": {
"script": 20,
"image": 50
}
}Resource size budgets Ограничивают размер загружаемых ресурсов в килобайтах:
{
"resourceSizes": {
"script": 500,
"image": 2000
}
}Total page budget Задаёт общий лимит на суммарный вес страницы, что позволяет контролировать скорость загрузки.
Особенности работы budgets:
Совмещение assertions и budgets даёт комплексный контроль над качеством страницы:
Пример конфигурации с объединением:
{
"assertions": {
"largest-contentful-paint": ["error", "<2500"],
"total-blocking-time": ["warn", "<300"]
},
"budgets": [
{
"path": "/",
"resourceSizes": {
"script": 500,
"image": 2000
},
"resourceCounts": {
"script": 20,
"image": 50
}
}
]
}
Такой подход позволяет сразу выявлять узкие места, связанные как с метриками производительности, так и с размером и количеством ресурсов, предотвращая их накопление в процессе разработки.
warn и error) позволяет поддерживать баланс
между строгим контролем и гибкостью в разработке.Механизмы assertions и budgets превращают Lighthouse из инструмента отчётов в инструмент контроля качества, интегрируемый в процесс разработки, который помогает держать производительность и ресурсные ограничения под строгим контролем.