fix: correct browsertime JSON paths for LCP, FCP, TTFB, navigation timings
- LCP/TTFB/TBT: read from statistics.googleWebVitals (flat median values) - FCP: statistics.timings.paintTiming['first-contentful-paint'] - pageTimings: nested under statistics.timings.pageTimings, not at root - Remove PerceptualSpeedIndex (not present in this sitespeed version) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
21
parser.js
21
parser.js
@@ -80,26 +80,27 @@ export async function parseResults(outputFolder, _url) {
|
|||||||
console.log('[parser] browsertime statistics keys:', s ? Object.keys(s).join(', ') : 'NONE');
|
console.log('[parser] browsertime statistics keys:', s ? Object.keys(s).join(', ') : 'NONE');
|
||||||
|
|
||||||
if (s) {
|
if (s) {
|
||||||
metrics.lcp = med(safe(s, 'timings', 'largestContentfulPaint'));
|
// Core Web Vitals — use googleWebVitals aggregate (flat, direct median)
|
||||||
metrics.fcp = med(safe(s, 'paintTiming', 'first-contentful-paint'));
|
metrics.lcp = med(safe(s, 'googleWebVitals', 'largestContentfulPaint'));
|
||||||
|
metrics.fcp = med(safe(s, 'timings', 'paintTiming', 'first-contentful-paint'));
|
||||||
metrics.cls = med(safe(s, 'pageinfo', 'cumulativeLayoutShift'));
|
metrics.cls = med(safe(s, 'pageinfo', 'cumulativeLayoutShift'));
|
||||||
metrics.tbt = med(safe(s, 'cpu', 'longTasks', 'totalBlockingTime'));
|
metrics.tbt = med(safe(s, 'googleWebVitals', 'totalBlockingTime'));
|
||||||
metrics.ttfb = med(safe(s, 'pageTimings', 'backEndTime'));
|
metrics.ttfb = med(safe(s, 'googleWebVitals', 'ttfb'));
|
||||||
metrics.max_potential_fid = med(safe(s, 'cpu', 'longTasks', 'maxPotentialFid'));
|
metrics.max_potential_fid = med(safe(s, 'cpu', 'longTasks', 'maxPotentialFid'));
|
||||||
|
|
||||||
metrics.page_load_time = med(safe(s, 'pageTimings', 'pageLoadTime'));
|
// Navigation timings — pageTimings is nested under statistics.timings
|
||||||
|
metrics.page_load_time = med(safe(s, 'timings', 'pageTimings', 'pageLoadTime'));
|
||||||
metrics.fully_loaded = med(safe(s, 'timings', 'fullyLoaded'));
|
metrics.fully_loaded = med(safe(s, 'timings', 'fullyLoaded'));
|
||||||
metrics.dom_content_loaded = med(safe(s, 'pageTimings', 'domContentLoadedTime'));
|
metrics.dom_content_loaded = med(safe(s, 'timings', 'pageTimings', 'domContentLoadedTime'));
|
||||||
metrics.dom_interactive = med(safe(s, 'pageTimings', 'domInteractiveTime'));
|
metrics.dom_interactive = med(safe(s, 'timings', 'pageTimings', 'domInteractiveTime'));
|
||||||
metrics.front_end_time = med(safe(s, 'pageTimings', 'frontEndTime'));
|
metrics.front_end_time = med(safe(s, 'timings', 'pageTimings', 'frontEndTime'));
|
||||||
metrics.back_end_time = med(safe(s, 'pageTimings', 'backEndTime'));
|
metrics.back_end_time = med(safe(s, 'timings', 'pageTimings', 'backEndTime'));
|
||||||
metrics.time_to_first_byte = metrics.ttfb;
|
metrics.time_to_first_byte = metrics.ttfb;
|
||||||
|
|
||||||
metrics.speed_index = med(safe(s, 'visualMetrics', 'SpeedIndex'));
|
metrics.speed_index = med(safe(s, 'visualMetrics', 'SpeedIndex'));
|
||||||
metrics.first_visual_change = med(safe(s, 'visualMetrics', 'FirstVisualChange'));
|
metrics.first_visual_change = med(safe(s, 'visualMetrics', 'FirstVisualChange'));
|
||||||
metrics.last_visual_change = med(safe(s, 'visualMetrics', 'LastVisualChange'));
|
metrics.last_visual_change = med(safe(s, 'visualMetrics', 'LastVisualChange'));
|
||||||
metrics.visual_complete_85 = med(safe(s, 'visualMetrics', 'VisualComplete85'));
|
metrics.visual_complete_85 = med(safe(s, 'visualMetrics', 'VisualComplete85'));
|
||||||
metrics.perceptual_speed_index = med(safe(s, 'visualMetrics', 'PerceptualSpeedIndex'));
|
|
||||||
|
|
||||||
metrics.long_tasks_count = med(safe(s, 'cpu', 'longTasks', 'tasks'));
|
metrics.long_tasks_count = med(safe(s, 'cpu', 'longTasks', 'tasks'));
|
||||||
metrics.long_tasks_duration = med(safe(s, 'cpu', 'longTasks', 'totalDuration'));
|
metrics.long_tasks_duration = med(safe(s, 'cpu', 'longTasks', 'totalDuration'));
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
- ['First Visual Change', job.first_visual_change],
|
- ['First Visual Change', job.first_visual_change],
|
||||||
- ['Last Visual Change', job.last_visual_change],
|
- ['Last Visual Change', job.last_visual_change],
|
||||||
- ['Visual Complete 85%', job.visual_complete_85],
|
- ['Visual Complete 85%', job.visual_complete_85],
|
||||||
- ['Perceptual Speed Index', job.perceptual_speed_index],
|
|
||||||
- ['Front End Time', job.front_end_time],
|
- ['Front End Time', job.front_end_time],
|
||||||
- ['Back End Time', job.back_end_time],
|
- ['Back End Time', job.back_end_time],
|
||||||
- ['Max Potential FID', job.max_potential_fid],
|
- ['Max Potential FID', job.max_potential_fid],
|
||||||
|
|||||||
Reference in New Issue
Block a user