lighthouse 8.0.0-dev.20210709 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/docs/architecture.md +101 -0
  2. package/docs/authenticated-pages.md +44 -0
  3. package/docs/bug-labels.md +35 -0
  4. package/docs/configuration.md +213 -0
  5. package/docs/emulation.md +32 -0
  6. package/docs/error-reporting.md +42 -0
  7. package/docs/hacking-tips.md +55 -0
  8. package/docs/headless-chrome.md +119 -0
  9. package/docs/lantern.md +55 -0
  10. package/docs/new-audits.md +99 -0
  11. package/docs/performance-budgets.md +187 -0
  12. package/docs/plugins.md +374 -0
  13. package/docs/puppeteer.md +95 -0
  14. package/docs/readme.md +164 -0
  15. package/docs/recipes/auth/README.md +129 -0
  16. package/docs/recipes/auth/example-lh-auth.js +81 -0
  17. package/docs/recipes/auth/package.json +11 -0
  18. package/docs/recipes/auth/server/public/dashboard-unauthenticated.html +21 -0
  19. package/docs/recipes/auth/server/public/dashboard.html +25 -0
  20. package/docs/recipes/auth/server/public/home-unauthenticated.html +27 -0
  21. package/docs/recipes/auth/server/public/home.html +17 -0
  22. package/docs/recipes/auth/server/public/unauthenticated.html +22 -0
  23. package/docs/recipes/auth/server/server.js +85 -0
  24. package/docs/recipes/custom-audit/custom-config.js +36 -0
  25. package/docs/recipes/custom-audit/package.json +8 -0
  26. package/docs/recipes/custom-audit/readme.md +32 -0
  27. package/docs/recipes/custom-audit/searchable-audit.js +46 -0
  28. package/docs/recipes/custom-audit/searchable-gatherer.js +32 -0
  29. package/docs/recipes/custom-gatherer-puppeteer/custom-audit.js +34 -0
  30. package/{root.js → docs/recipes/custom-gatherer-puppeteer/custom-config.js} +23 -2
  31. package/docs/recipes/custom-gatherer-puppeteer/custom-gatherer.js +51 -0
  32. package/docs/recipes/custom-gatherer-puppeteer/package.json +13 -0
  33. package/docs/recipes/custom-gatherer-puppeteer/readme.md +7 -0
  34. package/docs/recipes/custom-gatherer-puppeteer/test.sh +9 -0
  35. package/docs/recipes/gulp/gulpfile.js +79 -0
  36. package/docs/recipes/gulp/package.json +12 -0
  37. package/docs/recipes/gulp/public/index.html +22 -0
  38. package/docs/recipes/gulp/readme.md +6 -0
  39. package/docs/recipes/integration-test/README.md +14 -0
  40. package/docs/recipes/integration-test/example-lh-auth.test.js +160 -0
  41. package/docs/recipes/integration-test/package.json +9 -0
  42. package/docs/recipes/lighthouse-plugin-example/audits/preload-as.js +46 -0
  43. package/docs/recipes/lighthouse-plugin-example/package.json +11 -0
  44. package/docs/recipes/lighthouse-plugin-example/plugin-recipe-screenshot.png +0 -0
  45. package/docs/recipes/lighthouse-plugin-example/plugin.js +24 -0
  46. package/docs/recipes/lighthouse-plugin-example/readme.md +53 -0
  47. package/docs/releasing.md +164 -0
  48. package/docs/scoring.md +79 -0
  49. package/docs/throttling.md +150 -0
  50. package/docs/understanding-results.md +209 -0
  51. package/docs/v8-perf-faq.md +244 -0
  52. package/docs/variability.md +150 -0
  53. package/jest.config.js +0 -3
  54. package/lighthouse-cli/bin.js +8 -6
  55. package/lighthouse-core/audits/accessibility/aria-command-name.js +1 -1
  56. package/lighthouse-core/audits/accessibility/aria-meter-name.js +1 -1
  57. package/lighthouse-core/audits/accessibility/aria-progressbar-name.js +1 -1
  58. package/lighthouse-core/audits/accessibility/aria-tooltip-name.js +1 -1
  59. package/lighthouse-core/audits/accessibility/aria-treeitem-name.js +1 -1
  60. package/lighthouse-core/audits/apple-touch-icon.js +0 -1
  61. package/lighthouse-core/audits/audit.js +3 -3
  62. package/lighthouse-core/audits/autocomplete.js +2 -2
  63. package/lighthouse-core/audits/byte-efficiency/byte-efficiency-audit.js +14 -29
  64. package/lighthouse-core/audits/byte-efficiency/duplicated-javascript.js +2 -3
  65. package/lighthouse-core/audits/byte-efficiency/efficient-animated-content.js +1 -1
  66. package/lighthouse-core/audits/byte-efficiency/legacy-javascript.js +2 -3
  67. package/lighthouse-core/audits/byte-efficiency/modern-image-formats.js +15 -55
  68. package/lighthouse-core/audits/byte-efficiency/offscreen-images.js +4 -8
  69. package/lighthouse-core/audits/byte-efficiency/render-blocking-resources.js +8 -15
  70. package/lighthouse-core/audits/byte-efficiency/total-byte-weight.js +9 -10
  71. package/lighthouse-core/audits/byte-efficiency/unminified-css.js +1 -1
  72. package/lighthouse-core/audits/byte-efficiency/unminified-javascript.js +1 -1
  73. package/lighthouse-core/audits/byte-efficiency/unused-css-rules.js +1 -1
  74. package/lighthouse-core/audits/byte-efficiency/unused-javascript.js +1 -2
  75. package/lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js +2 -2
  76. package/lighthouse-core/audits/byte-efficiency/uses-optimized-images.js +1 -2
  77. package/lighthouse-core/audits/byte-efficiency/uses-responsive-images.js +24 -46
  78. package/lighthouse-core/audits/byte-efficiency/uses-text-compression.js +1 -1
  79. package/lighthouse-core/audits/critical-request-chains.js +0 -1
  80. package/lighthouse-core/audits/csp-xss.js +1 -1
  81. package/lighthouse-core/audits/diagnostics.js +0 -1
  82. package/lighthouse-core/audits/dobetterweb/geolocation-on-start.js +0 -1
  83. package/lighthouse-core/audits/dobetterweb/inspector-issues.js +1 -1
  84. package/lighthouse-core/audits/dobetterweb/notification-on-start.js +0 -1
  85. package/lighthouse-core/audits/dobetterweb/uses-http2.js +0 -1
  86. package/lighthouse-core/audits/final-screenshot.js +4 -8
  87. package/lighthouse-core/audits/font-display.js +0 -1
  88. package/lighthouse-core/audits/installable-manifest.js +3 -4
  89. package/lighthouse-core/audits/largest-contentful-paint-element.js +0 -1
  90. package/lighthouse-core/audits/long-tasks.js +1 -1
  91. package/lighthouse-core/audits/maskable-icon.js +0 -1
  92. package/lighthouse-core/audits/metrics/first-contentful-paint-3g.js +2 -4
  93. package/lighthouse-core/audits/metrics/first-contentful-paint.js +2 -4
  94. package/lighthouse-core/audits/metrics/first-meaningful-paint.js +2 -4
  95. package/lighthouse-core/audits/metrics/interactive.js +2 -4
  96. package/lighthouse-core/audits/metrics/largest-contentful-paint.js +2 -4
  97. package/lighthouse-core/audits/metrics/max-potential-fid.js +2 -4
  98. package/lighthouse-core/audits/metrics/speed-index.js +2 -4
  99. package/lighthouse-core/audits/metrics/total-blocking-time.js +2 -10
  100. package/lighthouse-core/audits/metrics.js +2 -4
  101. package/lighthouse-core/audits/performance-budget.js +0 -1
  102. package/lighthouse-core/audits/predictive-perf.js +6 -9
  103. package/lighthouse-core/audits/preload-fonts.js +1 -11
  104. package/lighthouse-core/audits/preload-lcp-image.js +5 -18
  105. package/lighthouse-core/audits/redirects.js +8 -10
  106. package/lighthouse-core/audits/screenshot-thumbnails.js +13 -28
  107. package/lighthouse-core/audits/seo/canonical.js +1 -2
  108. package/lighthouse-core/audits/seo/font-size.js +4 -4
  109. package/lighthouse-core/audits/seo/hreflang.js +2 -3
  110. package/lighthouse-core/audits/seo/http-status-code.js +16 -21
  111. package/lighthouse-core/audits/seo/is-crawlable.js +3 -4
  112. package/lighthouse-core/audits/seo/robots-txt.js +2 -2
  113. package/lighthouse-core/audits/seo/tap-targets.js +5 -5
  114. package/lighthouse-core/audits/server-response-time.js +2 -20
  115. package/lighthouse-core/audits/splash-screen.js +0 -1
  116. package/lighthouse-core/audits/themed-omnibox.js +0 -1
  117. package/lighthouse-core/audits/third-party-facades.js +0 -1
  118. package/lighthouse-core/audits/third-party-summary.js +3 -1
  119. package/lighthouse-core/audits/timing-budget.js +2 -4
  120. package/lighthouse-core/audits/uses-rel-preconnect.js +9 -14
  121. package/lighthouse-core/audits/uses-rel-preload.js +2 -13
  122. package/lighthouse-core/computed/main-thread-tasks.js +2 -2
  123. package/lighthouse-core/computed/metrics/cumulative-layout-shift.js +3 -3
  124. package/lighthouse-core/computed/metrics/first-contentful-paint-all-frames.js +6 -6
  125. package/lighthouse-core/computed/metrics/first-contentful-paint.js +8 -9
  126. package/lighthouse-core/computed/metrics/first-meaningful-paint.js +9 -10
  127. package/lighthouse-core/computed/metrics/interactive.js +24 -25
  128. package/lighthouse-core/computed/metrics/lantern-first-contentful-paint.js +6 -6
  129. package/lighthouse-core/computed/metrics/lantern-first-meaningful-paint.js +6 -6
  130. package/lighthouse-core/computed/metrics/lantern-largest-contentful-paint.js +6 -6
  131. package/lighthouse-core/computed/metrics/lantern-metric.js +8 -16
  132. package/lighthouse-core/computed/metrics/largest-contentful-paint-all-frames.js +7 -7
  133. package/lighthouse-core/computed/metrics/largest-contentful-paint.js +9 -10
  134. package/lighthouse-core/computed/metrics/max-potential-fid.js +11 -8
  135. package/lighthouse-core/computed/metrics/metric.js +5 -32
  136. package/lighthouse-core/computed/metrics/speed-index.js +5 -6
  137. package/lighthouse-core/computed/metrics/timing-summary.js +45 -55
  138. package/lighthouse-core/computed/metrics/total-blocking-time.js +29 -36
  139. package/lighthouse-core/computed/page-dependency-graph.js +14 -14
  140. package/lighthouse-core/computed/resource-summary.js +7 -3
  141. package/lighthouse-core/computed/speedline.js +3 -3
  142. package/lighthouse-core/computed/trace-of-tab.js +86 -15
  143. package/lighthouse-core/computed/user-timings.js +5 -5
  144. package/lighthouse-core/config/default-config.js +0 -1
  145. package/lighthouse-core/fraggle-rock/config/config.js +7 -9
  146. package/lighthouse-core/fraggle-rock/config/default-config.js +2 -40
  147. package/lighthouse-core/fraggle-rock/config/filters.js +6 -39
  148. package/lighthouse-core/fraggle-rock/config/validation.js +4 -4
  149. package/lighthouse-core/fraggle-rock/gather/base-artifacts.js +19 -54
  150. package/lighthouse-core/fraggle-rock/gather/navigation-runner.js +10 -21
  151. package/lighthouse-core/fraggle-rock/gather/runner-helpers.js +2 -2
  152. package/lighthouse-core/fraggle-rock/gather/snapshot-runner.js +2 -2
  153. package/lighthouse-core/fraggle-rock/gather/timespan-runner.js +2 -2
  154. package/lighthouse-core/gather/driver/prepare.js +0 -3
  155. package/lighthouse-core/gather/fetcher.js +2 -0
  156. package/lighthouse-core/gather/gather-runner.js +14 -2
  157. package/lighthouse-core/gather/gatherers/image-elements.js +61 -24
  158. package/lighthouse-core/gather/gatherers/inspector-issues.js +2 -2
  159. package/lighthouse-core/gather/gatherers/script-elements.js +12 -45
  160. package/lighthouse-core/gather/gatherers/seo/font-size.js +5 -5
  161. package/lighthouse-core/gather/gatherers/seo/tap-targets.js +12 -64
  162. package/lighthouse-core/gather/gatherers/service-worker.js +3 -20
  163. package/lighthouse-core/gather/gatherers/trace-compat.js +1 -1
  164. package/lighthouse-core/gather/gatherers/trace-elements.js +3 -15
  165. package/lighthouse-core/gather/gatherers/trace.js +4 -13
  166. package/lighthouse-core/gather/gatherers/viewport-dimensions.js +1 -1
  167. package/lighthouse-core/lib/dependency-graph/simulator/network-analyzer.js +2 -13
  168. package/lighthouse-core/lib/emulation.js +2 -0
  169. package/lighthouse-core/lib/i18n/i18n.js +2 -2
  170. package/lighthouse-core/lib/i18n/locales/ar-XB.json +141 -141
  171. package/lighthouse-core/lib/i18n/locales/ar.json +143 -143
  172. package/lighthouse-core/lib/i18n/locales/bg.json +143 -143
  173. package/lighthouse-core/lib/i18n/locales/ca.json +141 -141
  174. package/lighthouse-core/lib/i18n/locales/cs.json +141 -141
  175. package/lighthouse-core/lib/i18n/locales/da.json +141 -141
  176. package/lighthouse-core/lib/i18n/locales/de.json +142 -142
  177. package/lighthouse-core/lib/i18n/locales/el.json +141 -141
  178. package/lighthouse-core/lib/i18n/locales/en-GB.json +141 -141
  179. package/lighthouse-core/lib/i18n/locales/en-US.ctc.json +6659 -0
  180. package/lighthouse-core/lib/i18n/locales/en-US.json +144 -150
  181. package/lighthouse-core/lib/i18n/locales/en-XA.json +141 -141
  182. package/lighthouse-core/lib/i18n/locales/en-XL.ctc.json +6628 -0
  183. package/lighthouse-core/lib/i18n/locales/en-XL.json +144 -150
  184. package/lighthouse-core/lib/i18n/locales/es-419.json +141 -141
  185. package/lighthouse-core/lib/i18n/locales/es.json +141 -141
  186. package/lighthouse-core/lib/i18n/locales/fi.json +143 -143
  187. package/lighthouse-core/lib/i18n/locales/fil.json +142 -142
  188. package/lighthouse-core/lib/i18n/locales/fr.json +141 -141
  189. package/lighthouse-core/lib/i18n/locales/he.json +142 -142
  190. package/lighthouse-core/lib/i18n/locales/hi.json +143 -143
  191. package/lighthouse-core/lib/i18n/locales/hr.json +141 -141
  192. package/lighthouse-core/lib/i18n/locales/hu.json +143 -143
  193. package/lighthouse-core/lib/i18n/locales/id.json +143 -143
  194. package/lighthouse-core/lib/i18n/locales/it.json +143 -143
  195. package/lighthouse-core/lib/i18n/locales/ja.json +143 -143
  196. package/lighthouse-core/lib/i18n/locales/ko.json +143 -143
  197. package/lighthouse-core/lib/i18n/locales/lt.json +143 -143
  198. package/lighthouse-core/lib/i18n/locales/lv.json +143 -143
  199. package/lighthouse-core/lib/i18n/locales/nl.json +141 -141
  200. package/lighthouse-core/lib/i18n/locales/no.json +141 -141
  201. package/lighthouse-core/lib/i18n/locales/pl.json +141 -141
  202. package/lighthouse-core/lib/i18n/locales/pt-PT.json +141 -141
  203. package/lighthouse-core/lib/i18n/locales/pt.json +141 -141
  204. package/lighthouse-core/lib/i18n/locales/ro.json +144 -144
  205. package/lighthouse-core/lib/i18n/locales/ru.json +143 -143
  206. package/lighthouse-core/lib/i18n/locales/sk.json +142 -142
  207. package/lighthouse-core/lib/i18n/locales/sl.json +141 -141
  208. package/lighthouse-core/lib/i18n/locales/sr-Latn.json +143 -143
  209. package/lighthouse-core/lib/i18n/locales/sr.json +143 -143
  210. package/lighthouse-core/lib/i18n/locales/sv.json +142 -142
  211. package/lighthouse-core/lib/i18n/locales/ta.json +141 -141
  212. package/lighthouse-core/lib/i18n/locales/te.json +143 -143
  213. package/lighthouse-core/lib/i18n/locales/th.json +143 -143
  214. package/lighthouse-core/lib/i18n/locales/tr.json +143 -143
  215. package/lighthouse-core/lib/i18n/locales/uk.json +141 -141
  216. package/lighthouse-core/lib/i18n/locales/vi.json +143 -143
  217. package/lighthouse-core/lib/i18n/locales/zh-HK.json +141 -141
  218. package/lighthouse-core/lib/i18n/locales/zh-TW.json +143 -143
  219. package/lighthouse-core/lib/i18n/locales/zh.json +143 -143
  220. package/lighthouse-core/lib/lh-error.js +2 -2
  221. package/lighthouse-core/lib/minify-trace.js +1 -1
  222. package/lighthouse-core/lib/network-request.js +1 -17
  223. package/lighthouse-core/lib/page-functions.js +5 -6
  224. package/lighthouse-core/lib/rect-helpers.js +3 -3
  225. package/lighthouse-core/lib/sd-validation/assets/jsonldcontext.json +7137 -0
  226. package/lighthouse-core/lib/sd-validation/assets/schema-tree.json +9900 -0
  227. package/{report/report-assets.js → lighthouse-core/lib/sd-validation/helpers/walk-object.js} +20 -12
  228. package/lighthouse-core/lib/sd-validation/json-expander.js +56 -0
  229. package/lighthouse-core/lib/sd-validation/json-linter.js +49 -0
  230. package/lighthouse-core/lib/sd-validation/jsonld-keyword-validator.js +50 -0
  231. package/lighthouse-core/lib/sd-validation/line-number-from-jsonld-path.js +60 -0
  232. package/lighthouse-core/lib/sd-validation/schema-validator.js +146 -0
  233. package/lighthouse-core/lib/sd-validation/scripts/download-jsonldcontext.js +30 -0
  234. package/lighthouse-core/lib/sd-validation/scripts/generate-schema-tree.js +97 -0
  235. package/lighthouse-core/lib/sd-validation/sd-validation.js +77 -0
  236. package/lighthouse-core/lib/tappable-rects.js +1 -1
  237. package/lighthouse-core/lib/tracehouse/trace-processor.js +42 -116
  238. package/lighthouse-core/lib/url-shim.js +2 -29
  239. package/lighthouse-core/report/html/html-report-assets.js +38 -0
  240. package/{report/README.md → lighthouse-core/report/html/readme.md} +11 -7
  241. package/{report → lighthouse-core/report/html}/renderer/category-renderer.js +0 -0
  242. package/{report → lighthouse-core/report/html}/renderer/crc-details-renderer.js +0 -0
  243. package/{report → lighthouse-core/report/html}/renderer/details-renderer.js +1 -1
  244. package/{report → lighthouse-core/report/html}/renderer/dom.js +0 -0
  245. package/{report → lighthouse-core/report/html}/renderer/element-screenshot-renderer.js +0 -0
  246. package/{report → lighthouse-core/report/html}/renderer/i18n.js +1 -1
  247. package/{report → lighthouse-core/report/html}/renderer/logger.js +0 -0
  248. package/{report → lighthouse-core/report/html}/renderer/performance-category-renderer.js +0 -0
  249. package/{report → lighthouse-core/report/html}/renderer/psi.js +0 -0
  250. package/{report → lighthouse-core/report/html}/renderer/pwa-category-renderer.js +0 -0
  251. package/{report → lighthouse-core/report/html}/renderer/report-renderer.js +0 -0
  252. package/{report → lighthouse-core/report/html}/renderer/report-ui-features.js +3 -3
  253. package/{report → lighthouse-core/report/html}/renderer/snippet-renderer.js +0 -0
  254. package/{report → lighthouse-core/report/html}/renderer/text-encoding.js +0 -0
  255. package/{report → lighthouse-core/report/html}/renderer/util.js +4 -7
  256. package/{report/assets/styles.css → lighthouse-core/report/html/report-styles.css} +0 -0
  257. package/{report/assets/standalone-template.html → lighthouse-core/report/html/report-template.html} +41 -1
  258. package/{report/assets → lighthouse-core/report/html}/templates.html +0 -0
  259. package/{report → lighthouse-core/report}/report-generator.js +1 -1
  260. package/lighthouse-core/runner.js +1 -1
  261. package/package.json +12 -13
  262. package/readme.md +2 -2
  263. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +2 -3
  264. package/third-party/chromium-synchronization/installability-errors-test.js +2 -2
  265. package/third-party/download-content-shell/download-content-shell.js +1 -2
  266. package/third-party/snyk/snapshot.json +1 -1
  267. package/tsconfig.json +1 -0
  268. package/types/artifacts.d.ts +21 -41
  269. package/types/audit.d.ts +0 -2
  270. package/types/config.d.ts +2 -16
  271. package/types/externs.d.ts +0 -1
  272. package/types/gatherer.d.ts +13 -13
  273. package/types/html-renderer.d.ts +14 -14
  274. package/types/i18n.d.ts +1 -1
  275. package/lighthouse-core/audits/byte-efficiency/uses-responsive-images-snapshot.js +0 -94
  276. package/lighthouse-core/computed/image-records.js +0 -62
  277. package/lighthouse-core/computed/metrics/navigation-metric.js +0 -46
  278. package/lighthouse-core/computed/processed-navigation.js +0 -21
  279. package/lighthouse-core/computed/processed-trace.js +0 -21
  280. package/lighthouse-core/gather/gatherers/gather-context.js +0 -25
  281. package/lighthouse-core/gather/gatherers/host-form-factor.js +0 -31
  282. package/lighthouse-core/gather/gatherers/host-user-agent.js +0 -29
  283. package/lighthouse-core/lib/lh-trace-processor.js +0 -46
  284. package/report/clients/standalone.js +0 -52
  285. package/report/test/renderer/category-renderer-test.js +0 -488
  286. package/report/test/renderer/crc-details-renderer-test.js +0 -115
  287. package/report/test/renderer/details-renderer-test.js +0 -843
  288. package/report/test/renderer/dom-test.js +0 -157
  289. package/report/test/renderer/element-screenshot-renderer-test.js +0 -189
  290. package/report/test/renderer/i18n-test.js +0 -146
  291. package/report/test/renderer/performance-category-renderer-test.js +0 -332
  292. package/report/test/renderer/psi-test.js +0 -152
  293. package/report/test/renderer/pwa-category-renderer-test.js +0 -303
  294. package/report/test/renderer/report-renderer-test.js +0 -325
  295. package/report/test/renderer/report-ui-features-test.js +0 -572
  296. package/report/test/renderer/snippet-renderer-test.js +0 -291
  297. package/report/test/renderer/text-encoding-test.js +0 -41
  298. package/report/test/renderer/util-test.js +0 -388
  299. package/report/test/report-generator-test.js +0 -145
@@ -166,11 +166,15 @@ function elementCenterIsAtZAxisTop(el, elCenterPoint) {
166
166
  /**
167
167
  * Finds all position sticky/absolute elements on the page and adds a class
168
168
  * that disables pointer events on them.
169
- * @param {string} className
170
169
  * @return {() => void} - undo function to re-enable pointer events
171
170
  */
172
171
  /* c8 ignore start */
173
- function disableFixedAndStickyElementPointerEvents(className) {
172
+ function disableFixedAndStickyElementPointerEvents() {
173
+ const className = 'lighthouse-disable-pointer-events';
174
+ const styleTag = document.createElement('style');
175
+ styleTag.textContent = `.${className} { pointer-events: none !important }`;
176
+ document.body.appendChild(styleTag);
177
+
174
178
  document.querySelectorAll('*').forEach(el => {
175
179
  const position = getComputedStyle(el).position;
176
180
  if (position === 'fixed' || position === 'sticky') {
@@ -182,17 +186,17 @@ function disableFixedAndStickyElementPointerEvents(className) {
182
186
  Array.from(document.getElementsByClassName(className)).forEach(el => {
183
187
  el.classList.remove(className);
184
188
  });
189
+ styleTag.remove();
185
190
  };
186
191
  }
187
192
  /* c8 ignore stop */
188
193
 
189
194
  /**
190
195
  * @param {string} tapTargetsSelector
191
- * @param {string} className
192
196
  * @return {LH.Artifacts.TapTarget[]}
193
197
  */
194
198
  /* c8 ignore start */
195
- function gatherTapTargets(tapTargetsSelector, className) {
199
+ function gatherTapTargets(tapTargetsSelector) {
196
200
  /** @type {LH.Artifacts.TapTarget[]} */
197
201
  const targets = [];
198
202
 
@@ -233,8 +237,7 @@ function gatherTapTargets(tapTargetsSelector, className) {
233
237
  // Disable pointer events so that tap targets below them don't get
234
238
  // detected as non-tappable (they are tappable, just not while the viewport
235
239
  // is at the current scroll position)
236
- const reenableFixedAndStickyElementPointerEvents =
237
- disableFixedAndStickyElementPointerEvents(className);
240
+ const reenableFixedAndStickyElementPointerEvents = disableFixedAndStickyElementPointerEvents();
238
241
 
239
242
  /** @type {{
240
243
  tapTargetElement: Element,
@@ -285,61 +288,13 @@ function gatherTapTargets(tapTargetsSelector, className) {
285
288
  /* c8 ignore stop */
286
289
 
287
290
  class TapTargets extends FRGatherer {
288
- constructor() {
289
- super();
290
- /**
291
- * This needs to be in the constructor.
292
- * https://github.com/GoogleChrome/lighthouse/issues/12134
293
- * @type {LH.Gatherer.GathererMeta}
294
- */
295
- this.meta = {
296
- supportedModes: ['snapshot', 'navigation'],
297
- };
298
- }
299
-
300
- /**
301
- * @param {LH.Gatherer.FRProtocolSession} session
302
- * @param {string} className
303
- * @return {Promise<string>}
304
- */
305
- async addStyleRule(session, className) {
306
- const frameTreeResponse = await session.sendCommand('Page.getFrameTree');
307
- const {styleSheetId} = await session.sendCommand('CSS.createStyleSheet', {
308
- frameId: frameTreeResponse.frameTree.frame.id,
309
- });
310
- const ruleText = `.${className} { pointer-events: none !important }`;
311
- await session.sendCommand('CSS.setStyleSheetText', {
312
- styleSheetId,
313
- text: ruleText,
314
- });
315
- return styleSheetId;
316
- }
317
-
318
- /**
319
- * @param {LH.Gatherer.FRProtocolSession} session
320
- * @param {string} styleSheetId
321
- */
322
- async removeStyleRule(session, styleSheetId) {
323
- await session.sendCommand('CSS.setStyleSheetText', {
324
- styleSheetId,
325
- text: '',
326
- });
327
- }
328
-
329
291
  /**
330
292
  * @param {LH.Gatherer.FRTransitionalContext} passContext
331
293
  * @return {Promise<LH.Artifacts.TapTarget[]>} All visible tap targets with their positions and sizes
332
294
  */
333
- async getArtifact(passContext) {
334
- const session = passContext.driver.defaultSession;
335
- await session.sendCommand('DOM.enable');
336
- await session.sendCommand('CSS.enable');
337
-
338
- const className = 'lighthouse-disable-pointer-events';
339
- const styleSheetId = await this.addStyleRule(session, className);
340
-
341
- const tapTargets = await passContext.driver.executionContext.evaluate(gatherTapTargets, {
342
- args: [tapTargetsSelector, className],
295
+ getArtifact(passContext) {
296
+ return passContext.driver.executionContext.evaluate(gatherTapTargets, {
297
+ args: [tapTargetsSelector],
343
298
  useIsolation: true,
344
299
  deps: [
345
300
  pageFunctions.getNodeDetailsString,
@@ -357,13 +312,6 @@ class TapTargets extends FRGatherer {
357
312
  pageFunctions.getNodeLabel,
358
313
  ],
359
314
  });
360
-
361
- await this.removeStyleRule(session, styleSheetId);
362
-
363
- await session.sendCommand('CSS.disable');
364
- await session.sendCommand('DOM.disable');
365
-
366
- return tapTargets;
367
315
  }
368
316
  }
369
317
 
@@ -5,33 +5,16 @@
5
5
  */
6
6
  'use strict';
7
7
 
8
- const FRGatherer = require('../../fraggle-rock/gather/base-gatherer.js');
8
+ const Gatherer = require('./gatherer.js');
9
9
  const serviceWorkers = require('../driver/service-workers.js');
10
10
 
11
- class ServiceWorker extends FRGatherer {
12
- /** @type {LH.Gatherer.GathererMeta} */
13
- meta = {
14
- supportedModes: ['navigation'],
15
- }
16
-
11
+ class ServiceWorker extends Gatherer {
17
12
  /**
18
13
  * @param {LH.Gatherer.PassContext} passContext
19
14
  * @return {Promise<LH.Artifacts['ServiceWorker']>}
20
15
  */
21
16
  async beforePass(passContext) {
22
- return this.getArtifact({...passContext, dependencies: {}});
23
- }
24
-
25
- // This gatherer is run in a separate pass for legacy mode.
26
- // Legacy compat code is in `beforePass`.
27
- async afterPass() { }
28
-
29
- /**
30
- * @param {LH.Gatherer.FRTransitionalContext} context
31
- * @return {Promise<LH.Artifacts['ServiceWorker']>}
32
- */
33
- async getArtifact(context) {
34
- const session = context.driver.defaultSession;
17
+ const session = passContext.driver.defaultSession;
35
18
  const {versions} = await serviceWorkers.getServiceWorkerVersions(session);
36
19
  const {registrations} = await serviceWorkers.getServiceWorkerRegistrations(session);
37
20
 
@@ -18,7 +18,7 @@ const FRGatherer = require('../../fraggle-rock/gather/base-gatherer.js');
18
18
  class TraceCompat extends FRGatherer {
19
19
  /** @type {LH.Gatherer.GathererMeta<'Trace'>} */
20
20
  meta = {
21
- supportedModes: ['timespan', 'navigation'],
21
+ supportedModes: ['navigation'],
22
22
  dependencies: {Trace: TraceGatherer.symbol},
23
23
  };
24
24
 
@@ -16,12 +16,10 @@
16
16
  const FRGatherer = require('../../fraggle-rock/gather/base-gatherer.js');
17
17
  const {resolveNodeIdToObjectId} = require('../driver/dom.js');
18
18
  const pageFunctions = require('../../lib/page-functions.js');
19
+ const TraceProcessor = require('../../lib/tracehouse/trace-processor.js');
19
20
  const RectHelpers = require('../../lib/rect-helpers.js');
20
21
  const Sentry = require('../../lib/sentry.js');
21
22
  const Trace = require('./trace.js');
22
- const ProcessedTrace = require('../../computed/processed-trace.js');
23
- const ProcessedNavigation = require('../../computed/processed-navigation.js');
24
- const LighthouseError = require('../../lib/lh-error.js');
25
23
 
26
24
  /** @typedef {{nodeId: number, score?: number, animations?: {name?: string, failureReasonsMask?: number, unsupportedProperties?: string[]}[]}} TraceElementData */
27
25
 
@@ -257,18 +255,8 @@ class TraceElements extends FRGatherer {
257
255
  throw new Error('Trace is missing!');
258
256
  }
259
257
 
260
- const processedTrace = await ProcessedTrace.request(trace, context);
261
- const {largestContentfulPaintEvt} = await ProcessedNavigation
262
- .request(processedTrace, context)
263
- .catch(err => {
264
- // If we were running in timespan mode and there was no paint, treat LCP as missing.
265
- if (context.gatherMode === 'timespan' && err.code === LighthouseError.errors.NO_FCP.code) {
266
- return {largestContentfulPaintEvt: undefined};
267
- }
268
-
269
- throw err;
270
- });
271
- const {mainThreadEvents} = processedTrace;
258
+ const {largestContentfulPaintEvt, mainThreadEvents} =
259
+ TraceProcessor.computeTraceOfTab(trace);
272
260
 
273
261
  const lcpNodeId = TraceElements.getNodeIDFromTraceEvent(largestContentfulPaintEvt);
274
262
  const clsNodeData = TraceElements.getTopLayoutShiftElements(mainThreadEvents);
@@ -12,7 +12,6 @@
12
12
  */
13
13
 
14
14
  const FRGatherer = require('../../fraggle-rock/gather/base-gatherer.js');
15
- const TraceProcessor = require('../../lib/tracehouse/trace-processor.js');
16
15
 
17
16
  class Trace extends FRGatherer {
18
17
  /** @type {LH.Trace} */
@@ -52,12 +51,9 @@ class Trace extends FRGatherer {
52
51
  // This doesn't add its own events, but adds a `stackTrace` property to devtools.timeline events
53
52
  'disabled-by-default-devtools.timeline.stack',
54
53
 
55
- // Additional categories used by devtools. Not used by Lighthouse, but included to facilitate
56
- // loading traces from Lighthouse into the Performance panel.
57
- 'disabled-by-default-devtools.timeline.frame',
58
- 'disabled-by-default-v8.cpu_profiler',
59
- 'disabled-by-default-v8.cpu_profiler.hires',
60
- 'latencyInfo',
54
+ // CPU sampling profiler data only enabled for debugging purposes
55
+ // 'disabled-by-default-v8.cpu_profiler',
56
+ // 'disabled-by-default-v8.cpu_profiler.hires',
61
57
  ];
62
58
  }
63
59
 
@@ -99,7 +95,7 @@ class Trace extends FRGatherer {
99
95
  /**
100
96
  * @param {LH.Gatherer.FRTransitionalContext} passContext
101
97
  */
102
- async startSensitiveInstrumentation({driver, gatherMode}) {
98
+ async startSensitiveInstrumentation({driver}) {
103
99
  // TODO(FR-COMPAT): read additional trace categories from overall settings?
104
100
  // TODO(FR-COMPAT): check if CSS/DOM domains have been enabled in another session and warn?
105
101
  await driver.defaultSession.sendCommand('Page.enable');
@@ -107,11 +103,6 @@ class Trace extends FRGatherer {
107
103
  categories: Trace.getDefaultTraceCategories().join(','),
108
104
  options: 'sampling-frequency=10000', // 1000 is default and too slow.
109
105
  });
110
-
111
- if (gatherMode === 'timespan') {
112
- await driver.defaultSession.sendCommand('Tracing.recordClockSyncMarker',
113
- {syncId: TraceProcessor.TIMESPAN_MARKER_ID});
114
- }
115
106
  }
116
107
 
117
108
  /**
@@ -30,7 +30,7 @@ function getViewportDimensions() {
30
30
  class ViewportDimensions extends FRGatherer {
31
31
  /** @type {LH.Gatherer.GathererMeta} */
32
32
  meta = {
33
- supportedModes: ['snapshot', 'timespan', 'navigation'],
33
+ supportedModes: ['snapshot', 'navigation'],
34
34
  }
35
35
 
36
36
  /**
@@ -437,17 +437,6 @@ class NetworkAnalyzer {
437
437
  * @return {LH.Artifacts.NetworkRequest}
438
438
  */
439
439
  static findMainDocument(records, finalURL) {
440
- const mainDocument = NetworkAnalyzer.findOptionalMainDocument(records, finalURL);
441
- if (!mainDocument) throw new Error('Unable to identify the main resource');
442
- return mainDocument;
443
- }
444
-
445
- /**
446
- * @param {Array<LH.Artifacts.NetworkRequest>} records
447
- * @param {string} [finalURL]
448
- * @return {LH.Artifacts.NetworkRequest|undefined}
449
- */
450
- static findOptionalMainDocument(records, finalURL) {
451
440
  // Try to find an exact match with the final URL first if we have one
452
441
  if (finalURL) {
453
442
  // equalWithExcludedFragments is expensive, so check that the finalUrl starts with the request first
@@ -459,7 +448,7 @@ class NetworkAnalyzer {
459
448
 
460
449
  const documentRequests = records.filter(record => record.resourceType ===
461
450
  NetworkRequest.TYPES.Document);
462
- if (!documentRequests.length) return undefined;
451
+ if (!documentRequests.length) throw new Error('Unable to identify the main resource');
463
452
  // The main document is the earliest document request, using position in networkRecords array to break ties.
464
453
  return documentRequests.reduce((min, r) => (r.startTime < min.startTime ? r : min));
465
454
  }
@@ -469,7 +458,7 @@ class NetworkAnalyzer {
469
458
  * See: {@link NetworkAnalyzer.findMainDocument}) for how to retrieve main document.
470
459
  *
471
460
  * @param {LH.Artifacts.NetworkRequest} request
472
- * @return {LH.Artifacts.NetworkRequest}
461
+ * @returns {LH.Artifacts.NetworkRequest}
473
462
  */
474
463
  static resolveRedirects(request) {
475
464
  while (request.redirectDestination) request = request.redirectDestination;
@@ -23,6 +23,8 @@ const NO_CPU_THROTTLE_METRICS = {
23
23
  */
24
24
  async function emulate(session, settings) {
25
25
  if (settings.emulatedUserAgent !== false) {
26
+ // Network.enable must be called for UA overriding to work
27
+ await session.sendCommand('Network.enable');
26
28
  await session.sendCommand('Network.setUserAgentOverride', {
27
29
  userAgent: /** @type {string} */ (settings.emulatedUserAgent),
28
30
  });
@@ -13,13 +13,13 @@ const lookupClosestLocale = require('lookup-closest-locale');
13
13
  const LOCALES = require('./locales.js');
14
14
  const {isObjectOfUnknownValues, isObjectOrArrayOfUnknownValues} = require('../type-verifiers.js');
15
15
  const log = require('lighthouse-logger');
16
- const {LH_ROOT} = require('../../../root.js');
17
16
 
18
17
  const DEFAULT_LOCALE = 'en';
19
18
 
20
19
  /** @typedef {import('intl-messageformat-parser').Element} MessageElement */
21
20
  /** @typedef {import('intl-messageformat-parser').ArgumentElement} ArgumentElement */
22
21
 
22
+ const LH_ROOT = path.join(__dirname, '../../../');
23
23
  const MESSAGE_I18N_ID_REGEX = / | [^\s]+$/;
24
24
 
25
25
  const UIStrings = {
@@ -346,7 +346,7 @@ function getRendererFormattedStrings(locale) {
346
346
  const localeMessages = LOCALES[locale];
347
347
  if (!localeMessages) throw new Error(`Unsupported locale '${locale}'`);
348
348
 
349
- const icuMessageIds = Object.keys(localeMessages).filter(f => f.startsWith('report/'));
349
+ const icuMessageIds = Object.keys(localeMessages).filter(f => f.includes('core/report/html/'));
350
350
  const strings = /** @type {LH.I18NRendererStrings} */ ({});
351
351
  for (const icuMessageId of icuMessageIds) {
352
352
  const [filename, varName] = icuMessageId.split(' | ');
@@ -588,7 +588,7 @@
588
588
  "message": "‏‮Severity‬‏"
589
589
  },
590
590
  "lighthouse-core/audits/csp-xss.js | description": {
591
- "message": "‏‮A‬‏ ‏‮strong‬‏ ‏‮Content‬‏ ‏‮Security‬‏ ‏‮Policy‬‏ (‏‮CSP‬‏) ‏‮significantly‬‏ ‏‮reduces‬‏ ‏‮the‬‏ ‏‮risk‬‏ ‏‮of‬‏ ‏‮cross‬‏-‏‮site‬‏ ‏‮scripting‬‏ (‏‮XSS‬‏) ‏‮attacks‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/csp-xss/)"
591
+ "message": "‏‮A‬‏ ‏‮strong‬‏ ‏‮Content‬‏ ‏‮Security‬‏ ‏‮Policy‬‏ (‏‮CSP‬‏) ‏‮significantly‬‏ ‏‮reduces‬‏ ‏‮the‬‏ ‏‮risk‬‏ ‏‮of‬‏ ‏‮cross‬‏-‏‮site‬‏ ‏‮scripting‬‏ (‏‮XSS‬‏) ‏‮attacks‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/strict-csp/)"
592
592
  },
593
593
  "lighthouse-core/audits/csp-xss.js | itemSeveritySyntax": {
594
594
  "message": "‏‮Syntax‬‏"
@@ -903,10 +903,10 @@
903
903
  "message": "‏‮Manifest‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮a‬‏ '‏‮name‬‏' ‏‮or‬‏ '‏‮short‬‏_‏‮name‬‏' ‏‮field‬‏"
904
904
  },
905
905
  "lighthouse-core/audits/installable-manifest.js | manifest-missing-suitable-icon": {
906
- "message": "Manifest does not contain a suitable icon - PNG, SVG or WebP format of at least {value0} px is required, the sizes attribute must be set, and the purpose attribute, if set, must include \"any\"."
906
+ "message": "‏‮Manifest‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮a‬‏ ‏‮suitable‬‏ ‏‮icon‬‏ - ‏‮PNG‬‏, ‏‮SVG‬‏ ‏‮or‬‏ ‏‮WebP‬‏ ‏‮format‬‏ ‏‮of‬‏ ‏‮at‬‏ ‏‮least‬‏ {value0} ‏‮px‬‏ ‏‮is‬‏ ‏‮required‬‏, ‏‮the‬‏ ‏‮sizes‬‏ ‏‮attribute‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮set‬‏, ‏‮and‬‏ ‏‮the‬‏ ‏‮purpose‬‏ ‏‮attribute‬‏, ‏‮if‬‏ ‏‮set‬‏, ‏‮must‬‏ ‏‮include‬‏ \"‏‮any‬‏\" ‏‮or‬‏ \"‏‮maskable‬‏\"."
907
907
  },
908
908
  "lighthouse-core/audits/installable-manifest.js | no-acceptable-icon": {
909
- "message": "No supplied icon is at least {value0} px square in PNG, SVG or WebP format, with the purpose attribute unset or set to \"any\""
909
+ "message": "‏‮No‬‏ ‏‮supplied‬‏ ‏‮icon‬‏ ‏‮is‬‏ ‏‮at‬‏ ‏‮least‬‏ {value0} ‏‮px‬‏ ‏‮square‬‏ ‏‮in‬‏ ‏‮PNG‬‏, ‏‮SVG‬‏ ‏‮or‬‏ ‏‮WebP‬‏ ‏‮format‬‏"
910
910
  },
911
911
  "lighthouse-core/audits/installable-manifest.js | no-icon-available": {
912
912
  "message": "‏‮Downloaded‬‏ ‏‮icon‬‏ ‏‮was‬‏ ‏‮empty‬‏ ‏‮or‬‏ ‏‮corrupted‬‏"
@@ -1955,6 +1955,144 @@
1955
1955
  "lighthouse-core/lib/lh-error.js | urlInvalid": {
1956
1956
  "message": "‏‮The‬‏ ‏‮URL‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮provided‬‏ ‏‮appears‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮invalid‬‏."
1957
1957
  },
1958
+ "lighthouse-core/report/html/renderer/util.js | calculatorLink": {
1959
+ "message": "‏‮See‬‏ ‏‮calculator‬‏."
1960
+ },
1961
+ "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
1962
+ "message": "‏‮Initial‬‏ ‏‮Navigation‬‏"
1963
+ },
1964
+ "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
1965
+ "message": "‏‮Maximum‬‏ ‏‮critical‬‏ ‏‮path‬‏ ‏‮latency‬‏:"
1966
+ },
1967
+ "lighthouse-core/report/html/renderer/util.js | dropdownCopyJSON": {
1968
+ "message": "‏‮Copy‬‏ ‏‮JSON‬‏"
1969
+ },
1970
+ "lighthouse-core/report/html/renderer/util.js | dropdownDarkTheme": {
1971
+ "message": "‏‮Toggle‬‏ ‏‮Dark‬‏ ‏‮Theme‬‏"
1972
+ },
1973
+ "lighthouse-core/report/html/renderer/util.js | dropdownPrintExpanded": {
1974
+ "message": "‏‮Print‬‏ ‏‮Expanded‬‏"
1975
+ },
1976
+ "lighthouse-core/report/html/renderer/util.js | dropdownPrintSummary": {
1977
+ "message": "‏‮Print‬‏ ‏‮Summary‬‏"
1978
+ },
1979
+ "lighthouse-core/report/html/renderer/util.js | dropdownSaveGist": {
1980
+ "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮Gist‬‏"
1981
+ },
1982
+ "lighthouse-core/report/html/renderer/util.js | dropdownSaveHTML": {
1983
+ "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮HTML‬‏"
1984
+ },
1985
+ "lighthouse-core/report/html/renderer/util.js | dropdownSaveJSON": {
1986
+ "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮JSON‬‏"
1987
+ },
1988
+ "lighthouse-core/report/html/renderer/util.js | dropdownViewer": {
1989
+ "message": "‏‮Open‬‏ ‏‮in‬‏ ‏‮Viewer‬‏"
1990
+ },
1991
+ "lighthouse-core/report/html/renderer/util.js | errorLabel": {
1992
+ "message": "‏‮Error‬‏!"
1993
+ },
1994
+ "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
1995
+ "message": "‏‮Report‬‏ ‏‮error‬‏: ‏‮no‬‏ ‏‮audit‬‏ ‏‮information‬‏"
1996
+ },
1997
+ "lighthouse-core/report/html/renderer/util.js | footerIssue": {
1998
+ "message": "‏‮File‬‏ ‏‮an‬‏ ‏‮issue‬‏"
1999
+ },
2000
+ "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
2001
+ "message": "‏‮Lab‬‏ ‏‮Data‬‏"
2002
+ },
2003
+ "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
2004
+ "message": "[‏‮Lighthouse‬‏](https://developers.google.com/web/tools/lighthouse/) ‏‮analysis‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮current‬‏ ‏‮page‬‏ ‏‮on‬‏ ‏‮an‬‏ ‏‮emulated‬‏ ‏‮mobile‬‏ ‏‮network‬‏. ‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏."
2005
+ },
2006
+ "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
2007
+ "message": "‏‮Additional‬‏ ‏‮items‬‏ ‏‮to‬‏ ‏‮manually‬‏ ‏‮check‬‏"
2008
+ },
2009
+ "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
2010
+ "message": "‏‮Not‬‏ ‏‮applicable‬‏"
2011
+ },
2012
+ "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
2013
+ "message": "‏‮Opportunity‬‏"
2014
+ },
2015
+ "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
2016
+ "message": "‏‮Estimated‬‏ ‏‮Savings‬‏"
2017
+ },
2018
+ "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
2019
+ "message": "‏‮Passed‬‏ ‏‮audits‬‏"
2020
+ },
2021
+ "lighthouse-core/report/html/renderer/util.js | runtimeDesktopEmulation": {
2022
+ "message": "‏‮Emulated‬‏ ‏‮Desktop‬‏"
2023
+ },
2024
+ "lighthouse-core/report/html/renderer/util.js | runtimeMobileEmulation": {
2025
+ "message": "‏‮Emulated‬‏ ‏‮Moto‬‏ ‏‮G‬‏4"
2026
+ },
2027
+ "lighthouse-core/report/html/renderer/util.js | runtimeNoEmulation": {
2028
+ "message": "‏‮No‬‏ ‏‮emulation‬‏"
2029
+ },
2030
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsAxeVersion": {
2031
+ "message": "‏‮Axe‬‏ ‏‮version‬‏"
2032
+ },
2033
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsBenchmark": {
2034
+ "message": "‏‮CPU‬‏/‏‮Memory‬‏ ‏‮Power‬‏"
2035
+ },
2036
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsCPUThrottling": {
2037
+ "message": "‏‮CPU‬‏ ‏‮throttling‬‏"
2038
+ },
2039
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsChannel": {
2040
+ "message": "‏‮Channel‬‏"
2041
+ },
2042
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsDevice": {
2043
+ "message": "‏‮Device‬‏"
2044
+ },
2045
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsFetchTime": {
2046
+ "message": "‏‮Fetch‬‏ ‏‮Time‬‏"
2047
+ },
2048
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsNetworkThrottling": {
2049
+ "message": "‏‮Network‬‏ ‏‮throttling‬‏"
2050
+ },
2051
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsTitle": {
2052
+ "message": "‏‮Runtime‬‏ ‏‮Settings‬‏"
2053
+ },
2054
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsUA": {
2055
+ "message": "‏‮User‬‏ ‏‮agent‬‏ (‏‮host‬‏)"
2056
+ },
2057
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsUANetwork": {
2058
+ "message": "‏‮User‬‏ ‏‮agent‬‏ (‏‮network‬‏)"
2059
+ },
2060
+ "lighthouse-core/report/html/renderer/util.js | runtimeSettingsUrl": {
2061
+ "message": "‏‮URL‬‏"
2062
+ },
2063
+ "lighthouse-core/report/html/renderer/util.js | runtimeUnknown": {
2064
+ "message": "‏‮Unknown‬‏"
2065
+ },
2066
+ "lighthouse-core/report/html/renderer/util.js | showRelevantAudits": {
2067
+ "message": "‏‮Show‬‏ ‏‮audits‬‏ ‏‮relevant‬‏ ‏‮to‬‏:"
2068
+ },
2069
+ "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
2070
+ "message": "‏‮Collapse‬‏ ‏‮snippet‬‏"
2071
+ },
2072
+ "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
2073
+ "message": "‏‮Expand‬‏ ‏‮snippet‬‏"
2074
+ },
2075
+ "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
2076
+ "message": "‏‮Show‬‏ 3‏‮rd‬‏-‏‮party‬‏ ‏‮resources‬‏"
2077
+ },
2078
+ "lighthouse-core/report/html/renderer/util.js | throttlingProvided": {
2079
+ "message": "‏‮Provided‬‏ ‏‮by‬‏ ‏‮environment‬‏"
2080
+ },
2081
+ "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
2082
+ "message": "‏‮There‬‏ ‏‮were‬‏ ‏‮issues‬‏ ‏‮affecting‬‏ ‏‮this‬‏ ‏‮run‬‏ ‏‮of‬‏ ‏‮Lighthouse‬‏:"
2083
+ },
2084
+ "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
2085
+ "message": "‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏. ‏‮The‬‏ [‏‮performance‬‏ ‏‮score‬‏ ‏‮is‬‏ ‏‮calculated‬‏](https://web.dev/performance-scoring/) ‏‮directly‬‏ ‏‮from‬‏ ‏‮these‬‏ ‏‮metrics‬‏."
2086
+ },
2087
+ "lighthouse-core/report/html/renderer/util.js | viewTreemapLabel": {
2088
+ "message": "‏‮View‬‏ ‏‮Treemap‬‏"
2089
+ },
2090
+ "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
2091
+ "message": "‏‮Passed‬‏ ‏‮audits‬‏ ‏‮but‬‏ ‏‮with‬‏ ‏‮warnings‬‏"
2092
+ },
2093
+ "lighthouse-core/report/html/renderer/util.js | warningHeader": {
2094
+ "message": "‏‮Warnings‬‏: "
2095
+ },
1958
2096
  "lighthouse-treemap/app/src/util.js | allLabel": {
1959
2097
  "message": "‏‮All‬‏"
1960
2098
  },
@@ -2242,143 +2380,5 @@
2242
2380
  },
2243
2381
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | uses-text-compression": {
2244
2382
  "message": "‏‮You‬‏ ‏‮can‬‏ ‏‮enable‬‏ ‏‮text‬‏ ‏‮compression‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮web‬‏ ‏‮server‬‏ ‏‮configuration‬‏."
2245
- },
2246
- "report/renderer/util.js | calculatorLink": {
2247
- "message": "‏‮See‬‏ ‏‮calculator‬‏."
2248
- },
2249
- "report/renderer/util.js | crcInitialNavigation": {
2250
- "message": "‏‮Initial‬‏ ‏‮Navigation‬‏"
2251
- },
2252
- "report/renderer/util.js | crcLongestDurationLabel": {
2253
- "message": "‏‮Maximum‬‏ ‏‮critical‬‏ ‏‮path‬‏ ‏‮latency‬‏:"
2254
- },
2255
- "report/renderer/util.js | dropdownCopyJSON": {
2256
- "message": "‏‮Copy‬‏ ‏‮JSON‬‏"
2257
- },
2258
- "report/renderer/util.js | dropdownDarkTheme": {
2259
- "message": "‏‮Toggle‬‏ ‏‮Dark‬‏ ‏‮Theme‬‏"
2260
- },
2261
- "report/renderer/util.js | dropdownPrintExpanded": {
2262
- "message": "‏‮Print‬‏ ‏‮Expanded‬‏"
2263
- },
2264
- "report/renderer/util.js | dropdownPrintSummary": {
2265
- "message": "‏‮Print‬‏ ‏‮Summary‬‏"
2266
- },
2267
- "report/renderer/util.js | dropdownSaveGist": {
2268
- "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮Gist‬‏"
2269
- },
2270
- "report/renderer/util.js | dropdownSaveHTML": {
2271
- "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮HTML‬‏"
2272
- },
2273
- "report/renderer/util.js | dropdownSaveJSON": {
2274
- "message": "‏‮Save‬‏ ‏‮as‬‏ ‏‮JSON‬‏"
2275
- },
2276
- "report/renderer/util.js | dropdownViewer": {
2277
- "message": "‏‮Open‬‏ ‏‮in‬‏ ‏‮Viewer‬‏"
2278
- },
2279
- "report/renderer/util.js | errorLabel": {
2280
- "message": "‏‮Error‬‏!"
2281
- },
2282
- "report/renderer/util.js | errorMissingAuditInfo": {
2283
- "message": "‏‮Report‬‏ ‏‮error‬‏: ‏‮no‬‏ ‏‮audit‬‏ ‏‮information‬‏"
2284
- },
2285
- "report/renderer/util.js | footerIssue": {
2286
- "message": "‏‮File‬‏ ‏‮an‬‏ ‏‮issue‬‏"
2287
- },
2288
- "report/renderer/util.js | labDataTitle": {
2289
- "message": "‏‮Lab‬‏ ‏‮Data‬‏"
2290
- },
2291
- "report/renderer/util.js | lsPerformanceCategoryDescription": {
2292
- "message": "[‏‮Lighthouse‬‏](https://developers.google.com/web/tools/lighthouse/) ‏‮analysis‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮current‬‏ ‏‮page‬‏ ‏‮on‬‏ ‏‮an‬‏ ‏‮emulated‬‏ ‏‮mobile‬‏ ‏‮network‬‏. ‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏."
2293
- },
2294
- "report/renderer/util.js | manualAuditsGroupTitle": {
2295
- "message": "‏‮Additional‬‏ ‏‮items‬‏ ‏‮to‬‏ ‏‮manually‬‏ ‏‮check‬‏"
2296
- },
2297
- "report/renderer/util.js | notApplicableAuditsGroupTitle": {
2298
- "message": "‏‮Not‬‏ ‏‮applicable‬‏"
2299
- },
2300
- "report/renderer/util.js | opportunityResourceColumnLabel": {
2301
- "message": "‏‮Opportunity‬‏"
2302
- },
2303
- "report/renderer/util.js | opportunitySavingsColumnLabel": {
2304
- "message": "‏‮Estimated‬‏ ‏‮Savings‬‏"
2305
- },
2306
- "report/renderer/util.js | passedAuditsGroupTitle": {
2307
- "message": "‏‮Passed‬‏ ‏‮audits‬‏"
2308
- },
2309
- "report/renderer/util.js | runtimeDesktopEmulation": {
2310
- "message": "‏‮Emulated‬‏ ‏‮Desktop‬‏"
2311
- },
2312
- "report/renderer/util.js | runtimeMobileEmulation": {
2313
- "message": "‏‮Emulated‬‏ ‏‮Moto‬‏ ‏‮G‬‏4"
2314
- },
2315
- "report/renderer/util.js | runtimeNoEmulation": {
2316
- "message": "‏‮No‬‏ ‏‮emulation‬‏"
2317
- },
2318
- "report/renderer/util.js | runtimeSettingsAxeVersion": {
2319
- "message": "‏‮Axe‬‏ ‏‮version‬‏"
2320
- },
2321
- "report/renderer/util.js | runtimeSettingsBenchmark": {
2322
- "message": "‏‮CPU‬‏/‏‮Memory‬‏ ‏‮Power‬‏"
2323
- },
2324
- "report/renderer/util.js | runtimeSettingsCPUThrottling": {
2325
- "message": "‏‮CPU‬‏ ‏‮throttling‬‏"
2326
- },
2327
- "report/renderer/util.js | runtimeSettingsChannel": {
2328
- "message": "‏‮Channel‬‏"
2329
- },
2330
- "report/renderer/util.js | runtimeSettingsDevice": {
2331
- "message": "‏‮Device‬‏"
2332
- },
2333
- "report/renderer/util.js | runtimeSettingsFetchTime": {
2334
- "message": "‏‮Fetch‬‏ ‏‮Time‬‏"
2335
- },
2336
- "report/renderer/util.js | runtimeSettingsNetworkThrottling": {
2337
- "message": "‏‮Network‬‏ ‏‮throttling‬‏"
2338
- },
2339
- "report/renderer/util.js | runtimeSettingsTitle": {
2340
- "message": "‏‮Runtime‬‏ ‏‮Settings‬‏"
2341
- },
2342
- "report/renderer/util.js | runtimeSettingsUA": {
2343
- "message": "‏‮User‬‏ ‏‮agent‬‏ (‏‮host‬‏)"
2344
- },
2345
- "report/renderer/util.js | runtimeSettingsUANetwork": {
2346
- "message": "‏‮User‬‏ ‏‮agent‬‏ (‏‮network‬‏)"
2347
- },
2348
- "report/renderer/util.js | runtimeSettingsUrl": {
2349
- "message": "‏‮URL‬‏"
2350
- },
2351
- "report/renderer/util.js | runtimeUnknown": {
2352
- "message": "‏‮Unknown‬‏"
2353
- },
2354
- "report/renderer/util.js | showRelevantAudits": {
2355
- "message": "‏‮Show‬‏ ‏‮audits‬‏ ‏‮relevant‬‏ ‏‮to‬‏:"
2356
- },
2357
- "report/renderer/util.js | snippetCollapseButtonLabel": {
2358
- "message": "‏‮Collapse‬‏ ‏‮snippet‬‏"
2359
- },
2360
- "report/renderer/util.js | snippetExpandButtonLabel": {
2361
- "message": "‏‮Expand‬‏ ‏‮snippet‬‏"
2362
- },
2363
- "report/renderer/util.js | thirdPartyResourcesLabel": {
2364
- "message": "‏‮Show‬‏ 3‏‮rd‬‏-‏‮party‬‏ ‏‮resources‬‏"
2365
- },
2366
- "report/renderer/util.js | throttlingProvided": {
2367
- "message": "‏‮Provided‬‏ ‏‮by‬‏ ‏‮environment‬‏"
2368
- },
2369
- "report/renderer/util.js | toplevelWarningsMessage": {
2370
- "message": "‏‮There‬‏ ‏‮were‬‏ ‏‮issues‬‏ ‏‮affecting‬‏ ‏‮this‬‏ ‏‮run‬‏ ‏‮of‬‏ ‏‮Lighthouse‬‏:"
2371
- },
2372
- "report/renderer/util.js | varianceDisclaimer": {
2373
- "message": "‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏. ‏‮The‬‏ [‏‮performance‬‏ ‏‮score‬‏ ‏‮is‬‏ ‏‮calculated‬‏](https://web.dev/performance-scoring/) ‏‮directly‬‏ ‏‮from‬‏ ‏‮these‬‏ ‏‮metrics‬‏."
2374
- },
2375
- "report/renderer/util.js | viewTreemapLabel": {
2376
- "message": "‏‮View‬‏ ‏‮Treemap‬‏"
2377
- },
2378
- "report/renderer/util.js | warningAuditsGroupTitle": {
2379
- "message": "‏‮Passed‬‏ ‏‮audits‬‏ ‏‮but‬‏ ‏‮with‬‏ ‏‮warnings‬‏"
2380
- },
2381
- "report/renderer/util.js | warningHeader": {
2382
- "message": "‏‮Warnings‬‏: "
2383
2383
  }
2384
2384
  }