lighthouse 12.6.1 → 12.7.0-dev.20250627
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/cli/test/smokehouse/core-tests.js +2 -0
- package/cli/test/smokehouse/frontends/lib.js +0 -2
- package/cli/test/smokehouse/frontends/smokehouse-bin.js +1 -3
- package/cli/test/smokehouse/lighthouse-runners/cli.js +1 -1
- package/cli/test/smokehouse/smokehouse.js +0 -2
- package/core/audits/audit.d.ts +7 -0
- package/core/audits/audit.js +17 -2
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +6 -8
- package/core/audits/byte-efficiency/legacy-javascript.js +0 -1
- package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
- package/core/audits/deprecations.js +0 -2
- package/core/audits/insights/cache-insight.js +2 -1
- package/core/audits/insights/cls-culprits-insight.js +6 -7
- package/core/audits/insights/{interaction-to-next-paint-insight.d.ts → inp-breakdown-insight.d.ts} +3 -3
- package/core/audits/insights/{interaction-to-next-paint-insight.js → inp-breakdown-insight.js} +10 -10
- package/core/audits/insights/insight-audit.d.ts +7 -4
- package/core/audits/insights/insight-audit.js +48 -7
- package/core/audits/insights/lcp-breakdown-insight.d.ts +16 -0
- package/core/audits/insights/{lcp-phases-insight.js → lcp-breakdown-insight.js} +19 -19
- package/core/audits/insights/modern-http-insight.js +0 -2
- package/core/audits/insights/network-dependency-tree-insight.js +85 -8
- package/core/audits/insights/render-blocking-insight.js +1 -1
- package/core/audits/layout-shifts.js +5 -4
- package/core/audits/seo/crawlable-anchors.js +27 -0
- package/core/audits/seo/link-text.js +130 -83
- package/core/audits/third-party-cookies.js +0 -2
- package/core/audits/valid-source-maps.js +0 -2
- package/core/computed/js-bundles.js +0 -1
- package/core/computed/metrics/cumulative-layout-shift.js +1 -1
- package/core/computed/metrics/lantern-metric.js +4 -3
- package/core/computed/metrics/timing-summary.js +4 -1
- package/core/computed/page-dependency-graph.js +3 -3
- package/core/computed/trace-engine-result.js +1 -2
- package/core/config/config.js +1 -1
- package/core/config/default-config.js +4 -4
- package/core/config/experimental-config.js +2 -2
- package/core/config/filters.js +7 -0
- package/core/config/validation.js +4 -0
- package/core/gather/base-artifacts.js +3 -0
- package/core/gather/driver/environment.d.ts +6 -0
- package/core/gather/driver/environment.js +17 -0
- package/core/gather/driver/execution-context.d.ts +3 -1
- package/core/gather/driver/execution-context.js +3 -1
- package/core/gather/driver/navigation.js +1 -3
- package/core/gather/driver/wait-for-condition.js +0 -1
- package/core/gather/fetcher.js +0 -2
- package/core/gather/gatherers/accessibility.js +1 -1
- package/core/gather/gatherers/anchor-elements.js +61 -2
- package/core/gather/gatherers/cache-contents.js +0 -2
- package/core/gather/gatherers/css-usage.js +3 -1
- package/core/gather/gatherers/dobetterweb/doctype.js +0 -2
- package/core/gather/gatherers/dobetterweb/domstats.js +1 -1
- package/core/gather/gatherers/full-page-screenshot.js +1 -1
- package/core/gather/gatherers/image-elements.js +1 -1
- package/core/gather/gatherers/inspector-issues.js +1 -1
- package/core/gather/gatherers/link-elements.js +1 -1
- package/core/gather/gatherers/stacks.js +0 -1
- package/core/gather/gatherers/stylesheets.js +3 -1
- package/core/gather/gatherers/trace-elements.d.ts +3 -4
- package/core/gather/gatherers/trace-elements.js +13 -43
- package/core/gather/gatherers/viewport-dimensions.js +0 -2
- package/core/index.cjs +0 -1
- package/core/index.d.cts +5 -0
- package/core/lib/asset-saver.d.ts +1 -1
- package/core/lib/asset-saver.js +20 -8
- package/core/lib/bf-cache-strings.js +4 -1
- package/core/lib/deprecations-strings.d.ts +51 -47
- package/core/lib/deprecations-strings.js +14 -8
- package/core/lib/i18n/i18n.js +0 -2
- package/core/lib/lantern-trace-saver.js +1 -1
- package/core/lib/lh-error.js +0 -1
- package/core/lib/manifest-parser.js +0 -2
- package/core/lib/minify-devtoolslog.js +0 -2
- package/core/lib/sentry.d.ts +1 -1
- package/core/lib/sentry.js +2 -2
- package/core/runner.js +11 -8
- package/core/scoring.d.ts +186 -15
- package/core/scripts/manual-chrome-launcher.js +0 -1
- package/dist/report/bundle.esm.js +14 -12
- package/dist/report/flow.js +18 -16
- package/dist/report/standalone.js +15 -13
- package/eslint.config.mjs +242 -0
- package/flow-report/src/common.tsx +1 -0
- package/flow-report/src/i18n/i18n.tsx +1 -0
- package/flow-report/src/util.ts +2 -0
- package/package.json +23 -19
- package/readme.md +3 -2
- package/report/assets/styles.css +11 -9
- package/report/assets/templates.html +1 -1
- package/report/generator/file-namer.d.ts +5 -0
- package/report/generator/file-namer.js +1 -1
- package/report/generator/flow-report-assets.js +1 -1
- package/report/generator/report-assets.js +1 -1
- package/report/generator/report-generator.js +3 -3
- package/report/renderer/api.js +1 -0
- package/report/renderer/components.js +2 -2
- package/report/renderer/details-renderer.d.ts +5 -0
- package/report/renderer/details-renderer.js +35 -3
- package/report/renderer/dom.d.ts +2 -0
- package/report/renderer/dom.js +6 -0
- package/report/renderer/i18n-formatter.js +2 -1
- package/report/renderer/performance-category-renderer.js +2 -2
- package/report/renderer/report-renderer.js +1 -0
- package/report/renderer/report-ui-features.d.ts +1 -0
- package/report/renderer/report-ui-features.js +16 -0
- package/report/renderer/report-utils.js +3 -2
- package/report/renderer/text-encoding.js +0 -2
- package/report/renderer/topbar-features.js +1 -1
- package/report/types/report-renderer.d.ts +5 -0
- package/shared/localization/locales/ar-XB.json +57 -69
- package/shared/localization/locales/ar.json +57 -69
- package/shared/localization/locales/bg.json +57 -69
- package/shared/localization/locales/ca.json +57 -69
- package/shared/localization/locales/cs.json +57 -69
- package/shared/localization/locales/da.json +57 -69
- package/shared/localization/locales/de.json +57 -69
- package/shared/localization/locales/el.json +57 -69
- package/shared/localization/locales/en-GB.json +57 -69
- package/shared/localization/locales/en-US.json +73 -61
- package/shared/localization/locales/en-XL.json +73 -61
- package/shared/localization/locales/es-419.json +57 -69
- package/shared/localization/locales/es.json +56 -68
- package/shared/localization/locales/fi.json +57 -69
- package/shared/localization/locales/fil.json +57 -69
- package/shared/localization/locales/fr.json +57 -69
- package/shared/localization/locales/he.json +57 -69
- package/shared/localization/locales/hi.json +57 -69
- package/shared/localization/locales/hr.json +57 -69
- package/shared/localization/locales/hu.json +56 -68
- package/shared/localization/locales/id.json +57 -69
- package/shared/localization/locales/it.json +56 -68
- package/shared/localization/locales/ja.json +57 -69
- package/shared/localization/locales/ko.json +57 -69
- package/shared/localization/locales/lt.json +57 -69
- package/shared/localization/locales/lv.json +57 -69
- package/shared/localization/locales/nl.json +57 -69
- package/shared/localization/locales/no.json +57 -69
- package/shared/localization/locales/pl.json +56 -68
- package/shared/localization/locales/pt-PT.json +57 -69
- package/shared/localization/locales/pt.json +57 -69
- package/shared/localization/locales/ro.json +57 -69
- package/shared/localization/locales/ru.json +58 -70
- package/shared/localization/locales/sk.json +57 -69
- package/shared/localization/locales/sl.json +56 -68
- package/shared/localization/locales/sr-Latn.json +57 -69
- package/shared/localization/locales/sr.json +57 -69
- package/shared/localization/locales/sv.json +57 -69
- package/shared/localization/locales/ta.json +57 -69
- package/shared/localization/locales/te.json +57 -69
- package/shared/localization/locales/th.json +56 -68
- package/shared/localization/locales/tr.json +57 -69
- package/shared/localization/locales/uk.json +57 -69
- package/shared/localization/locales/vi.json +57 -69
- package/shared/localization/locales/zh-HK.json +57 -69
- package/shared/localization/locales/zh-TW.json +56 -68
- package/shared/localization/locales/zh.json +57 -69
- package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -1
- package/types/artifacts.d.ts +8 -1
- package/types/internal/test.d.ts +1 -1
- package/types/lhr/audit-details.d.ts +13 -3
- package/types/lhr/lhr.d.ts +8 -1
- package/core/audits/insights/lcp-phases-insight.d.ts +0 -16
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export namespace UIStrings {
|
|
2
2
|
let AuthorizationCoveredByWildcard: string;
|
|
3
3
|
let CanRequestURLHTTPContainingNewline: string;
|
|
4
|
+
let CharsetAutoDetectionISO2022JP: string;
|
|
4
5
|
let ChromeLoadTimesConnectionInfo: string;
|
|
5
6
|
let ChromeLoadTimesFirstPaintAfterLoadTime: string;
|
|
6
7
|
let ChromeLoadTimesWasAlternateProtocolAvailable: string;
|
|
@@ -11,7 +12,6 @@ export namespace UIStrings {
|
|
|
11
12
|
let CSSSelectorInternalMediaControlsOverlayCastButton: string;
|
|
12
13
|
let CSSValueAppearanceSliderVertical: string;
|
|
13
14
|
let DataUrlInSvgUse: string;
|
|
14
|
-
let DOMMutationEvents: string;
|
|
15
15
|
let GeolocationInsecureOrigin: string;
|
|
16
16
|
let GeolocationInsecureOriginDeprecatedNotRemoved: string;
|
|
17
17
|
let GetUserMediaInsecureOrigin: string;
|
|
@@ -54,6 +54,7 @@ export namespace UIStrings {
|
|
|
54
54
|
let TextToSpeech_DisallowedByAutoplay: string;
|
|
55
55
|
let UnloadHandler: string;
|
|
56
56
|
let V8SharedArrayBufferConstructedInExtensionWithoutIsolation: string;
|
|
57
|
+
let WebGPUAdapterIsFallbackAdapter: string;
|
|
57
58
|
let XHRJSONEncodingDetection: string;
|
|
58
59
|
let XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: string;
|
|
59
60
|
}
|
|
@@ -76,20 +77,25 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
76
77
|
export { chromeStatusFeature_2 as chromeStatusFeature };
|
|
77
78
|
}
|
|
78
79
|
export { CanRequestURLHTTPContainingNewline_1 as CanRequestURLHTTPContainingNewline };
|
|
79
|
-
export namespace
|
|
80
|
+
export namespace CharsetAutoDetectionISO2022JP_1 {
|
|
80
81
|
let chromeStatusFeature_3: number;
|
|
81
82
|
export { chromeStatusFeature_3 as chromeStatusFeature };
|
|
82
83
|
}
|
|
83
|
-
export {
|
|
84
|
-
export namespace
|
|
84
|
+
export { CharsetAutoDetectionISO2022JP_1 as CharsetAutoDetectionISO2022JP };
|
|
85
|
+
export namespace ChromeLoadTimesConnectionInfo_1 {
|
|
85
86
|
let chromeStatusFeature_4: number;
|
|
86
87
|
export { chromeStatusFeature_4 as chromeStatusFeature };
|
|
87
88
|
}
|
|
88
|
-
export {
|
|
89
|
-
export namespace
|
|
89
|
+
export { ChromeLoadTimesConnectionInfo_1 as ChromeLoadTimesConnectionInfo };
|
|
90
|
+
export namespace ChromeLoadTimesFirstPaintAfterLoadTime_1 {
|
|
90
91
|
let chromeStatusFeature_5: number;
|
|
91
92
|
export { chromeStatusFeature_5 as chromeStatusFeature };
|
|
92
93
|
}
|
|
94
|
+
export { ChromeLoadTimesFirstPaintAfterLoadTime_1 as ChromeLoadTimesFirstPaintAfterLoadTime };
|
|
95
|
+
export namespace ChromeLoadTimesWasAlternateProtocolAvailable_1 {
|
|
96
|
+
let chromeStatusFeature_6: number;
|
|
97
|
+
export { chromeStatusFeature_6 as chromeStatusFeature };
|
|
98
|
+
}
|
|
93
99
|
export { ChromeLoadTimesWasAlternateProtocolAvailable_1 as ChromeLoadTimesWasAlternateProtocolAvailable };
|
|
94
100
|
export namespace CookieWithTruncatingChar_1 {
|
|
95
101
|
let milestone_1: number;
|
|
@@ -101,25 +107,18 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
101
107
|
export { milestone_2 as milestone };
|
|
102
108
|
}
|
|
103
109
|
export { CrossOriginAccessBasedOnDocumentDomain_1 as CrossOriginAccessBasedOnDocumentDomain };
|
|
104
|
-
export namespace DOMMutationEvents_1 {
|
|
105
|
-
let chromeStatusFeature_6: number;
|
|
106
|
-
export { chromeStatusFeature_6 as chromeStatusFeature };
|
|
107
|
-
let milestone_3: number;
|
|
108
|
-
export { milestone_3 as milestone };
|
|
109
|
-
}
|
|
110
|
-
export { DOMMutationEvents_1 as DOMMutationEvents };
|
|
111
110
|
export namespace DataUrlInSvgUse_1 {
|
|
112
111
|
let chromeStatusFeature_7: number;
|
|
113
112
|
export { chromeStatusFeature_7 as chromeStatusFeature };
|
|
114
|
-
let
|
|
115
|
-
export {
|
|
113
|
+
let milestone_3: number;
|
|
114
|
+
export { milestone_3 as milestone };
|
|
116
115
|
}
|
|
117
116
|
export { DataUrlInSvgUse_1 as DataUrlInSvgUse };
|
|
118
117
|
export namespace H1UserAgentFontSizeInSection_1 {
|
|
119
118
|
let chromeStatusFeature_8: number;
|
|
120
119
|
export { chromeStatusFeature_8 as chromeStatusFeature };
|
|
121
|
-
let
|
|
122
|
-
export {
|
|
120
|
+
let milestone_4: number;
|
|
121
|
+
export { milestone_4 as milestone };
|
|
123
122
|
}
|
|
124
123
|
export { H1UserAgentFontSizeInSection_1 as H1UserAgentFontSizeInSection };
|
|
125
124
|
export namespace IdentityDigitalCredentials_1 {
|
|
@@ -135,13 +134,13 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
135
134
|
export namespace InsecurePrivateNetworkSubresourceRequest_1 {
|
|
136
135
|
let chromeStatusFeature_11: number;
|
|
137
136
|
export { chromeStatusFeature_11 as chromeStatusFeature };
|
|
138
|
-
let
|
|
139
|
-
export {
|
|
137
|
+
let milestone_5: number;
|
|
138
|
+
export { milestone_5 as milestone };
|
|
140
139
|
}
|
|
141
140
|
export { InsecurePrivateNetworkSubresourceRequest_1 as InsecurePrivateNetworkSubresourceRequest };
|
|
142
141
|
export namespace LocalCSSFileExtensionRejected_1 {
|
|
143
|
-
let
|
|
144
|
-
export {
|
|
142
|
+
let milestone_6: number;
|
|
143
|
+
export { milestone_6 as milestone };
|
|
145
144
|
}
|
|
146
145
|
export { LocalCSSFileExtensionRejected_1 as LocalCSSFileExtensionRejected };
|
|
147
146
|
export namespace MediaSourceAbortRemove_1 {
|
|
@@ -157,8 +156,8 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
157
156
|
export namespace NoSysexWebMIDIWithoutPermission_1 {
|
|
158
157
|
let chromeStatusFeature_14: number;
|
|
159
158
|
export { chromeStatusFeature_14 as chromeStatusFeature };
|
|
160
|
-
let
|
|
161
|
-
export {
|
|
159
|
+
let milestone_7: number;
|
|
160
|
+
export { milestone_7 as milestone };
|
|
162
161
|
}
|
|
163
162
|
export { NoSysexWebMIDIWithoutPermission_1 as NoSysexWebMIDIWithoutPermission };
|
|
164
163
|
export namespace NotificationPermissionRequestedIframe_1 {
|
|
@@ -167,20 +166,20 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
167
166
|
}
|
|
168
167
|
export { NotificationPermissionRequestedIframe_1 as NotificationPermissionRequestedIframe };
|
|
169
168
|
export namespace ObsoleteCreateImageBitmapImageOrientationNone_1 {
|
|
170
|
-
let
|
|
171
|
-
export {
|
|
169
|
+
let milestone_8: number;
|
|
170
|
+
export { milestone_8 as milestone };
|
|
172
171
|
}
|
|
173
172
|
export { ObsoleteCreateImageBitmapImageOrientationNone_1 as ObsoleteCreateImageBitmapImageOrientationNone };
|
|
174
173
|
export namespace ObsoleteWebRtcCipherSuite_1 {
|
|
175
|
-
let
|
|
176
|
-
export {
|
|
174
|
+
let milestone_9: number;
|
|
175
|
+
export { milestone_9 as milestone };
|
|
177
176
|
}
|
|
178
177
|
export { ObsoleteWebRtcCipherSuite_1 as ObsoleteWebRtcCipherSuite };
|
|
179
178
|
export namespace OverflowVisibleOnReplacedElement_1 {
|
|
180
179
|
let chromeStatusFeature_16: number;
|
|
181
180
|
export { chromeStatusFeature_16 as chromeStatusFeature };
|
|
182
|
-
let
|
|
183
|
-
export {
|
|
181
|
+
let milestone_10: number;
|
|
182
|
+
export { milestone_10 as milestone };
|
|
184
183
|
}
|
|
185
184
|
export { OverflowVisibleOnReplacedElement_1 as OverflowVisibleOnReplacedElement };
|
|
186
185
|
export namespace PaymentInstruments_1 {
|
|
@@ -196,25 +195,25 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
196
195
|
export namespace PersistentQuotaType_1 {
|
|
197
196
|
let chromeStatusFeature_19: number;
|
|
198
197
|
export { chromeStatusFeature_19 as chromeStatusFeature };
|
|
199
|
-
let
|
|
200
|
-
export {
|
|
198
|
+
let milestone_11: number;
|
|
199
|
+
export { milestone_11 as milestone };
|
|
201
200
|
}
|
|
202
201
|
export { PersistentQuotaType_1 as PersistentQuotaType };
|
|
203
202
|
export namespace RTCConstraintEnableDtlsSrtpFalse_1 {
|
|
204
|
-
let
|
|
205
|
-
export {
|
|
203
|
+
let milestone_12: number;
|
|
204
|
+
export { milestone_12 as milestone };
|
|
206
205
|
}
|
|
207
206
|
export { RTCConstraintEnableDtlsSrtpFalse_1 as RTCConstraintEnableDtlsSrtpFalse };
|
|
208
207
|
export namespace RTCConstraintEnableDtlsSrtpTrue_1 {
|
|
209
|
-
let
|
|
210
|
-
export {
|
|
208
|
+
let milestone_13: number;
|
|
209
|
+
export { milestone_13 as milestone };
|
|
211
210
|
}
|
|
212
211
|
export { RTCConstraintEnableDtlsSrtpTrue_1 as RTCConstraintEnableDtlsSrtpTrue };
|
|
213
212
|
export namespace RTCPeerConnectionGetStatsLegacyNonCompliant_1 {
|
|
214
213
|
let chromeStatusFeature_20: number;
|
|
215
214
|
export { chromeStatusFeature_20 as chromeStatusFeature };
|
|
216
|
-
let
|
|
217
|
-
export {
|
|
215
|
+
let milestone_14: number;
|
|
216
|
+
export { milestone_14 as milestone };
|
|
218
217
|
}
|
|
219
218
|
export { RTCPeerConnectionGetStatsLegacyNonCompliant_1 as RTCPeerConnectionGetStatsLegacyNonCompliant };
|
|
220
219
|
export namespace RequestedSubresourceWithEmbeddedCredentials_1 {
|
|
@@ -225,20 +224,20 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
225
224
|
export namespace RtcpMuxPolicyNegotiate_1 {
|
|
226
225
|
let chromeStatusFeature_22: number;
|
|
227
226
|
export { chromeStatusFeature_22 as chromeStatusFeature };
|
|
228
|
-
let
|
|
229
|
-
export {
|
|
227
|
+
let milestone_15: number;
|
|
228
|
+
export { milestone_15 as milestone };
|
|
230
229
|
}
|
|
231
230
|
export { RtcpMuxPolicyNegotiate_1 as RtcpMuxPolicyNegotiate };
|
|
232
231
|
export namespace SharedArrayBufferConstructedWithoutIsolation_1 {
|
|
233
|
-
let
|
|
234
|
-
export {
|
|
232
|
+
let milestone_16: number;
|
|
233
|
+
export { milestone_16 as milestone };
|
|
235
234
|
}
|
|
236
235
|
export { SharedArrayBufferConstructedWithoutIsolation_1 as SharedArrayBufferConstructedWithoutIsolation };
|
|
237
236
|
export namespace TextToSpeech_DisallowedByAutoplay_1 {
|
|
238
237
|
let chromeStatusFeature_23: number;
|
|
239
238
|
export { chromeStatusFeature_23 as chromeStatusFeature };
|
|
240
|
-
let
|
|
241
|
-
export {
|
|
239
|
+
let milestone_17: number;
|
|
240
|
+
export { milestone_17 as milestone };
|
|
242
241
|
}
|
|
243
242
|
export { TextToSpeech_DisallowedByAutoplay_1 as TextToSpeech_DisallowedByAutoplay };
|
|
244
243
|
export namespace UnloadHandler_1 {
|
|
@@ -247,13 +246,18 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
247
246
|
}
|
|
248
247
|
export { UnloadHandler_1 as UnloadHandler };
|
|
249
248
|
export namespace V8SharedArrayBufferConstructedInExtensionWithoutIsolation_1 {
|
|
250
|
-
let
|
|
251
|
-
export {
|
|
249
|
+
let milestone_18: number;
|
|
250
|
+
export { milestone_18 as milestone };
|
|
252
251
|
}
|
|
253
252
|
export { V8SharedArrayBufferConstructedInExtensionWithoutIsolation_1 as V8SharedArrayBufferConstructedInExtensionWithoutIsolation };
|
|
253
|
+
export namespace WebGPUAdapterIsFallbackAdapter_1 {
|
|
254
|
+
let chromeStatusFeature_25: number;
|
|
255
|
+
export { chromeStatusFeature_25 as chromeStatusFeature };
|
|
256
|
+
}
|
|
257
|
+
export { WebGPUAdapterIsFallbackAdapter_1 as WebGPUAdapterIsFallbackAdapter };
|
|
254
258
|
export namespace XHRJSONEncodingDetection_1 {
|
|
255
|
-
let
|
|
256
|
-
export {
|
|
259
|
+
let milestone_19: number;
|
|
260
|
+
export { milestone_19 as milestone };
|
|
257
261
|
}
|
|
258
262
|
export { XHRJSONEncodingDetection_1 as XHRJSONEncodingDetection };
|
|
259
263
|
}
|
|
@@ -16,6 +16,10 @@ export const UIStrings = {
|
|
|
16
16
|
* @description This warning occurs when a page attempts to request a resource whose URL contained both a newline character (`\n` or `\r`), and a less-than character (`<`). These resources are blocked.
|
|
17
17
|
*/
|
|
18
18
|
CanRequestURLHTTPContainingNewline: "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources.",
|
|
19
|
+
/**
|
|
20
|
+
* @description Warning displayed to developers that they did not specify character encoding for HTML document, and that auto-detection of specific character set (i.e. ISO-2022-JP) used by the webiste won't be supported in the near futre.
|
|
21
|
+
*/
|
|
22
|
+
CharsetAutoDetectionISO2022JP: "Auto-detection of ISO-2022-JP character set is deprecated and it will be disabled in the near future. Please specify character set in the Content Type header or by using a meta tag (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding).",
|
|
19
23
|
/**
|
|
20
24
|
* @description This warning occurs when the website attempts to invoke the deprecated `chrome.loadTimes().connectionInfo` API.
|
|
21
25
|
*/
|
|
@@ -56,10 +60,6 @@ export const UIStrings = {
|
|
|
56
60
|
* @description Warning displayed to developers when a data: URL is assigned to SVGUseElement to let them know that the support is deprecated.
|
|
57
61
|
*/
|
|
58
62
|
DataUrlInSvgUse: "Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future.",
|
|
59
|
-
/**
|
|
60
|
-
* @description Warning displayed to developers when non-standard Mutation Events are used. These are deprecated and will be removed.
|
|
61
|
-
*/
|
|
62
|
-
DOMMutationEvents: "DOM Mutation Events, including `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, and `DOMCharacterDataModified` are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use `MutationObserver` instead.",
|
|
63
63
|
/**
|
|
64
64
|
* @description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported.
|
|
65
65
|
*/
|
|
@@ -228,6 +228,10 @@ export const UIStrings = {
|
|
|
228
228
|
* @description A deprecation warning shown in the DevTools Issues tab. The placeholder is always the noun 'SharedArrayBuffer' which refers to a JavaScript construct. 'Extensions' refers to Chrome extensions. The warning is shown when Chrome Extensions attempt to use 'SharedArrayBuffer's under insecure circumstances.
|
|
229
229
|
*/
|
|
230
230
|
V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.",
|
|
231
|
+
/**
|
|
232
|
+
* @description This warning occurs when the website attempts to use the deprecated GPUAdapter `isFallbackAdapter` attribute.
|
|
233
|
+
*/
|
|
234
|
+
WebGPUAdapterIsFallbackAdapter: "The GPUAdapter `isFallbackAdapter` attribute is deprecated, instead use the GPUAdapterInfo `isFallbackAdapter` attribute.",
|
|
231
235
|
/**
|
|
232
236
|
* @description Warning displayed to developers that they are using `XMLHttpRequest` API in a way that they expect an unsupported character encoding `UTF-16` could be used in the server reply.
|
|
233
237
|
*/
|
|
@@ -255,6 +259,9 @@ export const DEPRECATIONS_METADATA = {
|
|
|
255
259
|
"CanRequestURLHTTPContainingNewline": {
|
|
256
260
|
"chromeStatusFeature": 5735596811091968
|
|
257
261
|
},
|
|
262
|
+
"CharsetAutoDetectionISO2022JP": {
|
|
263
|
+
"chromeStatusFeature": 6576566521561088
|
|
264
|
+
},
|
|
258
265
|
"ChromeLoadTimesConnectionInfo": {
|
|
259
266
|
"chromeStatusFeature": 5637885046816768
|
|
260
267
|
},
|
|
@@ -270,10 +277,6 @@ export const DEPRECATIONS_METADATA = {
|
|
|
270
277
|
"CrossOriginAccessBasedOnDocumentDomain": {
|
|
271
278
|
"milestone": 115
|
|
272
279
|
},
|
|
273
|
-
"DOMMutationEvents": {
|
|
274
|
-
"chromeStatusFeature": 5083947249172480,
|
|
275
|
-
"milestone": 127
|
|
276
|
-
},
|
|
277
280
|
"DataUrlInSvgUse": {
|
|
278
281
|
"chromeStatusFeature": 5128825141198848,
|
|
279
282
|
"milestone": 119
|
|
@@ -358,6 +361,9 @@ export const DEPRECATIONS_METADATA = {
|
|
|
358
361
|
"V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
|
|
359
362
|
"milestone": 96
|
|
360
363
|
},
|
|
364
|
+
"WebGPUAdapterIsFallbackAdapter": {
|
|
365
|
+
"chromeStatusFeature": 4870179714236416
|
|
366
|
+
},
|
|
361
367
|
"XHRJSONEncodingDetection": {
|
|
362
368
|
"milestone": 93
|
|
363
369
|
}
|
package/core/lib/i18n/i18n.js
CHANGED
|
@@ -17,7 +17,6 @@ import {LH_ROOT} from '../../../shared/root.js';
|
|
|
17
17
|
import {isIcuMessage, formatMessage, DEFAULT_LOCALE} from '../../../shared/localization/format.js';
|
|
18
18
|
import {getModulePath} from '../../../shared/esm-utils.js';
|
|
19
19
|
|
|
20
|
-
/* eslint-disable max-len */
|
|
21
20
|
const UIStrings = {
|
|
22
21
|
/** Used to show the duration in milliseconds that something lasted. The `{timeInMs}` placeholder will be replaced with the time duration, shown in milliseconds (e.g. 63 ms) */
|
|
23
22
|
ms: '{timeInMs, number, milliseconds}\xa0ms',
|
|
@@ -114,7 +113,6 @@ const UIStrings = {
|
|
|
114
113
|
/** Table item value for the severity of a high impact, or dangerous vulnerability. Part of a ranking scale in the form: low, medium, high. */
|
|
115
114
|
itemSeverityHigh: 'High',
|
|
116
115
|
};
|
|
117
|
-
/* eslint-enable max-len */
|
|
118
116
|
|
|
119
117
|
/**
|
|
120
118
|
* Look up the best available locale for the requested language through these fall backs:
|
|
@@ -153,7 +153,7 @@ function convertNodeTimingsToTrace(nodeTimings) {
|
|
|
153
153
|
|
|
154
154
|
// 0ms requests get super-messed up rendering
|
|
155
155
|
// Use 0.3ms instead so they're still hoverable, https://github.com/GoogleChrome/lighthouse/pull/5350#discussion_r194563201
|
|
156
|
-
let {startTime, endTime} = timing;
|
|
156
|
+
let {startTime, endTime} = timing;
|
|
157
157
|
if (startTime === endTime) endTime += 0.3;
|
|
158
158
|
|
|
159
159
|
const requestData = {requestId: requestId.toString(), frame};
|
package/core/lib/lh-error.js
CHANGED
|
@@ -214,7 +214,6 @@ class LighthouseError extends Error {
|
|
|
214
214
|
if (typeof possibleError === 'object' && possibleError !== null) {
|
|
215
215
|
if (possibleError.sentinel === LHERROR_SENTINEL) {
|
|
216
216
|
// Include sentinel in destructuring so it doesn't end up in `properties`.
|
|
217
|
-
// eslint-disable-next-line no-unused-vars
|
|
218
217
|
const {code, stack, cause, properties} = /** @type {SerializedLighthouseError} */ (possibleError);
|
|
219
218
|
const errorDefinition = LighthouseError.errors[/** @type {keyof typeof ERRORS} */ (code)];
|
|
220
219
|
const lhError = new LighthouseError(errorDefinition, properties, {cause});
|
|
@@ -458,7 +458,6 @@ function parseManifest(string, manifestUrl, documentUrl) {
|
|
|
458
458
|
};
|
|
459
459
|
}
|
|
460
460
|
|
|
461
|
-
/* eslint-disable camelcase */
|
|
462
461
|
const manifest = {
|
|
463
462
|
name: parseName(jsonInput),
|
|
464
463
|
short_name: parseShortName(jsonInput),
|
|
@@ -471,7 +470,6 @@ function parseManifest(string, manifestUrl, documentUrl) {
|
|
|
471
470
|
theme_color: parseThemeColor(jsonInput),
|
|
472
471
|
background_color: parseBackgroundColor(jsonInput),
|
|
473
472
|
};
|
|
474
|
-
/* eslint-enable camelcase */
|
|
475
473
|
|
|
476
474
|
/** @type {string|undefined} */
|
|
477
475
|
let manifestUrlWarning;
|
package/core/lib/sentry.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export namespace Sentry {
|
|
|
17
17
|
export type Breadcrumb = import("@sentry/node").Breadcrumb;
|
|
18
18
|
export type NodeClient = import("@sentry/node").NodeClient;
|
|
19
19
|
export type NodeOptions = import("@sentry/node").NodeOptions;
|
|
20
|
-
export type
|
|
20
|
+
export type SeverityLevel = import("@sentry/node").SeverityLevel;
|
|
21
21
|
/**
|
|
22
22
|
* When called, replaces noops with actual Sentry implementation.
|
|
23
23
|
* @param {{url: string, flags: LH.CliFlags, config?: LH.Config, environmentData: NodeOptions}} opts
|
package/core/lib/sentry.js
CHANGED
|
@@ -11,7 +11,7 @@ import {initializeConfig} from '../config/config.js';
|
|
|
11
11
|
/** @typedef {import('@sentry/node').Breadcrumb} Breadcrumb */
|
|
12
12
|
/** @typedef {import('@sentry/node').NodeClient} NodeClient */
|
|
13
13
|
/** @typedef {import('@sentry/node').NodeOptions} NodeOptions */
|
|
14
|
-
/** @typedef {import('@sentry/node').
|
|
14
|
+
/** @typedef {import('@sentry/node').SeverityLevel} SeverityLevel */
|
|
15
15
|
|
|
16
16
|
const SENTRY_URL = 'https://a6bb0da87ee048cc9ae2a345fc09ab2e:63a7029f46f74265981b7e005e0f69f8@sentry.io/174697';
|
|
17
17
|
|
|
@@ -26,7 +26,7 @@ const noop = () => { };
|
|
|
26
26
|
*/
|
|
27
27
|
const sentryDelegate = {
|
|
28
28
|
init,
|
|
29
|
-
/** @type {(message: string, level?:
|
|
29
|
+
/** @type {(message: string, level?: SeverityLevel) => void} */
|
|
30
30
|
captureMessage: noop,
|
|
31
31
|
/** @type {(breadcrumb: Breadcrumb) => void} */
|
|
32
32
|
captureBreadcrumb: noop,
|
package/core/runner.js
CHANGED
|
@@ -312,10 +312,8 @@ class Runner {
|
|
|
312
312
|
if (!isEqual(normalizedGatherSettings[k], normalizedAuditSettings[k])) {
|
|
313
313
|
throw new Error(
|
|
314
314
|
`Cannot change settings between gathering and auditing…
|
|
315
|
-
Difference found at: \`${k}
|
|
316
|
-
|
|
317
|
-
vs
|
|
318
|
-
${normalizedAuditSettings[k]}`);
|
|
315
|
+
Difference found at: \`${k}\`: ${JSON.stringify(normalizedGatherSettings[k], null, 2)}
|
|
316
|
+
vs: ${JSON.stringify(normalizedAuditSettings[k], null, 2)}`);
|
|
319
317
|
}
|
|
320
318
|
}
|
|
321
319
|
|
|
@@ -451,21 +449,26 @@ vs
|
|
|
451
449
|
* @return {LH.RawIcu<LH.Result['runtimeError']>|undefined}
|
|
452
450
|
*/
|
|
453
451
|
static getArtifactRuntimeError(artifacts) {
|
|
452
|
+
/** @type {Array<[string, LighthouseError|object]>} */
|
|
454
453
|
const possibleErrorArtifacts = [
|
|
455
|
-
artifacts.PageLoadError, // Preferentially use `PageLoadError`, if it exists.
|
|
456
|
-
...Object.
|
|
454
|
+
['PageLoadError', artifacts.PageLoadError], // Preferentially use `PageLoadError`, if it exists.
|
|
455
|
+
...Object.entries(artifacts), // Otherwise check amongst all artifacts.
|
|
457
456
|
];
|
|
458
457
|
|
|
459
|
-
for (const possibleErrorArtifact of possibleErrorArtifacts) {
|
|
458
|
+
for (const [artifactKey, possibleErrorArtifact] of possibleErrorArtifacts) {
|
|
460
459
|
const isError = possibleErrorArtifact instanceof LighthouseError;
|
|
461
460
|
|
|
462
|
-
// eslint-disable-next-line max-len
|
|
463
461
|
if (isError && possibleErrorArtifact.lhrRuntimeError) {
|
|
464
462
|
const errorMessage = possibleErrorArtifact.friendlyMessage || possibleErrorArtifact.message;
|
|
463
|
+
// Prefer the stack trace closest to the error.
|
|
464
|
+
const stack =
|
|
465
|
+
/** @type {any} */ (possibleErrorArtifact.cause)?.stack ?? possibleErrorArtifact.stack;
|
|
465
466
|
|
|
466
467
|
return {
|
|
467
468
|
code: possibleErrorArtifact.code,
|
|
468
469
|
message: errorMessage,
|
|
470
|
+
errorStack: stack,
|
|
471
|
+
artifactKey,
|
|
469
472
|
};
|
|
470
473
|
}
|
|
471
474
|
}
|