lighthouse 12.2.3-dev.20241202 → 12.2.3-dev.20241204

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 (62) hide show
  1. package/cli/test/smokehouse/core-tests.js +4 -0
  2. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
  3. package/core/audits/has-hsts.d.ts +44 -0
  4. package/core/audits/has-hsts.js +208 -0
  5. package/core/computed/metrics/cumulative-layout-shift.js +4 -4
  6. package/core/computed/metrics/lantern-metric.js +4 -2
  7. package/core/computed/navigation-insights.d.ts +1 -1
  8. package/core/computed/network-analysis.js +13 -1
  9. package/core/computed/trace-engine-result.d.ts +4 -0
  10. package/core/computed/trace-engine-result.js +30 -4
  11. package/core/config/default-config.js +2 -0
  12. package/core/lib/trace-engine.d.ts +1 -1
  13. package/core/lib/trace-engine.js +1 -1
  14. package/package.json +2 -2
  15. package/shared/localization/locales/ar-XB.json +60 -0
  16. package/shared/localization/locales/ar.json +60 -0
  17. package/shared/localization/locales/bg.json +60 -0
  18. package/shared/localization/locales/ca.json +60 -0
  19. package/shared/localization/locales/cs.json +60 -0
  20. package/shared/localization/locales/da.json +60 -0
  21. package/shared/localization/locales/de.json +60 -0
  22. package/shared/localization/locales/el.json +60 -0
  23. package/shared/localization/locales/en-GB.json +60 -0
  24. package/shared/localization/locales/en-US.json +136 -40
  25. package/shared/localization/locales/en-XL.json +136 -40
  26. package/shared/localization/locales/es-419.json +60 -0
  27. package/shared/localization/locales/es.json +60 -0
  28. package/shared/localization/locales/fi.json +60 -0
  29. package/shared/localization/locales/fil.json +60 -0
  30. package/shared/localization/locales/fr.json +60 -0
  31. package/shared/localization/locales/he.json +60 -0
  32. package/shared/localization/locales/hi.json +60 -0
  33. package/shared/localization/locales/hr.json +60 -0
  34. package/shared/localization/locales/hu.json +60 -0
  35. package/shared/localization/locales/id.json +60 -0
  36. package/shared/localization/locales/it.json +60 -0
  37. package/shared/localization/locales/ja.json +60 -0
  38. package/shared/localization/locales/ko.json +60 -0
  39. package/shared/localization/locales/lt.json +60 -0
  40. package/shared/localization/locales/lv.json +60 -0
  41. package/shared/localization/locales/nl.json +60 -0
  42. package/shared/localization/locales/no.json +60 -0
  43. package/shared/localization/locales/pl.json +60 -0
  44. package/shared/localization/locales/pt-PT.json +60 -0
  45. package/shared/localization/locales/pt.json +60 -0
  46. package/shared/localization/locales/ro.json +60 -0
  47. package/shared/localization/locales/ru.json +60 -0
  48. package/shared/localization/locales/sk.json +60 -0
  49. package/shared/localization/locales/sl.json +60 -0
  50. package/shared/localization/locales/sr-Latn.json +60 -0
  51. package/shared/localization/locales/sr.json +60 -0
  52. package/shared/localization/locales/sv.json +60 -0
  53. package/shared/localization/locales/ta.json +60 -0
  54. package/shared/localization/locales/te.json +60 -0
  55. package/shared/localization/locales/th.json +60 -0
  56. package/shared/localization/locales/tr.json +60 -0
  57. package/shared/localization/locales/uk.json +60 -0
  58. package/shared/localization/locales/vi.json +60 -0
  59. package/shared/localization/locales/zh-HK.json +60 -0
  60. package/shared/localization/locales/zh-TW.json +60 -0
  61. package/shared/localization/locales/zh.json +60 -0
  62. package/types/artifacts.d.ts +2 -2
@@ -977,6 +977,36 @@
977
977
  "core/audits/font-display.js | undeclaredFontOriginWarning": {
978
978
  "message": "{fontCountForOrigin, plural, =1 {Lighthouse was unable to automatically check the `font-display` value for the origin {fontOrigin}.} other {Lighthouse was unable to automatically check the `font-display` values for the origin {fontOrigin}.}}"
979
979
  },
980
+ "core/audits/has-hsts.js | columnDirective": {
981
+ "message": "Directive"
982
+ },
983
+ "core/audits/has-hsts.js | columnSeverity": {
984
+ "message": "Severity"
985
+ },
986
+ "core/audits/has-hsts.js | description": {
987
+ "message": "Deployment of the HSTS header significantly reduces the risk of downgrading HTTP connections and eavesdropping attacks. A rollout in stages, starting with a low max-age is recommended. [Learn more about using a strong HSTS policy.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)"
988
+ },
989
+ "core/audits/has-hsts.js | invalidSyntax": {
990
+ "message": "Invalid syntax"
991
+ },
992
+ "core/audits/has-hsts.js | lowMaxAge": {
993
+ "message": "`max-age` is too low"
994
+ },
995
+ "core/audits/has-hsts.js | noHsts": {
996
+ "message": "No HSTS header found"
997
+ },
998
+ "core/audits/has-hsts.js | noMaxAge": {
999
+ "message": "No `max-age` directive"
1000
+ },
1001
+ "core/audits/has-hsts.js | noPreload": {
1002
+ "message": "No `preload` directive found"
1003
+ },
1004
+ "core/audits/has-hsts.js | noSubdomain": {
1005
+ "message": "No `includeSubDomains` directive found"
1006
+ },
1007
+ "core/audits/has-hsts.js | title": {
1008
+ "message": "Use a strong HSTS policy"
1009
+ },
980
1010
  "core/audits/image-aspect-ratio.js | columnActual": {
981
1011
  "message": "Aspect Ratio (Actual)"
982
1012
  },
@@ -1676,6 +1706,15 @@
1676
1706
  "core/gather/timespan-runner.js | warningNavigationDetected": {
1677
1707
  "message": "A page navigation was detected during the run. Using timespan mode to audit page navigations is not recommended. Use navigation mode to audit page navigations for better third-party attribution and main thread detection."
1678
1708
  },
1709
+ "core/lib/bf-cache-strings.js | HTTPMethodNotGET": {
1710
+ "message": "Only pages loaded via a GET request are eligible for back/forward cache."
1711
+ },
1712
+ "core/lib/bf-cache-strings.js | HTTPStatusNotOK": {
1713
+ "message": "Only pages with a status code of 2XX can be cached."
1714
+ },
1715
+ "core/lib/bf-cache-strings.js | JavaScriptExecution": {
1716
+ "message": "Chrome detected an attempt to execute JavaScript while in the cache."
1717
+ },
1679
1718
  "core/lib/bf-cache-strings.js | appBanner": {
1680
1719
  "message": "Pages that requested an AppBanner are not currently eligible for back/forward cache."
1681
1720
  },
@@ -1775,12 +1814,12 @@
1775
1814
  "core/lib/bf-cache-strings.js | embedderExtensionMessagingForOpenPort": {
1776
1815
  "message": "Extensions with long-lived connection should close the connection before entering back/forward cache."
1777
1816
  },
1778
- "core/lib/bf-cache-strings.js | embedderExtensions": {
1779
- "message": "Back/forward cache is disabled due to extensions."
1780
- },
1781
1817
  "core/lib/bf-cache-strings.js | embedderExtensionSentMessageToCachedFrame": {
1782
1818
  "message": "Extensions with long-lived connection attempted to send messages to frames in back/forward cache."
1783
1819
  },
1820
+ "core/lib/bf-cache-strings.js | embedderExtensions": {
1821
+ "message": "Back/forward cache is disabled due to extensions."
1822
+ },
1784
1823
  "core/lib/bf-cache-strings.js | embedderModalDialog": {
1785
1824
  "message": "Modal dialog such as form resubmission or http password dialog was shown for the page upon navigating away."
1786
1825
  },
@@ -1820,12 +1859,6 @@
1820
1859
  "core/lib/bf-cache-strings.js | haveInnerContents": {
1821
1860
  "message": "Pages that use portals are not currently eligible for back/forward cache."
1822
1861
  },
1823
- "core/lib/bf-cache-strings.js | HTTPMethodNotGET": {
1824
- "message": "Only pages loaded via a GET request are eligible for back/forward cache."
1825
- },
1826
- "core/lib/bf-cache-strings.js | HTTPStatusNotOK": {
1827
- "message": "Only pages with a status code of 2XX can be cached."
1828
- },
1829
1862
  "core/lib/bf-cache-strings.js | idleManager": {
1830
1863
  "message": "Pages that use IdleManager are not currently eligible for back/forward cache."
1831
1864
  },
@@ -1847,9 +1880,6 @@
1847
1880
  "core/lib/bf-cache-strings.js | internalError": {
1848
1881
  "message": "Internal error."
1849
1882
  },
1850
- "core/lib/bf-cache-strings.js | JavaScriptExecution": {
1851
- "message": "Chrome detected an attempt to execute JavaScript while in the cache."
1852
- },
1853
1883
  "core/lib/bf-cache-strings.js | keepaliveRequest": {
1854
1884
  "message": "Back/forward cache is disabled due to a keepalive request."
1855
1885
  },
@@ -2063,12 +2093,12 @@
2063
2093
  "core/lib/csp-evaluator.js | plainWildcards": {
2064
2094
  "message": "Avoid using plain wildcards ({keyword}) in this directive. Plain wildcards allow scripts to be sourced from an unsafe domain."
2065
2095
  },
2066
- "core/lib/csp-evaluator.js | reportingDestinationMissing": {
2067
- "message": "No CSP configures a reporting destination. This makes it difficult to maintain the CSP over time and monitor for any breakages."
2068
- },
2069
2096
  "core/lib/csp-evaluator.js | reportToOnly": {
2070
2097
  "message": "The reporting destination is only configured via the report-to directive. This directive is only supported in Chromium-based browsers so it is recommended to also use a `report-uri` directive."
2071
2098
  },
2099
+ "core/lib/csp-evaluator.js | reportingDestinationMissing": {
2100
+ "message": "No CSP configures a reporting destination. This makes it difficult to maintain the CSP over time and monitor for any breakages."
2101
+ },
2072
2102
  "core/lib/csp-evaluator.js | strictDynamic": {
2073
2103
  "message": "Host allowlists can frequently be bypassed. Consider using CSP nonces or hashes instead, along with `'strict-dynamic'` if necessary."
2074
2104
  },
@@ -2096,6 +2126,9 @@
2096
2126
  "core/lib/deprecations-strings.js | AuthorizationCoveredByWildcard": {
2097
2127
  "message": "Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling."
2098
2128
  },
2129
+ "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": {
2130
+ "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."
2131
+ },
2099
2132
  "core/lib/deprecations-strings.js | CanRequestURLHTTPContainingNewline": {
2100
2133
  "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."
2101
2134
  },
@@ -2120,8 +2153,8 @@
2120
2153
  "core/lib/deprecations-strings.js | CrossOriginWindowConfirm": {
2121
2154
  "message": "Triggering window.confirm from cross origin iframes has been deprecated and will be removed in the future."
2122
2155
  },
2123
- "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": {
2124
- "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."
2156
+ "core/lib/deprecations-strings.js | DOMMutationEvents": {
2157
+ "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."
2125
2158
  },
2126
2159
  "core/lib/deprecations-strings.js | DataUrlInSvgUse": {
2127
2160
  "message": "Support for data: URLs in SVG <use> element is deprecated and it will be removed in the future."
@@ -2129,9 +2162,6 @@
2129
2162
  "core/lib/deprecations-strings.js | DocumentDomainSettingWithoutOriginAgentClusterHeader": {
2130
2163
  "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."
2131
2164
  },
2132
- "core/lib/deprecations-strings.js | DOMMutationEvents": {
2133
- "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."
2134
- },
2135
2165
  "core/lib/deprecations-strings.js | ExpectCTHeader": {
2136
2166
  "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."
2137
2167
  },
@@ -2165,12 +2195,12 @@
2165
2195
  "core/lib/deprecations-strings.js | MediaSourceDurationTruncatingBuffered": {
2166
2196
  "message": "Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`."
2167
2197
  },
2168
- "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": {
2169
- "message": "The older, non-standardized `shadowroot` attribute is deprecated, and will *no longer function* in M119. Please use the new, standardized `shadowrootmode` attribute instead."
2170
- },
2171
2198
  "core/lib/deprecations-strings.js | NoSysexWebMIDIWithoutPermission": {
2172
2199
  "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`."
2173
2200
  },
2201
+ "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": {
2202
+ "message": "The older, non-standardized `shadowroot` attribute is deprecated, and will *no longer function* in M119. Please use the new, standardized `shadowrootmode` attribute instead."
2203
+ },
2174
2204
  "core/lib/deprecations-strings.js | NotificationInsecureOrigin": {
2175
2205
  "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."
2176
2206
  },
@@ -2207,30 +2237,24 @@
2207
2237
  "core/lib/deprecations-strings.js | PrefixedVideoDisplayingFullscreen": {
2208
2238
  "message": "HTMLVideoElement.webkitDisplayingFullscreen is deprecated. Please use Document.fullscreenElement instead."
2209
2239
  },
2210
- "core/lib/deprecations-strings.js | PrefixedVideoEnterFullscreen": {
2211
- "message": "HTMLVideoElement.webkitEnterFullscreen() is deprecated. Please use Element.requestFullscreen() instead."
2212
- },
2213
2240
  "core/lib/deprecations-strings.js | PrefixedVideoEnterFullScreen": {
2214
2241
  "message": "HTMLVideoElement.webkitEnterFullScreen() is deprecated. Please use Element.requestFullscreen() instead."
2215
2242
  },
2216
- "core/lib/deprecations-strings.js | PrefixedVideoExitFullscreen": {
2217
- "message": "HTMLVideoElement.webkitExitFullscreen() is deprecated. Please use Document.exitFullscreen() instead."
2243
+ "core/lib/deprecations-strings.js | PrefixedVideoEnterFullscreen": {
2244
+ "message": "HTMLVideoElement.webkitEnterFullscreen() is deprecated. Please use Element.requestFullscreen() instead."
2218
2245
  },
2219
2246
  "core/lib/deprecations-strings.js | PrefixedVideoExitFullScreen": {
2220
2247
  "message": "HTMLVideoElement.webkitExitFullScreen() is deprecated. Please use Document.exitFullscreen() instead."
2221
2248
  },
2249
+ "core/lib/deprecations-strings.js | PrefixedVideoExitFullscreen": {
2250
+ "message": "HTMLVideoElement.webkitExitFullscreen() is deprecated. Please use Document.exitFullscreen() instead."
2251
+ },
2222
2252
  "core/lib/deprecations-strings.js | PrefixedVideoSupportsFullscreen": {
2223
2253
  "message": "HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead."
2224
2254
  },
2225
2255
  "core/lib/deprecations-strings.js | PrivacySandboxExtensionsAPI": {
2226
2256
  "message": "We're deprecating the API `chrome.privacy.websites.privacySandboxEnabled`, though it will remain active for backward compatibility until release M113. Instead, please use `chrome.privacy.websites.topicsEnabled`, `chrome.privacy.websites.fledgeEnabled` and `chrome.privacy.websites.adMeasurementEnabled`. See https://developer.chrome.com/docs/extensions/reference/privacy/#property-websites-privacySandboxEnabled."
2227
2257
  },
2228
- "core/lib/deprecations-strings.js | RangeExpand": {
2229
- "message": "Range.expand() is deprecated. Please use Selection.modify() instead."
2230
- },
2231
- "core/lib/deprecations-strings.js | RequestedSubresourceWithEmbeddedCredentials": {
2232
- "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked."
2233
- },
2234
2258
  "core/lib/deprecations-strings.js | RTCConstraintEnableDtlsSrtpFalse": {
2235
2259
  "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead."
2236
2260
  },
@@ -2240,6 +2264,12 @@
2240
2264
  "core/lib/deprecations-strings.js | RTCPeerConnectionGetStatsLegacyNonCompliant": {
2241
2265
  "message": "The callback-based getStats() is deprecated and will be removed. Use the spec-compliant getStats() instead."
2242
2266
  },
2267
+ "core/lib/deprecations-strings.js | RangeExpand": {
2268
+ "message": "Range.expand() is deprecated. Please use Selection.modify() instead."
2269
+ },
2270
+ "core/lib/deprecations-strings.js | RequestedSubresourceWithEmbeddedCredentials": {
2271
+ "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked."
2272
+ },
2243
2273
  "core/lib/deprecations-strings.js | RtcpMuxPolicyNegotiate": {
2244
2274
  "message": "The `rtcpMuxPolicy` option is deprecated and will be removed."
2245
2275
  },
@@ -2381,12 +2411,12 @@
2381
2411
  "core/lib/i18n/i18n.js | ms": {
2382
2412
  "message": "{timeInMs, number, milliseconds} ms"
2383
2413
  },
2384
- "core/lib/i18n/i18n.js | otherResourcesLabel": {
2385
- "message": "Other resources"
2386
- },
2387
2414
  "core/lib/i18n/i18n.js | otherResourceType": {
2388
2415
  "message": "Other"
2389
2416
  },
2417
+ "core/lib/i18n/i18n.js | otherResourcesLabel": {
2418
+ "message": "Other resources"
2419
+ },
2390
2420
  "core/lib/i18n/i18n.js | scriptResourceType": {
2391
2421
  "message": "Script"
2392
2422
  },
@@ -2621,6 +2651,72 @@
2621
2651
  "flow-report/src/i18n/ui-strings.js | title": {
2622
2652
  "message": "Lighthouse User Flow Report"
2623
2653
  },
2654
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
2655
+ "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."
2656
+ },
2657
+ "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
2658
+ "message": "Layout shift culprits"
2659
+ },
2660
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2661
+ "message": "Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response, and enabling text compression."
2662
+ },
2663
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": {
2664
+ "message": "Document request latency"
2665
+ },
2666
+ "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": {
2667
+ "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)."
2668
+ },
2669
+ "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
2670
+ "message": "Font display"
2671
+ },
2672
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2673
+ "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/)"
2674
+ },
2675
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
2676
+ "message": "Improve image delivery"
2677
+ },
2678
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
2679
+ "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."
2680
+ },
2681
+ "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": {
2682
+ "message": "INP by phase"
2683
+ },
2684
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
2685
+ "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)"
2686
+ },
2687
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
2688
+ "message": "LCP request discovery"
2689
+ },
2690
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": {
2691
+ "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."
2692
+ },
2693
+ "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": {
2694
+ "message": "LCP by phase"
2695
+ },
2696
+ "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
2697
+ "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."
2698
+ },
2699
+ "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": {
2700
+ "message": "Render blocking requests"
2701
+ },
2702
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": {
2703
+ "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."
2704
+ },
2705
+ "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": {
2706
+ "message": "CSS Selector costs"
2707
+ },
2708
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
2709
+ "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."
2710
+ },
2711
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": {
2712
+ "message": "Third parties"
2713
+ },
2714
+ "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
2715
+ "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/)."
2716
+ },
2717
+ "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
2718
+ "message": "Viewport not optimized for mobile"
2719
+ },
2624
2720
  "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
2625
2721
  "message": "For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage when the content is offscreen."
2626
2722
  },
@@ -3128,12 +3224,12 @@
3128
3224
  "report/renderer/report-utils.js | dropdownSaveJSON": {
3129
3225
  "message": "Save as JSON"
3130
3226
  },
3131
- "report/renderer/report-utils.js | dropdownViewer": {
3132
- "message": "Open in Viewer"
3133
- },
3134
3227
  "report/renderer/report-utils.js | dropdownViewUnthrottledTrace": {
3135
3228
  "message": "View Unthrottled Trace"
3136
3229
  },
3230
+ "report/renderer/report-utils.js | dropdownViewer": {
3231
+ "message": "Open in Viewer"
3232
+ },
3137
3233
  "report/renderer/report-utils.js | errorLabel": {
3138
3234
  "message": "Error!"
3139
3235
  },