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
@@ -81,6 +81,7 @@ declare function useI18n(): {
81
81
  dropdownViewer: string;
82
82
  dropdownSaveGist: string;
83
83
  dropdownDarkTheme: string;
84
+ dropdownInsightsToggle: string;
84
85
  dropdownViewUnthrottledTrace: string;
85
86
  runtimeSettingsDevice: string;
86
87
  runtimeSettingsNetworkThrottling: string;
@@ -185,6 +186,7 @@ declare function useLocalizedStrings(): {
185
186
  dropdownViewer: string;
186
187
  dropdownSaveGist: string;
187
188
  dropdownDarkTheme: string;
189
+ dropdownInsightsToggle: string;
188
190
  dropdownViewUnthrottledTrace: string;
189
191
  runtimeSettingsDevice: string;
190
192
  runtimeSettingsNetworkThrottling: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lighthouse",
3
3
  "type": "module",
4
- "version": "12.3.0",
4
+ "version": "12.4.0-dev.20250227",
5
5
  "description": "Automated auditing, performance metrics, and best practices for the web.",
6
6
  "main": "./core/index.js",
7
7
  "bin": {
@@ -16,9 +16,10 @@
16
16
  "prepack": "yarn build-report --standalone --flow --esm && yarn build-types",
17
17
  "postpack": "yarn clean-types",
18
18
  "build-all": "npm-run-posix-or-windows build-all:task",
19
- "build-all:task": "yarn build-report && yarn build-cdt-lib && yarn build-devtools && concurrently 'yarn build-extension' 'yarn build-lr' 'yarn build-viewer' 'yarn build-treemap' 'yarn build-smokehouse-bundle' && yarn build-pack",
20
- "build-all:task:windows": "yarn build-report && yarn build-cdt-lib && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer && yarn build-treemap && yarn build-smokehouse-bundle",
19
+ "build-all:task": "yarn build-report && yarn build-cdt-strings && yarn build-devtools && concurrently 'yarn build-extension' 'yarn build-lr' 'yarn build-viewer' 'yarn build-treemap' 'yarn build-smokehouse-bundle' && yarn build-pack",
20
+ "build-all:task:windows": "yarn build-report && yarn build-cdt-strings && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer && yarn build-treemap && yarn build-smokehouse-bundle",
21
21
  "build-cdt-lib": "node ./build/build-cdt-lib.js",
22
+ "build-cdt-strings": "node ./build/build-cdt-strings.js",
22
23
  "build-extension": "yarn build-extension-chrome && yarn build-extension-firefox",
23
24
  "build-extension-chrome": "node ./build/build-extension.js chrome",
24
25
  "build-extension-firefox": "node ./build/build-extension.js firefox",
@@ -96,7 +97,8 @@
96
97
  "serve-gh-pages": "cd dist/gh-pages && python3 -m http.server 7333",
97
98
  "serve-treemap": "yarn serve-gh-pages",
98
99
  "serve-viewer": "yarn serve-gh-pages",
99
- "flow-report": "yarn build-report --flow && node ./core/scripts/build-test-flow-report.js"
100
+ "flow-report": "yarn build-report --flow && node ./core/scripts/build-test-flow-report.js",
101
+ "generate-insight-audits": "node core/scripts/generate-insight-audits.js"
100
102
  },
101
103
  "devDependencies": {
102
104
  "@build-tracker/cli": "^1.0.0-beta.15",
@@ -136,7 +138,7 @@
136
138
  "builtin-modules": "^3.3.0",
137
139
  "c8": "^7.11.3",
138
140
  "chalk": "^2.4.1",
139
- "chrome-devtools-frontend": "1.0.1153166",
141
+ "chrome-devtools-frontend": "1.0.1418433",
140
142
  "concurrently": "^6.4.0",
141
143
  "conventional-changelog-cli": "^2.1.1",
142
144
  "cpy": "^8.1.2",
@@ -167,7 +169,7 @@
167
169
  "pako": "^2.0.3",
168
170
  "preact": "^10.7.2",
169
171
  "pretty-json-stringify": "^0.0.2",
170
- "puppeteer": "^23.10.4",
172
+ "puppeteer": "^24.3.0",
171
173
  "resolve": "^1.22.1",
172
174
  "rollup": "^2.52.7",
173
175
  "rollup-plugin-polyfill-node": "^0.12.0",
@@ -181,13 +183,13 @@
181
183
  "webtreemap-cdt": "^3.2.1"
182
184
  },
183
185
  "dependencies": {
184
- "@paulirish/trace_engine": "0.0.39",
186
+ "@paulirish/trace_engine": "0.0.44",
185
187
  "@sentry/node": "^7.0.0",
186
188
  "axe-core": "^4.10.2",
187
189
  "chrome-launcher": "^1.1.2",
188
190
  "configstore": "^5.0.1",
189
- "csp_evaluator": "1.1.1",
190
- "devtools-protocol": "0.0.1312386",
191
+ "csp_evaluator": "1.1.5",
192
+ "devtools-protocol": "0.0.1423531",
191
193
  "enquirer": "^2.3.6",
192
194
  "http-link-header": "^1.1.1",
193
195
  "intl-messageformat": "^10.5.3",
@@ -200,19 +202,19 @@
200
202
  "metaviewport-parser": "0.3.0",
201
203
  "open": "^8.4.0",
202
204
  "parse-cache-control": "1.0.1",
203
- "puppeteer-core": "^23.10.4",
205
+ "puppeteer-core": "^24.3.0",
204
206
  "robots-parser": "^3.0.1",
205
207
  "semver": "^5.3.0",
206
208
  "speedline-core": "^1.4.3",
207
- "third-party-web": "^0.26.1",
209
+ "third-party-web": "^0.26.5",
208
210
  "tldts-icann": "^6.1.16",
209
211
  "ws": "^7.0.0",
210
212
  "yargs": "^17.3.1",
211
213
  "yargs-parser": "^21.0.0"
212
214
  },
213
215
  "resolutions": {
214
- "puppeteer/**/devtools-protocol": "0.0.1312386",
215
- "puppeteer-core/**/devtools-protocol": "0.0.1312386"
216
+ "puppeteer/**/devtools-protocol": "0.0.1423531",
217
+ "puppeteer-core/**/devtools-protocol": "0.0.1423531"
216
218
  },
217
219
  "repository": "GoogleChrome/lighthouse",
218
220
  "keywords": [
package/readme.md CHANGED
@@ -364,6 +364,8 @@ This section details services that have integrated Lighthouse data. If you're wo
364
364
 
365
365
  * **[Guardius](https://guardius.io)** - Guardius is a DevOps and DevSecOps SaaS platform that integrates Lighthouse to deliver automated web performance analysis. It not only provides metrics evaluation and automatic scanning but also enables performance comparisons across different periods and ongoing observation over time. Additionally, Guardius offers predefined and customized alerts tailored to your specific requirements. A free version of Guardius is available for users to explore its features.
366
366
 
367
+ * **[Sonā](https://getsona.io)** - Powered by Lighthouse amongst others, Sonā delivers in-depth insights into your website’s health. Track changes over time, share reports, and receive actionable recommendations to improve performance, accessibility, SEO, best practices, and security. Sonā is free during its beta period.
368
+
367
369
  ## Lighthouse Integrations in non-Web Perf services
368
370
 
369
371
  * **[PageWatch](https://pagewatch.dev/)** — PageWatch is a tool to find problem pages on your website. It provides insights into spelling errors, layout issues, slow pages (powered by Lighthouse) and more. PageWatch is offered via free and paid plans.
@@ -412,6 +414,7 @@ Other awesome open source projects that use Lighthouse.
412
414
  * **[webpack-lighthouse-plugin](https://github.com/addyosmani/webpack-lighthouse-plugin)** - Run Lighthouse from a Webpack build.
413
415
  * **[cypress-audit](https://github.com/mfrachet/cypress-audit)** - Run Lighthouse and Pa11y audits directly in your E2E test suites.
414
416
  * **[laravel-lighthouse](https://github.com/adityadees/laravel-lighthouse)** - Google Lighthouse wrapper for laravel framework to run Google Lighthouse CLI with custom option and can automatically save result in your server directory.
417
+ * **[Neodymium](https://github.com/Xceptance/neodymium/wiki/Accessibility)** - The Neodymium test automation framework integrates Lighthouse for accessibility and Web Vitals verification, allowing programmatic validation and assertion of all audit values.
415
418
 
416
419
  ## FAQ
417
420
 
@@ -199,6 +199,11 @@
199
199
  }
200
200
  }
201
201
 
202
+ /**
203
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
204
+ * TODO: remove this media query when `@container query` is fully supported by browsers
205
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
206
+ */
202
207
  @media only screen and (max-width: 480px) {
203
208
  .lh-vars {
204
209
  --audit-group-margin-bottom: 20px;
@@ -225,6 +230,32 @@
225
230
  }
226
231
  }
227
232
 
233
+ @container lh-container (max-width: 480px) {
234
+ .lh-vars {
235
+ --audit-group-margin-bottom: 20px;
236
+ --edge-gap-padding: var(--default-padding);
237
+ --env-name-min-width: 120px;
238
+ --gauge-circle-size-big: 96px;
239
+ --gauge-circle-size: 72px;
240
+ --gauge-label-font-size-big: 22px;
241
+ --gauge-label-font-size: 14px;
242
+ --gauge-label-line-height-big: 26px;
243
+ --gauge-label-line-height: 20px;
244
+ --gauge-percentage-font-size-big: 34px;
245
+ --gauge-percentage-font-size: 26px;
246
+ --gauge-wrapper-width: 112px;
247
+ --header-padding: 16px 0 16px 0;
248
+ --image-preview-size: 24px;
249
+ --plugin-icon-size: 75%;
250
+ --report-font-size: 14px;
251
+ --report-line-height: 20px;
252
+ --score-icon-margin-left: 2px;
253
+ --score-icon-size: 10px;
254
+ --topbar-height: 28px;
255
+ --topbar-logo-size: 20px;
256
+ }
257
+ }
258
+
228
259
  .lh-vars.lh-devtools {
229
260
  --audit-explanation-line-height: 14px;
230
261
  --audit-group-margin-bottom: 20px;
@@ -369,6 +400,9 @@
369
400
  but they do not get any overflow:ellipsis treatment.
370
401
  */
371
402
  word-break: break-word;
403
+
404
+ container-name: lh-container;
405
+ container-type: inline-size;
372
406
  }
373
407
 
374
408
  .lh-audit-group a,
@@ -480,6 +514,35 @@
480
514
  .lh-report-icon--external::before {
481
515
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><path d="M3.15 11.9a1.01 1.01 0 0 1-.743-.307 1.01 1.01 0 0 1-.306-.743v-7.7c0-.292.102-.54.306-.744a1.01 1.01 0 0 1 .744-.306H7v1.05H3.15v7.7h7.7V7h1.05v3.85c0 .291-.103.54-.307.743a1.01 1.01 0 0 1-.743.307h-7.7Zm2.494-2.8-.743-.744 5.206-5.206H8.401V2.1h3.5v3.5h-1.05V3.893L5.644 9.1Z"/></svg>');
482
516
  }
517
+ .lh-report-icon--experiment::before {
518
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path d="M4.50002 17C3.86136 17 3.40302 16.7187 3.12502 16.156C2.84702 15.5933 2.90936 15.069 3.31202 14.583L7.50002 9.5V4.5H6.75002C6.54202 4.5 6.36502 4.427 6.21902 4.281C6.07302 4.135 6.00002 3.958 6.00002 3.75C6.00002 3.542 6.07302 3.365 6.21902 3.219C6.36502 3.073 6.54202 3 6.75002 3H13.25C13.458 3 13.635 3.073 13.781 3.219C13.927 3.365 14 3.542 14 3.75C14 3.958 13.927 4.135 13.781 4.281C13.635 4.427 13.458 4.5 13.25 4.5H12.5V9.5L16.688 14.583C17.0767 15.069 17.132 15.5933 16.854 16.156C16.5767 16.7187 16.1254 17 15.5 17H4.50002ZM4.50002 15.5H15.5L11 10V4.5H9.00002V10L4.50002 15.5Z" fill="black"/></svg>');
519
+ }
520
+
521
+ /** These are still icons, but w/o the auto-color invert / opacity / etc. that come with .lh-report-icon */
522
+
523
+ .lh-report-plain-icon {
524
+ display: flex;
525
+ align-items: center;
526
+ }
527
+ .lh-report-plain-icon::before {
528
+ content: "";
529
+ background-repeat: no-repeat;
530
+ width: var(--report-icon-size);
531
+ height: var(--report-icon-size);
532
+ display: inline-block;
533
+ margin-right: 5px;
534
+ }
535
+
536
+ .lh-report-plain-icon--checklist-pass::before {
537
+ --icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M8.938 13L13.896 8.062L12.833 7L8.938 10.875L7.167 9.125L6.104 10.188L8.938 13ZM10 18C8.90267 18 7.868 17.7917 6.896 17.375C5.924 16.9583 5.07333 16.3853 4.344 15.656C3.61467 14.9267 3.04167 14.076 2.625 13.104C2.20833 12.132 2 11.0973 2 10C2 8.88867 2.20833 7.85033 2.625 6.885C3.04167 5.92033 3.61467 5.07333 4.344 4.344C5.07333 3.61467 5.924 3.04167 6.896 2.625C7.868 2.20833 8.90267 2 10 2C11.1113 2 12.1497 2.20833 13.115 2.625C14.0797 3.04167 14.9267 3.61467 15.656 4.344C16.3853 5.07333 16.9583 5.92033 17.375 6.885C17.7917 7.85033 18 8.88867 18 10C18 11.0973 17.7917 12.132 17.375 13.104C16.9583 14.076 16.3853 14.9267 15.656 15.656C14.9267 16.3853 14.0797 16.9583 13.115 17.375C12.1497 17.7917 11.1113 18 10 18ZM10 16.5C11.8053 16.5 13.34 15.868 14.604 14.604C15.868 13.34 16.5 11.8053 16.5 10C16.5 8.19467 15.868 6.66 14.604 5.396C13.34 4.132 11.8053 3.5 10 3.5C8.19467 3.5 6.66 4.132 5.396 5.396C4.132 6.66 3.5 8.19467 3.5 10C3.5 11.8053 4.132 13.34 5.396 14.604C6.66 15.868 8.19467 16.5 10 16.5Z" fill="black"/></svg>');
538
+ background-color: var(--color-pass);
539
+ mask: var(--icon-url) center / contain no-repeat;
540
+ }
541
+ .lh-report-plain-icon--checklist-fail::before {
542
+ --icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.5 10C17.5 14.1421 14.1421 17.5 10 17.5C5.85786 17.5 2.5 14.1421 2.5 10C2.5 5.85786 5.85786 2.5 10 2.5C14.1421 2.5 17.5 5.85786 17.5 10ZM16 10C16 13.3137 13.3137 16 10 16C8.6135 16 7.33683 15.5297 6.32083 14.7399L14.7399 6.32083C15.5297 7.33683 16 8.6135 16 10ZM5.26016 13.6793L13.6793 5.26016C12.6633 4.47033 11.3866 4 10 4C6.68629 4 4 6.68629 4 10C4 11.3866 4.47033 12.6633 5.26016 13.6793Z" fill="black"/></svg>');
543
+ background-color: var(--color-fail);
544
+ mask: var(--icon-url) center / contain no-repeat;
545
+ }
483
546
 
484
547
  .lh-buttons {
485
548
  display: flex;
@@ -507,6 +570,15 @@
507
570
  line-height: 20px;
508
571
  }
509
572
 
573
+ .lh-checklist {
574
+ list-style: none;
575
+ padding: 0;
576
+ }
577
+
578
+ .lh-checklist-item {
579
+ margin: 10px 0 10px 0;
580
+ }
581
+
510
582
  /* Score */
511
583
 
512
584
  .lh-audit__score-icon {
@@ -757,7 +829,11 @@
757
829
  grid-column-start: 2;
758
830
  }
759
831
 
760
-
832
+ /**
833
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
834
+ * TODO: remove this media query when `@container query` is fully supported by browsers
835
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
836
+ */
761
837
  @media screen and (max-width: 535px) {
762
838
  .lh-metrics-container {
763
839
  display: block;
@@ -783,6 +859,31 @@
783
859
  }
784
860
  }
785
861
 
862
+ @container lh-container (max-width: 535px) {
863
+ .lh-metrics-container {
864
+ display: block;
865
+ }
866
+
867
+ .lh-metric {
868
+ border-bottom: none !important;
869
+ }
870
+ .lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(1) {
871
+ border-bottom: 1px solid var(--report-border-color-secondary) !important;
872
+ }
873
+
874
+ /* Change the grid to 3 columns for narrow viewport. */
875
+ .lh-metric__innerwrap {
876
+ /**
877
+ * Icon -- Metric Name -- Metric Value
878
+ */
879
+ grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 2fr 1fr;
880
+ }
881
+ .lh-metric__value {
882
+ justify-self: end;
883
+ grid-column-start: unset;
884
+ }
885
+ }
886
+
786
887
  /* No-JS toggle switch */
787
888
  /* Keep this selector sync'd w/ `magicSelector` in report-ui-features-test.js */
788
889
  .lh-metrics-toggle__input:checked ~ .lh-metrics-container .lh-metric__description {
@@ -1364,6 +1465,11 @@
1364
1465
  height: var(--gauge-circle-size-big);
1365
1466
  }
1366
1467
 
1468
+ /**
1469
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
1470
+ * TODO: remove this media query when `@container query` is fully supported by browsers
1471
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
1472
+ */
1367
1473
  @media screen and (max-width: 780px) {
1368
1474
  .lh-category-header__finalscreenshot {
1369
1475
  grid-template: 1fr 1fr / none
@@ -1373,8 +1479,20 @@
1373
1479
  }
1374
1480
  }
1375
1481
 
1482
+ @container lh-container (max-width: 780px) {
1483
+ .lh-category-header__finalscreenshot {
1484
+ grid-template: 1fr 1fr / none
1485
+ }
1486
+ .lh-category-headercol--separator {
1487
+ display: none;
1488
+ }
1489
+ }
1376
1490
 
1377
- /* 964 fits the min-width of the filmstrip */
1491
+ /**
1492
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
1493
+ * TODO: remove this media query when `@container query` is fully supported by browsers
1494
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
1495
+ */
1378
1496
  @media screen and (max-width: 964px) {
1379
1497
  .lh-report {
1380
1498
  margin-left: 0;
@@ -1382,6 +1500,14 @@
1382
1500
  }
1383
1501
  }
1384
1502
 
1503
+ /* 964 fits the min-width of the filmstrip */
1504
+ @container lh-container (max-width: 964px) {
1505
+ .lh-report {
1506
+ margin-left: 0;
1507
+ width: 100%;
1508
+ }
1509
+ }
1510
+
1385
1511
  @media print {
1386
1512
  body {
1387
1513
  -webkit-print-color-adjust: exact; /* print background colors */
@@ -1656,6 +1782,11 @@
1656
1782
  }
1657
1783
  }
1658
1784
 
1785
+ /**
1786
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
1787
+ * TODO: remove this media query when `@container query` is fully supported by browsers
1788
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
1789
+ */
1659
1790
  @media screen and (max-width: 780px) {
1660
1791
  /* no black outline if we're not confident the entire table can be displayed within bounds */
1661
1792
  .lh-expandable-details[open] {
@@ -1663,6 +1794,13 @@
1663
1794
  }
1664
1795
  }
1665
1796
 
1797
+ @container lh-container (max-width: 780px) {
1798
+ /* no black outline if we're not confident the entire table can be displayed within bounds */
1799
+ .lh-expandable-details[open] {
1800
+ animation: none;
1801
+ }
1802
+ }
1803
+
1666
1804
  .lh-expandable-details[open] summary, details.lh-clump > summary {
1667
1805
  border-bottom: 1px solid var(--report-border-color-secondary);
1668
1806
  }
@@ -1695,8 +1833,11 @@ details[open] .lh-clump-toggletext--hide { display: block;}
1695
1833
  text-align: initial;
1696
1834
  line-height: 1.4;
1697
1835
  }
1698
- /* shrink tooltips to not be cutoff on left edge of narrow viewports
1699
- 45vw is chosen to be ~= width of the left column of metrics
1836
+
1837
+ /**
1838
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
1839
+ * TODO: remove this media query when `@container query` is fully supported by browsers
1840
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
1700
1841
  */
1701
1842
  @media screen and (max-width: 535px) {
1702
1843
  .lh-tooltip {
@@ -1705,6 +1846,16 @@ details[open] .lh-clump-toggletext--hide { display: block;}
1705
1846
  }
1706
1847
  }
1707
1848
 
1849
+ /* shrink tooltips to not be cutoff on left edge of narrow container
1850
+ 45vw is chosen to be ~= width of the left column of metrics
1851
+ */
1852
+ @container lh-container (max-width: 535px) {
1853
+ .lh-tooltip {
1854
+ min-width: 45vw;
1855
+ padding: 3vw;
1856
+ }
1857
+ }
1858
+
1708
1859
  .lh-tooltip-boundary:hover .lh-tooltip {
1709
1860
  display: block;
1710
1861
  animation: fadeInTooltip 250ms;
@@ -1837,18 +1988,41 @@ details[open] .lh-clump-toggletext--hide { display: block;}
1837
1988
  left: 6px;
1838
1989
  }
1839
1990
 
1840
- /* Change the grid for narrow viewport. */
1991
+ /**
1992
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
1993
+ * TODO: remove this media query when `@container query` is fully supported by browsers
1994
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
1995
+ */
1841
1996
  @media screen and (max-width: 640px) {
1842
1997
  .lh-meta__items {
1843
1998
  grid-template-columns: 1fr 1fr;
1844
1999
  }
1845
2000
  }
2001
+
2002
+ /* Change the grid for narrow container */
2003
+ @container lh-container (max-width: 640px) {
2004
+ .lh-meta__items {
2005
+ grid-template-columns: 1fr 1fr;
2006
+ }
2007
+ }
2008
+
2009
+ /**
2010
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
2011
+ * TODO: remove this media query when `@container query` is fully supported by browsers
2012
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
2013
+ */
1846
2014
  @media screen and (max-width: 535px) {
1847
2015
  .lh-meta__items {
1848
2016
  display: block;
1849
2017
  }
1850
2018
  }
1851
2019
 
2020
+ @container lh-container (max-width: 535px) {
2021
+ .lh-meta__items {
2022
+ display: block;
2023
+ }
2024
+ }
2025
+
1852
2026
  /* Explodey gauge */
1853
2027
 
1854
2028
  .lh-exp-gauge-component {
@@ -298,12 +298,25 @@ SPDX-License-Identifier: Apache-2.0
298
298
  margin: 0 4px;
299
299
  }
300
300
 
301
+ /**
302
+ * This media query is a temporary fallback for browsers that do not support `@container query`.
303
+ * TODO: remove this media query when `@container query` is fully supported by browsers
304
+ * See https://github.com/GoogleChrome/lighthouse/pull/16332
305
+ */
301
306
  @media screen and (max-width: 964px) {
302
307
  .lh-tools__dropdown {
303
308
  right: 0;
304
309
  left: initial;
305
310
  }
306
311
  }
312
+
313
+ @container lh-container (max-width: 964px) {
314
+ .lh-tools__dropdown {
315
+ right: 0;
316
+ left: initial;
317
+ }
318
+ }
319
+
307
320
  @media print {
308
321
  .lh-topbar {
309
322
  position: static;
@@ -354,6 +367,7 @@ SPDX-License-Identifier: Apache-2.0
354
367
  <!-- Only enabled if Options.onViewTrace is set and we are on simulated throttling. -->
355
368
  <a role="menuitem" tabindex="-1" href="#" class="lh-report-icon lh-report-icon--open lh-hidden" data-i18n="dropdownViewUnthrottledTrace" data-action="view-unthrottled-trace"></a>
356
369
  <a role="menuitem" tabindex="-1" href="#" class="lh-report-icon lh-report-icon--dark" data-i18n="dropdownDarkTheme" data-action="toggle-dark"></a>
370
+ <a role="menuitem" tabindex="-1" href="#" class="lh-report-icon lh-report-icon--experiment" data-i18n="dropdownInsightsToggle" data-action="toggle-insights"></a>
357
371
  </div>
358
372
  </div>
359
373
  </div>