const lighthouse = require('lighthouse'); const chromeLauncher = require('chrome-launcher'); const fs = require('fs'); const path = require('path'); async function runLighthouse(url, options = {}) { const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] }); options.port = chrome.port; const runnerResult = await lighthouse(url, options); await chrome.kill(); return runnerResult; } function generateReport(result, outputPath) { const reportHtml = result.report; fs.writeFileSync(outputPath, reportHtml); return outputPath; } function extractMetrics(result) { const categories = result.reportCategories; return { performance: categories.performance?.score * 100 || 0, accessibility: categories.accessibility?.score * 100 || 0, bestPractices: categories['best-practices']?.score * 100 || 0, seo: categories.seo?.score * 100 || 0, pwa: categories.pwa?.score * 100 || 0 }; } module.exports = { runLighthouse, generateReport, extractMetrics };