From dd01b179e3b466bc0f57797610e86eeb2208187c Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 6 Jun 2024 14:19:09 -0700 Subject: [PATCH 1/4] core(lantern): use LCP instead of FMP for TTI simulation bounds --- core/computed/metrics/lantern-interactive.js | 6 +-- core/lib/lantern/metric.js | 2 +- core/lib/lantern/metrics/interactive.js | 14 +++---- .../fixtures/lantern-baseline-accuracy.json | 6 +-- .../lantern-baseline-computed-values.json | 32 ++++++++-------- .../reports/sample-flow-result.json | 38 +++++++++---------- .../lib/lantern/metrics/interactive-test.js | 11 ++++-- core/test/results/sample_v2.json | 8 +--- 8 files changed, 58 insertions(+), 59 deletions(-) diff --git a/core/computed/metrics/lantern-interactive.js b/core/computed/metrics/lantern-interactive.js index 7a634cda8b68..e9636ecb875b 100644 --- a/core/computed/metrics/lantern-interactive.js +++ b/core/computed/metrics/lantern-interactive.js @@ -5,7 +5,7 @@ */ import {makeComputedArtifact} from '../computed-artifact.js'; -import {LanternFirstMeaningfulPaint} from './lantern-first-meaningful-paint.js'; +import {LanternLargestContentfulPaint} from './lantern-largest-contentful-paint.js'; import {Interactive} from '../../lib/lantern/metrics/interactive.js'; import {getComputationDataParams, lanternErrorAdapter} from './lantern-metric.js'; @@ -29,8 +29,8 @@ class LanternInteractive extends Interactive { * @return {Promise} */ static async compute_(data, context) { - const fmpResult = await LanternFirstMeaningfulPaint.request(data, context); - return this.computeMetricWithGraphs(data, context, {fmpResult}); + const lcpResult = await LanternLargestContentfulPaint.request(data, context); + return this.computeMetricWithGraphs(data, context, {lcpResult}); } } diff --git a/core/lib/lantern/metric.js b/core/lib/lantern/metric.js index fbaa6986ea86..8909543e151e 100644 --- a/core/lib/lantern/metric.js +++ b/core/lib/lantern/metric.js @@ -16,7 +16,7 @@ import {RESOURCE_TYPES} from '../../lib/network-request.js'; * @typedef Extras * @property {boolean} optimistic * @property {LH.Artifacts.LanternMetric=} fcpResult - * @property {LH.Artifacts.LanternMetric=} fmpResult + * @property {LH.Artifacts.LanternMetric=} lcpResult * @property {LH.Artifacts.LanternMetric=} interactiveResult * @property {{speedIndex: number}=} speedline */ diff --git a/core/lib/lantern/metrics/interactive.js b/core/lib/lantern/metrics/interactive.js index a5aa4e51ba14..5449872bbe87 100644 --- a/core/lib/lantern/metrics/interactive.js +++ b/core/lib/lantern/metrics/interactive.js @@ -66,12 +66,12 @@ class Interactive extends Metric { * @return {LH.Gatherer.Simulation.Result} */ static getEstimateFromSimulation(simulationResult, extras) { - if (!extras.fmpResult) throw new Error('missing fmpResult'); + if (!extras.lcpResult) throw new Error('missing lcpResult'); const lastTaskAt = Interactive.getLastLongTaskEndTime(simulationResult.nodeTimings); const minimumTime = extras.optimistic - ? extras.fmpResult.optimisticEstimate.timeInMs - : extras.fmpResult.pessimisticEstimate.timeInMs; + ? extras.lcpResult.optimisticEstimate.timeInMs + : extras.lcpResult.pessimisticEstimate.timeInMs; return { timeInMs: Math.max(minimumTime, lastTaskAt), nodeTimings: simulationResult.nodeTimings, @@ -84,13 +84,13 @@ class Interactive extends Metric { * @return {Promise} */ static async compute(data, extras) { - const fmpResult = extras?.fmpResult; - if (!fmpResult) { - throw new Error('FMP is required to calculate the Interactive metric'); + const lcpResult = extras?.lcpResult; + if (!lcpResult) { + throw new Error('LCP is required to calculate the Interactive metric'); } const metricResult = await super.compute(data, extras); - metricResult.timing = Math.max(metricResult.timing, fmpResult.timing); + metricResult.timing = Math.max(metricResult.timing, lcpResult.timing); return metricResult; } diff --git a/core/test/fixtures/lantern-baseline-accuracy.json b/core/test/fixtures/lantern-baseline-accuracy.json index 90a195c0da2c..2820291a1438 100644 --- a/core/test/fixtures/lantern-baseline-accuracy.json +++ b/core/test/fixtures/lantern-baseline-accuracy.json @@ -15,9 +15,9 @@ "p95": 0.6524087591240876 }, "roughEstimateOfTTI": { - "p50": 0.28936170212765955, - "p90": 0.6481503092542887, - "p95": 0.7325279801030379 + "p50": 0.27433435181143606, + "p90": 0.583952617757166, + "p95": 0.7259561558741738 }, "roughEstimateOfLCP": { "p50": 0.20067905646890635, diff --git a/core/test/fixtures/lantern-baseline-computed-values.json b/core/test/fixtures/lantern-baseline-computed-values.json index 152f0935a365..9029a5b334a2 100644 --- a/core/test/fixtures/lantern-baseline-computed-values.json +++ b/core/test/fixtures/lantern-baseline-computed-values.json @@ -1,19 +1,19 @@ { "sites": [ - {"url": "http://m.iciba.com", "roughEstimateOfFCP": 1744, "optimisticFCP": 1744, "pessimisticFCP": 1744, "roughEstimateOfFMP": 1744, "optimisticFMP": 1744, "pessimisticFMP": 1744, "roughEstimateOfTTI": 6690, "optimisticTTI": 3338, "pessimisticTTI": 9432, "roughEstimateOfSI": 8431, "optimisticSI": 4764, "pessimisticSI": 4403, "roughEstimateOfLCP": 9428, "optimisticLCP": 9169, "pessimisticLCP": 9687, "roughEstimateOfTTFB": 685}, + {"url": "http://m.iciba.com", "roughEstimateOfFCP": 1744, "optimisticFCP": 1744, "pessimisticFCP": 1744, "roughEstimateOfFMP": 1744, "optimisticFMP": 1744, "pessimisticFMP": 1744, "roughEstimateOfTTI": 9454, "optimisticTTI": 9169, "pessimisticTTI": 9687, "roughEstimateOfSI": 8431, "optimisticSI": 4764, "pessimisticSI": 4403, "roughEstimateOfLCP": 9428, "optimisticLCP": 9169, "pessimisticLCP": 9687, "roughEstimateOfTTFB": 685}, {"url": "http://www.zol.com.cn/", "roughEstimateOfFCP": 3447, "optimisticFCP": 3447, "pessimisticFCP": 3447, "roughEstimateOfFMP": 3447, "optimisticFMP": 3447, "pessimisticFMP": 3447, "roughEstimateOfTTI": 17512, "optimisticTTI": 16023, "pessimisticTTI": 18731, "roughEstimateOfSI": 10555, "optimisticSI": 4861, "pessimisticSI": 9375, "roughEstimateOfLCP": 4282, "optimisticLCP": 4194, "pessimisticLCP": 4369, "roughEstimateOfTTFB": 648}, {"url": "https://birdsarentreal.com", "roughEstimateOfFCP": 2962, "optimisticFCP": 2962, "pessimisticFCP": 2962, "roughEstimateOfFMP": 3448, "optimisticFMP": 3124, "pessimisticFMP": 3772, "roughEstimateOfTTI": 14226, "optimisticTTI": 12107, "pessimisticTTI": 15960, "roughEstimateOfSI": 4113, "optimisticSI": 1323, "pessimisticSI": 5652, "roughEstimateOfLCP": 7958, "optimisticLCP": 6986, "pessimisticLCP": 8931, "roughEstimateOfTTFB": 701}, - {"url": "https://depositfiles.com/", "roughEstimateOfFCP": 5098, "optimisticFCP": 5098, "pessimisticFCP": 5098, "roughEstimateOfFMP": 5486, "optimisticFMP": 5098, "pessimisticFMP": 5874, "roughEstimateOfTTI": 5994, "optimisticTTI": 5854, "pessimisticTTI": 6109, "roughEstimateOfSI": 6311, "optimisticSI": 2787, "pessimisticSI": 6025, "roughEstimateOfLCP": 6034, "optimisticLCP": 6034, "pessimisticLCP": 6034, "roughEstimateOfTTFB": 907}, - {"url": "https://en-maktoob.yahoo.com/?p=xa", "roughEstimateOfFCP": 1410, "optimisticFCP": 1410, "pessimisticFCP": 1410, "roughEstimateOfFMP": 1427, "optimisticFMP": 1410, "pessimisticFMP": 1443, "roughEstimateOfTTI": 6029, "optimisticTTI": 5167, "pessimisticTTI": 6734, "roughEstimateOfSI": 3017, "optimisticSI": 1039, "pessimisticSI": 3907, "roughEstimateOfLCP": 7413, "optimisticLCP": 7090, "pessimisticLCP": 7736, "roughEstimateOfTTFB": 618}, + {"url": "https://depositfiles.com/", "roughEstimateOfFCP": 5098, "optimisticFCP": 5098, "pessimisticFCP": 5098, "roughEstimateOfFMP": 5486, "optimisticFMP": 5098, "pessimisticFMP": 5874, "roughEstimateOfTTI": 6075, "optimisticTTI": 6034, "pessimisticTTI": 6109, "roughEstimateOfSI": 6311, "optimisticSI": 2787, "pessimisticSI": 6025, "roughEstimateOfLCP": 6034, "optimisticLCP": 6034, "pessimisticLCP": 6034, "roughEstimateOfTTFB": 907}, + {"url": "https://en-maktoob.yahoo.com/?p=xa", "roughEstimateOfFCP": 1410, "optimisticFCP": 1410, "pessimisticFCP": 1410, "roughEstimateOfFMP": 1427, "optimisticFMP": 1410, "pessimisticFMP": 1443, "roughEstimateOfTTI": 7446, "optimisticTTI": 7090, "pessimisticTTI": 7736, "roughEstimateOfSI": 3017, "optimisticSI": 1039, "pessimisticSI": 3907, "roughEstimateOfLCP": 7413, "optimisticLCP": 7090, "pessimisticLCP": 7736, "roughEstimateOfTTFB": 618}, {"url": "https://en.softonic.com", "roughEstimateOfFCP": 2191, "optimisticFCP": 2191, "pessimisticFCP": 2191, "roughEstimateOfFMP": 2584, "optimisticFMP": 2191, "pessimisticFMP": 2977, "roughEstimateOfTTI": 32728, "optimisticTTI": 27015, "pessimisticTTI": 37403, "roughEstimateOfSI": 9468, "optimisticSI": 3067, "pessimisticSI": 12935, "roughEstimateOfLCP": 3915, "optimisticLCP": 3504, "pessimisticLCP": 4325, "roughEstimateOfTTFB": 899}, - {"url": "https://gm.58.com/glsanfrancisco-sl/", "roughEstimateOfFCP": 3019, "optimisticFCP": 3019, "pessimisticFCP": 3019, "roughEstimateOfFMP": 3019, "optimisticFMP": 3019, "pessimisticFMP": 3019, "roughEstimateOfTTI": 4857, "optimisticTTI": 4436, "pessimisticTTI": 5201, "roughEstimateOfSI": 3955, "optimisticSI": 1762, "pessimisticSI": 3722, "roughEstimateOfLCP": 5405, "optimisticLCP": 5045, "pessimisticLCP": 5766, "roughEstimateOfTTFB": 787}, + {"url": "https://gm.58.com/glsanfrancisco-sl/", "roughEstimateOfFCP": 3019, "optimisticFCP": 3019, "pessimisticFCP": 3019, "roughEstimateOfFMP": 3019, "optimisticFMP": 3019, "pessimisticFMP": 3019, "roughEstimateOfTTI": 5441, "optimisticTTI": 5045, "pessimisticTTI": 5766, "roughEstimateOfSI": 3955, "optimisticSI": 1762, "pessimisticSI": 3722, "roughEstimateOfLCP": 5405, "optimisticLCP": 5045, "pessimisticLCP": 5766, "roughEstimateOfTTFB": 787}, {"url": "https://m.facebook.com/", "roughEstimateOfFCP": 2407, "optimisticFCP": 2407, "pessimisticFCP": 2407, "roughEstimateOfFMP": 2407, "optimisticFMP": 2407, "pessimisticFMP": 2407, "roughEstimateOfTTI": 4905, "optimisticTTI": 4217, "pessimisticTTI": 5467, "roughEstimateOfSI": 2407, "optimisticSI": 479, "pessimisticSI": 3488, "roughEstimateOfLCP": 3467, "optimisticLCP": 3391, "pessimisticLCP": 3542, "roughEstimateOfTTFB": 626}, {"url": "https://m.hexun.com/", "roughEstimateOfFCP": 5126, "optimisticFCP": 5126, "pessimisticFCP": 5126, "roughEstimateOfFMP": 5126, "optimisticFMP": 5126, "pessimisticFMP": 5126, "roughEstimateOfTTI": 14381, "optimisticTTI": 9706, "pessimisticTTI": 18207, "roughEstimateOfSI": 9413, "optimisticSI": 3631, "pessimisticSI": 10823, "roughEstimateOfLCP": 6474, "optimisticLCP": 5453, "pessimisticLCP": 7495, "roughEstimateOfTTFB": 931}, {"url": "https://m.mop.com/", "roughEstimateOfFCP": 2518, "optimisticFCP": 2518, "pessimisticFCP": 2518, "roughEstimateOfFMP": 2518, "optimisticFMP": 2518, "pessimisticFMP": 2518, "roughEstimateOfTTI": 6517, "optimisticTTI": 4869, "pessimisticTTI": 7866, "roughEstimateOfSI": 5201, "optimisticSI": 2399, "pessimisticSI": 4604, "roughEstimateOfLCP": 3456, "optimisticLCP": 3398, "pessimisticLCP": 3514, "roughEstimateOfTTFB": 859}, - {"url": "https://m.sogou.com/", "roughEstimateOfFCP": 2151, "optimisticFCP": 2151, "pessimisticFCP": 2151, "roughEstimateOfFMP": 3178, "optimisticFMP": 2151, "pessimisticFMP": 4205, "roughEstimateOfTTI": 4226, "optimisticTTI": 4199, "pessimisticTTI": 4248, "roughEstimateOfSI": 7788, "optimisticSI": 4734, "pessimisticSI": 2901, "roughEstimateOfLCP": 5013, "optimisticLCP": 4937, "pessimisticLCP": 5088, "roughEstimateOfTTFB": 778}, + {"url": "https://m.sogou.com/", "roughEstimateOfFCP": 2151, "optimisticFCP": 2151, "pessimisticFCP": 2151, "roughEstimateOfFMP": 3178, "optimisticFMP": 2151, "pessimisticFMP": 4205, "roughEstimateOfTTI": 5020, "optimisticTTI": 4937, "pessimisticTTI": 5088, "roughEstimateOfSI": 7788, "optimisticSI": 4734, "pessimisticSI": 2901, "roughEstimateOfLCP": 5013, "optimisticLCP": 4937, "pessimisticLCP": 5088, "roughEstimateOfTTFB": 778}, {"url": "https://m.youdao.com/", "roughEstimateOfFCP": 1497, "optimisticFCP": 1497, "pessimisticFCP": 1497, "roughEstimateOfFMP": 1497, "optimisticFMP": 1497, "pessimisticFMP": 1497, "roughEstimateOfTTI": 2506, "optimisticTTI": 2348, "pessimisticTTI": 2635, "roughEstimateOfSI": 2233, "optimisticSI": 1152, "pessimisticSI": 1552, "roughEstimateOfLCP": 2304, "optimisticLCP": 2304, "pessimisticLCP": 2304, "roughEstimateOfTTFB": 988}, {"url": "https://mail.ru/", "roughEstimateOfFCP": 3562, "optimisticFCP": 3562, "pessimisticFCP": 3562, "roughEstimateOfFMP": 3562, "optimisticFMP": 3562, "pessimisticFMP": 3562, "roughEstimateOfTTI": 27654, "optimisticTTI": 19420, "pessimisticTTI": 34391, "roughEstimateOfSI": 7552, "optimisticSI": 2087, "pessimisticSI": 11574, "roughEstimateOfLCP": 4875, "optimisticLCP": 4730, "pessimisticLCP": 5021, "roughEstimateOfTTFB": 763}, - {"url": "https://mobile.twitter.com/", "roughEstimateOfFCP": 1100, "optimisticFCP": 1100, "pessimisticFCP": 1100, "roughEstimateOfFMP": 4843, "optimisticFMP": 4647, "pessimisticFMP": 5039, "roughEstimateOfTTI": 8547, "optimisticTTI": 8547, "pessimisticTTI": 8547, "roughEstimateOfSI": 3646, "optimisticSI": 1283, "pessimisticSI": 4625, "roughEstimateOfLCP": 9406, "optimisticLCP": 9406, "pessimisticLCP": 9406, "roughEstimateOfTTFB": 633}, + {"url": "https://mobile.twitter.com/", "roughEstimateOfFCP": 1100, "optimisticFCP": 1100, "pessimisticFCP": 1100, "roughEstimateOfFMP": 4843, "optimisticFMP": 4647, "pessimisticFMP": 5039, "roughEstimateOfTTI": 9406, "optimisticTTI": 9406, "pessimisticTTI": 9406, "roughEstimateOfSI": 3646, "optimisticSI": 1283, "pessimisticSI": 4625, "roughEstimateOfLCP": 9406, "optimisticLCP": 9406, "pessimisticLCP": 9406, "roughEstimateOfTTFB": 633}, {"url": "https://noclip.website/", "roughEstimateOfFCP": 14263, "optimisticFCP": 14263, "pessimisticFCP": 14263, "roughEstimateOfFMP": 14263, "optimisticFMP": 14263, "pessimisticFMP": 14263, "roughEstimateOfTTI": 15176, "optimisticTTI": 15141, "pessimisticTTI": 15205, "roughEstimateOfSI": 14263, "optimisticSI": 606, "pessimisticSI": 14263, "roughEstimateOfLCP": 14790, "optimisticLCP": 14790, "pessimisticLCP": 14790, "roughEstimateOfTTFB": 601}, {"url": "https://noclip.website/#bk/01;ZNCA8Ac%7d%7b15_%28S%7bMfXPk;;zm%28[o$K3YC;u%5e~P3%7duru4~L~W9l%7d&a79MC%7d=m$v*_8!_6DhC=", "roughEstimateOfFCP": 14253, "optimisticFCP": 14253, "pessimisticFCP": 14253, "roughEstimateOfFMP": 14253, "optimisticFMP": 14253, "pessimisticFMP": 14253, "roughEstimateOfTTI": 15000, "optimisticTTI": 14958, "pessimisticTTI": 15034, "roughEstimateOfSI": 14253, "optimisticSI": 584, "pessimisticSI": 14253, "roughEstimateOfLCP": 14782, "optimisticLCP": 14782, "pessimisticLCP": 14782, "roughEstimateOfTTFB": 600}, {"url": "https://sfbay.craigslist.org/", "roughEstimateOfFCP": 1519, "optimisticFCP": 1519, "pessimisticFCP": 1519, "roughEstimateOfFMP": 2654, "optimisticFMP": 2654, "pessimisticFMP": 2654, "roughEstimateOfTTI": 2823, "optimisticTTI": 2654, "pessimisticTTI": 2962, "roughEstimateOfSI": 1519, "optimisticSI": 482, "pessimisticSI": 1985, "roughEstimateOfLCP": 1969, "optimisticLCP": 1969, "pessimisticLCP": 1969, "roughEstimateOfTTFB": 604}, @@ -21,22 +21,22 @@ {"url": "https://wap.sogou.com/", "roughEstimateOfFCP": 2173, "optimisticFCP": 2173, "pessimisticFCP": 2173, "roughEstimateOfFMP": 2984, "optimisticFMP": 2173, "pessimisticFMP": 3795, "roughEstimateOfTTI": 5622, "optimisticTTI": 5404, "pessimisticTTI": 5800, "roughEstimateOfSI": 8298, "optimisticSI": 4895, "pessimisticSI": 3614, "roughEstimateOfLCP": 4521, "optimisticLCP": 4671, "pessimisticLCP": 4371, "roughEstimateOfTTFB": 794}, {"url": "https://weather.com/", "roughEstimateOfFCP": 3751, "optimisticFCP": 3564, "pessimisticFCP": 3938, "roughEstimateOfFMP": 3751, "optimisticFMP": 3564, "pessimisticFMP": 3938, "roughEstimateOfTTI": 26889, "optimisticTTI": 23242, "pessimisticTTI": 29873, "roughEstimateOfSI": 10153, "optimisticSI": 1582, "pessimisticSI": 19843, "roughEstimateOfLCP": 4125, "optimisticLCP": 3938, "pessimisticLCP": 4312, "roughEstimateOfTTFB": 642}, {"url": "https://www.4shared.com/", "roughEstimateOfFCP": 3488, "optimisticFCP": 3488, "pessimisticFCP": 3488, "roughEstimateOfFMP": 3997, "optimisticFMP": 3488, "pessimisticFMP": 4506, "roughEstimateOfTTI": 6063, "optimisticTTI": 6063, "pessimisticTTI": 6063, "roughEstimateOfSI": 3488, "optimisticSI": 819, "pessimisticSI": 4877, "roughEstimateOfLCP": 4679, "optimisticLCP": 4679, "pessimisticLCP": 4679, "roughEstimateOfTTFB": 601}, - {"url": "https://www.56.com/", "roughEstimateOfFCP": 3265, "optimisticFCP": 2971, "pessimisticFCP": 3558, "roughEstimateOfFMP": 3265, "optimisticFMP": 2971, "pessimisticFMP": 3558, "roughEstimateOfTTI": 28552, "optimisticTTI": 4455, "pessimisticTTI": 48268, "roughEstimateOfSI": 16410, "optimisticSI": 5195, "pessimisticSI": 22840, "roughEstimateOfLCP": 22127, "optimisticLCP": 5885, "pessimisticLCP": 38370, "roughEstimateOfTTFB": 840}, + {"url": "https://www.56.com/", "roughEstimateOfFCP": 3265, "optimisticFCP": 2971, "pessimisticFCP": 3558, "roughEstimateOfFMP": 3265, "optimisticFMP": 2971, "pessimisticFMP": 3558, "roughEstimateOfTTI": 29195, "optimisticTTI": 5885, "pessimisticTTI": 48268, "roughEstimateOfSI": 16410, "optimisticSI": 5195, "pessimisticSI": 22840, "roughEstimateOfLCP": 22127, "optimisticLCP": 5885, "pessimisticLCP": 38370, "roughEstimateOfTTFB": 840}, {"url": "https://www.addthis.com/", "roughEstimateOfFCP": 2104, "optimisticFCP": 2104, "pessimisticFCP": 2104, "roughEstimateOfFMP": 2104, "optimisticFMP": 2104, "pessimisticFMP": 2104, "roughEstimateOfTTI": 9203, "optimisticTTI": 8624, "pessimisticTTI": 9676, "roughEstimateOfSI": 3947, "optimisticSI": 1375, "pessimisticSI": 5055, "roughEstimateOfLCP": 2625, "optimisticLCP": 2549, "pessimisticLCP": 2701, "roughEstimateOfTTFB": 699}, {"url": "https://www.alexa.com/", "roughEstimateOfFCP": 3839, "optimisticFCP": 3839, "pessimisticFCP": 3839, "roughEstimateOfFMP": 4482, "optimisticFMP": 4184, "pessimisticFMP": 4781, "roughEstimateOfTTI": 16580, "optimisticTTI": 12057, "pessimisticTTI": 20281, "roughEstimateOfSI": 6787, "optimisticSI": 2373, "pessimisticSI": 8662, "roughEstimateOfLCP": 9060, "optimisticLCP": 8973, "pessimisticLCP": 9146, "roughEstimateOfTTFB": 654}, {"url": "https://www.amazon.co.jp/", "roughEstimateOfFCP": 2940, "optimisticFCP": 2940, "pessimisticFCP": 2940, "roughEstimateOfFMP": 4042, "optimisticFMP": 2940, "pessimisticFMP": 5143, "roughEstimateOfTTI": 9518, "optimisticTTI": 6175, "pessimisticTTI": 12253, "roughEstimateOfSI": 3749, "optimisticSI": 1079, "pessimisticSI": 5594, "roughEstimateOfLCP": 5192, "optimisticLCP": 4670, "pessimisticLCP": 5714, "roughEstimateOfTTFB": 852}, {"url": "https://www.att.com/", "roughEstimateOfFCP": 5457, "optimisticFCP": 5005, "pessimisticFCP": 5910, "roughEstimateOfFMP": 5698, "optimisticFMP": 5005, "pessimisticFMP": 6391, "roughEstimateOfTTI": 30690, "optimisticTTI": 27668, "pessimisticTTI": 33162, "roughEstimateOfSI": 6966, "optimisticSI": 1858, "pessimisticSI": 10912, "roughEstimateOfLCP": 13817, "optimisticLCP": 13737, "pessimisticLCP": 13897, "roughEstimateOfTTFB": 651}, {"url": "https://www.bing.com/", "roughEstimateOfFCP": 962, "optimisticFCP": 962, "pessimisticFCP": 962, "roughEstimateOfFMP": 1339, "optimisticFMP": 962, "pessimisticFMP": 1717, "roughEstimateOfTTI": 2516, "optimisticTTI": 2241, "pessimisticTTI": 2741, "roughEstimateOfSI": 1368, "optimisticSI": 467, "pessimisticSI": 1788, "roughEstimateOfLCP": 1548, "optimisticLCP": 1262, "pessimisticLCP": 1834, "roughEstimateOfTTFB": 608}, - {"url": "https://www.blogger.com/about/", "roughEstimateOfFCP": 1533, "optimisticFCP": 1533, "pessimisticFCP": 1533, "roughEstimateOfFMP": 2106, "optimisticFMP": 1956, "pessimisticFMP": 2256, "roughEstimateOfTTI": 2254, "optimisticTTI": 2222, "pessimisticTTI": 2280, "roughEstimateOfSI": 6611, "optimisticSI": 4188, "pessimisticSI": 1870, "roughEstimateOfLCP": 2343, "optimisticLCP": 2280, "pessimisticLCP": 2406, "roughEstimateOfTTFB": 603}, + {"url": "https://www.blogger.com/about/", "roughEstimateOfFCP": 1533, "optimisticFCP": 1533, "pessimisticFCP": 1533, "roughEstimateOfFMP": 2106, "optimisticFMP": 1956, "pessimisticFMP": 2256, "roughEstimateOfTTI": 2349, "optimisticTTI": 2280, "pessimisticTTI": 2406, "roughEstimateOfSI": 6611, "optimisticSI": 4188, "pessimisticSI": 1870, "roughEstimateOfLCP": 2343, "optimisticLCP": 2280, "pessimisticLCP": 2406, "roughEstimateOfTTFB": 603}, {"url": "https://www.cnet.com/", "roughEstimateOfFCP": 2578, "optimisticFCP": 2218, "pessimisticFCP": 2938, "roughEstimateOfFMP": 2814, "optimisticFMP": 2539, "pessimisticFMP": 3089, "roughEstimateOfTTI": 45329, "optimisticTTI": 40674, "pessimisticTTI": 49137, "roughEstimateOfSI": 11162, "optimisticSI": 1339, "pessimisticSI": 23218, "roughEstimateOfLCP": 4265, "optimisticLCP": 4185, "pessimisticLCP": 4346, "roughEstimateOfTTFB": 608}, - {"url": "https://www.codewars.com", "roughEstimateOfFCP": 2248, "optimisticFCP": 2248, "pessimisticFCP": 2248, "roughEstimateOfFMP": 3453, "optimisticFMP": 2422, "pessimisticFMP": 4483, "roughEstimateOfTTI": 9009, "optimisticTTI": 7042, "pessimisticTTI": 10618, "roughEstimateOfSI": 3082, "optimisticSI": 834, "pessimisticSI": 4787, "roughEstimateOfLCP": 9643, "optimisticLCP": 9318, "pessimisticLCP": 9968, "roughEstimateOfTTFB": 609}, + {"url": "https://www.codewars.com", "roughEstimateOfFCP": 2248, "optimisticFCP": 2248, "pessimisticFCP": 2248, "roughEstimateOfFMP": 3453, "optimisticFMP": 2422, "pessimisticFMP": 4483, "roughEstimateOfTTI": 10033, "optimisticTTI": 9318, "pessimisticTTI": 10618, "roughEstimateOfSI": 3082, "optimisticSI": 834, "pessimisticSI": 4787, "roughEstimateOfLCP": 9643, "optimisticLCP": 9318, "pessimisticLCP": 9968, "roughEstimateOfTTFB": 609}, {"url": "https://www.dawn.com/", "roughEstimateOfFCP": 2588, "optimisticFCP": 2262, "pessimisticFCP": 2914, "roughEstimateOfFMP": 2832, "optimisticFMP": 2588, "pessimisticFMP": 3077, "roughEstimateOfTTI": 27334, "optimisticTTI": 23532, "pessimisticTTI": 30445, "roughEstimateOfSI": 8249, "optimisticSI": 1332, "pessimisticSI": 15960, "roughEstimateOfLCP": 3892, "optimisticLCP": 3240, "pessimisticLCP": 4543, "roughEstimateOfTTFB": 652}, {"url": "https://www.deviantart.com/", "roughEstimateOfFCP": 2926, "optimisticFCP": 2926, "pessimisticFCP": 2926, "roughEstimateOfFMP": 2926, "optimisticFMP": 2926, "pessimisticFMP": 2926, "roughEstimateOfTTI": 13365, "optimisticTTI": 11182, "pessimisticTTI": 15152, "roughEstimateOfSI": 2926, "optimisticSI": 996, "pessimisticSI": 2992, "roughEstimateOfLCP": 11933, "optimisticLCP": 10408, "pessimisticLCP": 13457, "roughEstimateOfTTFB": 1009}, {"url": "https://www.domaintools.com/", "roughEstimateOfFCP": 3236, "optimisticFCP": 3236, "pessimisticFCP": 3236, "roughEstimateOfFMP": 4793, "optimisticFMP": 3433, "pessimisticFMP": 6153, "roughEstimateOfTTI": 12539, "optimisticTTI": 10421, "pessimisticTTI": 14272, "roughEstimateOfSI": 6744, "optimisticSI": 3235, "pessimisticSI": 5540, "roughEstimateOfLCP": 9025, "optimisticLCP": 7556, "pessimisticLCP": 10494, "roughEstimateOfTTFB": 2351}, {"url": "https://www.ebay.com/", "roughEstimateOfFCP": 2142, "optimisticFCP": 2142, "pessimisticFCP": 2142, "roughEstimateOfFMP": 2461, "optimisticFMP": 2461, "pessimisticFMP": 2461, "roughEstimateOfTTI": 16801, "optimisticTTI": 14670, "pessimisticTTI": 18545, "roughEstimateOfSI": 3150, "optimisticSI": 628, "pessimisticSI": 5677, "roughEstimateOfLCP": 2940, "optimisticLCP": 2461, "pessimisticLCP": 3419, "roughEstimateOfTTFB": 699}, {"url": "https://www.ebs.in/IPS/", "roughEstimateOfFCP": 4297, "optimisticFCP": 4297, "pessimisticFCP": 4297, "roughEstimateOfFMP": 4724, "optimisticFMP": 4724, "pessimisticFMP": 4724, "roughEstimateOfTTI": 7748, "optimisticTTI": 7051, "pessimisticTTI": 8317, "roughEstimateOfSI": 7781, "optimisticSI": 4003, "pessimisticSI": 5441, "roughEstimateOfLCP": 6022, "optimisticLCP": 5960, "pessimisticLCP": 6083, "roughEstimateOfTTFB": 1223}, {"url": "https://www.espn.com/", "roughEstimateOfFCP": 3910, "optimisticFCP": 3910, "pessimisticFCP": 3910, "roughEstimateOfFMP": 5320, "optimisticFMP": 3910, "pessimisticFMP": 6731, "roughEstimateOfTTI": 37312, "optimisticTTI": 34154, "pessimisticTTI": 39895, "roughEstimateOfSI": 9969, "optimisticSI": 2989, "pessimisticSI": 14461, "roughEstimateOfLCP": 7691, "optimisticLCP": 7371, "pessimisticLCP": 8011, "roughEstimateOfTTFB": 637}, - {"url": "https://www.flipkart.com", "roughEstimateOfFCP": 2367, "optimisticFCP": 2367, "pessimisticFCP": 2367, "roughEstimateOfFMP": 3948, "optimisticFMP": 2528, "pessimisticFMP": 5367, "roughEstimateOfTTI": 12145, "optimisticTTI": 10335, "pessimisticTTI": 13625, "roughEstimateOfSI": 6814, "optimisticSI": 3188, "pessimisticSI": 5876, "roughEstimateOfLCP": 11158, "optimisticLCP": 10673, "pessimisticLCP": 11643, "roughEstimateOfTTFB": 922}, + {"url": "https://www.flipkart.com", "roughEstimateOfFCP": 2367, "optimisticFCP": 2367, "pessimisticFCP": 2367, "roughEstimateOfFMP": 3948, "optimisticFMP": 2528, "pessimisticFMP": 5367, "roughEstimateOfTTI": 12296, "optimisticTTI": 10673, "pessimisticTTI": 13625, "roughEstimateOfSI": 6814, "optimisticSI": 3188, "pessimisticSI": 5876, "roughEstimateOfLCP": 11158, "optimisticLCP": 10673, "pessimisticLCP": 11643, "roughEstimateOfTTFB": 922}, {"url": "https://www.foxnews.com/", "roughEstimateOfFCP": 3692, "optimisticFCP": 3692, "pessimisticFCP": 3692, "roughEstimateOfFMP": 3692, "optimisticFMP": 3692, "pessimisticFMP": 3692, "roughEstimateOfTTI": 25114, "optimisticTTI": 20659, "pessimisticTTI": 28759, "roughEstimateOfSI": 8833, "optimisticSI": 1187, "pessimisticSI": 17927, "roughEstimateOfLCP": 5682, "optimisticLCP": 5523, "pessimisticLCP": 5841, "roughEstimateOfTTFB": 634}, {"url": "https://www.gmx.net/", "roughEstimateOfFCP": 2345, "optimisticFCP": 2345, "pessimisticFCP": 2345, "roughEstimateOfFMP": 2345, "optimisticFMP": 2345, "pessimisticFMP": 2345, "roughEstimateOfTTI": 10624, "optimisticTTI": 10107, "pessimisticTTI": 11046, "roughEstimateOfSI": 3620, "optimisticSI": 1327, "pessimisticSI": 4403, "roughEstimateOfLCP": 6954, "optimisticLCP": 6954, "pessimisticLCP": 6954, "roughEstimateOfTTFB": 611}, {"url": "https://www.hatena.ne.jp/", "roughEstimateOfFCP": 1743, "optimisticFCP": 1743, "pessimisticFCP": 1743, "roughEstimateOfFMP": 2768, "optimisticFMP": 2265, "pessimisticFMP": 3272, "roughEstimateOfTTI": 16428, "optimisticTTI": 12460, "pessimisticTTI": 19675, "roughEstimateOfSI": 6985, "optimisticSI": 2323, "pessimisticSI": 9333, "roughEstimateOfLCP": 5865, "optimisticLCP": 4758, "pessimisticLCP": 6972, "roughEstimateOfTTFB": 877}, @@ -50,10 +50,10 @@ {"url": "https://www.metacafe.com/", "roughEstimateOfFCP": 1908, "optimisticFCP": 1908, "pessimisticFCP": 1908, "roughEstimateOfFMP": 1908, "optimisticFMP": 1908, "pessimisticFMP": 1908, "roughEstimateOfTTI": 6279, "optimisticTTI": 5841, "pessimisticTTI": 6637, "roughEstimateOfSI": 2676, "optimisticSI": 769, "pessimisticSI": 3998, "roughEstimateOfLCP": 4892, "optimisticLCP": 4892, "pessimisticLCP": 4892, "roughEstimateOfTTFB": 621}, {"url": "https://www.mgid.com/ru", "roughEstimateOfFCP": 2063, "optimisticFCP": 2063, "pessimisticFCP": 2063, "roughEstimateOfFMP": 4696, "optimisticFMP": 4213, "pessimisticFMP": 5179, "roughEstimateOfTTI": 16910, "optimisticTTI": 15861, "pessimisticTTI": 17767, "roughEstimateOfSI": 5103, "optimisticSI": 983, "pessimisticSI": 9318, "roughEstimateOfLCP": 8564, "optimisticLCP": 8242, "pessimisticLCP": 8886, "roughEstimateOfTTFB": 648}, {"url": "https://www.mlb.com/", "roughEstimateOfFCP": 3034, "optimisticFCP": 3034, "pessimisticFCP": 3034, "roughEstimateOfFMP": 3034, "optimisticFMP": 3034, "pessimisticFMP": 3034, "roughEstimateOfTTI": 39301, "optimisticTTI": 30243, "pessimisticTTI": 46712, "roughEstimateOfSI": 12494, "optimisticSI": 1316, "pessimisticSI": 26630, "roughEstimateOfLCP": 4649, "optimisticLCP": 4326, "pessimisticLCP": 4972, "roughEstimateOfTTFB": 604}, - {"url": "https://www.mozilla.org/en-US/", "roughEstimateOfFCP": 2359, "optimisticFCP": 2359, "pessimisticFCP": 2359, "roughEstimateOfFMP": 2359, "optimisticFMP": 2359, "pessimisticFMP": 2359, "roughEstimateOfTTI": 6012, "optimisticTTI": 5595, "pessimisticTTI": 6353, "roughEstimateOfSI": 2454, "optimisticSI": 801, "pessimisticSI": 3334, "roughEstimateOfLCP": 5913, "optimisticLCP": 5596, "pessimisticLCP": 6229, "roughEstimateOfTTFB": 607}, + {"url": "https://www.mozilla.org/en-US/", "roughEstimateOfFCP": 2359, "optimisticFCP": 2359, "pessimisticFCP": 2359, "roughEstimateOfFMP": 2359, "optimisticFMP": 2359, "pessimisticFMP": 2359, "roughEstimateOfTTI": 6012, "optimisticTTI": 5596, "pessimisticTTI": 6353, "roughEstimateOfSI": 2454, "optimisticSI": 801, "pessimisticSI": 3334, "roughEstimateOfLCP": 5913, "optimisticLCP": 5596, "pessimisticLCP": 6229, "roughEstimateOfTTFB": 607}, {"url": "https://www.msn.com/", "roughEstimateOfFCP": 2174, "optimisticFCP": 2094, "pessimisticFCP": 2255, "roughEstimateOfFMP": 2521, "optimisticFMP": 2094, "pessimisticFMP": 2948, "roughEstimateOfTTI": 11623, "optimisticTTI": 10136, "pessimisticTTI": 12839, "roughEstimateOfSI": 4254, "optimisticSI": 1381, "pessimisticSI": 5803, "roughEstimateOfLCP": 3317, "optimisticLCP": 3204, "pessimisticLCP": 3430, "roughEstimateOfTTFB": 637}, - {"url": "https://www.netflix.com/", "roughEstimateOfFCP": 4341, "optimisticFCP": 4341, "pessimisticFCP": 4341, "roughEstimateOfFMP": 5453, "optimisticFMP": 5391, "pessimisticFMP": 5514, "roughEstimateOfTTI": 9224, "optimisticTTI": 6484, "pessimisticTTI": 11465, "roughEstimateOfSI": 4341, "optimisticSI": 871, "pessimisticSI": 5668, "roughEstimateOfLCP": 7699, "optimisticLCP": 6949, "pessimisticLCP": 8449, "roughEstimateOfTTFB": 609}, - {"url": "https://www.nih.gov/", "roughEstimateOfFCP": 4150, "optimisticFCP": 4150, "pessimisticFCP": 4150, "roughEstimateOfFMP": 4590, "optimisticFMP": 4397, "pessimisticFMP": 4784, "roughEstimateOfTTI": 6676, "optimisticTTI": 5680, "pessimisticTTI": 7491, "roughEstimateOfSI": 4150, "optimisticSI": 830, "pessimisticSI": 5685, "roughEstimateOfLCP": 6493, "optimisticLCP": 6028, "pessimisticLCP": 6958, "roughEstimateOfTTFB": 604}, + {"url": "https://www.netflix.com/", "roughEstimateOfFCP": 4341, "optimisticFCP": 4341, "pessimisticFCP": 4341, "roughEstimateOfFMP": 5453, "optimisticFMP": 5391, "pessimisticFMP": 5514, "roughEstimateOfTTI": 9433, "optimisticTTI": 6949, "pessimisticTTI": 11465, "roughEstimateOfSI": 4341, "optimisticSI": 871, "pessimisticSI": 5668, "roughEstimateOfLCP": 7699, "optimisticLCP": 6949, "pessimisticLCP": 8449, "roughEstimateOfTTFB": 609}, + {"url": "https://www.nih.gov/", "roughEstimateOfFCP": 4150, "optimisticFCP": 4150, "pessimisticFCP": 4150, "roughEstimateOfFMP": 4590, "optimisticFMP": 4397, "pessimisticFMP": 4784, "roughEstimateOfTTI": 6832, "optimisticTTI": 6028, "pessimisticTTI": 7491, "roughEstimateOfSI": 4150, "optimisticSI": 830, "pessimisticSI": 5685, "roughEstimateOfLCP": 6493, "optimisticLCP": 6028, "pessimisticLCP": 6958, "roughEstimateOfTTFB": 604}, {"url": "https://www.ning.com/", "roughEstimateOfFCP": 2106, "optimisticFCP": 2106, "pessimisticFCP": 2106, "roughEstimateOfFMP": 3209, "optimisticFMP": 2497, "pessimisticFMP": 3921, "roughEstimateOfTTI": 17826, "optimisticTTI": 15079, "pessimisticTTI": 20073, "roughEstimateOfSI": 5445, "optimisticSI": 1385, "pessimisticSI": 8765, "roughEstimateOfLCP": 5814, "optimisticLCP": 4524, "pessimisticLCP": 7103, "roughEstimateOfTTFB": 601}, {"url": "https://www.nokia.com/", "roughEstimateOfFCP": 2460, "optimisticFCP": 2460, "pessimisticFCP": 2460, "roughEstimateOfFMP": 2460, "optimisticFMP": 2460, "pessimisticFMP": 2460, "roughEstimateOfTTI": 12817, "optimisticTTI": 12240, "pessimisticTTI": 13288, "roughEstimateOfSI": 4297, "optimisticSI": 1367, "pessimisticSI": 5958, "roughEstimateOfLCP": 6452, "optimisticLCP": 6452, "pessimisticLCP": 6452, "roughEstimateOfTTFB": 614}, {"url": "https://www.ocn.ne.jp/", "roughEstimateOfFCP": 3720, "optimisticFCP": 3720, "pessimisticFCP": 3720, "roughEstimateOfFMP": 3720, "optimisticFMP": 3720, "pessimisticFMP": 3720, "roughEstimateOfTTI": 11094, "optimisticTTI": 9846, "pessimisticTTI": 12116, "roughEstimateOfSI": 5168, "optimisticSI": 2266, "pessimisticSI": 4990, "roughEstimateOfLCP": 4726, "optimisticLCP": 4484, "pessimisticLCP": 4969, "roughEstimateOfTTFB": 1581}, @@ -65,14 +65,14 @@ {"url": "https://www.scribd.com/", "roughEstimateOfFCP": 2099, "optimisticFCP": 2099, "pessimisticFCP": 2099, "roughEstimateOfFMP": 2099, "optimisticFMP": 2099, "pessimisticFMP": 2099, "roughEstimateOfTTI": 10588, "optimisticTTI": 9860, "pessimisticTTI": 11183, "roughEstimateOfSI": 3254, "optimisticSI": 873, "pessimisticSI": 5079, "roughEstimateOfLCP": 8528, "optimisticLCP": 7621, "pessimisticLCP": 9435, "roughEstimateOfTTFB": 635}, {"url": "https://www.shopping.com/", "roughEstimateOfFCP": 2801, "optimisticFCP": 2488, "pessimisticFCP": 3114, "roughEstimateOfFMP": 2801, "optimisticFMP": 2488, "pessimisticFMP": 3114, "roughEstimateOfTTI": 5626, "optimisticTTI": 5147, "pessimisticTTI": 6018, "roughEstimateOfSI": 3111, "optimisticSI": 1210, "pessimisticSI": 3543, "roughEstimateOfLCP": 4342, "optimisticLCP": 4342, "pessimisticLCP": 4342, "roughEstimateOfTTFB": 612}, {"url": "https://www.skype.com/en/", "roughEstimateOfFCP": 2614, "optimisticFCP": 2614, "pessimisticFCP": 2614, "roughEstimateOfFMP": 2862, "optimisticFMP": 2614, "pessimisticFMP": 3109, "roughEstimateOfTTI": 6591, "optimisticTTI": 5957, "pessimisticTTI": 7110, "roughEstimateOfSI": 3199, "optimisticSI": 1120, "pessimisticSI": 4078, "roughEstimateOfLCP": 5043, "optimisticLCP": 5043, "pessimisticLCP": 5043, "roughEstimateOfTTFB": 716}, - {"url": "https://www.so-net.ne.jp/m/", "roughEstimateOfFCP": 4187, "optimisticFCP": 3225, "pessimisticFCP": 5150, "roughEstimateOfFMP": 4187, "optimisticFMP": 3225, "pessimisticFMP": 5150, "roughEstimateOfTTI": 9210, "optimisticTTI": 6872, "pessimisticTTI": 11123, "roughEstimateOfSI": 6563, "optimisticSI": 2439, "pessimisticSI": 7870, "roughEstimateOfLCP": 8523, "optimisticLCP": 7442, "pessimisticLCP": 9604, "roughEstimateOfTTFB": 612}, + {"url": "https://www.so-net.ne.jp/m/", "roughEstimateOfFCP": 4187, "optimisticFCP": 3225, "pessimisticFCP": 5150, "roughEstimateOfFMP": 4187, "optimisticFMP": 3225, "pessimisticFMP": 5150, "roughEstimateOfTTI": 9467, "optimisticTTI": 7442, "pessimisticTTI": 11123, "roughEstimateOfSI": 6563, "optimisticSI": 2439, "pessimisticSI": 7870, "roughEstimateOfLCP": 8523, "optimisticLCP": 7442, "pessimisticLCP": 9604, "roughEstimateOfTTFB": 612}, {"url": "https://www.symantec.com/", "roughEstimateOfFCP": 3489, "optimisticFCP": 3303, "pessimisticFCP": 3675, "roughEstimateOfFMP": 3503, "optimisticFMP": 3303, "pessimisticFMP": 3703, "roughEstimateOfTTI": 12176, "optimisticTTI": 9215, "pessimisticTTI": 14599, "roughEstimateOfSI": 5628, "optimisticSI": 2165, "pessimisticSI": 6492, "roughEstimateOfLCP": 9914, "optimisticLCP": 8374, "pessimisticLCP": 11454, "roughEstimateOfTTFB": 666}, {"url": "https://www.thestar.com.my/", "roughEstimateOfFCP": 3657, "optimisticFCP": 2259, "pessimisticFCP": 5056, "roughEstimateOfFMP": 3657, "optimisticFMP": 2259, "pessimisticFMP": 5056, "roughEstimateOfTTI": 23712, "optimisticTTI": 18899, "pessimisticTTI": 27650, "roughEstimateOfSI": 12420, "optimisticSI": 5315, "pessimisticSI": 12449, "roughEstimateOfLCP": 14197, "optimisticLCP": 12818, "pessimisticLCP": 15576, "roughEstimateOfTTFB": 979}, - {"url": "https://www.tianya.cn/m/", "roughEstimateOfFCP": 3505, "optimisticFCP": 3505, "pessimisticFCP": 3505, "roughEstimateOfFMP": 3577, "optimisticFMP": 3505, "pessimisticFMP": 3650, "roughEstimateOfTTI": 6030, "optimisticTTI": 5301, "pessimisticTTI": 6628, "roughEstimateOfSI": 13744, "optimisticSI": 8681, "pessimisticSI": 3978, "roughEstimateOfLCP": 7420, "optimisticLCP": 7050, "pessimisticLCP": 7790, "roughEstimateOfTTFB": 871}, + {"url": "https://www.tianya.cn/m/", "roughEstimateOfFCP": 3505, "optimisticFCP": 3505, "pessimisticFCP": 3505, "roughEstimateOfFMP": 3577, "optimisticFMP": 3505, "pessimisticFMP": 3650, "roughEstimateOfTTI": 7457, "optimisticTTI": 7050, "pessimisticTTI": 7790, "roughEstimateOfSI": 13744, "optimisticSI": 8681, "pessimisticSI": 3978, "roughEstimateOfLCP": 7420, "optimisticLCP": 7050, "pessimisticLCP": 7790, "roughEstimateOfTTFB": 871}, {"url": "https://www.torrentz.com/", "roughEstimateOfFCP": 817, "optimisticFCP": 817, "pessimisticFCP": 817, "roughEstimateOfFMP": 817, "optimisticFMP": 817, "pessimisticFMP": 817, "roughEstimateOfTTI": 817, "optimisticTTI": 817, "pessimisticTTI": 817, "roughEstimateOfSI": 909, "optimisticSI": 416, "pessimisticSI": 817, "roughEstimateOfLCP": 817, "optimisticLCP": 817, "pessimisticLCP": 817, "roughEstimateOfTTFB": 608}, {"url": "https://www.tumblr.com/", "roughEstimateOfFCP": 2508, "optimisticFCP": 2508, "pessimisticFCP": 2508, "roughEstimateOfFMP": 2508, "optimisticFMP": 2508, "pessimisticFMP": 2508, "roughEstimateOfTTI": 9868, "optimisticTTI": 9611, "pessimisticTTI": 10079, "roughEstimateOfSI": 3125, "optimisticSI": 628, "pessimisticSI": 5615, "roughEstimateOfLCP": 8679, "optimisticLCP": 8679, "pessimisticLCP": 8679, "roughEstimateOfTTFB": 637}, {"url": "https://www.twitpic.com/", "roughEstimateOfFCP": 835, "optimisticFCP": 835, "pessimisticFCP": 835, "roughEstimateOfFMP": 835, "optimisticFMP": 835, "pessimisticFMP": 835, "roughEstimateOfTTI": 835, "optimisticTTI": 835, "pessimisticTTI": 835, "roughEstimateOfSI": 835, "optimisticSI": 121, "pessimisticSI": 876, "roughEstimateOfLCP": 835, "optimisticLCP": 835, "pessimisticLCP": 835, "roughEstimateOfTTFB": 601}, - {"url": "https://www.typepad.com/", "roughEstimateOfFCP": 2610, "optimisticFCP": 2610, "pessimisticFCP": 2610, "roughEstimateOfFMP": 3295, "optimisticFMP": 3092, "pessimisticFMP": 3498, "roughEstimateOfTTI": 3613, "optimisticTTI": 3659, "pessimisticTTI": 3575, "roughEstimateOfSI": 2633, "optimisticSI": 1009, "pessimisticSI": 3051, "roughEstimateOfLCP": 6037, "optimisticLCP": 6118, "pessimisticLCP": 5957, "roughEstimateOfTTFB": 789}, + {"url": "https://www.typepad.com/", "roughEstimateOfFCP": 2610, "optimisticFCP": 2610, "pessimisticFCP": 2610, "roughEstimateOfFMP": 3295, "optimisticFMP": 3092, "pessimisticFMP": 3498, "roughEstimateOfTTI": 6037, "optimisticTTI": 6118, "pessimisticTTI": 5957, "roughEstimateOfSI": 2633, "optimisticSI": 1009, "pessimisticSI": 3051, "roughEstimateOfLCP": 6037, "optimisticLCP": 6118, "pessimisticLCP": 5957, "roughEstimateOfTTFB": 789}, {"url": "https://www.verizonwireless.com/", "roughEstimateOfFCP": 2977, "optimisticFCP": 2977, "pessimisticFCP": 2977, "roughEstimateOfFMP": 4054, "optimisticFMP": 4054, "pessimisticFMP": 4054, "roughEstimateOfTTI": 22912, "optimisticTTI": 21340, "pessimisticTTI": 24198, "roughEstimateOfSI": 4375, "optimisticSI": 870, "pessimisticSI": 7892, "roughEstimateOfLCP": 7119, "optimisticLCP": 7119, "pessimisticLCP": 7119, "roughEstimateOfTTFB": 640}, {"url": "https://www.vevo.com/", "roughEstimateOfFCP": 5291, "optimisticFCP": 5291, "pessimisticFCP": 5291, "roughEstimateOfFMP": 6391, "optimisticFMP": 5619, "pessimisticFMP": 7163, "roughEstimateOfTTI": 23350, "optimisticTTI": 18496, "pessimisticTTI": 27321, "roughEstimateOfSI": 12286, "optimisticSI": 6002, "pessimisticSI": 9707, "roughEstimateOfLCP": 8306, "optimisticLCP": 7814, "pessimisticLCP": 8798, "roughEstimateOfTTFB": 772}, {"url": "https://www.wikipedia.org/", "roughEstimateOfFCP": 1458, "optimisticFCP": 1458, "pessimisticFCP": 1458, "roughEstimateOfFMP": 1472, "optimisticFMP": 1458, "pessimisticFMP": 1487, "roughEstimateOfTTI": 1745, "optimisticTTI": 1593, "pessimisticTTI": 1870, "roughEstimateOfSI": 1458, "optimisticSI": 579, "pessimisticSI": 1614, "roughEstimateOfLCP": 1472, "optimisticLCP": 1458, "pessimisticLCP": 1487, "roughEstimateOfTTFB": 603}, diff --git a/core/test/fixtures/user-flows/reports/sample-flow-result.json b/core/test/fixtures/user-flows/reports/sample-flow-result.json index 592291e713d9..eb2656963b40 100644 --- a/core/test/fixtures/user-flows/reports/sample-flow-result.json +++ b/core/test/fixtures/user-flows/reports/sample-flow-result.json @@ -331,11 +331,11 @@ "id": "interactive", "title": "Time to Interactive", "description": "Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).", - "score": 0.95, + "score": 0.93, "scoreDisplayMode": "numeric", - "numericValue": 3092.1940000000004, + "numericValue": 3410.384000000001, "numericUnit": "millisecond", - "displayValue": "3.1 s" + "displayValue": "3.4 s" }, "user-timings": { "id": "user-timings", @@ -1371,7 +1371,7 @@ "description": "Collects all available metrics.", "score": 1, "scoreDisplayMode": "informative", - "numericValue": 3092, + "numericValue": 3410, "numericUnit": "millisecond", "details": { "type": "debugdata", @@ -1380,7 +1380,7 @@ "firstContentfulPaint": 2520, "firstMeaningfulPaint": 2520, "largestContentfulPaint": 3410, - "interactive": 3092, + "interactive": 3410, "speedIndex": 2520, "totalBlockingTime": 140, "maxPotentialFID": 150, @@ -7060,7 +7060,7 @@ }, { "values": { - "timeInMs": 3092.1940000000004 + "timeInMs": 3410.384000000001 }, "path": "audits.interactive.displayValue" }, @@ -17893,11 +17893,11 @@ "id": "total-blocking-time", "title": "Total Blocking Time", "description": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).", - "score": 1, + "score": 0.99, "scoreDisplayMode": "numeric", - "numericValue": 57, + "numericValue": 75.5, "numericUnit": "millisecond", - "displayValue": "60 ms", + "displayValue": "80 ms", "scoringOptions": { "p10": 200, "median": 600 @@ -18004,11 +18004,11 @@ "id": "interactive", "title": "Time to Interactive", "description": "Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).", - "score": 1, + "score": 0.99, "scoreDisplayMode": "numeric", - "numericValue": 1688.5037302178957, + "numericValue": 2107.00424, "numericUnit": "millisecond", - "displayValue": "1.7 s" + "displayValue": "2.1 s" }, "user-timings": { "id": "user-timings", @@ -18177,7 +18177,7 @@ "numericUnit": "millisecond", "displayValue": "0.9 s", "metricSavings": { - "TBT": 50 + "TBT": 100 }, "details": { "type": "table", @@ -19085,7 +19085,7 @@ "description": "Collects all available metrics.", "score": 1, "scoreDisplayMode": "informative", - "numericValue": 1689, + "numericValue": 2107, "numericUnit": "millisecond", "details": { "type": "debugdata", @@ -19094,9 +19094,9 @@ "firstContentfulPaint": 933, "firstMeaningfulPaint": 933, "largestContentfulPaint": 2024, - "interactive": 1689, + "interactive": 2107, "speedIndex": 933, - "totalBlockingTime": 57, + "totalBlockingTime": 76, "maxPotentialFID": 87, "cumulativeLayoutShift": 0.020352129288190492, "cumulativeLayoutShiftMainFrame": 0.020352129288190492, @@ -19576,7 +19576,7 @@ "scoreDisplayMode": "informative", "displayValue": "4 long tasks found", "metricSavings": { - "TBT": 50 + "TBT": 100 }, "details": { "type": "table", @@ -25000,7 +25000,7 @@ }, { "values": { - "timeInMs": 1688.5037302178957 + "timeInMs": 2107.00424 }, "path": "audits.interactive.displayValue" }, @@ -25044,7 +25044,7 @@ "core/lib/i18n/i18n.js | ms": [ { "values": { - "timeInMs": 57 + "timeInMs": 75.5 }, "path": "audits[total-blocking-time].displayValue" }, diff --git a/core/test/lib/lantern/metrics/interactive-test.js b/core/test/lib/lantern/metrics/interactive-test.js index 1c9ecd259bb2..5b47c42980bd 100644 --- a/core/test/lib/lantern/metrics/interactive-test.js +++ b/core/test/lib/lantern/metrics/interactive-test.js @@ -7,7 +7,8 @@ import assert from 'assert/strict'; import {Interactive} from '../../../../lib/lantern/metrics/interactive.js'; -import {FirstMeaningfulPaint} from '../../../../lib/lantern/metrics/first-meaningful-paint.js'; +import {FirstContentfulPaint} from '../../../../lib/lantern/metrics/first-contentful-paint.js'; +import {LargestContentfulPaint} from '../../../../lib/lantern/metrics/largest-contentful-paint.js'; import {getComputationDataFromFixture} from './metric-test-utils.js'; import {readJson} from '../../../test-utils.js'; @@ -20,7 +21,9 @@ describe('Metrics: Lantern TTI', () => { it('should compute predicted value', async () => { const data = await getComputationDataFromFixture({trace, devtoolsLog}); const result = await Interactive.compute(data, { - fmpResult: await FirstMeaningfulPaint.compute(data), + lcpResult: await LargestContentfulPaint.compute(data, { + fcpResult: await FirstContentfulPaint.compute(data), + }), }); expect({ @@ -40,7 +43,9 @@ describe('Metrics: Lantern TTI', () => { devtoolsLog: iframeDevtoolsLog, }); const result = await Interactive.compute(data, { - fmpResult: await FirstMeaningfulPaint.compute(data), + lcpResult: await LargestContentfulPaint.compute(data, { + fcpResult: await FirstContentfulPaint.compute(data), + }), }); expect({ diff --git a/core/test/results/sample_v2.json b/core/test/results/sample_v2.json index ad51fd42d87f..26b23ae47d6d 100644 --- a/core/test/results/sample_v2.json +++ b/core/test/results/sample_v2.json @@ -7919,7 +7919,7 @@ }, { "startTime": 0, - "name": "lh:computed:LanternFirstMeaningfulPaint", + "name": "lh:computed:LanternLargestContentfulPaint", "duration": 100, "entryType": "measure" }, @@ -8157,12 +8157,6 @@ "duration": 100, "entryType": "measure" }, - { - "startTime": 0, - "name": "lh:computed:LanternLargestContentfulPaint", - "duration": 100, - "entryType": "measure" - }, { "startTime": 0, "name": "lh:audit:csp-xss", From 43ed9e5ea96f97e0645a779183c0253d4edfb018 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 6 Jun 2024 14:43:11 -0700 Subject: [PATCH 2/4] fix tests --- .../byte-efficiency/offscreen-images-test.js | 12 ++++++-- core/test/audits/dobetterweb/dom-size-test.js | 1 + core/test/audits/long-tasks-test.js | 1 + core/test/audits/redirects-test.js | 7 ++++- core/test/audits/third-party-facades-test.js | 28 ++++++++++++++++--- core/test/computed/tbt-impact-tasks-test.js | 1 + 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/core/test/audits/byte-efficiency/offscreen-images-test.js b/core/test/audits/byte-efficiency/offscreen-images-test.js index 11f6617b7727..e72ebc8ac0e2 100644 --- a/core/test/audits/byte-efficiency/offscreen-images-test.js +++ b/core/test/audits/byte-efficiency/offscreen-images-test.js @@ -458,7 +458,11 @@ describe('OffscreenImages audit', () => { src: recordB.url, }), ], - traces: {defaultPass: createTestTrace({topLevelTasks, networkRecords})}, + traces: {defaultPass: createTestTrace({ + largestContentfulPaint: 15, + topLevelTasks, + networkRecords, + })}, devtoolsLogs: {defaultPass: devtoolsLog}, URL: { requestedUrl: recordA.url, @@ -523,7 +527,11 @@ describe('OffscreenImages audit', () => { src: recordB.url, }), ], - traces: {defaultPass: createTestTrace({topLevelTasks, networkRecords})}, + traces: {defaultPass: createTestTrace({ + largestContentfulPaint: 15, + topLevelTasks, + networkRecords, + })}, devtoolsLogs: {defaultPass: devtoolsLog}, URL: { requestedUrl: recordA.url, diff --git a/core/test/audits/dobetterweb/dom-size-test.js b/core/test/audits/dobetterweb/dom-size-test.js index 8e8d62b4bbf6..ba68bef5cc4c 100644 --- a/core/test/audits/dobetterweb/dom-size-test.js +++ b/core/test/audits/dobetterweb/dom-size-test.js @@ -20,6 +20,7 @@ describe('DOMSize audit', () => { const mainDocumentUrl = 'https://example.com/'; const networkRecords = [{url: mainDocumentUrl, priority: 'High'}]; const trace = createTestTrace({ + largestContentfulPaint: 15, topLevelTasks: [ {ts: 1000, duration: 1000, children: [ {ts: 1100, duration: 200, eventName: 'ScheduleStyleRecalculation'}, diff --git a/core/test/audits/long-tasks-test.js b/core/test/audits/long-tasks-test.js index 1c5a963e53a9..0f21dd2228c5 100644 --- a/core/test/audits/long-tasks-test.js +++ b/core/test/audits/long-tasks-test.js @@ -52,6 +52,7 @@ function generateTraceWithLongTasks(args) { traceTasks.push(task); } return createTestTrace({ + largestContentfulPaint: BASE_TS + 15, topLevelTasks: traceTasks, timeOrigin: BASE_TS, traceEnd: BASE_TS + 20_000, diff --git a/core/test/audits/redirects-test.js b/core/test/audits/redirects-test.js index d68949c967a1..fa8aecb92f0b 100644 --- a/core/test/audits/redirects-test.js +++ b/core/test/audits/redirects-test.js @@ -129,7 +129,12 @@ describe('Performance: Redirects audit', () => { const devtoolsLog = networkRecordsToDevtoolsLog(networkRecords); const frameUrl = networkRecords[0].url; - const trace = createTestTrace({frameUrl, traceEnd: 5000, networkRecords}); + const trace = createTestTrace({ + frameUrl, + largestContentfulPaint: 15, + traceEnd: 5000, + networkRecords, + }); const navStart = trace.traceEvents.find(e => e.name === 'navigationStart'); navStart.args.data.navigationId = '1'; diff --git a/core/test/audits/third-party-facades-test.js b/core/test/audits/third-party-facades-test.js index a0f3b428a5ae..cbf6f8c3334f 100644 --- a/core/test/audits/third-party-facades-test.js +++ b/core/test/audits/third-party-facades-test.js @@ -44,7 +44,12 @@ describe('Third party facades audit', () => { devtoolsLogs: { defaultPass: networkRecordsToDevtoolsLog(networkRecords), }, - traces: {defaultPass: createTestTrace({timeOrigin: 0, traceEnd: 2000, networkRecords})}, + traces: {defaultPass: createTestTrace({ + timeOrigin: 0, + largestContentfulPaint: 15, + traceEnd: 2000, + networkRecords, + })}, URL: { requestedUrl: 'https://example.com', mainDocumentUrl: 'https://example.com', @@ -99,7 +104,12 @@ describe('Third party facades audit', () => { devtoolsLogs: { defaultPass: networkRecordsToDevtoolsLog(networkRecords), }, - traces: {defaultPass: createTestTrace({timeOrigin: 0, traceEnd: 2000, networkRecords})}, + traces: {defaultPass: createTestTrace({ + timeOrigin: 0, + largestContentfulPaint: 15, + traceEnd: 2000, + networkRecords, + })}, URL: { requestedUrl: 'https://example.com', mainDocumentUrl: 'https://example.com', @@ -175,7 +185,12 @@ describe('Third party facades audit', () => { devtoolsLogs: { defaultPass: networkRecordsToDevtoolsLog(networkRecords), }, - traces: {defaultPass: createTestTrace({timeOrigin: 0, traceEnd: 2000, networkRecords})}, + traces: {defaultPass: createTestTrace({ + timeOrigin: 0, + largestContentfulPaint: 15, + traceEnd: 2000, + networkRecords, + })}, URL: { requestedUrl: 'https://example.com', mainDocumentUrl: 'https://example.com', @@ -226,7 +241,12 @@ describe('Third party facades audit', () => { devtoolsLogs: { defaultPass: networkRecordsToDevtoolsLog(networkRecords), }, - traces: {defaultPass: createTestTrace({timeOrigin: 0, traceEnd: 2000, networkRecords})}, + traces: {defaultPass: createTestTrace({ + timeOrigin: 0, + largestContentfulPaint: 15, + traceEnd: 2000, + networkRecords, + })}, URL: { requestedUrl: 'https://intercomcdn.com', mainDocumentUrl: 'https://intercomcdn.com', diff --git a/core/test/computed/tbt-impact-tasks-test.js b/core/test/computed/tbt-impact-tasks-test.js index 949091b5b2b0..bfed8fff3ffc 100644 --- a/core/test/computed/tbt-impact-tasks-test.js +++ b/core/test/computed/tbt-impact-tasks-test.js @@ -34,6 +34,7 @@ describe('TBTImpactTasks', () => { beforeEach(() => { metricComputationData = { trace: createTestTrace({ + largestContentfulPaint: 15, traceEnd: 10_000, frameUrl: mainDocumentUrl, topLevelTasks: [ From 72d6820315468c7f5308d5b227f4e439000c0b6b Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 6 Jun 2024 14:52:19 -0700 Subject: [PATCH 3/4] fix stale comments --- core/audits/metrics/interactive.js | 2 +- core/test/computed/metrics/interactive-test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/audits/metrics/interactive.js b/core/audits/metrics/interactive.js index dcc520383f27..e296cbdd0034 100644 --- a/core/audits/metrics/interactive.js +++ b/core/audits/metrics/interactive.js @@ -18,7 +18,7 @@ const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings); /** * @fileoverview This audit identifies the time the page is "consistently interactive". - * Looks for the first period of at least 5 seconds after FMP where both CPU and network were quiet, + * Looks for the first period of at least 5 seconds after FCP where both CPU and network were quiet, * and returns the timestamp of the beginning of the CPU quiet period. * @see https://docs.google.com/document/d/1GGiI9-7KeY3TPqS3YT271upUVimo-XiL5mwWorDUD4c/edit# */ diff --git a/core/test/computed/metrics/interactive-test.js b/core/test/computed/metrics/interactive-test.js index 569c1621e55f..d629631059ec 100644 --- a/core/test/computed/metrics/interactive-test.js +++ b/core/test/computed/metrics/interactive-test.js @@ -105,7 +105,7 @@ describe('Metrics: TTI', () => { assert.deepEqual(result.networkQuietPeriod, {start: 0, end: traceEnd / 1000}); }); - it('should throw when trace ended too soon after FMP', () => { + it('should throw when trace ended too soon after FCP', () => { const timeOrigin = 220023532; const firstContentfulPaint = 2500 * 1000 + timeOrigin; const traceEnd = 5000 * 1000 + timeOrigin; From 68638c6519508dbcff69666fe78e78a7739d81d9 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 6 Jun 2024 14:53:09 -0700 Subject: [PATCH 4/4] fix stale comments --- core/test/computed/metrics/interactive-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/test/computed/metrics/interactive-test.js b/core/test/computed/metrics/interactive-test.js index d629631059ec..8161a7cd1751 100644 --- a/core/test/computed/metrics/interactive-test.js +++ b/core/test/computed/metrics/interactive-test.js @@ -190,7 +190,7 @@ describe('Metrics: TTI', () => { ); const cpu = [ - // quiet period before FMP + // quiet period before FCP {start: 9000, end: 9900}, {start: 11000, end: 13000}, // quiet period during network activity