Создание кастомных конфигураций

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

Структура конфигурационного файла

Конфигурация Lighthouse хранится в виде JavaScript-объекта. Основные поля объекта:

  • extends — массив или строка, указывающая на базовую конфигурацию, от которой наследуется текущая.
  • settings — объект с настройками выполнения аудита (например, эмуляция устройств, таймауты, локализация).
  • audits — список конкретных проверок, которые необходимо включить или исключить.
  • categories — определение категорий аудита и их веса.
  • groups — логическая группировка аудитов внутри категорий.

Пример минимальной кастомной конфигурации:

module.exports = {
  extends: 'lighthouse:default',
  settings: {
    emulatedFormFactor: 'desktop',
    onlyAudits: ['first-contentful-paint', 'interactive'],
  },
  categories: {
    performance: {
      title: 'Производительность',
      description: 'Метрики скорости и отзывчивости страницы',
      auditRefs: [
        {id: 'first-contentful-paint', weight: 3},
        {id: 'interactive', weight: 5}
      ]
    }
  }
};

Настройка settings

Объект settings контролирует поведение Lighthouse при запуске аудита:

  • emulatedFormFactor'mobile' или 'desktop', влияет на размеры экрана и параметры сети.
  • throttlingMethod — метод ограничения скорости сети: 'simulate' (эмуляция) или 'devtools' (реальное ограничение в DevTools).
  • onlyAudits / skipAudits — массивы с идентификаторами аудитов, которые необходимо включить или исключить.
  • locale — язык вывода отчёта, например 'ru'.
  • maxWaitForLoad — максимальное время ожидания загрузки страницы.

Пример настройки для мобильного анализа с ограничением сети и процессора:

settings: {
  emulatedFormFactor: 'mobile',
  throttling: {
    rttMs: 150,
    throughputKbps: 1638,
    cpuSlowdownMultiplier: 4
  },
  maxWaitForLoad: 45000
}

Управление аудитами

Аудиты можно включать, исключать и комбинировать:

  • onlyAudits — запуск исключительно указанных проверок.
  • skipAudits — пропуск определённых аудитов, оставляя остальные.
  • Кастомные аудит-плагины — позволяют добавлять собственные проверки, реализованные в виде модулей Node.js.

Пример использования только выбранных аудитов:

settings: {
  onlyAudits: [
    'first-meaningful-paint',
    'speed-index',
    'interactive'
  ]
}

Настройка категорий

Категории группируют аудит-результаты для удобного анализа. В конфигурации можно изменить:

  • title — название категории.
  • description — описание категории.
  • auditRefs — список аудитов с указанием веса (weight) и группы (group).

Пример кастомной категории для производительности:

categories: {
  performance: {
    title: 'Скорость загрузки',
    description: 'Основные метрики быстродействия страницы',
    auditRefs: [
      {id: 'first-contentful-paint', weight: 3},
      {id: 'speed-index', weight: 4, group: 'metrics'},
      {id: 'largest-contentful-paint', weight: 5, group: 'metrics'}
    ]
  }
}

Группировка аудитов

Группы (groups) помогают логически объединять аудиты внутри категории:

groups: {
  metrics: {
    title: 'Метрики страницы',
    description: 'Время загрузки и интерактивность'
  },
  opportunities: {
    title: 'Возможности оптимизации',
    description: 'Рекомендации для ускорения страницы'
  }
}

Использование групп позволяет настраивать отчёт более структурированно, выделяя метрики и рекомендации отдельно.

Наследование конфигураций

Поле extends упрощает создание конфигураций на основе стандартных шаблонов:

extends: 'lighthouse:default'

Можно наследовать одну или несколько конфигураций и переопределять только необходимые поля:

extends: ['lighthouse:default', 'lighthouse:perf']

При наследовании новые определения категорий, аудитов или настроек заменяют или дополняют базовые.

Интеграция кастомной конфигурации

Для запуска Lighthouse с кастомной конфигурацией используется Node.js API:

const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
const config = require('./my-lighthouse-config.js');

(async () => {
  const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
  const options = {port: chrome.port};
  const result = await lighthouse('https://example.com', options, config);
  console.log(result.lhr.categories.performance.score);
  await chrome.kill();
})();

Использование конфигураций через API позволяет полностью контролировать параметры аудита, интегрировать Lighthouse в CI/CD и генерировать отчёты в различных форматах.

Практические рекомендации

  • Минимизировать количество аудитов, если требуется быстрое тестирование.
  • Разделять метрики и рекомендации с помощью групп для улучшения читаемости отчёта.
  • Использовать наследование стандартных конфигураций для сокращения повторного кода.
  • Тестировать кастомные аудиты отдельно, чтобы избежать ошибок в основной конфигурации.

Эта гибкость позволяет создавать адаптированные сценарии анализа страниц, ориентированные на конкретные бизнес-цели и требования к производительности.