Lighthouse в среде Node.js может быть установлен как отдельный пакет. Для этого используется стандартный пакетный менеджер npm:
npm install -g lighthouse
После установки появляется возможность вызывать Lighthouse как CLI или использовать его программно через API. Для создания собственного аудита предпочтителен программный подход, поскольку он позволяет интегрировать анализ прямо в тестовую среду или CI/CD pipeline.
Lighthouse использует три ключевых компонента для выполнения аудита:
При создании собственного аудита требуется определить новый audit, зарегистрировать его в конфигурации и указать категории, в которые он будет включен.
Собственный аудит представляет собой класс, наследующийся от
Audit. Основные обязательные поля:
meta – объект с информацией о аудите: идентификатор
(id), заголовок (title), описание
(description), категория, требуемая версия Lighthouse.defaultOptions – параметры по умолчанию, такие как
пороговые значения для оценки.audit() – основной метод, выполняющий проверку и
возвращающий результат.Пример минимальной структуры:
const Audit = require('lighthouse').Audit;
class MyCustomAudit extends Audit {
static get meta() {
return {
id: 'my-custom-audit',
title: 'Проверка на наличие метатега description',
description: 'Аудит проверяет, что на странице присутствует метатег description',
requiredArtifacts: ['DOM']
};
}
static async audit(artifacts) {
const dom = artifacts.DOM;
const descriptionTag = dom.querySelector('meta[name="description"]');
const score = descriptionTag ? 1 : 0;
return {
score,
details: {
type: 'text',
items: [descriptionTag ? 'Мета-тег найден' : 'Мета-тег отсутствует']
}
};
}
}
module.exports = MyCustomAudit;
Конфигурация указывает, какие категории и аудиты включены в запуск. Для подключения собственного аудита нужно создать объект конфигурации:
const lighthouse = require('lighthouse');
const MyCustomAudit = require('./my-custom-audit');
const customConfig = {
extends: 'lighthouse:default',
audits: [
MyCustomAudit
],
categories: {
'seo': {
title: 'SEO',
description: 'SEO-аудиты',
auditRefs: [
{ id: 'my-custom-audit', weight: 1 }
]
}
}
};
Для запуска аудита используется функция lighthouse() с
передачей URL, опций и конфигурации:
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = { port: chrome.port };
const runnerResult = await lighthouse('https://example.com', options, customConfig);
console.log('Результат аудита:', runnerResult.lhr.categories.seo);
await chrome.kill();
})();
Lighthouse собирает данные о странице в виде артефактов. Для
собственного аудита необходимо указать, какие артефакты нужны
(requiredArtifacts), и использовать их в методе
audit(). Примеры артефактов:
DOM – структура страницы.URL – текущий URL.MetaElements – массив всех метатегов.Scripts – список всех загруженных скриптов.Артефакты можно комбинировать для более сложных проверок, например,
проверка загрузки изображений с атрибутом alt и
соответствие требованиям SEO.
Метод audit() возвращает объект с обязательным полем
score (от 0 до 1) и полем details. Детали
могут быть следующих типов:
text – текстовое описание результата.table – таблица с несколькими строками и
колонками.list – список элементов.Дополнительно можно возвращать numericValue для
количественных проверок и displayValue для отображаемого
значения в отчете.
Собственные аудиты удобно интегрировать в CI/CD, например, через запуск скрипта Node.js в GitHub Actions или GitLab CI. Результаты можно выводить в консоль или сохранять в JSON для последующего анализа. Для автоматизации можно настроить threshold-проверки:
if (runnerResult.lhr.categories.seo.score < 1) {
throw new Error('SEO-аудит не пройден');
}
meta.requiredLighthouseVersion.