lighthouse 13.0.0 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/audits/audit.js +2 -2
- package/core/audits/bootup-time.js +1 -1
- package/core/audits/byte-efficiency/unminified-css.js +1 -1
- package/core/audits/byte-efficiency/unminified-javascript.js +1 -1
- package/core/audits/byte-efficiency/unused-css-rules.js +2 -2
- package/core/audits/byte-efficiency/unused-javascript.js +1 -1
- package/core/audits/insights/cache-insight.js +1 -1
- package/core/audits/insights/cls-culprits-insight.js +1 -1
- package/core/audits/insights/document-latency-insight.js +1 -1
- package/core/audits/insights/dom-size-insight.js +1 -1
- package/core/audits/insights/duplicated-javascript-insight.js +1 -1
- package/core/audits/insights/font-display-insight.js +1 -1
- package/core/audits/insights/forced-reflow-insight.js +1 -1
- package/core/audits/insights/image-delivery-insight.js +1 -1
- package/core/audits/insights/inp-breakdown-insight.js +1 -1
- package/core/audits/insights/insight-audit.js +3 -2
- package/core/audits/insights/lcp-breakdown-insight.js +1 -1
- package/core/audits/insights/lcp-discovery-insight.js +1 -1
- package/core/audits/insights/legacy-javascript-insight.js +1 -1
- package/core/audits/insights/modern-http-insight.js +1 -1
- package/core/audits/insights/network-dependency-tree-insight.js +1 -1
- package/core/audits/insights/render-blocking-insight.js +1 -1
- package/core/audits/insights/slow-css-selector-insight.js +1 -1
- package/core/audits/insights/third-parties-insight.js +1 -1
- package/core/audits/insights/viewport-insight.js +1 -1
- package/core/audits/layout-shifts.js +3 -3
- package/core/audits/long-tasks.js +3 -3
- package/core/audits/mainthread-work-breakdown.js +1 -1
- package/core/audits/metrics/first-contentful-paint.js +2 -1
- package/core/audits/metrics/interactive.js +2 -1
- package/core/audits/metrics/largest-contentful-paint.js +2 -1
- package/core/audits/metrics/max-potential-fid.js +2 -1
- package/core/audits/metrics/speed-index.js +4 -2
- package/core/audits/metrics/total-blocking-time.js +4 -2
- package/core/audits/metrics.js +3 -3
- package/core/audits/predictive-perf.js +3 -3
- package/core/audits/redirects.js +3 -3
- package/core/audits/server-response-time.js +4 -3
- package/core/computed/metrics/first-contentful-paint-all-frames.js +1 -1
- package/core/computed/metrics/first-contentful-paint.js +1 -1
- package/core/computed/metrics/interactive.js +1 -1
- package/core/computed/metrics/lantern-first-contentful-paint.js +1 -1
- package/core/computed/metrics/lantern-interactive.js +1 -1
- package/core/computed/metrics/lantern-largest-contentful-paint.js +1 -1
- package/core/computed/metrics/lantern-max-potential-fid.js +1 -1
- package/core/computed/metrics/lantern-speed-index.js +1 -1
- package/core/computed/metrics/lantern-total-blocking-time.js +1 -1
- package/core/computed/metrics/largest-contentful-paint-all-frames.js +1 -1
- package/core/computed/metrics/largest-contentful-paint.js +1 -1
- package/core/computed/metrics/lcp-breakdown.js +4 -3
- package/core/computed/metrics/max-potential-fid.js +1 -1
- package/core/computed/metrics/metric.js +1 -0
- package/core/computed/metrics/speed-index.js +1 -1
- package/core/computed/metrics/time-to-first-byte.js +5 -4
- package/core/computed/metrics/timing-summary.d.ts +5 -2
- package/core/computed/metrics/timing-summary.js +7 -4
- package/core/computed/metrics/total-blocking-time.js +1 -1
- package/core/computed/navigation-insights.d.ts +3 -1
- package/core/computed/navigation-insights.js +4 -4
- package/core/computed/page-dependency-graph.d.ts +3 -1
- package/core/computed/page-dependency-graph.js +4 -4
- package/core/computed/tbt-impact-tasks.js +1 -1
- package/core/computed/trace-engine-result.d.ts +5 -2
- package/core/computed/trace-engine-result.js +7 -4
- package/core/gather/gatherers/trace-elements.js +2 -1
- package/package.json +1 -1
- package/types/artifacts.d.ts +3 -2
package/core/audits/audit.js
CHANGED
|
@@ -496,9 +496,9 @@ class Audit {
|
|
|
496
496
|
const trace = artifacts.Trace;
|
|
497
497
|
const devtoolsLog = artifacts.DevtoolsLog;
|
|
498
498
|
const gatherContext = artifacts.GatherContext;
|
|
499
|
-
const {URL, SourceMaps} = artifacts;
|
|
499
|
+
const {URL, HostDPR, SourceMaps} = artifacts;
|
|
500
500
|
// eslint-disable-next-line max-len
|
|
501
|
-
return {trace, devtoolsLog, gatherContext, settings: context.settings, URL, SourceMaps, simulator: null};
|
|
501
|
+
return {trace, devtoolsLog, gatherContext, settings: context.settings, URL, SourceMaps, HostDPR, simulator: null};
|
|
502
502
|
}
|
|
503
503
|
}
|
|
504
504
|
|
|
@@ -49,7 +49,7 @@ class BootupTime extends Audit {
|
|
|
49
49
|
description: str_(UIStrings.description),
|
|
50
50
|
scoreDisplayMode: Audit.SCORING_MODES.METRIC_SAVINGS,
|
|
51
51
|
guidanceLevel: 1,
|
|
52
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'URL', 'GatherContext', 'SourceMaps'],
|
|
52
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'URL', 'GatherContext', 'SourceMaps', 'HostDPR'],
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -38,7 +38,7 @@ class UnminifiedCSS extends ByteEfficiencyAudit {
|
|
|
38
38
|
scoreDisplayMode: ByteEfficiencyAudit.SCORING_MODES.METRIC_SAVINGS,
|
|
39
39
|
guidanceLevel: 3,
|
|
40
40
|
requiredArtifacts: ['Stylesheets', 'DevtoolsLog', 'Trace', 'URL', 'GatherContext',
|
|
41
|
-
'SourceMaps'],
|
|
41
|
+
'SourceMaps', 'HostDPR'],
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -45,7 +45,7 @@ class UnminifiedJavaScript extends ByteEfficiencyAudit {
|
|
|
45
45
|
scoreDisplayMode: ByteEfficiencyAudit.SCORING_MODES.METRIC_SAVINGS,
|
|
46
46
|
guidanceLevel: 3,
|
|
47
47
|
requiredArtifacts: ['Scripts', 'DevtoolsLog', 'Trace', 'GatherContext', 'URL',
|
|
48
|
-
'SourceMaps'],
|
|
48
|
+
'SourceMaps', 'HostDPR'],
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -34,8 +34,8 @@ class UnusedCSSRules extends ByteEfficiencyAudit {
|
|
|
34
34
|
description: str_(UIStrings.description),
|
|
35
35
|
scoreDisplayMode: ByteEfficiencyAudit.SCORING_MODES.METRIC_SAVINGS,
|
|
36
36
|
guidanceLevel: 1,
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
// eslint-disable-next-line max-len
|
|
38
|
+
requiredArtifacts: ['Stylesheets', 'CSSUsage', 'URL', 'DevtoolsLog', 'Trace', 'GatherContext', 'SourceMaps', 'HostDPR'],
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -69,7 +69,7 @@ class UnusedJavaScript extends ByteEfficiencyAudit {
|
|
|
69
69
|
scoreDisplayMode: ByteEfficiencyAudit.SCORING_MODES.METRIC_SAVINGS,
|
|
70
70
|
guidanceLevel: 1,
|
|
71
71
|
requiredArtifacts: ['JsUsage', 'Scripts', 'SourceMaps', 'GatherContext',
|
|
72
|
-
'DevtoolsLog', 'Trace', 'URL', '
|
|
72
|
+
'DevtoolsLog', 'Trace', 'URL', 'HostDPR'],
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -24,7 +24,7 @@ class CacheInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['uses-long-cache-ttl'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -37,7 +37,7 @@ class CLSCulpritsInsight extends Audit {
|
|
|
37
37
|
failureTitle: insightStr_(InsightUIStrings.title),
|
|
38
38
|
description: insightStr_(InsightUIStrings.description),
|
|
39
39
|
guidanceLevel: 3,
|
|
40
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
40
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
41
41
|
replacesAudits: ['layout-shifts'],
|
|
42
42
|
};
|
|
43
43
|
}
|
|
@@ -24,7 +24,7 @@ class DocumentLatencyInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['redirects', 'server-response-time', 'uses-text-compression'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -24,7 +24,7 @@ class DOMSizeInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['dom-size'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -27,7 +27,7 @@ class DuplicatedJavaScriptInsight extends Audit {
|
|
|
27
27
|
failureTitle: str_(UIStrings.title),
|
|
28
28
|
description: str_(UIStrings.description),
|
|
29
29
|
guidanceLevel: 2,
|
|
30
|
-
requiredArtifacts: ['Trace', 'SourceMaps'],
|
|
30
|
+
requiredArtifacts: ['Trace', 'SourceMaps', 'HostDPR'],
|
|
31
31
|
replacesAudits: ['duplicated-javascript'],
|
|
32
32
|
};
|
|
33
33
|
}
|
|
@@ -24,7 +24,7 @@ class FontDisplayInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['font-display'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -24,7 +24,7 @@ class ForcedReflowInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -29,7 +29,7 @@ class ImageDeliveryInsight extends Audit {
|
|
|
29
29
|
failureTitle: str_(UIStrings.title),
|
|
30
30
|
description: str_(UIStrings.description),
|
|
31
31
|
guidanceLevel: 3,
|
|
32
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
32
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
33
33
|
replacesAudits: [
|
|
34
34
|
'modern-image-formats',
|
|
35
35
|
'uses-optimized-images',
|
|
@@ -24,7 +24,7 @@ class INPBreakdownInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['work-during-interaction'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -22,8 +22,9 @@ async function getInsightSet(artifacts, context) {
|
|
|
22
22
|
const settings = context.settings;
|
|
23
23
|
const trace = artifacts.Trace;
|
|
24
24
|
const processedTrace = await ProcessedTrace.request(trace, context);
|
|
25
|
-
const SourceMaps = artifacts
|
|
26
|
-
const traceEngineResult =
|
|
25
|
+
const {SourceMaps, HostDPR} = artifacts;
|
|
26
|
+
const traceEngineResult =
|
|
27
|
+
await TraceEngineResult.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
27
28
|
|
|
28
29
|
const navigationId = processedTrace.timeOriginEvt.args.data?.navigationId;
|
|
29
30
|
const key = navigationId ?? NO_NAVIGATION;
|
|
@@ -24,7 +24,7 @@ class LCPBreakdownInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['largest-contentful-paint-element'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -24,7 +24,7 @@ class LCPDiscoveryInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['prioritize-lcp-image', 'lcp-lazy-loaded'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -28,7 +28,7 @@ class LegacyJavaScriptInsight extends Audit {
|
|
|
28
28
|
failureTitle: str_(UIStrings.title),
|
|
29
29
|
description: str_(UIStrings.description),
|
|
30
30
|
guidanceLevel: 2,
|
|
31
|
-
requiredArtifacts: ['Trace', 'Scripts', 'SourceMaps'],
|
|
31
|
+
requiredArtifacts: ['Trace', 'Scripts', 'SourceMaps', 'HostDPR'],
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -24,7 +24,7 @@ class ModernHTTPInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -24,7 +24,7 @@ class NetworkDependencyTreeInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 1,
|
|
27
|
-
requiredArtifacts: ['Trace', 'SourceMaps', 'TraceElements'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'SourceMaps', 'TraceElements', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['critical-request-chains', 'uses-rel-preconnect'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -24,7 +24,7 @@ class RenderBlockingInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['render-blocking-resources'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -28,7 +28,7 @@ class SlowCSSSelectorInsight extends Audit {
|
|
|
28
28
|
failureTitle: str_(UIStrings.title),
|
|
29
29
|
description: str_(UIStrings.description),
|
|
30
30
|
guidanceLevel: 3,
|
|
31
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
31
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -32,7 +32,7 @@ class ThirdPartiesInsight extends Audit {
|
|
|
32
32
|
failureTitle: str_(UIStrings.title),
|
|
33
33
|
description: str_(UIStrings.description),
|
|
34
34
|
guidanceLevel: 3,
|
|
35
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
35
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
36
36
|
replacesAudits: ['third-party-summary'],
|
|
37
37
|
};
|
|
38
38
|
}
|
|
@@ -24,7 +24,7 @@ class ViewportInsight extends Audit {
|
|
|
24
24
|
failureTitle: str_(UIStrings.title),
|
|
25
25
|
description: str_(UIStrings.description),
|
|
26
26
|
guidanceLevel: 3,
|
|
27
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
27
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
28
28
|
replacesAudits: ['viewport'],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -47,7 +47,7 @@ class LayoutShifts extends Audit {
|
|
|
47
47
|
description: str_(UIStrings.description),
|
|
48
48
|
scoreDisplayMode: Audit.SCORING_MODES.METRIC_SAVINGS,
|
|
49
49
|
guidanceLevel: 2,
|
|
50
|
-
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps'],
|
|
50
|
+
requiredArtifacts: ['Trace', 'TraceElements', 'SourceMaps', 'HostDPR'],
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -59,9 +59,9 @@ class LayoutShifts extends Audit {
|
|
|
59
59
|
static async audit(artifacts, context) {
|
|
60
60
|
const settings = context.settings;
|
|
61
61
|
const trace = artifacts.Trace;
|
|
62
|
-
const SourceMaps = artifacts
|
|
62
|
+
const {SourceMaps, HostDPR} = artifacts;
|
|
63
63
|
const traceEngineResult =
|
|
64
|
-
await TraceEngineResult.request({trace, settings, SourceMaps}, context);
|
|
64
|
+
await TraceEngineResult.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
65
65
|
const clusters = traceEngineResult.data.LayoutShifts.clusters ?? [];
|
|
66
66
|
const {cumulativeLayoutShift: clsSavings, impactByNodeId} =
|
|
67
67
|
await CumulativeLayoutShiftComputed.request(trace, context);
|
|
@@ -68,7 +68,7 @@ class LongTasks extends Audit {
|
|
|
68
68
|
scoreDisplayMode: Audit.SCORING_MODES.INFORMATIVE,
|
|
69
69
|
title: str_(UIStrings.title),
|
|
70
70
|
description: str_(UIStrings.description),
|
|
71
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'URL', 'GatherContext', 'SourceMaps'],
|
|
71
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'URL', 'GatherContext', 'SourceMaps', 'HostDPR'],
|
|
72
72
|
guidanceLevel: 1,
|
|
73
73
|
};
|
|
74
74
|
}
|
|
@@ -176,7 +176,7 @@ class LongTasks extends Audit {
|
|
|
176
176
|
*/
|
|
177
177
|
static async audit(artifacts, context) {
|
|
178
178
|
const settings = context.settings || {};
|
|
179
|
-
const {URL, SourceMaps} = artifacts;
|
|
179
|
+
const {URL, HostDPR, SourceMaps} = artifacts;
|
|
180
180
|
const trace = artifacts.Trace;
|
|
181
181
|
const tasks = await MainThreadTasks.request(trace, context);
|
|
182
182
|
const devtoolsLog = artifacts.DevtoolsLog;
|
|
@@ -194,7 +194,7 @@ class LongTasks extends Audit {
|
|
|
194
194
|
const simulatorOptions = {devtoolsLog, settings: context.settings};
|
|
195
195
|
const pageGraph =
|
|
196
196
|
// eslint-disable-next-line max-len
|
|
197
|
-
await PageDependencyGraph.request({settings, trace, devtoolsLog, URL, SourceMaps, fromTrace: false}, context);
|
|
197
|
+
await PageDependencyGraph.request({settings, trace, devtoolsLog, URL, SourceMaps, HostDPR, fromTrace: false}, context);
|
|
198
198
|
const simulator = await LoadSimulator.request(simulatorOptions, context);
|
|
199
199
|
const simulation = simulator.simulate(pageGraph, {label: 'long-tasks-diagnostic'});
|
|
200
200
|
for (const [node, timing] of simulation.nodeTimings.entries()) {
|
|
@@ -46,7 +46,7 @@ class MainThreadWorkBreakdown extends Audit {
|
|
|
46
46
|
description: str_(UIStrings.description),
|
|
47
47
|
scoreDisplayMode: Audit.SCORING_MODES.METRIC_SAVINGS,
|
|
48
48
|
guidanceLevel: 1,
|
|
49
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'URL', 'GatherContext', 'SourceMaps'],
|
|
49
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'URL', 'GatherContext', 'SourceMaps', 'HostDPR'],
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -27,7 +27,7 @@ class FirstContentfulPaint extends Audit {
|
|
|
27
27
|
description: str_(UIStrings.description),
|
|
28
28
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
29
29
|
supportedModes: ['navigation'],
|
|
30
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
30
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -67,6 +67,7 @@ class FirstContentfulPaint extends Audit {
|
|
|
67
67
|
const metricComputationData = {trace, devtoolsLog, gatherContext,
|
|
68
68
|
settings: context.settings, URL: artifacts.URL,
|
|
69
69
|
SourceMaps: artifacts.SourceMaps, simulator: null,
|
|
70
|
+
HostDPR: artifacts.HostDPR,
|
|
70
71
|
};
|
|
71
72
|
const metricResult = await ComputedFcp.request(metricComputationData, context);
|
|
72
73
|
const options = context.options[context.settings.formFactor];
|
|
@@ -33,7 +33,7 @@ class InteractiveMetric extends Audit {
|
|
|
33
33
|
description: str_(UIStrings.description),
|
|
34
34
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
35
35
|
supportedModes: ['navigation'],
|
|
36
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
36
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -74,6 +74,7 @@ class InteractiveMetric extends Audit {
|
|
|
74
74
|
trace, devtoolsLog, gatherContext,
|
|
75
75
|
settings: context.settings, URL: artifacts.URL,
|
|
76
76
|
SourceMaps: artifacts.SourceMaps, simulator: null,
|
|
77
|
+
HostDPR: artifacts.HostDPR,
|
|
77
78
|
};
|
|
78
79
|
const metricResult = await Interactive.request(metricComputationData, context);
|
|
79
80
|
const timeInMs = metricResult.timing;
|
|
@@ -28,7 +28,7 @@ class LargestContentfulPaint extends Audit {
|
|
|
28
28
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
29
29
|
supportedModes: ['navigation'],
|
|
30
30
|
requiredArtifacts: ['HostUserAgent', 'Trace', 'DevtoolsLog', 'GatherContext', 'URL',
|
|
31
|
-
'SourceMaps'],
|
|
31
|
+
'SourceMaps', 'HostDPR'],
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -77,6 +77,7 @@ class LargestContentfulPaint extends Audit {
|
|
|
77
77
|
trace, devtoolsLog, gatherContext,
|
|
78
78
|
settings: context.settings, URL: artifacts.URL,
|
|
79
79
|
SourceMaps: artifacts.SourceMaps, simulator: null,
|
|
80
|
+
HostDPR: artifacts.HostDPR,
|
|
80
81
|
};
|
|
81
82
|
|
|
82
83
|
const metricResult = await ComputedLcp.request(metricComputationData, context);
|
|
@@ -43,7 +43,7 @@ class MaxPotentialFID extends Audit {
|
|
|
43
43
|
description: str_(UIStrings.description),
|
|
44
44
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
45
45
|
supportedModes: ['navigation'],
|
|
46
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
46
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -124,6 +124,7 @@ class MaxPotentialFID extends Audit {
|
|
|
124
124
|
trace, devtoolsLog, gatherContext,
|
|
125
125
|
settings: context.settings, URL: artifacts.URL,
|
|
126
126
|
SourceMaps: artifacts.SourceMaps, simulator: null,
|
|
127
|
+
HostDPR: artifacts.HostDPR,
|
|
127
128
|
};
|
|
128
129
|
const metricResult = await ComputedFid.request(metricComputationData, context);
|
|
129
130
|
|
|
@@ -27,7 +27,7 @@ class SpeedIndex extends Audit {
|
|
|
27
27
|
description: str_(UIStrings.description),
|
|
28
28
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
29
29
|
supportedModes: ['navigation'],
|
|
30
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
30
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -69,7 +69,9 @@ class SpeedIndex extends Audit {
|
|
|
69
69
|
const metricComputationData = {
|
|
70
70
|
trace, devtoolsLog, gatherContext,
|
|
71
71
|
settings: context.settings, URL: artifacts.URL,
|
|
72
|
-
SourceMaps: artifacts.SourceMaps,
|
|
72
|
+
SourceMaps: artifacts.SourceMaps,
|
|
73
|
+
HostDPR: artifacts.HostDPR,
|
|
74
|
+
simulator: null,
|
|
73
75
|
};
|
|
74
76
|
const metricResult = await ComputedSi.request(metricComputationData, context);
|
|
75
77
|
const options = context.options[context.settings.formFactor];
|
|
@@ -27,7 +27,7 @@ class TotalBlockingTime extends Audit {
|
|
|
27
27
|
title: str_(i18n.UIStrings.totalBlockingTimeMetric),
|
|
28
28
|
description: str_(UIStrings.description),
|
|
29
29
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
30
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
30
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -91,7 +91,9 @@ class TotalBlockingTime extends Audit {
|
|
|
91
91
|
const metricComputationData = {
|
|
92
92
|
trace, devtoolsLog, gatherContext,
|
|
93
93
|
settings: context.settings, URL: artifacts.URL,
|
|
94
|
-
SourceMaps: artifacts.SourceMaps,
|
|
94
|
+
SourceMaps: artifacts.SourceMaps,
|
|
95
|
+
HostDPR: artifacts.HostDPR,
|
|
96
|
+
simulator: null,
|
|
95
97
|
};
|
|
96
98
|
if (
|
|
97
99
|
gatherContext.gatherMode === 'timespan' &&
|
package/core/audits/metrics.js
CHANGED
|
@@ -26,7 +26,7 @@ class Metrics extends Audit {
|
|
|
26
26
|
title: 'Metrics',
|
|
27
27
|
description: 'Collects all available metrics.',
|
|
28
28
|
supportedModes: ['navigation'],
|
|
29
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
29
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -40,9 +40,9 @@ class Metrics extends Audit {
|
|
|
40
40
|
const gatherContext = artifacts.GatherContext;
|
|
41
41
|
const trace = artifacts.Trace;
|
|
42
42
|
const devtoolsLog = artifacts.DevtoolsLog;
|
|
43
|
-
const {URL, SourceMaps} = artifacts;
|
|
43
|
+
const {URL, HostDPR, SourceMaps} = artifacts;
|
|
44
44
|
const summary = await TimingSummary
|
|
45
|
-
.request({trace, devtoolsLog, gatherContext, settings, URL, SourceMaps}, context);
|
|
45
|
+
.request({trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, HostDPR}, context);
|
|
46
46
|
const metrics = summary.metrics;
|
|
47
47
|
const debugInfo = summary.debugInfo;
|
|
48
48
|
|
|
@@ -33,7 +33,7 @@ class PredictivePerf extends Audit {
|
|
|
33
33
|
'a cellular connection on a mobile device.',
|
|
34
34
|
scoreDisplayMode: Audit.SCORING_MODES.NUMERIC,
|
|
35
35
|
supportedModes: ['navigation'],
|
|
36
|
-
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps'],
|
|
36
|
+
requiredArtifacts: ['Trace', 'DevtoolsLog', 'GatherContext', 'URL', 'SourceMaps', 'HostDPR'],
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -46,11 +46,11 @@ class PredictivePerf extends Audit {
|
|
|
46
46
|
const gatherContext = artifacts.GatherContext;
|
|
47
47
|
const trace = artifacts.Trace;
|
|
48
48
|
const devtoolsLog = artifacts.DevtoolsLog;
|
|
49
|
-
const {URL, SourceMaps} = artifacts;
|
|
49
|
+
const {URL, HostDPR, SourceMaps} = artifacts;
|
|
50
50
|
/** @type {LH.Config.Settings} */
|
|
51
51
|
const settings = JSON.parse(JSON.stringify(defaultSettings)); // Use default settings.
|
|
52
52
|
const computationData =
|
|
53
|
-
{trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, simulator: null};
|
|
53
|
+
{trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, HostDPR, simulator: null};
|
|
54
54
|
const fcp = await LanternFirstContentfulPaint.request(computationData, context);
|
|
55
55
|
const tti = await LanternInteractive.request(computationData, context);
|
|
56
56
|
const si = await LanternSpeedIndex.request(computationData, context);
|
package/core/audits/redirects.js
CHANGED
|
@@ -31,7 +31,7 @@ class Redirects extends Audit {
|
|
|
31
31
|
scoreDisplayMode: Audit.SCORING_MODES.METRIC_SAVINGS,
|
|
32
32
|
supportedModes: ['navigation'],
|
|
33
33
|
guidanceLevel: 2,
|
|
34
|
-
requiredArtifacts: ['URL', 'GatherContext', 'DevtoolsLog', 'Trace', 'SourceMaps'],
|
|
34
|
+
requiredArtifacts: ['URL', 'GatherContext', 'DevtoolsLog', 'Trace', 'SourceMaps', 'HostDPR'],
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -87,14 +87,14 @@ class Redirects extends Audit {
|
|
|
87
87
|
const trace = artifacts.Trace;
|
|
88
88
|
const devtoolsLog = artifacts.DevtoolsLog;
|
|
89
89
|
const gatherContext = artifacts.GatherContext;
|
|
90
|
-
const {URL, SourceMaps} = artifacts;
|
|
90
|
+
const {URL, HostDPR, SourceMaps} = artifacts;
|
|
91
91
|
|
|
92
92
|
const processedTrace = await ProcessedTrace.request(trace, context);
|
|
93
93
|
const networkRecords = await NetworkRecords.request(devtoolsLog, context);
|
|
94
94
|
const documentRequests = Redirects.getDocumentRequestChain(networkRecords, processedTrace);
|
|
95
95
|
|
|
96
96
|
const metricComputationData =
|
|
97
|
-
{trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, simulator: null};
|
|
97
|
+
{trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, HostDPR, simulator: null};
|
|
98
98
|
const metricResult = await LanternInteractive.request(metricComputationData, context);
|
|
99
99
|
|
|
100
100
|
/** @type {Map<string, LH.Gatherer.Simulation.NodeTiming>} */
|
|
@@ -35,7 +35,7 @@ class ServerResponseTime extends Audit {
|
|
|
35
35
|
description: str_(UIStrings.description),
|
|
36
36
|
supportedModes: ['navigation'],
|
|
37
37
|
guidanceLevel: 1,
|
|
38
|
-
requiredArtifacts: ['Trace', 'SourceMaps'],
|
|
38
|
+
requiredArtifacts: ['Trace', 'SourceMaps', 'HostDPR'],
|
|
39
39
|
scoreDisplayMode: Audit.SCORING_MODES.METRIC_SAVINGS,
|
|
40
40
|
};
|
|
41
41
|
}
|
|
@@ -48,8 +48,9 @@ class ServerResponseTime extends Audit {
|
|
|
48
48
|
static async audit(artifacts, context) {
|
|
49
49
|
const settings = context.settings;
|
|
50
50
|
const trace = artifacts.Trace;
|
|
51
|
-
const SourceMaps = artifacts
|
|
52
|
-
const navInsights =
|
|
51
|
+
const {SourceMaps, HostDPR} = artifacts;
|
|
52
|
+
const navInsights =
|
|
53
|
+
await NavigationInsights.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
53
54
|
const responseTime = navInsights.model.DocumentLatency.data?.serverResponseTime;
|
|
54
55
|
const url = navInsights.model.DocumentLatency.data?.documentRequest?.args.data.url;
|
|
55
56
|
|
|
@@ -32,6 +32,6 @@ class FirstContentfulPaintAllFrames extends NavigationMetric {
|
|
|
32
32
|
|
|
33
33
|
const FirstContentfulPaintAllFramesComputed = makeComputedArtifact(
|
|
34
34
|
FirstContentfulPaintAllFrames,
|
|
35
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
35
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
36
36
|
);
|
|
37
37
|
export {FirstContentfulPaintAllFramesComputed as FirstContentfulPaintAllFrames};
|
|
@@ -35,6 +35,6 @@ class FirstContentfulPaint extends NavigationMetric {
|
|
|
35
35
|
|
|
36
36
|
const FirstContentfulPaintComputed = makeComputedArtifact(
|
|
37
37
|
FirstContentfulPaint,
|
|
38
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
38
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
39
39
|
);
|
|
40
40
|
export {FirstContentfulPaintComputed as FirstContentfulPaint};
|
|
@@ -181,7 +181,7 @@ class Interactive extends NavigationMetric {
|
|
|
181
181
|
|
|
182
182
|
const InteractiveComputed = makeComputedArtifact(
|
|
183
183
|
Interactive,
|
|
184
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
184
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
185
185
|
);
|
|
186
186
|
export {InteractiveComputed as Interactive};
|
|
187
187
|
|
|
@@ -32,6 +32,6 @@ class LanternFirstContentfulPaint extends Lantern.Metrics.FirstContentfulPaint {
|
|
|
32
32
|
|
|
33
33
|
const LanternFirstContentfulPaintComputed = makeComputedArtifact(
|
|
34
34
|
LanternFirstContentfulPaint,
|
|
35
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
35
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
36
36
|
);
|
|
37
37
|
export {LanternFirstContentfulPaintComputed as LanternFirstContentfulPaint};
|
|
@@ -34,6 +34,6 @@ class LanternInteractive extends Lantern.Metrics.Interactive {
|
|
|
34
34
|
|
|
35
35
|
const LanternInteractiveComputed = makeComputedArtifact(
|
|
36
36
|
LanternInteractive,
|
|
37
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
37
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
38
38
|
);
|
|
39
39
|
export {LanternInteractiveComputed as LanternInteractive};
|
|
@@ -34,6 +34,6 @@ class LanternLargestContentfulPaint extends Lantern.Metrics.LargestContentfulPai
|
|
|
34
34
|
|
|
35
35
|
const LanternLargestContentfulPaintComputed = makeComputedArtifact(
|
|
36
36
|
LanternLargestContentfulPaint,
|
|
37
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
37
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
38
38
|
);
|
|
39
39
|
export {LanternLargestContentfulPaintComputed as LanternLargestContentfulPaint};
|
|
@@ -34,6 +34,6 @@ class LanternMaxPotentialFID extends Lantern.Metrics.MaxPotentialFID {
|
|
|
34
34
|
|
|
35
35
|
const LanternMaxPotentialFIDComputed = makeComputedArtifact(
|
|
36
36
|
LanternMaxPotentialFID,
|
|
37
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
37
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
38
38
|
);
|
|
39
39
|
export {LanternMaxPotentialFIDComputed as LanternMaxPotentialFID};
|
|
@@ -40,6 +40,6 @@ class LanternSpeedIndex extends Lantern.Metrics.SpeedIndex {
|
|
|
40
40
|
|
|
41
41
|
const LanternSpeedIndexComputed = makeComputedArtifact(
|
|
42
42
|
LanternSpeedIndex,
|
|
43
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
43
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
44
44
|
);
|
|
45
45
|
export {LanternSpeedIndexComputed as LanternSpeedIndex};
|
|
@@ -35,6 +35,6 @@ class LanternTotalBlockingTime extends Lantern.Metrics.TotalBlockingTime {
|
|
|
35
35
|
|
|
36
36
|
const LanternTotalBlockingTimeComputed = makeComputedArtifact(
|
|
37
37
|
LanternTotalBlockingTime,
|
|
38
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
38
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
39
39
|
);
|
|
40
40
|
export {LanternTotalBlockingTimeComputed as LanternTotalBlockingTime};
|
|
@@ -40,6 +40,6 @@ class LargestContentfulPaintAllFrames extends NavigationMetric {
|
|
|
40
40
|
|
|
41
41
|
const LargestContentfulPaintAllFramesComputed = makeComputedArtifact(
|
|
42
42
|
LargestContentfulPaintAllFrames,
|
|
43
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
43
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
44
44
|
);
|
|
45
45
|
export {LargestContentfulPaintAllFramesComputed as LargestContentfulPaintAllFrames};
|
|
@@ -47,6 +47,6 @@ class LargestContentfulPaint extends NavigationMetric {
|
|
|
47
47
|
|
|
48
48
|
const LargestContentfulPaintComputed = makeComputedArtifact(
|
|
49
49
|
LargestContentfulPaint,
|
|
50
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
50
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
51
51
|
);
|
|
52
52
|
export {LargestContentfulPaintComputed as LargestContentfulPaint};
|
|
@@ -54,8 +54,9 @@ class LCPBreakdown {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
const {trace, settings, SourceMaps} = data;
|
|
58
|
-
const navInsights =
|
|
57
|
+
const {trace, settings, SourceMaps, HostDPR} = data;
|
|
58
|
+
const navInsights =
|
|
59
|
+
await NavigationInsights.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
59
60
|
const lcpBreakdown = navInsights.model.LCPBreakdown;
|
|
60
61
|
if (lcpBreakdown instanceof Error) {
|
|
61
62
|
throw new LighthouseError(LighthouseError.errors.NO_LCP, {}, {cause: lcpBreakdown});
|
|
@@ -80,7 +81,7 @@ class LCPBreakdown {
|
|
|
80
81
|
|
|
81
82
|
const LCPBreakdownComputed = makeComputedArtifact(
|
|
82
83
|
LCPBreakdown,
|
|
83
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
84
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
84
85
|
);
|
|
85
86
|
export {LCPBreakdownComputed as LCPBreakdown};
|
|
86
87
|
|
|
@@ -40,6 +40,6 @@ class MaxPotentialFID extends NavigationMetric {
|
|
|
40
40
|
|
|
41
41
|
const MaxPotentialFIDComputed = makeComputedArtifact(
|
|
42
42
|
MaxPotentialFID,
|
|
43
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
43
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
44
44
|
);
|
|
45
45
|
export {MaxPotentialFIDComputed as MaxPotentialFID};
|
|
@@ -35,6 +35,6 @@ class SpeedIndex extends NavigationMetric {
|
|
|
35
35
|
|
|
36
36
|
const SpeedIndexComputed = makeComputedArtifact(
|
|
37
37
|
SpeedIndex,
|
|
38
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
38
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
39
39
|
);
|
|
40
40
|
export {SpeedIndexComputed as SpeedIndex};
|
|
@@ -45,10 +45,11 @@ class TimeToFirstByte extends NavigationMetric {
|
|
|
45
45
|
* @return {Promise<LH.Artifacts.Metric>}
|
|
46
46
|
*/
|
|
47
47
|
static async computeObservedMetric(data, context) {
|
|
48
|
-
const {trace, settings, SourceMaps} = data;
|
|
48
|
+
const {trace, settings, SourceMaps, HostDPR} = data;
|
|
49
49
|
const traceEngineResult =
|
|
50
|
-
await TraceEngineResult.request({trace, settings, SourceMaps}, context);
|
|
51
|
-
const navInsights =
|
|
50
|
+
await TraceEngineResult.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
51
|
+
const navInsights =
|
|
52
|
+
await NavigationInsights.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
52
53
|
const lcpBreakdown = navInsights.model.LCPBreakdown;
|
|
53
54
|
|
|
54
55
|
// Defer to LCP breakdown, but if there's no LCP fallback to manual calculation.
|
|
@@ -81,6 +82,6 @@ class TimeToFirstByte extends NavigationMetric {
|
|
|
81
82
|
|
|
82
83
|
const TimeToFirstByteComputed = makeComputedArtifact(
|
|
83
84
|
TimeToFirstByte,
|
|
84
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
85
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
85
86
|
);
|
|
86
87
|
export {TimeToFirstByteComputed as TimeToFirstByte};
|
|
@@ -7,6 +7,7 @@ declare const TimingSummaryComputed: typeof TimingSummary & {
|
|
|
7
7
|
settings: LH.Util.ImmutableObject<LH.Config.Settings>;
|
|
8
8
|
URL: LH.Artifacts["URL"];
|
|
9
9
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
10
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
10
11
|
}, context: LH.Artifacts.ComputedContext) => Promise<{
|
|
11
12
|
metrics: LH.Artifacts.TimingSummary;
|
|
12
13
|
debugInfo: Record<string, boolean>;
|
|
@@ -20,15 +21,16 @@ declare class TimingSummary {
|
|
|
20
21
|
* @param {LH.Util.ImmutableObject<LH.Config.Settings>} settings
|
|
21
22
|
* @param {LH.Artifacts['URL']} URL
|
|
22
23
|
* @param {LH.Artifacts['SourceMaps']} SourceMaps
|
|
24
|
+
* @param {LH.Artifacts['HostDPR']} HostDPR
|
|
23
25
|
* @param {LH.Artifacts.ComputedContext} context
|
|
24
26
|
* @return {Promise<{metrics: LH.Artifacts.TimingSummary, debugInfo: Record<string,boolean>}>}
|
|
25
27
|
*/
|
|
26
|
-
static summarize(trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, gatherContext: LH.Artifacts["GatherContext"], settings: LH.Util.ImmutableObject<LH.Config.Settings>, URL: LH.Artifacts["URL"], SourceMaps: LH.Artifacts["SourceMaps"], context: LH.Artifacts.ComputedContext): Promise<{
|
|
28
|
+
static summarize(trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, gatherContext: LH.Artifacts["GatherContext"], settings: LH.Util.ImmutableObject<LH.Config.Settings>, URL: LH.Artifacts["URL"], SourceMaps: LH.Artifacts["SourceMaps"], HostDPR: LH.Artifacts["HostDPR"], context: LH.Artifacts.ComputedContext): Promise<{
|
|
27
29
|
metrics: LH.Artifacts.TimingSummary;
|
|
28
30
|
debugInfo: Record<string, boolean>;
|
|
29
31
|
}>;
|
|
30
32
|
/**
|
|
31
|
-
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, gatherContext: LH.Artifacts['GatherContext']; settings: LH.Util.ImmutableObject<LH.Config.Settings>, URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps']}} data
|
|
33
|
+
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, gatherContext: LH.Artifacts['GatherContext']; settings: LH.Util.ImmutableObject<LH.Config.Settings>, URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR']}} data
|
|
32
34
|
* @param {LH.Artifacts.ComputedContext} context
|
|
33
35
|
* @return {Promise<{metrics: LH.Artifacts.TimingSummary, debugInfo: Record<string,boolean>}>}
|
|
34
36
|
*/
|
|
@@ -39,6 +41,7 @@ declare class TimingSummary {
|
|
|
39
41
|
settings: LH.Util.ImmutableObject<LH.Config.Settings>;
|
|
40
42
|
URL: LH.Artifacts["URL"];
|
|
41
43
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
44
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
42
45
|
}, context: LH.Artifacts.ComputedContext): Promise<{
|
|
43
46
|
metrics: LH.Artifacts.TimingSummary;
|
|
44
47
|
debugInfo: Record<string, boolean>;
|
|
@@ -31,12 +31,14 @@ class TimingSummary {
|
|
|
31
31
|
* @param {LH.Util.ImmutableObject<LH.Config.Settings>} settings
|
|
32
32
|
* @param {LH.Artifacts['URL']} URL
|
|
33
33
|
* @param {LH.Artifacts['SourceMaps']} SourceMaps
|
|
34
|
+
* @param {LH.Artifacts['HostDPR']} HostDPR
|
|
34
35
|
* @param {LH.Artifacts.ComputedContext} context
|
|
35
36
|
* @return {Promise<{metrics: LH.Artifacts.TimingSummary, debugInfo: Record<string,boolean>}>}
|
|
36
37
|
*/
|
|
37
|
-
|
|
38
|
+
// eslint-disable-next-line max-len
|
|
39
|
+
static async summarize(trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, HostDPR, context) {
|
|
38
40
|
const metricComputationData =
|
|
39
|
-
{trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, simulator: null};
|
|
41
|
+
{trace, devtoolsLog, gatherContext, settings, URL, SourceMaps, HostDPR, simulator: null};
|
|
40
42
|
|
|
41
43
|
/**
|
|
42
44
|
* @template TArtifacts
|
|
@@ -147,7 +149,7 @@ class TimingSummary {
|
|
|
147
149
|
return {metrics, debugInfo};
|
|
148
150
|
}
|
|
149
151
|
/**
|
|
150
|
-
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, gatherContext: LH.Artifacts['GatherContext']; settings: LH.Util.ImmutableObject<LH.Config.Settings>, URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps']}} data
|
|
152
|
+
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, gatherContext: LH.Artifacts['GatherContext']; settings: LH.Util.ImmutableObject<LH.Config.Settings>, URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR']}} data
|
|
151
153
|
* @param {LH.Artifacts.ComputedContext} context
|
|
152
154
|
* @return {Promise<{metrics: LH.Artifacts.TimingSummary, debugInfo: Record<string,boolean>}>}
|
|
153
155
|
*/
|
|
@@ -159,6 +161,7 @@ class TimingSummary {
|
|
|
159
161
|
data.settings,
|
|
160
162
|
data.URL,
|
|
161
163
|
data.SourceMaps,
|
|
164
|
+
data.HostDPR,
|
|
162
165
|
context
|
|
163
166
|
);
|
|
164
167
|
}
|
|
@@ -166,6 +169,6 @@ class TimingSummary {
|
|
|
166
169
|
|
|
167
170
|
const TimingSummaryComputed = makeComputedArtifact(
|
|
168
171
|
TimingSummary,
|
|
169
|
-
['devtoolsLog', 'gatherContext', 'settings', 'trace', 'URL', 'SourceMaps']
|
|
172
|
+
['devtoolsLog', 'gatherContext', 'settings', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
170
173
|
);
|
|
171
174
|
export {TimingSummaryComputed as TimingSummary};
|
|
@@ -71,6 +71,6 @@ class TotalBlockingTime extends ComputedMetric {
|
|
|
71
71
|
|
|
72
72
|
const TotalBlockingTimeComputed = makeComputedArtifact(
|
|
73
73
|
TotalBlockingTime,
|
|
74
|
-
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps']
|
|
74
|
+
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
|
|
75
75
|
);
|
|
76
76
|
export {TotalBlockingTimeComputed as TotalBlockingTime};
|
|
@@ -4,6 +4,7 @@ declare const NavigationInsightsComputed: typeof NavigationInsights & {
|
|
|
4
4
|
trace: LH.Trace;
|
|
5
5
|
settings: LH.Audit.Context["settings"];
|
|
6
6
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
7
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
7
8
|
}, context: LH.Artifacts.ComputedContext) => Promise<import("@paulirish/trace_engine/models/trace/insights/types.js").InsightSet>;
|
|
8
9
|
};
|
|
9
10
|
/**
|
|
@@ -12,13 +13,14 @@ declare const NavigationInsightsComputed: typeof NavigationInsights & {
|
|
|
12
13
|
*/
|
|
13
14
|
declare class NavigationInsights {
|
|
14
15
|
/**
|
|
15
|
-
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps']}} data
|
|
16
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR']}} data
|
|
16
17
|
* @param {LH.Artifacts.ComputedContext} context
|
|
17
18
|
*/
|
|
18
19
|
static compute_(data: {
|
|
19
20
|
trace: LH.Trace;
|
|
20
21
|
settings: LH.Audit.Context["settings"];
|
|
21
22
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
23
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
22
24
|
}, context: LH.Artifacts.ComputedContext): Promise<import("@paulirish/trace_engine/models/trace/insights/types.js").InsightSet>;
|
|
23
25
|
}
|
|
24
26
|
//# sourceMappingURL=navigation-insights.d.ts.map
|
|
@@ -14,14 +14,14 @@ import {TraceEngineResult} from './trace-engine-result.js';
|
|
|
14
14
|
*/
|
|
15
15
|
class NavigationInsights {
|
|
16
16
|
/**
|
|
17
|
-
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps']}} data
|
|
17
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR']}} data
|
|
18
18
|
* @param {LH.Artifacts.ComputedContext} context
|
|
19
19
|
*/
|
|
20
20
|
static async compute_(data, context) {
|
|
21
|
-
const {trace, settings, SourceMaps} = data;
|
|
21
|
+
const {trace, settings, SourceMaps, HostDPR} = data;
|
|
22
22
|
const processedTrace = await ProcessedTrace.request(trace, context);
|
|
23
23
|
const traceEngineResult =
|
|
24
|
-
await TraceEngineResult.request({trace, settings, SourceMaps}, context);
|
|
24
|
+
await TraceEngineResult.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
25
25
|
|
|
26
26
|
const navigationId = processedTrace.timeOriginEvt.args.data?.navigationId;
|
|
27
27
|
if (!navigationId) throw new Error('No navigationId found');
|
|
@@ -34,5 +34,5 @@ class NavigationInsights {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
const NavigationInsightsComputed =
|
|
37
|
-
makeComputedArtifact(NavigationInsights, ['trace', 'settings', 'SourceMaps']);
|
|
37
|
+
makeComputedArtifact(NavigationInsights, ['trace', 'settings', 'SourceMaps', 'HostDPR']);
|
|
38
38
|
export {NavigationInsightsComputed as NavigationInsights};
|
|
@@ -6,12 +6,13 @@ declare const PageDependencyGraphComputed: typeof PageDependencyGraph & {
|
|
|
6
6
|
settings: LH.Audit.Context["settings"];
|
|
7
7
|
URL: LH.Artifacts["URL"];
|
|
8
8
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
9
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
9
10
|
fromTrace: boolean;
|
|
10
11
|
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types/gatherer.js").default.Simulation.GraphNode>;
|
|
11
12
|
};
|
|
12
13
|
declare class PageDependencyGraph {
|
|
13
14
|
/**
|
|
14
|
-
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, settings: LH.Audit.Context['settings'], URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps'], fromTrace: boolean}} data
|
|
15
|
+
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, settings: LH.Audit.Context['settings'], URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR'], fromTrace: boolean}} data
|
|
15
16
|
* @param {LH.Artifacts.ComputedContext} context
|
|
16
17
|
* @return {Promise<LH.Gatherer.Simulation.GraphNode>}
|
|
17
18
|
*/
|
|
@@ -21,6 +22,7 @@ declare class PageDependencyGraph {
|
|
|
21
22
|
settings: LH.Audit.Context["settings"];
|
|
22
23
|
URL: LH.Artifacts["URL"];
|
|
23
24
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
25
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
24
26
|
fromTrace: boolean;
|
|
25
27
|
}, context: LH.Artifacts.ComputedContext): Promise<LH.Gatherer.Simulation.GraphNode>;
|
|
26
28
|
}
|
|
@@ -13,12 +13,12 @@ import {TraceEngineResult} from './trace-engine-result.js';
|
|
|
13
13
|
|
|
14
14
|
class PageDependencyGraph {
|
|
15
15
|
/**
|
|
16
|
-
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, settings: LH.Audit.Context['settings'], URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps'], fromTrace: boolean}} data
|
|
16
|
+
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, settings: LH.Audit.Context['settings'], URL: LH.Artifacts['URL'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR'], fromTrace: boolean}} data
|
|
17
17
|
* @param {LH.Artifacts.ComputedContext} context
|
|
18
18
|
* @return {Promise<LH.Gatherer.Simulation.GraphNode>}
|
|
19
19
|
*/
|
|
20
20
|
static async compute_(data, context) {
|
|
21
|
-
const {trace, settings, devtoolsLog, URL, SourceMaps} = data;
|
|
21
|
+
const {trace, settings, devtoolsLog, URL, SourceMaps, HostDPR} = data;
|
|
22
22
|
const [{mainThreadEvents}, networkRecords] = await Promise.all([
|
|
23
23
|
ProcessedTrace.request(trace, context),
|
|
24
24
|
NetworkRecords.request(devtoolsLog, context),
|
|
@@ -26,7 +26,7 @@ class PageDependencyGraph {
|
|
|
26
26
|
|
|
27
27
|
if (data.fromTrace) {
|
|
28
28
|
const traceEngineResult =
|
|
29
|
-
await TraceEngineResult.request({trace, settings, SourceMaps}, context);
|
|
29
|
+
await TraceEngineResult.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
30
30
|
const parsedTrace = traceEngineResult.data;
|
|
31
31
|
const requests =
|
|
32
32
|
Lantern.TraceEngineComputationData.createNetworkRequests(trace, parsedTrace);
|
|
@@ -46,5 +46,5 @@ class PageDependencyGraph {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
const PageDependencyGraphComputed = makeComputedArtifact(PageDependencyGraph,
|
|
49
|
-
['devtoolsLog', 'settings', 'trace', 'URL', 'SourceMaps', 'fromTrace']);
|
|
49
|
+
['devtoolsLog', 'settings', 'trace', 'URL', 'SourceMaps', 'HostDPR', 'fromTrace']);
|
|
50
50
|
export {PageDependencyGraphComputed as PageDependencyGraph};
|
|
@@ -239,6 +239,6 @@ class TBTImpactTasks {
|
|
|
239
239
|
|
|
240
240
|
const TBTImpactTasksComputed = makeComputedArtifact(
|
|
241
241
|
TBTImpactTasks,
|
|
242
|
-
['trace', 'devtoolsLog', 'URL', 'SourceMaps', 'gatherContext', 'settings', 'simulator']
|
|
242
|
+
['trace', 'devtoolsLog', 'URL', 'SourceMaps', 'gatherContext', 'settings', 'simulator', 'HostDPR']
|
|
243
243
|
);
|
|
244
244
|
export {TBTImpactTasksComputed as TBTImpactTasks};
|
|
@@ -4,6 +4,7 @@ declare const TraceEngineResultComputed: typeof TraceEngineResult & {
|
|
|
4
4
|
trace: LH.Trace;
|
|
5
5
|
settings: LH.Audit.Context["settings"];
|
|
6
6
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
7
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
7
8
|
}, context: LH.Artifacts.ComputedContext) => Promise<LH.Artifacts.TraceEngineResult>;
|
|
8
9
|
};
|
|
9
10
|
/**
|
|
@@ -14,9 +15,10 @@ declare class TraceEngineResult {
|
|
|
14
15
|
* @param {LH.TraceEvent[]} _traceEvents
|
|
15
16
|
* @param {LH.Audit.Context['settings']} settings
|
|
16
17
|
* @param {LH.Artifacts['SourceMaps']} SourceMaps
|
|
18
|
+
* @param {LH.Artifacts['HostDPR']} HostDPR
|
|
17
19
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
18
20
|
*/
|
|
19
|
-
static runTraceEngine(_traceEvents: LH.TraceEvent[], settings: LH.Audit.Context["settings"], SourceMaps: LH.Artifacts["SourceMaps"]): Promise<LH.Artifacts.TraceEngineResult>;
|
|
21
|
+
static runTraceEngine(_traceEvents: LH.TraceEvent[], settings: LH.Audit.Context["settings"], SourceMaps: LH.Artifacts["SourceMaps"], HostDPR: LH.Artifacts["HostDPR"]): Promise<LH.Artifacts.TraceEngineResult>;
|
|
20
22
|
/**
|
|
21
23
|
* Adapts the given DevTools function that returns a localized string to one
|
|
22
24
|
* that returns a LH.IcuMessage.
|
|
@@ -49,7 +51,7 @@ declare class TraceEngineResult {
|
|
|
49
51
|
*/
|
|
50
52
|
static localizeInsights(insightSets: import("@paulirish/trace_engine/models/trace/insights/types.js").TraceInsightSets): void;
|
|
51
53
|
/**
|
|
52
|
-
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps']}} data
|
|
54
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR']}} data
|
|
53
55
|
* @param {LH.Artifacts.ComputedContext} context
|
|
54
56
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
55
57
|
*/
|
|
@@ -57,6 +59,7 @@ declare class TraceEngineResult {
|
|
|
57
59
|
trace: LH.Trace;
|
|
58
60
|
settings: LH.Audit.Context["settings"];
|
|
59
61
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
62
|
+
HostDPR: LH.Artifacts["HostDPR"];
|
|
60
63
|
}, context: LH.Artifacts.ComputedContext): Promise<LH.Artifacts.TraceEngineResult>;
|
|
61
64
|
}
|
|
62
65
|
import * as LH from '../../types/lh.js';
|
|
@@ -22,9 +22,10 @@ class TraceEngineResult {
|
|
|
22
22
|
* @param {LH.TraceEvent[]} _traceEvents
|
|
23
23
|
* @param {LH.Audit.Context['settings']} settings
|
|
24
24
|
* @param {LH.Artifacts['SourceMaps']} SourceMaps
|
|
25
|
+
* @param {LH.Artifacts['HostDPR']} HostDPR
|
|
25
26
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
26
27
|
*/
|
|
27
|
-
static async runTraceEngine(_traceEvents, settings, SourceMaps) {
|
|
28
|
+
static async runTraceEngine(_traceEvents, settings, SourceMaps, HostDPR) {
|
|
28
29
|
const processor = new TraceEngine.TraceProcessor(TraceEngine.TraceHandlers);
|
|
29
30
|
const traceEvents =
|
|
30
31
|
/** @type {import('@paulirish/trace_engine').Types.Events.Event[]} */ (_traceEvents);
|
|
@@ -51,6 +52,7 @@ class TraceEngineResult {
|
|
|
51
52
|
},
|
|
52
53
|
},
|
|
53
54
|
lanternSettings,
|
|
55
|
+
metadata: {hostDPR: HostDPR},
|
|
54
56
|
async resolveSourceMap(params) {
|
|
55
57
|
const sourceMap = SourceMaps.find(sm => sm.scriptId === params.scriptId);
|
|
56
58
|
if (!sourceMap || !sourceMap.map) {
|
|
@@ -220,7 +222,7 @@ class TraceEngineResult {
|
|
|
220
222
|
}
|
|
221
223
|
|
|
222
224
|
/**
|
|
223
|
-
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps']}} data
|
|
225
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings'], SourceMaps: LH.Artifacts['SourceMaps'], HostDPR: LH.Artifacts['HostDPR']}} data
|
|
224
226
|
* @param {LH.Artifacts.ComputedContext} context
|
|
225
227
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
226
228
|
*/
|
|
@@ -251,11 +253,12 @@ class TraceEngineResult {
|
|
|
251
253
|
}
|
|
252
254
|
|
|
253
255
|
const result =
|
|
254
|
-
await TraceEngineResult.runTraceEngine(
|
|
256
|
+
await TraceEngineResult.runTraceEngine(
|
|
257
|
+
traceEvents, data.settings, data.SourceMaps, data.HostDPR);
|
|
255
258
|
return result;
|
|
256
259
|
}
|
|
257
260
|
}
|
|
258
261
|
|
|
259
262
|
const TraceEngineResultComputed =
|
|
260
|
-
makeComputedArtifact(TraceEngineResult, ['trace', 'settings', 'SourceMaps']);
|
|
263
|
+
makeComputedArtifact(TraceEngineResult, ['trace', 'settings', 'SourceMaps', 'HostDPR']);
|
|
261
264
|
export {TraceEngineResultComputed as TraceEngineResult};
|
|
@@ -332,8 +332,9 @@ class TraceElements extends BaseGatherer {
|
|
|
332
332
|
const trace = context.dependencies.Trace;
|
|
333
333
|
const SourceMaps = context.dependencies.SourceMaps;
|
|
334
334
|
const settings = context.settings;
|
|
335
|
+
const HostDPR = context.baseArtifacts.HostDPR;
|
|
335
336
|
const traceEngineResult =
|
|
336
|
-
await TraceEngineResult.request({trace, settings, SourceMaps}, context);
|
|
337
|
+
await TraceEngineResult.request({trace, settings, SourceMaps, HostDPR}, context);
|
|
337
338
|
|
|
338
339
|
const processedTrace = await ProcessedTrace.request(trace, context);
|
|
339
340
|
const {mainThreadEvents} = processedTrace;
|
package/package.json
CHANGED
package/types/artifacts.d.ts
CHANGED
|
@@ -44,12 +44,12 @@ interface UniversalBaseArtifacts {
|
|
|
44
44
|
LighthouseRunWarnings: Array<string | IcuMessage>;
|
|
45
45
|
/** The benchmark index that indicates rough device class. */
|
|
46
46
|
BenchmarkIndex: number;
|
|
47
|
-
/** The host's device pixel ratio. */
|
|
48
|
-
HostDPR: number;
|
|
49
47
|
/** An object containing information about the testing configuration used by Lighthouse. */
|
|
50
48
|
settings: Config.Settings;
|
|
51
49
|
/** The timing instrumentation of the gather portion of a run. */
|
|
52
50
|
Timing: Artifacts.MeasureEntry[];
|
|
51
|
+
/** The host's device pixel ratio. */
|
|
52
|
+
HostDPR: number;
|
|
53
53
|
/** Device which Chrome is running on. */
|
|
54
54
|
HostFormFactor: 'desktop'|'mobile';
|
|
55
55
|
/** The user agent string of the version of Chrome used. */
|
|
@@ -481,6 +481,7 @@ declare module Artifacts {
|
|
|
481
481
|
simulator: Gatherer.Simulation.Simulator | null;
|
|
482
482
|
URL: Artifacts['URL'];
|
|
483
483
|
SourceMaps: Artifacts['SourceMaps'];
|
|
484
|
+
HostDPR: Artifacts['HostDPR'];
|
|
484
485
|
}
|
|
485
486
|
|
|
486
487
|
interface MetricComputationData extends MetricComputationDataInput {
|