lighthouse 12.1.0 → 12.2.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 (436) hide show
  1. package/cli/cli-flags.d.ts +2 -2
  2. package/cli/cli-flags.js +1 -1
  3. package/cli/sentry-prompt.js +2 -2
  4. package/cli/test/smokehouse/frontends/lib.d.ts +1 -1
  5. package/cli/test/smokehouse/lib/concurrent-mapper.d.ts +6 -6
  6. package/cli/test/smokehouse/lighthouse-runners/bundle.d.ts +1 -1
  7. package/cli/test/smokehouse/lighthouse-runners/cli.d.ts +1 -2
  8. package/cli/test/smokehouse/lighthouse-runners/devtools.d.ts +1 -1
  9. package/cli/test/smokehouse/report-assert.d.ts +0 -1
  10. package/cli/test/smokehouse/version-check.d.ts +3 -3
  11. package/core/audits/accessibility/accesskeys.d.ts +3 -3
  12. package/core/audits/accessibility/aria-allowed-attr.d.ts +3 -3
  13. package/core/audits/accessibility/aria-allowed-role.d.ts +3 -3
  14. package/core/audits/accessibility/aria-command-name.d.ts +3 -3
  15. package/core/audits/accessibility/aria-conditional-attr.d.ts +3 -3
  16. package/core/audits/accessibility/aria-deprecated-role.d.ts +3 -3
  17. package/core/audits/accessibility/aria-dialog-name.d.ts +3 -3
  18. package/core/audits/accessibility/aria-hidden-body.d.ts +3 -3
  19. package/core/audits/accessibility/aria-hidden-focus.d.ts +3 -3
  20. package/core/audits/accessibility/aria-input-field-name.d.ts +3 -3
  21. package/core/audits/accessibility/aria-meter-name.d.ts +3 -3
  22. package/core/audits/accessibility/aria-progressbar-name.d.ts +3 -3
  23. package/core/audits/accessibility/aria-prohibited-attr.d.ts +3 -3
  24. package/core/audits/accessibility/aria-required-attr.d.ts +3 -3
  25. package/core/audits/accessibility/aria-required-children.d.ts +3 -3
  26. package/core/audits/accessibility/aria-required-parent.d.ts +3 -3
  27. package/core/audits/accessibility/aria-roles.d.ts +3 -3
  28. package/core/audits/accessibility/aria-text.d.ts +3 -3
  29. package/core/audits/accessibility/aria-toggle-field-name.d.ts +3 -3
  30. package/core/audits/accessibility/aria-tooltip-name.d.ts +3 -3
  31. package/core/audits/accessibility/aria-treeitem-name.d.ts +3 -3
  32. package/core/audits/accessibility/aria-valid-attr-value.d.ts +3 -3
  33. package/core/audits/accessibility/aria-valid-attr.d.ts +3 -3
  34. package/core/audits/accessibility/axe-audit.d.ts +1 -1
  35. package/core/audits/accessibility/button-name.d.ts +3 -3
  36. package/core/audits/accessibility/bypass.d.ts +3 -3
  37. package/core/audits/accessibility/color-contrast.d.ts +3 -3
  38. package/core/audits/accessibility/definition-list.d.ts +3 -3
  39. package/core/audits/accessibility/dlitem.d.ts +3 -3
  40. package/core/audits/accessibility/document-title.d.ts +3 -3
  41. package/core/audits/accessibility/duplicate-id-aria.d.ts +3 -3
  42. package/core/audits/accessibility/empty-heading.d.ts +3 -3
  43. package/core/audits/accessibility/form-field-multiple-labels.d.ts +3 -3
  44. package/core/audits/accessibility/frame-title.d.ts +3 -3
  45. package/core/audits/accessibility/heading-order.d.ts +3 -3
  46. package/core/audits/accessibility/html-has-lang.d.ts +3 -3
  47. package/core/audits/accessibility/html-lang-valid.d.ts +3 -3
  48. package/core/audits/accessibility/html-xml-lang-mismatch.d.ts +3 -3
  49. package/core/audits/accessibility/identical-links-same-purpose.d.ts +3 -3
  50. package/core/audits/accessibility/image-alt.d.ts +3 -3
  51. package/core/audits/accessibility/image-redundant-alt.d.ts +3 -3
  52. package/core/audits/accessibility/input-button-name.d.ts +3 -3
  53. package/core/audits/accessibility/input-image-alt.d.ts +3 -3
  54. package/core/audits/accessibility/label-content-name-mismatch.d.ts +3 -3
  55. package/core/audits/accessibility/label.d.ts +3 -3
  56. package/core/audits/accessibility/landmark-one-main.d.ts +3 -3
  57. package/core/audits/accessibility/link-in-text-block.d.ts +3 -3
  58. package/core/audits/accessibility/link-name.d.ts +3 -3
  59. package/core/audits/accessibility/list.d.ts +3 -3
  60. package/core/audits/accessibility/listitem.d.ts +3 -3
  61. package/core/audits/accessibility/meta-refresh.d.ts +3 -3
  62. package/core/audits/accessibility/meta-viewport.d.ts +3 -3
  63. package/core/audits/accessibility/object-alt.d.ts +3 -3
  64. package/core/audits/accessibility/select-name.d.ts +3 -3
  65. package/core/audits/accessibility/skip-link.d.ts +3 -3
  66. package/core/audits/accessibility/tabindex.d.ts +3 -3
  67. package/core/audits/accessibility/table-duplicate-name.d.ts +3 -3
  68. package/core/audits/accessibility/table-fake-caption.d.ts +3 -3
  69. package/core/audits/accessibility/target-size.d.ts +3 -3
  70. package/core/audits/accessibility/td-has-header.d.ts +3 -3
  71. package/core/audits/accessibility/td-headers-attr.d.ts +3 -3
  72. package/core/audits/accessibility/th-has-data-cells.d.ts +3 -3
  73. package/core/audits/accessibility/valid-lang.d.ts +3 -3
  74. package/core/audits/accessibility/video-caption.d.ts +3 -3
  75. package/core/audits/audit.d.ts +17 -17
  76. package/core/audits/autocomplete.d.ts +9 -9
  77. package/core/audits/bf-cache.d.ts +10 -10
  78. package/core/audits/bootup-time.d.ts +7 -7
  79. package/core/audits/byte-efficiency/byte-efficiency-audit.d.ts +6 -8
  80. package/core/audits/byte-efficiency/byte-efficiency-audit.js +3 -6
  81. package/core/audits/byte-efficiency/duplicated-javascript.d.ts +4 -4
  82. package/core/audits/byte-efficiency/efficient-animated-content.d.ts +3 -4
  83. package/core/audits/byte-efficiency/legacy-javascript.d.ts +7 -8
  84. package/core/audits/byte-efficiency/modern-image-formats.d.ts +3 -3
  85. package/core/audits/byte-efficiency/offscreen-images.d.ts +3 -4
  86. package/core/audits/byte-efficiency/render-blocking-resources.d.ts +5 -9
  87. package/core/audits/byte-efficiency/render-blocking-resources.js +10 -16
  88. package/core/audits/byte-efficiency/total-byte-weight.d.ts +4 -4
  89. package/core/audits/byte-efficiency/unminified-css.d.ts +3 -3
  90. package/core/audits/byte-efficiency/unminified-javascript.d.ts +3 -3
  91. package/core/audits/byte-efficiency/unused-css-rules.d.ts +3 -3
  92. package/core/audits/byte-efficiency/unused-javascript.d.ts +3 -3
  93. package/core/audits/byte-efficiency/uses-long-cache-ttl.d.ts +4 -6
  94. package/core/audits/byte-efficiency/uses-optimized-images.d.ts +3 -3
  95. package/core/audits/byte-efficiency/uses-responsive-images-snapshot.d.ts +4 -4
  96. package/core/audits/byte-efficiency/uses-responsive-images.d.ts +4 -5
  97. package/core/audits/byte-efficiency/uses-text-compression.d.ts +3 -3
  98. package/core/audits/critical-request-chains.d.ts +3 -3
  99. package/core/audits/csp-xss.d.ts +8 -8
  100. package/core/audits/deprecations.d.ts +6 -6
  101. package/core/audits/dobetterweb/charset.d.ts +3 -3
  102. package/core/audits/dobetterweb/doctype.d.ts +9 -9
  103. package/core/audits/dobetterweb/dom-size.d.ts +9 -9
  104. package/core/audits/dobetterweb/geolocation-on-start.d.ts +3 -3
  105. package/core/audits/dobetterweb/inspector-issues.d.ts +6 -6
  106. package/core/audits/dobetterweb/js-libraries.d.ts +3 -3
  107. package/core/audits/dobetterweb/no-document-write.d.ts +3 -3
  108. package/core/audits/dobetterweb/notification-on-start.d.ts +3 -3
  109. package/core/audits/dobetterweb/paste-preventing-inputs.d.ts +3 -3
  110. package/core/audits/dobetterweb/uses-http2.d.ts +7 -11
  111. package/core/audits/dobetterweb/uses-http2.js +2 -5
  112. package/core/audits/dobetterweb/uses-passive-event-listeners.d.ts +3 -3
  113. package/core/audits/errors-in-console.d.ts +4 -4
  114. package/core/audits/font-display.d.ts +4 -4
  115. package/core/audits/image-aspect-ratio.d.ts +5 -5
  116. package/core/audits/image-size-responsive.d.ts +7 -7
  117. package/core/audits/is-on-https.d.ts +10 -10
  118. package/core/audits/largest-contentful-paint-element.d.ts +9 -9
  119. package/core/audits/layout-shifts.d.ts +9 -9
  120. package/core/audits/lcp-lazy-loaded.d.ts +3 -3
  121. package/core/audits/long-tasks.d.ts +11 -11
  122. package/core/audits/long-tasks.js +5 -5
  123. package/core/audits/mainthread-work-breakdown.d.ts +5 -5
  124. package/core/audits/metrics/cumulative-layout-shift.d.ts +1 -1
  125. package/core/audits/metrics/first-contentful-paint.d.ts +1 -1
  126. package/core/audits/metrics/first-meaningful-paint.d.ts +1 -1
  127. package/core/audits/metrics/interaction-to-next-paint.d.ts +1 -1
  128. package/core/audits/metrics/interactive.d.ts +1 -1
  129. package/core/audits/metrics/largest-contentful-paint.d.ts +1 -1
  130. package/core/audits/metrics/max-potential-fid.d.ts +2 -4
  131. package/core/audits/metrics/speed-index.d.ts +1 -1
  132. package/core/audits/metrics/total-blocking-time.d.ts +1 -1
  133. package/core/audits/network-rtt.d.ts +2 -2
  134. package/core/audits/network-server-latency.d.ts +2 -2
  135. package/core/audits/non-composited-animations.d.ts +9 -9
  136. package/core/audits/oopif-iframe-test-audit.d.ts +5 -5
  137. package/core/audits/preload-fonts.d.ts +3 -3
  138. package/core/audits/prioritize-lcp-image.d.ts +7 -7
  139. package/core/audits/redirects-http.d.ts +3 -3
  140. package/core/audits/redirects.d.ts +2 -3
  141. package/core/audits/resource-summary.d.ts +1 -1
  142. package/core/audits/screenshot-thumbnails.d.ts +2 -3
  143. package/core/audits/script-treemap-data.d.ts +1 -1
  144. package/core/audits/seo/canonical.d.ts +8 -8
  145. package/core/audits/seo/crawlable-anchors.d.ts +4 -4
  146. package/core/audits/seo/font-size.d.ts +11 -11
  147. package/core/audits/seo/hreflang.d.ts +6 -6
  148. package/core/audits/seo/http-status-code.d.ts +3 -3
  149. package/core/audits/seo/is-crawlable.d.ts +9 -10
  150. package/core/audits/seo/link-text.d.ts +4 -4
  151. package/core/audits/seo/manual/structured-data.d.ts +2 -2
  152. package/core/audits/seo/meta-description.d.ts +4 -4
  153. package/core/audits/seo/robots-txt.d.ts +6 -6
  154. package/core/audits/server-response-time.d.ts +4 -4
  155. package/core/audits/third-party-cookies.d.ts +4 -4
  156. package/core/audits/third-party-facades.d.ts +11 -12
  157. package/core/audits/third-party-summary.d.ts +5 -6
  158. package/core/audits/third-party-summary.js +7 -4
  159. package/core/audits/unsized-images.d.ts +3 -3
  160. package/core/audits/user-timings.d.ts +6 -6
  161. package/core/audits/uses-rel-preconnect.d.ts +5 -5
  162. package/core/audits/uses-rel-preload.d.ts +7 -7
  163. package/core/audits/uses-rel-preload.js +8 -6
  164. package/core/audits/valid-source-maps.d.ts +6 -7
  165. package/core/audits/viewport.d.ts +4 -4
  166. package/core/audits/work-during-interaction.d.ts +11 -12
  167. package/core/computed/computed-artifact.d.ts +2 -2
  168. package/core/computed/critical-request-chains.d.ts +9 -11
  169. package/core/computed/critical-request-chains.js +6 -6
  170. package/core/computed/document-urls.d.ts +3 -8
  171. package/core/computed/document-urls.js +1 -1
  172. package/core/computed/entity-classification.d.ts +6 -8
  173. package/core/computed/image-records.d.ts +3 -5
  174. package/core/computed/js-bundles.d.ts +2 -4
  175. package/core/computed/lcp-image-record.d.ts +3 -5
  176. package/core/computed/load-simulator.d.ts +7 -11
  177. package/core/computed/load-simulator.js +1 -1
  178. package/core/computed/main-resource.d.ts +5 -7
  179. package/core/computed/main-resource.js +1 -1
  180. package/core/computed/main-thread-tasks.d.ts +1 -3
  181. package/core/computed/metrics/cumulative-layout-shift.d.ts +2 -14
  182. package/core/computed/metrics/first-contentful-paint-all-frames.d.ts +1 -3
  183. package/core/computed/metrics/first-contentful-paint.d.ts +1 -3
  184. package/core/computed/metrics/interactive.d.ts +1 -3
  185. package/core/computed/metrics/lantern-first-contentful-paint.d.ts +3 -7
  186. package/core/computed/metrics/lantern-first-contentful-paint.js +3 -5
  187. package/core/computed/metrics/lantern-interactive.d.ts +3 -7
  188. package/core/computed/metrics/lantern-interactive.js +3 -5
  189. package/core/computed/metrics/lantern-largest-contentful-paint.d.ts +3 -7
  190. package/core/computed/metrics/lantern-largest-contentful-paint.js +3 -5
  191. package/core/computed/metrics/lantern-max-potential-fid.d.ts +3 -7
  192. package/core/computed/metrics/lantern-max-potential-fid.js +3 -5
  193. package/core/computed/metrics/lantern-metric.d.ts +8 -8
  194. package/core/computed/metrics/lantern-metric.js +1 -1
  195. package/core/computed/metrics/lantern-speed-index.d.ts +3 -7
  196. package/core/computed/metrics/lantern-speed-index.js +3 -5
  197. package/core/computed/metrics/lantern-total-blocking-time.d.ts +3 -7
  198. package/core/computed/metrics/lantern-total-blocking-time.js +1 -3
  199. package/core/computed/metrics/largest-contentful-paint-all-frames.d.ts +1 -3
  200. package/core/computed/metrics/largest-contentful-paint.d.ts +1 -3
  201. package/core/computed/metrics/lcp-breakdown.d.ts +3 -9
  202. package/core/computed/metrics/max-potential-fid.d.ts +1 -3
  203. package/core/computed/metrics/responsiveness.d.ts +7 -10
  204. package/core/computed/metrics/speed-index.d.ts +1 -3
  205. package/core/computed/metrics/time-to-first-byte.d.ts +1 -3
  206. package/core/computed/metrics/timing-summary.d.ts +8 -13
  207. package/core/computed/metrics/total-blocking-time.d.ts +1 -3
  208. package/core/computed/metrics/total-blocking-time.js +1 -1
  209. package/core/computed/module-duplication.d.ts +2 -8
  210. package/core/computed/navigation-insights.d.ts +2 -4
  211. package/core/computed/network-analysis.d.ts +2 -4
  212. package/core/computed/network-analysis.js +1 -1
  213. package/core/computed/network-records.d.ts +1 -3
  214. package/core/computed/page-dependency-graph.d.ts +9 -14
  215. package/core/computed/page-dependency-graph.js +3 -4
  216. package/core/computed/processed-navigation.d.ts +2 -5
  217. package/core/computed/processed-trace.d.ts +1 -3
  218. package/core/computed/resource-summary.d.ts +6 -10
  219. package/core/computed/screenshots.d.ts +1 -6
  220. package/core/computed/speedline.d.ts +1 -3
  221. package/core/computed/tbt-impact-tasks.d.ts +4 -5
  222. package/core/computed/tbt-impact-tasks.js +31 -8
  223. package/core/computed/trace-engine-result.d.ts +1 -3
  224. package/core/computed/trace-engine-result.js +10 -1
  225. package/core/computed/unused-css.d.ts +7 -9
  226. package/core/computed/unused-javascript-summary.d.ts +3 -5
  227. package/core/computed/user-timings.d.ts +3 -5
  228. package/core/computed/viewport-meta.d.ts +7 -9
  229. package/core/config/config-helpers.d.ts +5 -5
  230. package/core/config/config.d.ts +3 -3
  231. package/core/config/constants.d.ts +6 -6
  232. package/core/config/filters.d.ts +8 -8
  233. package/core/config/validation.d.ts +1 -1
  234. package/core/gather/driver/environment.d.ts +5 -5
  235. package/core/gather/driver/environment.js +1 -1
  236. package/core/gather/driver/execution-context.d.ts +6 -6
  237. package/core/gather/driver/navigation.d.ts +3 -3
  238. package/core/gather/driver/network-monitor.d.ts +6 -6
  239. package/core/gather/driver/storage.d.ts +4 -4
  240. package/core/gather/driver/target-manager.d.ts +4 -5
  241. package/core/gather/driver/target-manager.js +1 -1
  242. package/core/gather/driver/wait-for-condition.d.ts +3 -3
  243. package/core/gather/driver/wait-for-condition.js +4 -4
  244. package/core/gather/driver.d.ts +1 -1
  245. package/core/gather/gatherers/accessibility.d.ts +1 -1
  246. package/core/gather/gatherers/anchor-elements.d.ts +1 -1
  247. package/core/gather/gatherers/bf-cache-failures.d.ts +3 -3
  248. package/core/gather/gatherers/cache-contents.d.ts +1 -1
  249. package/core/gather/gatherers/console-messages.d.ts +1 -1
  250. package/core/gather/gatherers/css-usage.d.ts +1 -1
  251. package/core/gather/gatherers/devtools-log-compat.d.ts +3 -3
  252. package/core/gather/gatherers/devtools-log.d.ts +3 -3
  253. package/core/gather/gatherers/dobetterweb/doctype.d.ts +1 -1
  254. package/core/gather/gatherers/dobetterweb/domstats.d.ts +1 -1
  255. package/core/gather/gatherers/dobetterweb/optimized-images.d.ts +6 -7
  256. package/core/gather/gatherers/dobetterweb/response-compression.d.ts +4 -5
  257. package/core/gather/gatherers/full-page-screenshot.d.ts +3 -3
  258. package/core/gather/gatherers/iframe-elements.d.ts +1 -1
  259. package/core/gather/gatherers/image-elements.d.ts +1 -1
  260. package/core/gather/gatherers/inputs.d.ts +1 -1
  261. package/core/gather/gatherers/inspector-issues.d.ts +2 -2
  262. package/core/gather/gatherers/js-usage.d.ts +1 -1
  263. package/core/gather/gatherers/link-elements.d.ts +6 -10
  264. package/core/gather/gatherers/link-elements.js +5 -12
  265. package/core/gather/gatherers/main-document-content.d.ts +2 -2
  266. package/core/gather/gatherers/meta-elements.d.ts +1 -1
  267. package/core/gather/gatherers/network-user-agent.d.ts +4 -4
  268. package/core/gather/gatherers/root-causes.d.ts +3 -4
  269. package/core/gather/gatherers/seo/font-size.d.ts +19 -19
  270. package/core/gather/gatherers/seo/robots-txt.d.ts +1 -1
  271. package/core/gather/gatherers/source-maps.d.ts +2 -2
  272. package/core/gather/gatherers/stacks.d.ts +2 -2
  273. package/core/gather/gatherers/stylesheets.d.ts +1 -9
  274. package/core/gather/gatherers/stylesheets.js +8 -39
  275. package/core/gather/gatherers/trace-compat.d.ts +3 -3
  276. package/core/gather/gatherers/trace-elements.d.ts +4 -6
  277. package/core/gather/navigation-runner.d.ts +3 -4
  278. package/core/gather/runner-helpers.d.ts +3 -3
  279. package/core/gather/session.d.ts +4 -4
  280. package/core/gather/session.js +1 -1
  281. package/core/gather/snapshot-runner.d.ts +2 -2
  282. package/core/gather/timespan-runner.d.ts +3 -3
  283. package/core/index.d.cts +1 -7
  284. package/core/index.d.ts +6 -6
  285. package/core/lib/arbitrary-equality-map.d.ts +2 -2
  286. package/core/lib/asset-saver.d.ts +3 -3
  287. package/core/lib/asset-saver.js +1 -1
  288. package/core/lib/bf-cache-strings.d.ts +117 -117
  289. package/core/lib/cdt/Platform.d.ts +1 -1
  290. package/core/lib/cdt/SDK.d.ts +1 -1
  291. package/core/lib/cdt/generated/ParsedURL.js +2 -2
  292. package/core/lib/cdt/generated/SourceMap.d.ts +11 -11
  293. package/core/lib/cdt/generated/SourceMap.js +3 -3
  294. package/core/lib/csp-evaluator.d.ts +20 -20
  295. package/core/lib/deprecation-description.d.ts +3 -3
  296. package/core/lib/deprecations-strings.d.ts +112 -112
  297. package/core/lib/i18n/i18n.d.ts +48 -48
  298. package/core/lib/icons.d.ts +3 -3
  299. package/core/lib/lantern/lantern.d.ts +2 -19
  300. package/core/lib/lantern/lantern.js +2 -45
  301. package/core/lib/lantern-trace-saver.d.ts +5 -7
  302. package/core/lib/lantern-trace-saver.js +2 -3
  303. package/core/lib/lh-error.d.ts +87 -87
  304. package/core/lib/lighthouse-compatibility.d.ts +1 -1
  305. package/core/lib/manifest-parser.d.ts +1 -1
  306. package/core/lib/minify-devtoolslog.d.ts +1 -1
  307. package/core/lib/navigation-error.d.ts +4 -6
  308. package/core/lib/navigation-error.js +2 -2
  309. package/core/lib/network-recorder.js +1 -1
  310. package/core/lib/network-request.d.ts +5 -5
  311. package/core/lib/network-request.js +2 -2
  312. package/core/lib/page-functions.d.ts +2 -2
  313. package/core/lib/script-helpers.d.ts +0 -1
  314. package/core/lib/sentry.d.ts +8 -8
  315. package/core/lib/stack-packs.d.ts +1 -1
  316. package/core/lib/trace-engine.d.ts +2 -2
  317. package/core/lib/tracehouse/cpu-profile-model.d.ts +8 -8
  318. package/core/lib/tracehouse/cpu-profile-model.js +2 -2
  319. package/core/lib/tracehouse/main-thread-tasks.d.ts +5 -5
  320. package/core/lib/tracehouse/task-groups.d.ts +6 -38
  321. package/core/lib/tracehouse/task-summary.d.ts +0 -1
  322. package/core/lib/tracehouse/trace-processor.d.ts +9 -9
  323. package/core/lib/traces/metric-trace-events.d.ts +1 -1
  324. package/core/lib/url-utils.d.ts +4 -4
  325. package/core/runner.d.ts +3 -4
  326. package/core/runner.js +0 -1
  327. package/core/scoring.d.ts +0 -1
  328. package/core/user-flow.d.ts +5 -5
  329. package/dist/report/bundle.esm.js +1 -1
  330. package/dist/report/flow.js +1 -1
  331. package/dist/report/standalone.js +1 -1
  332. package/eslint-local-rules.d.cts +4 -1
  333. package/flow-report/src/i18n/localized-strings.d.ts +1 -1
  334. package/flow-report/src/i18n/ui-strings.d.ts +43 -43
  335. package/package.json +7 -7
  336. package/readme.md +0 -2
  337. package/report/generator/file-namer.d.ts +2 -2
  338. package/report/generator/flow-report-assets.d.ts +1 -1
  339. package/report/generator/report-generator.d.ts +4 -4
  340. package/report/renderer/api.d.ts +2 -5
  341. package/report/renderer/category-renderer.d.ts +8 -8
  342. package/report/renderer/components.d.ts +2 -2
  343. package/report/renderer/crc-details-renderer.d.ts +2 -2
  344. package/report/renderer/details-renderer.d.ts +7 -7
  345. package/report/renderer/dom.d.ts +7 -7
  346. package/report/renderer/drop-down-menu.d.ts +1 -1
  347. package/report/renderer/drop-down-menu.js +15 -17
  348. package/report/renderer/element-screenshot-renderer.d.ts +3 -3
  349. package/report/renderer/explodey-gauge.d.ts +2 -2
  350. package/report/renderer/features-util.d.ts +1 -1
  351. package/report/renderer/performance-category-renderer.d.ts +1 -1
  352. package/report/renderer/report-globals.d.ts +1 -1
  353. package/report/renderer/report-renderer.d.ts +1 -1
  354. package/report/renderer/report-ui-features.d.ts +1 -1
  355. package/report/renderer/report-utils.d.ts +62 -62
  356. package/report/renderer/snippet-renderer.d.ts +9 -9
  357. package/report/renderer/swap-locale-feature.d.ts +2 -2
  358. package/report/renderer/topbar-features.d.ts +2 -2
  359. package/report/types/augment-dom.d.ts +0 -11
  360. package/shared/localization/format.d.ts +3 -3
  361. package/shared/localization/locales/en-US.json +1 -1
  362. package/shared/localization/locales/en-XL.json +1 -1
  363. package/shared/localization/locales.d.ts +1 -1
  364. package/shared/type-verifiers.d.ts +1 -1
  365. package/shared/util.d.ts +6 -6
  366. package/tsconfig.json +1 -11
  367. package/types/artifacts.d.ts +4 -4
  368. package/types/gatherer.d.ts +4 -5
  369. package/types/internal/node.d.ts +0 -6
  370. package/types/internal/query-selector.d.ts +2 -2
  371. package/core/lib/lantern/BaseNode.d.ts +0 -163
  372. package/core/lib/lantern/BaseNode.js +0 -369
  373. package/core/lib/lantern/BaseNode.test.js +0 -385
  374. package/core/lib/lantern/CpuNode.d.ts +0 -43
  375. package/core/lib/lantern/CpuNode.js +0 -99
  376. package/core/lib/lantern/LanternError.d.ts +0 -8
  377. package/core/lib/lantern/LanternError.js +0 -9
  378. package/core/lib/lantern/Metric.d.ts +0 -69
  379. package/core/lib/lantern/Metric.js +0 -137
  380. package/core/lib/lantern/NetworkNode.d.ts +0 -49
  381. package/core/lib/lantern/NetworkNode.js +0 -136
  382. package/core/lib/lantern/PageDependencyGraph.d.ts +0 -82
  383. package/core/lib/lantern/PageDependencyGraph.js +0 -610
  384. package/core/lib/lantern/PageDependencyGraph.test.js +0 -654
  385. package/core/lib/lantern/TBTUtils.d.ts +0 -44
  386. package/core/lib/lantern/TBTUtils.js +0 -76
  387. package/core/lib/lantern/TBTUtils.test.d.ts +0 -2
  388. package/core/lib/lantern/TBTUtils.test.js +0 -130
  389. package/core/lib/lantern/TraceEngineComputationData.d.ts +0 -25
  390. package/core/lib/lantern/TraceEngineComputationData.js +0 -466
  391. package/core/lib/lantern/metrics/FirstContentfulPaint.d.ts +0 -79
  392. package/core/lib/lantern/metrics/FirstContentfulPaint.js +0 -198
  393. package/core/lib/lantern/metrics/FirstContentfulPaint.test.js +0 -54
  394. package/core/lib/lantern/metrics/Interactive.d.ts +0 -20
  395. package/core/lib/lantern/metrics/Interactive.js +0 -109
  396. package/core/lib/lantern/metrics/Interactive.test.js +0 -56
  397. package/core/lib/lantern/metrics/LargestContentfulPaint.d.ts +0 -19
  398. package/core/lib/lantern/metrics/LargestContentfulPaint.js +0 -105
  399. package/core/lib/lantern/metrics/LargestContentfulPaint.test.js +0 -42
  400. package/core/lib/lantern/metrics/MaxPotentialFID.d.ts +0 -24
  401. package/core/lib/lantern/metrics/MaxPotentialFID.js +0 -91
  402. package/core/lib/lantern/metrics/MetricTestUtils.d.ts +0 -19
  403. package/core/lib/lantern/metrics/MetricTestUtils.js +0 -48
  404. package/core/lib/lantern/metrics/SpeedIndex.d.ts +0 -32
  405. package/core/lib/lantern/metrics/SpeedIndex.js +0 -142
  406. package/core/lib/lantern/metrics/SpeedIndex.test.js +0 -83
  407. package/core/lib/lantern/metrics/TotalBlockingTime.d.ts +0 -25
  408. package/core/lib/lantern/metrics/TotalBlockingTime.js +0 -125
  409. package/core/lib/lantern/metrics/__snapshots__/FirstContentfulPaint.test.js.snap +0 -11
  410. package/core/lib/lantern/metrics/__snapshots__/Interactive.test.js.snap +0 -17
  411. package/core/lib/lantern/metrics/metrics.d.ts +0 -9
  412. package/core/lib/lantern/metrics/metrics.js +0 -16
  413. package/core/lib/lantern/simulation/ConnectionPool.d.ts +0 -48
  414. package/core/lib/lantern/simulation/ConnectionPool.js +0 -152
  415. package/core/lib/lantern/simulation/ConnectionPool.test.js +0 -195
  416. package/core/lib/lantern/simulation/Constants.d.ts +0 -52
  417. package/core/lib/lantern/simulation/Constants.js +0 -48
  418. package/core/lib/lantern/simulation/DNSCache.d.ts +0 -42
  419. package/core/lib/lantern/simulation/DNSCache.js +0 -74
  420. package/core/lib/lantern/simulation/DNSCache.test.js +0 -72
  421. package/core/lib/lantern/simulation/NetworkAnalyzer.d.ts +0 -209
  422. package/core/lib/lantern/simulation/NetworkAnalyzer.js +0 -597
  423. package/core/lib/lantern/simulation/NetworkAnalyzer.test.js +0 -475
  424. package/core/lib/lantern/simulation/SimulationTimingMap.d.ts +0 -153
  425. package/core/lib/lantern/simulation/SimulationTimingMap.js +0 -219
  426. package/core/lib/lantern/simulation/Simulator.d.ts +0 -157
  427. package/core/lib/lantern/simulation/Simulator.js +0 -593
  428. package/core/lib/lantern/simulation/Simulator.test.js +0 -434
  429. package/core/lib/lantern/simulation/TCPConnection.test.d.ts +0 -2
  430. package/core/lib/lantern/simulation/TCPConnection.test.js +0 -374
  431. package/core/lib/lantern/simulation/TcpConnection.d.ts +0 -89
  432. package/core/lib/lantern/simulation/TcpConnection.js +0 -230
  433. package/core/lib/lantern/simulation/simulation.d.ts +0 -21
  434. package/core/lib/lantern/simulation/simulation.js +0 -28
  435. package/core/lib/lantern/types/lantern.d.ts +0 -256
  436. package/core/lib/lantern/types/lantern.js +0 -7
@@ -1,434 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2017 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import assert from 'assert/strict';
8
-
9
- import * as Lantern from '../lantern.js';
10
- import {readJson} from '../../../test/test-utils.js';
11
- import {runTraceEngine} from '../metrics/MetricTestUtils.js';
12
-
13
- const {NetworkNode, CPUNode} = Lantern;
14
- const {Simulator, DNSCache} = Lantern.Simulation;
15
-
16
- const pwaTrace = readJson('../../../test/fixtures/artifacts/progressive-app/trace.json', import.meta);
17
-
18
- let nextRequestId = 1;
19
- let nextTid = 1;
20
-
21
- /**
22
- * @param {Lantern.Trace} trace
23
- */
24
- async function createGraph(trace) {
25
- const traceEngineData = await runTraceEngine(trace.traceEvents);
26
- const requests =
27
- Lantern.TraceEngineComputationData.createNetworkRequests(trace, traceEngineData);
28
- return Lantern.TraceEngineComputationData.createGraph(requests, trace, traceEngineData);
29
- }
30
-
31
- function request(opts) {
32
- const scheme = opts.scheme || 'http';
33
- const url = `${scheme}://example.com`;
34
- const rendererStartTime = opts.startTime;
35
- const networkEndTime = opts.endTime;
36
- delete opts.startTime;
37
- delete opts.endTime;
38
-
39
- return Object.assign({
40
- requestId: opts.requestId || nextRequestId++,
41
- url,
42
- transferSize: opts.transferSize || 1000,
43
- protocol: scheme,
44
- parsedURL: {scheme, host: 'example.com', securityOrigin: url},
45
- timing: opts.timing,
46
- rendererStartTime,
47
- networkEndTime,
48
- }, opts);
49
- }
50
-
51
- function cpuTask({tid, ts, duration}) {
52
- tid = tid || nextTid++;
53
- ts = ts || 0;
54
- const dur = ((duration || 0) * 1000) / 5;
55
- return {tid, ts, dur};
56
- }
57
- describe('DependencyGraph/Simulator', () => {
58
- // Insulate the simulator tests from DNS multiplier changes
59
- let originalDNSMultiplier;
60
-
61
- before(() => {
62
- originalDNSMultiplier = DNSCache.RTT_MULTIPLIER;
63
- DNSCache.RTT_MULTIPLIER = 1;
64
- });
65
-
66
- after(() => {
67
- DNSCache.RTT_MULTIPLIER = originalDNSMultiplier;
68
- });
69
-
70
- describe('.simulate', () => {
71
- const serverResponseTimeByOrigin = new Map([['http://example.com', 500]]);
72
-
73
- function assertNodeTiming(result, node, assertions) {
74
- const timing = result.nodeTimings.get(node);
75
- assert.ok(timing, 'missing node timing information');
76
- Object.keys(assertions).forEach(key => {
77
- assert.equal(timing[key], assertions[key]);
78
- });
79
- }
80
-
81
- it('should simulate basic network graphs', () => {
82
- const rootNode = new NetworkNode(request({}));
83
- const simulator = new Simulator({serverResponseTimeByOrigin});
84
- const result = simulator.simulate(rootNode);
85
- // should be 3 RTTs and 500ms for the server response time
86
- assert.equal(result.timeInMs, 450 + 500);
87
- assertNodeTiming(result, rootNode, {startTime: 0, endTime: 950});
88
- });
89
-
90
- it('should simulate basic mixed graphs', () => {
91
- const rootNode = new NetworkNode(request({}));
92
- const cpuNode = new CPUNode(cpuTask({duration: 200}));
93
- cpuNode.addDependency(rootNode);
94
-
95
- const simulator = new Simulator({
96
- serverResponseTimeByOrigin,
97
- cpuSlowdownMultiplier: 5,
98
- });
99
- const result = simulator.simulate(rootNode);
100
- // should be 3 RTTs and 500ms for the server response time + 200 CPU
101
- assert.equal(result.timeInMs, 450 + 500 + 200);
102
- assertNodeTiming(result, rootNode, {startTime: 0, endTime: 950});
103
- assertNodeTiming(result, cpuNode, {startTime: 950, endTime: 1150});
104
- });
105
-
106
- it('should simulate basic network waterfall graphs', () => {
107
- const nodeA = new NetworkNode(request({startTime: 0, endTime: 1}));
108
- const nodeB = new NetworkNode(request({startTime: 0, endTime: 3}));
109
- const nodeC = new NetworkNode(request({startTime: 0, endTime: 5}));
110
- const nodeD = new NetworkNode(request({startTime: 0, endTime: 7}));
111
-
112
- nodeA.addDependent(nodeB);
113
- nodeB.addDependent(nodeC);
114
- nodeC.addDependent(nodeD);
115
-
116
- const simulator = new Simulator({serverResponseTimeByOrigin});
117
- const result = simulator.simulate(nodeA);
118
- // should be 950ms for A, 650ms each for B, C, D (no DNS and one-way connection)
119
- assert.equal(result.timeInMs, 2900);
120
- assertNodeTiming(result, nodeA, {startTime: 0, endTime: 950});
121
- assertNodeTiming(result, nodeB, {startTime: 950, endTime: 1600});
122
- assertNodeTiming(result, nodeC, {startTime: 1600, endTime: 2250});
123
- assertNodeTiming(result, nodeD, {startTime: 2250, endTime: 2900});
124
- });
125
-
126
- it('should simulate cached network graphs', () => {
127
- const nodeA = new NetworkNode(request({startTime: 0, endTime: 1,
128
- fromDiskCache: true}));
129
- const nodeB = new NetworkNode(request({startTime: 0, endTime: 3,
130
- fromDiskCache: true}));
131
- nodeA.addDependent(nodeB);
132
-
133
- const simulator = new Simulator({serverResponseTimeByOrigin});
134
- const result = simulator.simulate(nodeA);
135
- // should be ~8ms each for A, B
136
- assert.equal(result.timeInMs, 16);
137
- assertNodeTiming(result, nodeA, {startTime: 0, endTime: 8});
138
- assertNodeTiming(result, nodeB, {startTime: 8, endTime: 16});
139
- });
140
-
141
- it('should simulate data URL network graphs', () => {
142
- const url = 'data:image/jpeg;base64,foobar';
143
- const protocol = 'data';
144
- const parsedURL = {scheme: 'data', host: '', securityOrigin: 'null'};
145
- const nodeA = new NetworkNode(request({startTime: 0, endTime: 1, url,
146
- parsedURL, protocol}));
147
- const nodeB = new NetworkNode(request({startTime: 0, endTime: 3, url,
148
- parsedURL, protocol, resourceSize: 1024 * 1024}));
149
- nodeA.addDependent(nodeB);
150
-
151
- const simulator = new Simulator({serverResponseTimeByOrigin});
152
- const result = simulator.simulate(nodeA);
153
-
154
- // should be ~2ms for A (resourceSize 0), ~12ms for B (resourceSize 1MB)
155
- assert.equal(result.timeInMs, 14);
156
- assertNodeTiming(result, nodeA, {startTime: 0, endTime: 2});
157
- assertNodeTiming(result, nodeB, {startTime: 2, endTime: 14});
158
- });
159
-
160
- it('should simulate basic CPU queue graphs', () => {
161
- const nodeA = new NetworkNode(request({}));
162
- const nodeB = new CPUNode(cpuTask({duration: 100}));
163
- const nodeC = new CPUNode(cpuTask({duration: 600}));
164
- const nodeD = new CPUNode(cpuTask({duration: 300}));
165
-
166
- nodeA.addDependent(nodeB);
167
- nodeA.addDependent(nodeC);
168
- nodeA.addDependent(nodeD);
169
-
170
- const simulator = new Simulator({
171
- serverResponseTimeByOrigin,
172
- cpuSlowdownMultiplier: 5,
173
- });
174
- const result = simulator.simulate(nodeA);
175
- // should be 800ms A, then 1000 ms total for B, C, D in serial
176
- assert.equal(result.timeInMs, 1950);
177
- assertNodeTiming(result, nodeA, {startTime: 0, endTime: 950});
178
- assertNodeTiming(result, nodeB, {startTime: 950, endTime: 1050});
179
- assertNodeTiming(result, nodeC, {startTime: 1050, endTime: 1650});
180
- assertNodeTiming(result, nodeD, {startTime: 1650, endTime: 1950});
181
- });
182
-
183
- it('should simulate basic network waterfall graphs with CPU', () => {
184
- const nodeA = new NetworkNode(request({}));
185
- const nodeB = new NetworkNode(request({}));
186
- const nodeC = new NetworkNode(request({}));
187
- const nodeD = new NetworkNode(request({}));
188
- const nodeE = new CPUNode(cpuTask({duration: 1000}));
189
- const nodeF = new CPUNode(cpuTask({duration: 1000}));
190
-
191
- nodeA.addDependent(nodeB);
192
- nodeB.addDependent(nodeC);
193
- nodeB.addDependent(nodeE); // finishes 350 ms after C
194
- nodeC.addDependent(nodeD);
195
- nodeC.addDependent(nodeF); // finishes 700 ms after D
196
-
197
- const simulator = new Simulator({
198
- serverResponseTimeByOrigin,
199
- cpuSlowdownMultiplier: 5,
200
- });
201
- const result = simulator.simulate(nodeA);
202
- // should be 950ms for A, 650ms each for B, C, D, with F finishing 700 ms after D
203
- assert.equal(result.timeInMs, 3600);
204
- });
205
-
206
- it('should simulate basic parallel requests', () => {
207
- const nodeA = new NetworkNode(request({}));
208
- const nodeB = new NetworkNode(request({}));
209
- const nodeC = new NetworkNode(request({transferSize: 15000}));
210
- const nodeD = new NetworkNode(request({}));
211
-
212
- nodeA.addDependent(nodeB);
213
- nodeA.addDependent(nodeC);
214
- nodeA.addDependent(nodeD);
215
-
216
- const simulator = new Simulator({serverResponseTimeByOrigin});
217
- const result = simulator.simulate(nodeA);
218
- // should be 950ms for A and 950ms for C (2 round trips of downloading, but no DNS)
219
- assert.equal(result.timeInMs, 950 + 950);
220
- });
221
-
222
- it('should make connections in parallel', () => {
223
- const nodeA = new NetworkNode(request({startTime: 0, networkRequestTime: 0, endTime: 1}));
224
- const nodeB = new NetworkNode(request({startTime: 2, networkRequestTime: 2, endTime: 3}));
225
- const nodeC = new NetworkNode(request({startTime: 2, networkRequestTime: 2, endTime: 5}));
226
- const nodeD = new NetworkNode(request({startTime: 2, networkRequestTime: 2, endTime: 7}));
227
-
228
- nodeA.addDependent(nodeB);
229
- nodeA.addDependent(nodeC);
230
- nodeA.addDependent(nodeD);
231
-
232
- const simulator = new Simulator({serverResponseTimeByOrigin});
233
- const result = simulator.simulate(nodeA);
234
- // should be 950ms for A, 650ms for B reusing connection, 800ms for C and D in parallel.
235
- assert.equal(result.timeInMs, 950 + 800);
236
- assertNodeTiming(result, nodeA, {startTime: 0, endTime: 950});
237
- assertNodeTiming(result, nodeB, {startTime: 950, endTime: 1600});
238
- assertNodeTiming(result, nodeC, {startTime: 950, endTime: 1750});
239
- assertNodeTiming(result, nodeD, {startTime: 950, endTime: 1750});
240
- });
241
-
242
- it('should adjust throughput based on number of requests', () => {
243
- const nodeA = new NetworkNode(request({}));
244
- const nodeB = new NetworkNode(request({}));
245
- const nodeC = new NetworkNode(request({transferSize: 14000}));
246
- const nodeD = new NetworkNode(request({}));
247
-
248
- nodeA.addDependent(nodeB);
249
- nodeA.addDependent(nodeC);
250
- nodeA.addDependent(nodeD);
251
-
252
- // 80 kbps while all 3 download at 150ms/RT = ~1460 bytes/RT
253
- // 240 kbps while the last one finishes at 150ms/RT = ~4380 bytes/RT
254
- // ~14000 bytes = 5 RTs
255
- // 1 RT 80 kbps b/c its shared
256
- // 1 RT 80 kbps b/c it needs to grow congestion window from being shared
257
- // 1 RT 160 kbps b/c TCP
258
- // 2 RT 240 kbps b/c throughput cap
259
- const simulator = new Simulator({serverResponseTimeByOrigin, throughput: 240000});
260
- const result = simulator.simulate(nodeA);
261
- // should be 950ms for A and 1400ms for C (5 round trips of downloading)
262
- assert.equal(result.timeInMs, 950 + (150 + 750 + 500));
263
- });
264
-
265
- it('should start network requests in startTime order', () => {
266
- const rootNode = new NetworkNode(request({startTime: 0, endTime: 0.05,
267
- connectionId: 1}));
268
- const imageNodes = [
269
- new NetworkNode(request({startTime: 5})),
270
- new NetworkNode(request({startTime: 4})),
271
- new NetworkNode(request({startTime: 3})),
272
- new NetworkNode(request({startTime: 2})),
273
- new NetworkNode(request({startTime: 1})),
274
- ];
275
-
276
- for (const imageNode of imageNodes) {
277
- imageNode.request.connectionReused = true;
278
- imageNode.request.connectionId = 1;
279
- rootNode.addDependent(imageNode);
280
- }
281
-
282
- const simulator = new Simulator({serverResponseTimeByOrigin, maximumConcurrentRequests: 1});
283
- const result = simulator.simulate(rootNode);
284
-
285
- // should be 3 RTs + SRT for rootNode (950ms)
286
- // should be 1 RT + SRT for image nodes in observed order (650ms)
287
- assertNodeTiming(result, rootNode, {startTime: 0, endTime: 950});
288
- assertNodeTiming(result, imageNodes[4], {startTime: 950, endTime: 1600});
289
- assertNodeTiming(result, imageNodes[3], {startTime: 1600, endTime: 2250});
290
- assertNodeTiming(result, imageNodes[2], {startTime: 2250, endTime: 2900});
291
- assertNodeTiming(result, imageNodes[1], {startTime: 2900, endTime: 3550});
292
- assertNodeTiming(result, imageNodes[0], {startTime: 3550, endTime: 4200});
293
- });
294
-
295
- it('should start network requests in priority order to break startTime ties', () => {
296
- const rootNode = new NetworkNode(request({startTime: 0, endTime: 0.05,
297
- connectionId: 1}));
298
- const imageNodes = [
299
- new NetworkNode(request({startTime: 0.1, priority: 'VeryLow'})),
300
- new NetworkNode(request({startTime: 0.2, priority: 'Low'})),
301
- new NetworkNode(request({startTime: 0.3, priority: 'Medium'})),
302
- new NetworkNode(request({startTime: 0.4, priority: 'High'})),
303
- new NetworkNode(request({startTime: 0.5, priority: 'VeryHigh'})),
304
- ];
305
-
306
- for (const imageNode of imageNodes) {
307
- imageNode.request.connectionReused = true;
308
- imageNode.request.connectionId = 1;
309
- rootNode.addDependent(imageNode);
310
- }
311
-
312
- const simulator = new Simulator({serverResponseTimeByOrigin, maximumConcurrentRequests: 1});
313
- const result = simulator.simulate(rootNode);
314
-
315
- // should be 3 RTs + SRT for rootNode (950ms)
316
- // should be 1 RT + SRT for image nodes in priority order (650ms)
317
- assertNodeTiming(result, rootNode, {startTime: 0, endTime: 950});
318
- assertNodeTiming(result, imageNodes[4], {startTime: 950, endTime: 1600});
319
- assertNodeTiming(result, imageNodes[3], {startTime: 1600, endTime: 2250});
320
- assertNodeTiming(result, imageNodes[2], {startTime: 2250, endTime: 2900});
321
- assertNodeTiming(result, imageNodes[1], {startTime: 2900, endTime: 3550});
322
- assertNodeTiming(result, imageNodes[0], {startTime: 3550, endTime: 4200});
323
- });
324
-
325
- it('should simulate two graphs in a row', () => {
326
- const simulator = new Simulator({serverResponseTimeByOrigin});
327
-
328
- const nodeA = new NetworkNode(request({}));
329
- const nodeB = new NetworkNode(request({}));
330
- const nodeC = new NetworkNode(request({transferSize: 15000}));
331
- const nodeD = new NetworkNode(request({}));
332
-
333
- nodeA.addDependent(nodeB);
334
- nodeA.addDependent(nodeC);
335
- nodeA.addDependent(nodeD);
336
-
337
- const resultA = simulator.simulate(nodeA);
338
- // should be 950ms for A and 950ms for C (2 round trips of downloading, no DNS)
339
- assert.equal(resultA.timeInMs, 950 + 950);
340
-
341
- const nodeE = new NetworkNode(request({}));
342
- const nodeF = new NetworkNode(request({}));
343
- const nodeG = new NetworkNode(request({}));
344
-
345
- nodeE.addDependent(nodeF);
346
- nodeE.addDependent(nodeG);
347
-
348
- const resultB = simulator.simulate(nodeE);
349
- // should be 950ms for E and 800ms for F/G
350
- assert.equal(resultB.timeInMs, 950 + 800);
351
- });
352
-
353
- it('should maximize throughput with H2', () => {
354
- const simulator = new Simulator({serverResponseTimeByOrigin});
355
- const connectionDefaults = {protocol: 'h2', connectionId: 1};
356
- const nodeA = new NetworkNode(request({startTime: 0, endTime: 1,
357
- ...connectionDefaults}));
358
- const nodeB = new NetworkNode(request({startTime: 1, endTime: 2,
359
- ...connectionDefaults}));
360
- const nodeC = new NetworkNode(request({startTime: 2, endTime: 3,
361
- ...connectionDefaults}));
362
- const nodeD = new NetworkNode(request({startTime: 3, endTime: 4,
363
- ...connectionDefaults}));
364
-
365
- nodeA.addDependent(nodeB);
366
- nodeB.addDependent(nodeC);
367
- nodeB.addDependent(nodeD);
368
-
369
- // Run two simulations:
370
- // - The first with C & D in parallel.
371
- // - The second with C & D in series.
372
- // Under HTTP/2 simulation these should be equivalent, but definitely parallel
373
- // shouldn't be slower.
374
- const resultA = simulator.simulate(nodeA);
375
- nodeC.addDependent(nodeD);
376
- const resultB = simulator.simulate(nodeA);
377
- expect(resultA.timeInMs).toBeLessThanOrEqual(resultB.timeInMs);
378
- });
379
-
380
- it('should throw (not hang) on graphs with cycles', () => {
381
- const rootNode = new NetworkNode(request({}));
382
- const depNode = new NetworkNode(request({}));
383
- rootNode.addDependency(depNode);
384
- depNode.addDependency(rootNode);
385
-
386
- const simulator = new Simulator({serverResponseTimeByOrigin});
387
- assert.throws(() => simulator.simulate(rootNode), /cycle/);
388
- });
389
-
390
- describe('on a real trace', () => {
391
- const trace = pwaTrace;
392
-
393
- it('should compute a timeInMs', async () => {
394
- const graph = await createGraph(trace);
395
- const simulator = new Simulator({serverResponseTimeByOrigin});
396
- const result = simulator.simulate(graph);
397
- expect(result.timeInMs).toBeGreaterThan(100);
398
- });
399
-
400
- it('should sort the task event times', async () => {
401
- const graph = await createGraph(trace);
402
- const simulator = new Simulator({serverResponseTimeByOrigin});
403
- const result = simulator.simulate(graph);
404
- const nodeTimings = Array.from(result.nodeTimings.entries());
405
-
406
- for (let i = 1; i < nodeTimings.length; i++) {
407
- const startTime = nodeTimings[i][1].startTime;
408
- const previousStartTime = nodeTimings[i - 1][1].startTime;
409
- expect(startTime).toBeGreaterThanOrEqual(previousStartTime);
410
- }
411
- });
412
- });
413
- });
414
-
415
- describe('.simulateTimespan', () => {
416
- it('calculates savings using throughput', () => {
417
- const simulator = new Simulator({throughput: 1000, observedThroughput: 2000});
418
- const wastedMs = simulator.computeWastedMsFromWastedBytes(500);
419
- expect(wastedMs).toBeCloseTo(4000);
420
- });
421
-
422
- it('falls back to observed throughput if throughput is 0', () => {
423
- const simulator = new Simulator({throughput: 0, observedThroughput: 2000});
424
- const wastedMs = simulator.computeWastedMsFromWastedBytes(500);
425
- expect(wastedMs).toBeCloseTo(2000);
426
- });
427
-
428
- it('returns 0 if throughput and observed throughput are 0', () => {
429
- const simulator = new Simulator({throughput: 0, observedThroughput: 0});
430
- const wastedMs = simulator.computeWastedMsFromWastedBytes(500);
431
- expect(wastedMs).toEqual(0);
432
- });
433
- });
434
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TCPConnection.test.d.ts.map