lighthouse 9.5.0-dev.20220607 → 9.6.2

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 (262) hide show
  1. package/dist/report/bundle.esm.js +467 -520
  2. package/dist/report/flow.js +22 -22
  3. package/dist/report/standalone.js +19 -19
  4. package/flow-report/src/summary/category.tsx +1 -1
  5. package/flow-report/src/topbar.tsx +2 -10
  6. package/flow-report/src/util.ts +1 -1
  7. package/flow-report/test/topbar-test.tsx +8 -7
  8. package/jest.config.js +1 -1
  9. package/lighthouse-cli/.eslintrc.cjs +4 -3
  10. package/lighthouse-cli/bin.js +1 -0
  11. package/lighthouse-cli/cli-flags.js +4 -3
  12. package/lighthouse-cli/commands/commands.js +1 -0
  13. package/lighthouse-cli/commands/list-audits.js +1 -0
  14. package/lighthouse-cli/commands/list-locales.js +1 -0
  15. package/lighthouse-cli/commands/list-trace-categories.js +1 -0
  16. package/lighthouse-cli/index.js +1 -0
  17. package/lighthouse-cli/printer.js +1 -0
  18. package/lighthouse-cli/run.js +24 -9
  19. package/lighthouse-cli/sentry-prompt.js +1 -0
  20. package/lighthouse-cli/test/smokehouse/core-tests.js +1 -0
  21. package/lighthouse-cli/test/smokehouse/frontends/back-compat-util.js +1 -0
  22. package/lighthouse-cli/test/smokehouse/frontends/lib.js +1 -0
  23. package/lighthouse-cli/test/smokehouse/frontends/node.js +1 -0
  24. package/lighthouse-cli/test/smokehouse/frontends/smokehouse-bin.js +1 -0
  25. package/lighthouse-cli/test/smokehouse/lib/child-process-error.js +1 -0
  26. package/lighthouse-cli/test/smokehouse/lib/concurrent-mapper.js +1 -0
  27. package/lighthouse-cli/test/smokehouse/lib/local-console.js +1 -0
  28. package/lighthouse-cli/test/smokehouse/lighthouse-runners/bundle.js +23 -109
  29. package/lighthouse-cli/test/smokehouse/lighthouse-runners/cli.js +3 -2
  30. package/lighthouse-cli/test/smokehouse/lighthouse-runners/devtools.js +19 -28
  31. package/lighthouse-cli/test/smokehouse/report-assert.js +4 -3
  32. package/lighthouse-cli/test/smokehouse/smokehouse.js +1 -1
  33. package/lighthouse-cli/test/smokehouse/version-check-test.js +3 -0
  34. package/lighthouse-cli/test/smokehouse/version-check.js +1 -0
  35. package/lighthouse-core/audits/accessibility/accesskeys.js +1 -1
  36. package/lighthouse-core/audits/accessibility/aria-allowed-attr.js +1 -1
  37. package/lighthouse-core/audits/accessibility/aria-command-name.js +1 -1
  38. package/lighthouse-core/audits/accessibility/aria-hidden-body.js +1 -1
  39. package/lighthouse-core/audits/accessibility/aria-hidden-focus.js +1 -1
  40. package/lighthouse-core/audits/accessibility/aria-input-field-name.js +1 -1
  41. package/lighthouse-core/audits/accessibility/aria-meter-name.js +1 -1
  42. package/lighthouse-core/audits/accessibility/aria-progressbar-name.js +1 -1
  43. package/lighthouse-core/audits/accessibility/aria-required-attr.js +1 -1
  44. package/lighthouse-core/audits/accessibility/aria-required-children.js +1 -1
  45. package/lighthouse-core/audits/accessibility/aria-required-parent.js +1 -1
  46. package/lighthouse-core/audits/accessibility/aria-roles.js +1 -1
  47. package/lighthouse-core/audits/accessibility/aria-toggle-field-name.js +1 -1
  48. package/lighthouse-core/audits/accessibility/aria-tooltip-name.js +1 -1
  49. package/lighthouse-core/audits/accessibility/aria-treeitem-name.js +1 -1
  50. package/lighthouse-core/audits/accessibility/aria-valid-attr-value.js +1 -1
  51. package/lighthouse-core/audits/accessibility/aria-valid-attr.js +1 -1
  52. package/lighthouse-core/audits/accessibility/button-name.js +1 -1
  53. package/lighthouse-core/audits/accessibility/bypass.js +1 -1
  54. package/lighthouse-core/audits/accessibility/color-contrast.js +1 -1
  55. package/lighthouse-core/audits/accessibility/definition-list.js +1 -1
  56. package/lighthouse-core/audits/accessibility/dlitem.js +1 -1
  57. package/lighthouse-core/audits/accessibility/document-title.js +1 -1
  58. package/lighthouse-core/audits/accessibility/duplicate-id-active.js +1 -1
  59. package/lighthouse-core/audits/accessibility/duplicate-id-aria.js +1 -1
  60. package/lighthouse-core/audits/accessibility/form-field-multiple-labels.js +1 -1
  61. package/lighthouse-core/audits/accessibility/frame-title.js +1 -1
  62. package/lighthouse-core/audits/accessibility/heading-order.js +1 -1
  63. package/lighthouse-core/audits/accessibility/html-has-lang.js +1 -1
  64. package/lighthouse-core/audits/accessibility/html-lang-valid.js +1 -1
  65. package/lighthouse-core/audits/accessibility/image-alt.js +1 -1
  66. package/lighthouse-core/audits/accessibility/input-image-alt.js +1 -1
  67. package/lighthouse-core/audits/accessibility/label.js +1 -1
  68. package/lighthouse-core/audits/accessibility/link-name.js +1 -1
  69. package/lighthouse-core/audits/accessibility/list.js +1 -1
  70. package/lighthouse-core/audits/accessibility/listitem.js +5 -5
  71. package/lighthouse-core/audits/accessibility/meta-refresh.js +1 -1
  72. package/lighthouse-core/audits/accessibility/meta-viewport.js +1 -1
  73. package/lighthouse-core/audits/accessibility/object-alt.js +1 -1
  74. package/lighthouse-core/audits/accessibility/tabindex.js +1 -1
  75. package/lighthouse-core/audits/accessibility/td-headers-attr.js +1 -1
  76. package/lighthouse-core/audits/accessibility/th-has-data-cells.js +1 -1
  77. package/lighthouse-core/audits/accessibility/valid-lang.js +1 -1
  78. package/lighthouse-core/audits/accessibility/video-caption.js +1 -1
  79. package/lighthouse-core/audits/byte-efficiency/byte-efficiency-audit.js +1 -2
  80. package/lighthouse-core/audits/byte-efficiency/duplicated-javascript.js +12 -11
  81. package/lighthouse-core/audits/byte-efficiency/efficient-animated-content.js +1 -1
  82. package/lighthouse-core/audits/byte-efficiency/legacy-javascript.js +24 -22
  83. package/lighthouse-core/audits/byte-efficiency/offscreen-images.js +2 -3
  84. package/lighthouse-core/audits/byte-efficiency/render-blocking-resources.js +3 -2
  85. package/lighthouse-core/audits/byte-efficiency/unminified-css.js +5 -3
  86. package/lighthouse-core/audits/byte-efficiency/unminified-javascript.js +11 -10
  87. package/lighthouse-core/audits/byte-efficiency/unused-css-rules.js +1 -0
  88. package/lighthouse-core/audits/byte-efficiency/unused-javascript.js +8 -11
  89. package/lighthouse-core/audits/byte-efficiency/uses-responsive-images.js +1 -1
  90. package/lighthouse-core/audits/byte-efficiency/uses-text-compression.js +1 -1
  91. package/lighthouse-core/audits/deprecations.js +598 -8
  92. package/lighthouse-core/audits/diagnostics.js +3 -4
  93. package/lighthouse-core/audits/dobetterweb/doctype.js +9 -20
  94. package/lighthouse-core/audits/dobetterweb/geolocation-on-start.js +1 -1
  95. package/lighthouse-core/audits/dobetterweb/no-document-write.js +1 -1
  96. package/lighthouse-core/audits/dobetterweb/notification-on-start.js +1 -1
  97. package/lighthouse-core/audits/dobetterweb/uses-http2.js +1 -2
  98. package/lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js +1 -1
  99. package/lighthouse-core/audits/errors-in-console.js +2 -2
  100. package/lighthouse-core/audits/long-tasks.js +2 -3
  101. package/lighthouse-core/audits/metrics/first-contentful-paint-3g.js +2 -2
  102. package/lighthouse-core/audits/metrics/first-contentful-paint.js +2 -3
  103. package/lighthouse-core/audits/metrics/first-meaningful-paint.js +2 -3
  104. package/lighthouse-core/audits/metrics/interactive.js +2 -3
  105. package/lighthouse-core/audits/metrics/largest-contentful-paint.js +2 -3
  106. package/lighthouse-core/audits/metrics/max-potential-fid.js +2 -3
  107. package/lighthouse-core/audits/metrics/speed-index.js +2 -3
  108. package/lighthouse-core/audits/metrics/total-blocking-time.js +2 -3
  109. package/lighthouse-core/audits/metrics.js +2 -3
  110. package/lighthouse-core/audits/no-unload-listeners.js +15 -7
  111. package/lighthouse-core/audits/predictive-perf.js +1 -2
  112. package/lighthouse-core/audits/preload-lcp-image.js +3 -3
  113. package/lighthouse-core/audits/redirects.js +1 -1
  114. package/lighthouse-core/audits/script-treemap-data.js +45 -45
  115. package/lighthouse-core/audits/seo/http-status-code.js +4 -2
  116. package/lighthouse-core/audits/seo/link-text.js +0 -2
  117. package/lighthouse-core/audits/server-response-time.js +17 -2
  118. package/lighthouse-core/audits/service-worker.js +2 -7
  119. package/lighthouse-core/audits/timing-budget.js +2 -3
  120. package/lighthouse-core/audits/uses-rel-preconnect.js +1 -1
  121. package/lighthouse-core/audits/uses-rel-preload.js +1 -1
  122. package/lighthouse-core/audits/valid-source-maps.js +14 -12
  123. package/lighthouse-core/audits/violation-audit.js +1 -1
  124. package/lighthouse-core/audits/work-during-interaction.js +2 -2
  125. package/lighthouse-core/computed/critical-request-chains.js +9 -5
  126. package/lighthouse-core/computed/js-bundles.js +11 -11
  127. package/lighthouse-core/computed/main-resource.js +2 -3
  128. package/lighthouse-core/computed/metrics/first-contentful-paint-all-frames.js +1 -1
  129. package/lighthouse-core/computed/metrics/first-contentful-paint.js +1 -1
  130. package/lighthouse-core/computed/metrics/first-meaningful-paint.js +1 -1
  131. package/lighthouse-core/computed/metrics/interactive.js +1 -1
  132. package/lighthouse-core/computed/metrics/lantern-first-contentful-paint.js +1 -1
  133. package/lighthouse-core/computed/metrics/lantern-first-meaningful-paint.js +1 -1
  134. package/lighthouse-core/computed/metrics/lantern-interactive.js +1 -1
  135. package/lighthouse-core/computed/metrics/lantern-largest-contentful-paint.js +1 -1
  136. package/lighthouse-core/computed/metrics/lantern-max-potential-fid.js +1 -1
  137. package/lighthouse-core/computed/metrics/lantern-metric.js +5 -3
  138. package/lighthouse-core/computed/metrics/lantern-speed-index.js +1 -1
  139. package/lighthouse-core/computed/metrics/lantern-total-blocking-time.js +1 -1
  140. package/lighthouse-core/computed/metrics/largest-contentful-paint-all-frames.js +1 -1
  141. package/lighthouse-core/computed/metrics/largest-contentful-paint.js +1 -1
  142. package/lighthouse-core/computed/metrics/max-potential-fid.js +1 -1
  143. package/lighthouse-core/computed/metrics/metric.js +0 -1
  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/fraggle-rock/api.js +1 -1
  155. package/lighthouse-core/fraggle-rock/config/default-config.js +0 -3
  156. package/lighthouse-core/fraggle-rock/gather/base-artifacts.js +3 -6
  157. package/lighthouse-core/fraggle-rock/gather/driver.js +2 -2
  158. package/lighthouse-core/fraggle-rock/gather/navigation-runner.js +26 -51
  159. package/lighthouse-core/fraggle-rock/gather/runner-helpers.js +3 -0
  160. package/lighthouse-core/fraggle-rock/gather/session.js +22 -23
  161. package/lighthouse-core/fraggle-rock/gather/snapshot-runner.js +4 -5
  162. package/lighthouse-core/fraggle-rock/gather/timespan-runner.js +6 -6
  163. package/lighthouse-core/gather/connections/cri.js +1 -5
  164. package/lighthouse-core/gather/driver/execution-context.js +2 -5
  165. package/lighthouse-core/gather/driver/navigation.js +10 -13
  166. package/lighthouse-core/gather/driver/network-monitor.js +3 -16
  167. package/lighthouse-core/gather/driver.js +1 -6
  168. package/lighthouse-core/gather/fetcher.js +210 -34
  169. package/lighthouse-core/gather/gather-runner.js +17 -13
  170. package/lighthouse-core/gather/gatherers/accessibility.js +4 -16
  171. package/lighthouse-core/gather/gatherers/console-messages.js +2 -4
  172. package/lighthouse-core/gather/gatherers/dobetterweb/doctype.js +2 -4
  173. package/lighthouse-core/gather/gatherers/full-page-screenshot.js +2 -3
  174. package/lighthouse-core/gather/gatherers/iframe-elements.js +1 -4
  175. package/lighthouse-core/gather/gatherers/image-elements.js +0 -2
  176. package/lighthouse-core/gather/gatherers/js-usage.js +87 -12
  177. package/lighthouse-core/gather/gatherers/link-elements.js +14 -12
  178. package/lighthouse-core/gather/gatherers/main-document-content.js +8 -8
  179. package/lighthouse-core/gather/gatherers/script-elements.js +56 -7
  180. package/lighthouse-core/gather/gatherers/seo/robots-txt.js +30 -2
  181. package/lighthouse-core/gather/gatherers/source-maps.js +1 -8
  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/page-functions.js +1 -3
  188. package/lighthouse-core/lib/script-helpers.js +6 -11
  189. package/lighthouse-core/lib/url-shim.js +2 -2
  190. package/lighthouse-core/runner.js +5 -0
  191. package/lighthouse-core/scripts/manual-chrome-launcher.js +1 -0
  192. package/lighthouse-core/util-commonjs.js +6 -8
  193. package/package.json +13 -13
  194. package/readme.md +1 -1
  195. package/report/.eslintrc.cjs +1 -3
  196. package/report/assets/styles.css +5 -10
  197. package/report/assets/templates.html +9 -10
  198. package/report/clients/bundle.js +1 -0
  199. package/report/clients/standalone.js +1 -0
  200. package/report/generator/report-generator.js +21 -46
  201. package/report/renderer/api.js +2 -0
  202. package/report/renderer/category-renderer.js +24 -20
  203. package/report/renderer/components.js +304 -303
  204. package/report/renderer/crc-details-renderer.js +24 -21
  205. package/report/renderer/details-renderer.js +12 -12
  206. package/report/renderer/dom.js +7 -6
  207. package/report/renderer/drop-down-menu.js +1 -0
  208. package/report/renderer/element-screenshot-renderer.js +5 -1
  209. package/report/renderer/features-util.js +1 -0
  210. package/report/renderer/i18n.js +62 -118
  211. package/report/renderer/logger.js +1 -0
  212. package/report/renderer/open-tab.js +3 -1
  213. package/report/renderer/performance-category-renderer.js +11 -10
  214. package/report/renderer/pwa-category-renderer.js +4 -3
  215. package/report/renderer/report-renderer.js +17 -17
  216. package/report/renderer/report-ui-features.js +1 -0
  217. package/report/renderer/snippet-renderer.js +3 -2
  218. package/report/renderer/swap-locale-feature.js +1 -0
  219. package/report/renderer/text-encoding.js +1 -0
  220. package/report/renderer/topbar-features.js +1 -0
  221. package/report/renderer/util.js +6 -7
  222. package/report/test/clients/bundle-test.js +5 -0
  223. package/report/test/generator/file-namer-test.js +1 -0
  224. package/report/test/generator/report-generator-test.js +20 -25
  225. package/report/test/renderer/category-renderer-test.js +4 -3
  226. package/report/test/renderer/components-test.js +3 -0
  227. package/report/test/renderer/crc-details-renderer-test.js +3 -0
  228. package/report/test/renderer/details-renderer-test.js +3 -49
  229. package/report/test/renderer/dom-test.js +3 -0
  230. package/report/test/renderer/element-screenshot-renderer-test.js +6 -3
  231. package/report/test/renderer/i18n-test.js +25 -70
  232. package/report/test/renderer/performance-category-renderer-test.js +5 -14
  233. package/report/test/renderer/pwa-category-renderer-test.js +4 -3
  234. package/report/test/renderer/report-renderer-axe-test.js +4 -3
  235. package/report/test/renderer/report-renderer-test.js +4 -3
  236. package/report/test/renderer/report-ui-features-test.js +4 -3
  237. package/report/test/renderer/snippet-renderer-test.js +3 -0
  238. package/report/test/renderer/text-encoding-test.js +3 -0
  239. package/report/test/renderer/util-test.js +5 -4
  240. package/report/test-assets/faux-psi.js +1 -2
  241. package/shared/localization/format.js +3 -7
  242. package/shared/localization/locales/en-US.json +238 -55
  243. package/shared/localization/locales/en-XL.json +238 -55
  244. package/shared/test/localization/format-test.js +2 -8
  245. package/shared/test/localization/locales-test.js +2 -0
  246. package/shared/test/localization/swap-locale-test.js +2 -0
  247. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +2 -0
  248. package/third-party/chromium-synchronization/installability-errors-test.js +2 -0
  249. package/tsconfig.json +0 -1
  250. package/types/artifacts.d.ts +8 -47
  251. package/types/config.d.ts +0 -2
  252. package/types/externs.d.ts +2 -3
  253. package/types/gatherer.d.ts +2 -1
  254. package/types/global-lh.d.ts +0 -3
  255. package/types/lhr/lhr.d.ts +2 -2
  256. package/types/lhr/treemap.d.ts +1 -0
  257. package/changelog.md +0 -5902
  258. package/lighthouse-core/audits/script-elements-test-audit.js +0 -30
  259. package/lighthouse-core/gather/gatherers/scripts.js +0 -154
  260. package/lighthouse-core/scripts/package.json +0 -4
  261. package/report/test/.eslintrc.cjs +0 -11
  262. package/shared/test/localization/.eslintrc.cjs +0 -11
@@ -3,6 +3,7 @@
3
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
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
5
  */
6
+ 'use strict';
6
7
 
7
8
  /**
8
9
  * @fileoverview A runner that launches Chrome and executes Lighthouse via DevTools.
@@ -18,51 +19,45 @@ const devtoolsDir =
18
19
  process.env.DEVTOOLS_PATH || `${LH_ROOT}/.tmp/chromium-web-tests/devtools/devtools-frontend`;
19
20
 
20
21
  /**
21
- * @param {string[]} logs
22
22
  * @param {string} command
23
23
  * @param {string[]} args
24
24
  */
25
- async function spawnAndLog(logs, command, args) {
25
+ async function spawnAndLog(command, args) {
26
+ let log = '';
27
+
26
28
  /** @type {Promise<void>} */
27
- const promise = new Promise((resolve) => {
29
+ const promise = new Promise((resolve, reject) => {
28
30
  const spawnHandle = spawn(command, args);
29
31
  spawnHandle.on('close', code => {
30
- if (code) {
31
- logs.push(`[FAILURE] Command exited with code: ${code}\n`);
32
- } else {
33
- logs.push('[SUCCESS] Command exited with code: 0\n');
34
- }
35
- resolve();
36
- });
37
- spawnHandle.on('error', (error) => {
38
- logs.push(`ERROR: ${error.toString()}`);
32
+ if (code === 0) resolve();
33
+ else reject(new Error(`Command exited with code ${code}`));
39
34
  });
40
- spawnHandle.stdout.setEncoding('utf8');
35
+ spawnHandle.on('error', reject);
41
36
  spawnHandle.stdout.on('data', data => {
42
- process.stdout.write(data);
43
- logs.push(`STDOUT: ${data}`);
37
+ console.log(data.toString());
38
+ log += `STDOUT: ${data.toString()}`;
44
39
  });
45
- spawnHandle.stderr.setEncoding('utf8');
46
40
  spawnHandle.stderr.on('data', data => {
47
- process.stderr.write(data);
48
- logs.push(`STDERR: ${data}`);
41
+ console.log(data.toString());
42
+ log += `STDERR: ${data.toString()}`;
49
43
  });
50
44
  });
51
45
  await promise;
46
+
47
+ return log;
52
48
  }
53
49
 
54
50
  /** @type {Promise<void>} */
55
51
  let buildDevtoolsPromise;
56
52
  /**
57
- * @param {string[]} logs
58
53
  * Download/pull latest DevTools, build Lighthouse for DevTools, roll to DevTools, and build DevTools.
59
54
  */
60
- async function buildDevtools(logs) {
55
+ async function buildDevtools() {
61
56
  if (process.env.CI) return;
62
57
 
63
58
  process.env.DEVTOOLS_PATH = devtoolsDir;
64
- await spawnAndLog(logs, 'bash', ['lighthouse-core/test/chromium-web-tests/download-devtools.sh']);
65
- await spawnAndLog(logs, 'bash', ['lighthouse-core/test/chromium-web-tests/roll-devtools.sh']);
59
+ await spawnAndLog('bash', ['lighthouse-core/test/chromium-web-tests/download-devtools.sh']);
60
+ await spawnAndLog('bash', ['lighthouse-core/test/chromium-web-tests/roll-devtools.sh']);
66
61
  }
67
62
 
68
63
  /**
@@ -76,10 +71,7 @@ async function buildDevtools(logs) {
76
71
  * @return {Promise<{lhr: LH.Result, artifacts: LH.Artifacts, log: string}>}
77
72
  */
78
73
  async function runLighthouse(url, configJson, testRunnerOptions = {}) {
79
- /** @type {string[]} */
80
- const logs = [];
81
-
82
- if (!buildDevtoolsPromise) buildDevtoolsPromise = buildDevtools(logs);
74
+ if (!buildDevtoolsPromise) buildDevtoolsPromise = buildDevtools();
83
75
  await buildDevtoolsPromise;
84
76
 
85
77
  const outputDir = fs.mkdtempSync(os.tmpdir() + '/lh-smoke-cdt-runner-');
@@ -96,7 +88,7 @@ async function runLighthouse(url, configJson, testRunnerOptions = {}) {
96
88
  args.push('--config', JSON.stringify(configJson));
97
89
  }
98
90
 
99
- await spawnAndLog(logs, 'yarn', args);
91
+ const log = await spawnAndLog('yarn', args);
100
92
  const lhr = JSON.parse(fs.readFileSync(`${outputDir}/lhr-0.json`, 'utf-8'));
101
93
  const artifacts = JSON.parse(fs.readFileSync(`${outputDir}/artifacts-0.json`, 'utf-8'));
102
94
 
@@ -106,7 +98,6 @@ async function runLighthouse(url, configJson, testRunnerOptions = {}) {
106
98
  fs.rmSync(outputDir, {recursive: true, force: true});
107
99
  }
108
100
 
109
- const log = logs.join('') + '\n';
110
101
  return {lhr, artifacts, log};
111
102
  }
112
103
 
@@ -3,6 +3,7 @@
3
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
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
5
  */
6
+ 'use strict';
6
7
 
7
8
  /**
8
9
  * @fileoverview An assertion library for comparing smoke-test expectations
@@ -218,10 +219,10 @@ function makeComparison(name, actualResult, expectedResult) {
218
219
  * @param {LocalConsole} localConsole
219
220
  * @param {LH.Result} lhr
220
221
  * @param {Smokehouse.ExpectedRunnerResult} expected
221
- * @param {{runner?: string, isBundled?: boolean, useFraggleRock?: boolean}=} reportOptions
222
+ * @param {{runner?: string, isBundled?: boolean}=} reportOptions
222
223
  */
223
224
  function pruneExpectations(localConsole, lhr, expected, reportOptions) {
224
- const isFraggleRock = reportOptions?.useFraggleRock;
225
+ const isFraggleRock = lhr.configSettings.channel === 'fraggle-rock-cli';
225
226
  const isBundled = reportOptions?.isBundled;
226
227
 
227
228
  /**
@@ -458,7 +459,7 @@ function reportAssertion(localConsole, assertion) {
458
459
  * summary. Returns count of passed and failed tests.
459
460
  * @param {{lhr: LH.Result, artifacts: LH.Artifacts, networkRequests?: string[]}} actual
460
461
  * @param {Smokehouse.ExpectedRunnerResult} expected
461
- * @param {{runner?: string, isDebug?: boolean, isBundled?: boolean, useFraggleRock?: boolean}=} reportOptions
462
+ * @param {{runner?: string, isDebug?: boolean, isBundled?: boolean}=} reportOptions
462
463
  * @return {{passed: number, failed: number, log: string}}
463
464
  */
464
465
  function getAssertionReport(actual, expected, reportOptions = {}) {
@@ -3,6 +3,7 @@
3
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
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
5
  */
6
+ 'use strict';
6
7
 
7
8
  /**
8
9
  * @fileoverview An end-to-end test runner for Lighthouse. Takes a set of smoke
@@ -161,7 +162,6 @@ async function runSmokeTest(smokeTestDefn, testOptions) {
161
162
  report = getAssertionReport(result, expectations, {
162
163
  runner: lighthouseRunner.runnerName,
163
164
  isDebug,
164
- useFraggleRock,
165
165
  });
166
166
 
167
167
  runs.push({
@@ -3,9 +3,12 @@
3
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
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
5
  */
6
+ 'use strict';
6
7
 
7
8
  import {chromiumVersionCheck, compareVersions} from './version-check.js';
8
9
 
10
+ /* eslint-env jest */
11
+
9
12
  describe('version check', () => {
10
13
  it('compareVersions', async () => {
11
14
  expect(compareVersions([100, 0, 0, 0], [100, 0, 0, 0])).toBe(0);
@@ -3,6 +3,7 @@
3
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
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
5
  */
6
+ 'use strict';
6
7
 
7
8
  /**
8
9
  * @fileoverview Compares chromium version strings: 103.0.5017.0
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Access keys let users quickly focus a part of the page. For proper ' +
23
23
  'navigation, each access key must be unique. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/accesskeys).',
24
+ '[Learn more](https://web.dev/accesskeys/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Each ARIA `role` supports a specific subset of `aria-*` attributes. ' +
23
23
  'Mismatching these invalidates the `aria-*` attributes. [Learn ' +
24
- 'more](https://dequeuniversity.com/rules/axe/4.4/aria-allowed-attr).',
24
+ 'more](https://web.dev/aria-allowed-attr/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accessibility audit that evaluates if important HTML elements do not have accessible names. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: '`button`, `link`, and `menuitem` elements do not have accessible names.',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should have accessible names for HTML elements. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-command-name).',
22
+ description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks if the html <body> element does not have an aria-hidden attribute set on it. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: '`[aria-hidden="true"]` is present on the document `<body>`',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'Assistive technologies, like screen readers, work inconsistently when `aria-hidden="true"` is set on the document `<body>`. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-hidden-body).',
22
+ description: 'Assistive technologies, like screen readers, work inconsistently when `aria-hidden="true"` is set on the document `<body>`. [Learn more](https://web.dev/aria-hidden-body/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks if all elements that have an aria-hidden attribute do not contain focusable descendent elements. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: '`[aria-hidden="true"]` elements contain focusable descendents',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'Focusable descendents within an `[aria-hidden="true"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-hidden-focus).',
22
+ description: 'Focusable descendents within an `[aria-hidden="true"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn more](https://web.dev/aria-hidden-focus/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks that all ARIA input fields have an accessible name. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA input fields do not have accessible names',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When an input field doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-input-field-name).',
22
+ description: 'When an input field doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accessibility audit that evaluates if meter HTML elements do not have accessible names. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA `meter` elements do not have accessible names.',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should have accessible names for HTML elements. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-meter-name).',
22
+ description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accessibility audit that evaluates if progressbar HTML elements do not have accessible names. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA `progressbar` elements do not have accessible names.',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When a `progressbar` element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-progressbar-name).',
22
+ description: 'When a `progressbar` element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -20,7 +20,7 @@ const UIStrings = {
20
20
  failureTitle: '`[role]`s do not have all required `[aria-*]` attributes',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Some ARIA roles have required attributes that describe the state ' +
23
- 'of the element to screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-required-attr).',
23
+ 'of the element to screen readers. [Learn more](https://web.dev/aria-required-attr/).',
24
24
  };
25
25
 
26
26
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -24,7 +24,7 @@ const UIStrings = {
24
24
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
25
25
  description: 'Some ARIA parent roles must contain specific child roles to perform ' +
26
26
  'their intended accessibility functions. ' +
27
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-required-children).',
27
+ '[Learn more](https://web.dev/aria-required-children/).',
28
28
  };
29
29
 
30
30
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
23
23
  description: 'Some ARIA child roles must be contained by specific parent roles to ' +
24
24
  'properly perform their intended accessibility functions. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-required-parent).',
25
+ '[Learn more](https://web.dev/aria-required-parent/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'ARIA roles must have valid values in order to perform their ' +
23
23
  'intended accessibility functions. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-roles).',
24
+ '[Learn more](https://web.dev/aria-roles/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks that all ARIA toggle fields have an accessible name. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA toggle fields do not have accessible names',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When a toggle field doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-toggle-field-name).',
22
+ description: 'When a toggle field doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accessibility audit that evaluates if tooltip HTML elements do not have accessible names. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA `tooltip` elements do not have accessible names.',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should have accessible names for HTML elements. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-tooltip-name).',
22
+ description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accessibility audit that evaluates if treeitem HTML elements do not have accessible names. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA `treeitem` elements do not have accessible names.',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should have accessible names for HTML elements. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/4.4/aria-treeitem-name).',
22
+ description: 'When an element doesn\'t have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more](https://web.dev/aria-name/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Assistive technologies, like screen readers, can\'t interpret ARIA ' +
23
23
  'attributes with invalid values. [Learn ' +
24
- 'more](https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr-value).',
24
+ 'more](https://web.dev/aria-valid-attr-value/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Assistive technologies, like screen readers, can\'t interpret ARIA ' +
23
23
  'attributes with invalid names. [Learn ' +
24
- 'more](https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr).',
24
+ 'more](https://web.dev/aria-valid-attr/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'When a button doesn\'t have an accessible name, screen readers announce it ' +
23
23
  'as "button", making it unusable for users who rely on screen readers. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/button-name).',
24
+ '[Learn more](https://web.dev/button-name/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
23
23
  description: 'Adding ways to bypass repetitive content lets keyboard users navigate the ' +
24
24
  'page more efficiently. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/bypass).',
25
+ '[Learn more](https://web.dev/bypass/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  'sufficient contrast ratio.',
23
23
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
24
24
  description: 'Low-contrast text is difficult or impossible for many users to read. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/color-contrast).',
25
+ '[Learn more](https://web.dev/color-contrast/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -23,7 +23,7 @@ const UIStrings = {
23
23
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
24
24
  description: 'When definition lists are not properly marked up, screen readers may produce ' +
25
25
  'confusing or inaccurate output. ' +
26
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/definition-list).',
26
+ '[Learn more](https://web.dev/definition-list/).',
27
27
  };
28
28
 
29
29
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Definition list items (`<dt>` and `<dd>`) must be wrapped in a ' +
23
23
  'parent `<dl>` element to ensure that screen readers can properly announce them. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/dlitem).',
24
+ '[Learn more](https://web.dev/dlitem/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'The title gives screen reader users an overview of the page, and search ' +
23
23
  'engine users rely on it heavily to determine if a page is relevant to their search. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/document-title).',
24
+ '[Learn more](https://web.dev/document-title/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks if there are any duplicate id HTML attributes on active, focusable elements. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: '`[id]` attributes on active, focusable elements are not unique',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'All focusable elements must have a unique `id` to ensure that they\'re visible to assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/4.4/duplicate-id-active).',
22
+ description: 'All focusable elements must have a unique `id` to ensure that they\'re visible to assistive technologies. [Learn more](https://web.dev/duplicate-id-active/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks if there are any duplicate ARIA IDs on the page. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'ARIA IDs are not unique',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/4.4/duplicate-id-aria).',
22
+ description: 'The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://web.dev/duplicate-id-aria/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks if any form fields have multiple label elements. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'Form fields have multiple labels',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn more](https://dequeuniversity.com/rules/axe/4.4/form-field-multiple-labels).',
22
+ description: 'Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn more](https://web.dev/form-field-multiple-labels/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -20,7 +20,7 @@ const UIStrings = {
20
20
  failureTitle: '`<frame>` or `<iframe>` elements do not have a title',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Screen reader users rely on frame titles to describe the contents of frames. ' +
23
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/frame-title).',
23
+ '[Learn more](https://web.dev/frame-title/).',
24
24
  };
25
25
 
26
26
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Title of an accesibility audit that checks if heading elements (<h1>, <h2>, etc) appear in numeric order and only ever increase in steps of 1. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
20
  failureTitle: 'Heading elements are not in a sequentially-descending order',
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
- description: 'Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/4.4/heading-order).',
22
+ description: 'Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. [Learn more](https://web.dev/heading-order/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -23,7 +23,7 @@ const UIStrings = {
23
23
  'that the page is in the default language that the user chose when setting up the ' +
24
24
  'screen reader. If the page isn\'t actually in the default language, then the screen ' +
25
25
  'reader might not announce the page\'s text correctly. ' +
26
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/html-has-lang).',
26
+ '[Learn more](https://web.dev/html-has-lang/).',
27
27
  };
28
28
 
29
29
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
23
23
  description: 'Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ' +
24
24
  'helps screen readers announce text properly. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/html-lang-valid).',
25
+ '[Learn more](https://web.dev/html-lang-valid/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Informative elements should aim for short, descriptive alternate text. ' +
23
23
  'Decorative elements can be ignored with an empty alt attribute. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/image-alt).',
24
+ '[Learn more](https://web.dev/image-alt/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'When an image is being used as an `<input>` button, providing alternative ' +
23
23
  'text can help screen reader users understand the purpose of the button. ' +
24
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/input-image-alt).',
24
+ '[Learn more](https://web.dev/input-image-alt/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
22
22
  description: 'Labels ensure that form controls are announced properly by assistive ' +
23
23
  'technologies, like screen readers. [Learn ' +
24
- 'more](https://dequeuniversity.com/rules/axe/4.4/label).',
24
+ 'more](https://web.dev/label/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  description: 'Link text (and alternate text for images, when used as links) that is ' +
23
23
  'discernible, unique, and focusable improves the navigation experience for ' +
24
24
  'screen reader users. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/link-name).',
25
+ '[Learn more](https://web.dev/link-name/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -23,7 +23,7 @@ const UIStrings = {
23
23
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
24
24
  description: 'Screen readers have a specific way of announcing lists. Ensuring proper list ' +
25
25
  'structure aids screen reader output. ' +
26
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/list).',
26
+ '[Learn more](https://web.dev/list/).',
27
27
  };
28
28
 
29
29
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -15,14 +15,14 @@ const i18n = require('../../lib/i18n/i18n.js');
15
15
 
16
16
  const UIStrings = {
17
17
  /** Title of an accesibility audit that evaluates if any list item elements do not have list parent elements. This title is descriptive of the successful state and is shown to users when no user action is required. */
18
- title: 'List items (`<li>`) are contained within `<ul>`, `<ol>` or `<menu>` parent elements',
18
+ title: 'List items (`<li>`) are contained within `<ul>` or `<ol>` parent elements',
19
19
  /** Title of an accesibility audit that evaluates if any list item elements do not have list parent elements. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
20
- failureTitle: 'List items (`<li>`) are not contained within `<ul>`, ' +
21
- '`<ol>` or `<menu>` parent elements.',
20
+ failureTitle: 'List items (`<li>`) are not contained within `<ul>` ' +
21
+ 'or `<ol>` parent elements.',
22
22
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
23
23
  description: 'Screen readers require list items (`<li>`) to be contained within a ' +
24
- 'parent `<ul>`, `<ol>` or `<menu>` to be announced properly. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/listitem).',
24
+ 'parent `<ul>` or `<ol>` to be announced properly. ' +
25
+ '[Learn more](https://web.dev/listitem/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  description: 'Users do not expect a page to refresh automatically, and doing so will move ' +
23
23
  'focus back to the top of the page. This may create a frustrating or ' +
24
24
  'confusing experience. ' +
25
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/meta-refresh).',
25
+ '[Learn more](https://web.dev/meta-refresh/).',
26
26
  };
27
27
 
28
28
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
@@ -23,7 +23,7 @@ const UIStrings = {
23
23
  /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
24
24
  description: 'Disabling zooming is problematic for users with low vision who rely on ' +
25
25
  'screen magnification to properly see the contents of a web page. ' +
26
- '[Learn more](https://dequeuniversity.com/rules/axe/4.4/meta-viewport).',
26
+ '[Learn more](https://web.dev/meta-viewport/).',
27
27
  };
28
28
 
29
29
  const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);