diff --git a/cli/test/smokehouse/test-definitions/perf-preload.js b/cli/test/smokehouse/test-definitions/perf-preload.js index e1f5299861ea..a7c205c72bf1 100644 --- a/cli/test/smokehouse/test-definitions/perf-preload.js +++ b/cli/test/smokehouse/test-definitions/perf-preload.js @@ -52,9 +52,6 @@ const expectations = { 'speed-index': { score: '>=0.80', // primarily just making sure it didn't fail/go crazy, specific value isn't that important }, - 'first-meaningful-paint': { - score: '>=0.90', // primarily just making sure it didn't fail/go crazy, specific value isn't that important - }, 'interactive': { score: '>=0.90', // primarily just making sure it didn't fail/go crazy, specific value isn't that important }, diff --git a/core/audits/metrics/first-meaningful-paint.js b/core/audits/metrics/first-meaningful-paint.js index 85e6909c8f3f..e5d2054dd728 100644 --- a/core/audits/metrics/first-meaningful-paint.js +++ b/core/audits/metrics/first-meaningful-paint.js @@ -4,9 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +// TODO(COMPAT): This is just a shell. Remove in future breaking release. + import {Audit} from '../audit.js'; import * as i18n from '../../lib/i18n/i18n.js'; -import {FirstMeaningfulPaint as ComputedFmp} from '../../computed/metrics/first-meaningful-paint.js'; const UIStrings = { /** Description of the First Meaningful Paint (FMP) metric, which marks the time at which a majority of the content has been painted by the browser. This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */ @@ -32,55 +33,12 @@ class FirstMeaningfulPaint extends Audit { } /** - * @return {{mobile: {scoring: LH.Audit.ScoreOptions}, desktop: {scoring: LH.Audit.ScoreOptions}}} - */ - static get defaultOptions() { - return { - mobile: { - // 25th and 5th percentiles HTTPArchive -> median and PODR, then p10 derived from them. - // https://bigquery.cloud.google.com/table/httparchive:lighthouse.2018_04_01_mobile?pli=1 - // see https://www.desmos.com/calculator/i4znkdccut - scoring: { - p10: 2336, - median: 4000, - }, - }, - desktop: { - // SELECT QUANTILES(renderStart, 21) FROM [httparchive:summary_pages.2018_12_15_desktop] LIMIT 1000 - scoring: { - p10: 934, - median: 1600, - }, - }, - }; - } - - /** - * Audits the page to give a score for First Meaningful Paint. - * @see https://github.com/GoogleChrome/lighthouse/issues/26 - * @see https://docs.google.com/document/d/1BR94tJdZLsin5poeet0XoTW60M0SjvOJQttKT-JK8HI/view - * @param {LH.Artifacts} artifacts The artifacts from the gather phase. - * @param {LH.Audit.Context} context * @return {Promise} */ - static async audit(artifacts, context) { - const trace = artifacts.traces[Audit.DEFAULT_PASS]; - const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS]; - const gatherContext = artifacts.GatherContext; - const metricComputationData = {trace, devtoolsLog, gatherContext, - settings: context.settings, URL: artifacts.URL}; - const metricResult = await ComputedFmp.request(metricComputationData, context); - const options = context.options[context.settings.formFactor]; - - + static async audit() { return { - score: Audit.computeLogNormalScore( - options.scoring, - metricResult.timing - ), - numericValue: metricResult.timing, - numericUnit: 'millisecond', - displayValue: str_(i18n.UIStrings.seconds, {timeInMs: metricResult.timing}), + score: null, + notApplicable: true, }; } } diff --git a/core/audits/predictive-perf.js b/core/audits/predictive-perf.js index ad3170f6318a..d21ce4383e6a 100644 --- a/core/audits/predictive-perf.js +++ b/core/audits/predictive-perf.js @@ -7,7 +7,6 @@ import {Audit} from './audit.js'; import * as i18n from '../lib/i18n/i18n.js'; import {LanternFirstContentfulPaint} from '../computed/metrics/lantern-first-contentful-paint.js'; -import {LanternFirstMeaningfulPaint} from '../computed/metrics/lantern-first-meaningful-paint.js'; import {LanternInteractive} from '../computed/metrics/lantern-interactive.js'; import {LanternSpeedIndex} from '../computed/metrics/lantern-speed-index.js'; import {LanternLargestContentfulPaint} from '../computed/metrics/lantern-largest-contentful-paint.js'; @@ -52,7 +51,6 @@ class PredictivePerf extends Audit { const settings = JSON.parse(JSON.stringify(defaultSettings)); // Use default settings. const computationData = {trace, devtoolsLog, gatherContext, settings, URL}; const fcp = await LanternFirstContentfulPaint.request(computationData, context); - const fmp = await LanternFirstMeaningfulPaint.request(computationData, context); const tti = await LanternInteractive.request(computationData, context); const si = await LanternSpeedIndex.request(computationData, context); const lcp = await LanternLargestContentfulPaint.request(computationData, context); @@ -64,10 +62,6 @@ class PredictivePerf extends Audit { optimisticFCP: fcp.optimisticEstimate.timeInMs, pessimisticFCP: fcp.pessimisticEstimate.timeInMs, - roughEstimateOfFMP: fmp.timing, - optimisticFMP: fmp.optimisticEstimate.timeInMs, - pessimisticFMP: fmp.pessimisticEstimate.timeInMs, - roughEstimateOfTTI: tti.timing, optimisticTTI: tti.optimisticEstimate.timeInMs, pessimisticTTI: tti.pessimisticEstimate.timeInMs, diff --git a/core/computed/metrics/first-meaningful-paint.js b/core/computed/metrics/first-meaningful-paint.js deleted file mode 100644 index b061c205db2e..000000000000 --- a/core/computed/metrics/first-meaningful-paint.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import {makeComputedArtifact} from '../computed-artifact.js'; -import {NavigationMetric} from './navigation-metric.js'; -import {LighthouseError} from '../../lib/lh-error.js'; -import {LanternFirstMeaningfulPaint} from './lantern-first-meaningful-paint.js'; - -class FirstMeaningfulPaint extends NavigationMetric { - /** - * @param {LH.Artifacts.NavigationMetricComputationData} data - * @param {LH.Artifacts.ComputedContext} context - * @return {Promise} - */ - static computeSimulatedMetric(data, context) { - const metricData = NavigationMetric.getMetricComputationInput(data); - return LanternFirstMeaningfulPaint.request(metricData, context); - } - - /** - * @param {LH.Artifacts.NavigationMetricComputationData} data - * @return {Promise} - */ - static async computeObservedMetric(data) { - const {processedNavigation} = data; - if (processedNavigation.timings.firstMeaningfulPaint === undefined) { - throw new LighthouseError(LighthouseError.errors.NO_FMP); - } - - return { - timing: processedNavigation.timings.firstMeaningfulPaint, - timestamp: processedNavigation.timestamps.firstMeaningfulPaint, - }; - } -} - -const FirstMeaningfulPaintComputed = makeComputedArtifact( - FirstMeaningfulPaint, - ['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL'] -); -export {FirstMeaningfulPaintComputed as FirstMeaningfulPaint}; diff --git a/core/computed/metrics/lantern-first-meaningful-paint.js b/core/computed/metrics/lantern-first-meaningful-paint.js deleted file mode 100644 index 6606bc5ea6d9..000000000000 --- a/core/computed/metrics/lantern-first-meaningful-paint.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import {makeComputedArtifact} from '../computed-artifact.js'; -import {getComputationDataParams, lanternErrorAdapter} from './lantern-metric.js'; -import {FirstMeaningfulPaint} from '../../lib/lantern/metrics/first-meaningful-paint.js'; -import {LanternFirstContentfulPaint} from './lantern-first-contentful-paint.js'; - -/** @typedef {import('../../lib/lantern/metric.js').Extras} Extras */ - -class LanternFirstMeaningfulPaint extends FirstMeaningfulPaint { - /** - * @param {LH.Artifacts.MetricComputationDataInput} data - * @param {LH.Artifacts.ComputedContext} context - * @param {Omit=} extras - * @return {Promise} - */ - static async computeMetricWithGraphs(data, context, extras) { - return this.compute(await getComputationDataParams(data, context), extras) - .catch(lanternErrorAdapter); - } - - /** - * @param {LH.Artifacts.MetricComputationDataInput} data - * @param {LH.Artifacts.ComputedContext} context - * @return {Promise} - */ - static async compute_(data, context) { - const fcpResult = await LanternFirstContentfulPaint.request(data, context); - const metricResult = await this.computeMetricWithGraphs(data, context); - metricResult.timing = Math.max(metricResult.timing, fcpResult.timing); - return metricResult; - } -} - -const LanternFirstMeaningfulPaintComputed = makeComputedArtifact( - LanternFirstMeaningfulPaint, - ['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL'] -); -export {LanternFirstMeaningfulPaintComputed as LanternFirstMeaningfulPaint}; diff --git a/core/computed/metrics/timing-summary.js b/core/computed/metrics/timing-summary.js index d0405046cc64..85ee9d4401e1 100644 --- a/core/computed/metrics/timing-summary.js +++ b/core/computed/metrics/timing-summary.js @@ -9,7 +9,6 @@ import {ProcessedNavigation} from '../processed-navigation.js'; import {Speedline} from '../speedline.js'; import {FirstContentfulPaint} from './first-contentful-paint.js'; import {FirstContentfulPaintAllFrames} from './first-contentful-paint-all-frames.js'; -import {FirstMeaningfulPaint} from './first-meaningful-paint.js'; import {LargestContentfulPaint} from './largest-contentful-paint.js'; import {LargestContentfulPaintAllFrames} from './largest-contentful-paint-all-frames.js'; import {Interactive} from './interactive.js'; @@ -51,7 +50,6 @@ class TimingSummary { const speedline = await Speedline.request(trace, context); const firstContentfulPaint = await requestOrUndefined(FirstContentfulPaint, metricComputationData); const firstContentfulPaintAllFrames = await requestOrUndefined(FirstContentfulPaintAllFrames, metricComputationData); - const firstMeaningfulPaint = await requestOrUndefined(FirstMeaningfulPaint, metricComputationData); const largestContentfulPaint = await requestOrUndefined(LargestContentfulPaint, metricComputationData); const largestContentfulPaintAllFrames = await requestOrUndefined(LargestContentfulPaintAllFrames, metricComputationData); const interactive = await requestOrUndefined(Interactive, metricComputationData); @@ -74,8 +72,6 @@ class TimingSummary { firstContentfulPaintTs: firstContentfulPaint?.timestamp, firstContentfulPaintAllFrames: firstContentfulPaintAllFrames?.timing, firstContentfulPaintAllFramesTs: firstContentfulPaintAllFrames?.timestamp, - firstMeaningfulPaint: firstMeaningfulPaint?.timing, - firstMeaningfulPaintTs: firstMeaningfulPaint?.timestamp, largestContentfulPaint: largestContentfulPaint?.timing, largestContentfulPaintTs: largestContentfulPaint?.timestamp, largestContentfulPaintAllFrames: largestContentfulPaintAllFrames?.timing, @@ -107,8 +103,6 @@ class TimingSummary { observedFirstContentfulPaintTs: processedNavigation?.timestamps.firstContentfulPaint, observedFirstContentfulPaintAllFrames: processedNavigation?.timings.firstContentfulPaintAllFrames, observedFirstContentfulPaintAllFramesTs: processedNavigation?.timestamps.firstContentfulPaintAllFrames, - observedFirstMeaningfulPaint: processedNavigation?.timings.firstMeaningfulPaint, - observedFirstMeaningfulPaintTs: processedNavigation?.timestamps.firstMeaningfulPaint, observedLargestContentfulPaint: processedNavigation?.timings.largestContentfulPaint, observedLargestContentfulPaintTs: processedNavigation?.timestamps.largestContentfulPaint, observedLargestContentfulPaintAllFrames: processedNavigation?.timings.largestContentfulPaintAllFrames, diff --git a/core/lib/lantern/metrics/first-meaningful-paint.js b/core/lib/lantern/metrics/first-meaningful-paint.js deleted file mode 100644 index 867be1b3ff0b..000000000000 --- a/core/lib/lantern/metrics/first-meaningful-paint.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * Copyright 2024 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import * as Lantern from '../types/lantern.js'; -import {Metric} from '../metric.js'; -import {FirstContentfulPaint} from './first-contentful-paint.js'; - -/** @typedef {import('../base-node.js').Node} Node */ - -class FirstMeaningfulPaint extends Metric { - /** - * @return {Lantern.Simulation.MetricCoefficients} - */ - static get COEFFICIENTS() { - return { - intercept: 0, - optimistic: 0.5, - pessimistic: 0.5, - }; - } - - /** - * @param {Node} dependencyGraph - * @param {LH.Artifacts.ProcessedNavigation} processedNavigation - * @return {Node} - */ - static getOptimisticGraph(dependencyGraph, processedNavigation) { - const fmp = processedNavigation.timestamps.firstMeaningfulPaint; - if (!fmp) { - throw new Error('NO_FMP'); - } - return FirstContentfulPaint.getFirstPaintBasedGraph(dependencyGraph, { - cutoffTimestamp: fmp, - // See FirstContentfulPaint's getOptimisticGraph implementation for a longer description - // of why we exclude script initiated resources here. - treatNodeAsRenderBlocking: node => - node.hasRenderBlockingPriority() && node.initiatorType !== 'script', - }); - } - - /** - * @param {Node} dependencyGraph - * @param {LH.Artifacts.ProcessedNavigation} processedNavigation - * @return {Node} - */ - static getPessimisticGraph(dependencyGraph, processedNavigation) { - const fmp = processedNavigation.timestamps.firstMeaningfulPaint; - if (!fmp) { - throw new Error('NO_FMP'); - } - - return FirstContentfulPaint.getFirstPaintBasedGraph(dependencyGraph, { - cutoffTimestamp: fmp, - treatNodeAsRenderBlocking: node => node.hasRenderBlockingPriority(), - // For pessimistic FMP we'll include *all* layout nodes - additionalCpuNodesToTreatAsRenderBlocking: node => node.didPerformLayout(), - }); - } -} - -export {FirstMeaningfulPaint}; diff --git a/core/lib/tracehouse/trace-processor.js b/core/lib/tracehouse/trace-processor.js index e145066c62dc..bdfc58a0ef50 100644 --- a/core/lib/tracehouse/trace-processor.js +++ b/core/lib/tracehouse/trace-processor.js @@ -9,7 +9,7 @@ * various tools. This artifact will take a trace and then: * * 1. Find the TracingStartedInPage and navigationStart events of our intended tab & frame. - * 2. Find the firstContentfulPaint and marked firstMeaningfulPaint events + * 2. Find the firstContentfulPaint and marked largestContentfulPaint events * 3. Isolate only the trace events from the tab's process (including all threads like compositor) * * Sort those trace events in chronological order (as order isn't guaranteed) * 4. Return all those items in one handy bundle. @@ -835,7 +835,6 @@ class TraceProcessor { firstPaint: frameTimings.timings.firstPaint, firstContentfulPaint: frameTimings.timings.firstContentfulPaint, firstContentfulPaintAllFrames: getTiming(fcpAllFramesEvt.ts), - firstMeaningfulPaint: frameTimings.timings.firstMeaningfulPaint, largestContentfulPaint: frameTimings.timings.largestContentfulPaint, largestContentfulPaintAllFrames: maybeGetTiming(lcpAllFramesEvt?.ts), load: frameTimings.timings.load, @@ -847,7 +846,6 @@ class TraceProcessor { firstPaint: frameTimings.timestamps.firstPaint, firstContentfulPaint: frameTimings.timestamps.firstContentfulPaint, firstContentfulPaintAllFrames: fcpAllFramesEvt.ts, - firstMeaningfulPaint: frameTimings.timestamps.firstMeaningfulPaint, largestContentfulPaint: frameTimings.timestamps.largestContentfulPaint, largestContentfulPaintAllFrames: lcpAllFramesEvt?.ts, load: frameTimings.timestamps.load, @@ -857,12 +855,10 @@ class TraceProcessor { firstPaintEvt: frameTimings.firstPaintEvt, firstContentfulPaintEvt: frameTimings.firstContentfulPaintEvt, firstContentfulPaintAllFramesEvt: fcpAllFramesEvt, - firstMeaningfulPaintEvt: frameTimings.firstMeaningfulPaintEvt, largestContentfulPaintEvt: frameTimings.largestContentfulPaintEvt, largestContentfulPaintAllFramesEvt: lcpAllFramesEvt, loadEvt: frameTimings.loadEvt, domContentLoadedEvt: frameTimings.domContentLoadedEvt, - fmpFellBack: frameTimings.fmpFellBack, lcpInvalidated: frameTimings.lcpInvalidated, }; } @@ -970,28 +966,6 @@ class TraceProcessor { throw this.createNoFirstContentfulPaintError(); } - // fMP will follow at/after the FP - let firstMeaningfulPaint = frameEvents.find( - e => e.name === 'firstMeaningfulPaint' && e.ts > timeOriginEvt.ts - ); - let fmpFellBack = false; - - // If there was no firstMeaningfulPaint event found in the trace, the network idle detection - // may have not been triggered before Lighthouse finished tracing. - // In this case, we'll use the last firstMeaningfulPaintCandidate we can find. - // However, if no candidates were found (a bogus trace, likely), we fail. - if (!firstMeaningfulPaint) { - const fmpCand = 'firstMeaningfulPaintCandidate'; - fmpFellBack = true; - log.verbose('TraceProcessor', - `No firstMeaningfulPaint found, falling back to last ${fmpCand}`); - const lastCandidate = frameEvents.filter(e => e.name === fmpCand).pop(); - if (!lastCandidate) { - log.verbose('TraceProcessor', 'No `firstMeaningfulPaintCandidate` events found in trace'); - } - firstMeaningfulPaint = lastCandidate; - } - // This function accepts events spanning multiple frames, but this usage will only provide events from the main frame. const lcpResult = this.computeValidLCPAllFrames(frameEvents, timeOriginEvt); @@ -1007,7 +981,6 @@ class TraceProcessor { timeOrigin: timeOriginEvt.ts, firstPaint: getTimestamp(firstPaint), firstContentfulPaint: firstContentfulPaint.ts, - firstMeaningfulPaint: getTimestamp(firstMeaningfulPaint), largestContentfulPaint: getTimestamp(lcpResult.lcp), load: getTimestamp(load), domContentLoaded: getTimestamp(domContentLoaded), @@ -1022,7 +995,6 @@ class TraceProcessor { timeOrigin: 0, firstPaint: maybeGetTiming(timestamps.firstPaint), firstContentfulPaint: getTiming(timestamps.firstContentfulPaint), - firstMeaningfulPaint: maybeGetTiming(timestamps.firstMeaningfulPaint), largestContentfulPaint: maybeGetTiming(timestamps.largestContentfulPaint), load: maybeGetTiming(timestamps.load), domContentLoaded: maybeGetTiming(timestamps.domContentLoaded), @@ -1034,11 +1006,9 @@ class TraceProcessor { timeOriginEvt: timeOriginEvt, firstPaintEvt: firstPaint, firstContentfulPaintEvt: firstContentfulPaint, - firstMeaningfulPaintEvt: firstMeaningfulPaint, largestContentfulPaintEvt: lcpResult.lcp, loadEvt: load, domContentLoadedEvt: domContentLoaded, - fmpFellBack, lcpInvalidated: lcpResult.invalidated, }; } diff --git a/core/lib/traces/metric-trace-events.js b/core/lib/traces/metric-trace-events.js index 92fa03fc0fa1..56b47c5ae67d 100644 --- a/core/lib/traces/metric-trace-events.js +++ b/core/lib/traces/metric-trace-events.js @@ -45,11 +45,6 @@ class MetricTraceEvents { id: 'ttfcp', tsKey: 'observedFirstContentfulPaintTs', }, - { - name: 'First Meaningful Paint', - id: 'ttfmp', - tsKey: 'observedFirstMeaningfulPaintTs', - }, { name: 'Speed Index', id: 'si', diff --git a/core/scripts/lantern/collect/collect.js b/core/scripts/lantern/collect/collect.js index 4f703e09e201..4af1ab509fc6 100644 --- a/core/scripts/lantern/collect/collect.js +++ b/core/scripts/lantern/collect/collect.js @@ -192,7 +192,6 @@ function assertLhr(lhr) { if (lhr.runtimeError) throw new Error(`runtime error: ${lhr.runtimeError}`); const metrics = common.getMetrics(lhr); if (metrics?.firstContentfulPaint && - metrics.firstMeaningfulPaint && metrics.interactive && // WPT won't have this, we'll just get from the trace. // metrics.largestContentfulPaint && diff --git a/core/scripts/lantern/collect/golden.js b/core/scripts/lantern/collect/golden.js index 27548a40a539..1f9c94fc757c 100644 --- a/core/scripts/lantern/collect/golden.js +++ b/core/scripts/lantern/collect/golden.js @@ -43,7 +43,6 @@ function makeGolden(log, summary) { url, wpt3g: { firstContentfulPaint: wptMetrics.firstContentfulPaint, - firstMeaningfulPaint: wptMetrics.firstMeaningfulPaint, timeToConsistentlyInteractive: wptMetrics.interactive, speedIndex: wptMetrics.speedIndex, largestContentfulPaint: wptMetrics.largestContentfulPaint, diff --git a/core/scripts/lantern/constants.js b/core/scripts/lantern/constants.js index 2e251c515c8d..78f06e4b5a17 100644 --- a/core/scripts/lantern/constants.js +++ b/core/scripts/lantern/constants.js @@ -43,7 +43,6 @@ import {LH_ROOT} from '../../../shared/root.js'; /** * @typedef TargetMetrics * @property {number} [firstContentfulPaint] - * @property {number} [firstMeaningfulPaint] * @property {number} [timeToFirstInteractive] * @property {number} [timeToConsistentlyInteractive] * @property {number} [speedIndex] @@ -66,7 +65,6 @@ import {LH_ROOT} from '../../../shared/root.js'; * @property {number} pessimisticTTI * @property {number} pessimisticLCP * @property {number} roughEstimateOfFCP - * @property {number} roughEstimateOfFMP * @property {number} roughEstimateOfSI * @property {number} roughEstimateOfTTI * @property {number} roughEstimateOfLCP @@ -198,7 +196,6 @@ export default { return { roughEstimateOfFCP: evaluate('firstContentfulPaint', 'roughEstimateOfFCP'), - roughEstimateOfFMP: evaluate('firstMeaningfulPaint', 'roughEstimateOfFMP'), roughEstimateOfSI: evaluate('speedIndex', 'roughEstimateOfSI'), roughEstimateOfTTI: evaluate('timeToConsistentlyInteractive', 'roughEstimateOfTTI'), roughEstimateOfLCP: evaluate('largestContentfulPaint', 'roughEstimateOfLCP'), diff --git a/core/scripts/lantern/print-correlations.js b/core/scripts/lantern/print-correlations.js index 8b36933f6e9a..96489921721e 100755 --- a/core/scripts/lantern/print-correlations.js +++ b/core/scripts/lantern/print-correlations.js @@ -227,10 +227,6 @@ evaluateAndPrintAccuracy('firstContentfulPaint', 'optimisticFCP'); evaluateAndPrintAccuracy('firstContentfulPaint', 'pessimisticFCP'); evaluateAndPrintAccuracy('firstContentfulPaint', 'roughEstimateOfFCP'); -evaluateAndPrintAccuracy('firstMeaningfulPaint', 'optimisticFMP'); -evaluateAndPrintAccuracy('firstMeaningfulPaint', 'pessimisticFMP'); -evaluateAndPrintAccuracy('firstMeaningfulPaint', 'roughEstimateOfFMP'); - evaluateAndPrintAccuracy('timeToConsistentlyInteractive', 'optimisticTTI'); evaluateAndPrintAccuracy('timeToConsistentlyInteractive', 'pessimisticTTI'); evaluateAndPrintAccuracy('timeToConsistentlyInteractive', 'roughEstimateOfTTI'); @@ -258,11 +254,6 @@ findAndPrintWorst10Sites('firstContentfulPaint', [ 'pessimisticFCP', 'roughEstimateOfFCP', ]); -findAndPrintWorst10Sites('firstMeaningfulPaint', [ - 'optimisticFMP', - 'pessimisticFMP', - 'roughEstimateOfFMP', -]); findAndPrintWorst10Sites('timeToConsistentlyInteractive', [ 'optimisticTTI', 'pessimisticTTI', diff --git a/core/scripts/lantern/run-on-all-assets.js b/core/scripts/lantern/run-on-all-assets.js index 72065678d1de..6624e73e66be 100755 --- a/core/scripts/lantern/run-on-all-assets.js +++ b/core/scripts/lantern/run-on-all-assets.js @@ -12,7 +12,6 @@ /** * @typedef Wpt3gUnthrottled * @property {number|undefined} firstContentfulPaint - * @property {number|undefined} firstMeaningfulPaint * @property {number|undefined} timeToConsistentlyInteractive * @property {number|undefined} speedIndex * @property {number|undefined} largestContentfulPaint diff --git a/core/test/audits/__snapshots__/metrics-test.js.snap b/core/test/audits/__snapshots__/metrics-test.js.snap index 39ef81255f60..5c7c8969e06b 100644 --- a/core/test/audits/__snapshots__/metrics-test.js.snap +++ b/core/test/audits/__snapshots__/metrics-test.js.snap @@ -8,8 +8,6 @@ Object { "firstContentfulPaintAllFrames": undefined, "firstContentfulPaintAllFramesTs": undefined, "firstContentfulPaintTs": undefined, - "firstMeaningfulPaint": 3364, - "firstMeaningfulPaintTs": undefined, "interactive": 6354, "interactiveTs": undefined, "largestContentfulPaint": 5567, @@ -27,8 +25,6 @@ Object { "observedFirstContentfulPaintAllFrames": 2685, "observedFirstContentfulPaintAllFramesTs": 760623328111, "observedFirstContentfulPaintTs": 760623328111, - "observedFirstMeaningfulPaint": 2685, - "observedFirstMeaningfulPaintTs": 760623328111, "observedFirstPaint": 2685, "observedFirstPaintTs": 760623328111, "observedFirstVisualChange": 2652, @@ -65,8 +61,6 @@ Object { "firstContentfulPaintAllFrames": 683, "firstContentfulPaintAllFramesTs": 23466705983, "firstContentfulPaintTs": 23466886143, - "firstMeaningfulPaint": 863, - "firstMeaningfulPaintTs": 23466886143, "interactive": 863, "interactiveTs": 23466886143, "largestContentfulPaint": 863, @@ -84,8 +78,6 @@ Object { "observedFirstContentfulPaintAllFrames": 683, "observedFirstContentfulPaintAllFramesTs": 23466705983, "observedFirstContentfulPaintTs": 23466886143, - "observedFirstMeaningfulPaint": 863, - "observedFirstMeaningfulPaintTs": 23466886143, "observedFirstPaint": 616, "observedFirstPaintTs": 23466639588, "observedFirstVisualChange": 609, @@ -122,8 +114,6 @@ Object { "firstContentfulPaintAllFrames": undefined, "firstContentfulPaintAllFramesTs": undefined, "firstContentfulPaintTs": undefined, - "firstMeaningfulPaint": 1059, - "firstMeaningfulPaintTs": undefined, "interactive": 3149, "interactiveTs": undefined, "largestContentfulPaint": 1524, @@ -141,8 +131,6 @@ Object { "observedFirstContentfulPaintAllFrames": 292, "observedFirstContentfulPaintAllFramesTs": 343577475882, "observedFirstContentfulPaintTs": 343577475882, - "observedFirstMeaningfulPaint": 292, - "observedFirstMeaningfulPaintTs": 343577475882, "observedFirstPaint": 292, "observedFirstPaintTs": 343577475882, "observedFirstVisualChange": 207, @@ -179,8 +167,6 @@ Object { "firstContentfulPaintAllFrames": 192, "firstContentfulPaintAllFramesTs": 376406173872, "firstContentfulPaintTs": 376406173872, - "firstMeaningfulPaint": 229, - "firstMeaningfulPaintTs": 376406210378, "interactive": 224, "interactiveTs": 376406205074, "largestContentfulPaint": 229, @@ -198,8 +184,6 @@ Object { "observedFirstContentfulPaintAllFrames": 192, "observedFirstContentfulPaintAllFramesTs": 376406173872, "observedFirstContentfulPaintTs": 376406173872, - "observedFirstMeaningfulPaint": 229, - "observedFirstMeaningfulPaintTs": 376406210378, "observedFirstPaint": 192, "observedFirstPaintTs": 376406173872, "observedFirstVisualChange": 194, @@ -236,8 +220,6 @@ Object { "firstContentfulPaintAllFrames": undefined, "firstContentfulPaintAllFramesTs": undefined, "firstContentfulPaintTs": undefined, - "firstMeaningfulPaint": 1120, - "firstMeaningfulPaintTs": undefined, "interactive": 1122, "interactiveTs": undefined, "largestContentfulPaint": 1120, @@ -255,8 +237,6 @@ Object { "observedFirstContentfulPaintAllFrames": 192, "observedFirstContentfulPaintAllFramesTs": 376406173872, "observedFirstContentfulPaintTs": 376406173872, - "observedFirstMeaningfulPaint": 229, - "observedFirstMeaningfulPaintTs": 376406210378, "observedFirstPaint": 192, "observedFirstPaintTs": 376406173872, "observedFirstVisualChange": 194, diff --git a/core/test/audits/__snapshots__/predictive-perf-test.js.snap b/core/test/audits/__snapshots__/predictive-perf-test.js.snap index 47528ab2208a..3c39841ffdac 100644 --- a/core/test/audits/__snapshots__/predictive-perf-test.js.snap +++ b/core/test/audits/__snapshots__/predictive-perf-test.js.snap @@ -3,17 +3,14 @@ exports[`Performance: predictive performance audit should compute the predicted values 1`] = ` Object { "optimisticFCP": 1059, - "optimisticFMP": 1059, "optimisticLCP": 1445, "optimisticSI": 261, "optimisticTTI": 2132, "pessimisticFCP": 1059, - "pessimisticFMP": 1059, "pessimisticLCP": 1603, "pessimisticSI": 1109, "pessimisticTTI": 3981, "roughEstimateOfFCP": 1059, - "roughEstimateOfFMP": 1059, "roughEstimateOfLCP": 1524, "roughEstimateOfLCPLoadEnd": undefined, "roughEstimateOfLCPLoadStart": undefined, diff --git a/core/test/audits/metrics/__snapshots__/first-meaningful-paint-test.js.snap b/core/test/audits/metrics/__snapshots__/first-meaningful-paint-test.js.snap deleted file mode 100644 index ca83e225f9e0..000000000000 --- a/core/test/audits/metrics/__snapshots__/first-meaningful-paint-test.js.snap +++ /dev/null @@ -1,8 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Performance: first-meaningful-paint audit computes FMP correctly for simulated 1`] = ` -Object { - "numericValue": 1120.272, - "score": 1, -} -`; diff --git a/core/test/audits/metrics/first-meaningful-paint-test.js b/core/test/audits/metrics/first-meaningful-paint-test.js deleted file mode 100644 index ebce78f86bdc..000000000000 --- a/core/test/audits/metrics/first-meaningful-paint-test.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import assert from 'assert/strict'; - -import FMPAudit from '../../../audits/metrics/first-meaningful-paint.js'; -import {Audit} from '../../../audits/audit.js'; -import * as constants from '../../../config/constants.js'; -import {getURLArtifactFromDevtoolsLog, readJson} from '../../test-utils.js'; - -const trace = readJson('../../fixtures/artifacts/progressive-app/trace.json', import.meta); -const devtoolsLogs = readJson('../../fixtures/artifacts/progressive-app/devtoolslog.json', import.meta); - -/** - * @param {{ - * {LH.SharedFlagsSettings['formFactor']} formFactor - * {LH.SharedFlagsSettings['throttlingMethod']} throttlingMethod - * }} param0 - */ -const getFakeContext = ({formFactor, throttlingMethod}) => ({ - options: FMPAudit.defaultOptions, - computedCache: new Map(), - settings: { - formFactor: formFactor, - throttlingMethod, - screenEmulation: constants.screenEmulationMetrics[formFactor], - }, -}); -describe('Performance: first-meaningful-paint audit', () => { - it('computes FMP correctly for valid trace', async () => { - const artifacts = { - GatherContext: {gatherMode: 'navigation'}, - traces: {[Audit.DEFAULT_PASS]: trace}, - devtoolsLogs: {[Audit.DEFAULT_PASS]: devtoolsLogs}, - URL: getURLArtifactFromDevtoolsLog(devtoolsLogs), - }; - const context = getFakeContext({formFactor: 'mobile', throttlingMethod: 'provided'}); - const fmpResult = await FMPAudit.audit(artifacts, context); - - assert.equal(fmpResult.score, 1); - assert.equal(fmpResult.numericValue, 228.814); - expect(fmpResult.displayValue).toBeDisplayString('0.2\xa0s'); - }); - - it('computes FMP correctly for simulated', async () => { - const artifacts = { - GatherContext: {gatherMode: 'navigation'}, - traces: {[Audit.DEFAULT_PASS]: trace}, - devtoolsLogs: {[Audit.DEFAULT_PASS]: devtoolsLogs}, - URL: getURLArtifactFromDevtoolsLog(devtoolsLogs), - }; - const context = getFakeContext({formFactor: 'mobile', throttlingMethod: 'simulate'}); - const fmpResult = await FMPAudit.audit(artifacts, context); - - expect({ - score: fmpResult.score, - numericValue: fmpResult.numericValue, - }).toMatchSnapshot(); - }); -}); diff --git a/core/test/computed/metrics/__snapshots__/first-meaningful-paint-test.js.snap b/core/test/computed/metrics/__snapshots__/first-meaningful-paint-test.js.snap deleted file mode 100644 index ec8fbc015f06..000000000000 --- a/core/test/computed/metrics/__snapshots__/first-meaningful-paint-test.js.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Metrics: FMP should compute a simulated value 1`] = ` -Object { - "optimistic": 1107, - "optimisticNodeTimings": 4, - "pessimistic": 1134, - "pessimisticNodeTimings": 5, - "timing": 1120, -} -`; diff --git a/core/test/computed/metrics/first-meaningful-paint-test.js b/core/test/computed/metrics/first-meaningful-paint-test.js deleted file mode 100644 index 6652d3bbfc69..000000000000 --- a/core/test/computed/metrics/first-meaningful-paint-test.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import assert from 'assert/strict'; - -import {FirstMeaningfulPaint} from '../../../computed/metrics/first-meaningful-paint.js'; -import {getURLArtifactFromDevtoolsLog, readJson} from '../../test-utils.js'; - -const pwaTrace = readJson('../../fixtures/artifacts/progressive-app/trace.json', import.meta); -const pwaDevtoolsLog = readJson('../../fixtures/artifacts/progressive-app/devtoolslog.json', import.meta); -const badNavStartTrace = readJson('../../fixtures/traces/bad-nav-start-ts.json', import.meta); -const lateTracingStartedTrace = readJson('../../fixtures/traces/tracingstarted-after-navstart.json', import.meta); -const preactTrace = readJson('../../fixtures/traces/preactjs.com_ts_of_undefined.json', import.meta); -const noFMPtrace = readJson('../../fixtures/traces/no_fmp_event.json', import.meta); - -describe('Metrics: FMP', () => { - const gatherContext = {gatherMode: 'navigation'}; - let settings; - let trace; - let devtoolsLog; - - function addEmptyTask() { - const mainThreadEvt = trace.traceEvents.find(e => e.name === 'TracingStartedInPage'); - trace.traceEvents.push({ - ...mainThreadEvt, - cat: 'toplevel', - name: 'TaskQueueManager::ProcessTaskFromWorkQueue', - }); - } - - beforeEach(() => { - settings = {throttlingMethod: 'provided'}; - devtoolsLog = []; - }); - - it('should compute a simulated value', async () => { - settings = {throttlingMethod: 'simulate'}; - trace = pwaTrace; - devtoolsLog = pwaDevtoolsLog; - const URL = getURLArtifactFromDevtoolsLog(devtoolsLog); - - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request( - {trace, devtoolsLog, gatherContext, settings, URL}, - context); - - expect({ - timing: Math.round(result.timing), - optimistic: Math.round(result.optimisticEstimate.timeInMs), - pessimistic: Math.round(result.pessimisticEstimate.timeInMs), - optimisticNodeTimings: result.optimisticEstimate.nodeTimings.size, - pessimisticNodeTimings: result.pessimisticEstimate.nodeTimings.size, - }).toMatchSnapshot(); - assert.ok(result.optimisticGraph, 'should have created optimistic graph'); - assert.ok(result.pessimisticGraph, 'should have created pessimistic graph'); - }); - - it('should compute an observed value (desktop)', async () => { - settings = {throttlingMethod: 'provided', formFactor: 'desktop'}; - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request({trace, devtoolsLog, gatherContext, settings}, - context); - - await expect(result).toMatchInlineSnapshot(` -Object { - "timestamp": 376406210378, - "timing": 228.814, -} -`); - }); - - it('should compute an observed value (mobile)', async () => { - settings = {throttlingMethod: 'provided', formFactor: 'mobile'}; - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request({trace, devtoolsLog, gatherContext, settings}, - context); - - await expect(result).toMatchInlineSnapshot(` -Object { - "timestamp": 376406210378, - "timing": 228.814, -} -`); - }); - - it('handles cases when there was a tracingStartedInPage after navStart', async () => { - trace = lateTracingStartedTrace; - addEmptyTask(); - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request({trace, devtoolsLog, gatherContext, settings}, - context); - assert.equal(Math.round(result.timing), 530); - assert.equal(result.timestamp, 29344070867); - }); - - it('handles cases when there was a tracingStartedInPage after navStart #2', async () => { - trace = badNavStartTrace; - addEmptyTask(); - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request({trace, devtoolsLog, gatherContext, settings}, - context); - assert.equal(Math.round(result.timing), 632); - assert.equal(result.timestamp, 8886056891); - }); - - it('handles cases when it appears before FCP', async () => { - trace = preactTrace; - addEmptyTask(); - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request({trace, devtoolsLog, gatherContext, settings}, - context); - assert.equal(Math.round(result.timing), 878); - assert.equal(result.timestamp, 1805797262960); - }); - - it('handles cases when no FMP exists', async () => { - trace = noFMPtrace; - addEmptyTask(); - const context = {computedCache: new Map()}; - const result = await FirstMeaningfulPaint.request({trace, devtoolsLog, gatherContext, settings}, - context); - assert.equal(Math.round(result.timing), 4461); - assert.equal(result.timestamp, 2146740268666); - }); -}); diff --git a/core/test/computed/metrics/timing-summary-test.js b/core/test/computed/metrics/timing-summary-test.js index ad63981dccd8..cafdad74719e 100644 --- a/core/test/computed/metrics/timing-summary-test.js +++ b/core/test/computed/metrics/timing-summary-test.js @@ -27,8 +27,6 @@ describe('Timing summary', () => { "firstContentfulPaintAllFrames": 697.751, "firstContentfulPaintAllFramesTs": 10327885660, "firstContentfulPaintTs": 10332856184, - "firstMeaningfulPaint": 669.212, - "firstMeaningfulPaintTs": 10327857121, "interactive": 8654.264, "interactiveTs": 10335842173, "largestContentfulPaint": 5668.275, @@ -46,8 +44,6 @@ describe('Timing summary', () => { "observedFirstContentfulPaintAllFrames": 697.751, "observedFirstContentfulPaintAllFramesTs": 10327885660, "observedFirstContentfulPaintTs": 10332856184, - "observedFirstMeaningfulPaint": 669.212, - "observedFirstMeaningfulPaintTs": 10327857121, "observedFirstPaint": 669.212, "observedFirstPaintTs": 10327857121, "observedFirstVisualChange": 673, diff --git a/core/test/computed/processed-navigation-test.js b/core/test/computed/processed-navigation-test.js index 041deb610793..3885e4c7d07c 100644 --- a/core/test/computed/processed-navigation-test.js +++ b/core/test/computed/processed-navigation-test.js @@ -56,18 +56,6 @@ describe('ProcessedTrace', () => { ts: 225414670885, tts: 866570, }, - firstMeaningfulPaintEvt: { - args: { - frame: '0x25a638821e30', - }, - cat: 'loading,rail,devtools.timeline', - name: 'firstMeaningfulPaint', - ph: 'R', - pid: 44277, - tid: 775, - ts: 225414955343, - tts: 2676979, - }, firstPaintEvt: { args: { frame: '0x25a638821e30', @@ -81,7 +69,6 @@ describe('ProcessedTrace', () => { ts: 225414670868, tts: 866553, }, - fmpFellBack: false, lcpInvalidated: false, loadEvt: { args: { @@ -99,7 +86,6 @@ describe('ProcessedTrace', () => { domContentLoaded: 225414732309, firstContentfulPaint: 225414670885, firstContentfulPaintAllFrames: 225414670885, - firstMeaningfulPaint: 225414955343, firstPaint: 225414670868, load: 225416370913, timeOrigin: 225414172015, @@ -109,7 +95,6 @@ describe('ProcessedTrace', () => { domContentLoaded: 560.294, firstContentfulPaint: 498.87, firstContentfulPaintAllFrames: 498.87, - firstMeaningfulPaint: 783.328, firstPaint: 498.853, load: 2198.898, timeOrigin: 0, @@ -127,7 +112,6 @@ describe('ProcessedTrace', () => { domContentLoaded: 560.294, firstContentfulPaint: 498.87, firstContentfulPaintAllFrames: 498.87, - firstMeaningfulPaint: 783.328, firstPaint: 498.853, load: 2198.898, timeOrigin: 0, diff --git a/core/test/create-test-trace.js b/core/test/create-test-trace.js index ceba02794be0..347264bdc3bc 100644 --- a/core/test/create-test-trace.js +++ b/core/test/create-test-trace.js @@ -154,15 +154,6 @@ function createTestTrace(options) { cat: 'loading,rail,devtools.timeline', dur: 0, args: {frame: rootFrame, data: {navigationId}}, - }, { - name: 'firstMeaningfulPaint', - ts: timeOrigin + 15, - pid, - tid, - ph: 'R', - cat: 'loading,rail,devtools.timeline', - dur: 0, - args: {frame: rootFrame}, }]; if (options.childFrames) { diff --git a/core/test/fixtures/lantern-baseline-accuracy.json b/core/test/fixtures/lantern-baseline-accuracy.json index 2820291a1438..e662417a6e4c 100644 --- a/core/test/fixtures/lantern-baseline-accuracy.json +++ b/core/test/fixtures/lantern-baseline-accuracy.json @@ -4,11 +4,6 @@ "p90": 0.4879553466509988, "p95": 0.5191288993525603 }, - "roughEstimateOfFMP": { - "p50": 0.30248500428449016, - "p90": 0.5397902529302899, - "p95": 0.6406490583915669 - }, "roughEstimateOfSI": { "p50": 0.2393280405016684, "p90": 0.574017415862556, diff --git a/core/test/fixtures/lantern-baseline-computed-values.json b/core/test/fixtures/lantern-baseline-computed-values.json index 9029a5b334a2..217ffe3840df 100644 --- a/core/test/fixtures/lantern-baseline-computed-values.json +++ b/core/test/fixtures/lantern-baseline-computed-values.json @@ -1,81 +1,81 @@ { "sites": [ - {"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": 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": 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": 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": 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}, - {"url": "https://stripe.com/docs", "roughEstimateOfFCP": 3670, "optimisticFCP": 3670, "pessimisticFCP": 3670, "roughEstimateOfFMP": 3670, "optimisticFMP": 3670, "pessimisticFMP": 3670, "roughEstimateOfTTI": 6934, "optimisticTTI": 6482, "pessimisticTTI": 7304, "roughEstimateOfSI": 4166, "optimisticSI": 1830, "pessimisticSI": 4010, "roughEstimateOfLCP": 4473, "optimisticLCP": 4473, "pessimisticLCP": 4473, "roughEstimateOfTTFB": 1161}, - {"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": 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": 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": 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": 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}, - {"url": "https://www.hulu.com/welcome", "roughEstimateOfFCP": 3938, "optimisticFCP": 3777, "pessimisticFCP": 4098, "roughEstimateOfFMP": 8045, "optimisticFMP": 7724, "pessimisticFMP": 8366, "roughEstimateOfTTI": 17382, "optimisticTTI": 15921, "pessimisticTTI": 18578, "roughEstimateOfSI": 4453, "optimisticSI": 920, "pessimisticSI": 7913, "roughEstimateOfLCP": 4098, "optimisticLCP": 4098, "pessimisticLCP": 4098, "roughEstimateOfTTFB": 612}, - {"url": "https://www.ifeng.com/", "roughEstimateOfFCP": 5148, "optimisticFCP": 5148, "pessimisticFCP": 5148, "roughEstimateOfFMP": 5148, "optimisticFMP": 5148, "pessimisticFMP": 5148, "roughEstimateOfTTI": 6205, "optimisticTTI": 5864, "pessimisticTTI": 6483, "roughEstimateOfSI": 6254, "optimisticSI": 2997, "pessimisticSI": 5148, "roughEstimateOfLCP": 5556, "optimisticLCP": 5556, "pessimisticLCP": 5556, "roughEstimateOfTTFB": 1653}, - {"url": "https://www.imageshack.us/login", "roughEstimateOfFCP": 2310, "optimisticFCP": 2310, "pessimisticFCP": 2310, "roughEstimateOfFMP": 2310, "optimisticFMP": 2310, "pessimisticFMP": 2310, "roughEstimateOfTTI": 7829, "optimisticTTI": 7670, "pessimisticTTI": 7959, "roughEstimateOfSI": 3858, "optimisticSI": 1491, "pessimisticSI": 4428, "roughEstimateOfLCP": 3466, "optimisticLCP": 3466, "pessimisticLCP": 3466, "roughEstimateOfTTFB": 603}, - {"url": "https://www.instagram.com/", "roughEstimateOfFCP": 1103, "optimisticFCP": 1103, "pessimisticFCP": 1103, "roughEstimateOfFMP": 3688, "optimisticFMP": 3688, "pessimisticFMP": 3688, "roughEstimateOfTTI": 5908, "optimisticTTI": 5216, "pessimisticTTI": 6475, "roughEstimateOfSI": 2381, "optimisticSI": 822, "pessimisticSI": 3077, "roughEstimateOfLCP": 5169, "optimisticLCP": 5089, "pessimisticLCP": 5248, "roughEstimateOfTTFB": 606}, - {"url": "https://www.irs.gov/", "roughEstimateOfFCP": 2022, "optimisticFCP": 2022, "pessimisticFCP": 2022, "roughEstimateOfFMP": 3229, "optimisticFMP": 2788, "pessimisticFMP": 3670, "roughEstimateOfTTI": 15894, "optimisticTTI": 14303, "pessimisticTTI": 17196, "roughEstimateOfSI": 3715, "optimisticSI": 818, "pessimisticSI": 6424, "roughEstimateOfLCP": 4458, "optimisticLCP": 3884, "pessimisticLCP": 5031, "roughEstimateOfTTFB": 684}, - {"url": "https://www.java.com/en/", "roughEstimateOfFCP": 961, "optimisticFCP": 961, "pessimisticFCP": 961, "roughEstimateOfFMP": 961, "optimisticFMP": 961, "pessimisticFMP": 961, "roughEstimateOfTTI": 3601, "optimisticTTI": 3102, "pessimisticTTI": 4010, "roughEstimateOfSI": 1157, "optimisticSI": 484, "pessimisticSI": 1199, "roughEstimateOfLCP": 3050, "optimisticLCP": 3050, "pessimisticLCP": 3050, "roughEstimateOfTTFB": 643}, - {"url": "https://www.linkedin.com/", "roughEstimateOfFCP": 1903, "optimisticFCP": 1903, "pessimisticFCP": 1903, "roughEstimateOfFMP": 1903, "optimisticFMP": 1903, "pessimisticFMP": 1903, "roughEstimateOfTTI": 11998, "optimisticTTI": 10161, "pessimisticTTI": 13500, "roughEstimateOfSI": 1903, "optimisticSI": 655, "pessimisticSI": 2227, "roughEstimateOfLCP": 2514, "optimisticLCP": 2476, "pessimisticLCP": 2551, "roughEstimateOfTTFB": 656}, - {"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": 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": 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}, - {"url": "https://www.onet.pl/", "roughEstimateOfFCP": 2078, "optimisticFCP": 2078, "pessimisticFCP": 2078, "roughEstimateOfFMP": 2078, "optimisticFMP": 2078, "pessimisticFMP": 2078, "roughEstimateOfTTI": 12271, "optimisticTTI": 11083, "pessimisticTTI": 13244, "roughEstimateOfSI": 4514, "optimisticSI": 1759, "pessimisticSI": 5129, "roughEstimateOfLCP": 3834, "optimisticLCP": 3834, "pessimisticLCP": 3834, "roughEstimateOfTTFB": 600}, - {"url": "https://www.orange.fr/portail", "roughEstimateOfFCP": 4085, "optimisticFCP": 3000, "pessimisticFCP": 5170, "roughEstimateOfFMP": 5055, "optimisticFMP": 3459, "pessimisticFMP": 6652, "roughEstimateOfTTI": 18968, "optimisticTTI": 17049, "pessimisticTTI": 20538, "roughEstimateOfSI": 8815, "optimisticSI": 3925, "pessimisticSI": 8301, "roughEstimateOfLCP": 7272, "optimisticLCP": 6679, "pessimisticLCP": 7866, "roughEstimateOfTTFB": 880}, - {"url": "https://www.partypoker.com/", "roughEstimateOfFCP": 4990, "optimisticFCP": 4990, "pessimisticFCP": 4990, "roughEstimateOfFMP": 4990, "optimisticFMP": 4990, "pessimisticFMP": 4990, "roughEstimateOfTTI": 7528, "optimisticTTI": 5396, "pessimisticTTI": 9272, "roughEstimateOfSI": 5769, "optimisticSI": 2695, "pessimisticSI": 4990, "roughEstimateOfLCP": 7171, "optimisticLCP": 5313, "pessimisticLCP": 9028, "roughEstimateOfTTFB": 1094}, - {"url": "https://www.rakuten.co.jp/", "roughEstimateOfFCP": 3165, "optimisticFCP": 3165, "pessimisticFCP": 3165, "roughEstimateOfFMP": 5641, "optimisticFMP": 3165, "pessimisticFMP": 8117, "roughEstimateOfTTI": 28112, "optimisticTTI": 20421, "pessimisticTTI": 34404, "roughEstimateOfSI": 10006, "optimisticSI": 4212, "pessimisticSI": 10273, "roughEstimateOfLCP": 8521, "optimisticLCP": 8121, "pessimisticLCP": 8921, "roughEstimateOfTTFB": 698}, - {"url": "https://www.reddit.com/", "roughEstimateOfFCP": 2296, "optimisticFCP": 2296, "pessimisticFCP": 2296, "roughEstimateOfFMP": 7649, "optimisticFMP": 5762, "pessimisticFMP": 9536, "roughEstimateOfTTI": 11941, "optimisticTTI": 11062, "pessimisticTTI": 12660, "roughEstimateOfSI": 7187, "optimisticSI": 3340, "pessimisticSI": 6277, "roughEstimateOfLCP": 10182, "optimisticLCP": 9048, "pessimisticLCP": 11315, "roughEstimateOfTTFB": 1017}, - {"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": 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": 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": 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}, - {"url": "https://www8.hp.com/us/en/home.html", "roughEstimateOfFCP": 4720, "optimisticFCP": 3373, "pessimisticFCP": 6068, "roughEstimateOfFMP": 6679, "optimisticFMP": 4995, "pessimisticFMP": 8364, "roughEstimateOfTTI": 23148, "optimisticTTI": 18600, "pessimisticTTI": 26870, "roughEstimateOfSI": 10569, "optimisticSI": 3856, "pessimisticSI": 12924, "roughEstimateOfLCP": 10807, "optimisticLCP": 10807, "pessimisticLCP": 10807, "roughEstimateOfTTFB": 612} + {"url": "http://m.iciba.com", "roughEstimateOfFCP": 1744, "optimisticFCP": 1744, "pessimisticFCP": 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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "optimisticFMP": 2654, "pessimisticFMP": 2654, "roughEstimateOfTTI": 2823, "optimisticTTI": 2654, "pessimisticTTI": 2962, "roughEstimateOfSI": 1519, "optimisticSI": 482, "pessimisticSI": 1985, "roughEstimateOfLCP": 1969, "optimisticLCP": 1969, "pessimisticLCP": 1969, "roughEstimateOfTTFB": 604}, + {"url": "https://stripe.com/docs", "roughEstimateOfFCP": 3670, "optimisticFCP": 3670, "pessimisticFCP": 3670, "optimisticFMP": 3670, "pessimisticFMP": 3670, "roughEstimateOfTTI": 6934, "optimisticTTI": 6482, "pessimisticTTI": 7304, "roughEstimateOfSI": 4166, "optimisticSI": 1830, "pessimisticSI": 4010, "roughEstimateOfLCP": 4473, "optimisticLCP": 4473, "pessimisticLCP": 4473, "roughEstimateOfTTFB": 1161}, + {"url": "https://wap.sogou.com/", "roughEstimateOfFCP": 2173, "optimisticFCP": 2173, "pessimisticFCP": 2173, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "optimisticFMP": 2265, "pessimisticFMP": 3272, "roughEstimateOfTTI": 16428, "optimisticTTI": 12460, "pessimisticTTI": 19675, "roughEstimateOfSI": 6985, "optimisticSI": 2323, "pessimisticSI": 9333, "roughEstimateOfLCP": 5865, "optimisticLCP": 4758, "pessimisticLCP": 6972, "roughEstimateOfTTFB": 877}, + {"url": "https://www.hulu.com/welcome", "roughEstimateOfFCP": 3938, "optimisticFCP": 3777, "pessimisticFCP": 4098, "optimisticFMP": 7724, "pessimisticFMP": 8366, "roughEstimateOfTTI": 17382, "optimisticTTI": 15921, "pessimisticTTI": 18578, "roughEstimateOfSI": 4453, "optimisticSI": 920, "pessimisticSI": 7913, "roughEstimateOfLCP": 4098, "optimisticLCP": 4098, "pessimisticLCP": 4098, "roughEstimateOfTTFB": 612}, + {"url": "https://www.ifeng.com/", "roughEstimateOfFCP": 5148, "optimisticFCP": 5148, "pessimisticFCP": 5148, "optimisticFMP": 5148, "pessimisticFMP": 5148, "roughEstimateOfTTI": 6205, "optimisticTTI": 5864, "pessimisticTTI": 6483, "roughEstimateOfSI": 6254, "optimisticSI": 2997, "pessimisticSI": 5148, "roughEstimateOfLCP": 5556, "optimisticLCP": 5556, "pessimisticLCP": 5556, "roughEstimateOfTTFB": 1653}, + {"url": "https://www.imageshack.us/login", "roughEstimateOfFCP": 2310, "optimisticFCP": 2310, "pessimisticFCP": 2310, "optimisticFMP": 2310, "pessimisticFMP": 2310, "roughEstimateOfTTI": 7829, "optimisticTTI": 7670, "pessimisticTTI": 7959, "roughEstimateOfSI": 3858, "optimisticSI": 1491, "pessimisticSI": 4428, "roughEstimateOfLCP": 3466, "optimisticLCP": 3466, "pessimisticLCP": 3466, "roughEstimateOfTTFB": 603}, + {"url": "https://www.instagram.com/", "roughEstimateOfFCP": 1103, "optimisticFCP": 1103, "pessimisticFCP": 1103, "optimisticFMP": 3688, "pessimisticFMP": 3688, "roughEstimateOfTTI": 5908, "optimisticTTI": 5216, "pessimisticTTI": 6475, "roughEstimateOfSI": 2381, "optimisticSI": 822, "pessimisticSI": 3077, "roughEstimateOfLCP": 5169, "optimisticLCP": 5089, "pessimisticLCP": 5248, "roughEstimateOfTTFB": 606}, + {"url": "https://www.irs.gov/", "roughEstimateOfFCP": 2022, "optimisticFCP": 2022, "pessimisticFCP": 2022, "optimisticFMP": 2788, "pessimisticFMP": 3670, "roughEstimateOfTTI": 15894, "optimisticTTI": 14303, "pessimisticTTI": 17196, "roughEstimateOfSI": 3715, "optimisticSI": 818, "pessimisticSI": 6424, "roughEstimateOfLCP": 4458, "optimisticLCP": 3884, "pessimisticLCP": 5031, "roughEstimateOfTTFB": 684}, + {"url": "https://www.java.com/en/", "roughEstimateOfFCP": 961, "optimisticFCP": 961, "pessimisticFCP": 961, "optimisticFMP": 961, "pessimisticFMP": 961, "roughEstimateOfTTI": 3601, "optimisticTTI": 3102, "pessimisticTTI": 4010, "roughEstimateOfSI": 1157, "optimisticSI": 484, "pessimisticSI": 1199, "roughEstimateOfLCP": 3050, "optimisticLCP": 3050, "pessimisticLCP": 3050, "roughEstimateOfTTFB": 643}, + {"url": "https://www.linkedin.com/", "roughEstimateOfFCP": 1903, "optimisticFCP": 1903, "pessimisticFCP": 1903, "optimisticFMP": 1903, "pessimisticFMP": 1903, "roughEstimateOfTTI": 11998, "optimisticTTI": 10161, "pessimisticTTI": 13500, "roughEstimateOfSI": 1903, "optimisticSI": 655, "pessimisticSI": 2227, "roughEstimateOfLCP": 2514, "optimisticLCP": 2476, "pessimisticLCP": 2551, "roughEstimateOfTTFB": 656}, + {"url": "https://www.metacafe.com/", "roughEstimateOfFCP": 1908, "optimisticFCP": 1908, "pessimisticFCP": 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, "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, "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, "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, "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, "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, "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, "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, "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, "optimisticFMP": 3720, "pessimisticFMP": 3720, "roughEstimateOfTTI": 11094, "optimisticTTI": 9846, "pessimisticTTI": 12116, "roughEstimateOfSI": 5168, "optimisticSI": 2266, "pessimisticSI": 4990, "roughEstimateOfLCP": 4726, "optimisticLCP": 4484, "pessimisticLCP": 4969, "roughEstimateOfTTFB": 1581}, + {"url": "https://www.onet.pl/", "roughEstimateOfFCP": 2078, "optimisticFCP": 2078, "pessimisticFCP": 2078, "optimisticFMP": 2078, "pessimisticFMP": 2078, "roughEstimateOfTTI": 12271, "optimisticTTI": 11083, "pessimisticTTI": 13244, "roughEstimateOfSI": 4514, "optimisticSI": 1759, "pessimisticSI": 5129, "roughEstimateOfLCP": 3834, "optimisticLCP": 3834, "pessimisticLCP": 3834, "roughEstimateOfTTFB": 600}, + {"url": "https://www.orange.fr/portail", "roughEstimateOfFCP": 4085, "optimisticFCP": 3000, "pessimisticFCP": 5170, "optimisticFMP": 3459, "pessimisticFMP": 6652, "roughEstimateOfTTI": 18968, "optimisticTTI": 17049, "pessimisticTTI": 20538, "roughEstimateOfSI": 8815, "optimisticSI": 3925, "pessimisticSI": 8301, "roughEstimateOfLCP": 7272, "optimisticLCP": 6679, "pessimisticLCP": 7866, "roughEstimateOfTTFB": 880}, + {"url": "https://www.partypoker.com/", "roughEstimateOfFCP": 4990, "optimisticFCP": 4990, "pessimisticFCP": 4990, "optimisticFMP": 4990, "pessimisticFMP": 4990, "roughEstimateOfTTI": 7528, "optimisticTTI": 5396, "pessimisticTTI": 9272, "roughEstimateOfSI": 5769, "optimisticSI": 2695, "pessimisticSI": 4990, "roughEstimateOfLCP": 7171, "optimisticLCP": 5313, "pessimisticLCP": 9028, "roughEstimateOfTTFB": 1094}, + {"url": "https://www.rakuten.co.jp/", "roughEstimateOfFCP": 3165, "optimisticFCP": 3165, "pessimisticFCP": 3165, "optimisticFMP": 3165, "pessimisticFMP": 8117, "roughEstimateOfTTI": 28112, "optimisticTTI": 20421, "pessimisticTTI": 34404, "roughEstimateOfSI": 10006, "optimisticSI": 4212, "pessimisticSI": 10273, "roughEstimateOfLCP": 8521, "optimisticLCP": 8121, "pessimisticLCP": 8921, "roughEstimateOfTTFB": 698}, + {"url": "https://www.reddit.com/", "roughEstimateOfFCP": 2296, "optimisticFCP": 2296, "pessimisticFCP": 2296, "optimisticFMP": 5762, "pessimisticFMP": 9536, "roughEstimateOfTTI": 11941, "optimisticTTI": 11062, "pessimisticTTI": 12660, "roughEstimateOfSI": 7187, "optimisticSI": 3340, "pessimisticSI": 6277, "roughEstimateOfLCP": 10182, "optimisticLCP": 9048, "pessimisticLCP": 11315, "roughEstimateOfTTFB": 1017}, + {"url": "https://www.scribd.com/", "roughEstimateOfFCP": 2099, "optimisticFCP": 2099, "pessimisticFCP": 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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "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, "optimisticFMP": 1458, "pessimisticFMP": 1487, "roughEstimateOfTTI": 1745, "optimisticTTI": 1593, "pessimisticTTI": 1870, "roughEstimateOfSI": 1458, "optimisticSI": 579, "pessimisticSI": 1614, "roughEstimateOfLCP": 1472, "optimisticLCP": 1458, "pessimisticLCP": 1487, "roughEstimateOfTTFB": 603}, + {"url": "https://www8.hp.com/us/en/home.html", "roughEstimateOfFCP": 4720, "optimisticFCP": 3373, "pessimisticFCP": 6068, "optimisticFMP": 4995, "pessimisticFMP": 8364, "roughEstimateOfTTI": 23148, "optimisticTTI": 18600, "pessimisticTTI": 26870, "roughEstimateOfSI": 10569, "optimisticSI": 3856, "pessimisticSI": 12924, "roughEstimateOfLCP": 10807, "optimisticLCP": 10807, "pessimisticLCP": 10807, "roughEstimateOfTTFB": 612} ] } diff --git a/core/test/fixtures/traces/preactjs.com_ts_of_undefined.json b/core/test/fixtures/traces/preactjs.com_ts_of_undefined.json deleted file mode 100644 index d2094e0c3d7a..000000000000 --- a/core/test/fixtures/traces/preactjs.com_ts_of_undefined.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "traceEvents": [ - { - "pid": 6117, - "tid": 775, - "ts": 1805796376829, - "ph": "I", - "cat": "disabled-by-default-devtools.timeline", - "name": "TracingStartedInPage", - "args": { - "data": { - "frames": [ - { - "frame": "0x25edaa521e58", - "name": "", - "url": "about:blank" - } - ], - "page": "0x25edaa521e58", - "sessionId": "6117.1" - } - }, - "tts": 208554, - "s": "t" - }, - {"args":{"name":"CrRendererMain"},"cat":"__metadata","name":"thread_name","ph":"M","pid":6117,"tid":775,"ts":0}, - { - "pid": 6117, - "tid": 775, - "ts": 1805796384607, - "ph": "R", - "cat": "blink.user_timing", - "name": "navigationStart", - "args": { - "frame": "0x25edaa521e58" - }, - "tts": 209369 - }, - { - "pid": 6117, - "tid": 775, - "ts": 1805796843283, - "ph": "I", - "cat": "blink.user_timing,rail", - "name": "firstPaint", - "args": { - "frame": "0x25edaa521e58" - }, - "tts": 230934, - "s": "p" - }, - { - "pid": 6117, - "tid": 775, - "ts": 1805797082647, - "ph": "R", - "cat": "blink.user_timing", - "name": "navigationStart", - "args": { - "frame": "0x25edaa655a98" - }, - "tts": 330709 - }, - { - "pid": 6117, - "tid": 775, - "ts": 1805797262960, - "ph": "R", - "cat": "blink.user_timing", - "name": "firstMeaningfulPaint", - "args": { - "frame": "0x25edaa521e58" - }, - "tts": 826016 - }, - { - "pid": 6117, - "tid": 775, - "ts": 1805897263653, - "ph": "R", - "cat": "blink.user_timing", - "name": "navigationStart", - "args": { - "frame": "0x25edaa521e58", - "data": {"documentLoaderURL": "intent://this-one-should-be-ignored"} - }, - "tts": 673412 - }, - { - "pid": 6117, - "tid": 775, - "ts": 1805797263653, - "ph": "I", - "cat": "blink.user_timing,rail", - "name": "firstContentfulPaint", - "args": { - "frame": "0x25edaa521e58" - }, - "tts": 473412, - "s": "p" - } - ] -} 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 eb2656963b40..67564f8e1d3b 100644 --- a/core/test/fixtures/user-flows/reports/sample-flow-result.json +++ b/core/test/fixtures/user-flows/reports/sample-flow-result.json @@ -87,11 +87,8 @@ "id": "first-meaningful-paint", "title": "First Meaningful Paint", "description": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/).", - "score": 0.86, - "scoreDisplayMode": "numeric", - "numericValue": 2519.9925, - "numericUnit": "millisecond", - "displayValue": "2.5 s" + "score": null, + "scoreDisplayMode": "notApplicable" }, "speed-index": { "id": "speed-index", @@ -1378,7 +1375,6 @@ "items": [ { "firstContentfulPaint": 2520, - "firstMeaningfulPaint": 2520, "largestContentfulPaint": 3410, "interactive": 3410, "speedIndex": 2520, @@ -1399,8 +1395,6 @@ "observedFirstContentfulPaintTs": 278921328534, "observedFirstContentfulPaintAllFrames": 521, "observedFirstContentfulPaintAllFramesTs": 278921328534, - "observedFirstMeaningfulPaint": 521, - "observedFirstMeaningfulPaintTs": 278921328534, "observedLargestContentfulPaint": 614, "observedLargestContentfulPaintTs": 278921421184, "observedLargestContentfulPaintAllFrames": 614, @@ -5770,409 +5764,409 @@ }, { "startTime": 71, - "name": "lh:computed:FirstMeaningfulPaint", + "name": "lh:audit:speed-index", "duration": 1, "entryType": "measure" }, { "startTime": 72, - "name": "lh:computed:LanternFirstMeaningfulPaint", + "name": "lh:computed:SpeedIndex", "duration": 1, "entryType": "measure" }, { "startTime": 73, - "name": "lh:audit:speed-index", + "name": "lh:computed:LanternSpeedIndex", "duration": 1, "entryType": "measure" }, { "startTime": 74, - "name": "lh:computed:SpeedIndex", + "name": "lh:computed:Speedline", "duration": 1, "entryType": "measure" }, { "startTime": 75, - "name": "lh:computed:LanternSpeedIndex", + "name": "lh:audit:screenshot-thumbnails", "duration": 1, "entryType": "measure" }, { "startTime": 76, - "name": "lh:computed:Speedline", + "name": "lh:audit:final-screenshot", "duration": 1, "entryType": "measure" }, { "startTime": 77, - "name": "lh:audit:screenshot-thumbnails", + "name": "lh:computed:Screenshots", "duration": 1, "entryType": "measure" }, { "startTime": 78, - "name": "lh:audit:final-screenshot", + "name": "lh:audit:total-blocking-time", "duration": 1, "entryType": "measure" }, { "startTime": 79, - "name": "lh:computed:Screenshots", + "name": "lh:computed:TotalBlockingTime", "duration": 1, "entryType": "measure" }, { "startTime": 80, - "name": "lh:audit:total-blocking-time", + "name": "lh:computed:LanternTotalBlockingTime", "duration": 1, "entryType": "measure" }, { "startTime": 81, - "name": "lh:computed:TotalBlockingTime", + "name": "lh:computed:LanternInteractive", "duration": 1, "entryType": "measure" }, { "startTime": 82, - "name": "lh:computed:LanternTotalBlockingTime", + "name": "lh:audit:max-potential-fid", "duration": 1, "entryType": "measure" }, { "startTime": 83, - "name": "lh:computed:LanternInteractive", + "name": "lh:computed:MaxPotentialFID", "duration": 1, "entryType": "measure" }, { "startTime": 84, - "name": "lh:audit:max-potential-fid", + "name": "lh:computed:LanternMaxPotentialFID", "duration": 1, "entryType": "measure" }, { "startTime": 85, - "name": "lh:computed:MaxPotentialFID", + "name": "lh:audit:cumulative-layout-shift", "duration": 1, "entryType": "measure" }, { "startTime": 86, - "name": "lh:computed:LanternMaxPotentialFID", + "name": "lh:computed:CumulativeLayoutShift", "duration": 1, "entryType": "measure" }, { "startTime": 87, - "name": "lh:audit:cumulative-layout-shift", + "name": "lh:audit:errors-in-console", "duration": 1, "entryType": "measure" }, { "startTime": 88, - "name": "lh:computed:CumulativeLayoutShift", + "name": "lh:computed:JSBundles", "duration": 1, "entryType": "measure" }, { "startTime": 89, - "name": "lh:audit:errors-in-console", + "name": "lh:audit:server-response-time", "duration": 1, "entryType": "measure" }, { "startTime": 90, - "name": "lh:computed:JSBundles", + "name": "lh:computed:MainResource", "duration": 1, "entryType": "measure" }, { "startTime": 91, - "name": "lh:audit:server-response-time", + "name": "lh:audit:interactive", "duration": 1, "entryType": "measure" }, { "startTime": 92, - "name": "lh:computed:MainResource", + "name": "lh:computed:Interactive", "duration": 1, "entryType": "measure" }, { "startTime": 93, - "name": "lh:audit:interactive", + "name": "lh:audit:user-timings", "duration": 1, "entryType": "measure" }, { "startTime": 94, - "name": "lh:computed:Interactive", + "name": "lh:computed:UserTimings", "duration": 1, "entryType": "measure" }, { "startTime": 95, - "name": "lh:audit:user-timings", + "name": "lh:audit:critical-request-chains", "duration": 1, "entryType": "measure" }, { "startTime": 96, - "name": "lh:computed:UserTimings", + "name": "lh:computed:CriticalRequestChains", "duration": 1, "entryType": "measure" }, { "startTime": 97, - "name": "lh:audit:critical-request-chains", + "name": "lh:audit:redirects", "duration": 1, "entryType": "measure" }, { "startTime": 98, - "name": "lh:computed:CriticalRequestChains", + "name": "lh:audit:image-aspect-ratio", "duration": 1, "entryType": "measure" }, { "startTime": 99, - "name": "lh:audit:redirects", + "name": "lh:audit:image-size-responsive", "duration": 1, "entryType": "measure" }, { "startTime": 100, - "name": "lh:audit:image-aspect-ratio", + "name": "lh:audit:deprecations", "duration": 1, "entryType": "measure" }, { "startTime": 101, - "name": "lh:audit:image-size-responsive", + "name": "lh:audit:third-party-cookies", "duration": 1, "entryType": "measure" }, { "startTime": 102, - "name": "lh:audit:deprecations", + "name": "lh:audit:mainthread-work-breakdown", "duration": 1, "entryType": "measure" }, { "startTime": 103, - "name": "lh:audit:third-party-cookies", + "name": "lh:computed:MainThreadTasks", "duration": 1, "entryType": "measure" }, { "startTime": 104, - "name": "lh:audit:mainthread-work-breakdown", + "name": "lh:audit:bootup-time", "duration": 1, "entryType": "measure" }, { "startTime": 105, - "name": "lh:computed:MainThreadTasks", + "name": "lh:computed:TBTImpactTasks", "duration": 1, "entryType": "measure" }, { "startTime": 106, - "name": "lh:audit:bootup-time", + "name": "lh:audit:uses-rel-preconnect", "duration": 1, "entryType": "measure" }, { "startTime": 107, - "name": "lh:computed:TBTImpactTasks", + "name": "lh:audit:font-display", "duration": 1, "entryType": "measure" }, { "startTime": 108, - "name": "lh:audit:uses-rel-preconnect", + "name": "lh:audit:diagnostics", "duration": 1, "entryType": "measure" }, { "startTime": 109, - "name": "lh:audit:font-display", + "name": "lh:audit:network-requests", "duration": 1, "entryType": "measure" }, { "startTime": 110, - "name": "lh:audit:diagnostics", + "name": "lh:computed:EntityClassification", "duration": 1, "entryType": "measure" }, { "startTime": 111, - "name": "lh:audit:network-requests", + "name": "lh:audit:network-rtt", "duration": 1, "entryType": "measure" }, { "startTime": 112, - "name": "lh:computed:EntityClassification", + "name": "lh:audit:network-server-latency", "duration": 1, "entryType": "measure" }, { "startTime": 113, - "name": "lh:audit:network-rtt", + "name": "lh:audit:main-thread-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 114, - "name": "lh:audit:network-server-latency", + "name": "lh:audit:metrics", "duration": 1, "entryType": "measure" }, { "startTime": 115, - "name": "lh:audit:main-thread-tasks", + "name": "lh:computed:TimingSummary", "duration": 1, "entryType": "measure" }, { "startTime": 116, - "name": "lh:audit:metrics", + "name": "lh:computed:FirstContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 117, - "name": "lh:computed:TimingSummary", + "name": "lh:computed:LargestContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 118, - "name": "lh:computed:FirstContentfulPaintAllFrames", + "name": "lh:computed:LCPBreakdown", "duration": 1, "entryType": "measure" }, { "startTime": 119, - "name": "lh:computed:LargestContentfulPaintAllFrames", + "name": "lh:computed:TimeToFirstByte", "duration": 1, "entryType": "measure" }, { "startTime": 120, - "name": "lh:computed:LCPBreakdown", + "name": "lh:computed:LCPImageRecord", "duration": 1, "entryType": "measure" }, { "startTime": 121, - "name": "lh:computed:TimeToFirstByte", + "name": "lh:audit:resource-summary", "duration": 1, "entryType": "measure" }, { "startTime": 122, - "name": "lh:computed:LCPImageRecord", + "name": "lh:computed:ResourceSummary", "duration": 1, "entryType": "measure" }, { "startTime": 123, - "name": "lh:audit:resource-summary", + "name": "lh:audit:third-party-summary", "duration": 1, "entryType": "measure" }, { "startTime": 124, - "name": "lh:computed:ResourceSummary", + "name": "lh:audit:third-party-facades", "duration": 1, "entryType": "measure" }, { "startTime": 125, - "name": "lh:audit:third-party-summary", + "name": "lh:audit:largest-contentful-paint-element", "duration": 1, "entryType": "measure" }, { "startTime": 126, - "name": "lh:audit:third-party-facades", + "name": "lh:audit:lcp-lazy-loaded", "duration": 1, "entryType": "measure" }, { "startTime": 127, - "name": "lh:audit:largest-contentful-paint-element", + "name": "lh:audit:layout-shifts", "duration": 1, "entryType": "measure" }, { "startTime": 128, - "name": "lh:audit:lcp-lazy-loaded", + "name": "lh:computed:TraceEngineResult", "duration": 1, "entryType": "measure" }, { "startTime": 129, - "name": "lh:audit:layout-shifts", + "name": "lh:audit:long-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 130, - "name": "lh:computed:TraceEngineResult", + "name": "lh:audit:non-composited-animations", "duration": 1, "entryType": "measure" }, { "startTime": 131, - "name": "lh:audit:long-tasks", + "name": "lh:audit:unsized-images", "duration": 1, "entryType": "measure" }, { "startTime": 132, - "name": "lh:audit:non-composited-animations", + "name": "lh:audit:valid-source-maps", "duration": 1, "entryType": "measure" }, { "startTime": 133, - "name": "lh:audit:unsized-images", + "name": "lh:audit:prioritize-lcp-image", "duration": 1, "entryType": "measure" }, { "startTime": 134, - "name": "lh:audit:valid-source-maps", + "name": "lh:audit:csp-xss", "duration": 1, "entryType": "measure" }, { "startTime": 135, - "name": "lh:audit:prioritize-lcp-image", + "name": "lh:audit:script-treemap-data", "duration": 1, "entryType": "measure" }, { "startTime": 136, - "name": "lh:audit:csp-xss", + "name": "lh:computed:ModuleDuplication", "duration": 1, "entryType": "measure" }, { "startTime": 137, - "name": "lh:audit:script-treemap-data", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, { "startTime": 138, - "name": "lh:computed:ModuleDuplication", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, @@ -6250,702 +6244,690 @@ }, { "startTime": 151, - "name": "lh:computed:UnusedJavascriptSummary", + "name": "lh:audit:accesskeys", "duration": 1, "entryType": "measure" }, { "startTime": 152, - "name": "lh:computed:UnusedJavascriptSummary", + "name": "lh:audit:aria-allowed-attr", "duration": 1, "entryType": "measure" }, { "startTime": 153, - "name": "lh:audit:accesskeys", + "name": "lh:audit:aria-allowed-role", "duration": 1, "entryType": "measure" }, { "startTime": 154, - "name": "lh:audit:aria-allowed-attr", + "name": "lh:audit:aria-command-name", "duration": 1, "entryType": "measure" }, { "startTime": 155, - "name": "lh:audit:aria-allowed-role", + "name": "lh:audit:aria-conditional-attr", "duration": 1, "entryType": "measure" }, { "startTime": 156, - "name": "lh:audit:aria-command-name", + "name": "lh:audit:aria-deprecated-role", "duration": 1, "entryType": "measure" }, { "startTime": 157, - "name": "lh:audit:aria-conditional-attr", + "name": "lh:audit:aria-dialog-name", "duration": 1, "entryType": "measure" }, { "startTime": 158, - "name": "lh:audit:aria-deprecated-role", + "name": "lh:audit:aria-hidden-body", "duration": 1, "entryType": "measure" }, { "startTime": 159, - "name": "lh:audit:aria-dialog-name", + "name": "lh:audit:aria-hidden-focus", "duration": 1, "entryType": "measure" }, { "startTime": 160, - "name": "lh:audit:aria-hidden-body", + "name": "lh:audit:aria-input-field-name", "duration": 1, "entryType": "measure" }, { "startTime": 161, - "name": "lh:audit:aria-hidden-focus", + "name": "lh:audit:aria-meter-name", "duration": 1, "entryType": "measure" }, { "startTime": 162, - "name": "lh:audit:aria-input-field-name", + "name": "lh:audit:aria-progressbar-name", "duration": 1, "entryType": "measure" }, { "startTime": 163, - "name": "lh:audit:aria-meter-name", + "name": "lh:audit:aria-prohibited-attr", "duration": 1, "entryType": "measure" }, { "startTime": 164, - "name": "lh:audit:aria-progressbar-name", + "name": "lh:audit:aria-required-attr", "duration": 1, "entryType": "measure" }, { "startTime": 165, - "name": "lh:audit:aria-prohibited-attr", + "name": "lh:audit:aria-required-children", "duration": 1, "entryType": "measure" }, { "startTime": 166, - "name": "lh:audit:aria-required-attr", + "name": "lh:audit:aria-required-parent", "duration": 1, "entryType": "measure" }, { "startTime": 167, - "name": "lh:audit:aria-required-children", + "name": "lh:audit:aria-roles", "duration": 1, "entryType": "measure" }, { "startTime": 168, - "name": "lh:audit:aria-required-parent", + "name": "lh:audit:aria-text", "duration": 1, "entryType": "measure" }, { "startTime": 169, - "name": "lh:audit:aria-roles", + "name": "lh:audit:aria-toggle-field-name", "duration": 1, "entryType": "measure" }, { "startTime": 170, - "name": "lh:audit:aria-text", + "name": "lh:audit:aria-tooltip-name", "duration": 1, "entryType": "measure" }, { "startTime": 171, - "name": "lh:audit:aria-toggle-field-name", + "name": "lh:audit:aria-treeitem-name", "duration": 1, "entryType": "measure" }, { "startTime": 172, - "name": "lh:audit:aria-tooltip-name", + "name": "lh:audit:aria-valid-attr-value", "duration": 1, "entryType": "measure" }, { "startTime": 173, - "name": "lh:audit:aria-treeitem-name", + "name": "lh:audit:aria-valid-attr", "duration": 1, "entryType": "measure" }, { "startTime": 174, - "name": "lh:audit:aria-valid-attr-value", + "name": "lh:audit:button-name", "duration": 1, "entryType": "measure" }, { "startTime": 175, - "name": "lh:audit:aria-valid-attr", + "name": "lh:audit:bypass", "duration": 1, "entryType": "measure" }, { "startTime": 176, - "name": "lh:audit:button-name", + "name": "lh:audit:color-contrast", "duration": 1, "entryType": "measure" }, { "startTime": 177, - "name": "lh:audit:bypass", + "name": "lh:audit:definition-list", "duration": 1, "entryType": "measure" }, { "startTime": 178, - "name": "lh:audit:color-contrast", + "name": "lh:audit:dlitem", "duration": 1, "entryType": "measure" }, { "startTime": 179, - "name": "lh:audit:definition-list", + "name": "lh:audit:document-title", "duration": 1, "entryType": "measure" }, { "startTime": 180, - "name": "lh:audit:dlitem", + "name": "lh:audit:duplicate-id-aria", "duration": 1, "entryType": "measure" }, { "startTime": 181, - "name": "lh:audit:document-title", + "name": "lh:audit:empty-heading", "duration": 1, "entryType": "measure" }, { "startTime": 182, - "name": "lh:audit:duplicate-id-aria", + "name": "lh:audit:form-field-multiple-labels", "duration": 1, "entryType": "measure" }, { "startTime": 183, - "name": "lh:audit:empty-heading", + "name": "lh:audit:frame-title", "duration": 1, "entryType": "measure" }, { "startTime": 184, - "name": "lh:audit:form-field-multiple-labels", + "name": "lh:audit:heading-order", "duration": 1, "entryType": "measure" }, { "startTime": 185, - "name": "lh:audit:frame-title", + "name": "lh:audit:html-has-lang", "duration": 1, "entryType": "measure" }, { "startTime": 186, - "name": "lh:audit:heading-order", + "name": "lh:audit:html-lang-valid", "duration": 1, "entryType": "measure" }, { "startTime": 187, - "name": "lh:audit:html-has-lang", + "name": "lh:audit:html-xml-lang-mismatch", "duration": 1, "entryType": "measure" }, { "startTime": 188, - "name": "lh:audit:html-lang-valid", + "name": "lh:audit:identical-links-same-purpose", "duration": 1, "entryType": "measure" }, { "startTime": 189, - "name": "lh:audit:html-xml-lang-mismatch", + "name": "lh:audit:image-alt", "duration": 1, "entryType": "measure" }, { "startTime": 190, - "name": "lh:audit:identical-links-same-purpose", + "name": "lh:audit:image-redundant-alt", "duration": 1, "entryType": "measure" }, { "startTime": 191, - "name": "lh:audit:image-alt", + "name": "lh:audit:input-button-name", "duration": 1, "entryType": "measure" }, { "startTime": 192, - "name": "lh:audit:image-redundant-alt", + "name": "lh:audit:input-image-alt", "duration": 1, "entryType": "measure" }, { "startTime": 193, - "name": "lh:audit:input-button-name", + "name": "lh:audit:label-content-name-mismatch", "duration": 1, "entryType": "measure" }, { "startTime": 194, - "name": "lh:audit:input-image-alt", + "name": "lh:audit:label", "duration": 1, "entryType": "measure" }, { "startTime": 195, - "name": "lh:audit:label-content-name-mismatch", + "name": "lh:audit:landmark-one-main", "duration": 1, "entryType": "measure" }, { "startTime": 196, - "name": "lh:audit:label", + "name": "lh:audit:link-name", "duration": 1, "entryType": "measure" }, { "startTime": 197, - "name": "lh:audit:landmark-one-main", + "name": "lh:audit:link-in-text-block", "duration": 1, "entryType": "measure" }, { "startTime": 198, - "name": "lh:audit:link-name", + "name": "lh:audit:list", "duration": 1, "entryType": "measure" }, { "startTime": 199, - "name": "lh:audit:link-in-text-block", + "name": "lh:audit:listitem", "duration": 1, "entryType": "measure" }, { "startTime": 200, - "name": "lh:audit:list", + "name": "lh:audit:meta-refresh", "duration": 1, "entryType": "measure" }, { "startTime": 201, - "name": "lh:audit:listitem", + "name": "lh:audit:meta-viewport", "duration": 1, "entryType": "measure" }, { "startTime": 202, - "name": "lh:audit:meta-refresh", + "name": "lh:audit:object-alt", "duration": 1, "entryType": "measure" }, { "startTime": 203, - "name": "lh:audit:meta-viewport", + "name": "lh:audit:select-name", "duration": 1, "entryType": "measure" }, { "startTime": 204, - "name": "lh:audit:object-alt", + "name": "lh:audit:skip-link", "duration": 1, "entryType": "measure" }, { "startTime": 205, - "name": "lh:audit:select-name", + "name": "lh:audit:tabindex", "duration": 1, "entryType": "measure" }, { "startTime": 206, - "name": "lh:audit:skip-link", + "name": "lh:audit:table-duplicate-name", "duration": 1, "entryType": "measure" }, { "startTime": 207, - "name": "lh:audit:tabindex", + "name": "lh:audit:table-fake-caption", "duration": 1, "entryType": "measure" }, { "startTime": 208, - "name": "lh:audit:table-duplicate-name", + "name": "lh:audit:target-size", "duration": 1, "entryType": "measure" }, { "startTime": 209, - "name": "lh:audit:table-fake-caption", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 210, - "name": "lh:audit:target-size", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 211, "name": "lh:audit:td-has-header", "duration": 1, "entryType": "measure" }, { - "startTime": 212, + "startTime": 210, "name": "lh:audit:td-headers-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 213, + "startTime": 211, "name": "lh:audit:th-has-data-cells", "duration": 1, "entryType": "measure" }, { - "startTime": 214, + "startTime": 212, "name": "lh:audit:valid-lang", "duration": 1, "entryType": "measure" }, { - "startTime": 215, + "startTime": 213, "name": "lh:audit:video-caption", "duration": 1, "entryType": "measure" }, { - "startTime": 216, + "startTime": 214, "name": "lh:audit:custom-controls-labels", "duration": 1, "entryType": "measure" }, { - "startTime": 217, + "startTime": 215, "name": "lh:audit:custom-controls-roles", "duration": 1, "entryType": "measure" }, { - "startTime": 218, + "startTime": 216, "name": "lh:audit:focus-traps", "duration": 1, "entryType": "measure" }, { - "startTime": 219, + "startTime": 217, "name": "lh:audit:focusable-controls", "duration": 1, "entryType": "measure" }, { - "startTime": 220, + "startTime": 218, "name": "lh:audit:interactive-element-affordance", "duration": 1, "entryType": "measure" }, { - "startTime": 221, + "startTime": 219, "name": "lh:audit:logical-tab-order", "duration": 1, "entryType": "measure" }, { - "startTime": 222, + "startTime": 220, "name": "lh:audit:managed-focus", "duration": 1, "entryType": "measure" }, { - "startTime": 223, + "startTime": 221, "name": "lh:audit:offscreen-content-hidden", "duration": 1, "entryType": "measure" }, { - "startTime": 224, + "startTime": 222, "name": "lh:audit:use-landmarks", "duration": 1, "entryType": "measure" }, { - "startTime": 225, + "startTime": 223, "name": "lh:audit:visual-order-follows-dom", "duration": 1, "entryType": "measure" }, { - "startTime": 226, + "startTime": 224, "name": "lh:audit:uses-long-cache-ttl", "duration": 1, "entryType": "measure" }, { - "startTime": 227, + "startTime": 225, "name": "lh:audit:total-byte-weight", "duration": 1, "entryType": "measure" }, { - "startTime": 228, + "startTime": 226, "name": "lh:audit:offscreen-images", "duration": 1, "entryType": "measure" }, { - "startTime": 229, + "startTime": 227, "name": "lh:audit:render-blocking-resources", "duration": 1, "entryType": "measure" }, { - "startTime": 230, + "startTime": 228, "name": "lh:computed:UnusedCSS", "duration": 1, "entryType": "measure" }, { - "startTime": 231, + "startTime": 229, "name": "lh:computed:NavigationInsights", "duration": 1, "entryType": "measure" }, { - "startTime": 232, + "startTime": 230, "name": "lh:computed:FirstContentfulPaint", "duration": 1, "entryType": "measure" }, { - "startTime": 233, + "startTime": 231, "name": "lh:audit:unminified-css", "duration": 1, "entryType": "measure" }, { - "startTime": 234, + "startTime": 232, "name": "lh:audit:unminified-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 235, + "startTime": 233, "name": "lh:audit:unused-css-rules", "duration": 1, "entryType": "measure" }, { - "startTime": 236, + "startTime": 234, "name": "lh:audit:unused-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 237, + "startTime": 235, "name": "lh:audit:modern-image-formats", "duration": 1, "entryType": "measure" }, { - "startTime": 238, + "startTime": 236, "name": "lh:audit:uses-optimized-images", "duration": 1, "entryType": "measure" }, { - "startTime": 239, + "startTime": 237, "name": "lh:audit:uses-text-compression", "duration": 1, "entryType": "measure" }, { - "startTime": 240, + "startTime": 238, "name": "lh:audit:uses-responsive-images", "duration": 1, "entryType": "measure" }, { - "startTime": 241, + "startTime": 239, "name": "lh:computed:ImageRecords", "duration": 1, "entryType": "measure" }, { - "startTime": 242, + "startTime": 240, "name": "lh:audit:efficient-animated-content", "duration": 1, "entryType": "measure" }, { - "startTime": 243, + "startTime": 241, "name": "lh:audit:duplicated-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 244, + "startTime": 242, "name": "lh:audit:legacy-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 245, + "startTime": 243, "name": "lh:audit:doctype", "duration": 1, "entryType": "measure" }, { - "startTime": 246, + "startTime": 244, "name": "lh:audit:charset", "duration": 1, "entryType": "measure" }, { - "startTime": 247, + "startTime": 245, "name": "lh:audit:dom-size", "duration": 1, "entryType": "measure" }, { - "startTime": 248, + "startTime": 246, "name": "lh:audit:geolocation-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 249, + "startTime": 247, "name": "lh:audit:inspector-issues", "duration": 1, "entryType": "measure" }, { - "startTime": 250, + "startTime": 248, "name": "lh:audit:no-document-write", "duration": 1, "entryType": "measure" }, { - "startTime": 251, + "startTime": 249, "name": "lh:audit:js-libraries", "duration": 1, "entryType": "measure" }, { - "startTime": 252, + "startTime": 250, "name": "lh:audit:notification-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 253, + "startTime": 251, "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, { - "startTime": 254, + "startTime": 252, "name": "lh:audit:uses-passive-event-listeners", "duration": 1, "entryType": "measure" }, { - "startTime": 255, + "startTime": 253, "name": "lh:audit:meta-description", "duration": 1, "entryType": "measure" }, { - "startTime": 256, + "startTime": 254, "name": "lh:audit:http-status-code", "duration": 1, "entryType": "measure" }, { - "startTime": 257, + "startTime": 255, "name": "lh:audit:font-size", "duration": 1, "entryType": "measure" }, { - "startTime": 258, + "startTime": 256, "name": "lh:audit:link-text", "duration": 1, "entryType": "measure" }, { - "startTime": 259, + "startTime": 257, "name": "lh:audit:crawlable-anchors", "duration": 1, "entryType": "measure" }, { - "startTime": 260, + "startTime": 258, "name": "lh:audit:is-crawlable", "duration": 1, "entryType": "measure" }, { - "startTime": 261, + "startTime": 259, "name": "lh:audit:robots-txt", "duration": 1, "entryType": "measure" }, { - "startTime": 262, + "startTime": 260, "name": "lh:audit:hreflang", "duration": 1, "entryType": "measure" }, { - "startTime": 263, + "startTime": 261, "name": "lh:audit:canonical", "duration": 1, "entryType": "measure" }, { - "startTime": 264, + "startTime": 262, "name": "lh:audit:structured-data", "duration": 1, "entryType": "measure" }, { - "startTime": 265, + "startTime": 263, "name": "lh:audit:bf-cache", "duration": 1, "entryType": "measure" }, { - "startTime": 266, + "startTime": 264, "name": "lh:runner:generate", "duration": 1, "entryType": "measure" } ], - "total": 267 + "total": 265 }, "i18n": { "rendererFormattedStrings": { @@ -7046,12 +7028,6 @@ }, "path": "audits[largest-contentful-paint].displayValue" }, - { - "values": { - "timeInMs": 2519.9925 - }, - "path": "audits[first-meaningful-paint].displayValue" - }, { "values": { "timeInMs": 2519.9925 @@ -17803,11 +17779,8 @@ "id": "first-meaningful-paint", "title": "First Meaningful Paint", "description": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 932.8647000000001, - "numericUnit": "millisecond", - "displayValue": "0.9 s" + "score": null, + "scoreDisplayMode": "notApplicable" }, "speed-index": { "id": "speed-index", @@ -19092,7 +19065,6 @@ "items": [ { "firstContentfulPaint": 933, - "firstMeaningfulPaint": 933, "largestContentfulPaint": 2024, "interactive": 2107, "speedIndex": 933, @@ -19113,8 +19085,6 @@ "observedFirstContentfulPaintTs": 278939113265, "observedFirstContentfulPaintAllFrames": 509, "observedFirstContentfulPaintAllFramesTs": 278939113265, - "observedFirstMeaningfulPaint": 509, - "observedFirstMeaningfulPaintTs": 278939113265, "observedLargestContentfulPaint": 509, "observedLargestContentfulPaintTs": 278939113265, "observedLargestContentfulPaintAllFrames": 509, @@ -23704,409 +23674,409 @@ }, { "startTime": 69, - "name": "lh:computed:FirstMeaningfulPaint", + "name": "lh:audit:speed-index", "duration": 1, "entryType": "measure" }, { "startTime": 70, - "name": "lh:computed:LanternFirstMeaningfulPaint", + "name": "lh:computed:SpeedIndex", "duration": 1, "entryType": "measure" }, { "startTime": 71, - "name": "lh:audit:speed-index", + "name": "lh:computed:LanternSpeedIndex", "duration": 1, "entryType": "measure" }, { "startTime": 72, - "name": "lh:computed:SpeedIndex", + "name": "lh:computed:Speedline", "duration": 1, "entryType": "measure" }, { "startTime": 73, - "name": "lh:computed:LanternSpeedIndex", + "name": "lh:audit:screenshot-thumbnails", "duration": 1, "entryType": "measure" }, { "startTime": 74, - "name": "lh:computed:Speedline", + "name": "lh:audit:final-screenshot", "duration": 1, "entryType": "measure" }, { "startTime": 75, - "name": "lh:audit:screenshot-thumbnails", + "name": "lh:computed:Screenshots", "duration": 1, "entryType": "measure" }, { "startTime": 76, - "name": "lh:audit:final-screenshot", + "name": "lh:audit:total-blocking-time", "duration": 1, "entryType": "measure" }, { "startTime": 77, - "name": "lh:computed:Screenshots", + "name": "lh:computed:TotalBlockingTime", "duration": 1, "entryType": "measure" }, { "startTime": 78, - "name": "lh:audit:total-blocking-time", + "name": "lh:computed:LanternTotalBlockingTime", "duration": 1, "entryType": "measure" }, { "startTime": 79, - "name": "lh:computed:TotalBlockingTime", + "name": "lh:computed:LanternInteractive", "duration": 1, "entryType": "measure" }, { "startTime": 80, - "name": "lh:computed:LanternTotalBlockingTime", + "name": "lh:audit:max-potential-fid", "duration": 1, "entryType": "measure" }, { "startTime": 81, - "name": "lh:computed:LanternInteractive", + "name": "lh:computed:MaxPotentialFID", "duration": 1, "entryType": "measure" }, { "startTime": 82, - "name": "lh:audit:max-potential-fid", + "name": "lh:computed:LanternMaxPotentialFID", "duration": 1, "entryType": "measure" }, { "startTime": 83, - "name": "lh:computed:MaxPotentialFID", + "name": "lh:audit:cumulative-layout-shift", "duration": 1, "entryType": "measure" }, { "startTime": 84, - "name": "lh:computed:LanternMaxPotentialFID", + "name": "lh:computed:CumulativeLayoutShift", "duration": 1, "entryType": "measure" }, { "startTime": 85, - "name": "lh:audit:cumulative-layout-shift", + "name": "lh:audit:errors-in-console", "duration": 1, "entryType": "measure" }, { "startTime": 86, - "name": "lh:computed:CumulativeLayoutShift", + "name": "lh:computed:JSBundles", "duration": 1, "entryType": "measure" }, { "startTime": 87, - "name": "lh:audit:errors-in-console", + "name": "lh:audit:server-response-time", "duration": 1, "entryType": "measure" }, { "startTime": 88, - "name": "lh:computed:JSBundles", + "name": "lh:computed:MainResource", "duration": 1, "entryType": "measure" }, { "startTime": 89, - "name": "lh:audit:server-response-time", + "name": "lh:audit:interactive", "duration": 1, "entryType": "measure" }, { "startTime": 90, - "name": "lh:computed:MainResource", + "name": "lh:computed:Interactive", "duration": 1, "entryType": "measure" }, { "startTime": 91, - "name": "lh:audit:interactive", + "name": "lh:audit:user-timings", "duration": 1, "entryType": "measure" }, { "startTime": 92, - "name": "lh:computed:Interactive", + "name": "lh:computed:UserTimings", "duration": 1, "entryType": "measure" }, { "startTime": 93, - "name": "lh:audit:user-timings", + "name": "lh:audit:critical-request-chains", "duration": 1, "entryType": "measure" }, { "startTime": 94, - "name": "lh:computed:UserTimings", + "name": "lh:computed:CriticalRequestChains", "duration": 1, "entryType": "measure" }, { "startTime": 95, - "name": "lh:audit:critical-request-chains", + "name": "lh:audit:redirects", "duration": 1, "entryType": "measure" }, { "startTime": 96, - "name": "lh:computed:CriticalRequestChains", + "name": "lh:audit:image-aspect-ratio", "duration": 1, "entryType": "measure" }, { "startTime": 97, - "name": "lh:audit:redirects", + "name": "lh:audit:image-size-responsive", "duration": 1, "entryType": "measure" }, { "startTime": 98, - "name": "lh:audit:image-aspect-ratio", + "name": "lh:audit:deprecations", "duration": 1, "entryType": "measure" }, { "startTime": 99, - "name": "lh:audit:image-size-responsive", + "name": "lh:audit:third-party-cookies", "duration": 1, "entryType": "measure" }, { "startTime": 100, - "name": "lh:audit:deprecations", + "name": "lh:audit:mainthread-work-breakdown", "duration": 1, "entryType": "measure" }, { "startTime": 101, - "name": "lh:audit:third-party-cookies", + "name": "lh:computed:MainThreadTasks", "duration": 1, "entryType": "measure" }, { "startTime": 102, - "name": "lh:audit:mainthread-work-breakdown", + "name": "lh:audit:bootup-time", "duration": 1, "entryType": "measure" }, { "startTime": 103, - "name": "lh:computed:MainThreadTasks", + "name": "lh:computed:TBTImpactTasks", "duration": 1, "entryType": "measure" }, { "startTime": 104, - "name": "lh:audit:bootup-time", + "name": "lh:audit:uses-rel-preconnect", "duration": 1, "entryType": "measure" }, { "startTime": 105, - "name": "lh:computed:TBTImpactTasks", + "name": "lh:audit:font-display", "duration": 1, "entryType": "measure" }, { "startTime": 106, - "name": "lh:audit:uses-rel-preconnect", + "name": "lh:audit:diagnostics", "duration": 1, "entryType": "measure" }, { "startTime": 107, - "name": "lh:audit:font-display", + "name": "lh:audit:network-requests", "duration": 1, "entryType": "measure" }, { "startTime": 108, - "name": "lh:audit:diagnostics", + "name": "lh:computed:EntityClassification", "duration": 1, "entryType": "measure" }, { "startTime": 109, - "name": "lh:audit:network-requests", + "name": "lh:audit:network-rtt", "duration": 1, "entryType": "measure" }, { "startTime": 110, - "name": "lh:computed:EntityClassification", + "name": "lh:audit:network-server-latency", "duration": 1, "entryType": "measure" }, { "startTime": 111, - "name": "lh:audit:network-rtt", + "name": "lh:audit:main-thread-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 112, - "name": "lh:audit:network-server-latency", + "name": "lh:audit:metrics", "duration": 1, "entryType": "measure" }, { "startTime": 113, - "name": "lh:audit:main-thread-tasks", + "name": "lh:computed:TimingSummary", "duration": 1, "entryType": "measure" }, { "startTime": 114, - "name": "lh:audit:metrics", + "name": "lh:computed:FirstContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 115, - "name": "lh:computed:TimingSummary", + "name": "lh:computed:LargestContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 116, - "name": "lh:computed:FirstContentfulPaintAllFrames", + "name": "lh:computed:LCPBreakdown", "duration": 1, "entryType": "measure" }, { "startTime": 117, - "name": "lh:computed:LargestContentfulPaintAllFrames", + "name": "lh:computed:TimeToFirstByte", "duration": 1, "entryType": "measure" }, { "startTime": 118, - "name": "lh:computed:LCPBreakdown", + "name": "lh:computed:LCPImageRecord", "duration": 1, "entryType": "measure" }, { "startTime": 119, - "name": "lh:computed:TimeToFirstByte", + "name": "lh:audit:resource-summary", "duration": 1, "entryType": "measure" }, { "startTime": 120, - "name": "lh:computed:LCPImageRecord", + "name": "lh:computed:ResourceSummary", "duration": 1, "entryType": "measure" }, { "startTime": 121, - "name": "lh:audit:resource-summary", + "name": "lh:audit:third-party-summary", "duration": 1, "entryType": "measure" }, { "startTime": 122, - "name": "lh:computed:ResourceSummary", + "name": "lh:audit:third-party-facades", "duration": 1, "entryType": "measure" }, { "startTime": 123, - "name": "lh:audit:third-party-summary", + "name": "lh:audit:largest-contentful-paint-element", "duration": 1, "entryType": "measure" }, { "startTime": 124, - "name": "lh:audit:third-party-facades", + "name": "lh:audit:lcp-lazy-loaded", "duration": 1, "entryType": "measure" }, { "startTime": 125, - "name": "lh:audit:largest-contentful-paint-element", + "name": "lh:audit:layout-shifts", "duration": 1, "entryType": "measure" }, { "startTime": 126, - "name": "lh:audit:lcp-lazy-loaded", + "name": "lh:computed:TraceEngineResult", "duration": 1, "entryType": "measure" }, { "startTime": 127, - "name": "lh:audit:layout-shifts", + "name": "lh:audit:long-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 128, - "name": "lh:computed:TraceEngineResult", + "name": "lh:audit:non-composited-animations", "duration": 1, "entryType": "measure" }, { "startTime": 129, - "name": "lh:audit:long-tasks", + "name": "lh:audit:unsized-images", "duration": 1, "entryType": "measure" }, { "startTime": 130, - "name": "lh:audit:non-composited-animations", + "name": "lh:audit:valid-source-maps", "duration": 1, "entryType": "measure" }, { "startTime": 131, - "name": "lh:audit:unsized-images", + "name": "lh:audit:prioritize-lcp-image", "duration": 1, "entryType": "measure" }, { "startTime": 132, - "name": "lh:audit:valid-source-maps", + "name": "lh:audit:csp-xss", "duration": 1, "entryType": "measure" }, { "startTime": 133, - "name": "lh:audit:prioritize-lcp-image", + "name": "lh:audit:script-treemap-data", "duration": 1, "entryType": "measure" }, { "startTime": 134, - "name": "lh:audit:csp-xss", + "name": "lh:computed:ModuleDuplication", "duration": 1, "entryType": "measure" }, { "startTime": 135, - "name": "lh:audit:script-treemap-data", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, { "startTime": 136, - "name": "lh:computed:ModuleDuplication", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, @@ -24190,702 +24160,690 @@ }, { "startTime": 150, - "name": "lh:computed:UnusedJavascriptSummary", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 151, - "name": "lh:computed:UnusedJavascriptSummary", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 152, "name": "lh:audit:accesskeys", "duration": 1, "entryType": "measure" }, { - "startTime": 153, + "startTime": 151, "name": "lh:audit:aria-allowed-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 154, + "startTime": 152, "name": "lh:audit:aria-allowed-role", "duration": 1, "entryType": "measure" }, { - "startTime": 155, + "startTime": 153, "name": "lh:audit:aria-command-name", "duration": 1, "entryType": "measure" }, { - "startTime": 156, + "startTime": 154, "name": "lh:audit:aria-conditional-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 157, + "startTime": 155, "name": "lh:audit:aria-deprecated-role", "duration": 1, "entryType": "measure" }, { - "startTime": 158, + "startTime": 156, "name": "lh:audit:aria-dialog-name", "duration": 1, "entryType": "measure" }, { - "startTime": 159, + "startTime": 157, "name": "lh:audit:aria-hidden-body", "duration": 1, "entryType": "measure" }, { - "startTime": 160, + "startTime": 158, "name": "lh:audit:aria-hidden-focus", "duration": 1, "entryType": "measure" }, { - "startTime": 161, + "startTime": 159, "name": "lh:audit:aria-input-field-name", "duration": 1, "entryType": "measure" }, { - "startTime": 162, + "startTime": 160, "name": "lh:audit:aria-meter-name", "duration": 1, "entryType": "measure" }, { - "startTime": 163, + "startTime": 161, "name": "lh:audit:aria-progressbar-name", "duration": 1, "entryType": "measure" }, { - "startTime": 164, + "startTime": 162, "name": "lh:audit:aria-prohibited-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 165, + "startTime": 163, "name": "lh:audit:aria-required-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 166, + "startTime": 164, "name": "lh:audit:aria-required-children", "duration": 1, "entryType": "measure" }, { - "startTime": 167, + "startTime": 165, "name": "lh:audit:aria-required-parent", "duration": 1, "entryType": "measure" }, { - "startTime": 168, + "startTime": 166, "name": "lh:audit:aria-roles", "duration": 1, "entryType": "measure" }, { - "startTime": 169, + "startTime": 167, "name": "lh:audit:aria-text", "duration": 1, "entryType": "measure" }, { - "startTime": 170, + "startTime": 168, "name": "lh:audit:aria-toggle-field-name", "duration": 1, "entryType": "measure" }, { - "startTime": 171, + "startTime": 169, "name": "lh:audit:aria-tooltip-name", "duration": 1, "entryType": "measure" }, { - "startTime": 172, + "startTime": 170, "name": "lh:audit:aria-treeitem-name", "duration": 1, "entryType": "measure" }, { - "startTime": 173, + "startTime": 171, "name": "lh:audit:aria-valid-attr-value", "duration": 1, "entryType": "measure" }, { - "startTime": 174, + "startTime": 172, "name": "lh:audit:aria-valid-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 175, + "startTime": 173, "name": "lh:audit:button-name", "duration": 1, "entryType": "measure" }, { - "startTime": 176, + "startTime": 174, "name": "lh:audit:bypass", "duration": 1, "entryType": "measure" }, { - "startTime": 177, + "startTime": 175, "name": "lh:audit:color-contrast", "duration": 1, "entryType": "measure" }, { - "startTime": 178, + "startTime": 176, "name": "lh:audit:definition-list", "duration": 1, "entryType": "measure" }, { - "startTime": 179, + "startTime": 177, "name": "lh:audit:dlitem", "duration": 1, "entryType": "measure" }, { - "startTime": 180, + "startTime": 178, "name": "lh:audit:document-title", "duration": 1, "entryType": "measure" }, { - "startTime": 181, + "startTime": 179, "name": "lh:audit:duplicate-id-aria", "duration": 1, "entryType": "measure" }, { - "startTime": 182, + "startTime": 180, "name": "lh:audit:empty-heading", "duration": 1, "entryType": "measure" }, { - "startTime": 183, + "startTime": 181, "name": "lh:audit:form-field-multiple-labels", "duration": 1, "entryType": "measure" }, { - "startTime": 184, + "startTime": 182, "name": "lh:audit:frame-title", "duration": 1, "entryType": "measure" }, { - "startTime": 185, + "startTime": 183, "name": "lh:audit:heading-order", "duration": 1, "entryType": "measure" }, { - "startTime": 186, + "startTime": 184, "name": "lh:audit:html-has-lang", "duration": 1, "entryType": "measure" }, { - "startTime": 187, + "startTime": 185, "name": "lh:audit:html-lang-valid", "duration": 1, "entryType": "measure" }, { - "startTime": 188, + "startTime": 186, "name": "lh:audit:html-xml-lang-mismatch", "duration": 1, "entryType": "measure" }, { - "startTime": 189, + "startTime": 187, "name": "lh:audit:identical-links-same-purpose", "duration": 1, "entryType": "measure" }, { - "startTime": 190, + "startTime": 188, "name": "lh:audit:image-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 191, + "startTime": 189, "name": "lh:audit:image-redundant-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 192, + "startTime": 190, "name": "lh:audit:input-button-name", "duration": 1, "entryType": "measure" }, { - "startTime": 193, + "startTime": 191, "name": "lh:audit:input-image-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 194, + "startTime": 192, "name": "lh:audit:label-content-name-mismatch", "duration": 1, "entryType": "measure" }, { - "startTime": 195, + "startTime": 193, "name": "lh:audit:label", "duration": 1, "entryType": "measure" }, { - "startTime": 196, + "startTime": 194, "name": "lh:audit:landmark-one-main", "duration": 1, "entryType": "measure" }, { - "startTime": 197, + "startTime": 195, "name": "lh:audit:link-name", "duration": 1, "entryType": "measure" }, { - "startTime": 198, + "startTime": 196, "name": "lh:audit:link-in-text-block", "duration": 1, "entryType": "measure" }, { - "startTime": 199, + "startTime": 197, "name": "lh:audit:list", "duration": 1, "entryType": "measure" }, { - "startTime": 200, + "startTime": 198, "name": "lh:audit:listitem", "duration": 1, "entryType": "measure" }, { - "startTime": 201, + "startTime": 199, "name": "lh:audit:meta-refresh", "duration": 1, "entryType": "measure" }, { - "startTime": 202, + "startTime": 200, "name": "lh:audit:meta-viewport", "duration": 1, "entryType": "measure" }, { - "startTime": 203, + "startTime": 201, "name": "lh:audit:object-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 204, + "startTime": 202, "name": "lh:audit:select-name", "duration": 1, "entryType": "measure" }, { - "startTime": 205, + "startTime": 203, "name": "lh:audit:skip-link", "duration": 1, "entryType": "measure" }, { - "startTime": 206, + "startTime": 204, "name": "lh:audit:tabindex", "duration": 1, "entryType": "measure" }, { - "startTime": 207, + "startTime": 205, "name": "lh:audit:table-duplicate-name", "duration": 1, "entryType": "measure" }, { - "startTime": 208, + "startTime": 206, "name": "lh:audit:table-fake-caption", "duration": 1, "entryType": "measure" }, { - "startTime": 209, + "startTime": 207, "name": "lh:audit:target-size", "duration": 1, "entryType": "measure" }, { - "startTime": 210, + "startTime": 208, "name": "lh:audit:td-has-header", "duration": 1, "entryType": "measure" }, { - "startTime": 211, + "startTime": 209, "name": "lh:audit:td-headers-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 212, + "startTime": 210, "name": "lh:audit:th-has-data-cells", "duration": 1, "entryType": "measure" }, { - "startTime": 213, + "startTime": 211, "name": "lh:audit:valid-lang", "duration": 1, "entryType": "measure" }, { - "startTime": 214, + "startTime": 212, "name": "lh:audit:video-caption", "duration": 1, "entryType": "measure" }, { - "startTime": 215, + "startTime": 213, "name": "lh:audit:custom-controls-labels", "duration": 1, "entryType": "measure" }, { - "startTime": 216, + "startTime": 214, "name": "lh:audit:custom-controls-roles", "duration": 1, "entryType": "measure" }, { - "startTime": 217, + "startTime": 215, "name": "lh:audit:focus-traps", "duration": 1, "entryType": "measure" }, { - "startTime": 218, + "startTime": 216, "name": "lh:audit:focusable-controls", "duration": 1, "entryType": "measure" }, { - "startTime": 219, + "startTime": 217, "name": "lh:audit:interactive-element-affordance", "duration": 1, "entryType": "measure" }, { - "startTime": 220, + "startTime": 218, "name": "lh:audit:logical-tab-order", "duration": 1, "entryType": "measure" }, { - "startTime": 221, + "startTime": 219, "name": "lh:audit:managed-focus", "duration": 1, "entryType": "measure" }, { - "startTime": 222, + "startTime": 220, "name": "lh:audit:offscreen-content-hidden", "duration": 1, "entryType": "measure" }, { - "startTime": 223, + "startTime": 221, "name": "lh:audit:use-landmarks", "duration": 1, "entryType": "measure" }, { - "startTime": 224, + "startTime": 222, "name": "lh:audit:visual-order-follows-dom", "duration": 1, "entryType": "measure" }, { - "startTime": 225, + "startTime": 223, "name": "lh:audit:uses-long-cache-ttl", "duration": 1, "entryType": "measure" }, { - "startTime": 226, + "startTime": 224, "name": "lh:audit:total-byte-weight", "duration": 1, "entryType": "measure" }, { - "startTime": 227, + "startTime": 225, "name": "lh:audit:offscreen-images", "duration": 1, "entryType": "measure" }, { - "startTime": 228, + "startTime": 226, "name": "lh:audit:render-blocking-resources", "duration": 1, "entryType": "measure" }, { - "startTime": 229, + "startTime": 227, "name": "lh:computed:UnusedCSS", "duration": 1, "entryType": "measure" }, { - "startTime": 230, + "startTime": 228, "name": "lh:computed:NavigationInsights", "duration": 1, "entryType": "measure" }, { - "startTime": 231, + "startTime": 229, "name": "lh:computed:FirstContentfulPaint", "duration": 1, "entryType": "measure" }, { - "startTime": 232, + "startTime": 230, "name": "lh:audit:unminified-css", "duration": 1, "entryType": "measure" }, { - "startTime": 233, + "startTime": 231, "name": "lh:audit:unminified-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 234, + "startTime": 232, "name": "lh:audit:unused-css-rules", "duration": 1, "entryType": "measure" }, { - "startTime": 235, + "startTime": 233, "name": "lh:audit:unused-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 236, + "startTime": 234, "name": "lh:audit:modern-image-formats", "duration": 1, "entryType": "measure" }, { - "startTime": 237, + "startTime": 235, "name": "lh:audit:uses-optimized-images", "duration": 1, "entryType": "measure" }, { - "startTime": 238, + "startTime": 236, "name": "lh:audit:uses-text-compression", "duration": 1, "entryType": "measure" }, { - "startTime": 239, + "startTime": 237, "name": "lh:audit:uses-responsive-images", "duration": 1, "entryType": "measure" }, { - "startTime": 240, + "startTime": 238, "name": "lh:computed:ImageRecords", "duration": 1, "entryType": "measure" }, { - "startTime": 241, + "startTime": 239, "name": "lh:audit:efficient-animated-content", "duration": 1, "entryType": "measure" }, { - "startTime": 242, + "startTime": 240, "name": "lh:audit:duplicated-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 243, + "startTime": 241, "name": "lh:audit:legacy-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 244, + "startTime": 242, "name": "lh:audit:doctype", "duration": 1, "entryType": "measure" }, { - "startTime": 245, + "startTime": 243, "name": "lh:audit:charset", "duration": 1, "entryType": "measure" }, { - "startTime": 246, + "startTime": 244, "name": "lh:audit:dom-size", "duration": 1, "entryType": "measure" }, { - "startTime": 247, + "startTime": 245, "name": "lh:audit:geolocation-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 248, + "startTime": 246, "name": "lh:audit:inspector-issues", "duration": 1, "entryType": "measure" }, { - "startTime": 249, + "startTime": 247, "name": "lh:audit:no-document-write", "duration": 1, "entryType": "measure" }, { - "startTime": 250, + "startTime": 248, "name": "lh:audit:js-libraries", "duration": 1, "entryType": "measure" }, { - "startTime": 251, + "startTime": 249, "name": "lh:audit:notification-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 252, + "startTime": 250, "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, { - "startTime": 253, + "startTime": 251, "name": "lh:audit:uses-passive-event-listeners", "duration": 1, "entryType": "measure" }, { - "startTime": 254, + "startTime": 252, "name": "lh:audit:meta-description", "duration": 1, "entryType": "measure" }, { - "startTime": 255, + "startTime": 253, "name": "lh:audit:http-status-code", "duration": 1, "entryType": "measure" }, { - "startTime": 256, + "startTime": 254, "name": "lh:audit:font-size", "duration": 1, "entryType": "measure" }, { - "startTime": 257, + "startTime": 255, "name": "lh:audit:link-text", "duration": 1, "entryType": "measure" }, { - "startTime": 258, + "startTime": 256, "name": "lh:audit:crawlable-anchors", "duration": 1, "entryType": "measure" }, { - "startTime": 259, + "startTime": 257, "name": "lh:audit:is-crawlable", "duration": 1, "entryType": "measure" }, { - "startTime": 260, + "startTime": 258, "name": "lh:audit:robots-txt", "duration": 1, "entryType": "measure" }, { - "startTime": 261, + "startTime": 259, "name": "lh:audit:hreflang", "duration": 1, "entryType": "measure" }, { - "startTime": 262, + "startTime": 260, "name": "lh:audit:canonical", "duration": 1, "entryType": "measure" }, { - "startTime": 263, + "startTime": 261, "name": "lh:audit:structured-data", "duration": 1, "entryType": "measure" }, { - "startTime": 264, + "startTime": 262, "name": "lh:audit:bf-cache", "duration": 1, "entryType": "measure" }, { - "startTime": 265, + "startTime": 263, "name": "lh:runner:generate", "duration": 1, "entryType": "measure" } ], - "total": 266 + "total": 264 }, "i18n": { "rendererFormattedStrings": { @@ -24986,12 +24944,6 @@ }, "path": "audits[largest-contentful-paint].displayValue" }, - { - "values": { - "timeInMs": 932.8647000000001 - }, - "path": "audits[first-meaningful-paint].displayValue" - }, { "values": { "timeInMs": 932.8647000000001 diff --git a/core/test/lib/asset-saver-test.js b/core/test/lib/asset-saver-test.js index 20dbee05d058..2e98801959dd 100644 --- a/core/test/lib/asset-saver-test.js +++ b/core/test/lib/asset-saver-test.js @@ -50,7 +50,7 @@ describe('asset-saver helper', () => { const traceEventsWithoutExtrasOnDisk = traceEventsOnDisk.slice(0, traceEvents.length); const traceEventsFake = traceEventsOnDisk.slice(traceEvents.length); assertTraceEventsEqual(traceEventsWithoutExtrasOnDisk, traceEvents); - assert.equal(traceEventsFake.length, 18); + assert.equal(traceEventsFake.length, 16); fs.unlinkSync(traceFilename); }); diff --git a/core/test/lib/lantern/metrics/__snapshots__/first-meaningful-paint-test.js.snap b/core/test/lib/lantern/metrics/__snapshots__/first-meaningful-paint-test.js.snap deleted file mode 100644 index 1404c254b5d2..000000000000 --- a/core/test/lib/lantern/metrics/__snapshots__/first-meaningful-paint-test.js.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Metrics: Lantern FMP should compute predicted value 1`] = ` -Object { - "optimistic": 1107, - "optimisticNodeTimings": 4, - "pessimistic": 1134, - "pessimisticNodeTimings": 5, - "timing": 1120, -} -`; diff --git a/core/test/lib/lantern/metrics/first-meaningful-paint-test.js b/core/test/lib/lantern/metrics/first-meaningful-paint-test.js deleted file mode 100644 index e8b2d32e1854..000000000000 --- a/core/test/lib/lantern/metrics/first-meaningful-paint-test.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * @license - * Copyright 2024 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import assert from 'assert/strict'; - -import {readJson} from '../../../test-utils.js'; -import {FirstMeaningfulPaint} from '../../../../lib/lantern/metrics/first-meaningful-paint.js'; -import {getComputationDataFromFixture} from './metric-test-utils.js'; - -const trace = readJson('../../../fixtures/artifacts/progressive-app/trace.json', import.meta); -const devtoolsLog = readJson('../../../fixtures/artifacts/progressive-app/devtoolslog.json', import.meta); - -describe('Metrics: Lantern FMP', () => { - it('should compute predicted value', async () => { - const data = await getComputationDataFromFixture({trace, devtoolsLog}); - const result = await FirstMeaningfulPaint.compute(data); - - expect({ - timing: Math.round(result.timing), - optimistic: Math.round(result.optimisticEstimate.timeInMs), - pessimistic: Math.round(result.pessimisticEstimate.timeInMs), - optimisticNodeTimings: result.optimisticEstimate.nodeTimings.size, - pessimisticNodeTimings: result.pessimisticEstimate.nodeTimings.size, - }).toMatchSnapshot(); - assert.ok(result.optimisticGraph, 'should have created optimistic graph'); - assert.ok(result.pessimisticGraph, 'should have created pessimistic graph'); - }); -}); diff --git a/core/test/lib/tracehouse/trace-processor-test.js b/core/test/lib/tracehouse/trace-processor-test.js index 144f695ca0ea..b17837c8586d 100644 --- a/core/test/lib/tracehouse/trace-processor-test.js +++ b/core/test/lib/tracehouse/trace-processor-test.js @@ -11,10 +11,7 @@ import {createTestTrace} from '../../create-test-trace.js'; import {readJson} from '../../test-utils.js'; const pwaTrace = readJson('../../fixtures/traces/progressive-app.json', import.meta); -const badNavStartTrace = readJson('../../fixtures/traces/bad-nav-start-ts.json', import.meta); const noTracingStartedTrace = readJson('../../fixtures/traces/no-tracingstarted-m74.json', import.meta); -const preactTrace = readJson('../../fixtures/traces/preactjs.com_ts_of_undefined.json', import.meta); -const noFMPtrace = readJson('../../fixtures/traces/no_fmp_event.json', import.meta); const noFCPtrace = readJson('../../fixtures/traces/airhorner_no_fcp.json', import.meta); const timespanTrace = readJson('../../fixtures/traces/timespan-trace-m91.json', import.meta); const noNavStartTrace = readJson('../../fixtures/traces/no_navstart_event.json', import.meta); @@ -227,7 +224,6 @@ describe('TraceProcessor', () => { "FrameCommittedInBrowser - ROOT_FRAME", "domContentLoadedEventEnd - ROOT_FRAME", "firstContentfulPaint - ROOT_FRAME", - "firstMeaningfulPaint - ROOT_FRAME", "FrameCommittedInBrowser - CHILD_FRAME", "Event1 - ROOT_FRAME", "Event2 - CHILD_FRAME", @@ -255,7 +251,6 @@ describe('TraceProcessor', () => { 'navigationStart', 'domContentLoadedEventEnd', 'firstContentfulPaint', - 'firstMeaningfulPaint', 'Event1', ]); }); @@ -285,7 +280,6 @@ describe('TraceProcessor', () => { 'navigationStart', 'domContentLoadedEventEnd', 'firstContentfulPaint', - 'firstMeaningfulPaint', 'Event1', 'Event2', ]); @@ -520,7 +514,6 @@ describe('TraceProcessor', () => { const navigation = TraceProcessor.processNavigation(trace); assert.equal(trace.mainFrameInfo.startingPid, navigation.firstContentfulPaintEvt.pid); - assert.equal(trace.mainFrameInfo.startingPid, navigation.firstMeaningfulPaintEvt.pid); }); it('computes timings of each event', () => { @@ -529,7 +522,6 @@ describe('TraceProcessor', () => { assert.equal(Math.round(navigation.timings.timeOrigin), 0); assert.equal(Math.round(navigation.timings.firstPaint), 80); assert.equal(Math.round(navigation.timings.firstContentfulPaint), 80); - assert.equal(Math.round(navigation.timings.firstMeaningfulPaint), 530); assert.equal(Math.round(navigation.timings.traceEnd), 649); }); @@ -539,53 +531,10 @@ describe('TraceProcessor', () => { assert.equal(Math.round(navigation.timestamps.timeOrigin), 29343540951); assert.equal(Math.round(navigation.timestamps.firstPaint), 29343620997); assert.equal(Math.round(navigation.timestamps.firstContentfulPaint), 29343621005); - assert.equal(Math.round(navigation.timestamps.firstMeaningfulPaint), 29344070867); assert.equal(Math.round(navigation.timestamps.traceEnd), 29344190232); }); }); - describe('.processNavigation() - FMP', () => { - it('if there was a tracingStartedInPage after the frame\'s navStart', () => { - const trace = TraceProcessor.processTrace(startedAfterNavstartTrace); - const navigation = TraceProcessor.processNavigation(trace); - assert.equal(trace.mainFrameInfo.frameId, '0x163736997740'); - assert.equal(trace.timeOriginEvt.ts, 29343540951); - assert.equal(navigation.firstContentfulPaintEvt.ts, 29343621005); - assert.equal(navigation.firstMeaningfulPaintEvt.ts, 29344070867); - assert.ok(!navigation.fmpFellBack); - }); - - it('if there was a tracingStartedInPage after the frame\'s navStart #2', () => { - const trace = TraceProcessor.processTrace(badNavStartTrace); - const navigation = TraceProcessor.processNavigation(trace); - assert.equal(trace.mainFrameInfo.frameId, '0x89915541e48'); - assert.equal(trace.timeOriginEvt.ts, 8885424467); - assert.equal(navigation.firstContentfulPaintEvt.ts, 8886056886); - assert.equal(navigation.firstMeaningfulPaintEvt.ts, 8886056891); - assert.ok(!navigation.fmpFellBack); - }); - - it('if it appears slightly before the fCP', () => { - const trace = TraceProcessor.processTrace(preactTrace); - const navigation = TraceProcessor.processNavigation(trace); - assert.equal(trace.mainFrameInfo.frameId, '0x25edaa521e58'); - assert.equal(trace.timeOriginEvt.ts, 1805796384607); - assert.equal(navigation.firstContentfulPaintEvt.ts, 1805797263653); - assert.equal(navigation.firstMeaningfulPaintEvt.ts, 1805797262960); - assert.ok(!navigation.fmpFellBack); - }); - - it('from candidates if no defined FMP exists', () => { - const trace = TraceProcessor.processTrace(noFMPtrace); - const navigation = TraceProcessor.processNavigation(trace); - assert.equal(trace.mainFrameInfo.frameId, '0x150343381dd0'); - assert.equal(trace.timeOriginEvt.ts, 2146735807738); - assert.equal(navigation.firstContentfulPaintEvt.ts, 2146737302468); - assert.equal(navigation.firstMeaningfulPaintEvt.ts, 2146740268666); - assert.ok(navigation.fmpFellBack); - }); - }); - describe('.processNavigation() - LCP', () => { it('in a trace', () => { const trace = TraceProcessor.processTrace(lcpTrace); @@ -769,9 +718,8 @@ Object { }); }); - it('handles traces missing a paints (captured in background tab)', () => { + it('handles traces with no paints (captured in background tab)', () => { const trace = TraceProcessor.processTrace(backgroundTabTrace); - const navigation = TraceProcessor.processNavigation(trace); assert.equal(trace.mainFrameInfo.frameId, '0x53965941e30'); assert.notEqual(trace.timeOriginEvt.ts, 1966813346529, 'picked wrong frame'); assert.notEqual(trace.timeOriginEvt.ts, 1966813520313, 'picked wrong frame'); @@ -780,7 +728,6 @@ Object { 1966813258737, 'didnt select navStart event with same timestamp as usertiming measure' ); - assert.equal(navigation.firstMeaningfulPaintEvt, undefined, 'bad fmp'); }); it('handles traces with TracingStartedInBrowser events', () => { diff --git a/core/test/results/sample_v2.json b/core/test/results/sample_v2.json index 26b23ae47d6d..ff89d0baf1d8 100644 --- a/core/test/results/sample_v2.json +++ b/core/test/results/sample_v2.json @@ -101,11 +101,8 @@ "id": "first-meaningful-paint", "title": "First Meaningful Paint", "description": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/).", - "score": 0.1, - "scoreDisplayMode": "numeric", - "numericValue": 6815.229, - "numericUnit": "millisecond", - "displayValue": "6.8 s" + "score": null, + "scoreDisplayMode": "notApplicable" }, "speed-index": { "id": "speed-index", @@ -2007,8 +2004,6 @@ "firstContentfulPaintTs": 278871201377, "firstContentfulPaintAllFrames": 6815, "firstContentfulPaintAllFramesTs": 278871201377, - "firstMeaningfulPaint": 6815, - "firstMeaningfulPaintTs": 278871201377, "largestContentfulPaint": 10954, "largestContentfulPaintTs": 278875339816, "largestContentfulPaintAllFrames": 10954, @@ -2035,8 +2030,6 @@ "observedFirstContentfulPaintTs": 278871201377, "observedFirstContentfulPaintAllFrames": 6815, "observedFirstContentfulPaintAllFramesTs": 278871201377, - "observedFirstMeaningfulPaint": 6815, - "observedFirstMeaningfulPaintTs": 278871201377, "observedLargestContentfulPaint": 10954, "observedLargestContentfulPaintTs": 278875339816, "observedLargestContentfulPaintAllFrames": 10954, @@ -7761,12 +7754,6 @@ "duration": 100, "entryType": "measure" }, - { - "startTime": 0, - "name": "lh:computed:FirstMeaningfulPaint", - "duration": 100, - "entryType": "measure" - }, { "startTime": 0, "name": "lh:audit:speed-index", @@ -9104,12 +9091,6 @@ }, "path": "audits[largest-contentful-paint].displayValue" }, - { - "values": { - "timeInMs": 6815.229 - }, - "path": "audits[first-meaningful-paint].displayValue" - }, { "values": { "timeInMs": 8471 diff --git a/report/renderer/performance-category-renderer.js b/report/renderer/performance-category-renderer.js index 4dbd2b7edfb6..a43c10e4fbf1 100644 --- a/report/renderer/performance-category-renderer.js +++ b/report/renderer/performance-category-renderer.js @@ -58,7 +58,7 @@ export class PerformanceCategoryRenderer extends CategoryRenderer { const fmp = auditRefs.find(audit => audit.id === 'first-meaningful-paint'); if (tti) metrics.push(tti); if (fci) metrics.push(fci); - if (fmp) metrics.push(fmp); + if (fmp && typeof fmp.result.score === 'number') metrics.push(fmp); /** * Clamp figure to 2 decimal places diff --git a/report/test/renderer/performance-category-renderer-test.js b/report/test/renderer/performance-category-renderer-test.js index 86326a94ca50..5a8c13630feb 100644 --- a/report/test/renderer/performance-category-renderer-test.js +++ b/report/test/renderer/performance-category-renderer-test.js @@ -202,7 +202,6 @@ Array [ "CLS=0", "SI=8471", "TTI=8126", - "FMP=6815", ] `); }); @@ -223,7 +222,6 @@ Array [ "CLS=0.1", "SI=8471", "TTI=8126", - "FMP=6815", "device=mobile", "version=6.0.0", ] diff --git a/types/artifacts.d.ts b/types/artifacts.d.ts index 4bc39e187bab..798f74ba6b72 100644 --- a/types/artifacts.d.ts +++ b/types/artifacts.d.ts @@ -613,7 +613,6 @@ declare module Artifacts { firstPaint?: number; firstContentfulPaint: number; firstContentfulPaintAllFrames: number; - firstMeaningfulPaint?: number; largestContentfulPaint?: number; largestContentfulPaintAllFrames?: number; traceEnd: number; @@ -657,8 +656,6 @@ declare module Artifacts { firstContentfulPaintEvt: TraceEvent; /** The trace event marking firstContentfulPaint from all frames, if it was found. */ firstContentfulPaintAllFramesEvt: TraceEvent; - /** The trace event marking firstMeaningfulPaint, if it was found. */ - firstMeaningfulPaintEvt?: TraceEvent; /** The trace event marking largestContentfulPaint, if it was found. */ largestContentfulPaintEvt?: TraceEvent; /** The trace event marking largestContentfulPaint from all frames, if it was found. */ @@ -667,11 +664,6 @@ declare module Artifacts { loadEvt?: TraceEvent; /** The trace event marking domContentLoadedEventEnd, if it was found. */ domContentLoadedEvt?: TraceEvent; - /** - * Whether the firstMeaningfulPaintEvt was the definitive event or a fallback to - * firstMeaningfulPaintCandidate events had to be attempted. - */ - fmpFellBack: boolean; /** Whether LCP was invalidated without a new candidate. */ lcpInvalidated: boolean; } @@ -695,8 +687,6 @@ declare module Artifacts { firstContentfulPaintTs: number | undefined; firstContentfulPaintAllFrames: number | undefined; firstContentfulPaintAllFramesTs: number | undefined; - firstMeaningfulPaint: number | undefined; - firstMeaningfulPaintTs: number | undefined; largestContentfulPaint: number | undefined; largestContentfulPaintTs: number | undefined; largestContentfulPaintAllFrames: number | undefined; @@ -725,8 +715,6 @@ declare module Artifacts { observedFirstContentfulPaintTs: number | undefined; observedFirstContentfulPaintAllFrames: number | undefined; observedFirstContentfulPaintAllFramesTs: number | undefined; - observedFirstMeaningfulPaint: number | undefined; - observedFirstMeaningfulPaintTs: number | undefined; observedLargestContentfulPaint: number | undefined; observedLargestContentfulPaintTs: number | undefined; observedLargestContentfulPaintAllFrames: number | undefined;