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.
Files changed (162) hide show
  1. package/cli/test/smokehouse/core-tests.js +2 -0
  2. package/cli/test/smokehouse/frontends/lib.js +0 -2
  3. package/cli/test/smokehouse/frontends/smokehouse-bin.js +1 -3
  4. package/cli/test/smokehouse/lighthouse-runners/cli.js +1 -1
  5. package/cli/test/smokehouse/smokehouse.js +0 -2
  6. package/core/audits/audit.d.ts +7 -0
  7. package/core/audits/audit.js +17 -2
  8. package/core/audits/byte-efficiency/byte-efficiency-audit.js +6 -8
  9. package/core/audits/byte-efficiency/legacy-javascript.js +0 -1
  10. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
  11. package/core/audits/deprecations.js +0 -2
  12. package/core/audits/insights/cache-insight.js +2 -1
  13. package/core/audits/insights/cls-culprits-insight.js +6 -7
  14. package/core/audits/insights/{interaction-to-next-paint-insight.d.ts → inp-breakdown-insight.d.ts} +3 -3
  15. package/core/audits/insights/{interaction-to-next-paint-insight.js → inp-breakdown-insight.js} +10 -10
  16. package/core/audits/insights/insight-audit.d.ts +7 -4
  17. package/core/audits/insights/insight-audit.js +48 -7
  18. package/core/audits/insights/lcp-breakdown-insight.d.ts +16 -0
  19. package/core/audits/insights/{lcp-phases-insight.js → lcp-breakdown-insight.js} +19 -19
  20. package/core/audits/insights/modern-http-insight.js +0 -2
  21. package/core/audits/insights/network-dependency-tree-insight.js +85 -8
  22. package/core/audits/insights/render-blocking-insight.js +1 -1
  23. package/core/audits/layout-shifts.js +5 -4
  24. package/core/audits/seo/crawlable-anchors.js +27 -0
  25. package/core/audits/seo/link-text.js +130 -83
  26. package/core/audits/third-party-cookies.js +0 -2
  27. package/core/audits/valid-source-maps.js +0 -2
  28. package/core/computed/js-bundles.js +0 -1
  29. package/core/computed/metrics/cumulative-layout-shift.js +1 -1
  30. package/core/computed/metrics/lantern-metric.js +4 -3
  31. package/core/computed/metrics/timing-summary.js +4 -1
  32. package/core/computed/page-dependency-graph.js +3 -3
  33. package/core/computed/trace-engine-result.js +1 -2
  34. package/core/config/config.js +1 -1
  35. package/core/config/default-config.js +4 -4
  36. package/core/config/experimental-config.js +2 -2
  37. package/core/config/filters.js +7 -0
  38. package/core/config/validation.js +4 -0
  39. package/core/gather/base-artifacts.js +3 -0
  40. package/core/gather/driver/environment.d.ts +6 -0
  41. package/core/gather/driver/environment.js +17 -0
  42. package/core/gather/driver/execution-context.d.ts +3 -1
  43. package/core/gather/driver/execution-context.js +3 -1
  44. package/core/gather/driver/navigation.js +1 -3
  45. package/core/gather/driver/wait-for-condition.js +0 -1
  46. package/core/gather/fetcher.js +0 -2
  47. package/core/gather/gatherers/accessibility.js +1 -1
  48. package/core/gather/gatherers/anchor-elements.js +61 -2
  49. package/core/gather/gatherers/cache-contents.js +0 -2
  50. package/core/gather/gatherers/css-usage.js +3 -1
  51. package/core/gather/gatherers/dobetterweb/doctype.js +0 -2
  52. package/core/gather/gatherers/dobetterweb/domstats.js +1 -1
  53. package/core/gather/gatherers/full-page-screenshot.js +1 -1
  54. package/core/gather/gatherers/image-elements.js +1 -1
  55. package/core/gather/gatherers/inspector-issues.js +1 -1
  56. package/core/gather/gatherers/link-elements.js +1 -1
  57. package/core/gather/gatherers/stacks.js +0 -1
  58. package/core/gather/gatherers/stylesheets.js +3 -1
  59. package/core/gather/gatherers/trace-elements.d.ts +3 -4
  60. package/core/gather/gatherers/trace-elements.js +13 -43
  61. package/core/gather/gatherers/viewport-dimensions.js +0 -2
  62. package/core/index.cjs +0 -1
  63. package/core/index.d.cts +5 -0
  64. package/core/lib/asset-saver.d.ts +1 -1
  65. package/core/lib/asset-saver.js +20 -8
  66. package/core/lib/bf-cache-strings.js +4 -1
  67. package/core/lib/deprecations-strings.d.ts +51 -47
  68. package/core/lib/deprecations-strings.js +14 -8
  69. package/core/lib/i18n/i18n.js +0 -2
  70. package/core/lib/lantern-trace-saver.js +1 -1
  71. package/core/lib/lh-error.js +0 -1
  72. package/core/lib/manifest-parser.js +0 -2
  73. package/core/lib/minify-devtoolslog.js +0 -2
  74. package/core/lib/sentry.d.ts +1 -1
  75. package/core/lib/sentry.js +2 -2
  76. package/core/runner.js +11 -8
  77. package/core/scoring.d.ts +186 -15
  78. package/core/scripts/manual-chrome-launcher.js +0 -1
  79. package/dist/report/bundle.esm.js +14 -12
  80. package/dist/report/flow.js +18 -16
  81. package/dist/report/standalone.js +15 -13
  82. package/eslint.config.mjs +242 -0
  83. package/flow-report/src/common.tsx +1 -0
  84. package/flow-report/src/i18n/i18n.tsx +1 -0
  85. package/flow-report/src/util.ts +2 -0
  86. package/package.json +23 -19
  87. package/readme.md +3 -2
  88. package/report/assets/styles.css +11 -9
  89. package/report/assets/templates.html +1 -1
  90. package/report/generator/file-namer.d.ts +5 -0
  91. package/report/generator/file-namer.js +1 -1
  92. package/report/generator/flow-report-assets.js +1 -1
  93. package/report/generator/report-assets.js +1 -1
  94. package/report/generator/report-generator.js +3 -3
  95. package/report/renderer/api.js +1 -0
  96. package/report/renderer/components.js +2 -2
  97. package/report/renderer/details-renderer.d.ts +5 -0
  98. package/report/renderer/details-renderer.js +35 -3
  99. package/report/renderer/dom.d.ts +2 -0
  100. package/report/renderer/dom.js +6 -0
  101. package/report/renderer/i18n-formatter.js +2 -1
  102. package/report/renderer/performance-category-renderer.js +2 -2
  103. package/report/renderer/report-renderer.js +1 -0
  104. package/report/renderer/report-ui-features.d.ts +1 -0
  105. package/report/renderer/report-ui-features.js +16 -0
  106. package/report/renderer/report-utils.js +3 -2
  107. package/report/renderer/text-encoding.js +0 -2
  108. package/report/renderer/topbar-features.js +1 -1
  109. package/report/types/report-renderer.d.ts +5 -0
  110. package/shared/localization/locales/ar-XB.json +57 -69
  111. package/shared/localization/locales/ar.json +57 -69
  112. package/shared/localization/locales/bg.json +57 -69
  113. package/shared/localization/locales/ca.json +57 -69
  114. package/shared/localization/locales/cs.json +57 -69
  115. package/shared/localization/locales/da.json +57 -69
  116. package/shared/localization/locales/de.json +57 -69
  117. package/shared/localization/locales/el.json +57 -69
  118. package/shared/localization/locales/en-GB.json +57 -69
  119. package/shared/localization/locales/en-US.json +73 -61
  120. package/shared/localization/locales/en-XL.json +73 -61
  121. package/shared/localization/locales/es-419.json +57 -69
  122. package/shared/localization/locales/es.json +56 -68
  123. package/shared/localization/locales/fi.json +57 -69
  124. package/shared/localization/locales/fil.json +57 -69
  125. package/shared/localization/locales/fr.json +57 -69
  126. package/shared/localization/locales/he.json +57 -69
  127. package/shared/localization/locales/hi.json +57 -69
  128. package/shared/localization/locales/hr.json +57 -69
  129. package/shared/localization/locales/hu.json +56 -68
  130. package/shared/localization/locales/id.json +57 -69
  131. package/shared/localization/locales/it.json +56 -68
  132. package/shared/localization/locales/ja.json +57 -69
  133. package/shared/localization/locales/ko.json +57 -69
  134. package/shared/localization/locales/lt.json +57 -69
  135. package/shared/localization/locales/lv.json +57 -69
  136. package/shared/localization/locales/nl.json +57 -69
  137. package/shared/localization/locales/no.json +57 -69
  138. package/shared/localization/locales/pl.json +56 -68
  139. package/shared/localization/locales/pt-PT.json +57 -69
  140. package/shared/localization/locales/pt.json +57 -69
  141. package/shared/localization/locales/ro.json +57 -69
  142. package/shared/localization/locales/ru.json +58 -70
  143. package/shared/localization/locales/sk.json +57 -69
  144. package/shared/localization/locales/sl.json +56 -68
  145. package/shared/localization/locales/sr-Latn.json +57 -69
  146. package/shared/localization/locales/sr.json +57 -69
  147. package/shared/localization/locales/sv.json +57 -69
  148. package/shared/localization/locales/ta.json +57 -69
  149. package/shared/localization/locales/te.json +57 -69
  150. package/shared/localization/locales/th.json +56 -68
  151. package/shared/localization/locales/tr.json +57 -69
  152. package/shared/localization/locales/uk.json +57 -69
  153. package/shared/localization/locales/vi.json +57 -69
  154. package/shared/localization/locales/zh-HK.json +57 -69
  155. package/shared/localization/locales/zh-TW.json +56 -68
  156. package/shared/localization/locales/zh.json +57 -69
  157. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -1
  158. package/types/artifacts.d.ts +8 -1
  159. package/types/internal/test.d.ts +1 -1
  160. package/types/lhr/audit-details.d.ts +13 -3
  161. package/types/lhr/lhr.d.ts +8 -1
  162. 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 ChromeLoadTimesConnectionInfo_1 {
80
+ export namespace CharsetAutoDetectionISO2022JP_1 {
80
81
  let chromeStatusFeature_3: number;
81
82
  export { chromeStatusFeature_3 as chromeStatusFeature };
82
83
  }
83
- export { ChromeLoadTimesConnectionInfo_1 as ChromeLoadTimesConnectionInfo };
84
- export namespace ChromeLoadTimesFirstPaintAfterLoadTime_1 {
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 { ChromeLoadTimesFirstPaintAfterLoadTime_1 as ChromeLoadTimesFirstPaintAfterLoadTime };
89
- export namespace ChromeLoadTimesWasAlternateProtocolAvailable_1 {
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 milestone_4: number;
115
- export { milestone_4 as milestone };
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 milestone_5: number;
122
- export { milestone_5 as milestone };
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 milestone_6: number;
139
- export { milestone_6 as milestone };
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 milestone_7: number;
144
- export { milestone_7 as milestone };
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 milestone_8: number;
161
- export { milestone_8 as milestone };
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 milestone_9: number;
171
- export { milestone_9 as milestone };
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 milestone_10: number;
176
- export { milestone_10 as milestone };
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 milestone_11: number;
183
- export { milestone_11 as milestone };
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 milestone_12: number;
200
- export { milestone_12 as milestone };
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 milestone_13: number;
205
- export { milestone_13 as milestone };
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 milestone_14: number;
210
- export { milestone_14 as milestone };
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 milestone_15: number;
217
- export { milestone_15 as milestone };
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 milestone_16: number;
229
- export { milestone_16 as milestone };
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 milestone_17: number;
234
- export { milestone_17 as milestone };
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 milestone_18: number;
241
- export { milestone_18 as milestone };
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 milestone_19: number;
251
- export { milestone_19 as milestone };
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 milestone_20: number;
256
- export { milestone_20 as milestone };
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
  }
@@ -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; // eslint-disable-line prefer-const
156
+ let {startTime, endTime} = timing;
157
157
  if (startTime === endTime) endTime += 0.3;
158
158
 
159
159
  const requestData = {requestId: requestId.toString(), frame};
@@ -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;
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- /* eslint-disable no-console */
8
-
9
7
  /**
10
8
  * @fileoverview Minifies a devtools log by removing noisy header values, eliminating data URIs, etc.
11
9
  */
@@ -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 Severity = import("@sentry/node").Severity;
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
@@ -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').Severity} Severity */
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?: Severity) => void} */
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
- ${normalizedGatherSettings[k]}
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.values(artifacts), // Otherwise check amongst all artifacts.
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
  }