lighthouse 10.4.0 → 11.0.0

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 (288) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/cli/cli-flags.d.ts +1 -6
  3. package/cli/cli-flags.js +0 -5
  4. package/cli/run.js +3 -10
  5. package/cli/sentry-prompt.js +4 -2
  6. package/cli/test/smokehouse/core-tests.js +0 -2
  7. package/cli/test/smokehouse/frontends/smokehouse-bin.js +24 -14
  8. package/cli/test/smokehouse/lighthouse-runners/bundle.d.ts +1 -2
  9. package/cli/test/smokehouse/lighthouse-runners/bundle.js +12 -21
  10. package/cli/test/smokehouse/lighthouse-runners/cli.d.ts +1 -3
  11. package/cli/test/smokehouse/lighthouse-runners/cli.js +3 -7
  12. package/cli/test/smokehouse/lighthouse-runners/devtools.d.ts +1 -5
  13. package/cli/test/smokehouse/lighthouse-runners/devtools.js +1 -12
  14. package/cli/test/smokehouse/readme.md +0 -2
  15. package/cli/test/smokehouse/report-assert.d.ts +1 -3
  16. package/cli/test/smokehouse/report-assert.js +2 -19
  17. package/cli/test/smokehouse/smokehouse.js +3 -32
  18. package/core/audits/accessibility/aria-allowed-role.d.ts +10 -0
  19. package/core/audits/accessibility/aria-allowed-role.js +46 -0
  20. package/core/audits/accessibility/image-redundant-alt.d.ts +10 -0
  21. package/core/audits/accessibility/image-redundant-alt.js +45 -0
  22. package/core/audits/accessibility/label-content-name-mismatch.d.ts +10 -0
  23. package/core/audits/accessibility/label-content-name-mismatch.js +44 -0
  24. package/core/audits/accessibility/skip-link.d.ts +10 -0
  25. package/core/audits/accessibility/skip-link.js +43 -0
  26. package/core/audits/accessibility/table-duplicate-name.d.ts +10 -0
  27. package/core/audits/accessibility/table-duplicate-name.js +44 -0
  28. package/core/audits/accessibility/target-size.js +1 -1
  29. package/core/audits/byte-efficiency/duplicated-javascript.js +2 -2
  30. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -0
  31. package/core/audits/dobetterweb/uses-http2.d.ts +18 -1
  32. package/core/audits/dobetterweb/uses-http2.js +62 -16
  33. package/core/audits/installable-manifest.d.ts +1 -5
  34. package/core/audits/installable-manifest.js +2 -7
  35. package/core/audits/largest-contentful-paint-element.d.ts +0 -6
  36. package/core/audits/largest-contentful-paint-element.js +13 -15
  37. package/core/audits/metrics/{experimental-interaction-to-next-paint.d.ts → interaction-to-next-paint.d.ts} +3 -3
  38. package/core/audits/metrics/{experimental-interaction-to-next-paint.js → interaction-to-next-paint.js} +3 -3
  39. package/core/audits/uses-rel-preconnect.js +23 -8
  40. package/core/audits/work-during-interaction.js +2 -2
  41. package/core/computed/processed-navigation.d.ts +1 -1
  42. package/core/config/config-helpers.d.ts +3 -3
  43. package/core/config/config-helpers.js +5 -12
  44. package/core/config/config.js +1 -7
  45. package/core/config/constants.d.ts +0 -2
  46. package/core/config/constants.js +2 -18
  47. package/core/config/default-config.js +59 -53
  48. package/core/config/filters.js +1 -1
  49. package/core/config/validation.d.ts +7 -12
  50. package/core/config/validation.js +16 -26
  51. package/core/gather/base-artifacts.d.ts +4 -4
  52. package/core/gather/base-artifacts.js +2 -6
  53. package/core/gather/base-gatherer.d.ts +12 -37
  54. package/core/gather/base-gatherer.js +7 -54
  55. package/core/gather/driver/dom.d.ts +4 -4
  56. package/core/gather/driver/dom.js +2 -2
  57. package/core/gather/driver/environment.d.ts +4 -4
  58. package/core/gather/driver/environment.js +2 -2
  59. package/core/gather/driver/execution-context.d.ts +12 -3
  60. package/core/gather/driver/execution-context.js +34 -3
  61. package/core/gather/driver/navigation.d.ts +2 -2
  62. package/core/gather/driver/navigation.js +2 -5
  63. package/core/gather/driver/network-monitor.d.ts +7 -6
  64. package/core/gather/driver/network-monitor.js +4 -4
  65. package/core/gather/driver/network.d.ts +2 -2
  66. package/core/gather/driver/network.js +1 -1
  67. package/core/gather/driver/prepare.d.ts +10 -10
  68. package/core/gather/driver/prepare.js +10 -10
  69. package/core/gather/driver/service-workers.d.ts +4 -4
  70. package/core/gather/driver/service-workers.js +2 -2
  71. package/core/gather/driver/storage.d.ts +6 -6
  72. package/core/gather/driver/storage.js +3 -3
  73. package/core/gather/driver/target-manager.d.ts +6 -5
  74. package/core/gather/driver/target-manager.js +3 -3
  75. package/core/gather/driver/wait-for-condition.d.ts +14 -14
  76. package/core/gather/driver/wait-for-condition.js +8 -8
  77. package/core/gather/driver.d.ts +9 -6
  78. package/core/gather/driver.js +14 -4
  79. package/core/gather/fetcher.d.ts +3 -3
  80. package/core/gather/fetcher.js +1 -1
  81. package/core/gather/gatherers/accessibility.d.ts +4 -4
  82. package/core/gather/gatherers/accessibility.js +8 -3
  83. package/core/gather/gatherers/anchor-elements.d.ts +4 -4
  84. package/core/gather/gatherers/anchor-elements.js +4 -4
  85. package/core/gather/gatherers/bf-cache-failures.d.ts +8 -14
  86. package/core/gather/gatherers/bf-cache-failures.js +5 -14
  87. package/core/gather/gatherers/cache-contents.d.ts +4 -4
  88. package/core/gather/gatherers/cache-contents.js +3 -3
  89. package/core/gather/gatherers/console-messages.d.ts +6 -6
  90. package/core/gather/gatherers/console-messages.js +4 -4
  91. package/core/gather/gatherers/css-usage.d.ts +14 -14
  92. package/core/gather/gatherers/css-usage.js +9 -9
  93. package/core/gather/gatherers/devtools-log-compat.d.ts +5 -5
  94. package/core/gather/gatherers/devtools-log-compat.js +4 -4
  95. package/core/gather/gatherers/devtools-log.d.ts +6 -6
  96. package/core/gather/gatherers/devtools-log.js +4 -4
  97. package/core/gather/gatherers/dobetterweb/doctype.d.ts +4 -4
  98. package/core/gather/gatherers/dobetterweb/doctype.js +3 -3
  99. package/core/gather/gatherers/dobetterweb/domstats.d.ts +4 -4
  100. package/core/gather/gatherers/dobetterweb/domstats.js +3 -3
  101. package/core/gather/gatherers/dobetterweb/optimized-images.d.ts +10 -22
  102. package/core/gather/gatherers/dobetterweb/optimized-images.js +10 -27
  103. package/core/gather/gatherers/dobetterweb/response-compression.d.ts +6 -12
  104. package/core/gather/gatherers/dobetterweb/response-compression.js +14 -21
  105. package/core/gather/gatherers/dobetterweb/tags-blocking-first-paint.d.ts +8 -14
  106. package/core/gather/gatherers/dobetterweb/tags-blocking-first-paint.js +5 -14
  107. package/core/gather/gatherers/full-page-screenshot.d.ts +10 -10
  108. package/core/gather/gatherers/full-page-screenshot.js +7 -10
  109. package/core/gather/gatherers/global-listeners.d.ts +4 -4
  110. package/core/gather/gatherers/global-listeners.js +3 -3
  111. package/core/gather/gatherers/iframe-elements.d.ts +4 -4
  112. package/core/gather/gatherers/iframe-elements.js +3 -3
  113. package/core/gather/gatherers/image-elements.d.ts +10 -10
  114. package/core/gather/gatherers/image-elements.js +6 -6
  115. package/core/gather/gatherers/inputs.d.ts +4 -4
  116. package/core/gather/gatherers/inputs.js +3 -3
  117. package/core/gather/gatherers/inspector-issues.d.ts +8 -19
  118. package/core/gather/gatherers/inspector-issues.js +9 -26
  119. package/core/gather/gatherers/installability-errors.d.ts +6 -6
  120. package/core/gather/gatherers/installability-errors.js +4 -4
  121. package/core/gather/gatherers/js-usage.d.ts +6 -6
  122. package/core/gather/gatherers/js-usage.js +4 -4
  123. package/core/gather/gatherers/link-elements.d.ts +8 -20
  124. package/core/gather/gatherers/link-elements.js +7 -24
  125. package/core/gather/gatherers/main-document-content.d.ts +4 -16
  126. package/core/gather/gatherers/main-document-content.js +5 -23
  127. package/core/gather/gatherers/meta-elements.d.ts +4 -4
  128. package/core/gather/gatherers/meta-elements.js +3 -3
  129. package/core/gather/gatherers/network-user-agent.d.ts +5 -5
  130. package/core/gather/gatherers/network-user-agent.js +4 -4
  131. package/core/gather/gatherers/script-elements.d.ts +6 -11
  132. package/core/gather/gatherers/script-elements.js +4 -13
  133. package/core/gather/gatherers/scripts.d.ts +7 -6
  134. package/core/gather/gatherers/scripts.js +7 -9
  135. package/core/gather/gatherers/seo/embedded-content.d.ts +4 -4
  136. package/core/gather/gatherers/seo/embedded-content.js +3 -3
  137. package/core/gather/gatherers/seo/font-size.d.ts +6 -6
  138. package/core/gather/gatherers/seo/font-size.js +5 -5
  139. package/core/gather/gatherers/seo/robots-txt.d.ts +4 -4
  140. package/core/gather/gatherers/seo/robots-txt.js +3 -3
  141. package/core/gather/gatherers/seo/tap-targets.d.ts +8 -8
  142. package/core/gather/gatherers/seo/tap-targets.js +5 -5
  143. package/core/gather/gatherers/service-worker.d.ts +4 -10
  144. package/core/gather/gatherers/service-worker.js +3 -15
  145. package/core/gather/gatherers/source-maps.d.ts +11 -23
  146. package/core/gather/gatherers/source-maps.js +22 -53
  147. package/core/gather/gatherers/stacks.d.ts +7 -7
  148. package/core/gather/gatherers/stacks.js +6 -6
  149. package/core/gather/gatherers/trace-compat.d.ts +5 -5
  150. package/core/gather/gatherers/trace-compat.js +4 -4
  151. package/core/gather/gatherers/trace-elements.d.ts +13 -25
  152. package/core/gather/gatherers/trace-elements.js +19 -32
  153. package/core/gather/gatherers/trace.d.ts +8 -8
  154. package/core/gather/gatherers/trace.js +5 -5
  155. package/core/gather/gatherers/viewport-dimensions.d.ts +4 -4
  156. package/core/gather/gatherers/viewport-dimensions.js +3 -3
  157. package/core/gather/gatherers/web-app-manifest.d.ts +8 -8
  158. package/core/gather/gatherers/web-app-manifest.js +5 -5
  159. package/core/gather/navigation-runner.d.ts +9 -9
  160. package/core/gather/navigation-runner.js +14 -8
  161. package/core/gather/runner-helpers.d.ts +3 -3
  162. package/core/gather/runner-helpers.js +12 -4
  163. package/core/gather/session.d.ts +2 -2
  164. package/core/gather/session.js +1 -1
  165. package/core/gather/snapshot-runner.d.ts +2 -2
  166. package/core/gather/snapshot-runner.js +1 -1
  167. package/core/gather/timespan-runner.d.ts +2 -2
  168. package/core/gather/timespan-runner.js +1 -1
  169. package/core/index.cjs +0 -7
  170. package/core/index.d.ts +0 -15
  171. package/core/index.js +2 -40
  172. package/core/lib/asset-saver.js +14 -4
  173. package/core/lib/axe.js +1 -1
  174. package/core/lib/dependency-graph/simulator/network-analyzer.d.ts +28 -12
  175. package/core/lib/dependency-graph/simulator/network-analyzer.js +128 -100
  176. package/core/lib/emulation.d.ts +14 -14
  177. package/core/lib/emulation.js +7 -7
  178. package/core/lib/navigation-error.js +5 -0
  179. package/core/lib/network-recorder.d.ts +2 -1
  180. package/core/lib/network-recorder.js +1 -0
  181. package/core/lib/network-request.js +12 -3
  182. package/core/lib/page-functions.d.ts +10 -2
  183. package/core/lib/page-functions.js +85 -8
  184. package/core/lib/sentry.js +9 -2
  185. package/core/lib/stack-packs.js +4 -0
  186. package/core/runner.d.ts +8 -30
  187. package/core/runner.js +8 -39
  188. package/core/user-flow.d.ts +4 -4
  189. package/core/user-flow.js +2 -2
  190. package/dist/report/bundle.esm.js +2221 -5832
  191. package/dist/report/flow.js +2631 -235
  192. package/dist/report/standalone.js +2586 -234
  193. package/flow-report/src/i18n/i18n.d.ts +2 -2
  194. package/package.json +17 -24
  195. package/readme.md +3 -1
  196. package/report/assets/templates.html +3 -1
  197. package/report/renderer/category-renderer.d.ts +3 -2
  198. package/report/renderer/category-renderer.js +8 -4
  199. package/report/renderer/components.js +11 -5
  200. package/report/renderer/pwa-category-renderer.js +1 -1
  201. package/report/renderer/report-ui-features.js +9 -6
  202. package/report/renderer/report-utils.d.ts +1 -1
  203. package/report/renderer/report-utils.js +2 -2
  204. package/report/renderer/topbar-features.js +3 -0
  205. package/shared/localization/locales/ar-XB.json +185 -44
  206. package/shared/localization/locales/ar.json +185 -44
  207. package/shared/localization/locales/bg.json +185 -44
  208. package/shared/localization/locales/ca.json +190 -49
  209. package/shared/localization/locales/cs.json +185 -44
  210. package/shared/localization/locales/da.json +185 -44
  211. package/shared/localization/locales/de.json +185 -44
  212. package/shared/localization/locales/el.json +185 -44
  213. package/shared/localization/locales/en-GB.json +185 -44
  214. package/shared/localization/locales/en-US.json +99 -45
  215. package/shared/localization/locales/en-XA.json +185 -44
  216. package/shared/localization/locales/en-XL.json +99 -45
  217. package/shared/localization/locales/es-419.json +185 -44
  218. package/shared/localization/locales/es.json +185 -44
  219. package/shared/localization/locales/fi.json +185 -44
  220. package/shared/localization/locales/fil.json +185 -44
  221. package/shared/localization/locales/fr.json +185 -44
  222. package/shared/localization/locales/he.json +186 -45
  223. package/shared/localization/locales/hi.json +185 -44
  224. package/shared/localization/locales/hr.json +185 -44
  225. package/shared/localization/locales/hu.json +185 -44
  226. package/shared/localization/locales/id.json +185 -44
  227. package/shared/localization/locales/it.json +185 -44
  228. package/shared/localization/locales/ja.json +185 -44
  229. package/shared/localization/locales/ko.json +185 -44
  230. package/shared/localization/locales/lt.json +185 -44
  231. package/shared/localization/locales/lv.json +185 -44
  232. package/shared/localization/locales/nl.json +185 -44
  233. package/shared/localization/locales/no.json +185 -44
  234. package/shared/localization/locales/pl.json +185 -44
  235. package/shared/localization/locales/pt-PT.json +185 -44
  236. package/shared/localization/locales/pt.json +190 -49
  237. package/shared/localization/locales/ro.json +185 -44
  238. package/shared/localization/locales/ru.json +185 -44
  239. package/shared/localization/locales/sk.json +185 -44
  240. package/shared/localization/locales/sl.json +185 -44
  241. package/shared/localization/locales/sr-Latn.json +185 -44
  242. package/shared/localization/locales/sr.json +185 -44
  243. package/shared/localization/locales/sv.json +185 -44
  244. package/shared/localization/locales/ta.json +185 -44
  245. package/shared/localization/locales/te.json +185 -44
  246. package/shared/localization/locales/th.json +185 -44
  247. package/shared/localization/locales/tr.json +185 -44
  248. package/shared/localization/locales/uk.json +185 -44
  249. package/shared/localization/locales/vi.json +185 -44
  250. package/shared/localization/locales/zh-HK.json +185 -44
  251. package/shared/localization/locales/zh-TW.json +185 -44
  252. package/shared/localization/locales/zh.json +185 -44
  253. package/third-party/esbuild-plugins-polyfills/LICENSE +3 -0
  254. package/third-party/esbuild-plugins-polyfills/README.md +7 -0
  255. package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.d.ts +9 -0
  256. package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.js +129 -0
  257. package/tsconfig.json +2 -1
  258. package/types/artifacts.d.ts +16 -45
  259. package/types/config.d.ts +10 -52
  260. package/types/externs.d.ts +0 -2
  261. package/types/gatherer.d.ts +24 -47
  262. package/types/internal/rxjs.d.ts +26 -0
  263. package/types/internal/smokehouse.d.ts +1 -3
  264. package/types/lh.d.ts +0 -2
  265. package/types/lhr/settings.d.ts +1 -1
  266. package/core/audits/metrics/first-contentful-paint-3g.d.ts +0 -15
  267. package/core/audits/metrics/first-contentful-paint-3g.js +0 -69
  268. package/core/audits/resource-summary.d.ts +0 -16
  269. package/core/audits/resource-summary.js +0 -104
  270. package/core/audits/service-worker.d.ts +0 -46
  271. package/core/audits/service-worker.js +0 -182
  272. package/core/gather/gatherers/gatherer.d.ts +0 -46
  273. package/core/gather/gatherers/gatherer.js +0 -58
  274. package/core/legacy/config/config.d.ts +0 -107
  275. package/core/legacy/config/config.js +0 -566
  276. package/core/legacy/config/legacy-default-config.d.ts +0 -4
  277. package/core/legacy/config/legacy-default-config.js +0 -87
  278. package/core/legacy/gather/connections/connection.d.ts +0 -77
  279. package/core/legacy/gather/connections/connection.js +0 -196
  280. package/core/legacy/gather/connections/cri.d.ts +0 -27
  281. package/core/legacy/gather/connections/cri.js +0 -162
  282. package/core/legacy/gather/connections/raw.d.ts +0 -20
  283. package/core/legacy/gather/connections/raw.js +0 -57
  284. package/core/legacy/gather/driver.d.ts +0 -216
  285. package/core/legacy/gather/driver.js +0 -480
  286. package/core/legacy/gather/gather-runner.d.ts +0 -166
  287. package/core/legacy/gather/gather-runner.js +0 -590
  288. package/types/internal/lighthouse-logger.d.ts +0 -34
@@ -17,6 +17,15 @@
17
17
  "core/audits/accessibility/aria-allowed-attr.js | title": {
18
18
  "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮match‬‏ ‏‮their‬‏ ‏‮roles‬‏"
19
19
  },
20
+ "core/audits/accessibility/aria-allowed-role.js | description": {
21
+ "message": "ARIA `role`s enable assistive technologies to know the role of each element on the web page. If the `role` values are misspelled, not existing ARIA `role` values, or abstract roles, then the purpose of the element will not be communicated to users of assistive technologies. [Learn more about ARIA roles](https://dequeuniversity.com/rules/axe/4.7/aria-allowed-roles)."
22
+ },
23
+ "core/audits/accessibility/aria-allowed-role.js | failureTitle": {
24
+ "message": "Values assigned to `role=\"\"` are not valid ARIA roles."
25
+ },
26
+ "core/audits/accessibility/aria-allowed-role.js | title": {
27
+ "message": "Values assigned to `role=\"\"` are valid ARIA roles."
28
+ },
20
29
  "core/audits/accessibility/aria-command-name.js | description": {
21
30
  "message": "‏‮When‬‏ ‏‮an‬‏ ‏‮element‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮accessible‬‏ ‏‮name‬‏, ‏‮screen‬‏ ‏‮readers‬‏ ‏‮announce‬‏ ‏‮it‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮generic‬‏ ‏‮name‬‏, ‏‮making‬‏ ‏‮it‬‏ ‏‮unusable‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮who‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮screen‬‏ ‏‮readers‬‏. [‏‮Learn‬‏ ‏‮how‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮command‬‏ ‏‮elements‬‏ ‏‮more‬‏ ‏‮accessible‬‏](https://dequeuniversity.com/rules/axe/4.7/aria-command-name)."
22
31
  },
@@ -26,6 +35,15 @@
26
35
  "core/audits/accessibility/aria-command-name.js | title": {
27
36
  "message": "`button`, `link`, ‏‮and‬‏ `menuitem` ‏‮elements‬‏ ‏‮have‬‏ ‏‮accessible‬‏ ‏‮names‬‏"
28
37
  },
38
+ "core/audits/accessibility/aria-dialog-name.js | description": {
39
+ "message": "‏‮ARIA‬‏ ‏‮dialog‬‏ ‏‮elements‬‏ ‏‮without‬‏ ‏‮accessible‬‏ ‏‮names‬‏ ‏‮may‬‏ ‏‮prevent‬‏ ‏‮screen‬‏ ‏‮readers‬‏ ‏‮users‬‏ ‏‮from‬‏ ‏‮discerning‬‏ ‏‮the‬‏ ‏‮purpose‬‏ ‏‮of‬‏ ‏‮these‬‏ ‏‮elements‬‏. [‏‮Learn‬‏ ‏‮how‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮ARIA‬‏ ‏‮dialog‬‏ ‏‮elements‬‏ ‏‮more‬‏ ‏‮accessible‬‏](https://dequeuniversity.com/rules/axe/4.7/aria-dialog-name)."
40
+ },
41
+ "core/audits/accessibility/aria-dialog-name.js | failureTitle": {
42
+ "message": "‏‮Elements‬‏ ‏‮with‬‏ `role=\"dialog\"` ‏‮or‬‏ `role=\"alertdialog\"` ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮accessible‬‏ ‏‮names‬‏."
43
+ },
44
+ "core/audits/accessibility/aria-dialog-name.js | title": {
45
+ "message": "‏‮Elements‬‏ ‏‮with‬‏ `role=\"dialog\"` ‏‮or‬‏ `role=\"alertdialog\"` ‏‮have‬‏ ‏‮accessible‬‏ ‏‮names‬‏."
46
+ },
29
47
  "core/audits/accessibility/aria-hidden-body.js | description": {
30
48
  "message": "‏‮Assistive‬‏ ‏‮technologies‬‏, ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏, ‏‮work‬‏ ‏‮inconsistently‬‏ ‏‮when‬‏ `aria-hidden=\"true\"` ‏‮is‬‏ ‏‮set‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮document‬‏ `<body>`. [‏‮Learn‬‏ ‏‮how‬‏ `aria-hidden` ‏‮affects‬‏ ‏‮the‬‏ ‏‮document‬‏ ‏‮body‬‏](https://dequeuniversity.com/rules/axe/4.7/aria-hidden-body)."
31
49
  },
@@ -107,6 +125,15 @@
107
125
  "core/audits/accessibility/aria-roles.js | title": {
108
126
  "message": "`[role]` ‏‮values‬‏ ‏‮are‬‏ ‏‮valid‬‏"
109
127
  },
128
+ "core/audits/accessibility/aria-text.js | description": {
129
+ "message": "‏‮Adding‬‏ `role=text` ‏‮around‬‏ ‏‮a‬‏ ‏‮text‬‏ ‏‮node‬‏ ‏‮split‬‏ ‏‮by‬‏ ‏‮markup‬‏ ‏‮enables‬‏ ‏‮VoiceOver‬‏ ‏‮to‬‏ ‏‮treat‬‏ ‏‮it‬‏ ‏‮as‬‏ ‏‮one‬‏ ‏‮phrase‬‏, ‏‮but‬‏ ‏‮the‬‏ ‏‮element‬‏'‏‮s‬‏ ‏‮focusable‬‏ ‏‮descendents‬‏ ‏‮will‬‏ ‏‮not‬‏ ‏‮be‬‏ ‏‮announced‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ `role=text` ‏‮attribute‬‏](https://dequeuniversity.com/rules/axe/4.7/aria-text)."
130
+ },
131
+ "core/audits/accessibility/aria-text.js | failureTitle": {
132
+ "message": "‏‮Elements‬‏ ‏‮with‬‏ ‏‮the‬‏ `role=text` ‏‮attribute‬‏ ‏‮do‬‏ ‏‮have‬‏ ‏‮focusable‬‏ ‏‮descendents‬‏."
133
+ },
134
+ "core/audits/accessibility/aria-text.js | title": {
135
+ "message": "‏‮Elements‬‏ ‏‮with‬‏ ‏‮the‬‏ `role=text` ‏‮attribute‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮focusable‬‏ ‏‮descendents‬‏."
136
+ },
110
137
  "core/audits/accessibility/aria-toggle-field-name.js | description": {
111
138
  "message": "‏‮When‬‏ ‏‮a‬‏ ‏‮toggle‬‏ ‏‮field‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮accessible‬‏ ‏‮name‬‏, ‏‮screen‬‏ ‏‮readers‬‏ ‏‮announce‬‏ ‏‮it‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮generic‬‏ ‏‮name‬‏, ‏‮making‬‏ ‏‮it‬‏ ‏‮unusable‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮who‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮screen‬‏ ‏‮readers‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮toggle‬‏ ‏‮fields‬‏](https://dequeuniversity.com/rules/axe/4.7/aria-toggle-field-name)."
112
139
  },
@@ -227,6 +254,15 @@
227
254
  "core/audits/accessibility/duplicate-id-aria.js | title": {
228
255
  "message": "‏‮ARIA‬‏ ‏‮IDs‬‏ ‏‮are‬‏ ‏‮unique‬‏"
229
256
  },
257
+ "core/audits/accessibility/empty-heading.js | description": {
258
+ "message": "‏‮A‬‏ ‏‮heading‬‏ ‏‮with‬‏ ‏‮no‬‏ ‏‮content‬‏ ‏‮or‬‏ ‏‮inaccessible‬‏ ‏‮text‬‏ ‏‮prevent‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏ ‏‮from‬‏ ‏‮accessing‬‏ ‏‮information‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏'‏‮s‬‏ ‏‮structure‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮headings‬‏](https://dequeuniversity.com/rules/axe/4.7/empty-heading)."
259
+ },
260
+ "core/audits/accessibility/empty-heading.js | failureTitle": {
261
+ "message": "‏‮Heading‬‏ ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮content‬‏."
262
+ },
263
+ "core/audits/accessibility/empty-heading.js | title": {
264
+ "message": "‏‮All‬‏ ‏‮heading‬‏ ‏‮elements‬‏ ‏‮contain‬‏ ‏‮content‬‏."
265
+ },
230
266
  "core/audits/accessibility/form-field-multiple-labels.js | description": {
231
267
  "message": "‏‮Form‬‏ ‏‮fields‬‏ ‏‮with‬‏ ‏‮multiple‬‏ ‏‮labels‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮confusingly‬‏ ‏‮announced‬‏ ‏‮by‬‏ ‏‮assistive‬‏ ‏‮technologies‬‏ ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏ ‏‮which‬‏ ‏‮use‬‏ ‏‮either‬‏ ‏‮the‬‏ ‏‮first‬‏, ‏‮the‬‏ ‏‮last‬‏, ‏‮or‬‏ ‏‮all‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮labels‬‏. [‏‮Learn‬‏ ‏‮how‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮form‬‏ ‏‮labels‬‏](https://dequeuniversity.com/rules/axe/4.7/form-field-multiple-labels)."
232
268
  },
@@ -281,6 +317,15 @@
281
317
  "core/audits/accessibility/html-xml-lang-mismatch.js | title": {
282
318
  "message": "`<html>` ‏‮element‬‏ ‏‮has‬‏ ‏‮an‬‏ `[xml:lang]` ‏‮attribute‬‏ ‏‮with‬‏ ‏‮the‬‏ ‏‮same‬‏ ‏‮base‬‏ ‏‮language‬‏ ‏‮as‬‏ ‏‮the‬‏ `[lang]` ‏‮attribute‬‏."
283
319
  },
320
+ "core/audits/accessibility/identical-links-same-purpose.js | description": {
321
+ "message": "‏‮Links‬‏ ‏‮with‬‏ ‏‮the‬‏ ‏‮same‬‏ ‏‮destination‬‏ ‏‮should‬‏ ‏‮have‬‏ ‏‮the‬‏ ‏‮same‬‏ ‏‮description‬‏, ‏‮to‬‏ ‏‮help‬‏ ‏‮users‬‏ ‏‮understand‬‏ ‏‮the‬‏ ‏‮link‬‏'‏‮s‬‏ ‏‮purpose‬‏ ‏‮and‬‏ ‏‮decide‬‏ ‏‮whether‬‏ ‏‮to‬‏ ‏‮follow‬‏ ‏‮it‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮identical‬‏ ‏‮links‬‏](https://dequeuniversity.com/rules/axe/4.7/identical-links-same-purpose)."
322
+ },
323
+ "core/audits/accessibility/identical-links-same-purpose.js | failureTitle": {
324
+ "message": "‏‮Identical‬‏ ‏‮links‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮the‬‏ ‏‮same‬‏ ‏‮purpose‬‏."
325
+ },
326
+ "core/audits/accessibility/identical-links-same-purpose.js | title": {
327
+ "message": "‏‮Identical‬‏ ‏‮links‬‏ ‏‮have‬‏ ‏‮the‬‏ ‏‮same‬‏ ‏‮purpose‬‏."
328
+ },
284
329
  "core/audits/accessibility/image-alt.js | description": {
285
330
  "message": "‏‮Informative‬‏ ‏‮elements‬‏ ‏‮should‬‏ ‏‮aim‬‏ ‏‮for‬‏ ‏‮short‬‏, ‏‮descriptive‬‏ ‏‮alternate‬‏ ‏‮text‬‏. ‏‮Decorative‬‏ ‏‮elements‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮ignored‬‏ ‏‮with‬‏ ‏‮an‬‏ ‏‮empty‬‏ ‏‮alt‬‏ ‏‮attribute‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ `alt` ‏‮attribute‬‏](https://dequeuniversity.com/rules/axe/4.7/image-alt)."
286
331
  },
@@ -290,6 +335,15 @@
290
335
  "core/audits/accessibility/image-alt.js | title": {
291
336
  "message": "‏‮Image‬‏ ‏‮elements‬‏ ‏‮have‬‏ `[alt]` ‏‮attributes‬‏"
292
337
  },
338
+ "core/audits/accessibility/image-redundant-alt.js | description": {
339
+ "message": "Informative elements should aim for short, descriptive alternative text. Alternative text that is exactly the same as the text adjacent to the link or image is potentially confusing for screen reader users, because the text will be read twice. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.7/image-redundant-alt)."
340
+ },
341
+ "core/audits/accessibility/image-redundant-alt.js | failureTitle": {
342
+ "message": "Image elements have `[alt]` attributes that are redundant text."
343
+ },
344
+ "core/audits/accessibility/image-redundant-alt.js | title": {
345
+ "message": "Image elements do not have `[alt]` attributes that are redundant text."
346
+ },
293
347
  "core/audits/accessibility/input-button-name.js | description": {
294
348
  "message": "‏‮Adding‬‏ ‏‮discernable‬‏ ‏‮and‬‏ ‏‮accessible‬‏ ‏‮text‬‏ ‏‮to‬‏ ‏‮input‬‏ ‏‮buttons‬‏ ‏‮may‬‏ ‏‮help‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏ ‏‮understand‬‏ ‏‮the‬‏ ‏‮purpose‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮input‬‏ ‏‮button‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮input‬‏ ‏‮buttons‬‏](https://dequeuniversity.com/rules/axe/4.7/input-button-name)."
295
349
  },
@@ -308,6 +362,15 @@
308
362
  "core/audits/accessibility/input-image-alt.js | title": {
309
363
  "message": "`<input type=\"image\">` ‏‮elements‬‏ ‏‮have‬‏ `[alt]` ‏‮text‬‏"
310
364
  },
365
+ "core/audits/accessibility/label-content-name-mismatch.js | description": {
366
+ "message": "Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. [Learn more about accessible names](https://dequeuniversity.com/rules/axe/4.7/label-content-name-mismatch)."
367
+ },
368
+ "core/audits/accessibility/label-content-name-mismatch.js | failureTitle": {
369
+ "message": "Elements with visible text labels do not have matching accessible names."
370
+ },
371
+ "core/audits/accessibility/label-content-name-mismatch.js | title": {
372
+ "message": "Elements with visible text labels have matching accessible names."
373
+ },
311
374
  "core/audits/accessibility/label.js | description": {
312
375
  "message": "‏‮Labels‬‏ ‏‮ensure‬‏ ‏‮that‬‏ ‏‮form‬‏ ‏‮controls‬‏ ‏‮are‬‏ ‏‮announced‬‏ ‏‮properly‬‏ ‏‮by‬‏ ‏‮assistive‬‏ ‏‮technologies‬‏, ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮form‬‏ ‏‮element‬‏ ‏‮labels‬‏](https://dequeuniversity.com/rules/axe/4.7/label)."
313
376
  },
@@ -317,6 +380,24 @@
317
380
  "core/audits/accessibility/label.js | title": {
318
381
  "message": "‏‮Form‬‏ ‏‮elements‬‏ ‏‮have‬‏ ‏‮associated‬‏ ‏‮labels‬‏"
319
382
  },
383
+ "core/audits/accessibility/landmark-one-main.js | description": {
384
+ "message": "‏‮One‬‏ ‏‮main‬‏ ‏‮landmark‬‏ ‏‮helps‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏ ‏‮navigate‬‏ ‏‮a‬‏ ‏‮web‬‏ ‏‮page‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮landmarks‬‏](https://dequeuniversity.com/rules/axe/4.7/landmark-one-main)."
385
+ },
386
+ "core/audits/accessibility/landmark-one-main.js | failureTitle": {
387
+ "message": "‏‮Document‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮main‬‏ ‏‮landmark‬‏."
388
+ },
389
+ "core/audits/accessibility/landmark-one-main.js | title": {
390
+ "message": "‏‮Document‬‏ ‏‮has‬‏ ‏‮a‬‏ ‏‮main‬‏ ‏‮landmark‬‏."
391
+ },
392
+ "core/audits/accessibility/link-in-text-block.js | description": {
393
+ "message": "‏‮Low‬‏-‏‮contrast‬‏ ‏‮text‬‏ ‏‮is‬‏ ‏‮difficult‬‏ ‏‮or‬‏ ‏‮impossible‬‏ ‏‮for‬‏ ‏‮many‬‏ ‏‮users‬‏ ‏‮to‬‏ ‏‮read‬‏. ‏‮Link‬‏ ‏‮text‬‏ ‏‮that‬‏ ‏‮is‬‏ ‏‮discernible‬‏ ‏‮improves‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮with‬‏ ‏‮low‬‏ ‏‮vision‬‏. [‏‮Learn‬‏ ‏‮how‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮links‬‏ ‏‮distinguishable‬‏](https://dequeuniversity.com/rules/axe/4.7/link-in-text-block)."
394
+ },
395
+ "core/audits/accessibility/link-in-text-block.js | failureTitle": {
396
+ "message": "‏‮Links‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮color‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮distinguishable‬‏."
397
+ },
398
+ "core/audits/accessibility/link-in-text-block.js | title": {
399
+ "message": "‏‮Links‬‏ ‏‮are‬‏ ‏‮distinguishable‬‏ ‏‮without‬‏ ‏‮relying‬‏ ‏‮on‬‏ ‏‮color‬‏."
400
+ },
320
401
  "core/audits/accessibility/link-name.js | description": {
321
402
  "message": "‏‮Link‬‏ ‏‮text‬‏ (‏‮and‬‏ ‏‮alternate‬‏ ‏‮text‬‏ ‏‮for‬‏ ‏‮images‬‏, ‏‮when‬‏ ‏‮used‬‏ ‏‮as‬‏ ‏‮links‬‏) ‏‮that‬‏ ‏‮is‬‏ ‏‮discernible‬‏, ‏‮unique‬‏, ‏‮and‬‏ ‏‮focusable‬‏ ‏‮improves‬‏ ‏‮the‬‏ ‏‮navigation‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮how‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮links‬‏ ‏‮accessible‬‏](https://dequeuniversity.com/rules/axe/4.7/link-name)."
322
403
  },
@@ -371,6 +452,24 @@
371
452
  "core/audits/accessibility/object-alt.js | title": {
372
453
  "message": "`<object>` ‏‮elements‬‏ ‏‮have‬‏ ‏‮alternate‬‏ ‏‮text‬‏"
373
454
  },
455
+ "core/audits/accessibility/select-name.js | description": {
456
+ "message": "‏‮Form‬‏ ‏‮elements‬‏ ‏‮without‬‏ ‏‮effective‬‏ ‏‮labels‬‏ ‏‮can‬‏ ‏‮create‬‏ ‏‮frustrating‬‏ ‏‮experiences‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ `select` ‏‮element‬‏](https://dequeuniversity.com/rules/axe/4.7/select-name)."
457
+ },
458
+ "core/audits/accessibility/select-name.js | failureTitle": {
459
+ "message": "‏‮Select‬‏ ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮associated‬‏ ‏‮label‬‏ ‏‮elements‬‏."
460
+ },
461
+ "core/audits/accessibility/select-name.js | title": {
462
+ "message": "‏‮Select‬‏ ‏‮elements‬‏ ‏‮have‬‏ ‏‮associated‬‏ ‏‮label‬‏ ‏‮elements‬‏."
463
+ },
464
+ "core/audits/accessibility/skip-link.js | description": {
465
+ "message": "Including a skip link can help users skip to the main content to save time. [Learn more about skip links](https://dequeuniversity.com/rules/axe/4.7/skip-link)."
466
+ },
467
+ "core/audits/accessibility/skip-link.js | failureTitle": {
468
+ "message": "Skip links are not focusable."
469
+ },
470
+ "core/audits/accessibility/skip-link.js | title": {
471
+ "message": "Skip links are focusable."
472
+ },
374
473
  "core/audits/accessibility/tabindex.js | description": {
375
474
  "message": "‏‮A‬‏ ‏‮value‬‏ ‏‮greater‬‏ ‏‮than‬‏ 0 ‏‮implies‬‏ ‏‮an‬‏ ‏‮explicit‬‏ ‏‮navigation‬‏ ‏‮ordering‬‏. ‏‮Although‬‏ ‏‮technically‬‏ ‏‮valid‬‏, ‏‮this‬‏ ‏‮often‬‏ ‏‮creates‬‏ ‏‮frustrating‬‏ ‏‮experiences‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮who‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮assistive‬‏ ‏‮technologies‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ `tabindex` ‏‮attribute‬‏](https://dequeuniversity.com/rules/axe/4.7/tabindex)."
376
475
  },
@@ -380,6 +479,15 @@
380
479
  "core/audits/accessibility/tabindex.js | title": {
381
480
  "message": "‏‮No‬‏ ‏‮element‬‏ ‏‮has‬‏ ‏‮a‬‏ `[tabindex]` ‏‮value‬‏ ‏‮greater‬‏ ‏‮than‬‏ 0"
382
481
  },
482
+ "core/audits/accessibility/table-duplicate-name.js | description": {
483
+ "message": "The summary attribute should describe the table structure, while `<caption>` should have the onscreen title. Accurate table mark-up helps users of screen readers. [Learn more about summary and caption](https://dequeuniversity.com/rules/axe/4.7/table-duplicate-name)."
484
+ },
485
+ "core/audits/accessibility/table-duplicate-name.js | failureTitle": {
486
+ "message": "Tables have the same content in the summary attribute and `<caption>.`"
487
+ },
488
+ "core/audits/accessibility/table-duplicate-name.js | title": {
489
+ "message": "Tables have different content in the summary attribute and `<caption>`."
490
+ },
383
491
  "core/audits/accessibility/table-fake-caption.js | description": {
384
492
  "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮have‬‏ ‏‮features‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮navigating‬‏ ‏‮tables‬‏ ‏‮easier‬‏. ‏‮Ensuring‬‏ ‏‮that‬‏ ‏‮tables‬‏ ‏‮use‬‏ ‏‮the‬‏ ‏‮actual‬‏ ‏‮caption‬‏ ‏‮element‬‏ ‏‮instead‬‏ ‏‮of‬‏ ‏‮cells‬‏ ‏‮with‬‏ ‏‮the‬‏ `[colspan]` ‏‮attribute‬‏ ‏‮may‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮captions‬‏](https://dequeuniversity.com/rules/axe/4.7/table-fake-caption)."
385
493
  },
@@ -389,6 +497,15 @@
389
497
  "core/audits/accessibility/table-fake-caption.js | title": {
390
498
  "message": "‏‮Tables‬‏ ‏‮use‬‏ `<caption>` ‏‮instead‬‏ ‏‮of‬‏ ‏‮cells‬‏ ‏‮with‬‏ ‏‮the‬‏ `[colspan]` ‏‮attribute‬‏ ‏‮to‬‏ ‏‮indicate‬‏ ‏‮a‬‏ ‏‮caption‬‏."
391
499
  },
500
+ "core/audits/accessibility/target-size.js | description": {
501
+ "message": "Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. [Learn more about touch targets](https://dequeuniversity.com/rules/axe/4.7/target-size)."
502
+ },
503
+ "core/audits/accessibility/target-size.js | failureTitle": {
504
+ "message": "‏‮Touch‬‏ ‏‮targets‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮sufficient‬‏ ‏‮size‬‏ ‏‮or‬‏ ‏‮spacing‬‏."
505
+ },
506
+ "core/audits/accessibility/target-size.js | title": {
507
+ "message": "‏‮Touch‬‏ ‏‮targets‬‏ ‏‮have‬‏ ‏‮sufficient‬‏ ‏‮size‬‏ ‏‮and‬‏ ‏‮spacing‬‏."
508
+ },
392
509
  "core/audits/accessibility/td-has-header.js | description": {
393
510
  "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮have‬‏ ‏‮features‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮navigating‬‏ ‏‮tables‬‏ ‏‮easier‬‏. ‏‮Ensuring‬‏ ‏‮that‬‏ `<td>` ‏‮elements‬‏ ‏‮in‬‏ ‏‮a‬‏ ‏‮large‬‏ ‏‮table‬‏ (3 ‏‮or‬‏ ‏‮more‬‏ ‏‮cells‬‏ ‏‮in‬‏ ‏‮width‬‏ ‏‮and‬‏ ‏‮height‬‏) ‏‮have‬‏ ‏‮an‬‏ ‏‮associated‬‏ ‏‮table‬‏ ‏‮header‬‏ ‏‮may‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮table‬‏ ‏‮headers‬‏](https://dequeuniversity.com/rules/axe/4.7/td-has-header)."
394
511
  },
@@ -938,9 +1055,6 @@
938
1055
  "core/audits/installable-manifest.js | no-manifest": {
939
1056
  "message": "‏‮Page‬‏ ‏‮has‬‏ ‏‮no‬‏ ‏‮manifest‬‏ <link> ‏‮URL‬‏"
940
1057
  },
941
- "core/audits/installable-manifest.js | no-matching-service-worker": {
942
- "message": "‏‮No‬‏ ‏‮matching‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮detected‬‏. ‏‮You‬‏ ‏‮may‬‏ ‏‮need‬‏ ‏‮to‬‏ ‏‮reload‬‏ ‏‮the‬‏ ‏‮page‬‏, ‏‮or‬‏ ‏‮check‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮scope‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮current‬‏ ‏‮page‬‏ ‏‮encloses‬‏ ‏‮the‬‏ ‏‮scope‬‏ ‏‮and‬‏ ‏‮start‬‏ ‏‮URL‬‏ ‏‮from‬‏ ‏‮the‬‏ ‏‮manifest‬‏."
943
- },
944
1058
  "core/audits/installable-manifest.js | no-url-for-service-worker": {
945
1059
  "message": "‏‮Could‬‏ ‏‮not‬‏ ‏‮check‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮without‬‏ ‏‮a‬‏ '‏‮start‬‏_‏‮url‬‏' ‏‮field‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮manifest‬‏"
946
1060
  },
@@ -969,7 +1083,7 @@
969
1083
  "message": "‏‮prefer‬‏_‏‮related‬‏_‏‮applications‬‏ ‏‮is‬‏ ‏‮only‬‏ ‏‮supported‬‏ ‏‮on‬‏ ‏‮Chrome‬‏ ‏‮Beta‬‏ ‏‮and‬‏ ‏‮Stable‬‏ ‏‮channels‬‏ ‏‮on‬‏ ‏‮Android‬‏."
970
1084
  },
971
1085
  "core/audits/installable-manifest.js | protocol-timeout": {
972
- "message": "‏‮Lighthouse‬‏ ‏‮could‬‏ ‏‮not‬‏ ‏‮determine‬‏ ‏‮if‬‏ ‏‮there‬‏ ‏‮was‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏. ‏‮Please‬‏ ‏‮try‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮newer‬‏ ‏‮version‬‏ ‏‮of‬‏ ‏‮Chrome‬‏."
1086
+ "message": "Lighthouse could not determine if the page is installable. Please try with a newer version of Chrome."
973
1087
  },
974
1088
  "core/audits/installable-manifest.js | scheme-not-supported-for-webapk": {
975
1089
  "message": "‏‮The‬‏ ‏‮manifest‬‏ ‏‮URL‬‏ ‏‮scheme‬‏ ({scheme}) ‏‮is‬‏ ‏‮not‬‏ ‏‮supported‬‏ ‏‮on‬‏ ‏‮Android‬‏."
@@ -1112,15 +1226,15 @@
1112
1226
  "core/audits/metrics/cumulative-layout-shift.js | description": {
1113
1227
  "message": "‏‮Cumulative‬‏ ‏‮Layout‬‏ ‏‮Shift‬‏ ‏‮measures‬‏ ‏‮the‬‏ ‏‮movement‬‏ ‏‮of‬‏ ‏‮visible‬‏ ‏‮elements‬‏ ‏‮within‬‏ ‏‮the‬‏ ‏‮viewport‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮Cumulative‬‏ ‏‮Layout‬‏ ‏‮Shift‬‏ ‏‮metric‬‏](https://web.dev/cls/)."
1114
1228
  },
1115
- "core/audits/metrics/experimental-interaction-to-next-paint.js | description": {
1116
- "message": "‏‮Interaction‬‏ ‏‮to‬‏ ‏‮Next‬‏ ‏‮Paint‬‏ ‏‮measures‬‏ ‏‮page‬‏ ‏‮responsiveness‬‏, ‏‮how‬‏ ‏‮long‬‏ ‏‮it‬‏ ‏‮takes‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮to‬‏ ‏‮visibly‬‏ ‏‮respond‬‏ ‏‮to‬‏ ‏‮user‬‏ ‏‮input‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮Interaction‬‏ ‏‮to‬‏ ‏‮Next‬‏ ‏‮Paint‬‏ ‏‮metric‬‏](https://web.dev/inp/)."
1117
- },
1118
1229
  "core/audits/metrics/first-contentful-paint.js | description": {
1119
1230
  "message": "‏‮First‬‏ ‏‮Contentful‬‏ ‏‮Paint‬‏ ‏‮marks‬‏ ‏‮the‬‏ ‏‮time‬‏ ‏‮at‬‏ ‏‮which‬‏ ‏‮the‬‏ ‏‮first‬‏ ‏‮text‬‏ ‏‮or‬‏ ‏‮image‬‏ ‏‮is‬‏ ‏‮painted‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮First‬‏ ‏‮Contentful‬‏ ‏‮Paint‬‏ ‏‮metric‬‏](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/)."
1120
1231
  },
1121
1232
  "core/audits/metrics/first-meaningful-paint.js | description": {
1122
1233
  "message": "‏‮First‬‏ ‏‮Meaningful‬‏ ‏‮Paint‬‏ ‏‮measures‬‏ ‏‮when‬‏ ‏‮the‬‏ ‏‮primary‬‏ ‏‮content‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮visible‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮First‬‏ ‏‮Meaningful‬‏ ‏‮Paint‬‏ ‏‮metric‬‏](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/)."
1123
1234
  },
1235
+ "core/audits/metrics/interaction-to-next-paint.js | description": {
1236
+ "message": "‏‮Interaction‬‏ ‏‮to‬‏ ‏‮Next‬‏ ‏‮Paint‬‏ ‏‮measures‬‏ ‏‮page‬‏ ‏‮responsiveness‬‏, ‏‮how‬‏ ‏‮long‬‏ ‏‮it‬‏ ‏‮takes‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮to‬‏ ‏‮visibly‬‏ ‏‮respond‬‏ ‏‮to‬‏ ‏‮user‬‏ ‏‮input‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮Interaction‬‏ ‏‮to‬‏ ‏‮Next‬‏ ‏‮Paint‬‏ ‏‮metric‬‏](https://web.dev/inp/)."
1237
+ },
1124
1238
  "core/audits/metrics/interactive.js | description": {
1125
1239
  "message": "‏‮Time‬‏ ‏‮to‬‏ ‏‮Interactive‬‏ ‏‮is‬‏ ‏‮the‬‏ ‏‮amount‬‏ ‏‮of‬‏ ‏‮time‬‏ ‏‮it‬‏ ‏‮takes‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮to‬‏ ‏‮become‬‏ ‏‮fully‬‏ ‏‮interactive‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮Time‬‏ ‏‮to‬‏ ‏‮Interactive‬‏ ‏‮metric‬‏](https://developer.chrome.com/docs/lighthouse/performance/interactive/)."
1126
1240
  },
@@ -1214,15 +1328,6 @@
1214
1328
  "core/audits/redirects.js | title": {
1215
1329
  "message": "‏‮Avoid‬‏ ‏‮multiple‬‏ ‏‮page‬‏ ‏‮redirects‬‏"
1216
1330
  },
1217
- "core/audits/resource-summary.js | description": {
1218
- "message": "‏‮To‬‏ ‏‮set‬‏ ‏‮budgets‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮quantity‬‏ ‏‮and‬‏ ‏‮size‬‏ ‏‮of‬‏ ‏‮page‬‏ ‏‮resources‬‏, ‏‮add‬‏ ‏‮a‬‏ ‏‮budget‬‏.‏‮json‬‏ ‏‮file‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮performance‬‏ ‏‮budgets‬‏](https://web.dev/use-lighthouse-for-performance-budgets/)."
1219
- },
1220
- "core/audits/resource-summary.js | displayValue": {
1221
- "message": "{requestCount,plural, =1{1 ‏‮request‬‏ • {byteCount, number, bytes} ‏‮KiB‬‏}zero{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KiB‬‏}two{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KiB‬‏}few{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KiB‬‏}many{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KiB‬‏}other{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KiB‬‏}}"
1222
- },
1223
- "core/audits/resource-summary.js | title": {
1224
- "message": "‏‮Keep‬‏ ‏‮request‬‏ ‏‮counts‬‏ ‏‮low‬‏ ‏‮and‬‏ ‏‮transfer‬‏ ‏‮sizes‬‏ ‏‮small‬‏"
1225
- },
1226
1331
  "core/audits/seo/canonical.js | description": {
1227
1332
  "message": "‏‮Canonical‬‏ ‏‮links‬‏ ‏‮suggest‬‏ ‏‮which‬‏ ‏‮URL‬‏ ‏‮to‬‏ ‏‮show‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮canonical‬‏ ‏‮links‬‏](https://developer.chrome.com/docs/lighthouse/seo/canonical/)."
1228
1333
  },
@@ -1412,27 +1517,6 @@
1412
1517
  "core/audits/server-response-time.js | title": {
1413
1518
  "message": "‏‮Initial‬‏ ‏‮server‬‏ ‏‮response‬‏ ‏‮time‬‏ ‏‮was‬‏ ‏‮short‬‏"
1414
1519
  },
1415
- "core/audits/service-worker.js | description": {
1416
- "message": "‏‮The‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮is‬‏ ‏‮the‬‏ ‏‮technology‬‏ ‏‮that‬‏ ‏‮enables‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮many‬‏ ‏‮Progressive‬‏ ‏‮Web‬‏ ‏‮App‬‏ ‏‮features‬‏, ‏‮such‬‏ ‏‮as‬‏ ‏‮offline‬‏, ‏‮add‬‏ ‏‮to‬‏ ‏‮homescreen‬‏, ‏‮and‬‏ ‏‮push‬‏ ‏‮notifications‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮Service‬‏ ‏‮Workers‬‏](https://developer.chrome.com/docs/lighthouse/pwa/service-worker/)."
1417
- },
1418
- "core/audits/service-worker.js | explanationBadManifest": {
1419
- "message": "‏‮This‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮controlled‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏, ‏‮however‬‏ ‏‮no‬‏ `start_url` ‏‮was‬‏ ‏‮found‬‏ ‏‮because‬‏ ‏‮manifest‬‏ ‏‮failed‬‏ ‏‮to‬‏ ‏‮parse‬‏ ‏‮as‬‏ ‏‮valid‬‏ ‏‮JSON‬‏"
1420
- },
1421
- "core/audits/service-worker.js | explanationBadStartUrl": {
1422
- "message": "‏‮This‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮controlled‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏, ‏‮however‬‏ ‏‮the‬‏ `start_url` ({startUrl}) ‏‮is‬‏ ‏‮not‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮service‬‏ ‏‮worker‬‏'‏‮s‬‏ ‏‮scope‬‏ ({scopeUrl})"
1423
- },
1424
- "core/audits/service-worker.js | explanationNoManifest": {
1425
- "message": "‏‮This‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮controlled‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏, ‏‮however‬‏ ‏‮no‬‏ `start_url` ‏‮was‬‏ ‏‮found‬‏ ‏‮because‬‏ ‏‮no‬‏ ‏‮manifest‬‏ ‏‮was‬‏ ‏‮fetched‬‏."
1426
- },
1427
- "core/audits/service-worker.js | explanationOutOfScope": {
1428
- "message": "‏‮This‬‏ ‏‮origin‬‏ ‏‮has‬‏ ‏‮one‬‏ ‏‮or‬‏ ‏‮more‬‏ ‏‮service‬‏ ‏‮workers‬‏, ‏‮however‬‏ ‏‮the‬‏ ‏‮page‬‏ ({pageUrl}) ‏‮is‬‏ ‏‮not‬‏ ‏‮in‬‏ ‏‮scope‬‏."
1429
- },
1430
- "core/audits/service-worker.js | failureTitle": {
1431
- "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮register‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮that‬‏ ‏‮controls‬‏ ‏‮page‬‏ ‏‮and‬‏ `start_url`"
1432
- },
1433
- "core/audits/service-worker.js | title": {
1434
- "message": "‏‮Registers‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮that‬‏ ‏‮controls‬‏ ‏‮page‬‏ ‏‮and‬‏ `start_url`"
1435
- },
1436
1520
  "core/audits/splash-screen.js | description": {
1437
1521
  "message": "‏‮A‬‏ ‏‮themed‬‏ ‏‮splash‬‏ ‏‮screen‬‏ ‏‮ensures‬‏ ‏‮a‬‏ ‏‮high‬‏-‏‮quality‬‏ ‏‮experience‬‏ ‏‮when‬‏ ‏‮users‬‏ ‏‮launch‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮from‬‏ ‏‮their‬‏ ‏‮homescreens‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮splash‬‏ ‏‮screens‬‏](https://developer.chrome.com/docs/lighthouse/pwa/splash-screen/)."
1438
1522
  },
@@ -1623,7 +1707,7 @@
1623
1707
  "message": "‏‮Best‬‏ ‏‮practices‬‏"
1624
1708
  },
1625
1709
  "core/config/default-config.js | a11yCategoryDescription": {
1626
- "message": "‏‮These‬‏ ‏‮checks‬‏ ‏‮highlight‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ [‏‮improve‬‏ ‏‮the‬‏ ‏‮accessibility‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮web‬‏ ‏‮app‬‏](https://developer.chrome.com/docs/lighthouse/accessibility/). ‏‮Only‬‏ ‏‮a‬‏ ‏‮subset‬‏ ‏‮of‬‏ ‏‮accessibility‬‏ ‏‮issues‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮automatically‬‏ ‏‮detected‬‏ ‏‮so‬‏ ‏‮manual‬‏ ‏‮testing‬‏ ‏‮is‬‏ ‏‮also‬‏ ‏‮encouraged‬‏."
1710
+ "message": "These checks highlight opportunities to [improve the accessibility of your web app](https://developer.chrome.com/docs/lighthouse/accessibility/). Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so [manual testing](https://web.dev/how-to-review/) is also encouraged."
1627
1711
  },
1628
1712
  "core/config/default-config.js | a11yCategoryManualDescription": {
1629
1713
  "message": "‏‮These‬‏ ‏‮items‬‏ ‏‮address‬‏ ‏‮areas‬‏ ‏‮which‬‏ ‏‮an‬‏ ‏‮automated‬‏ ‏‮testing‬‏ ‏‮tool‬‏ ‏‮cannot‬‏ ‏‮cover‬‏. ‏‮Learn‬‏ ‏‮more‬‏ ‏‮in‬‏ ‏‮our‬‏ ‏‮guide‬‏ ‏‮on‬‏ [‏‮conducting‬‏ ‏‮an‬‏ ‏‮accessibility‬‏ ‏‮review‬‏](https://web.dev/how-to-review/)."
@@ -2769,7 +2853,7 @@
2769
2853
  "message": "‏‮Install‬‏ [‏‮a‬‏ ‏‮Drupal‬‏ ‏‮module‬‏](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A67&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=%22lazy+load%22&solrsort=iss_project_release_usage+desc&op=Search) ‏‮that‬‏ ‏‮can‬‏ ‏‮lazy‬‏ ‏‮load‬‏ ‏‮images‬‏. ‏‮Such‬‏ ‏‮modules‬‏ ‏‮provide‬‏ ‏‮the‬‏ ‏‮ability‬‏ ‏‮to‬‏ ‏‮defer‬‏ ‏‮any‬‏ ‏‮offscreen‬‏ ‏‮images‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮performance‬‏."
2770
2854
  },
2771
2855
  "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": {
2772
- "message": "‏‮Consider‬‏ ‏‮using‬‏ ‏‮a‬‏ ‏‮module‬‏ ‏‮to‬‏ ‏‮inline‬‏ ‏‮critical‬‏ ‏‮CSS‬‏ ‏‮and‬‏ ‏‮JavaScript‬‏, ‏‮or‬‏ ‏‮potentially‬‏ ‏‮load‬‏ ‏‮assets‬‏ ‏‮asynchronously‬‏ ‏‮via‬‏ ‏‮JavaScript‬‏ ‏‮such‬‏ ‏‮as‬‏ ‏‮the‬‏ [‏‮Advanced‬‏ ‏‮CSS‬‏/‏‮JS‬‏ ‏‮Aggregation‬‏](https://www.drupal.org/project/advagg) ‏‮module‬‏. ‏‮Beware‬‏ ‏‮that‬‏ ‏‮optimizations‬‏ ‏‮provided‬‏ ‏‮by‬‏ ‏‮this‬‏ ‏‮module‬‏ ‏‮may‬‏ ‏‮break‬‏ ‏‮your‬‏ ‏‮site‬‏, ‏‮so‬‏ ‏‮you‬‏ ‏‮will‬‏ ‏‮likely‬‏ ‏‮need‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮code‬‏ ‏‮changes‬‏."
2856
+ "message": "Consider using a module to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript."
2773
2857
  },
2774
2858
  "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": {
2775
2859
  "message": "‏‮Themes‬‏, ‏‮modules‬‏, ‏‮and‬‏ ‏‮server‬‏ ‏‮specifications‬‏ ‏‮all‬‏ ‏‮contribute‬‏ ‏‮to‬‏ ‏‮server‬‏ ‏‮response‬‏ ‏‮time‬‏. ‏‮Consider‬‏ ‏‮finding‬‏ ‏‮a‬‏ ‏‮more‬‏ ‏‮optimized‬‏ ‏‮theme‬‏, ‏‮carefully‬‏ ‏‮selecting‬‏ ‏‮an‬‏ ‏‮optimization‬‏ ‏‮module‬‏, ‏‮and‬‏/‏‮or‬‏ ‏‮upgrading‬‏ ‏‮your‬‏ ‏‮server‬‏. ‏‮Your‬‏ ‏‮hosting‬‏ ‏‮servers‬‏ ‏‮should‬‏ ‏‮make‬‏ ‏‮use‬‏ ‏‮of‬‏ ‏‮PHP‬‏ ‏‮opcode‬‏ ‏‮caching‬‏, ‏‮memory‬‏-‏‮caching‬‏ ‏‮to‬‏ ‏‮reduce‬‏ ‏‮database‬‏ ‏‮query‬‏ ‏‮times‬‏ ‏‮such‬‏ ‏‮as‬‏ ‏‮Redis‬‏ ‏‮or‬‏ ‏‮Memcached‬‏, ‏‮as‬‏ ‏‮well‬‏ ‏‮as‬‏ ‏‮optimized‬‏ ‏‮application‬‏ ‏‮logic‬‏ ‏‮to‬‏ ‏‮prepare‬‏ ‏‮pages‬‏ ‏‮faster‬‏."
@@ -2778,10 +2862,10 @@
2778
2862
  "message": "‏‮Consider‬‏ ‏‮using‬‏ [‏‮Responsive‬‏ ‏‮Image‬‏ ‏‮Styles‬‏](https://www.drupal.org/docs/8/mobile-guide/responsive-images-in-drupal-8) ‏‮to‬‏ ‏‮reduce‬‏ ‏‮the‬‏ ‏‮size‬‏ ‏‮of‬‏ ‏‮images‬‏ ‏‮loaded‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮page‬‏. ‏‮If‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮using‬‏ ‏‮Views‬‏ ‏‮to‬‏ ‏‮show‬‏ ‏‮multiple‬‏ ‏‮content‬‏ ‏‮items‬‏ ‏‮on‬‏ ‏‮a‬‏ ‏‮page‬‏, ‏‮consider‬‏ ‏‮implementing‬‏ ‏‮pagination‬‏ ‏‮to‬‏ ‏‮limit‬‏ ‏‮the‬‏ ‏‮number‬‏ ‏‮of‬‏ ‏‮content‬‏ ‏‮items‬‏ ‏‮shown‬‏ ‏‮on‬‏ ‏‮a‬‏ ‏‮given‬‏ ‏‮page‬‏."
2779
2863
  },
2780
2864
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": {
2781
- "message": "‏‮Ensure‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮enabled‬‏ \"‏‮Aggregate‬‏ ‏‮CSS‬‏ ‏‮files‬‏\" ‏‮in‬‏ ‏‮the‬‏ \"‏‮Administration‬‏ » ‏‮Configuration‬‏ » ‏‮Development‬‏\" ‏‮page‬‏. ‏‮You‬‏ ‏‮can‬‏ ‏‮also‬‏ ‏‮configure‬‏ ‏‮more‬‏ ‏‮advanced‬‏ ‏‮aggregation‬‏ ‏‮options‬‏ ‏‮through‬‏ [‏‮additional‬‏ ‏‮modules‬‏](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=css+aggregation&solrsort=iss_project_release_usage+desc&op=Search) ‏‮to‬‏ ‏‮speed‬‏ ‏‮up‬‏ ‏‮your‬‏ ‏‮site‬‏ ‏‮by‬‏ ‏‮concatenating‬‏, ‏‮minifying‬‏, ‏‮and‬‏ ‏‮compressing‬‏ ‏‮your‬‏ ‏‮CSS‬‏ ‏‮styles‬‏."
2865
+ "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page. Ensure your Drupal site is running at least Drupal 10.1 for improved asset aggregation support."
2782
2866
  },
2783
2867
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": {
2784
- "message": "‏‮Ensure‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮enabled‬‏ \"‏‮Aggregate‬‏ ‏‮JavaScript‬‏ ‏‮files‬‏\" ‏‮in‬‏ ‏‮the‬‏ \"‏‮Administration‬‏ » ‏‮Configuration‬‏ » ‏‮Development‬‏\" ‏‮page‬‏. ‏‮You‬‏ ‏‮can‬‏ ‏‮also‬‏ ‏‮configure‬‏ ‏‮more‬‏ ‏‮advanced‬‏ ‏‮aggregation‬‏ ‏‮options‬‏ ‏‮through‬‏ [‏‮additional‬‏ ‏‮modules‬‏](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=javascript+aggregation&solrsort=iss_project_release_usage+desc&op=Search) ‏‮to‬‏ ‏‮speed‬‏ ‏‮up‬‏ ‏‮your‬‏ ‏‮site‬‏ ‏‮by‬‏ ‏‮concatenating‬‏, ‏‮minifying‬‏, ‏‮and‬‏ ‏‮compressing‬‏ ‏‮your‬‏ ‏‮JavaScript‬‏ ‏‮assets‬‏."
2868
+ "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page. Ensure your Drupal site is running at least Drupal 10.1 for improved asset aggregation support."
2785
2869
  },
2786
2870
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": {
2787
2871
  "message": "‏‮Consider‬‏ ‏‮removing‬‏ ‏‮unused‬‏ ‏‮CSS‬‏ ‏‮rules‬‏ ‏‮and‬‏ ‏‮only‬‏ ‏‮attach‬‏ ‏‮the‬‏ ‏‮needed‬‏ ‏‮Drupal‬‏ ‏‮libraries‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮relevant‬‏ ‏‮page‬‏ ‏‮or‬‏ ‏‮component‬‏ ‏‮in‬‏ ‏‮a‬‏ ‏‮page‬‏. ‏‮See‬‏ ‏‮the‬‏ [‏‮Drupal‬‏ ‏‮documentation‬‏ ‏‮link‬‏](https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-8-module#library) ‏‮for‬‏ ‏‮details‬‏. ‏‮To‬‏ ‏‮identify‬‏ ‏‮attached‬‏ ‏‮libraries‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮adding‬‏ ‏‮extraneous‬‏ ‏‮CSS‬‏, ‏‮try‬‏ ‏‮running‬‏ [‏‮code‬‏ ‏‮coverage‬‏](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ‏‮in‬‏ ‏‮Chrome‬‏ ‏‮DevTools‬‏. ‏‮You‬‏ ‏‮can‬‏ ‏‮identify‬‏ ‏‮the‬‏ ‏‮theme‬‏/‏‮module‬‏ ‏‮responsible‬‏ ‏‮from‬‏ ‏‮the‬‏ ‏‮URL‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮stylesheet‬‏ ‏‮when‬‏ ‏‮CSS‬‏ ‏‮aggregation‬‏ ‏‮is‬‏ ‏‮disabled‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮Drupal‬‏ ‏‮site‬‏. ‏‮Look‬‏ ‏‮out‬‏ ‏‮for‬‏ ‏‮themes‬‏/‏‮modules‬‏ ‏‮that‬‏ ‏‮have‬‏ ‏‮many‬‏ ‏‮stylesheets‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮list‬‏ ‏‮which‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮lot‬‏ ‏‮of‬‏ ‏‮red‬‏ ‏‮in‬‏ ‏‮code‬‏ ‏‮coverage‬‏. ‏‮A‬‏ ‏‮theme‬‏/‏‮module‬‏ ‏‮should‬‏ ‏‮only‬‏ ‏‮enqueue‬‏ ‏‮a‬‏ ‏‮stylesheet‬‏ ‏‮if‬‏ ‏‮it‬‏ ‏‮is‬‏ ‏‮actually‬‏ ‏‮used‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏."
@@ -2981,6 +3065,48 @@
2981
3065
  "node_modules/lighthouse-stack-packs/packs/next.js | uses-text-compression": {
2982
3066
  "message": "‏‮Enable‬‏ ‏‮compression‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮Next‬‏.‏‮js‬‏ ‏‮server‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://nextjs.org/docs/api-reference/next.config.js/compression)."
2983
3067
  },
3068
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | dom-size": {
3069
+ "message": "Contact your account manager to enable [`HTML Lazy Load`](https://support.nitropack.io/hc/en-us/articles/17144942904337). Configuring it will prioritize and optimize your page rendering performance."
3070
+ },
3071
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | font-display": {
3072
+ "message": "Use the [`Override Font Rendering Behavior`](https://support.nitropack.io/hc/en-us/articles/16547358865041) option in NitroPack to set a desired value for the CSS font-display rule."
3073
+ },
3074
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | modern-image-formats": {
3075
+ "message": "Use [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/16547237162513) to automatically convert your images to WebP."
3076
+ },
3077
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | offscreen-images": {
3078
+ "message": "Defer offscreen images by enabling [`Automatic Image Lazy Loading`](https://support.nitropack.io/hc/en-us/articles/12457493524369-NitroPack-Lazy-Loading-Feature-for-Images)."
3079
+ },
3080
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | render-blocking-resources": {
3081
+ "message": "Enable [`Remove render-blocking resources`](https://support.nitropack.io/hc/en-us/articles/13820893500049-How-to-Deal-with-Render-Blocking-Resources-in-NitroPack) in NitroPack for faster initial load times."
3082
+ },
3083
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | server-response-time": {
3084
+ "message": "Improve server response time and optimize perceived performance by activating [`Instant Load`](https://support.nitropack.io/hc/en-us/articles/16547340617361)."
3085
+ },
3086
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | unminified-css": {
3087
+ "message": "Enable [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) in your Caching settings to reduce the size of your CSS, HTML, and JavaScript files for faster load times."
3088
+ },
3089
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | unminified-javascript": {
3090
+ "message": "Enable [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) in your Caching settings to reduce the size of your JS, HTML, and CSS files for faster load times."
3091
+ },
3092
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | unused-css-rules": {
3093
+ "message": "Enable [`Reduce Unused CSS`](https://support.nitropack.io/hc/en-us/articles/360020418457-Reduce-Unused-CSS) to remove CSS rules that are not applicable to this page."
3094
+ },
3095
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | unused-javascript": {
3096
+ "message": "Configure [`Delayed Scripts`](https://support.nitropack.io/hc/en-us/articles/1500002600942-Delayed-Scripts) in NitroPack to delay loading of scripts until they are needed."
3097
+ },
3098
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-long-cache-ttl": {
3099
+ "message": "Go to the [`Improve Server Response Time`](https://support.nitropack.io/hc/en-us/articles/1500002321821-Improve-Server-Response-Time) feature in the `Caching` menu and adjust your page cache expiration time to improve loading times and user experience."
3100
+ },
3101
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-optimized-images": {
3102
+ "message": "Automatically compress, optimize, and convert your images into WebP by enabling the [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/14177271695121-How-to-serve-images-in-next-gen-formats-using-NitroPack) setting."
3103
+ },
3104
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-responsive-images": {
3105
+ "message": "Enable [`Adaptive Image Sizing`](https://support.nitropack.io/hc/en-us/articles/10123833029905-How-to-Enable-Adaptive-Image-Sizing-For-Your-Site) to preemptively optimize your images and make them match the dimensions of the containers they’re displayed in across all devices."
3106
+ },
3107
+ "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-text-compression": {
3108
+ "message": "Use [`Gzip compression`](https://support.nitropack.io/hc/en-us/articles/13229297479313-Enabling-GZIP-compression) in NitroPack to reduce the size of the files that are sent to the browser."
3109
+ },
2984
3110
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | modern-image-formats": {
2985
3111
  "message": "‏‮Use‬‏ ‏‮the‬‏ `nuxt/image` ‏‮component‬‏ ‏‮and‬‏ ‏‮set‬‏ `format=\"webp\"`. [‏‮Learn‬‏ ‏‮more‬‏](https://image.nuxtjs.org/components/nuxt-img#format)."
2986
3112
  },
@@ -3062,6 +3188,21 @@
3062
3188
  "node_modules/lighthouse-stack-packs/packs/react.js | user-timings": {
3063
3189
  "message": "‏‮Use‬‏ ‏‮the‬‏ ‏‮React‬‏ ‏‮DevTools‬‏ ‏‮Profiler‬‏, ‏‮which‬‏ ‏‮makes‬‏ ‏‮use‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮Profiler‬‏ ‏‮API‬‏, ‏‮to‬‏ ‏‮measure‬‏ ‏‮the‬‏ ‏‮rendering‬‏ ‏‮performance‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮components‬‏. [‏‮Learn‬‏ ‏‮more‬‏.](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)"
3064
3190
  },
3191
+ "node_modules/lighthouse-stack-packs/packs/wix.js | efficient-animated-content": {
3192
+ "message": "‏‮Place‬‏ ‏‮videos‬‏ ‏‮inside‬‏ `VideoBoxes`, ‏‮customize‬‏ ‏‮them‬‏ ‏‮using‬‏ `Video Masks` ‏‮or‬‏ ‏‮add‬‏ `Transparent Videos`. [‏‮Learn‬‏ ‏‮more‬‏](https://support.wix.com/en/article/wix-video-about-wix-video)."
3193
+ },
3194
+ "node_modules/lighthouse-stack-packs/packs/wix.js | modern-image-formats": {
3195
+ "message": "‏‮Upload‬‏ ‏‮images‬‏ ‏‮using‬‏ `Wix Media Manager` ‏‮to‬‏ ‏‮ensure‬‏ ‏‮they‬‏ ‏‮are‬‏ ‏‮automatically‬‏ ‏‮served‬‏ ‏‮as‬‏ ‏‮WebP‬‏. ‏‮Find‬‏ [‏‮more‬‏ ‏‮ways‬‏ ‏‮to‬‏ ‏‮optimize‬‏](https://support.wix.com/en/article/site-performance-optimizing-your-media) ‏‮your‬‏ ‏‮site‬‏'‏‮s‬‏ ‏‮media‬‏."
3196
+ },
3197
+ "node_modules/lighthouse-stack-packs/packs/wix.js | render-blocking-resources": {
3198
+ "message": "‏‮When‬‏ [‏‮adding‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮code‬‏](https://support.wix.com/en/article/site-performance-using-third-party-code-on-your-site) ‏‮in‬‏ ‏‮the‬‏ `Custom Code` ‏‮tab‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮site‬‏'‏‮s‬‏ ‏‮dashboard‬‏, ‏‮make‬‏ ‏‮sure‬‏ ‏‮it‬‏'‏‮s‬‏ ‏‮deferred‬‏ ‏‮or‬‏ ‏‮loaded‬‏ ‏‮at‬‏ ‏‮the‬‏ ‏‮end‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮code‬‏ ‏‮body‬‏. ‏‮Where‬‏ ‏‮possible‬‏, ‏‮use‬‏ ‏‮Wix‬‏’‏‮s‬‏ [‏‮integrations‬‏](https://support.wix.com/en/article/about-marketing-integrations) ‏‮to‬‏ ‏‮embed‬‏ ‏‮marketing‬‏ ‏‮tools‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮site‬‏. "
3199
+ },
3200
+ "node_modules/lighthouse-stack-packs/packs/wix.js | server-response-time": {
3201
+ "message": "‏‮Wix‬‏ ‏‮utilizes‬‏ ‏‮CDNs‬‏ ‏‮and‬‏ ‏‮caching‬‏ ‏‮to‬‏ ‏‮serve‬‏ ‏‮responses‬‏ ‏‮as‬‏ ‏‮fast‬‏ ‏‮as‬‏ ‏‮possible‬‏ ‏‮for‬‏ ‏‮most‬‏ ‏‮visitors‬‏. ‏‮Consider‬‏ [‏‮manually‬‏ ‏‮enabling‬‏ ‏‮caching‬‏](https://support.wix.com/en/article/site-performance-caching-pages-to-optimize-loading-speed) ‏‮for‬‏ ‏‮your‬‏ ‏‮site‬‏, ‏‮especially‬‏ ‏‮if‬‏ ‏‮using‬‏ `Velo`."
3202
+ },
3203
+ "node_modules/lighthouse-stack-packs/packs/wix.js | unused-javascript": {
3204
+ "message": "‏‮Review‬‏ ‏‮any‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮code‬‏ ‏‮you‬‏'‏‮ve‬‏ ‏‮added‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮site‬‏ ‏‮in‬‏ ‏‮the‬‏ `Custom Code` ‏‮tab‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮site‬‏'‏‮s‬‏ ‏‮dashboard‬‏ ‏‮and‬‏ ‏‮only‬‏ ‏‮keep‬‏ ‏‮the‬‏ ‏‮services‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮necessary‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮site‬‏. [‏‮Find‬‏ ‏‮out‬‏ ‏‮more‬‏](https://support.wix.com/en/article/site-performance-removing-unused-javascript)."
3205
+ },
3065
3206
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | efficient-animated-content": {
3066
3207
  "message": "‏‮Consider‬‏ ‏‮uploading‬‏ ‏‮your‬‏ ‏‮GIF‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮which‬‏ ‏‮will‬‏ ‏‮make‬‏ ‏‮it‬‏ ‏‮available‬‏ ‏‮to‬‏ ‏‮embed‬‏ ‏‮as‬‏ ‏‮an‬‏ ‏‮HTML‬‏5 ‏‮video‬‏."
3067
3208
  },
@@ -3167,6 +3308,9 @@
3167
3308
  "report/renderer/report-utils.js | dropdownSaveJSON": {
3168
3309
  "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮JSON‬‏"
3169
3310
  },
3311
+ "report/renderer/report-utils.js | dropdownViewUnthrottledTrace": {
3312
+ "message": "View Unthrottled Trace"
3313
+ },
3170
3314
  "report/renderer/report-utils.js | dropdownViewer": {
3171
3315
  "message": "‏‮Open‬‏ ‏‮in‬‏ ‏‮Viewer‬‏"
3172
3316
  },
@@ -3287,9 +3431,6 @@
3287
3431
  "report/renderer/report-utils.js | varianceDisclaimer": {
3288
3432
  "message": "‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏. ‏‮The‬‏ [‏‮performance‬‏ ‏‮score‬‏ ‏‮is‬‏ ‏‮calculated‬‏](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) ‏‮directly‬‏ ‏‮from‬‏ ‏‮these‬‏ ‏‮metrics‬‏."
3289
3433
  },
3290
- "report/renderer/report-utils.js | viewOriginalTraceLabel": {
3291
- "message": "‏‮View‬‏ ‏‮Original‬‏ ‏‮Trace‬‏"
3292
- },
3293
3434
  "report/renderer/report-utils.js | viewTraceLabel": {
3294
3435
  "message": "‏‮View‬‏ ‏‮Trace‬‏"
3295
3436
  },