lighthouse 9.5.0-dev.20221130 → 9.5.0-dev.20221202

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 (86) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/core/audits/bootup-time.js +1 -1
  3. package/core/audits/byte-efficiency/duplicated-javascript.js +1 -1
  4. package/core/audits/byte-efficiency/efficient-animated-content.js +1 -1
  5. package/core/audits/byte-efficiency/legacy-javascript.js +1 -1
  6. package/core/audits/byte-efficiency/modern-image-formats.js +1 -1
  7. package/core/audits/byte-efficiency/offscreen-images.js +1 -1
  8. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
  9. package/core/audits/byte-efficiency/total-byte-weight.js +1 -1
  10. package/core/audits/byte-efficiency/unminified-css.js +1 -1
  11. package/core/audits/byte-efficiency/unminified-javascript.js +1 -1
  12. package/core/audits/byte-efficiency/unused-css-rules.js +1 -1
  13. package/core/audits/byte-efficiency/unused-javascript.js +1 -1
  14. package/core/audits/byte-efficiency/uses-long-cache-ttl.js +1 -1
  15. package/core/audits/byte-efficiency/uses-optimized-images.js +1 -1
  16. package/core/audits/byte-efficiency/uses-responsive-images.js +1 -1
  17. package/core/audits/byte-efficiency/uses-text-compression.js +1 -1
  18. package/core/audits/content-width.js +1 -1
  19. package/core/audits/critical-request-chains.js +1 -1
  20. package/core/audits/csp-xss.js +1 -1
  21. package/core/audits/deprecations.js +1 -1
  22. package/core/audits/dobetterweb/charset.js +1 -1
  23. package/core/audits/dobetterweb/doctype.js +1 -1
  24. package/core/audits/dobetterweb/dom-size.js +1 -1
  25. package/core/audits/dobetterweb/geolocation-on-start.js +1 -1
  26. package/core/audits/dobetterweb/js-libraries.js +1 -1
  27. package/core/audits/dobetterweb/no-document-write.js +1 -1
  28. package/core/audits/dobetterweb/notification-on-start.js +1 -1
  29. package/core/audits/dobetterweb/password-inputs-can-be-pasted-into.js +1 -1
  30. package/core/audits/dobetterweb/uses-http2.js +1 -1
  31. package/core/audits/dobetterweb/uses-passive-event-listeners.js +1 -1
  32. package/core/audits/errors-in-console.js +1 -1
  33. package/core/audits/font-display.js +1 -1
  34. package/core/audits/image-aspect-ratio.js +1 -1
  35. package/core/audits/installable-manifest.js +1 -1
  36. package/core/audits/is-on-https.js +1 -1
  37. package/core/audits/largest-contentful-paint-element.js +1 -1
  38. package/core/audits/mainthread-work-breakdown.js +1 -1
  39. package/core/audits/manual/pwa-cross-browser.js +1 -1
  40. package/core/audits/manual/pwa-each-page-has-url.js +1 -1
  41. package/core/audits/manual/pwa-page-transitions.js +1 -1
  42. package/core/audits/maskable-icon.js +1 -1
  43. package/core/audits/metrics/first-contentful-paint.js +1 -1
  44. package/core/audits/metrics/first-meaningful-paint.js +1 -1
  45. package/core/audits/metrics/interactive.js +1 -1
  46. package/core/audits/metrics/largest-contentful-paint.js +1 -1
  47. package/core/audits/metrics/max-potential-fid.js +1 -1
  48. package/core/audits/metrics/speed-index.js +1 -1
  49. package/core/audits/metrics/total-blocking-time.js +1 -1
  50. package/core/audits/non-composited-animations.js +1 -1
  51. package/core/audits/preload-lcp-image.js +1 -1
  52. package/core/audits/redirects.js +1 -1
  53. package/core/audits/seo/canonical.js +1 -1
  54. package/core/audits/seo/font-size.js +1 -1
  55. package/core/audits/seo/hreflang.js +1 -1
  56. package/core/audits/seo/http-status-code.js +1 -1
  57. package/core/audits/seo/is-crawlable.js +1 -1
  58. package/core/audits/seo/link-text.js +1 -1
  59. package/core/audits/seo/manual/structured-data.js +1 -1
  60. package/core/audits/seo/meta-description.js +1 -1
  61. package/core/audits/seo/plugins.js +1 -1
  62. package/core/audits/seo/robots-txt.js +1 -1
  63. package/core/audits/seo/tap-targets.js +1 -1
  64. package/core/audits/server-response-time.js +1 -1
  65. package/core/audits/service-worker.js +1 -1
  66. package/core/audits/splash-screen.js +1 -1
  67. package/core/audits/themed-omnibox.js +1 -1
  68. package/core/audits/third-party-facades.js +1 -1
  69. package/core/audits/user-timings.js +1 -1
  70. package/core/audits/uses-rel-preconnect.js +1 -1
  71. package/core/audits/uses-rel-preload.js +1 -1
  72. package/core/audits/viewport.js +1 -1
  73. package/core/computed/metrics/largest-contentful-paint.js +1 -1
  74. package/core/config/default-config.js +3 -3
  75. package/core/lib/third-party-web.js +1 -1
  76. package/core/util.cjs +1 -1
  77. package/dist/report/bundle.esm.js +1 -1
  78. package/dist/report/flow.js +1 -1
  79. package/dist/report/standalone.js +1 -1
  80. package/package.json +2 -2
  81. package/report/renderer/util.js +1 -1
  82. package/report/test/generator/report-generator-test.js +4 -4
  83. package/report/test/renderer/dom-test.js +7 -0
  84. package/report/test/renderer/performance-category-renderer-test.js +1 -1
  85. package/shared/localization/locales/en-US.json +73 -73
  86. package/shared/localization/locales/en-XL.json +73 -73
package/CONTRIBUTING.md CHANGED
@@ -16,7 +16,7 @@ See [Lighthouse Architecture](./docs/architecture.md), our overview and tour of
16
16
 
17
17
  ## Contributing a patch
18
18
 
19
- If you have a contribution for our [documentation](https://web.dev/learn/#lighthouse), please submit it in the [web.dev repo](https://github.com/GoogleChrome/web.dev).
19
+ If you have a contribution for our [documentation](https://developer.chrome.com/docs/lighthouse/), please submit it in the [developer.chrome.com repo](https://github.com/GoogleChrome/developer.chrome.com).
20
20
 
21
21
  1. Submit an issue describing your proposed change.
22
22
  1. The maintainers will respond to your issue promptly.
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Description of a Lighthouse audit that tells the user that they should reduce the amount of time spent executing javascript and one method of doing so. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
20
20
  description: 'Consider reducing the time spent parsing, compiling, and executing JS. ' +
21
21
  'You may find delivering smaller JS payloads helps with this. ' +
22
- '[Learn how to reduce Javascript execution time](https://web.dev/bootup-time/).',
22
+ '[Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).',
23
23
  /** Label for the total time column in a data table; entries will be the number of milliseconds spent executing per resource loaded by the page. */
24
24
  columnTotal: 'Total CPU Time',
25
25
  /** Label for a time column in a data table; entries will be the number of milliseconds spent evaluating script for every script loaded by the page. */
@@ -20,7 +20,7 @@ const UIStrings = {
20
20
  description: 'Remove large, duplicate JavaScript modules from bundles ' +
21
21
  'to reduce unnecessary bytes consumed by network activity. ', // +
22
22
  // TODO: we need docs.
23
- // '[Learn more](https://web.dev/duplicated-javascript/).',
23
+ // '[Learn more](https://developer.chrome.com/docs/lighthouse/performance/duplicated-javascript/).',
24
24
  };
25
25
 
26
26
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -18,7 +18,7 @@ const UIStrings = {
18
18
  /** Description of a Lighthouse audit that tells the user *why* they should use video instead of GIF format for delivering animated content. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
19
19
  description: 'Large GIFs are inefficient for delivering animated content. Consider using ' +
20
20
  'MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save ' +
21
- 'network bytes. [Learn more about efficient video formats](https://web.dev/efficient-animated-content/)',
21
+ 'network bytes. [Learn more about efficient video formats](https://developer.chrome.com/docs/lighthouse/performance/efficient-animated-content/)',
22
22
  };
23
23
 
24
24
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -36,7 +36,7 @@ const UIStrings = {
36
36
  /** Title of a Lighthouse audit that tells the user about legacy polyfills and transforms used on the page. This is displayed in a list of audit titles that Lighthouse generates. */
37
37
  title: 'Avoid serving legacy JavaScript to modern browsers',
38
38
  // eslint-disable-next-line max-len
39
- // TODO: web.dev article. this codelab is good starting place: https://web.dev/codelab-serve-modern-code/
39
+ // TODO: developer.chrome.com article. this codelab is good starting place: https://web.dev/codelab-serve-modern-code/
40
40
  /** Description of a Lighthouse audit that tells the user about old JavaScript that is no longer needed. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
41
41
  description: 'Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren\'t necessary for modern browsers. For your bundled JavaScript, adopt a modern script deployment strategy using module/nomodule feature detection to reduce the amount of code shipped to modern browsers, while retaining support for legacy browsers. [Learn how to use modern JavaScript](https://web.dev/publish-modern-javascript/)',
42
42
  };
@@ -18,7 +18,7 @@ const UIStrings = {
18
18
  /** Description of a Lighthouse audit that tells the user *why* they should use newer and more efficient image formats. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
19
19
  description: 'Image formats like WebP and AVIF often provide better ' +
20
20
  'compression than PNG or JPEG, which means faster downloads and less data consumption. ' +
21
- '[Learn more about modern image formats](https://web.dev/uses-webp-images/).',
21
+ '[Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).',
22
22
  };
23
23
 
24
24
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -24,7 +24,7 @@ const UIStrings = {
24
24
  description:
25
25
  'Consider lazy-loading offscreen and hidden images after all critical resources have ' +
26
26
  'finished loading to lower time to interactive. ' +
27
- '[Learn how to defer offscreen images](https://web.dev/offscreen-images/).',
27
+ '[Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).',
28
28
  };
29
29
 
30
30
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -36,7 +36,7 @@ const UIStrings = {
36
36
  /** Description of a Lighthouse audit that tells the user *why* they should reduce or remove network resources that block the initial render of the page. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
37
37
  description: 'Resources are blocking the first paint of your page. Consider ' +
38
38
  'delivering critical JS/CSS inline and deferring all non-critical ' +
39
- 'JS/styles. [Learn how to eliminate render-blocking resources](https://web.dev/render-blocking-resources/).',
39
+ 'JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).',
40
40
  };
41
41
 
42
42
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -17,7 +17,7 @@ const UIStrings = {
17
17
  /** Description of a Lighthouse audit that tells the user *why* they should reduce the size of the network resources required by the page. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
18
18
  description:
19
19
  'Large network payloads cost users real money and are highly correlated with ' +
20
- 'long load times. [Learn how to reduce payload sizes](https://web.dev/total-byte-weight/).',
20
+ 'long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).',
21
21
  /** Used to summarize the total byte size of the page and all its network requests. The `{totalBytes}` placeholder will be replaced with the total byte sizes, shown in kibibytes (e.g. 142 KiB) */
22
22
  displayValue: 'Total size was {totalBytes, number, bytes}\xa0KiB',
23
23
  };
@@ -14,7 +14,7 @@ const UIStrings = {
14
14
  title: 'Minify CSS',
15
15
  /** Description of a Lighthouse audit that tells the user *why* they should minify (remove whitespace) the page's CSS code. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
16
16
  description: 'Minifying CSS files can reduce network payload sizes. ' +
17
- '[Learn how to minify CSS](https://web.dev/unminified-css/).',
17
+ '[Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/).',
18
18
  };
19
19
 
20
20
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -14,7 +14,7 @@ const UIStrings = {
14
14
  title: 'Minify JavaScript',
15
15
  /** Description of a Lighthouse audit that tells the user *why* they should minify the page’s JS code to reduce file size. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
16
16
  description: 'Minifying JavaScript files can reduce payload sizes and script parse time. ' +
17
- '[Learn how to minify JavaScript](https://web.dev/unminified-javascript/).',
17
+ '[Learn how to minify JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/).',
18
18
  };
19
19
 
20
20
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -14,7 +14,7 @@ const UIStrings = {
14
14
  /** Description of a Lighthouse audit that tells the user *why* they should defer loading any content in CSS that isn’t needed at page load. This is displayed after a user expands the section to see more. No word length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
15
15
  description: 'Reduce unused rules from stylesheets and defer CSS not used for ' +
16
16
  'above-the-fold content to decrease bytes consumed by network activity. ' +
17
- '[Learn how to reduce unused CSS](https://web.dev/unused-css-rules/).',
17
+ '[Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).',
18
18
  };
19
19
 
20
20
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -15,7 +15,7 @@ const UIStrings = {
15
15
  title: 'Reduce unused JavaScript',
16
16
  /** Description of a Lighthouse audit that tells the user *why* they should reduce JavaScript that is never needed/evaluated by the browser. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
17
17
  description: 'Reduce unused JavaScript and defer loading scripts until they are required to ' +
18
- 'decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://web.dev/unused-javascript/).',
18
+ 'decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).',
19
19
  };
20
20
 
21
21
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user *why* they need to adopt a long cache lifetime policy. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
22
22
  description:
23
23
  'A long cache lifetime can speed up repeat visits to your page. ' +
24
- '[Learn more about efficient cache policies](https://web.dev/uses-long-cache-ttl/).',
24
+ '[Learn more about efficient cache policies](https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/).',
25
25
  /** [ICU Syntax] Label for the audit identifying network resources with inefficient cache values. Clicking this will expand the audit to show the resources. */
26
26
  displayValue: `{itemCount, plural,
27
27
  =1 {1 resource found}
@@ -18,7 +18,7 @@ const UIStrings = {
18
18
  title: 'Efficiently encode images',
19
19
  /** Description of a Lighthouse audit that tells the user *why* they need to efficiently encode images. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
20
20
  description: 'Optimized images load faster and consume less cellular data. ' +
21
- '[Learn how to efficiently encode images](https://web.dev/uses-optimized-images/).',
21
+ '[Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).',
22
22
  };
23
23
 
24
24
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -26,7 +26,7 @@ const UIStrings = {
26
26
  description:
27
27
  'Serve images that are appropriately-sized to save cellular data ' +
28
28
  'and improve load time. ' +
29
- '[Learn how to size images](https://web.dev/uses-responsive-images/).',
29
+ '[Learn how to size images](https://developer.chrome.com/docs/lighthouse/performance/uses-responsive-images/).',
30
30
  };
31
31
 
32
32
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /** Description of a Lighthouse audit that tells the user *why* their text-based resources should be served with compression (like gzip). This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
20
20
  description: 'Text-based resources should be served with compression (gzip, deflate or' +
21
21
  ' brotli) to minimize total network bytes.' +
22
- ' [Learn more about text compression](https://web.dev/uses-text-compression/).',
22
+ ' [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).',
23
23
  };
24
24
 
25
25
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -15,7 +15,7 @@ const UIStrings = {
15
15
  /** Description of a Lighthouse audit that tells the user why they should care that a site's content size should match its viewport size, which is the size of the screen the site is displayed on. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
16
16
  description: 'If the width of your app\'s content doesn\'t match the width ' +
17
17
  'of the viewport, your app might not be optimized for mobile screens. ' +
18
- '[Learn how to size content for the viewport](https://web.dev/content-width/).',
18
+ '[Learn how to size content for the viewport](https://developer.chrome.com/docs/lighthouse/pwa/content-width/).',
19
19
  /**
20
20
  * @description Explanatory message stating that the viewport size and window size differ.
21
21
  * @example {100} innerWidth
@@ -16,7 +16,7 @@ const UIStrings = {
16
16
  'loaded with a high priority. Consider reducing ' +
17
17
  'the length of chains, reducing the download size of resources, or ' +
18
18
  'deferring the download of unnecessary resources to improve page load. ' +
19
- '[Learn how to avoid chaining critical requests](https://web.dev/critical-request-chains/).',
19
+ '[Learn how to avoid chaining critical requests](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains/).',
20
20
  /** [ICU Syntax] Label for an audit identifying the number of sequences of dependent network requests used to load the page. */
21
21
  displayValue: `{itemCount, plural,
22
22
  =1 {1 chain found}
@@ -17,7 +17,7 @@ const UIStrings = {
17
17
  /** Description of a Lighthouse audit that evaluates the security of a page's CSP. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. "CSP" stands for "Content Security Policy". "XSS" stands for "Cross Site Scripting". "CSP" and "XSS" do not need to be translated. */
18
18
  description: 'A strong Content Security Policy (CSP) significantly ' +
19
19
  'reduces the risk of cross-site scripting (XSS) attacks. ' +
20
- '[Learn how to use a CSP to prevent XSS](https://web.dev/csp-xss/)',
20
+ '[Learn how to use a CSP to prevent XSS](https://developer.chrome.com/docs/lighthouse/best-practices/csp-xss/)',
21
21
  /** Summary text for the results of a Lighthouse audit that evaluates the security of a page's CSP. This is displayed if no CSP is being enforced. "CSP" stands for "Content Security Policy". "CSP" does not need to be translated. */
22
22
  noCsp: 'No CSP found in enforcement mode',
23
23
  /** Message shown when one or more CSPs are defined in a <meta> tag. Shown in a table with a list of other CSP bypasses and warnings. "CSP" stands for "Content Security Policy". "CSP" and "HTTP" do not need to be translated. */
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  failureTitle: 'Uses deprecated APIs',
22
22
  /** Description of a Lighthouse audit that tells the user why they should not use deprecated APIs on their page. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
23
23
  description: 'Deprecated APIs will eventually be removed from the browser. ' +
24
- '[Learn more about deprecated APIs](https://web.dev/deprecations/).',
24
+ '[Learn more about deprecated APIs](https://developer.chrome.com/docs/lighthouse/best-practices/deprecations/).',
25
25
  /** [ICU Syntax] Label for the audit identifying the number of warnings generated by using deprecated APIs. */
26
26
  displayValue: `{itemCount, plural,
27
27
  =1 {1 warning found}
@@ -24,7 +24,7 @@ const UIStrings = {
24
24
  /** Description of a Lighthouse audit that tells the user why the charset needs to be defined early on. */
25
25
  description: 'A character encoding declaration is required. It can be done with a `<meta>` tag ' +
26
26
  'in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. ' +
27
- '[Learn more about declaring the character encoding](https://web.dev/charset/).',
27
+ '[Learn more about declaring the character encoding](https://developer.chrome.com/docs/lighthouse/best-practices/charset/).',
28
28
  };
29
29
 
30
30
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -15,7 +15,7 @@ const UIStrings = {
15
15
  /** Description of a Lighthouse audit that tells the user why they should define an HTML doctype. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
16
16
  description: 'Specifying a doctype prevents the browser ' +
17
17
  'from switching to quirks-mode. ' +
18
- '[Learn more about the doctype declaration](https://web.dev/doctype/).',
18
+ '[Learn more about the doctype declaration](https://developer.chrome.com/docs/lighthouse/best-practices/doctype/).',
19
19
  /** Explanatory message stating that the document has no doctype. */
20
20
  explanationNoDoctype: 'Document must contain a doctype',
21
21
  /** Explanatory message stating that the document has wrong doctype */
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  /** Description of a Lighthouse audit that tells the user *why* they should reduce the size of the web page's DOM. The size of a DOM is characterized by the total number of DOM elements and greatest DOM depth. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
23
23
  description: 'A large DOM will increase memory usage, cause longer ' +
24
24
  '[style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), ' +
25
- 'and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://web.dev/dom-size/).',
25
+ 'and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).',
26
26
  /** Table column header for the type of statistic. These statistics describe how big the DOM is (count of DOM elements, children, depth). */
27
27
  columnStatistic: 'Statistic',
28
28
  /** Table column header for the observed value of the DOM statistic. */
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user why they should not ask for geolocation permissions on load. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
22
22
  description: 'Users are mistrustful of or confused by sites that request their ' +
23
23
  'location without context. Consider tying the request to a user action instead. ' +
24
- '[Learn more about the geolocation permission](https://web.dev/geolocation-on-start/).',
24
+ '[Learn more about the geolocation permission](https://developer.chrome.com/docs/lighthouse/best-practices/geolocation-on-start/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -16,7 +16,7 @@ const UIStrings = {
16
16
  /** Title of a Lighthouse audit that provides detail on the Javascript libraries that are used on the page. */
17
17
  title: 'Detected JavaScript libraries',
18
18
  /** Description of a Lighthouse audit that tells the user what this audit is detecting. This is displayed after a user expands the section to see more. No character length limits. */
19
- description: 'All front-end JavaScript libraries detected on the page. [Learn more about this JavaScript library detection diagnostic audit](https://web.dev/js-libraries/).',
19
+ description: 'All front-end JavaScript libraries detected on the page. [Learn more about this JavaScript library detection diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/js-libraries/).',
20
20
  /** Label for a column in a data table; entries will be the version numbers of the detected Javascript libraries. */
21
21
  columnVersion: 'Version',
22
22
  };
@@ -38,7 +38,7 @@ const UIStrings = {
38
38
  /** Description of a Lighthouse audit that tells the user why they should avoid `document.write`. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
39
39
  description: 'For users on slow connections, external scripts dynamically injected via ' +
40
40
  '`document.write()` can delay page load by tens of seconds. ' +
41
- '[Learn how to avoid document.write()](https://web.dev/no-document-write/).',
41
+ '[Learn how to avoid document.write()](https://developer.chrome.com/docs/lighthouse/best-practices/no-document-write/).',
42
42
  };
43
43
 
44
44
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user why they should not ask for notification permission on load. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
22
22
  description: 'Users are mistrustful of or confused by sites that request to send ' +
23
23
  'notifications without context. Consider tying the request to user gestures ' +
24
- 'instead. [Learn more about responsibly getting permission for notifications](https://web.dev/notification-on-start/).',
24
+ 'instead. [Learn more about responsibly getting permission for notifications](https://developer.chrome.com/docs/lighthouse/best-practices/notification-on-start/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -14,7 +14,7 @@ const UIStrings = {
14
14
  failureTitle: 'Prevents users to paste into password fields',
15
15
  /** Description of a Lighthouse audit that tells the user why they should allow pasting of content into password fields. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
16
16
  description: 'Preventing password pasting undermines good security policy. ' +
17
- '[Learn more about user-friendly password fields](https://web.dev/password-inputs-can-be-pasted-into/).',
17
+ '[Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/).',
18
18
  };
19
19
 
20
20
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -28,7 +28,7 @@ const UIStrings = {
28
28
  title: 'Use HTTP/2',
29
29
  /** Description of a Lighthouse audit that tells the user why they should use HTTP/2. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
30
30
  description: 'HTTP/2 offers many benefits over HTTP/1.1, including binary headers and ' +
31
- 'multiplexing. [Learn more about HTTP/2](https://web.dev/uses-http2/).',
31
+ 'multiplexing. [Learn more about HTTP/2](https://developer.chrome.com/docs/lighthouse/best-practices/uses-http2/).',
32
32
  /** [ICU Syntax] Label identifying the number of network requests that were not served with HTTP/2. */
33
33
  displayValue: `{itemCount, plural,
34
34
  =1 {1 request not served via HTTP/2}
@@ -21,7 +21,7 @@ const UIStrings = {
21
21
  /** Description of a Lighthouse audit that tells the user why they should use passive event listeners on the page. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
22
22
  description: 'Consider marking your touch and wheel event listeners as `passive` ' +
23
23
  'to improve your page\'s scroll performance. ' +
24
- '[Learn more about adopting passive event listeners](https://web.dev/uses-passive-event-listeners/).',
24
+ '[Learn more about adopting passive event listeners](https://developer.chrome.com/docs/lighthouse/best-practices/uses-passive-event-listeners/).',
25
25
  };
26
26
 
27
27
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -23,7 +23,7 @@ const UIStrings = {
23
23
  /** Description of a Lighthouse audit that tells the user why errors being logged to the devtools console are a cause for concern and so should be fixed. This is displayed after a user expands the section to see more. No character length limits. */
24
24
  description: 'Errors logged to the console indicate unresolved problems. ' +
25
25
  'They can come from network request failures and other browser concerns. ' +
26
- '[Learn more about this errors in console diagnostic audit](https://web.dev/errors-in-console/)',
26
+ '[Learn more about this errors in console diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/errors-in-console/)',
27
27
  };
28
28
 
29
29
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -23,7 +23,7 @@ const UIStrings = {
23
23
  description:
24
24
  'Leverage the `font-display` CSS feature to ensure text is user-visible while ' +
25
25
  'webfonts are loading. ' +
26
- '[Learn more about `font-display`](https://web.dev/font-display/).',
26
+ '[Learn more about `font-display`](https://developer.chrome.com/docs/lighthouse/performance/font-display/).',
27
27
  /**
28
28
  * @description [ICU Syntax] A warning message that is shown when Lighthouse couldn't automatically check some of the page's fonts, telling the user that they will need to manually check the fonts coming from a certain URL origin.
29
29
  * @example {https://font.cdn.com/} fontOrigin
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  failureTitle: 'Displays images with incorrect aspect ratio',
23
23
  /** Description of a Lighthouse audit that tells the user why they should maintain the correct aspect ratios for all images. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
24
24
  description: 'Image display dimensions should match natural aspect ratio. ' +
25
- '[Learn more about image aspect ratio](https://web.dev/image-aspect-ratio/).',
25
+ '[Learn more about image aspect ratio](https://developer.chrome.com/docs/lighthouse/best-practices/image-aspect-ratio/).',
26
26
  /** Label for a column in a data table; entries in the column will be the numeric aspect ratio of an image as displayed in a web page. */
27
27
  columnDisplayed: 'Aspect Ratio (Displayed)',
28
28
  /** Label for a column in a data table; entries in the column will be the numeric aspect ratio of the raw (actual) image. */
@@ -15,7 +15,7 @@ const UIStrings = {
15
15
  /** Title of a Lighthouse audit that provides detail on if a website is installable as an application. This descriptive title is shown to users when a webapp is not installable. */
16
16
  'failureTitle': 'Web app manifest or service worker do not meet the installability requirements',
17
17
  /** Description of a Lighthouse audit that tells the user why installability is important for webapps. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
18
- 'description': `Service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. With proper service worker and manifest implementations, browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more about manifest installability requirements](https://web.dev/installable-manifest/).`,
18
+ 'description': `Service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. With proper service worker and manifest implementations, browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more about manifest installability requirements](https://developer.chrome.com/docs/lighthouse/pwa/installable-manifest/).`,
19
19
  /** Description Table column header for the observed value of the Installability failure reason statistic. */
20
20
  'columnValue': 'Failure reason',
21
21
  /**
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  'over HTTPS. HTTPS prevents intruders from tampering with or passively listening ' +
23
23
  'in on the communications between your app and your users, and is a prerequisite for ' +
24
24
  'HTTP/2 and many new web platform APIs. ' +
25
- '[Learn more about HTTPS](https://web.dev/is-on-https/).',
25
+ '[Learn more about HTTPS](https://developer.chrome.com/docs/lighthouse/pwa/is-on-https/).',
26
26
  /** [ICU Syntax] Label identifying the number of insecure network requests found by an audit of a web page. */
27
27
  displayValue: `{itemCount, plural,
28
28
  =1 {1 insecure request found}
@@ -12,7 +12,7 @@ const UIStrings = {
12
12
  title: 'Largest Contentful Paint element',
13
13
  /** Description of a Lighthouse audit that tells the user that the element shown was determined to be the Largest Contentful Paint. */
14
14
  description: 'This is the largest contentful element painted within the viewport. ' +
15
- '[Learn more about the Largest Contentful Paint element](https://web.dev/lighthouse-largest-contentful-paint/)',
15
+ '[Learn more about the Largest Contentful Paint element](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)',
16
16
  };
17
17
 
18
18
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -22,7 +22,7 @@ const UIStrings = {
22
22
  /** Description of a Lighthouse audit that tells the user *why* they should reduce JS execution times. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
23
23
  description: 'Consider reducing the time spent parsing, compiling and executing JS. ' +
24
24
  'You may find delivering smaller JS payloads helps with this. ' +
25
- '[Learn how to minimize main-thread work](https://web.dev/mainthread-work-breakdown/)',
25
+ '[Learn how to minimize main-thread work](https://developer.chrome.com/docs/lighthouse/performance/mainthread-work-breakdown/)',
26
26
  /** Label for the Main Thread Category column in data tables, rows will have a main thread Category and main thread Task Name. */
27
27
  columnCategory: 'Category',
28
28
  };
@@ -13,7 +13,7 @@ const UIStrings = {
13
13
  title: 'Site works cross-browser',
14
14
  /** Description of a Lighthouse audit that tells the user why they should make sites work across different browsers. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
15
15
  description: 'To reach the most number of users, sites should work across ' +
16
- 'every major browser. [Learn about cross-browser compatibility](https://web.dev/pwa-cross-browser/).',
16
+ 'every major browser. [Learn about cross-browser compatibility](https://developer.chrome.com/docs/lighthouse/pwa/pwa-cross-browser/).',
17
17
  };
18
18
 
19
19
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -12,7 +12,7 @@ const UIStrings = {
12
12
  title: 'Each page has a URL',
13
13
  /** Description of a Lighthouse audit that tells the user why they should use unique URLs for each web page. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
14
14
  description: 'Ensure individual pages are deep linkable via URL and that URLs are ' +
15
- 'unique for the purpose of shareability on social media. [Learn more about providing deep links](https://web.dev/pwa-each-page-has-url/).',
15
+ 'unique for the purpose of shareability on social media. [Learn more about providing deep links](https://developer.chrome.com/docs/lighthouse/pwa/pwa-each-page-has-url/).',
16
16
  };
17
17
 
18
18
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -12,7 +12,7 @@ const UIStrings = {
12
12
  title: 'Page transitions don\'t feel like they block on the network',
13
13
  /** Description of a Lighthouse audit that tells the user why they should make transitions in their web app feel fast. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
14
14
  description: 'Transitions should feel snappy as you tap around, even on a slow network. ' +
15
- 'This experience is key to a user\'s perception of performance. [Learn more about page transitions](https://web.dev/pwa-page-transitions/).',
15
+ 'This experience is key to a user\'s perception of performance. [Learn more about page transitions](https://developer.chrome.com/docs/lighthouse/pwa/pwa-page-transitions/).',
16
16
  };
17
17
 
18
18
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -16,7 +16,7 @@ const UIStrings = {
16
16
  /** Description of a Lighthouse audit that tells the user why they their manifest should have at least one maskable icon. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
17
17
  description: 'A maskable icon ensures that the image fills the entire ' +
18
18
  'shape without being letterboxed when installing ' +
19
- 'the app on a device. [Learn about maskable manifest icons](https://web.dev/maskable-icon-audit/).',
19
+ 'the app on a device. [Learn about maskable manifest icons](https://developer.chrome.com/docs/lighthouse/pwa/maskable-icon-audit/).',
20
20
  };
21
21
 
22
22
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -11,7 +11,7 @@ import {FirstContentfulPaint as ComputedFcp} from '../../computed/metrics/first-
11
11
  const UIStrings = {
12
12
  /** Description of the First Contentful Paint (FCP) metric, which marks the time at which the first text or image is painted by the browser. This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
13
13
  description: 'First Contentful Paint marks the time at which the first text or image is ' +
14
- 'painted. [Learn more about the First Contentful Paint metric](https://web.dev/first-contentful-paint/).',
14
+ 'painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/).',
15
15
  };
16
16
 
17
17
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -11,7 +11,7 @@ import {FirstMeaningfulPaint as ComputedFmp} from '../../computed/metrics/first-
11
11
  const UIStrings = {
12
12
  /** Description of the First Meaningful Paint (FMP) metric, which marks the time at which a majority of the content has been painted by the browser. This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
13
13
  description: 'First Meaningful Paint measures when the primary content of a page is ' +
14
- 'visible. [Learn more about the First Meaningful Paint metric](https://web.dev/first-meaningful-paint/).',
14
+ 'visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/).',
15
15
  };
16
16
 
17
17
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -11,7 +11,7 @@ import {Interactive} from '../../computed/metrics/interactive.js';
11
11
  const UIStrings = {
12
12
  /** Description of the Time to Interactive (TTI) metric, which evaluates when a page has completed its primary network activity and main thread work. This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
13
13
  description: 'Time to Interactive is the amount of time it takes for the page to become fully ' +
14
- 'interactive. [Learn more about the Time to Interactive metric](https://web.dev/interactive/).',
14
+ 'interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).',
15
15
  };
16
16
 
17
17
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -11,7 +11,7 @@ import {LargestContentfulPaint as ComputedLcp} from '../../computed/metrics/larg
11
11
  const UIStrings = {
12
12
  /** Description of the Largest Contentful Paint (LCP) metric, which marks the time at which the largest text or image is painted by the browser. This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
13
13
  description: 'Largest Contentful Paint marks the time at which the largest text or image is ' +
14
- `painted. [Learn more about the Largest Contentful Paint metric](https://web.dev/lighthouse-largest-contentful-paint/)`,
14
+ `painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)`,
15
15
  };
16
16
 
17
17
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -12,7 +12,7 @@ const UIStrings = {
12
12
  /** Description of the Maximum Potential First Input Delay metric that marks the maximum estimated time between the page receiving input (a user clicking, tapping, or typing) and the page responding. This description is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
13
13
  description: 'The maximum potential First Input Delay that your users could experience is the ' +
14
14
  'duration of the longest task. ' +
15
- '[Learn more about the Maximum Potential First Input Delay metric](https://web.dev/lighthouse-max-potential-fid/).',
15
+ '[Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/).',
16
16
  };
17
17
 
18
18
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -11,7 +11,7 @@ import {SpeedIndex as ComputedSi} from '../../computed/metrics/speed-index.js';
11
11
  const UIStrings = {
12
12
  /** Description of the Speed Index metric, which summarizes how quickly the page looked visually complete. This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
13
13
  description: 'Speed Index shows how quickly the contents of a page are visibly populated. ' +
14
- '[Learn more about the Speed Index metric](https://web.dev/speed-index/).',
14
+ '[Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).',
15
15
  };
16
16
 
17
17
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -12,7 +12,7 @@ const UIStrings = {
12
12
  /** Description of the Total Blocking Time (TBT) metric, which calculates the total duration of blocking time for a web page. Blocking times are time periods when the page would be blocked (prevented) from responding to user input (clicks, taps, and keypresses will feel slow to respond). This is displayed within a tooltip when the user hovers on the metric name to see more. No character length limits.*/
13
13
  description: 'Sum of all time periods between FCP and Time to Interactive, ' +
14
14
  'when task length exceeded 50ms, expressed in milliseconds. ' +
15
- '[Learn more about the Total Blocking Time metric](https://web.dev/lighthouse-total-blocking-time/).',
15
+ '[Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).',
16
16
  };
17
17
 
18
18
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -18,7 +18,7 @@ const UIStrings = {
18
18
  title: 'Avoid non-composited animations',
19
19
  /** Description of a diagnostic LH audit that shows the user animations that are not composited. Janky means frames may be skipped and the animation will look bad. Acceptable alternatives here might be 'poor', or 'slow'. */
20
20
  description: 'Animations which are not composited can be janky and increase CLS. ' +
21
- '[Learn how to avoid non-composited animations](https://web.dev/non-composited-animations)',
21
+ '[Learn how to avoid non-composited animations](https://developer.chrome.com/docs/lighthouse/performance/non-composited-animations/)',
22
22
  /** [ICU Syntax] Label identifying the number of animated elements that are not composited. */
23
23
  displayValue: `{itemCount, plural,
24
24
  =1 {# animated element found}
@@ -17,7 +17,7 @@ const UIStrings = {
17
17
  title: 'Preload Largest Contentful Paint image',
18
18
  /** Description of a lighthouse audit that tells a user to preload an image in order to improve their LCP time. */
19
19
  description: 'If the LCP element is dynamically added to the page, you should preload the ' +
20
- 'image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/optimize-lcp/#preload-important-resources).',
20
+ 'image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/optimize-lcp/#optimize-when-the-resource-is-discovered).',
21
21
  };
22
22
 
23
23
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -16,7 +16,7 @@ const UIStrings = {
16
16
  /** Imperative title of a Lighthouse audit that tells the user to eliminate the redirects taken through multiple URLs to load the page. This is shown in a list of audits that Lighthouse generates. */
17
17
  title: 'Avoid multiple page redirects',
18
18
  /** Description of a Lighthouse audit that tells users why they should reduce the number of server-side redirects on their page. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
19
- description: 'Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://web.dev/redirects/).',
19
+ description: 'Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/).',
20
20
  };
21
21
 
22
22
  const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
@@ -16,7 +16,7 @@ const UIStrings = {
16
16
  failureTitle: 'Document does not have a valid `rel=canonical`',
17
17
  /** Description of a Lighthouse audit that tells the user *why* they need to have a valid rel=canonical link. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
18
18
  description: 'Canonical links suggest which URL to show in search results. ' +
19
- '[Learn more about canonical links](https://web.dev/canonical/).',
19
+ '[Learn more about canonical links](https://developer.chrome.com/docs/lighthouse/seo/canonical/).',
20
20
  /**
21
21
  * @description Explanatory message stating that there was a failure in an audit caused by multiple URLs conflicting with each other.
22
22
  * @example {https://example.com, https://example2.com} urlList