lighthouse 13.2.0 → 13.4.0-dev.20260625

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 (218) hide show
  1. package/.agents/skills/lighthouse-verification/SKILL.md +23 -0
  2. package/cli/cli-flags.d.ts +8 -9
  3. package/cli/cli-flags.js +2 -2
  4. package/cli/test/smokehouse/config/exclusions.js +2 -0
  5. package/cli/test/smokehouse/lighthouse-runners/bundle.js +7 -3
  6. package/cli/test/smokehouse/lighthouse-runners/cli.js +5 -1
  7. package/cli/test/smokehouse/lighthouse-runners/devtools-mcp.js +7 -3
  8. package/cli/test/smokehouse/lighthouse-runners/devtools.js +4 -1
  9. package/cli/test/smokehouse/smokehouse.js +7 -2
  10. package/cli/test/smokehouse/version-check.d.ts +1 -1
  11. package/core/audits/accessibility/accesskeys.js +1 -1
  12. package/core/audits/accessibility/aria-allowed-attr.js +1 -1
  13. package/core/audits/accessibility/aria-allowed-role.js +1 -1
  14. package/core/audits/accessibility/aria-command-name.js +1 -1
  15. package/core/audits/accessibility/aria-conditional-attr.js +1 -1
  16. package/core/audits/accessibility/aria-deprecated-role.js +1 -1
  17. package/core/audits/accessibility/aria-dialog-name.js +1 -1
  18. package/core/audits/accessibility/aria-hidden-body.js +1 -1
  19. package/core/audits/accessibility/aria-hidden-focus.js +1 -1
  20. package/core/audits/accessibility/aria-input-field-name.js +1 -1
  21. package/core/audits/accessibility/aria-meter-name.js +1 -1
  22. package/core/audits/accessibility/aria-progressbar-name.js +1 -1
  23. package/core/audits/accessibility/aria-prohibited-attr.js +1 -1
  24. package/core/audits/accessibility/aria-required-attr.js +1 -1
  25. package/core/audits/accessibility/aria-required-children.js +1 -1
  26. package/core/audits/accessibility/aria-required-parent.js +1 -1
  27. package/core/audits/accessibility/aria-roles.js +1 -1
  28. package/core/audits/accessibility/aria-text.js +1 -1
  29. package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
  30. package/core/audits/accessibility/aria-tooltip-name.js +1 -1
  31. package/core/audits/accessibility/aria-treeitem-name.js +1 -1
  32. package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
  33. package/core/audits/accessibility/aria-valid-attr.js +1 -1
  34. package/core/audits/accessibility/autocomplete-valid.js +1 -1
  35. package/core/audits/accessibility/button-name.js +1 -1
  36. package/core/audits/accessibility/bypass.js +1 -1
  37. package/core/audits/accessibility/color-contrast.js +1 -1
  38. package/core/audits/accessibility/definition-list.js +1 -1
  39. package/core/audits/accessibility/dlitem.js +1 -1
  40. package/core/audits/accessibility/document-title.js +1 -1
  41. package/core/audits/accessibility/duplicate-id-aria.js +1 -1
  42. package/core/audits/accessibility/empty-heading.js +1 -1
  43. package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
  44. package/core/audits/accessibility/frame-title.js +1 -1
  45. package/core/audits/accessibility/heading-order.js +1 -1
  46. package/core/audits/accessibility/html-has-lang.js +1 -1
  47. package/core/audits/accessibility/html-lang-valid.js +1 -1
  48. package/core/audits/accessibility/html-xml-lang-mismatch.js +1 -1
  49. package/core/audits/accessibility/identical-links-same-purpose.js +1 -1
  50. package/core/audits/accessibility/image-alt.js +1 -1
  51. package/core/audits/accessibility/image-redundant-alt.js +1 -1
  52. package/core/audits/accessibility/input-button-name.js +1 -1
  53. package/core/audits/accessibility/input-image-alt.js +1 -1
  54. package/core/audits/accessibility/label-content-name-mismatch.js +1 -1
  55. package/core/audits/accessibility/label.js +1 -1
  56. package/core/audits/accessibility/landmark-one-main.js +1 -1
  57. package/core/audits/accessibility/link-in-text-block.js +1 -1
  58. package/core/audits/accessibility/link-name.js +1 -1
  59. package/core/audits/accessibility/list.js +1 -1
  60. package/core/audits/accessibility/listitem.js +1 -1
  61. package/core/audits/accessibility/meta-refresh.js +1 -1
  62. package/core/audits/accessibility/meta-viewport.js +1 -1
  63. package/core/audits/accessibility/object-alt.js +1 -1
  64. package/core/audits/accessibility/presentation-role-conflict.js +1 -1
  65. package/core/audits/accessibility/select-name.js +1 -1
  66. package/core/audits/accessibility/skip-link.js +1 -1
  67. package/core/audits/accessibility/svg-img-alt.js +1 -1
  68. package/core/audits/accessibility/tabindex.js +1 -1
  69. package/core/audits/accessibility/table-duplicate-name.js +1 -1
  70. package/core/audits/accessibility/table-fake-caption.js +1 -1
  71. package/core/audits/accessibility/target-size.js +1 -1
  72. package/core/audits/accessibility/td-has-header.js +1 -1
  73. package/core/audits/accessibility/td-headers-attr.js +1 -1
  74. package/core/audits/accessibility/th-has-data-cells.js +1 -1
  75. package/core/audits/accessibility/valid-lang.js +1 -1
  76. package/core/audits/accessibility/video-caption.js +1 -1
  77. package/core/audits/agentic/agent-accessibility-tree.js +1 -1
  78. package/core/audits/agentic/llms-txt.d.ts +1 -0
  79. package/core/audits/agentic/llms-txt.js +23 -10
  80. package/core/audits/baseline.js +10 -12
  81. package/core/audits/dobetterweb/geolocation-on-start.js +2 -1
  82. package/core/audits/network-requests.js +2 -0
  83. package/core/audits/seo/canonical.js +19 -7
  84. package/core/audits/seo/robots-txt.d.ts +1 -0
  85. package/core/audits/seo/robots-txt.js +22 -8
  86. package/core/audits/webmcp-form-coverage.js +2 -2
  87. package/core/audits/webmcp-registered-tools.js +1 -1
  88. package/core/audits/webmcp-schema-validity.js +1 -1
  89. package/core/computed/js-bundles.d.ts +1 -1
  90. package/core/computed/load-simulator.d.ts +1 -1
  91. package/core/computed/metrics/first-contentful-paint-all-frames.d.ts +1 -1
  92. package/core/computed/metrics/first-contentful-paint.d.ts +1 -1
  93. package/core/computed/metrics/interactive.d.ts +1 -1
  94. package/core/computed/metrics/lantern-metric.d.ts +6 -6
  95. package/core/computed/metrics/largest-contentful-paint-all-frames.d.ts +1 -1
  96. package/core/computed/metrics/largest-contentful-paint.d.ts +1 -1
  97. package/core/computed/metrics/max-potential-fid.d.ts +1 -1
  98. package/core/computed/metrics/speed-index.d.ts +1 -1
  99. package/core/computed/metrics/time-to-first-byte.d.ts +1 -1
  100. package/core/computed/metrics/total-blocking-time.d.ts +1 -1
  101. package/core/computed/module-duplication.d.ts +1 -1
  102. package/core/computed/page-dependency-graph.d.ts +1 -1
  103. package/core/computed/unused-css.d.ts +1 -1
  104. package/core/config/agentic-browsing-config.d.ts +1 -0
  105. package/core/config/agentic-browsing-config.js +3 -2
  106. package/core/config/config-helpers.d.ts +1 -0
  107. package/core/config/config-helpers.js +1 -1
  108. package/core/config/config-plugin.d.ts +1 -0
  109. package/core/config/config-plugin.js +1 -0
  110. package/core/config/config.d.ts +1 -0
  111. package/core/config/config.js +1 -0
  112. package/core/config/constants.d.ts +1 -0
  113. package/core/config/constants.js +1 -0
  114. package/core/config/default-config.js +45 -0
  115. package/core/config/experimental-config.d.ts +1 -9
  116. package/core/config/experimental-config.js +2 -0
  117. package/core/config/filters.d.ts +1 -0
  118. package/core/config/filters.js +1 -0
  119. package/core/config/full-config.d.ts +1 -5
  120. package/core/config/full-config.js +2 -0
  121. package/core/config/lr-desktop-config.d.ts +1 -0
  122. package/core/config/lr-desktop-config.js +1 -0
  123. package/core/config/lr-mobile-config.d.ts +1 -5
  124. package/core/config/lr-mobile-config.js +2 -0
  125. package/core/config/perf-config.d.ts +1 -5
  126. package/core/config/perf-config.js +2 -0
  127. package/core/config/validation.d.ts +1 -0
  128. package/core/config/validation.js +1 -0
  129. package/core/gather/driver/execution-context.d.ts +23 -0
  130. package/core/gather/driver/execution-context.js +86 -1
  131. package/core/gather/driver/storage.js +13 -0
  132. package/core/gather/driver.d.ts +1 -1
  133. package/core/gather/gatherers/accessibility.js +1 -0
  134. package/core/gather/gatherers/agentic/llms-txt.js +5 -1
  135. package/core/gather/gatherers/seo/robots-txt.js +6 -1
  136. package/core/gather/gatherers/trace-elements.d.ts +4 -1
  137. package/core/gather/gatherers/trace-elements.js +24 -28
  138. package/core/gather/gatherers/webmcp-schema.js +9 -16
  139. package/core/gather/gatherers/webmcp.d.ts +5 -0
  140. package/core/gather/gatherers/webmcp.js +34 -27
  141. package/core/index.d.ts +0 -1
  142. package/core/index.js +0 -1
  143. package/core/lib/baseline/web-features-data.json +1179 -0
  144. package/core/lib/baseline/web-features-metadata.json +1 -1
  145. package/core/lib/deprecations-strings.d.ts +117 -87
  146. package/core/lib/deprecations-strings.js +31 -0
  147. package/core/lib/script-helpers.js +13 -1
  148. package/core/scoring.d.ts +58 -58
  149. package/dist/report/bundle.esm.js +4 -7
  150. package/dist/report/flow.js +6 -9
  151. package/dist/report/standalone.js +20 -12
  152. package/flow-report/types/flow-report.d.ts +2 -2
  153. package/package.json +31 -31
  154. package/report/assets/styles.css +1 -4
  155. package/report/renderer/components.js +1 -1
  156. package/report/renderer/details-renderer.d.ts +6 -1
  157. package/report/renderer/details-renderer.js +11 -3
  158. package/report/renderer/explodey-gauge.js +9 -7
  159. package/report/renderer/i18n-formatter.d.ts +1 -1
  160. package/report/renderer/logger.js +18 -4
  161. package/report/renderer/text-encoding.js +1 -1
  162. package/report/types/html-renderer.d.ts +2 -2
  163. package/shared/localization/locales/ar-XB.json +290 -65
  164. package/shared/localization/locales/ar.json +290 -65
  165. package/shared/localization/locales/bg.json +290 -65
  166. package/shared/localization/locales/ca.json +295 -70
  167. package/shared/localization/locales/cs.json +290 -65
  168. package/shared/localization/locales/da.json +294 -69
  169. package/shared/localization/locales/de.json +295 -70
  170. package/shared/localization/locales/el.json +290 -65
  171. package/shared/localization/locales/en-GB.json +290 -65
  172. package/shared/localization/locales/en-US.json +112 -76
  173. package/shared/localization/locales/en-XA.json +253 -64
  174. package/shared/localization/locales/en-XL.json +112 -76
  175. package/shared/localization/locales/es-419.json +290 -65
  176. package/shared/localization/locales/es.json +298 -73
  177. package/shared/localization/locales/fi.json +290 -65
  178. package/shared/localization/locales/fil.json +290 -65
  179. package/shared/localization/locales/fr.json +294 -69
  180. package/shared/localization/locales/he.json +293 -68
  181. package/shared/localization/locales/hi.json +291 -66
  182. package/shared/localization/locales/hr.json +290 -65
  183. package/shared/localization/locales/hu.json +290 -65
  184. package/shared/localization/locales/id.json +290 -65
  185. package/shared/localization/locales/it.json +294 -69
  186. package/shared/localization/locales/ja.json +290 -65
  187. package/shared/localization/locales/ko.json +290 -65
  188. package/shared/localization/locales/lt.json +290 -65
  189. package/shared/localization/locales/lv.json +290 -65
  190. package/shared/localization/locales/nl.json +290 -65
  191. package/shared/localization/locales/no.json +290 -65
  192. package/shared/localization/locales/pl.json +290 -65
  193. package/shared/localization/locales/pt-PT.json +291 -66
  194. package/shared/localization/locales/pt.json +290 -65
  195. package/shared/localization/locales/ro.json +290 -65
  196. package/shared/localization/locales/ru.json +301 -76
  197. package/shared/localization/locales/sk.json +291 -66
  198. package/shared/localization/locales/sl.json +290 -65
  199. package/shared/localization/locales/sr-Latn.json +290 -65
  200. package/shared/localization/locales/sr.json +290 -65
  201. package/shared/localization/locales/sv.json +297 -72
  202. package/shared/localization/locales/ta.json +291 -66
  203. package/shared/localization/locales/te.json +293 -68
  204. package/shared/localization/locales/th.json +291 -66
  205. package/shared/localization/locales/tr.json +290 -65
  206. package/shared/localization/locales/uk.json +290 -65
  207. package/shared/localization/locales/vi.json +291 -66
  208. package/shared/localization/locales/zh-HK.json +292 -67
  209. package/shared/localization/locales/zh-TW.json +291 -66
  210. package/shared/localization/locales/zh.json +291 -66
  211. package/shared/types/shared.d.ts +1 -1
  212. package/tsconfig-base.json +2 -1
  213. package/tsconfig.json +2 -0
  214. package/types/artifacts.d.ts +1 -1
  215. package/types/internal/rxjs.d.ts +1 -1
  216. package/types/internal/smokehouse.d.ts +8 -2
  217. package/types.d.ts +2 -0
  218. package/types.js +11 -0
@@ -1,3 +1,3 @@
1
1
  {
2
- "date": "2026-03-18"
2
+ "date": "2026-06-19"
3
3
  }
@@ -11,6 +11,7 @@ export namespace UIStrings {
11
11
  let CSSSelectorInternalMediaControlsOverlayCastButton: string;
12
12
  let CSSValueAppearanceSliderVertical: string;
13
13
  let DataUrlInSvgUse: string;
14
+ let DigitalCredentialsUnknownProtocol: string;
14
15
  let DocumentCreateEventKeyboardEvents: string;
15
16
  let DocumentCreateEventTransitionEvent: string;
16
17
  let ExampleBrowserProcessDeprecation: string;
@@ -50,6 +51,7 @@ export namespace UIStrings {
50
51
  let PrefixedVideoExitFullScreen: string;
51
52
  let PrefixedVideoExitFullscreen: string;
52
53
  let PrefixedVideoSupportsFullscreen: string;
54
+ let PreventSvgFilterPaint: string;
53
55
  let RangeExpand: string;
54
56
  let RelatedWebsiteSets: string;
55
57
  let RequestedSubresourceWithEmbeddedCredentials: string;
@@ -65,6 +67,8 @@ export namespace UIStrings {
65
67
  let UnloadHandler: string;
66
68
  let V8SharedArrayBufferConstructedInExtensionWithoutIsolation: string;
67
69
  let WebBluetoothRemoteCharacteristicWriteValue: string;
70
+ let WebTransportDatagramDuplexStreamIncomingHighWaterMark: string;
71
+ let WebTransportDatagramDuplexStreamOutgoingHighWaterMark: string;
68
72
  let XHRJSONEncodingDetection: string;
69
73
  let XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: string;
70
74
  let XSLT: string;
@@ -120,204 +124,230 @@ export namespace DEPRECATIONS_METADATA {
120
124
  export { milestone_2 as milestone };
121
125
  }
122
126
  export { DataUrlInSvgUse_1 as DataUrlInSvgUse };
123
- export namespace DocumentCreateEventKeyboardEvents_1 {
127
+ export namespace DigitalCredentialsUnknownProtocol_1 {
124
128
  let chromeStatusFeature_8: number;
125
129
  export { chromeStatusFeature_8 as chromeStatusFeature };
126
130
  let milestone_3: number;
127
131
  export { milestone_3 as milestone };
128
132
  }
129
- export { DocumentCreateEventKeyboardEvents_1 as DocumentCreateEventKeyboardEvents };
130
- export namespace DocumentCreateEventTransitionEvent_1 {
133
+ export { DigitalCredentialsUnknownProtocol_1 as DigitalCredentialsUnknownProtocol };
134
+ export namespace DocumentCreateEventKeyboardEvents_1 {
131
135
  let chromeStatusFeature_9: number;
132
136
  export { chromeStatusFeature_9 as chromeStatusFeature };
133
137
  let milestone_4: number;
134
138
  export { milestone_4 as milestone };
135
139
  }
136
- export { DocumentCreateEventTransitionEvent_1 as DocumentCreateEventTransitionEvent };
137
- export namespace IdentityInCanMakePaymentEvent_1 {
140
+ export { DocumentCreateEventKeyboardEvents_1 as DocumentCreateEventKeyboardEvents };
141
+ export namespace DocumentCreateEventTransitionEvent_1 {
138
142
  let chromeStatusFeature_10: number;
139
143
  export { chromeStatusFeature_10 as chromeStatusFeature };
144
+ let milestone_5: number;
145
+ export { milestone_5 as milestone };
140
146
  }
141
- export { IdentityInCanMakePaymentEvent_1 as IdentityInCanMakePaymentEvent };
142
- export namespace InsecurePrivateNetworkSubresourceRequest_1 {
147
+ export { DocumentCreateEventTransitionEvent_1 as DocumentCreateEventTransitionEvent };
148
+ export namespace IdentityInCanMakePaymentEvent_1 {
143
149
  let chromeStatusFeature_11: number;
144
150
  export { chromeStatusFeature_11 as chromeStatusFeature };
145
- let milestone_5: number;
146
- export { milestone_5 as milestone };
147
151
  }
148
- export { InsecurePrivateNetworkSubresourceRequest_1 as InsecurePrivateNetworkSubresourceRequest };
149
- export namespace LanguageModelParams_1 {
152
+ export { IdentityInCanMakePaymentEvent_1 as IdentityInCanMakePaymentEvent };
153
+ export namespace InsecurePrivateNetworkSubresourceRequest_1 {
150
154
  let chromeStatusFeature_12: number;
151
155
  export { chromeStatusFeature_12 as chromeStatusFeature };
156
+ let milestone_6: number;
157
+ export { milestone_6 as milestone };
152
158
  }
153
- export { LanguageModelParams_1 as LanguageModelParams };
154
- export namespace LanguageModelTemperature_1 {
159
+ export { InsecurePrivateNetworkSubresourceRequest_1 as InsecurePrivateNetworkSubresourceRequest };
160
+ export namespace LanguageModelParams_1 {
155
161
  let chromeStatusFeature_13: number;
156
162
  export { chromeStatusFeature_13 as chromeStatusFeature };
157
163
  }
158
- export { LanguageModelTemperature_1 as LanguageModelTemperature };
159
- export namespace LanguageModelTopK_1 {
164
+ export { LanguageModelParams_1 as LanguageModelParams };
165
+ export namespace LanguageModelTemperature_1 {
160
166
  let chromeStatusFeature_14: number;
161
167
  export { chromeStatusFeature_14 as chromeStatusFeature };
162
168
  }
163
- export { LanguageModelTopK_1 as LanguageModelTopK };
164
- export namespace LanguageModel_InputQuota_1 {
169
+ export { LanguageModelTemperature_1 as LanguageModelTemperature };
170
+ export namespace LanguageModelTopK_1 {
165
171
  let chromeStatusFeature_15: number;
166
172
  export { chromeStatusFeature_15 as chromeStatusFeature };
167
173
  }
168
- export { LanguageModel_InputQuota_1 as LanguageModel_InputQuota };
169
- export namespace LanguageModel_InputUsage_1 {
174
+ export { LanguageModelTopK_1 as LanguageModelTopK };
175
+ export namespace LanguageModel_InputQuota_1 {
170
176
  let chromeStatusFeature_16: number;
171
177
  export { chromeStatusFeature_16 as chromeStatusFeature };
172
178
  }
173
- export { LanguageModel_InputUsage_1 as LanguageModel_InputUsage };
174
- export namespace LanguageModel_MeasureInputUsage_1 {
179
+ export { LanguageModel_InputQuota_1 as LanguageModel_InputQuota };
180
+ export namespace LanguageModel_InputUsage_1 {
175
181
  let chromeStatusFeature_17: number;
176
182
  export { chromeStatusFeature_17 as chromeStatusFeature };
177
183
  }
178
- export { LanguageModel_MeasureInputUsage_1 as LanguageModel_MeasureInputUsage };
179
- export namespace LanguageModel_OnQuotaOverflow_1 {
184
+ export { LanguageModel_InputUsage_1 as LanguageModel_InputUsage };
185
+ export namespace LanguageModel_MeasureInputUsage_1 {
180
186
  let chromeStatusFeature_18: number;
181
187
  export { chromeStatusFeature_18 as chromeStatusFeature };
182
188
  }
189
+ export { LanguageModel_MeasureInputUsage_1 as LanguageModel_MeasureInputUsage };
190
+ export namespace LanguageModel_OnQuotaOverflow_1 {
191
+ let chromeStatusFeature_19: number;
192
+ export { chromeStatusFeature_19 as chromeStatusFeature };
193
+ }
183
194
  export { LanguageModel_OnQuotaOverflow_1 as LanguageModel_OnQuotaOverflow };
184
195
  export namespace LocalCSSFileExtensionRejected_1 {
185
- let milestone_6: number;
186
- export { milestone_6 as milestone };
196
+ let milestone_7: number;
197
+ export { milestone_7 as milestone };
187
198
  }
188
199
  export { LocalCSSFileExtensionRejected_1 as LocalCSSFileExtensionRejected };
189
200
  export namespace NoSysexWebMIDIWithoutPermission_1 {
190
- let chromeStatusFeature_19: number;
191
- export { chromeStatusFeature_19 as chromeStatusFeature };
192
- let milestone_7: number;
193
- export { milestone_7 as milestone };
201
+ let chromeStatusFeature_20: number;
202
+ export { chromeStatusFeature_20 as chromeStatusFeature };
203
+ let milestone_8: number;
204
+ export { milestone_8 as milestone };
194
205
  }
195
206
  export { NoSysexWebMIDIWithoutPermission_1 as NoSysexWebMIDIWithoutPermission };
196
207
  export namespace NotificationPermissionRequestedIframe_1 {
197
- let chromeStatusFeature_20: number;
198
- export { chromeStatusFeature_20 as chromeStatusFeature };
208
+ let chromeStatusFeature_21: number;
209
+ export { chromeStatusFeature_21 as chromeStatusFeature };
199
210
  }
200
211
  export { NotificationPermissionRequestedIframe_1 as NotificationPermissionRequestedIframe };
201
212
  export namespace ObsoleteCreateImageBitmapImageOrientationNone_1 {
202
- let milestone_8: number;
203
- export { milestone_8 as milestone };
213
+ let milestone_9: number;
214
+ export { milestone_9 as milestone };
204
215
  }
205
216
  export { ObsoleteCreateImageBitmapImageOrientationNone_1 as ObsoleteCreateImageBitmapImageOrientationNone };
206
217
  export namespace ObsoleteWebRtcCipherSuite_1 {
207
- let milestone_9: number;
208
- export { milestone_9 as milestone };
218
+ let milestone_10: number;
219
+ export { milestone_10 as milestone };
209
220
  }
210
221
  export { ObsoleteWebRtcCipherSuite_1 as ObsoleteWebRtcCipherSuite };
211
222
  export namespace OverflowVisibleOnReplacedElement_1 {
212
- let chromeStatusFeature_21: number;
213
- export { chromeStatusFeature_21 as chromeStatusFeature };
214
- let milestone_10: number;
215
- export { milestone_10 as milestone };
223
+ let chromeStatusFeature_22: number;
224
+ export { chromeStatusFeature_22 as chromeStatusFeature };
225
+ let milestone_11: number;
226
+ export { milestone_11 as milestone };
216
227
  }
217
228
  export { OverflowVisibleOnReplacedElement_1 as OverflowVisibleOnReplacedElement };
218
229
  export namespace OverrideFlashEmbedwithHTML_1 {
219
- let milestone_11: number;
220
- export { milestone_11 as milestone };
230
+ let milestone_12: number;
231
+ export { milestone_12 as milestone };
221
232
  }
222
233
  export { OverrideFlashEmbedwithHTML_1 as OverrideFlashEmbedwithHTML };
223
234
  export namespace PaymentInstruments_1 {
224
- let chromeStatusFeature_22: number;
225
- export { chromeStatusFeature_22 as chromeStatusFeature };
235
+ let chromeStatusFeature_23: number;
236
+ export { chromeStatusFeature_23 as chromeStatusFeature };
226
237
  }
227
238
  export { PaymentInstruments_1 as PaymentInstruments };
228
239
  export namespace PaymentRequestCSPViolation_1 {
229
- let chromeStatusFeature_23: number;
230
- export { chromeStatusFeature_23 as chromeStatusFeature };
240
+ let chromeStatusFeature_24: number;
241
+ export { chromeStatusFeature_24 as chromeStatusFeature };
231
242
  }
232
243
  export { PaymentRequestCSPViolation_1 as PaymentRequestCSPViolation };
233
244
  export namespace PersistentQuotaType_1 {
234
- let chromeStatusFeature_24: number;
235
- export { chromeStatusFeature_24 as chromeStatusFeature };
236
- let milestone_12: number;
237
- export { milestone_12 as milestone };
245
+ let chromeStatusFeature_25: number;
246
+ export { chromeStatusFeature_25 as chromeStatusFeature };
247
+ let milestone_13: number;
248
+ export { milestone_13 as milestone };
238
249
  }
239
250
  export { PersistentQuotaType_1 as PersistentQuotaType };
251
+ export namespace PreventSvgFilterPaint_1 {
252
+ let chromeStatusFeature_26: number;
253
+ export { chromeStatusFeature_26 as chromeStatusFeature };
254
+ }
255
+ export { PreventSvgFilterPaint_1 as PreventSvgFilterPaint };
240
256
  export namespace RTCConstraintEnableDtlsSrtpFalse_1 {
241
- let milestone_13: number;
242
- export { milestone_13 as milestone };
257
+ let milestone_14: number;
258
+ export { milestone_14 as milestone };
243
259
  }
244
260
  export { RTCConstraintEnableDtlsSrtpFalse_1 as RTCConstraintEnableDtlsSrtpFalse };
245
261
  export namespace RTCConstraintEnableDtlsSrtpTrue_1 {
246
- let milestone_14: number;
247
- export { milestone_14 as milestone };
262
+ let milestone_15: number;
263
+ export { milestone_15 as milestone };
248
264
  }
249
265
  export { RTCConstraintEnableDtlsSrtpTrue_1 as RTCConstraintEnableDtlsSrtpTrue };
250
266
  export namespace RTCPeerConnectionGetStatsLegacyNonCompliant_1 {
251
- let chromeStatusFeature_25: number;
252
- export { chromeStatusFeature_25 as chromeStatusFeature };
253
- let milestone_15: number;
254
- export { milestone_15 as milestone };
267
+ let chromeStatusFeature_27: number;
268
+ export { chromeStatusFeature_27 as chromeStatusFeature };
269
+ let milestone_16: number;
270
+ export { milestone_16 as milestone };
255
271
  }
256
272
  export { RTCPeerConnectionGetStatsLegacyNonCompliant_1 as RTCPeerConnectionGetStatsLegacyNonCompliant };
257
273
  export namespace RelatedWebsiteSets_1 {
258
- let chromeStatusFeature_26: number;
259
- export { chromeStatusFeature_26 as chromeStatusFeature };
274
+ let chromeStatusFeature_28: number;
275
+ export { chromeStatusFeature_28 as chromeStatusFeature };
260
276
  }
261
277
  export { RelatedWebsiteSets_1 as RelatedWebsiteSets };
262
278
  export namespace RequestedSubresourceWithEmbeddedCredentials_1 {
263
- let chromeStatusFeature_27: number;
264
- export { chromeStatusFeature_27 as chromeStatusFeature };
279
+ let chromeStatusFeature_29: number;
280
+ export { chromeStatusFeature_29 as chromeStatusFeature };
265
281
  }
266
282
  export { RequestedSubresourceWithEmbeddedCredentials_1 as RequestedSubresourceWithEmbeddedCredentials };
267
283
  export namespace RtcpMuxPolicyNegotiate_1 {
268
- let chromeStatusFeature_28: number;
269
- export { chromeStatusFeature_28 as chromeStatusFeature };
270
- let milestone_16: number;
271
- export { milestone_16 as milestone };
284
+ let chromeStatusFeature_30: number;
285
+ export { chromeStatusFeature_30 as chromeStatusFeature };
286
+ let milestone_17: number;
287
+ export { milestone_17 as milestone };
272
288
  }
273
289
  export { RtcpMuxPolicyNegotiate_1 as RtcpMuxPolicyNegotiate };
274
290
  export namespace SharedArrayBufferConstructedWithoutIsolation_1 {
275
- let milestone_17: number;
276
- export { milestone_17 as milestone };
291
+ let milestone_18: number;
292
+ export { milestone_18 as milestone };
277
293
  }
278
294
  export { SharedArrayBufferConstructedWithoutIsolation_1 as SharedArrayBufferConstructedWithoutIsolation };
279
295
  export namespace SharedStorage_1 {
280
- let chromeStatusFeature_29: number;
281
- export { chromeStatusFeature_29 as chromeStatusFeature };
296
+ let chromeStatusFeature_31: number;
297
+ export { chromeStatusFeature_31 as chromeStatusFeature };
282
298
  }
283
299
  export { SharedStorage_1 as SharedStorage };
284
300
  export namespace StorageAccessAPI_requestStorageAccessFor_Method_1 {
285
- let chromeStatusFeature_30: number;
286
- export { chromeStatusFeature_30 as chromeStatusFeature };
301
+ let chromeStatusFeature_32: number;
302
+ export { chromeStatusFeature_32 as chromeStatusFeature };
287
303
  }
288
304
  export { StorageAccessAPI_requestStorageAccessFor_Method_1 as StorageAccessAPI_requestStorageAccessFor_Method };
289
305
  export namespace TextToSpeech_DisallowedByAutoplay_1 {
290
- let chromeStatusFeature_31: number;
291
- export { chromeStatusFeature_31 as chromeStatusFeature };
292
- let milestone_18: number;
293
- export { milestone_18 as milestone };
306
+ let chromeStatusFeature_33: number;
307
+ export { chromeStatusFeature_33 as chromeStatusFeature };
308
+ let milestone_19: number;
309
+ export { milestone_19 as milestone };
294
310
  }
295
311
  export { TextToSpeech_DisallowedByAutoplay_1 as TextToSpeech_DisallowedByAutoplay };
296
312
  export namespace UnloadHandler_1 {
297
- let chromeStatusFeature_32: number;
298
- export { chromeStatusFeature_32 as chromeStatusFeature };
313
+ let chromeStatusFeature_34: number;
314
+ export { chromeStatusFeature_34 as chromeStatusFeature };
299
315
  }
300
316
  export { UnloadHandler_1 as UnloadHandler };
301
317
  export namespace V8SharedArrayBufferConstructedInExtensionWithoutIsolation_1 {
302
- let milestone_19: number;
303
- export { milestone_19 as milestone };
318
+ let milestone_20: number;
319
+ export { milestone_20 as milestone };
304
320
  }
305
321
  export { V8SharedArrayBufferConstructedInExtensionWithoutIsolation_1 as V8SharedArrayBufferConstructedInExtensionWithoutIsolation };
306
322
  export namespace WebBluetoothRemoteCharacteristicWriteValue_1 {
307
- let chromeStatusFeature_33: number;
308
- export { chromeStatusFeature_33 as chromeStatusFeature };
323
+ let chromeStatusFeature_35: number;
324
+ export { chromeStatusFeature_35 as chromeStatusFeature };
309
325
  }
310
326
  export { WebBluetoothRemoteCharacteristicWriteValue_1 as WebBluetoothRemoteCharacteristicWriteValue };
327
+ export namespace WebTransportDatagramDuplexStreamIncomingHighWaterMark_1 {
328
+ let chromeStatusFeature_36: number;
329
+ export { chromeStatusFeature_36 as chromeStatusFeature };
330
+ let milestone_21: number;
331
+ export { milestone_21 as milestone };
332
+ }
333
+ export { WebTransportDatagramDuplexStreamIncomingHighWaterMark_1 as WebTransportDatagramDuplexStreamIncomingHighWaterMark };
334
+ export namespace WebTransportDatagramDuplexStreamOutgoingHighWaterMark_1 {
335
+ let chromeStatusFeature_37: number;
336
+ export { chromeStatusFeature_37 as chromeStatusFeature };
337
+ let milestone_22: number;
338
+ export { milestone_22 as milestone };
339
+ }
340
+ export { WebTransportDatagramDuplexStreamOutgoingHighWaterMark_1 as WebTransportDatagramDuplexStreamOutgoingHighWaterMark };
311
341
  export namespace XHRJSONEncodingDetection_1 {
312
- let milestone_20: number;
313
- export { milestone_20 as milestone };
342
+ let milestone_23: number;
343
+ export { milestone_23 as milestone };
314
344
  }
315
345
  export { XHRJSONEncodingDetection_1 as XHRJSONEncodingDetection };
316
346
  export namespace XSLT_1 {
317
- let chromeStatusFeature_34: number;
318
- export { chromeStatusFeature_34 as chromeStatusFeature };
319
- let milestone_21: number;
320
- export { milestone_21 as milestone };
347
+ let chromeStatusFeature_38: number;
348
+ export { chromeStatusFeature_38 as chromeStatusFeature };
349
+ let milestone_24: number;
350
+ export { milestone_24 as milestone };
321
351
  }
322
352
  export { XSLT_1 as XSLT };
323
353
  }
@@ -56,6 +56,10 @@ export const UIStrings = {
56
56
  * @description Warning displayed to developers when a data: URL is assigned to SVGUseElement to let them know that the support is deprecated.
57
57
  */
58
58
  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 an unknown protocol string is used in a call to navigator.credentials.get() or create() with the 'digital' option.
61
+ */
62
+ DigitalCredentialsUnknownProtocol: "An unknown Digital Credentials protocol was requested in navigator.credentials.get() or create(). In a future release, unrecognized protocols will be blocked.",
59
63
  /**
60
64
  * @description Warning displayed to developers when document.createEvent() is called with 'KeyboardEvents', which is a non-standard event interface that will be removed.
61
65
  */
@@ -212,6 +216,10 @@ export const UIStrings = {
212
216
  * @description Standard message when one web API is deprecated in favor of another.
213
217
  */
214
218
  PrefixedVideoSupportsFullscreen: "HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead.",
219
+ /**
220
+ * @description Warning displayed to developers when an SVG filter is applied to a disallowed content type.
221
+ */
222
+ PreventSvgFilterPaint: "SVG filters cannot be applied to cross-origin iframes, restricted iframes (e.g., sandboxed), or plugins.",
215
223
  /**
216
224
  * @description Standard message when one web API is deprecated in favor of another.
217
225
  */
@@ -272,6 +280,14 @@ export const UIStrings = {
272
280
  * @description This warning occurs when the deprecated `BluetoothRemoteGATTCharacteristic.writeValue()` method is used. Developers should use `writeValueWithResponse()` or `writeValueWithoutResponse()` instead.
273
281
  */
274
282
  WebBluetoothRemoteCharacteristicWriteValue: "`BluetoothRemoteGATTCharacteristic.writeValue()` is deprecated. Use `writeValueWithResponse()` or `writeValueWithoutResponse()` instead.",
283
+ /**
284
+ * @description Warning for using the deprecated 'incomingHighWaterMark' attribute on WebTransportDatagramDuplexStream. Developers should use 'incomingMaxBufferedDatagrams' instead.
285
+ */
286
+ WebTransportDatagramDuplexStreamIncomingHighWaterMark: "WebTransportDatagramDuplexStream.incomingHighWaterMark has been renamed to incomingMaxBufferedDatagrams. incomingHighWaterMark will be removed in a future version of Chrome.",
287
+ /**
288
+ * @description Warning for using the deprecated 'outgoingHighWaterMark' attribute on WebTransportDatagramDuplexStream. Developers should use 'outgoingMaxBufferedDatagrams' instead.
289
+ */
290
+ WebTransportDatagramDuplexStreamOutgoingHighWaterMark: "WebTransportDatagramDuplexStream.outgoingHighWaterMark has been renamed to outgoingMaxBufferedDatagrams. outgoingHighWaterMark will be removed in a future version of Chrome.",
275
291
  /**
276
292
  * @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.
277
293
  */
@@ -322,6 +338,10 @@ export const DEPRECATIONS_METADATA = {
322
338
  "chromeStatusFeature": 5128825141198848,
323
339
  "milestone": 119
324
340
  },
341
+ "DigitalCredentialsUnknownProtocol": {
342
+ "chromeStatusFeature": 6492906882990080,
343
+ "milestone": 160
344
+ },
325
345
  "DocumentCreateEventKeyboardEvents": {
326
346
  "chromeStatusFeature": 5095987863486464,
327
347
  "milestone": 151
@@ -391,6 +411,9 @@ export const DEPRECATIONS_METADATA = {
391
411
  "chromeStatusFeature": 5176235376246784,
392
412
  "milestone": 106
393
413
  },
414
+ "PreventSvgFilterPaint": {
415
+ "chromeStatusFeature": 5117170452398080
416
+ },
394
417
  "RTCConstraintEnableDtlsSrtpFalse": {
395
418
  "milestone": 97
396
419
  },
@@ -433,6 +456,14 @@ export const DEPRECATIONS_METADATA = {
433
456
  "WebBluetoothRemoteCharacteristicWriteValue": {
434
457
  "chromeStatusFeature": 5088568590598144
435
458
  },
459
+ "WebTransportDatagramDuplexStreamIncomingHighWaterMark": {
460
+ "chromeStatusFeature": 5143839699501056,
461
+ "milestone": 156
462
+ },
463
+ "WebTransportDatagramDuplexStreamOutgoingHighWaterMark": {
464
+ "chromeStatusFeature": 5143839699501056,
465
+ "milestone": 156
466
+ },
436
467
  "XHRJSONEncodingDetection": {
437
468
  "milestone": 93
438
469
  },
@@ -20,7 +20,19 @@ function isInline(script) {
20
20
  * @return {LH.Artifacts.NetworkRequest|undefined}
21
21
  */
22
22
  function getRequestForScript(networkRecords, script) {
23
- let networkRequest = networkRecords.find(request => request.url === script.url);
23
+ const frameId = script.executionContextAuxData?.frameId;
24
+ let networkRequest;
25
+
26
+ if (frameId) {
27
+ networkRequest = networkRecords.find(
28
+ request => request.url === script.url && request.frameId === frameId
29
+ );
30
+ }
31
+
32
+ if (!networkRequest) {
33
+ networkRequest = networkRecords.find(request => request.url === script.url);
34
+ }
35
+
24
36
  while (networkRequest?.redirectDestination) {
25
37
  networkRequest = networkRequest.redirectDestination;
26
38
  }
package/core/scoring.d.ts CHANGED
@@ -173,9 +173,6 @@ export class ReportScoring {
173
173
  } | {
174
174
  type: "text";
175
175
  value: import("./index.js").IcuMessage | string;
176
- } | {
177
- type: "subitems";
178
- items: /*elided*/ any[];
179
176
  } | {
180
177
  type: "source-location";
181
178
  url: string | import("./index.js").IcuMessage;
@@ -202,6 +199,9 @@ export class ReportScoring {
202
199
  type: "numeric";
203
200
  value: number;
204
201
  granularity?: number | undefined;
202
+ } | {
203
+ type: "subitems";
204
+ items: /*elided*/ any[];
205
205
  } | {
206
206
  type: "baseline-status";
207
207
  status: string | import("./index.js").IcuMessage;
@@ -227,25 +227,6 @@ export class ReportScoring {
227
227
  [x: string]: any;
228
228
  type: "debugdata";
229
229
  } | undefined;
230
- } | {
231
- type: "node";
232
- lhId?: string | import("./index.js").IcuMessage | undefined;
233
- path?: string | import("./index.js").IcuMessage | undefined;
234
- selector?: string | import("./index.js").IcuMessage | undefined;
235
- boundingRect?: {
236
- width: number;
237
- height: number;
238
- top: number;
239
- right: number;
240
- bottom: number;
241
- left: number;
242
- } | undefined;
243
- snippet?: string | import("./index.js").IcuMessage | undefined;
244
- nodeLabel?: string | import("./index.js").IcuMessage | undefined;
245
- explanation?: string | import("./index.js").IcuMessage | undefined;
246
- } | {
247
- type: "text";
248
- value: import("./index.js").IcuMessage | string;
249
230
  } | {
250
231
  type: "list-section";
251
232
  title?: (import("./index.js").IcuMessage | string) | undefined;
@@ -321,9 +302,6 @@ export class ReportScoring {
321
302
  } | {
322
303
  type: "text";
323
304
  value: import("./index.js").IcuMessage | string;
324
- } | {
325
- type: "subitems";
326
- items: /*elided*/ any[];
327
305
  } | {
328
306
  type: "source-location";
329
307
  url: string | import("./index.js").IcuMessage;
@@ -350,6 +328,9 @@ export class ReportScoring {
350
328
  type: "numeric";
351
329
  value: number;
352
330
  granularity?: number | undefined;
331
+ } | {
332
+ type: "subitems";
333
+ items: /*elided*/ any[];
353
334
  } | {
354
335
  type: "baseline-status";
355
336
  status: string | import("./index.js").IcuMessage;
@@ -395,6 +376,25 @@ export class ReportScoring {
395
376
  type: "text";
396
377
  value: import("./index.js").IcuMessage | string;
397
378
  };
379
+ } | {
380
+ type: "node";
381
+ lhId?: string | import("./index.js").IcuMessage | undefined;
382
+ path?: string | import("./index.js").IcuMessage | undefined;
383
+ selector?: string | import("./index.js").IcuMessage | undefined;
384
+ boundingRect?: {
385
+ width: number;
386
+ height: number;
387
+ top: number;
388
+ right: number;
389
+ bottom: number;
390
+ left: number;
391
+ } | undefined;
392
+ snippet?: string | import("./index.js").IcuMessage | undefined;
393
+ nodeLabel?: string | import("./index.js").IcuMessage | undefined;
394
+ explanation?: string | import("./index.js").IcuMessage | undefined;
395
+ } | {
396
+ type: "text";
397
+ value: import("./index.js").IcuMessage | string;
398
398
  })[];
399
399
  debugData?: {
400
400
  [x: string]: any;
@@ -438,6 +438,32 @@ export class ReportScoring {
438
438
  } | {
439
439
  type: "text";
440
440
  value: import("./index.js").IcuMessage | string;
441
+ } | {
442
+ type: "source-location";
443
+ url: string | import("./index.js").IcuMessage;
444
+ urlProvider: "network" | "comment";
445
+ line: number;
446
+ column: number;
447
+ original?: {
448
+ file: string | import("./index.js").IcuMessage;
449
+ line: number;
450
+ column: number;
451
+ } | undefined;
452
+ functionName?: string | import("./index.js").IcuMessage | undefined;
453
+ } | {
454
+ type: "link";
455
+ text: string | import("./index.js").IcuMessage;
456
+ url: string | import("./index.js").IcuMessage;
457
+ } | {
458
+ type: "url";
459
+ value: string | import("./index.js").IcuMessage;
460
+ } | {
461
+ type: "code";
462
+ value: import("./index.js").IcuMessage | string;
463
+ } | {
464
+ type: "numeric";
465
+ value: number;
466
+ granularity?: number | undefined;
441
467
  } | {
442
468
  type: "subitems";
443
469
  items: {
@@ -463,7 +489,7 @@ export class ReportScoring {
463
489
  } | {
464
490
  type: "text";
465
491
  value: import("./index.js").IcuMessage | string;
466
- } | /*elided*/ any | {
492
+ } | {
467
493
  type: "source-location";
468
494
  url: string | import("./index.js").IcuMessage;
469
495
  urlProvider: "network" | "comment";
@@ -489,7 +515,7 @@ export class ReportScoring {
489
515
  type: "numeric";
490
516
  value: number;
491
517
  granularity?: number | undefined;
492
- } | {
518
+ } | /*elided*/ any | {
493
519
  type: "baseline-status";
494
520
  status: string | import("./index.js").IcuMessage;
495
521
  displayString: import("./index.js").IcuMessage | string;
@@ -500,32 +526,6 @@ export class ReportScoring {
500
526
  } | undefined;
501
527
  subItems?: /*elided*/ any | undefined;
502
528
  }[];
503
- } | {
504
- type: "source-location";
505
- url: string | import("./index.js").IcuMessage;
506
- urlProvider: "network" | "comment";
507
- line: number;
508
- column: number;
509
- original?: {
510
- file: string | import("./index.js").IcuMessage;
511
- line: number;
512
- column: number;
513
- } | undefined;
514
- functionName?: string | import("./index.js").IcuMessage | undefined;
515
- } | {
516
- type: "link";
517
- text: string | import("./index.js").IcuMessage;
518
- url: string | import("./index.js").IcuMessage;
519
- } | {
520
- type: "url";
521
- value: string | import("./index.js").IcuMessage;
522
- } | {
523
- type: "code";
524
- value: import("./index.js").IcuMessage | string;
525
- } | {
526
- type: "numeric";
527
- value: number;
528
- granularity?: number | undefined;
529
529
  } | {
530
530
  type: "baseline-status";
531
531
  status: string | import("./index.js").IcuMessage;
@@ -564,7 +564,7 @@ export class ReportScoring {
564
564
  } | {
565
565
  type: "text";
566
566
  value: import("./index.js").IcuMessage | string;
567
- } | /*elided*/ any | {
567
+ } | {
568
568
  type: "source-location";
569
569
  url: string | import("./index.js").IcuMessage;
570
570
  urlProvider: "network" | "comment";
@@ -590,7 +590,7 @@ export class ReportScoring {
590
590
  type: "numeric";
591
591
  value: number;
592
592
  granularity?: number | undefined;
593
- } | {
593
+ } | /*elided*/ any | {
594
594
  type: "baseline-status";
595
595
  status: string | import("./index.js").IcuMessage;
596
596
  displayString: import("./index.js").IcuMessage | string;
@@ -671,9 +671,6 @@ export class ReportScoring {
671
671
  } | {
672
672
  type: "text";
673
673
  value: import("./index.js").IcuMessage | string;
674
- } | {
675
- type: "subitems";
676
- items: /*elided*/ any[];
677
674
  } | {
678
675
  type: "source-location";
679
676
  url: string | import("./index.js").IcuMessage;
@@ -700,6 +697,9 @@ export class ReportScoring {
700
697
  type: "numeric";
701
698
  value: number;
702
699
  granularity?: number | undefined;
700
+ } | {
701
+ type: "subitems";
702
+ items: /*elided*/ any[];
703
703
  } | {
704
704
  type: "baseline-status";
705
705
  status: string | import("./index.js").IcuMessage;