@@ -41,56 +41,72 @@ const results = []
4141
4242for (const category of Object.keys(lighthouse?.categories ? lighthouse.categories : {})) {
4343 for (const audit of lighthouse.categories[category].auditRefs) {
44- if (
45- lighthouse.audits[audit.id].score === 1 // Only include audits that passed
46- && !['metrics', 'hidden'].includes(audit.group) // Exclude metrics and hidden audits
47- && ![
44+
45+ // Moving lighthouse to insights https://developer.chrome.com/blog/moving-lighthouse-to-insights
46+ if (category === 'performance' && ${ pastMonth } < '2025-10-01') {
47+ if (
48+ [
4849 'first-meaningful-paint',
4950 'no-document-write',
5051 'offscreen-images',
5152 'uses-passive-event-listeners',
5253 'uses-rel-preload',
5354 'third-party-facades'
54- ].includes(audit.id) // Add any specific audits to exclude here
55- ) {
55+ ].includes(audit.id)
56+ ) {
57+ continue; // Deprecated audits
58+ } else if (
59+ lighthouse.audits[audit.id].score === 1 // Only include audits that passed
60+ && !['metrics', 'hidden'].includes(audit.group) // Exclude metrics and hidden audits
61+ ) {
62+ // Map old audit IDs to new insight audit IDs
63+ const performanceAuditIdMapping = {
64+ 'layout-shifts': 'cls-culprits-insight',
65+ 'non-composited-animations': 'cls-culprits-insight',
66+ 'unsized-images': 'cls-culprits-insight',
67+ 'redirects': 'document-latency-insight',
68+ 'server-response-time': 'document-latency-insight',
69+ 'uses-text-compression': 'document-latency-insight',
70+ 'dom-size': 'dom-size-insight',
71+ 'duplicated-javascript': 'duplicated-javascript-insight',
72+ 'font-display': 'font-display-insight',
73+ 'modern-image-formats': 'image-delivery-insight',
74+ 'uses-optimized-images': 'image-delivery-insight',
75+ 'efficient-animated-content': 'image-delivery-insight',
76+ 'uses-responsive-images': 'image-delivery-insight',
77+ 'work-during-interaction': 'interaction-to-next-paint-insight',
78+ 'prioritize-lcp-image': 'lcp-discovery-insight',
79+ 'lcp-lazy-loaded': 'lcp-discovery-insight',
80+ 'largest-contentful-paint-element': 'lcp-phases-insight',
81+ 'legacy-javascript': 'legacy-javascript-insight',
82+ 'uses-http2': 'modern-http-insight',
83+ 'critical-request-chains': 'network-dependency-tree-insight',
84+ 'uses-rel-preconnect': 'network-dependency-tree-insight',
85+ 'render-blocking-resources': 'render-blocking-insight',
86+ 'third-party-summary': 'third-parties-insight',
87+ 'uses-long-cache-ttl': 'use-cache-insight',
88+ 'viewport': 'viewport-insight'
89+ };
90+
91+ // Use mapped audit ID if available, otherwise use original
92+ const mappedAuditId = performanceAuditIdMapping[audit.id] || audit.id;
93+
94+ // Push the audit with the category and mapped ID
95+ results.push({
96+ category,
97+ id: mappedAuditId
98+ });
99+ }
100+ }
56101
57- // Map old audit IDs to new insight audit IDs
58- const auditIdMapping = {
59- 'layout-shifts': 'cls-culprits-insight',
60- 'non-composited-animations': 'cls-culprits-insight',
61- 'unsized-images': 'cls-culprits-insight',
62- 'redirects': 'document-latency-insight',
63- 'server-response-time': 'document-latency-insight',
64- 'uses-text-compression': 'document-latency-insight',
65- 'dom-size': 'dom-size-insight',
66- 'duplicated-javascript': 'duplicated-javascript-insight',
67- 'font-display': 'font-display-insight',
68- 'modern-image-formats': 'image-delivery-insight',
69- 'uses-optimized-images': 'image-delivery-insight',
70- 'efficient-animated-content': 'image-delivery-insight',
71- 'uses-responsive-images': 'image-delivery-insight',
72- 'work-during-interaction': 'interaction-to-next-paint-insight',
73- 'prioritize-lcp-image': 'lcp-discovery-insight',
74- 'lcp-lazy-loaded': 'lcp-discovery-insight',
75- 'largest-contentful-paint-element': 'lcp-phases-insight',
76- 'legacy-javascript': 'legacy-javascript-insight',
77- 'uses-http2': 'modern-http-insight',
78- 'critical-request-chains': 'network-dependency-tree-insight',
79- 'uses-rel-preconnect': 'network-dependency-tree-insight',
80- 'render-blocking-resources': 'render-blocking-insight',
81- 'third-party-summary': 'third-parties-insight',
82- 'uses-long-cache-ttl': 'use-cache-insight',
83- 'viewport': 'viewport-insight'
84- };
85-
86- // Use mapped audit ID if available, otherwise use original
87- const mappedAuditId = auditIdMapping[audit.id] || audit.id;
88-
89- // Push the audit with the category and mapped ID
102+ if (
103+ lighthouse.audits[audit.id].score === 1 // Only include audits that passed
104+ && !['metrics', 'hidden'].includes(audit.group) // Exclude metrics and hidden audits
105+ ) {
90106 results.push({
91107 category,
92- id: mappedAuditId
93- })
108+ id: audit.id
109+ });
94110 }
95111 }
96112}
@@ -252,16 +268,24 @@ technologies AS (
252268lab_data AS (
253269 SELECT
254270 client,
255- page,
256271 root_page,
257- SAFE.INT64(summary.bytesTotal) AS bytesTotal,
258- SAFE.INT64(summary.bytesJS) AS bytesJS,
259- SAFE.INT64(summary.bytesImg) AS bytesImg,
260- SAFE.FLOAT64(lighthouse.categories.accessibility.score) AS accessibility,
261- SAFE.FLOAT64(lighthouse.categories['best-practices'].score) AS best_practices,
262- SAFE.FLOAT64(lighthouse.categories.performance.score) AS performance,
263- SAFE.FLOAT64(lighthouse.categories.seo.score) AS seo
272+ technology,
273+ version,
274+ AVG(SAFE.INT64(summary.bytesTotal)) AS bytesTotal,
275+ AVG(SAFE.INT64(summary.bytesJS)) AS bytesJS,
276+ AVG(SAFE.INT64(summary.bytesImg)) AS bytesImg,
277+ AVG(SAFE.FLOAT64(lighthouse.categories.accessibility.score)) AS accessibility,
278+ AVG(SAFE.FLOAT64(lighthouse.categories['best-practices'].score)) AS best_practices,
279+ AVG(SAFE.FLOAT64(lighthouse.categories.performance.score)) AS performance,
280+ AVG(SAFE.FLOAT64(lighthouse.categories.seo.score)) AS seo
264281 FROM pages
282+ INNER JOIN technologies
283+ USING (client, page)
284+ GROUP BY
285+ client,
286+ root_page,
287+ technology,
288+ version
265289),
266290
267291audits AS (
@@ -273,7 +297,7 @@ audits AS (
273297 audit_category,
274298 audit_id
275299 FROM (
276- SELECT
300+ SELECT DISTINCT
277301 client,
278302 page,
279303 root_page,
@@ -286,29 +310,6 @@ audits AS (
286310 USING (client, page)
287311),
288312
289- lab_metrics AS (
290- SELECT
291- client,
292- root_page,
293- technology,
294- version,
295- AVG(bytesTotal) AS bytesTotal,
296- AVG(bytesJS) AS bytesJS,
297- AVG(bytesImg) AS bytesImg,
298- AVG(accessibility) AS accessibility,
299- AVG(best_practices) AS best_practices,
300- AVG(performance) AS performance,
301- AVG(seo) AS seo
302- FROM lab_data
303- INNER JOIN technologies
304- USING (client, page)
305- GROUP BY
306- client,
307- root_page,
308- technology,
309- version
310- ),
311-
312313origins_summary AS (
313314 SELECT
314315 geo,
@@ -317,7 +318,7 @@ origins_summary AS (
317318 technology,
318319 version,
319320 COUNT(DISTINCT root_page) AS origins
320- FROM lab_metrics
321+ FROM lab_data
321322 INNER JOIN crux
322323 USING (client, root_page)
323324 GROUP BY
@@ -413,7 +414,7 @@ other_summary AS (
413414 SAFE_CAST(APPROX_QUANTILES(bytesImg, 1000)[OFFSET(500)] AS INT64) AS images
414415 ) AS median_page_weight_bytes
415416
416- FROM lab_metrics
417+ FROM lab_data
417418 INNER JOIN crux
418419 USING (client, root_page)
419420 GROUP BY
0 commit comments