diff --git a/core/computed/metrics/lantern-speed-index.js b/core/computed/metrics/lantern-speed-index.js index f2538e9b4298..afd2f1555413 100644 --- a/core/computed/metrics/lantern-speed-index.js +++ b/core/computed/metrics/lantern-speed-index.js @@ -34,7 +34,7 @@ class LanternSpeedIndex extends SpeedIndex { const speedline = await Speedline.request(data.trace, context); const fcpResult = await LanternFirstContentfulPaint.request(data, context); return this.computeMetricWithGraphs(data, context, { - speedline, + observedSpeedIndex: speedline.speedIndex, fcpResult, }); } diff --git a/core/lib/lantern/metric.js b/core/lib/lantern/metric.js index f799c98e2d4b..9be8cd506f56 100644 --- a/core/lib/lantern/metric.js +++ b/core/lib/lantern/metric.js @@ -18,7 +18,7 @@ import {RESOURCE_TYPES} from '../../lib/network-request.js'; * @property {LH.Artifacts.LanternMetric=} fcpResult * @property {LH.Artifacts.LanternMetric=} lcpResult * @property {LH.Artifacts.LanternMetric=} interactiveResult - * @property {{speedIndex: number}=} speedline + * @property {number=} observedSpeedIndex */ class Metric { diff --git a/core/lib/lantern/metrics/speed-index.js b/core/lib/lantern/metrics/speed-index.js index 6bf666a4e7d3..1154f32f9653 100644 --- a/core/lib/lantern/metrics/speed-index.js +++ b/core/lib/lantern/metrics/speed-index.js @@ -76,11 +76,11 @@ class SpeedIndex extends Metric { */ static getEstimateFromSimulation(simulationResult, extras) { if (!extras.fcpResult) throw new Error('missing fcpResult'); - if (!extras.speedline) throw new Error('missing speedline'); + if (extras.observedSpeedIndex === undefined) throw new Error('missing observedSpeedIndex'); const fcpTimeInMs = extras.fcpResult.pessimisticEstimate.timeInMs; const estimate = extras.optimistic - ? extras.speedline.speedIndex + ? extras.observedSpeedIndex : SpeedIndex.computeLayoutBasedSpeedIndex(simulationResult.nodeTimings, fcpTimeInMs); return { timeInMs: estimate, diff --git a/core/test/lib/lantern/metrics/speed-index-test.js b/core/test/lib/lantern/metrics/speed-index-test.js index ea2c98425e79..e48ac6b16f12 100644 --- a/core/test/lib/lantern/metrics/speed-index-test.js +++ b/core/test/lib/lantern/metrics/speed-index-test.js @@ -10,7 +10,6 @@ import {readJson} from '../../../test-utils.js'; import {SpeedIndex} from '../../../../lib/lantern/metrics/speed-index.js'; import {FirstContentfulPaint} from '../../../../lib/lantern/metrics/first-contentful-paint.js'; import {getComputationDataFromFixture} from './metric-test-utils.js'; -import {Speedline} from '../../../../computed/speedline.js'; const trace = readJson('../../../fixtures/artifacts/progressive-app/trace.json', import.meta); @@ -18,11 +17,13 @@ const defaultThrottling = constants.throttling.mobileSlow4G; describe('Metrics: Lantern Speed Index', () => { it('should compute predicted value', async () => { - const context = {computedCache: new Map()}; const data = await getComputationDataFromFixture({trace}); + // TODO: observedSpeedIndex is from the Speedline library, and is used for optimistic + // mode. At the moment callers must pass the result into Lantern. + const observedSpeedIndex = 379.04474997520487; const result = await SpeedIndex.compute(data, { fcpResult: await FirstContentfulPaint.compute(data), - speedline: await Speedline.request(trace, context), + observedSpeedIndex, }); expect({ @@ -40,11 +41,11 @@ Object { it('should compute predicted value for different settings', async () => { const settings = {throttlingMethod: 'simulate', throttling: {...defaultThrottling, rttMs: 300}}; - const context = {computedCache: new Map()}; const data = await getComputationDataFromFixture({trace, settings}); + const observedSpeedIndex = 379.04474997520487; const result = await SpeedIndex.compute(data, { fcpResult: await FirstContentfulPaint.compute(data), - speedline: await Speedline.request(trace, context), + observedSpeedIndex, }); expect({