lighthouse 12.3.0 → 12.4.0-dev.20250227

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 (142) hide show
  1. package/cli/test/smokehouse/core-tests.js +4 -0
  2. package/core/audits/audit.d.ts +5 -0
  3. package/core/audits/audit.js +12 -0
  4. package/core/audits/bootup-time.js +0 -2
  5. package/core/audits/byte-efficiency/duplicated-javascript.d.ts +4 -5
  6. package/core/audits/byte-efficiency/duplicated-javascript.js +9 -5
  7. package/core/audits/byte-efficiency/legacy-javascript.d.ts +2 -2
  8. package/core/audits/byte-efficiency/legacy-javascript.js +17 -5
  9. package/core/audits/byte-efficiency/polyfill-graph-data.json +48 -49
  10. package/core/audits/byte-efficiency/total-byte-weight.js +0 -2
  11. package/core/audits/clickjacking-mitigation.d.ts +42 -0
  12. package/core/audits/clickjacking-mitigation.js +139 -0
  13. package/core/audits/dobetterweb/dom-size.js +0 -2
  14. package/core/audits/insights/README.md +3 -0
  15. package/core/audits/insights/cls-culprits-insight.d.ts +25 -0
  16. package/core/audits/insights/cls-culprits-insight.js +137 -0
  17. package/core/audits/insights/document-latency-insight.d.ts +11 -0
  18. package/core/audits/insights/document-latency-insight.js +48 -0
  19. package/core/audits/insights/dom-size-insight.d.ts +11 -0
  20. package/core/audits/insights/dom-size-insight.js +85 -0
  21. package/core/audits/insights/font-display-insight.d.ts +11 -0
  22. package/core/audits/insights/font-display-insight.js +53 -0
  23. package/core/audits/insights/forced-reflow-insight.d.ts +11 -0
  24. package/core/audits/insights/forced-reflow-insight.js +52 -0
  25. package/core/audits/insights/image-delivery-insight.d.ts +11 -0
  26. package/core/audits/insights/image-delivery-insight.js +83 -0
  27. package/core/audits/insights/insight-audit.d.ts +23 -0
  28. package/core/audits/insights/insight-audit.js +133 -0
  29. package/core/audits/insights/interaction-to-next-paint-insight.d.ts +11 -0
  30. package/core/audits/insights/interaction-to-next-paint-insight.js +71 -0
  31. package/core/audits/insights/lcp-discovery-insight.d.ts +11 -0
  32. package/core/audits/insights/lcp-discovery-insight.js +48 -0
  33. package/core/audits/insights/lcp-phases-insight.d.ts +16 -0
  34. package/core/audits/insights/lcp-phases-insight.js +87 -0
  35. package/core/audits/insights/long-critical-network-tree-insight.d.ts +11 -0
  36. package/core/audits/insights/long-critical-network-tree-insight.js +53 -0
  37. package/core/audits/insights/render-blocking-insight.d.ts +11 -0
  38. package/core/audits/insights/render-blocking-insight.js +57 -0
  39. package/core/audits/insights/slow-css-selector-insight.d.ts +11 -0
  40. package/core/audits/insights/slow-css-selector-insight.js +52 -0
  41. package/core/audits/insights/third-parties-insight.d.ts +28 -0
  42. package/core/audits/insights/third-parties-insight.js +90 -0
  43. package/core/audits/insights/viewport-insight.d.ts +11 -0
  44. package/core/audits/insights/viewport-insight.js +54 -0
  45. package/core/audits/layout-shifts.d.ts +0 -1
  46. package/core/audits/layout-shifts.js +18 -21
  47. package/core/audits/mainthread-work-breakdown.js +0 -2
  48. package/core/audits/seo/is-crawlable.d.ts +1 -0
  49. package/core/audits/server-response-time.js +0 -1
  50. package/core/computed/metrics/lantern-metric.js +5 -1
  51. package/core/computed/trace-engine-result.js +71 -17
  52. package/core/config/default-config.js +37 -1
  53. package/core/gather/gatherers/inspector-issues.js +3 -0
  54. package/core/gather/gatherers/trace-elements.d.ts +10 -2
  55. package/core/gather/gatherers/trace-elements.js +89 -12
  56. package/core/lib/bf-cache-strings.d.ts +7 -4
  57. package/core/lib/bf-cache-strings.js +174 -140
  58. package/core/lib/cdt/generated/ParsedURL.d.ts +1 -0
  59. package/core/lib/cdt/generated/ParsedURL.js +16 -4
  60. package/core/lib/cdt/generated/SourceMap.d.ts +32 -5
  61. package/core/lib/cdt/generated/SourceMap.js +192 -100
  62. package/core/lib/deprecations-strings.d.ts +78 -98
  63. package/core/lib/deprecations-strings.js +23 -41
  64. package/core/lib/i18n/i18n.d.ts +1 -0
  65. package/core/lib/i18n/i18n.js +2 -0
  66. package/core/lib/trace-engine.d.ts +1 -0
  67. package/core/lib/trace-engine.js +2 -0
  68. package/core/runner.js +2 -0
  69. package/dist/report/bundle.esm.js +196 -9
  70. package/dist/report/flow.js +197 -10
  71. package/dist/report/standalone.js +197 -10
  72. package/flow-report/src/i18n/i18n.d.ts +2 -0
  73. package/package.json +15 -13
  74. package/readme.md +3 -0
  75. package/report/assets/styles.css +179 -5
  76. package/report/assets/templates.html +14 -0
  77. package/report/renderer/components.js +9 -3
  78. package/report/renderer/details-renderer.d.ts +5 -0
  79. package/report/renderer/details-renderer.js +24 -0
  80. package/report/renderer/dom.d.ts +12 -1
  81. package/report/renderer/dom.js +26 -1
  82. package/report/renderer/i18n-formatter.d.ts +1 -1
  83. package/report/renderer/performance-category-renderer.d.ts +10 -0
  84. package/report/renderer/performance-category-renderer.js +81 -20
  85. package/report/renderer/report-utils.d.ts +1 -0
  86. package/report/renderer/report-utils.js +2 -0
  87. package/report/renderer/topbar-features.js +7 -0
  88. package/shared/localization/locales/ar-XB.json +74 -26
  89. package/shared/localization/locales/ar.json +76 -28
  90. package/shared/localization/locales/bg.json +74 -26
  91. package/shared/localization/locales/ca.json +74 -26
  92. package/shared/localization/locales/cs.json +74 -26
  93. package/shared/localization/locales/da.json +74 -26
  94. package/shared/localization/locales/de.json +75 -27
  95. package/shared/localization/locales/el.json +74 -26
  96. package/shared/localization/locales/en-GB.json +74 -26
  97. package/shared/localization/locales/en-US.json +288 -30
  98. package/shared/localization/locales/en-XA.json +48 -24
  99. package/shared/localization/locales/en-XL.json +288 -30
  100. package/shared/localization/locales/es-419.json +74 -26
  101. package/shared/localization/locales/es.json +74 -26
  102. package/shared/localization/locales/fi.json +74 -26
  103. package/shared/localization/locales/fil.json +75 -27
  104. package/shared/localization/locales/fr.json +74 -26
  105. package/shared/localization/locales/he.json +82 -34
  106. package/shared/localization/locales/hi.json +74 -26
  107. package/shared/localization/locales/hr.json +75 -27
  108. package/shared/localization/locales/hu.json +74 -26
  109. package/shared/localization/locales/id.json +74 -26
  110. package/shared/localization/locales/it.json +85 -37
  111. package/shared/localization/locales/ja.json +75 -27
  112. package/shared/localization/locales/ko.json +75 -27
  113. package/shared/localization/locales/lt.json +75 -27
  114. package/shared/localization/locales/lv.json +74 -26
  115. package/shared/localization/locales/nl.json +74 -26
  116. package/shared/localization/locales/no.json +75 -27
  117. package/shared/localization/locales/pl.json +74 -26
  118. package/shared/localization/locales/pt-PT.json +74 -26
  119. package/shared/localization/locales/pt.json +74 -26
  120. package/shared/localization/locales/ro.json +74 -26
  121. package/shared/localization/locales/ru.json +74 -26
  122. package/shared/localization/locales/sk.json +74 -26
  123. package/shared/localization/locales/sl.json +74 -26
  124. package/shared/localization/locales/sr-Latn.json +74 -26
  125. package/shared/localization/locales/sr.json +74 -26
  126. package/shared/localization/locales/sv.json +74 -26
  127. package/shared/localization/locales/ta.json +74 -26
  128. package/shared/localization/locales/te.json +74 -26
  129. package/shared/localization/locales/th.json +76 -28
  130. package/shared/localization/locales/tr.json +74 -26
  131. package/shared/localization/locales/uk.json +74 -26
  132. package/shared/localization/locales/vi.json +74 -26
  133. package/shared/localization/locales/zh-HK.json +75 -27
  134. package/shared/localization/locales/zh-TW.json +74 -26
  135. package/shared/localization/locales/zh.json +74 -26
  136. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +3 -0
  137. package/types/artifacts.d.ts +5 -3
  138. package/types/audit.d.ts +2 -0
  139. package/types/lhr/audit-details.d.ts +13 -1
  140. package/types/lhr/audit-result.d.ts +2 -0
  141. package/core/gather/gatherers/root-causes.d.ts +0 -19
  142. package/core/gather/gatherers/root-causes.js +0 -144
@@ -660,7 +660,10 @@
660
660
  "message": "Use video formats for animated content"
661
661
  },
662
662
  "core/audits/byte-efficiency/legacy-javascript.js | description": {
663
- "message": "Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers. For your bundled JavaScript, adopt a modern script deployment strategy using module/nomodule feature detection to reduce the amount of code shipped to modern browsers, while retaining support for legacy browsers. [Learn how to use modern JavaScript](https://web.dev/articles/publish-modern-javascript)"
663
+ "message": "Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers. For your bundled JavaScript, adopt a modern script deployment strategy using [module/nomodule feature detection](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/) to reduce the amount of code shipped to modern browsers, while retaining support for legacy browsers. [Learn how to serve modern JavaScript](https://web.dev/articles/codelab-serve-modern-code)"
664
+ },
665
+ "core/audits/byte-efficiency/legacy-javascript.js | detectedCoreJs2Warning": {
666
+ "message": "Version 2 of core-js was detected on the page. You should upgrade to version 3 for many performance improvements."
664
667
  },
665
668
  "core/audits/byte-efficiency/legacy-javascript.js | title": {
666
669
  "message": "Avoid serving legacy JavaScript to modern browsers"
@@ -761,6 +764,18 @@
761
764
  "core/audits/byte-efficiency/uses-text-compression.js | title": {
762
765
  "message": "Enable text compression"
763
766
  },
767
+ "core/audits/clickjacking-mitigation.js | columnSeverity": {
768
+ "message": "Severity"
769
+ },
770
+ "core/audits/clickjacking-mitigation.js | description": {
771
+ "message": "The `X-Frame-Options` (XFO) header or the `frame-ancestors` directive in the `Content-Security-Policy` (CSP) header control where a page can be embedded. These can mitigate clickjacking attacks by blocking some or all sites from embedding the page. [Learn more about mitigating clickjacking](https://developer.chrome.com/docs/lighthouse/best-practices/clickjacking-mitigation)."
772
+ },
773
+ "core/audits/clickjacking-mitigation.js | noClickjackingMitigation": {
774
+ "message": "No frame control policy found"
775
+ },
776
+ "core/audits/clickjacking-mitigation.js | title": {
777
+ "message": "Mitigate clickjacking with XFO or CSP"
778
+ },
764
779
  "core/audits/critical-request-chains.js | description": {
765
780
  "message": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn how to avoid chaining critical requests](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains/)."
766
781
  },
@@ -1040,6 +1055,9 @@
1040
1055
  "core/audits/image-size-responsive.js | title": {
1041
1056
  "message": "Serves images with appropriate resolution"
1042
1057
  },
1058
+ "core/audits/insights/cls-culprits-insight.js | columnScore": {
1059
+ "message": "Layout shift score"
1060
+ },
1043
1061
  "core/audits/is-on-https.js | allowed": {
1044
1062
  "message": "Allowed"
1045
1063
  },
@@ -1112,9 +1130,6 @@
1112
1130
  "core/audits/layout-shifts.js | rootCauseInjectedIframe": {
1113
1131
  "message": "Injected iframe"
1114
1132
  },
1115
- "core/audits/layout-shifts.js | rootCauseRenderBlockingRequest": {
1116
- "message": "A late network request adjusted the page layout"
1117
- },
1118
1133
  "core/audits/layout-shifts.js | rootCauseUnsizedMedia": {
1119
1134
  "message": "Media element lacking an explicit size"
1120
1135
  },
@@ -1661,6 +1676,9 @@
1661
1676
  "core/config/default-config.js | firstPaintImprovementsGroupTitle": {
1662
1677
  "message": "First Paint Improvements"
1663
1678
  },
1679
+ "core/config/default-config.js | insightGroupTitle": {
1680
+ "message": "Insights"
1681
+ },
1664
1682
  "core/config/default-config.js | metricGroupTitle": {
1665
1683
  "message": "Metrics"
1666
1684
  },
@@ -1736,9 +1754,6 @@
1736
1754
  "core/lib/bf-cache-strings.js | appBanner": {
1737
1755
  "message": "Pages that requested an AppBanner are not currently eligible for back/forward cache."
1738
1756
  },
1739
- "core/lib/bf-cache-strings.js | authorizationHeader": {
1740
- "message": "Back/forward cache is disabled due to a keepalive request."
1741
- },
1742
1757
  "core/lib/bf-cache-strings.js | backForwardCacheDisabled": {
1743
1758
  "message": "Back/forward cache is disabled by flags. Visit chrome://flags/#back-forward-cache to enable it locally on this device."
1744
1759
  },
@@ -1769,6 +1784,9 @@
1769
1784
  "core/lib/bf-cache-strings.js | containsPlugins": {
1770
1785
  "message": "Pages containing plugins are not currently eligible for back/forward cache."
1771
1786
  },
1787
+ "core/lib/bf-cache-strings.js | contentDiscarded": {
1788
+ "message": "Undefined"
1789
+ },
1772
1790
  "core/lib/bf-cache-strings.js | contentFileChooser": {
1773
1791
  "message": "Pages that use FileChooser API are not eligible for back/forward cache."
1774
1792
  },
@@ -1797,7 +1815,7 @@
1797
1815
  "message": "Pages that use Serial API are not eligible for back/forward cache."
1798
1816
  },
1799
1817
  "core/lib/bf-cache-strings.js | contentWebAuthenticationAPI": {
1800
- "message": "Pages that use WebAuthentication API are not eligible for back/forward cache."
1818
+ "message": "Pages that use WebAuthetication API are not eligible for back/forward cache."
1801
1819
  },
1802
1820
  "core/lib/bf-cache-strings.js | contentWebBluetooth": {
1803
1821
  "message": "Pages that use WebBluetooth API are not eligible for back/forward cache."
@@ -1875,7 +1893,7 @@
1875
1893
  "message": "Pages that have granted media stream access are not currently eligible for back/forward cache."
1876
1894
  },
1877
1895
  "core/lib/bf-cache-strings.js | haveInnerContents": {
1878
- "message": "Pages that use portals are not currently eligible for back/forward cache."
1896
+ "message": "Pages that have certain kinds of embedded content (e.g. PDFs) are not currently eligible for back/forward cache."
1879
1897
  },
1880
1898
  "core/lib/bf-cache-strings.js | idleManager": {
1881
1899
  "message": "Pages that use IdleManager are not currently eligible for back/forward cache."
@@ -1898,6 +1916,9 @@
1898
1916
  "core/lib/bf-cache-strings.js | internalError": {
1899
1917
  "message": "Internal error."
1900
1918
  },
1919
+ "core/lib/bf-cache-strings.js | jsNetworkRequestReceivedCacheControlNoStoreResource": {
1920
+ "message": "Back/forward cache is disabled because some JavaScript network request received resource with `Cache-Control: no-store` header."
1921
+ },
1901
1922
  "core/lib/bf-cache-strings.js | keepaliveRequest": {
1902
1923
  "message": "Back/forward cache is disabled due to a keepalive request."
1903
1924
  },
@@ -1955,9 +1976,6 @@
1955
1976
  "core/lib/bf-cache-strings.js | pictureInPicture": {
1956
1977
  "message": "Pages that use Picture-in-Picture are not currently eligible for back/forward cache."
1957
1978
  },
1958
- "core/lib/bf-cache-strings.js | portal": {
1959
- "message": "Pages that use portals are not currently eligible for back/forward cache."
1960
- },
1961
1979
  "core/lib/bf-cache-strings.js | printing": {
1962
1980
  "message": "Pages that show Printing UI are not currently eligible for back/forward cache."
1963
1981
  },
@@ -2063,15 +2081,24 @@
2063
2081
  "core/lib/bf-cache-strings.js | webRTC": {
2064
2082
  "message": "Pages with WebRTC cannot enter back/forward cache."
2065
2083
  },
2084
+ "core/lib/bf-cache-strings.js | webRTCSticky": {
2085
+ "message": "Back/forward cache is disabled because WebRTC has been used."
2086
+ },
2066
2087
  "core/lib/bf-cache-strings.js | webShare": {
2067
2088
  "message": "Pages that use WebShare are not currently eligible for back/forwad cache."
2068
2089
  },
2069
2090
  "core/lib/bf-cache-strings.js | webSocket": {
2070
2091
  "message": "Pages with WebSocket cannot enter back/forward cache."
2071
2092
  },
2093
+ "core/lib/bf-cache-strings.js | webSocketSticky": {
2094
+ "message": "Back/forward cache is disabled because WebSocket has been used."
2095
+ },
2072
2096
  "core/lib/bf-cache-strings.js | webTransport": {
2073
2097
  "message": "Pages with WebTransport cannot enter back/forward cache."
2074
2098
  },
2099
+ "core/lib/bf-cache-strings.js | webTransportSticky": {
2100
+ "message": "Back/forward cache is disabled because WebTransport has been used."
2101
+ },
2075
2102
  "core/lib/bf-cache-strings.js | webXR": {
2076
2103
  "message": "Pages that use WebXR are not currently eligible for back/forward cache."
2077
2104
  },
@@ -2147,6 +2174,9 @@
2147
2174
  "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": {
2148
2175
  "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector."
2149
2176
  },
2177
+ "core/lib/deprecations-strings.js | CSSValueAppearanceSliderVertical": {
2178
+ "message": "CSS appearance value `slider-vertical` is not standardized and will be removed."
2179
+ },
2150
2180
  "core/lib/deprecations-strings.js | CanRequestURLHTTPContainingNewline": {
2151
2181
  "message": "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources."
2152
2182
  },
@@ -2175,13 +2205,7 @@
2175
2205
  "message": "DOM Mutation Events, including `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, and `DOMCharacterDataModified` are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use `MutationObserver` instead."
2176
2206
  },
2177
2207
  "core/lib/deprecations-strings.js | DataUrlInSvgUse": {
2178
- "message": "Support for data: URLs in SVG <use> element is deprecated and it will be removed in the future."
2179
- },
2180
- "core/lib/deprecations-strings.js | DocumentDomainSettingWithoutOriginAgentClusterHeader": {
2181
- "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details."
2182
- },
2183
- "core/lib/deprecations-strings.js | ExpectCTHeader": {
2184
- "message": "The `Expect-CT` header is deprecated and will be removed. Chrome requires Certificate Transparency for all publicly trusted certificates issued after April 30, 2018."
2208
+ "message": "Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future."
2185
2209
  },
2186
2210
  "core/lib/deprecations-strings.js | GeolocationInsecureOrigin": {
2187
2211
  "message": "`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."
@@ -2216,9 +2240,6 @@
2216
2240
  "core/lib/deprecations-strings.js | NoSysexWebMIDIWithoutPermission": {
2217
2241
  "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`."
2218
2242
  },
2219
- "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": {
2220
- "message": "The older, non-standardized `shadowroot` attribute is deprecated, and will *no longer function* in M119. Please use the new, standardized `shadowrootmode` attribute instead."
2221
- },
2222
2243
  "core/lib/deprecations-strings.js | NotificationInsecureOrigin": {
2223
2244
  "message": "The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."
2224
2245
  },
@@ -2297,18 +2318,18 @@
2297
2318
  "core/lib/deprecations-strings.js | TextToSpeech_DisallowedByAutoplay": {
2298
2319
  "message": "`speechSynthesis.speak()` without user activation is deprecated and will be removed."
2299
2320
  },
2321
+ "core/lib/deprecations-strings.js | UnloadHandler": {
2322
+ "message": "Unload event listeners are deprecated and will be removed."
2323
+ },
2300
2324
  "core/lib/deprecations-strings.js | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
2301
2325
  "message": "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/."
2302
2326
  },
2327
+ "core/lib/deprecations-strings.js | WebGPULimitMaxInterStageShaderComponents": {
2328
+ "message": "The WebGPU limit `maxInterStageShaderComponents` is deprecated, instead use the WebGPU limit `maxInterStageShaderVariables`."
2329
+ },
2303
2330
  "core/lib/deprecations-strings.js | WebSQL": {
2304
2331
  "message": "Web SQL is deprecated. Please use SQLite WebAssembly or Indexed Database"
2305
2332
  },
2306
- "core/lib/deprecations-strings.js | WindowPlacementPermissionDescriptorUsed": {
2307
- "message": "The permission descriptor `window-placement` is deprecated. Use `window-management` instead. For more help, check https://bit.ly/window-placement-rename."
2308
- },
2309
- "core/lib/deprecations-strings.js | WindowPlacementPermissionPolicyParsed": {
2310
- "message": "The permission policy `window-placement` is deprecated. Use `window-management` instead. For more help, check https://bit.ly/window-placement-rename."
2311
- },
2312
2333
  "core/lib/deprecations-strings.js | XHRJSONEncodingDetection": {
2313
2334
  "message": "UTF-16 is not supported by response json in `XMLHttpRequest`"
2314
2335
  },
@@ -2450,6 +2471,9 @@
2450
2471
  "core/lib/i18n/i18n.js | thirdPartyResourceType": {
2451
2472
  "message": "Third-party"
2452
2473
  },
2474
+ "core/lib/i18n/i18n.js | total": {
2475
+ "message": "Total"
2476
+ },
2453
2477
  "core/lib/i18n/i18n.js | totalBlockingTimeMetric": {
2454
2478
  "message": "Total Blocking Time"
2455
2479
  },
@@ -2669,71 +2693,302 @@
2669
2693
  "flow-report/src/i18n/ui-strings.js | title": {
2670
2694
  "message": "Lighthouse User Flow Report"
2671
2695
  },
2696
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | animation": {
2697
+ "message": "Animation"
2698
+ },
2672
2699
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
2673
2700
  "message": "Layout shifts occur when elements move absent any user interaction. [Investigate the causes of layout shifts](https://web.dev/articles/optimize-cls), such as elements being added, removed, or their fonts changing as the page loads."
2674
2701
  },
2702
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | fontRequest": {
2703
+ "message": "Font request"
2704
+ },
2705
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | injectedIframe": {
2706
+ "message": "Injected iframe"
2707
+ },
2708
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | layoutShiftCluster": {
2709
+ "message": "Layout shift cluster @ {PH1}"
2710
+ },
2711
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | noCulprits": {
2712
+ "message": "Could not detect any layout shift culprits"
2713
+ },
2714
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | noLayoutShifts": {
2715
+ "message": "No layout shifts"
2716
+ },
2675
2717
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
2676
2718
  "message": "Layout shift culprits"
2677
2719
  },
2720
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | topCulprits": {
2721
+ "message": "Top layout shift culprits"
2722
+ },
2723
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImages": {
2724
+ "message": "Unsized Images"
2725
+ },
2726
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstCluster": {
2727
+ "message": "Worst cluster"
2728
+ },
2729
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstLayoutShiftCluster": {
2730
+ "message": "Worst layout shift cluster"
2731
+ },
2732
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
2733
+ "message": "A large DOM can increase the duration of style calculations and layout reflows, impacting page responsiveness. A large DOM will also increase memory usage. [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)."
2734
+ },
2735
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | element": {
2736
+ "message": "Element"
2737
+ },
2738
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | maxChildren": {
2739
+ "message": "Most children"
2740
+ },
2741
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | maxDOMDepth": {
2742
+ "message": "DOM depth"
2743
+ },
2744
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | statistic": {
2745
+ "message": "Statistic"
2746
+ },
2747
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
2748
+ "message": "Optimize DOM size"
2749
+ },
2750
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | totalElements": {
2751
+ "message": "Total elements"
2752
+ },
2753
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | value": {
2754
+ "message": "Value"
2755
+ },
2678
2756
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2679
2757
  "message": "Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response, and enabling text compression."
2680
2758
  },
2759
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2760
+ "message": "Had redirects"
2761
+ },
2762
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2763
+ "message": "Server responded slowly"
2764
+ },
2765
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2766
+ "message": "No compression applied"
2767
+ },
2768
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2769
+ "message": "Avoids redirects"
2770
+ },
2771
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2772
+ "message": "Server responds quickly"
2773
+ },
2774
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2775
+ "message": "Applies text compression"
2776
+ },
2777
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | redirectsLabel": {
2778
+ "message": "Redirects"
2779
+ },
2780
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | serverResponseTimeLabel": {
2781
+ "message": "Server response time"
2782
+ },
2681
2783
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": {
2682
2784
  "message": "Document request latency"
2683
2785
  },
2786
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | uncompressedDownload": {
2787
+ "message": "Uncompressed download"
2788
+ },
2684
2789
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": {
2685
2790
  "message": "Consider setting [font-display](https://developer.chrome.com/blog/font-display) to swap or optional to ensure text is consistently visible. swap can be further optimized to mitigate layout shifts with [font metric overrides](https://developer.chrome.com/blog/font-fallbacks)."
2686
2791
  },
2792
+ "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | fontColumn": {
2793
+ "message": "Font"
2794
+ },
2687
2795
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
2688
2796
  "message": "Font display"
2689
2797
  },
2798
+ "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2799
+ "message": "Wasted time"
2800
+ },
2801
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2802
+ "message": "Many APIs, typically reading layout geometry, force the rendering engine to pause script execution in order to calculate the style and layout. Learn more about [forced reflow](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) and its mitigations."
2803
+ },
2804
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | relatedStackTrace": {
2805
+ "message": "Stack trace"
2806
+ },
2807
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | title": {
2808
+ "message": "Forced reflow"
2809
+ },
2810
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | topTimeConsumingFunctionCall": {
2811
+ "message": "Top function call"
2812
+ },
2813
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | totalReflowTime": {
2814
+ "message": "Total reflow time"
2815
+ },
2690
2816
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2691
2817
  "message": "Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
2692
2818
  },
2819
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | noOptimizableImages": {
2820
+ "message": "No optimizable images"
2821
+ },
2822
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | optimizeFile": {
2823
+ "message": "Optimize file size"
2824
+ },
2825
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | others": {
2826
+ "message": "{PH1} others"
2827
+ },
2693
2828
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
2694
2829
  "message": "Improve image delivery"
2695
2830
  },
2831
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
2832
+ "message": "Increasing the image compression factor could improve this image's download size. (Est {PH1})"
2833
+ },
2834
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
2835
+ "message": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size. (Est {PH1})"
2836
+ },
2837
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
2838
+ "message": "This image file is larger than it needs to be ({PH2}) for its displayed dimensions ({PH3}). Use responsive images to reduce the image download size. (Est {PH1})"
2839
+ },
2840
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
2841
+ "message": "Using video formats instead of GIFs can improve the download size of animated content. (Est {PH1})"
2842
+ },
2696
2843
  "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
2697
2844
  "message": "Start investigating with the longest phase. [Delays can be minimized](https://web.dev/articles/optimize-inp#optimize_interactions). To reduce processing duration, [optimize the main-thread costs](https://web.dev/articles/optimize-long-tasks), often JS."
2698
2845
  },
2846
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | duration": {
2847
+ "message": "Duration"
2848
+ },
2849
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | inputDelay": {
2850
+ "message": "Input delay"
2851
+ },
2852
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | noInteractions": {
2853
+ "message": "No interactions detected"
2854
+ },
2855
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | phase": {
2856
+ "message": "Phase"
2857
+ },
2858
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | presentationDelay": {
2859
+ "message": "Presentation delay"
2860
+ },
2861
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | processingDuration": {
2862
+ "message": "Processing duration"
2863
+ },
2699
2864
  "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": {
2700
2865
  "message": "INP by phase"
2701
2866
  },
2702
2867
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
2703
2868
  "message": "Optimize LCP by making the LCP image [discoverable](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) from the HTML immediately, and [avoiding lazy-loading](https://web.dev/articles/lcp-lazy-loading)"
2704
2869
  },
2870
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | fetchPriorityApplied": {
2871
+ "message": "fetchpriority=high applied"
2872
+ },
2873
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | fetchPriorityShouldBeApplied": {
2874
+ "message": "fetchpriority=high should be applied"
2875
+ },
2876
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | lazyLoadNotApplied": {
2877
+ "message": "lazy load not applied"
2878
+ },
2879
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | lcpLoadDelay": {
2880
+ "message": "LCP image loaded {PH1} after earliest start point."
2881
+ },
2882
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | noLcp": {
2883
+ "message": "No LCP detected"
2884
+ },
2885
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | noLcpResource": {
2886
+ "message": "No LCP resource detected because the LCP is not an image"
2887
+ },
2888
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | requestDiscoverable": {
2889
+ "message": "Request is discoverable in initial document"
2890
+ },
2705
2891
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
2706
2892
  "message": "LCP request discovery"
2707
2893
  },
2708
2894
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": {
2709
2895
  "message": "Each [phase has specific improvement strategies](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideally, most of the LCP time should be spent on loading the resources, not within delays."
2710
2896
  },
2897
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | elementRenderDelay": {
2898
+ "message": "Element render delay"
2899
+ },
2900
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | noLcp": {
2901
+ "message": "No LCP detected"
2902
+ },
2903
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | percentLCP": {
2904
+ "message": "% of LCP"
2905
+ },
2906
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | phase": {
2907
+ "message": "Phase"
2908
+ },
2909
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDelay": {
2910
+ "message": "Resource load delay"
2911
+ },
2912
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDuration": {
2913
+ "message": "Resource load duration"
2914
+ },
2915
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | timeToFirstByte": {
2916
+ "message": "Time to first byte"
2917
+ },
2711
2918
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": {
2712
2919
  "message": "LCP by phase"
2713
2920
  },
2921
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LongCriticalNetworkTree.js | description": {
2922
+ "message": "[Avoid chaining critical requests](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains) by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load."
2923
+ },
2924
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LongCriticalNetworkTree.js | noLongCriticalNetworkTree": {
2925
+ "message": "No rendering tasks impacted by long critical network tree"
2926
+ },
2927
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LongCriticalNetworkTree.js | title": {
2928
+ "message": "Long critical network tree"
2929
+ },
2714
2930
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
2715
2931
  "message": "Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) can move these network requests out of the critical path."
2716
2932
  },
2933
+ "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | duration": {
2934
+ "message": "Duration"
2935
+ },
2936
+ "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | noRenderBlocking": {
2937
+ "message": "No render blocking requests for this navigation"
2938
+ },
2939
+ "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | renderBlockingRequest": {
2940
+ "message": "Request"
2941
+ },
2717
2942
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": {
2718
2943
  "message": "Render blocking requests"
2719
2944
  },
2720
2945
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": {
2721
2946
  "message": "If Recalculate Style costs remain high, selector optimization can reduce them. [Optimize the selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats) with both high elapsed time and high slow-path %. Simpler selectors, fewer selectors, a smaller DOM, and a shallower DOM will all reduce matching costs."
2722
2947
  },
2948
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | elapsed": {
2949
+ "message": "Elapsed time"
2950
+ },
2951
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | enableSelectorData": {
2952
+ "message": "No CSS selector data was found. CSS selector stats need to be enabled in the performance panel settings."
2953
+ },
2954
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | matchAttempts": {
2955
+ "message": "Match attempts"
2956
+ },
2957
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | matchCount": {
2958
+ "message": "Match count"
2959
+ },
2723
2960
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": {
2724
2961
  "message": "CSS Selector costs"
2725
2962
  },
2963
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | topSelectors": {
2964
+ "message": "Top selectors"
2965
+ },
2966
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | total": {
2967
+ "message": "Total"
2968
+ },
2969
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | columnMainThreadTime": {
2970
+ "message": "Main thread time"
2971
+ },
2972
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | columnThirdParty": {
2973
+ "message": "Third party"
2974
+ },
2975
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | columnTransferSize": {
2976
+ "message": "Transfer size"
2977
+ },
2726
2978
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
2727
2979
  "message": "Third party code can significantly impact load performance. [Reduce and defer loading of third party code](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) to prioritize your page's content."
2728
2980
  },
2981
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | noThirdParties": {
2982
+ "message": "No third parties found"
2983
+ },
2729
2984
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": {
2730
2985
  "message": "Third parties"
2731
2986
  },
2732
2987
  "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
2733
- "message": "The page's viewport is not mobile-optimized, so tap interactions may be [delayed by up to 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)."
2988
+ "message": "Tap interactions may be [delayed by up to 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) if the viewport is not optimized for mobile."
2734
2989
  },
2735
2990
  "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
2736
- "message": "Viewport not optimized for mobile"
2991
+ "message": "Optimize viewport for mobile"
2737
2992
  },
2738
2993
  "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
2739
2994
  "message": "For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage when the content is offscreen."
@@ -3227,6 +3482,9 @@
3227
3482
  "report/renderer/report-utils.js | dropdownDarkTheme": {
3228
3483
  "message": "Toggle Dark Theme"
3229
3484
  },
3485
+ "report/renderer/report-utils.js | dropdownInsightsToggle": {
3486
+ "message": "Toggle experimental insights"
3487
+ },
3230
3488
  "report/renderer/report-utils.js | dropdownPrintExpanded": {
3231
3489
  "message": "Print Expanded"
3232
3490
  },