CSV экспорт

Lighthouse — это инструмент для аудита веб-приложений и сайтов, позволяющий анализировать производительность, доступность, SEO и лучшие практики. Одним из ключевых способов обработки и хранения результатов аудита является экспорт данных в CSV, что позволяет интегрировать результаты в аналитические панели или автоматизировать отчёты.


Получение отчёта Lighthouse в JSON

Перед экспортом в CSV необходимо сгенерировать отчёт в формате JSON, так как Lighthouse напрямую не предоставляет полноценного CSV-экспорта. Пример использования через Node.js:

const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');

(async () => {
  const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
  const options = { logLevel: 'info', output: 'json', port: chrome.port };
  const url = 'https://example.com';

  const runnerResult = await lighthouse(url, options);
  
  // Получаем отчёт в формате JSON
  const reportJson = runnerResult.report;
  console.log(reportJson);

  await chrome.kill();
})();

В reportJson содержатся все метрики аудита: производительность, доступность, SEO, лучшие практики, прогрессивные веб-приложения.


Структура JSON отчёта Lighthouse

JSON-отчёт имеет иерархическую структуру:

  • categories — основные категории аудита (performance, accessibility, seo, best-practices, pwa).
  • audits — детализированные показатели в каждой категории.
  • score — числовая оценка (0–1).
  • displayValue — человекочитаемое значение метрики.
  • details — дополнительные данные (например, таблицы ресурсов, аудит изображений).

Для экспорта в CSV необходимо обрабатывать объекты из audits и categories, трансформируя их в плоскую структуру строк и столбцов.


Преобразование JSON в CSV

Для удобного экспорта можно использовать библиотеку json2csv:

const { Parser } = require('json2csv');
const fs = require('fs');

const audits = Object.values(JSON.parse(reportJson).audits);

const csvFields = ['id', 'title', 'score', 'displayValue'];
const parser = new Parser({ fields: csvFields });

const csv = parser.parse(audits);

fs.writeFileSync('lighthouse-report.csv', csv);
  • id — уникальный идентификатор аудита.
  • title — название показателя.
  • score — числовой результат.
  • displayValue — человекочитаемый результат.

Такой подход позволяет экспортировать только ключевые метрики. При необходимости можно добавить дополнительные поля из details, например, URL ресурсов или размеры изображений.


Обработка сложных деталей

Многие аудиты содержат массивы в поле details.items. Для их корректного экспорта можно делать вложенные строки или разделять элементы символом ;:

const detailedAudits = audits.map(audit => {
  let urls = '';
  if (audit.details && audit.details.items) {
    urls = audit.details.items.map(item => item.url || '').join('; ');
  }
  return {
    id: audit.id,
    title: audit.title,
    score: audit.score,
    displayValue: audit.displayValue,
    urls: urls
  };
});

const detailedCsv = parser.parse(detailedAudits);
fs.writeFileSync('lighthouse-detailed-report.csv', detailedCsv);

Это особенно полезно для аудитов ресурсов с низкой производительностью или больших изображений.


Автоматизация CSV-экспорта

Для регулярных отчётов удобно создавать скрипты, которые запускают Lighthouse, конвертируют JSON в CSV и сохраняют файлы с временной меткой:

const date = new Date().toISOString().replace(/[:.]/g, '-');
fs.writeFileSync(`lighthouse-report-${date}.csv`, detailedCsv);

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


Настройка выборки данных

Экспорт в CSV не всегда требует всех аудитов. Для выборочного экспорта можно фильтровать категории или конкретные аудиты:

const selectedAudits = audits.filter(audit => ['first-contentful-paint', 'speed-index'].includes(audit.id));

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


Интеграция с аналитикой

После экспорта CSV можно подключить данные к:

  • Google Sheets или Excel для визуализации.
  • BI-панелям для анализа трендов.
  • CI/CD процессам для автоматического мониторинга производительности после деплоя.

Структурированные CSV-данные упрощают построение графиков и автоматическое выявление проблемных страниц.