Webhook в контексте Lighthouse — это механизм автоматической отправки уведомлений о результатах аудита веб-страницы на указанный URL. Это позволяет интегрировать Lighthouse с внешними системами мониторинга, CI/CD пайплайнами или собственными инструментами анализа производительности.
Webhook уведомления работают по принципу HTTP POST-запроса, который Lighthouse отправляет после завершения аудита. Запрос содержит JSON-объект с полными данными аудита, включая показатели производительности, доступность, SEO и рекомендации по улучшению.
Ключевые моменты:
url, fetchTime), результаты
категорий (performance, accessibility,
best-practices, seo, pwa) и
отдельные аудиторские записи.Для использования Webhook необходимо задать URL, на который будут
отправляться уведомления. В Lighthouse это настраивается через объект
конфигурации lighthouse.Config или параметры CLI.
Пример конфигурации через CLI:
lighthouse https://example.com --output=json --output-path=report.json --webhook-url=https://example.com/webhook
Через Node.js API:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
async function runLighthouse(url, webhookUrl) {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {
port: chrome.port,
output: 'json',
webhook: {
url: webhookUrl,
headers: {
'X-Auth-Token': 'секретный_токен'
}
}
};
const runnerResult = await lighthouse(url, options);
await chrome.kill();
}
webhook.url — конечная точка для POST-запроса.webhook.headers — дополнительные HTTP-заголовки,
например для аутентификации.Серверная часть Webhook должна уметь:
Content-Type: application/json.Пример на Node.js с использованием Express:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.post('/webhook', (req, res) => {
const data = req.body;
const url = data.url;
const performanceScore = data.categories.performance.score;
console.log(`Аудит страницы ${url}: производительность ${performanceScore}`);
// Дальнейшая обработка, сохранение в базу данных или отправка уведомлений
res.status(200).send('OK');
});
app.listen(3000, () => console.log('Webhook сервер запущен на порту 3000'));
Webhook уведомления содержат несколько ключевых блоков:
fetchTime — время проведения аудита.
url — адрес проверяемой страницы.
categories — объект с ключевыми метриками:
performance — показатели производительности, включая
First Contentful Paint, Speed Index и Total Blocking Time.accessibility — оценка доступности элементов
страницы.best-practices — соблюдение современных
веб-стандартов.seo — базовые SEO-рекомендации.pwa — соответствие критериям Progressive Web App.audits — детализированные результаты отдельных
проверок с описаниями и рекомендациями.
Пример фрагмента JSON:
{
"url": "https://example.com",
"fetchTime": "2026-03-24T12:00:00.000Z",
"categories": {
"performance": {"score": 0.92},
"accessibility": {"score": 0.87},
"seo": {"score": 0.95}
},
"audits": {
"first-contentful-paint": {"score": 0.9, "displayValue": "1.2 s"},
"interactive": {"score": 0.85, "displayValue": "2.5 s"}
}
}
Webhook уведомления позволяют интегрировать Lighthouse в процессы автоматизированного тестирования:
Преимущество такого подхода — полная автоматизация мониторинга без необходимости вручную запускать Lighthouse.