const fs = require('fs'); const { execSync } = require('child_process'); console.log("Running Lighthouse..."); try { execSync('npx lighthouse "https://e-tib.com/de/standorte?v=2" --chrome-flags="--headless --no-sandbox" --output json --output-path ./lh-report.json', { stdio: 'inherit' }); } catch(e) { console.log("Lighthouse run failed", e.message); } const data = JSON.parse(fs.readFileSync('./lh-report.json', 'utf8')); const score = data.categories.performance.score * 100; console.log("\n=================================="); console.log(`PERFORMANCE SCORE: ${score}`); console.log("==================================\n"); console.log("FAILING METRICS (Score < 1.0):"); Object.values(data.audits).filter(a => a.score !== null && a.score < 1).forEach(a => { console.log(`- ${a.id}: ${a.score} (${a.displayValue || 'No display value'})`); if (a.details && a.details.items && a.details.items.length > 0) { if (a.id === 'image-delivery-insight' || a.id === 'unused-javascript' || a.id === 'modern-image-formats' || a.id === 'uses-responsive-images') { console.log(" Items:"); a.details.items.forEach(item => { console.log(` URL: ${item.url || item.node?.nodeLabel || 'unknown'}`); if (item.wastedBytes) console.log(` Wasted KB: ${item.wastedBytes / 1024}`); if (item.wastedMs) console.log(` Wasted Ms: ${item.wastedMs}`); }); } } }); console.log("\nLCP BREAKDOWN:"); const lcpElement = data.audits['largest-contentful-paint-element']; if (lcpElement && lcpElement.details && lcpElement.details.items) { console.log("LCP Element:", lcpElement.details.items[0].node.snippet); }