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');
|
||||
|
||||
if (s) {
|
||||
metrics.lcp = med(safe(s, 'timings', 'largestContentfulPaint'));
|
||||
metrics.fcp = med(safe(s, 'paintTiming', 'first-contentful-paint'));
|
||||
// Core Web Vitals — use googleWebVitals aggregate (flat, direct median)
|
||||
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.tbt = med(safe(s, 'cpu', 'longTasks', 'totalBlockingTime'));
|
||||
metrics.ttfb = med(safe(s, 'pageTimings', 'backEndTime'));
|
||||
metrics.tbt = med(safe(s, 'googleWebVitals', 'totalBlockingTime'));
|
||||
metrics.ttfb = med(safe(s, 'googleWebVitals', 'ttfb'));
|
||||
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.dom_content_loaded = med(safe(s, 'pageTimings', 'domContentLoadedTime'));
|
||||
metrics.dom_interactive = med(safe(s, 'pageTimings', 'domInteractiveTime'));
|
||||
metrics.front_end_time = med(safe(s, 'pageTimings', 'frontEndTime'));
|
||||
metrics.back_end_time = med(safe(s, 'pageTimings', 'backEndTime'));
|
||||
metrics.dom_content_loaded = med(safe(s, 'timings', 'pageTimings', 'domContentLoadedTime'));
|
||||
metrics.dom_interactive = med(safe(s, 'timings', 'pageTimings', 'domInteractiveTime'));
|
||||
metrics.front_end_time = med(safe(s, 'timings', 'pageTimings', 'frontEndTime'));
|
||||
metrics.back_end_time = med(safe(s, 'timings', 'pageTimings', 'backEndTime'));
|
||||
metrics.time_to_first_byte = metrics.ttfb;
|
||||
|
||||
metrics.speed_index = med(safe(s, 'visualMetrics', 'SpeedIndex'));
|
||||
metrics.first_visual_change = med(safe(s, 'visualMetrics', 'FirstVisualChange'));
|
||||
metrics.last_visual_change = med(safe(s, 'visualMetrics', 'LastVisualChange'));
|
||||
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_duration = med(safe(s, 'cpu', 'longTasks', 'totalDuration'));
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
- ['First Visual Change', job.first_visual_change],
|
||||
- ['Last Visual Change', job.last_visual_change],
|
||||
- ['Visual Complete 85%', job.visual_complete_85],
|
||||
- ['Perceptual Speed Index', job.perceptual_speed_index],
|
||||
- ['Front End Time', job.front_end_time],
|
||||
- ['Back End Time', job.back_end_time],
|
||||
- ['Max Potential FID', job.max_potential_fid],
|
||||
|
||||
Reference in New Issue
Block a user