lighthouse 9.5.0-dev.20220509 → 9.6.1

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 (259) hide show
  1. package/changelog.md +70 -0
  2. package/dist/report/bundle.esm.js +400 -808
  3. package/dist/report/flow.js +22 -27
  4. package/dist/report/standalone.js +18 -23
  5. package/flow-report/src/summary/category.tsx +1 -1
  6. package/jest.config.js +1 -1
  7. package/lighthouse-cli/.eslintrc.cjs +4 -3
  8. package/lighthouse-cli/bin.js +1 -0
  9. package/lighthouse-cli/cli-flags.js +4 -3
  10. package/lighthouse-cli/commands/commands.js +1 -0
  11. package/lighthouse-cli/commands/list-audits.js +1 -0
  12. package/lighthouse-cli/commands/list-locales.js +1 -0
  13. package/lighthouse-cli/commands/list-trace-categories.js +1 -0
  14. package/lighthouse-cli/index.js +1 -0
  15. package/lighthouse-cli/printer.js +1 -0
  16. package/lighthouse-cli/run.js +24 -9
  17. package/lighthouse-cli/sentry-prompt.js +1 -0
  18. package/lighthouse-cli/test/smokehouse/core-tests.js +1 -0
  19. package/lighthouse-cli/test/smokehouse/frontends/back-compat-util.js +1 -0
  20. package/lighthouse-cli/test/smokehouse/frontends/lib.js +1 -0
  21. package/lighthouse-cli/test/smokehouse/frontends/node.js +1 -0
  22. package/lighthouse-cli/test/smokehouse/frontends/smokehouse-bin.js +1 -0
  23. package/lighthouse-cli/test/smokehouse/lib/child-process-error.js +1 -0
  24. package/lighthouse-cli/test/smokehouse/lib/concurrent-mapper.js +1 -0
  25. package/lighthouse-cli/test/smokehouse/lib/local-console.js +1 -0
  26. package/lighthouse-cli/test/smokehouse/lighthouse-runners/bundle.js +23 -109
  27. package/lighthouse-cli/test/smokehouse/lighthouse-runners/cli.js +3 -2
  28. package/lighthouse-cli/test/smokehouse/lighthouse-runners/devtools.js +19 -28
  29. package/lighthouse-cli/test/smokehouse/report-assert.js +4 -3
  30. package/lighthouse-cli/test/smokehouse/smokehouse.js +1 -1
  31. package/lighthouse-cli/test/smokehouse/version-check-test.js +3 -0
  32. package/lighthouse-cli/test/smokehouse/version-check.js +1 -0
  33. package/lighthouse-core/audits/accessibility/accesskeys.js +1 -1
  34. package/lighthouse-core/audits/accessibility/aria-allowed-attr.js +1 -1
  35. package/lighthouse-core/audits/accessibility/aria-command-name.js +1 -1
  36. package/lighthouse-core/audits/accessibility/aria-hidden-body.js +1 -1
  37. package/lighthouse-core/audits/accessibility/aria-hidden-focus.js +1 -1
  38. package/lighthouse-core/audits/accessibility/aria-input-field-name.js +1 -1
  39. package/lighthouse-core/audits/accessibility/aria-meter-name.js +1 -1
  40. package/lighthouse-core/audits/accessibility/aria-progressbar-name.js +1 -1
  41. package/lighthouse-core/audits/accessibility/aria-required-attr.js +1 -1
  42. package/lighthouse-core/audits/accessibility/aria-required-children.js +1 -1
  43. package/lighthouse-core/audits/accessibility/aria-required-parent.js +1 -1
  44. package/lighthouse-core/audits/accessibility/aria-roles.js +1 -1
  45. package/lighthouse-core/audits/accessibility/aria-toggle-field-name.js +1 -1
  46. package/lighthouse-core/audits/accessibility/aria-tooltip-name.js +1 -1
  47. package/lighthouse-core/audits/accessibility/aria-treeitem-name.js +1 -1
  48. package/lighthouse-core/audits/accessibility/aria-valid-attr-value.js +1 -1
  49. package/lighthouse-core/audits/accessibility/aria-valid-attr.js +1 -1
  50. package/lighthouse-core/audits/accessibility/button-name.js +1 -1
  51. package/lighthouse-core/audits/accessibility/bypass.js +1 -1
  52. package/lighthouse-core/audits/accessibility/color-contrast.js +1 -1
  53. package/lighthouse-core/audits/accessibility/definition-list.js +1 -1
  54. package/lighthouse-core/audits/accessibility/dlitem.js +1 -1
  55. package/lighthouse-core/audits/accessibility/document-title.js +1 -1
  56. package/lighthouse-core/audits/accessibility/duplicate-id-active.js +1 -1
  57. package/lighthouse-core/audits/accessibility/duplicate-id-aria.js +1 -1
  58. package/lighthouse-core/audits/accessibility/form-field-multiple-labels.js +1 -1
  59. package/lighthouse-core/audits/accessibility/frame-title.js +1 -1
  60. package/lighthouse-core/audits/accessibility/heading-order.js +1 -1
  61. package/lighthouse-core/audits/accessibility/html-has-lang.js +1 -1
  62. package/lighthouse-core/audits/accessibility/html-lang-valid.js +1 -1
  63. package/lighthouse-core/audits/accessibility/image-alt.js +1 -1
  64. package/lighthouse-core/audits/accessibility/input-image-alt.js +1 -1
  65. package/lighthouse-core/audits/accessibility/label.js +1 -1
  66. package/lighthouse-core/audits/accessibility/link-name.js +1 -1
  67. package/lighthouse-core/audits/accessibility/list.js +1 -1
  68. package/lighthouse-core/audits/accessibility/listitem.js +5 -5
  69. package/lighthouse-core/audits/accessibility/meta-refresh.js +1 -1
  70. package/lighthouse-core/audits/accessibility/meta-viewport.js +1 -1
  71. package/lighthouse-core/audits/accessibility/object-alt.js +1 -1
  72. package/lighthouse-core/audits/accessibility/tabindex.js +1 -1
  73. package/lighthouse-core/audits/accessibility/td-headers-attr.js +1 -1
  74. package/lighthouse-core/audits/accessibility/th-has-data-cells.js +1 -1
  75. package/lighthouse-core/audits/accessibility/valid-lang.js +1 -1
  76. package/lighthouse-core/audits/accessibility/video-caption.js +1 -1
  77. package/lighthouse-core/audits/byte-efficiency/byte-efficiency-audit.js +1 -2
  78. package/lighthouse-core/audits/byte-efficiency/duplicated-javascript.js +12 -11
  79. package/lighthouse-core/audits/byte-efficiency/efficient-animated-content.js +1 -1
  80. package/lighthouse-core/audits/byte-efficiency/legacy-javascript.js +24 -22
  81. package/lighthouse-core/audits/byte-efficiency/offscreen-images.js +2 -3
  82. package/lighthouse-core/audits/byte-efficiency/render-blocking-resources.js +3 -2
  83. package/lighthouse-core/audits/byte-efficiency/unminified-css.js +5 -3
  84. package/lighthouse-core/audits/byte-efficiency/unminified-javascript.js +11 -10
  85. package/lighthouse-core/audits/byte-efficiency/unused-css-rules.js +1 -0
  86. package/lighthouse-core/audits/byte-efficiency/unused-javascript.js +8 -11
  87. package/lighthouse-core/audits/byte-efficiency/uses-responsive-images.js +1 -1
  88. package/lighthouse-core/audits/byte-efficiency/uses-text-compression.js +1 -1
  89. package/lighthouse-core/audits/deprecations.js +598 -8
  90. package/lighthouse-core/audits/diagnostics.js +3 -4
  91. package/lighthouse-core/audits/dobetterweb/doctype.js +9 -20
  92. package/lighthouse-core/audits/dobetterweb/geolocation-on-start.js +1 -1
  93. package/lighthouse-core/audits/dobetterweb/no-document-write.js +1 -1
  94. package/lighthouse-core/audits/dobetterweb/notification-on-start.js +1 -1
  95. package/lighthouse-core/audits/dobetterweb/uses-http2.js +1 -2
  96. package/lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js +1 -1
  97. package/lighthouse-core/audits/errors-in-console.js +2 -2
  98. package/lighthouse-core/audits/long-tasks.js +2 -3
  99. package/lighthouse-core/audits/metrics/experimental-interaction-to-next-paint.js +3 -1
  100. package/lighthouse-core/audits/metrics/first-contentful-paint-3g.js +2 -2
  101. package/lighthouse-core/audits/metrics/first-contentful-paint.js +2 -3
  102. package/lighthouse-core/audits/metrics/first-meaningful-paint.js +2 -3
  103. package/lighthouse-core/audits/metrics/interactive.js +2 -3
  104. package/lighthouse-core/audits/metrics/largest-contentful-paint.js +2 -3
  105. package/lighthouse-core/audits/metrics/max-potential-fid.js +2 -3
  106. package/lighthouse-core/audits/metrics/speed-index.js +2 -3
  107. package/lighthouse-core/audits/metrics/total-blocking-time.js +2 -3
  108. package/lighthouse-core/audits/metrics.js +2 -3
  109. package/lighthouse-core/audits/no-unload-listeners.js +15 -7
  110. package/lighthouse-core/audits/predictive-perf.js +1 -2
  111. package/lighthouse-core/audits/preload-lcp-image.js +3 -3
  112. package/lighthouse-core/audits/redirects.js +1 -1
  113. package/lighthouse-core/audits/script-treemap-data.js +45 -45
  114. package/lighthouse-core/audits/seo/http-status-code.js +4 -2
  115. package/lighthouse-core/audits/seo/link-text.js +0 -2
  116. package/lighthouse-core/audits/server-response-time.js +17 -2
  117. package/lighthouse-core/audits/service-worker.js +2 -7
  118. package/lighthouse-core/audits/timing-budget.js +2 -3
  119. package/lighthouse-core/audits/uses-rel-preconnect.js +1 -1
  120. package/lighthouse-core/audits/uses-rel-preload.js +1 -1
  121. package/lighthouse-core/audits/valid-source-maps.js +14 -12
  122. package/lighthouse-core/audits/violation-audit.js +1 -1
  123. package/lighthouse-core/audits/work-during-interaction.js +280 -0
  124. package/lighthouse-core/computed/critical-request-chains.js +9 -5
  125. package/lighthouse-core/computed/js-bundles.js +11 -11
  126. package/lighthouse-core/computed/main-resource.js +2 -3
  127. package/lighthouse-core/computed/metrics/first-contentful-paint-all-frames.js +1 -1
  128. package/lighthouse-core/computed/metrics/first-contentful-paint.js +1 -1
  129. package/lighthouse-core/computed/metrics/first-meaningful-paint.js +1 -1
  130. package/lighthouse-core/computed/metrics/interactive.js +1 -1
  131. package/lighthouse-core/computed/metrics/lantern-first-contentful-paint.js +1 -1
  132. package/lighthouse-core/computed/metrics/lantern-first-meaningful-paint.js +1 -1
  133. package/lighthouse-core/computed/metrics/lantern-interactive.js +1 -1
  134. package/lighthouse-core/computed/metrics/lantern-largest-contentful-paint.js +1 -1
  135. package/lighthouse-core/computed/metrics/lantern-max-potential-fid.js +1 -1
  136. package/lighthouse-core/computed/metrics/lantern-metric.js +5 -3
  137. package/lighthouse-core/computed/metrics/lantern-speed-index.js +1 -1
  138. package/lighthouse-core/computed/metrics/lantern-total-blocking-time.js +1 -1
  139. package/lighthouse-core/computed/metrics/largest-contentful-paint-all-frames.js +1 -1
  140. package/lighthouse-core/computed/metrics/largest-contentful-paint.js +1 -1
  141. package/lighthouse-core/computed/metrics/max-potential-fid.js +1 -1
  142. package/lighthouse-core/computed/metrics/metric.js +0 -1
  143. package/lighthouse-core/computed/metrics/responsiveness.js +12 -9
  144. package/lighthouse-core/computed/metrics/speed-index.js +1 -1
  145. package/lighthouse-core/computed/metrics/timing-summary.js +6 -13
  146. package/lighthouse-core/computed/metrics/total-blocking-time.js +1 -1
  147. package/lighthouse-core/computed/module-duplication.js +5 -6
  148. package/lighthouse-core/computed/page-dependency-graph.js +28 -55
  149. package/lighthouse-core/computed/resource-summary.js +5 -5
  150. package/lighthouse-core/computed/unused-css.js +7 -6
  151. package/lighthouse-core/computed/unused-javascript-summary.js +36 -16
  152. package/lighthouse-core/config/budget.js +2 -2
  153. package/lighthouse-core/config/default-config.js +1 -2
  154. package/lighthouse-core/config/metrics-to-audits.js +5 -0
  155. package/lighthouse-core/fraggle-rock/api.js +1 -1
  156. package/lighthouse-core/fraggle-rock/config/default-config.js +8 -5
  157. package/lighthouse-core/fraggle-rock/gather/base-artifacts.js +3 -6
  158. package/lighthouse-core/fraggle-rock/gather/driver.js +2 -2
  159. package/lighthouse-core/fraggle-rock/gather/navigation-runner.js +26 -51
  160. package/lighthouse-core/fraggle-rock/gather/runner-helpers.js +3 -0
  161. package/lighthouse-core/fraggle-rock/gather/session.js +2 -2
  162. package/lighthouse-core/fraggle-rock/gather/snapshot-runner.js +4 -5
  163. package/lighthouse-core/fraggle-rock/gather/timespan-runner.js +6 -6
  164. package/lighthouse-core/gather/connections/cri.js +0 -1
  165. package/lighthouse-core/gather/driver/execution-context.js +2 -4
  166. package/lighthouse-core/gather/driver/navigation.js +9 -9
  167. package/lighthouse-core/gather/driver/network-monitor.js +3 -16
  168. package/lighthouse-core/gather/driver.js +1 -6
  169. package/lighthouse-core/gather/fetcher.js +210 -34
  170. package/lighthouse-core/gather/gather-runner.js +17 -13
  171. package/lighthouse-core/gather/gatherers/accessibility.js +4 -16
  172. package/lighthouse-core/gather/gatherers/console-messages.js +2 -4
  173. package/lighthouse-core/gather/gatherers/dobetterweb/doctype.js +2 -4
  174. package/lighthouse-core/gather/gatherers/full-page-screenshot.js +2 -3
  175. package/lighthouse-core/gather/gatherers/js-usage.js +87 -12
  176. package/lighthouse-core/gather/gatherers/link-elements.js +14 -12
  177. package/lighthouse-core/gather/gatherers/main-document-content.js +8 -8
  178. package/lighthouse-core/gather/gatherers/script-elements.js +56 -7
  179. package/lighthouse-core/gather/gatherers/seo/robots-txt.js +30 -2
  180. package/lighthouse-core/gather/gatherers/source-maps.js +1 -3
  181. package/lighthouse-core/gather/gatherers/trace-elements.js +21 -2
  182. package/lighthouse-core/gather/gatherers/web-app-manifest.js +2 -2
  183. package/lighthouse-core/index.js +2 -26
  184. package/lighthouse-core/lib/cdt/generated/SourceMap.js +1 -1
  185. package/lighthouse-core/lib/dependency-graph/simulator/network-analyzer.js +29 -8
  186. package/lighthouse-core/lib/navigation-error.js +4 -13
  187. package/lighthouse-core/lib/script-helpers.js +6 -11
  188. package/lighthouse-core/lib/url-shim.js +2 -2
  189. package/lighthouse-core/runner.js +5 -0
  190. package/lighthouse-core/scripts/manual-chrome-launcher.js +1 -0
  191. package/lighthouse-core/util-commonjs.js +24 -28
  192. package/package.json +12 -12
  193. package/readme.md +1 -1
  194. package/report/.eslintrc.cjs +1 -3
  195. package/report/assets/styles.css +10 -12
  196. package/report/assets/templates.html +9 -10
  197. package/report/clients/bundle.js +1 -0
  198. package/report/clients/standalone.js +1 -0
  199. package/report/generator/report-generator.js +21 -46
  200. package/report/renderer/api.js +1 -0
  201. package/report/renderer/category-renderer.js +1 -0
  202. package/report/renderer/components.js +304 -303
  203. package/report/renderer/crc-details-renderer.js +1 -0
  204. package/report/renderer/details-renderer.js +10 -10
  205. package/report/renderer/dom.js +1 -0
  206. package/report/renderer/drop-down-menu.js +1 -0
  207. package/report/renderer/element-screenshot-renderer.js +4 -0
  208. package/report/renderer/features-util.js +1 -0
  209. package/report/renderer/i18n.js +62 -118
  210. package/report/renderer/logger.js +1 -0
  211. package/report/renderer/open-tab.js +3 -1
  212. package/report/renderer/performance-category-renderer.js +1 -0
  213. package/report/renderer/pwa-category-renderer.js +1 -0
  214. package/report/renderer/report-renderer.js +1 -0
  215. package/report/renderer/report-ui-features.js +1 -0
  216. package/report/renderer/snippet-renderer.js +1 -0
  217. package/report/renderer/swap-locale-feature.js +1 -0
  218. package/report/renderer/text-encoding.js +1 -0
  219. package/report/renderer/topbar-features.js +1 -0
  220. package/report/renderer/util.js +24 -27
  221. package/report/test/clients/bundle-test.js +4 -0
  222. package/report/test/generator/file-namer-test.js +1 -0
  223. package/report/test/generator/report-generator-test.js +20 -25
  224. package/report/test/renderer/category-renderer-test.js +3 -0
  225. package/report/test/renderer/components-test.js +3 -0
  226. package/report/test/renderer/crc-details-renderer-test.js +3 -0
  227. package/report/test/renderer/details-renderer-test.js +12 -58
  228. package/report/test/renderer/dom-test.js +3 -0
  229. package/report/test/renderer/element-screenshot-renderer-test.js +6 -3
  230. package/report/test/renderer/i18n-test.js +25 -70
  231. package/report/test/renderer/performance-category-renderer-test.js +4 -11
  232. package/report/test/renderer/pwa-category-renderer-test.js +3 -0
  233. package/report/test/renderer/report-renderer-axe-test.js +3 -0
  234. package/report/test/renderer/report-renderer-test.js +3 -0
  235. package/report/test/renderer/report-ui-features-test.js +3 -0
  236. package/report/test/renderer/snippet-renderer-test.js +3 -0
  237. package/report/test/renderer/text-encoding-test.js +3 -0
  238. package/report/test/renderer/util-test.js +5 -2
  239. package/report/test-assets/faux-psi.js +1 -2
  240. package/shared/localization/locales/en-US.json +260 -53
  241. package/shared/localization/locales/en-XL.json +260 -53
  242. package/shared/test/localization/format-test.js +2 -0
  243. package/shared/test/localization/locales-test.js +2 -0
  244. package/shared/test/localization/swap-locale-test.js +2 -0
  245. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +2 -0
  246. package/third-party/chromium-synchronization/installability-errors-test.js +2 -0
  247. package/tsconfig.json +0 -1
  248. package/types/artifacts.d.ts +9 -48
  249. package/types/config.d.ts +0 -2
  250. package/types/externs.d.ts +2 -2
  251. package/types/gatherer.d.ts +2 -1
  252. package/types/global-lh.d.ts +0 -3
  253. package/types/lhr/audit-details.d.ts +3 -1
  254. package/types/lhr/lhr.d.ts +2 -2
  255. package/types/lhr/treemap.d.ts +1 -0
  256. package/lighthouse-core/audits/script-elements-test-audit.js +0 -30
  257. package/lighthouse-core/gather/gatherers/scripts.js +0 -154
  258. package/report/test/.eslintrc.cjs +0 -11
  259. package/shared/test/localization/.eslintrc.cjs +0 -11
@@ -12,6 +12,8 @@ const i18n = require('../../../lighthouse-core/lib/i18n/i18n.js');
12
12
  const constants = require('../../../lighthouse-core/config/constants.js');
13
13
  const locales = require('../../localization/locales.js');
14
14
 
15
+ /* eslint-env jest */
16
+
15
17
  describe('format', () => {
16
18
  describe('DEFAULT_LOCALE', () => {
17
19
  it('is the same as the default config locale', () => {
@@ -8,6 +8,8 @@
8
8
  const locales = require('../../localization/locales.js');
9
9
  const assert = require('assert').strict;
10
10
 
11
+ /* eslint-env jest */
12
+
11
13
  describe('locales', () => {
12
14
  it('has only canonical (or expected-deprecated) language tags', () => {
13
15
  // Map of deprecated codes to their canonical version. Depending on the ICU
@@ -8,6 +8,8 @@
8
8
  const swapLocale = require('../../localization/swap-locale.js');
9
9
 
10
10
  const lhr = require('../../../lighthouse-core/test/results/sample_v2.json');
11
+
12
+ /* eslint-env jest */
11
13
  describe('swap-locale', () => {
12
14
  it('does not mutate the original lhr', () => {
13
15
  /** @type {LH.Result} */
@@ -13,6 +13,8 @@ const inspectorIssuesGathererPath = LH_ROOT +
13
13
  '/lighthouse-core/gather/gatherers/inspector-issues.js';
14
14
  const inspectorIssuesGathererSource = fs.readFileSync(inspectorIssuesGathererPath, 'utf-8');
15
15
 
16
+ /* eslint-env jest */
17
+
16
18
  describe('issueAdded types', () => {
17
19
  /** @type {Array<LH.Crdp.Audits.InspectorIssueDetails>} */
18
20
  let inspectorIssueDetailsTypes;
@@ -9,6 +9,8 @@ const fetch = require('node-fetch');
9
9
 
10
10
  const InstallableManifestAudit = require('../../lighthouse-core/audits/installable-manifest.js');
11
11
 
12
+ /* eslint-env jest */
13
+
12
14
  jest.setTimeout(20_000);
13
15
 
14
16
  describe('installabilityErrors', () => {
package/tsconfig.json CHANGED
@@ -11,7 +11,6 @@
11
11
  {"path": "./report/"},
12
12
  {"path": "./report/generator/"},
13
13
  {"path": "./shared/"},
14
- {"path": "./treemap/"},
15
14
  ],
16
15
  "include": [
17
16
  "root.js",
@@ -66,7 +66,7 @@ interface UniversalBaseArtifacts {
66
66
  */
67
67
  interface ContextualBaseArtifacts {
68
68
  /** The URL initially requested and the post-redirects URL that was actually loaded. */
69
- URL: Artifacts.URL;
69
+ URL: {requestedUrl: string, finalUrl: string};
70
70
  /** If loading the page failed, value is the error that caused it. Otherwise null. */
71
71
  PageLoadError: LighthouseError | null;
72
72
  }
@@ -147,9 +147,8 @@ export interface GathererArtifacts extends PublicGathererArtifacts,LegacyBaseArt
147
147
  GlobalListeners: Array<Artifacts.GlobalListener>;
148
148
  /** The issues surfaced in the devtools Issues panel */
149
149
  InspectorIssues: Artifacts.InspectorIssues;
150
- /** JS coverage information for code used during audit. Keyed by script id. */
151
- // 'url' is excluded because it can be overriden by a magic sourceURL= comment, which makes keeping it a dangerous footgun!
152
- JsUsage: Record<string, Omit<LH.Crdp.Profiler.ScriptCoverage, 'url'>>;
150
+ /** JS coverage information for code used during page load. Keyed by network URL. */
151
+ JsUsage: Record<string, Array<Omit<LH.Crdp.Profiler.ScriptCoverage, 'url'>>>;
153
152
  /** Parsed version of the page's Web App Manifest, or null if none found. */
154
153
  Manifest: Artifacts.Manifest | null;
155
154
  /** The URL loaded with interception */
@@ -162,8 +161,6 @@ export interface GathererArtifacts extends PublicGathererArtifacts,LegacyBaseArt
162
161
  ResponseCompression: {requestId: string, url: string, mimeType: string, transferSize: number, resourceSize: number, gzipSize?: number}[];
163
162
  /** Information on fetching and the content of the /robots.txt file. */
164
163
  RobotsTxt: {status: number|null, content: string|null, errorMessage?: string};
165
- /** Information on all scripts in the page. */
166
- Scripts: Artifacts.Script[];
167
164
  /** Version information for all ServiceWorkers active after the first page load. */
168
165
  ServiceWorker: {versions: LH.Crdp.ServiceWorker.ServiceWorkerVersion[], registrations: LH.Crdp.ServiceWorker.ServiceWorkerRegistration[]};
169
166
  /** Source maps of scripts executed in the page. */
@@ -187,27 +184,6 @@ declare module Artifacts {
187
184
  type TaskNode = _TaskNode;
188
185
  type MetaElement = Artifacts['MetaElements'][0];
189
186
 
190
- interface URL {
191
- /** URL of the main frame before Lighthouse starts. */
192
- initialUrl: string;
193
- /**
194
- * URL of the initially requested URL during a Lighthouse navigation.
195
- * Will be `undefined` in timespan/snapshot.
196
- */
197
- requestedUrl?: string;
198
- /**
199
- * URL of the last document request during a Lighthouse navigation.
200
- * Will be `undefined` in timespan/snapshot.
201
- */
202
- mainDocumentUrl?: string;
203
- /**
204
- * Will be the same as `mainDocumentUrl` in navigation mode.
205
- * Wil be the URL of the main frame after Lighthouse finishes in timespan/snapshot.
206
- * TODO: Use the main frame URL in navigation mode as well.
207
- */
208
- finalUrl: string;
209
- }
210
-
211
187
  interface NodeDetails {
212
188
  lhId: string,
213
189
  devtoolsNodePath: string,
@@ -238,7 +214,6 @@ declare module Artifacts {
238
214
  interface Accessibility {
239
215
  violations: Array<AxeRuleResult>;
240
216
  notApplicable: Array<Pick<AxeRuleResult, 'id'>>;
241
- passes: Array<Pick<AxeRuleResult, 'id'>>;
242
217
  incomplete: Array<AxeRuleResult>;
243
218
  version: string;
244
219
  }
@@ -252,7 +227,6 @@ declare module Artifacts {
252
227
  name: string;
253
228
  publicId: string;
254
229
  systemId: string;
255
- documentCompatMode: string;
256
230
  }
257
231
 
258
232
  interface DOMStats {
@@ -313,16 +287,6 @@ declare module Artifacts {
313
287
 
314
288
  interface PasswordInputsWithPreventedPaste {node: NodeDetails}
315
289
 
316
- interface Script extends Omit<LH.Crdp.Debugger.ScriptParsedEvent, 'url'|'embedderName'> {
317
- /**
318
- * Set by a sourceURL= magic comment if present, otherwise this is the same as the URL.
319
- * Use this field for presentational purposes only.
320
- */
321
- name: string;
322
- url: string;
323
- content?: string;
324
- }
325
-
326
290
  interface ScriptElement {
327
291
  type: string | null
328
292
  src: string | null
@@ -334,6 +298,10 @@ declare module Artifacts {
334
298
  node: NodeDetails | null
335
299
  /** Where the script was discovered, either in the head, the body, or network records. */
336
300
  source: 'head'|'body'|'network'
301
+ /** The content of the inline script or the network record with the matching URL, null if the script had a src and no network record could be found. */
302
+ content: string | null
303
+ /** The ID of the network request that matched the URL of the src or the main document if inline, null if no request could be found. */
304
+ requestId: string | null
337
305
  }
338
306
 
339
307
  /** @see https://sourcemaps.info/spec.html#h.qz3o9nc69um5 */
@@ -365,8 +333,6 @@ declare module Artifacts {
365
333
  * parsing the map, errorMessage will be defined instead of map.
366
334
  */
367
335
  type SourceMap = {
368
- /** The DevTools protocol script identifier. */
369
- scriptId: string;
370
336
  /** URL of code that source map applies to. */
371
337
  scriptUrl: string
372
338
  /** URL of the source map. undefined if from data URL. */
@@ -374,8 +340,6 @@ declare module Artifacts {
374
340
  /** Source map data structure. */
375
341
  map: RawSourceMap
376
342
  } | {
377
- /** The DevTools protocol script identifier. */
378
- scriptId: string;
379
343
  /** URL of code that source map applies to. */
380
344
  scriptUrl: string
381
345
  /** URL of the source map. undefined if from data URL. */
@@ -388,7 +352,7 @@ declare module Artifacts {
388
352
 
389
353
  interface Bundle {
390
354
  rawMap: RawSourceMap;
391
- script: LH.Artifacts.Script;
355
+ script: ScriptElement;
392
356
  map: TextSourceMap;
393
357
  sizes: {
394
358
  // TODO(cjamcl): Rename to `sources`.
@@ -573,7 +537,7 @@ declare module Artifacts {
573
537
  }
574
538
 
575
539
  interface TraceElement {
576
- traceEventType: 'largest-contentful-paint'|'layout-shift'|'animation';
540
+ traceEventType: 'largest-contentful-paint'|'layout-shift'|'animation'|'responsiveness';
577
541
  score?: number;
578
542
  node: NodeDetails;
579
543
  nodeId?: number;
@@ -642,7 +606,6 @@ declare module Artifacts {
642
606
  settings: Immutable<Config.Settings>;
643
607
  gatherContext: Artifacts['GatherContext'];
644
608
  simulator?: InstanceType<typeof LanternSimulator>;
645
- URL: Artifacts['URL'];
646
609
  }
647
610
 
648
611
  interface MetricComputationData extends MetricComputationDataInput {
@@ -885,8 +848,6 @@ declare module Artifacts {
885
848
  stackTrace?: LH.Crdp.Runtime.StackTrace;
886
849
  /** The URL of the log/exception, if known. */
887
850
  url?: string;
888
- /** The script id of the log/exception, if known. */
889
- scriptId?: string;
890
851
  /** Line number in the script (0-indexed), if known. */
891
852
  lineNumber?: number;
892
853
  /** Column number in the script (0-indexed), if known. */
package/types/config.d.ts CHANGED
@@ -66,8 +66,6 @@ declare module Config {
66
66
  settingsOverrides?: SharedFlagsSettings & Pick<LH.Flags, 'plugins'>;
67
67
  skipAboutBlank?: boolean;
68
68
  logLevel?: string;
69
- hostname?: string;
70
- port?: number;
71
69
  }
72
70
 
73
71
  interface SharedPassNavigationJson {
@@ -149,8 +149,8 @@ export interface CliFlags extends Flags {
149
149
  quiet: boolean;
150
150
  /** A flag to print the normalized config for the given config and options, then exit. */
151
151
  printConfig: boolean;
152
- /** Use the legacy navigation runner to gather CLI results. */
153
- legacyNavigation: boolean;
152
+ /** Use the new Fraggle Rock navigation runner to gather CLI results. */
153
+ fraggleRock: boolean;
154
154
  /** Path to the file where precomputed lantern data should be read from. */
155
155
  precomputedLanternDataPath?: string;
156
156
  /** Path to the file where precomputed lantern data should be written to. */
@@ -42,11 +42,12 @@ declare module Gatherer {
42
42
  defaultSession: FRProtocolSession;
43
43
  executionContext: ExecutionContext;
44
44
  fetcher: Fetcher;
45
- url: () => Promise<string>;
46
45
  }
47
46
 
48
47
  /** The limited context interface shared between pre and post Fraggle Rock Lighthouse. */
49
48
  interface FRTransitionalContext<TDependencies extends DependencyKey = DefaultDependenciesKey> {
49
+ /** The URL of the page that is currently active. Might be `about:blank` in the before phases */
50
+ url: string;
50
51
  /** The gather mode Lighthouse is currently in. */
51
52
  gatherMode: GatherMode;
52
53
  /** The connection to the page being analyzed. */
@@ -22,7 +22,6 @@ import * as Settings from './lhr/settings';
22
22
  import StructuredData_ from './structured-data';
23
23
  import Treemap_ from './lhr/treemap';
24
24
  import UserFlow_ from './user-flow';
25
- import puppeteer from 'puppeteer-core';
26
25
 
27
26
  // Construct hierarchy of global types under the LH namespace.
28
27
  declare global {
@@ -30,8 +29,6 @@ declare global {
30
29
  export type ArbitraryEqualityMap = ArbitraryEqualityMap_;
31
30
  export type NavigationRequestor = string | (() => Promise<void> | void);
32
31
 
33
- export import Puppeteer = puppeteer;
34
-
35
32
  // artifacts.d.ts
36
33
  export import Artifacts = Artifacts_.Artifacts;
37
34
  export import BaseArtifacts = Artifacts_.BaseArtifacts;
@@ -58,7 +58,9 @@ declare module Details {
58
58
 
59
59
  interface List {
60
60
  type: 'list';
61
- items: SnippetValue[]
61
+ // NOTE: any `Details` type *should* be usable in `items`, but check
62
+ // styles/report-ui-features are good before adding.
63
+ items: Array<Table | DebugData>;
62
64
  }
63
65
 
64
66
  interface Opportunity {
@@ -13,8 +13,8 @@ import {ConfigSettings} from './settings';
13
13
  interface Result {
14
14
  /** Gather mode used to collect artifacts for this result. */
15
15
  gatherMode: Result.GatherMode;
16
- /** The URL that Lighthouse initially navigated to. Will be `undefined` in timespan/snapshot. */
17
- requestedUrl?: string;
16
+ /** The URL that was supplied to Lighthouse and initially navigated to. */
17
+ requestedUrl: string;
18
18
  /** The post-redirects URL that Lighthouse loaded. */
19
19
  finalUrl: string;
20
20
  /** The ISO-8601 timestamp of when the results were generated. */
@@ -10,6 +10,7 @@ import {Locale} from './settings';
10
10
  declare module Treemap {
11
11
  interface Options {
12
12
  lhr: {
13
+ requestedUrl: string;
13
14
  finalUrl: string;
14
15
  audits: {
15
16
  'script-treemap-data': AuditResult;
@@ -1,30 +0,0 @@
1
- /**
2
- * @license Copyright 2022 The Lighthouse Authors. All Rights Reserved.
3
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
4
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
- */
6
- 'use strict';
7
-
8
- /**
9
- * @fileoverview This is a fake audit used exclusively in smoke tests to force inclusion of ScriptElements artifact.
10
- * It is included here for complex reasons in the way the bundled smoketests work.
11
- *
12
- * The smokehouse configs are evaluated first in the node CLI side (which requires an absolute path using LH_ROOT).
13
- * The smokehouse configs are then *re-evaluated* in the bundled context for execution by Lighthouse (which *cannot* use an absolute path using LH_ROOT).
14
- *
15
- * This mismatch in environment demands that the audit path in the config must be context-aware,
16
- * yet the require-graph for the config is included before even the CLI knows that it will be using
17
- * a bundled runner. Rather than force a massive smoketest architecture change, we include a harmless,
18
- * test-only audit in our core list instead.
19
- */
20
-
21
- module.exports = {
22
- meta: {
23
- id: 'script-elements-test-audit',
24
- title: 'ScriptElements',
25
- failureTitle: 'ScriptElements',
26
- description: 'Audit to force the inclusion of ScriptElements artifact',
27
- requiredArtifacts: ['ScriptElements'],
28
- },
29
- audit: () => ({score: 1}),
30
- };
@@ -1,154 +0,0 @@
1
- /**
2
- * @license Copyright 2022 The Lighthouse Authors. All Rights Reserved.
3
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
4
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
- */
6
- 'use strict';
7
-
8
- const FRGatherer = require('../../fraggle-rock/gather/base-gatherer.js');
9
-
10
- /**
11
- * @template T, U
12
- * @param {Array<T>} values
13
- * @param {(value: T) => Promise<U>} promiseMapper
14
- * @param {boolean} runInSeries
15
- * @return {Promise<Array<U>>}
16
- */
17
- async function runInSeriesOrParallel(values, promiseMapper, runInSeries) {
18
- if (runInSeries) {
19
- const results = [];
20
- for (const value of values) {
21
- const result = await promiseMapper(value);
22
- results.push(result);
23
- }
24
- return results;
25
- } else {
26
- const promises = values.map(promiseMapper);
27
- return await Promise.all(promises);
28
- }
29
- }
30
-
31
- /**
32
- * Returns true if the script was created via our own calls
33
- * to Runtime.evaluate.
34
- * @param {LH.Crdp.Debugger.ScriptParsedEvent} script
35
- */
36
- function isLighthouseRuntimeEvaluateScript(script) {
37
- // Scripts created by Runtime.evaluate that run on the main session/frame
38
- // result in an empty string for the embedderName.
39
- // Or, it means the script was dynamically created (eval, new Function, onload, ...)
40
- if (!script.embedderName) return true;
41
-
42
- // Otherwise, when running our own code inside other frames, the embedderName
43
- // is set to the frame's url. In that case, we rely on the special sourceURL that
44
- // we set.
45
- return script.hasSourceURL && script.url === '_lighthouse-eval.js';
46
- }
47
-
48
- /**
49
- * @fileoverview Gets JavaScript file contents.
50
- */
51
- class Scripts extends FRGatherer {
52
- /** @type {LH.Gatherer.GathererMeta} */
53
- meta = {
54
- supportedModes: ['timespan', 'navigation'],
55
- };
56
-
57
- /** @type {LH.Crdp.Debugger.ScriptParsedEvent[]} */
58
- _scriptParsedEvents = [];
59
-
60
- /** @type {Array<string | undefined>} */
61
- _scriptContents = [];
62
-
63
- /** @type {string|null|undefined} */
64
- _mainSessionId = null;
65
-
66
- constructor() {
67
- super();
68
- this.onProtocolMessage = this.onProtocolMessage.bind(this);
69
- }
70
-
71
- /**
72
- * @param {LH.Protocol.RawEventMessage} event
73
- */
74
- onProtocolMessage(event) {
75
- // Go read the comments in network-recorder.js _findRealRequestAndSetSession.
76
- let sessionId = event.sessionId;
77
- if (this._mainSessionId === null) {
78
- this._mainSessionId = sessionId;
79
- }
80
- if (this._mainSessionId === sessionId) {
81
- sessionId = undefined;
82
- }
83
-
84
- // We want to ignore scripts from OOPIFs. In reality, this does more than block just OOPIFs,
85
- // it also blocks scripts from the same origin but that happen to run in a different process,
86
- // like a worker.
87
- if (event.method === 'Debugger.scriptParsed' && !sessionId) {
88
- if (!isLighthouseRuntimeEvaluateScript(event.params)) {
89
- this._scriptParsedEvents.push(event.params);
90
- }
91
- }
92
- }
93
-
94
- /**
95
- * @param {LH.Gatherer.FRTransitionalContext} context
96
- */
97
- async startInstrumentation(context) {
98
- const session = context.driver.defaultSession;
99
- session.addProtocolMessageListener(this.onProtocolMessage);
100
- await session.sendCommand('Debugger.enable');
101
- }
102
-
103
- /**
104
- * @param {LH.Gatherer.FRTransitionalContext} context
105
- */
106
- async stopInstrumentation(context) {
107
- const session = context.driver.defaultSession;
108
- const formFactor = context.baseArtifacts.HostFormFactor;
109
-
110
- session.removeProtocolMessageListener(this.onProtocolMessage);
111
-
112
- // Without this line the Debugger domain will be off in FR runner,
113
- // because only the legacy gatherer has special handling for multiple,
114
- // overlapped enabled/disable calls.
115
- await session.sendCommand('Debugger.enable');
116
-
117
- // If run on a mobile device, be sensitive to memory limitations and only
118
- // request one at a time.
119
- this._scriptContents = await runInSeriesOrParallel(
120
- this._scriptParsedEvents,
121
- ({scriptId}) => {
122
- return session.sendCommand('Debugger.getScriptSource', {scriptId})
123
- .then((resp) => resp.scriptSource)
124
- .catch(() => undefined);
125
- },
126
- formFactor === 'mobile' /* runInSeries */
127
- );
128
- await session.sendCommand('Debugger.disable');
129
- }
130
-
131
- async getArtifact() {
132
- /** @type {LH.Artifacts['Scripts']} */
133
- const scripts = this._scriptParsedEvents.map((event, i) => {
134
- // 'embedderName' and 'url' are confusingly named, so we rewrite them here.
135
- // On the protocol, 'embedderName' always refers to the URL of the script (or HTML if inline).
136
- // Same for 'url' ... except, magic "sourceURL=" comments will override the value.
137
- // It's nice to display the user-provided value in Lighthouse, so we add a field 'name'
138
- // to make it clear this is for presentational purposes.
139
- // See https://chromium-review.googlesource.com/c/v8/v8/+/2317310
140
- return {
141
- name: event.url,
142
- ...event,
143
- // embedderName is optional on the protocol because backends like Node may not set it.
144
- // For our purposes, it is always set. But just in case it isn't... fallback to the url.
145
- url: event.embedderName || event.url,
146
- content: this._scriptContents[i],
147
- };
148
- });
149
-
150
- return scripts;
151
- }
152
- }
153
-
154
- module.exports = Scripts;
@@ -1,11 +0,0 @@
1
- /**
2
- * @license Copyright 2022 The Lighthouse Authors. All Rights Reserved.
3
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
4
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
- */
6
-
7
- module.exports = {
8
- env: {
9
- jest: true,
10
- },
11
- };
@@ -1,11 +0,0 @@
1
- /**
2
- * @license Copyright 2022 The Lighthouse Authors. All Rights Reserved.
3
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
4
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
- */
6
-
7
- module.exports = {
8
- env: {
9
- jest: true,
10
- },
11
- };