lighthouse 9.5.0-dev.20220806 → 9.5.0-dev.20220809
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.
- package/cli/test/smokehouse/readme.md +6 -2
- package/cli/test/smokehouse/report-assert-test.js +34 -0
- package/cli/test/smokehouse/report-assert.js +28 -8
- package/core/audits/accessibility/accesskeys.js +1 -1
- package/core/audits/accessibility/aria-allowed-attr.js +1 -1
- package/core/audits/accessibility/aria-command-name.js +1 -1
- package/core/audits/accessibility/aria-hidden-body.js +1 -1
- package/core/audits/accessibility/aria-hidden-focus.js +1 -1
- package/core/audits/accessibility/aria-input-field-name.js +1 -1
- package/core/audits/accessibility/aria-meter-name.js +1 -1
- package/core/audits/accessibility/aria-progressbar-name.js +1 -1
- package/core/audits/accessibility/aria-required-attr.js +1 -1
- package/core/audits/accessibility/aria-required-children.js +1 -1
- package/core/audits/accessibility/aria-required-parent.js +1 -1
- package/core/audits/accessibility/aria-roles.js +1 -1
- package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
- package/core/audits/accessibility/aria-tooltip-name.js +1 -1
- package/core/audits/accessibility/aria-treeitem-name.js +1 -1
- package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
- package/core/audits/accessibility/aria-valid-attr.js +1 -1
- package/core/audits/accessibility/axe-audit.js +1 -1
- package/core/audits/accessibility/button-name.js +1 -1
- package/core/audits/accessibility/bypass.js +1 -1
- package/core/audits/accessibility/color-contrast.js +1 -1
- package/core/audits/accessibility/definition-list.js +1 -1
- package/core/audits/accessibility/dlitem.js +1 -1
- package/core/audits/accessibility/document-title.js +1 -1
- package/core/audits/accessibility/duplicate-id-active.js +1 -1
- package/core/audits/accessibility/duplicate-id-aria.js +1 -1
- package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
- package/core/audits/accessibility/frame-title.js +1 -1
- package/core/audits/accessibility/heading-order.js +1 -1
- package/core/audits/accessibility/html-has-lang.js +1 -1
- package/core/audits/accessibility/html-lang-valid.js +1 -1
- package/core/audits/accessibility/image-alt.js +1 -1
- package/core/audits/accessibility/input-image-alt.js +1 -1
- package/core/audits/accessibility/label.js +1 -1
- package/core/audits/accessibility/link-name.js +1 -1
- package/core/audits/accessibility/list.js +1 -1
- package/core/audits/accessibility/listitem.js +1 -1
- package/core/audits/accessibility/meta-refresh.js +1 -1
- package/core/audits/accessibility/meta-viewport.js +1 -1
- package/core/audits/accessibility/object-alt.js +1 -1
- package/core/audits/accessibility/tabindex.js +1 -1
- package/core/audits/accessibility/td-headers-attr.js +1 -1
- package/core/audits/accessibility/th-has-data-cells.js +1 -1
- package/core/audits/accessibility/valid-lang.js +1 -1
- package/core/audits/accessibility/video-caption.js +1 -1
- package/core/audits/autocomplete.js +1 -1
- package/core/audits/bootup-time.js +1 -1
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +1 -1
- package/core/audits/byte-efficiency/duplicated-javascript.js +1 -1
- package/core/audits/byte-efficiency/efficient-animated-content.js +1 -1
- package/core/audits/byte-efficiency/legacy-javascript.js +1 -1
- package/core/audits/byte-efficiency/modern-image-formats.js +1 -1
- package/core/audits/byte-efficiency/offscreen-images.js +1 -1
- package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
- package/core/audits/byte-efficiency/total-byte-weight.js +1 -1
- package/core/audits/byte-efficiency/unminified-css.js +1 -1
- package/core/audits/byte-efficiency/unminified-javascript.js +1 -1
- package/core/audits/byte-efficiency/unused-css-rules.js +1 -1
- package/core/audits/byte-efficiency/unused-javascript.js +1 -1
- package/core/audits/byte-efficiency/uses-long-cache-ttl.js +1 -1
- package/core/audits/byte-efficiency/uses-optimized-images.js +1 -1
- package/core/audits/byte-efficiency/uses-responsive-images-snapshot.js +1 -1
- package/core/audits/byte-efficiency/uses-responsive-images.js +1 -1
- package/core/audits/byte-efficiency/uses-text-compression.js +1 -1
- package/core/audits/content-width.js +1 -1
- package/core/audits/critical-request-chains.js +1 -1
- package/core/audits/csp-xss.js +1 -1
- package/core/audits/deprecations.js +1 -1
- package/core/audits/dobetterweb/charset.js +1 -1
- package/core/audits/dobetterweb/doctype.js +1 -1
- package/core/audits/dobetterweb/dom-size.js +1 -1
- package/core/audits/dobetterweb/geolocation-on-start.js +1 -1
- package/core/audits/dobetterweb/inspector-issues.js +1 -1
- package/core/audits/dobetterweb/js-libraries.js +1 -1
- package/core/audits/dobetterweb/no-document-write.js +1 -1
- package/core/audits/dobetterweb/no-vulnerable-libraries.js +1 -1
- package/core/audits/dobetterweb/notification-on-start.js +1 -1
- package/core/audits/dobetterweb/password-inputs-can-be-pasted-into.js +1 -1
- package/core/audits/dobetterweb/uses-http2.js +1 -1
- package/core/audits/dobetterweb/uses-passive-event-listeners.js +1 -1
- package/core/audits/errors-in-console.js +1 -1
- package/core/audits/font-display.js +1 -1
- package/core/audits/image-aspect-ratio.js +1 -1
- package/core/audits/image-size-responsive.js +1 -1
- package/core/audits/installable-manifest.js +1 -1
- package/core/audits/is-on-https.js +1 -1
- package/core/audits/largest-contentful-paint-element.js +1 -1
- package/core/audits/layout-shift-elements.js +1 -1
- package/core/audits/lcp-lazy-loaded.js +1 -1
- package/core/audits/long-tasks.js +1 -1
- package/core/audits/mainthread-work-breakdown.js +1 -1
- package/core/audits/manual/pwa-cross-browser.js +1 -1
- package/core/audits/manual/pwa-each-page-has-url.js +1 -1
- package/core/audits/manual/pwa-page-transitions.js +1 -1
- package/core/audits/maskable-icon.js +1 -1
- package/core/audits/metrics/cumulative-layout-shift.js +1 -1
- package/core/audits/metrics/experimental-interaction-to-next-paint.js +1 -1
- package/core/audits/metrics/first-contentful-paint.js +1 -1
- package/core/audits/metrics/first-meaningful-paint.js +1 -1
- package/core/audits/metrics/interactive.js +1 -1
- package/core/audits/metrics/largest-contentful-paint.js +1 -1
- package/core/audits/metrics/max-potential-fid.js +1 -1
- package/core/audits/metrics/speed-index.js +1 -1
- package/core/audits/metrics/total-blocking-time.js +1 -1
- package/core/audits/network-rtt.js +1 -1
- package/core/audits/network-server-latency.js +1 -1
- package/core/audits/no-unload-listeners.js +1 -1
- package/core/audits/non-composited-animations.js +1 -1
- package/core/audits/performance-budget.js +1 -1
- package/core/audits/predictive-perf.js +1 -1
- package/core/audits/preload-fonts.js +1 -1
- package/core/audits/preload-lcp-image.js +1 -1
- package/core/audits/redirects.js +1 -1
- package/core/audits/resource-summary.js +1 -1
- package/core/audits/seo/canonical.js +1 -1
- package/core/audits/seo/crawlable-anchors.js +1 -1
- package/core/audits/seo/font-size.js +1 -1
- package/core/audits/seo/hreflang.js +1 -1
- package/core/audits/seo/http-status-code.js +1 -1
- package/core/audits/seo/is-crawlable.js +1 -1
- package/core/audits/seo/link-text.js +1 -1
- package/core/audits/seo/manual/structured-data.js +1 -1
- package/core/audits/seo/meta-description.js +1 -1
- package/core/audits/seo/plugins.js +1 -1
- package/core/audits/seo/robots-txt.js +1 -1
- package/core/audits/seo/tap-targets.js +1 -1
- package/core/audits/server-response-time.js +1 -1
- package/core/audits/service-worker.js +1 -1
- package/core/audits/splash-screen.js +1 -1
- package/core/audits/themed-omnibox.js +1 -1
- package/core/audits/third-party-facades.js +1 -1
- package/core/audits/third-party-summary.js +1 -1
- package/core/audits/timing-budget.js +1 -1
- package/core/audits/unsized-images.js +1 -1
- package/core/audits/user-timings.js +1 -1
- package/core/audits/uses-rel-preconnect.js +1 -1
- package/core/audits/uses-rel-preload.js +1 -1
- package/core/audits/valid-source-maps.js +1 -1
- package/core/audits/viewport.js +1 -1
- package/core/audits/work-during-interaction.js +1 -1
- package/core/config/default-config.js +1 -1
- package/core/gather/driver/environment.js +1 -1
- package/core/gather/driver/navigation.js +1 -1
- package/core/gather/driver/storage.js +1 -1
- package/core/lib/csp-evaluator.js +1 -1
- package/core/lib/deprecations-strings.js +1 -1
- package/core/lib/i18n/i18n.js +0 -2
- package/core/lib/lh-error.js +1 -1
- package/core/lib/navigation-error.js +1 -1
- package/core/lib/stack-packs.js +1 -1
- package/package.json +3 -3
- package/shared/test/localization/format-test.js +8 -8
|
@@ -32,7 +32,7 @@ const UIStrings = {
|
|
|
32
32
|
'Try auditing the page in incognito mode or from a Chrome profile without extensions.',
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
const str_ = i18n.
|
|
35
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
36
36
|
|
|
37
37
|
class BootupTime extends Audit {
|
|
38
38
|
/**
|
|
@@ -13,7 +13,7 @@ import NetworkRecords from '../../computed/network-records.js';
|
|
|
13
13
|
import LoadSimulator from '../../computed/load-simulator.js';
|
|
14
14
|
import PageDependencyGraph from '../../computed/page-dependency-graph.js';
|
|
15
15
|
|
|
16
|
-
const str_ = i18n.
|
|
16
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, {});
|
|
17
17
|
|
|
18
18
|
/** @typedef {import('../../lib/dependency-graph/simulator/simulator').Simulator} Simulator */
|
|
19
19
|
/** @typedef {import('../../lib/dependency-graph/base-node.js').Node} Node */
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
// '[Learn more](https://web.dev/duplicated-javascript/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
const IGNORE_THRESHOLD_IN_BYTES = 1024;
|
|
31
31
|
|
|
@@ -21,7 +21,7 @@ const UIStrings = {
|
|
|
21
21
|
'network bytes. [Learn more about efficient video formats](https://web.dev/efficient-animated-content/)',
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const str_ = i18n.
|
|
24
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
25
25
|
|
|
26
26
|
// If GIFs are above this size, we'll flag them
|
|
27
27
|
// See https://github.com/GoogleChrome/lighthouse/pull/4885#discussion_r178406623 and https://github.com/GoogleChrome/lighthouse/issues/4696#issuecomment-370979920
|
|
@@ -43,7 +43,7 @@ const UIStrings = {
|
|
|
43
43
|
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/)',
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
const str_ = i18n.
|
|
46
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Takes a list of patterns (consisting of a name identifier and a RegExp expression string)
|
|
@@ -21,7 +21,7 @@ const UIStrings = {
|
|
|
21
21
|
'[Learn more about modern image formats](https://web.dev/uses-webp-images/).',
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const str_ = i18n.
|
|
24
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
25
25
|
|
|
26
26
|
const IGNORE_THRESHOLD_IN_BYTES = 8192;
|
|
27
27
|
|
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
'[Learn how to defer offscreen images](https://web.dev/offscreen-images/).',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
// See https://github.com/GoogleChrome/lighthouse/issues/10471 for discussion about the thresholds here.
|
|
33
33
|
const ALLOWABLE_OFFSCREEN_IN_PX = 100;
|
|
@@ -39,7 +39,7 @@ const UIStrings = {
|
|
|
39
39
|
'JS/styles. [Learn how to eliminate render-blocking resources](https://web.dev/render-blocking-resources/).',
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
const str_ = i18n.
|
|
42
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Given a simulation's nodeTimings, return an object with the nodes/timing keyed by network URL
|
|
@@ -23,7 +23,7 @@ const UIStrings = {
|
|
|
23
23
|
displayValue: 'Total size was {totalBytes, number, bytes}\xa0KiB',
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
const str_ = i18n.
|
|
26
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
27
27
|
|
|
28
28
|
class TotalByteWeight extends Audit {
|
|
29
29
|
/**
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
'[Learn how to minify CSS](https://web.dev/unminified-css/).',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
const IGNORE_THRESHOLD_IN_PERCENT = 5;
|
|
24
24
|
const IGNORE_THRESHOLD_IN_BYTES = 2048;
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
'[Learn how to minify JavaScript](https://web.dev/unminified-javascript/).',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
const IGNORE_THRESHOLD_IN_PERCENT = 10;
|
|
24
24
|
const IGNORE_THRESHOLD_IN_BYTES = 2048;
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
'[Learn how to reduce unused CSS](https://web.dev/unused-css-rules/).',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
// Allow 10KiB of unused CSS to permit `:hover` and other styles not used on a non-interactive load.
|
|
24
24
|
// @see https://github.com/GoogleChrome/lighthouse/issues/9353 for more discussion.
|
|
@@ -19,7 +19,7 @@ const UIStrings = {
|
|
|
19
19
|
'decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://web.dev/unused-javascript/).',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const str_ = i18n.
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
23
|
|
|
24
24
|
const UNUSED_BYTES_IGNORE_THRESHOLD = 20 * 1024;
|
|
25
25
|
const UNUSED_BYTES_IGNORE_BUNDLE_SOURCE_THRESHOLD = 512;
|
|
@@ -29,7 +29,7 @@ const UIStrings = {
|
|
|
29
29
|
}`,
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const str_ = i18n.
|
|
32
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
33
33
|
|
|
34
34
|
// Ignore assets that have very high likelihood of cache hit
|
|
35
35
|
const IGNORE_THRESHOLD_IN_PERCENT = 0.925;
|
|
@@ -21,7 +21,7 @@ const UIStrings = {
|
|
|
21
21
|
'[Learn how to efficiently encode images](https://web.dev/uses-optimized-images/).',
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const str_ = i18n.
|
|
24
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
25
25
|
|
|
26
26
|
const IGNORE_THRESHOLD_IN_BYTES = 4096;
|
|
27
27
|
|
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
columnActualDimensions: 'Actual dimensions',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
// Based on byte threshold of 4096, with 3 bytes per pixel.
|
|
33
33
|
const IGNORE_THRESHOLD_IN_PIXELS = 1365;
|
|
@@ -29,7 +29,7 @@ const UIStrings = {
|
|
|
29
29
|
'[Learn how to size images](https://web.dev/uses-responsive-images/).',
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const str_ = i18n.
|
|
32
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
33
33
|
|
|
34
34
|
const IGNORE_THRESHOLD_IN_BYTES = 4096;
|
|
35
35
|
|
|
@@ -22,7 +22,7 @@ const UIStrings = {
|
|
|
22
22
|
' [Learn more about text compression](https://web.dev/uses-text-compression/).',
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const str_ = i18n.
|
|
25
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
26
26
|
|
|
27
27
|
const IGNORE_THRESHOLD_IN_BYTES = 1400;
|
|
28
28
|
const IGNORE_THRESHOLD_IN_PERCENT = 0.1;
|
package/core/audits/csp-xss.js
CHANGED
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
'[Learn more about declaring the character encoding](https://web.dev/charset/).',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
const CONTENT_TYPE_HEADER = 'content-type';
|
|
33
33
|
// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names (https://www.iana.org/assignments/character-sets/character-sets.xhtml)
|
|
@@ -29,7 +29,7 @@ const UIStrings = {
|
|
|
29
29
|
explanationBadDoctype: 'Doctype name must be the string `html`',
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const str_ = i18n.
|
|
32
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
33
33
|
|
|
34
34
|
class Doctype extends Audit {
|
|
35
35
|
/**
|
|
@@ -41,7 +41,7 @@ const UIStrings = {
|
|
|
41
41
|
statisticDOMWidth: 'Maximum Child Elements',
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
const str_ = i18n.
|
|
44
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
45
45
|
|
|
46
46
|
class DOMSize extends Audit {
|
|
47
47
|
/**
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
'[Learn more about the geolocation permission](https://web.dev/geolocation-on-start/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
class GeolocationOnStart extends ViolationAudit {
|
|
31
31
|
/**
|
|
@@ -36,7 +36,7 @@ const UIStrings = {
|
|
|
36
36
|
issueTypeHeavyAds: 'Heavy resource usage by ads',
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
const str_ = i18n.
|
|
39
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
40
40
|
|
|
41
41
|
class IssuesPanelEntries extends Audit {
|
|
42
42
|
/**
|
|
@@ -42,7 +42,7 @@ const UIStrings = {
|
|
|
42
42
|
'[Learn how to avoid document.write()](https://web.dev/no-document-write/).',
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
const str_ = i18n.
|
|
45
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
46
46
|
|
|
47
47
|
class NoDocWriteAudit extends ViolationAudit {
|
|
48
48
|
/**
|
|
@@ -46,7 +46,7 @@ const UIStrings = {
|
|
|
46
46
|
columnSeverity: 'Highest Severity',
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
const str_ = i18n.
|
|
49
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
50
50
|
|
|
51
51
|
const SEMVER_REGEX = /^(\d+\.\d+\.\d+)[^-0-9]+/;
|
|
52
52
|
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
'instead. [Learn more about responsibly getting permission for notifications](https://web.dev/notification-on-start/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
class NotificationOnStart extends ViolationAudit {
|
|
31
31
|
/**
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
'[Learn more about user-friendly password fields](https://web.dev/password-inputs-can-be-pasted-into/).',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
class PasswordInputsCanBePastedIntoAudit extends Audit {
|
|
24
24
|
/**
|
|
@@ -40,7 +40,7 @@ const UIStrings = {
|
|
|
40
40
|
columnProtocol: 'Protocol',
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
const str_ = i18n.
|
|
43
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
44
44
|
|
|
45
45
|
/** @type {Set<LH.Artifacts.NetworkRequest['resourceType']>} */
|
|
46
46
|
const STATIC_RESOURCE_TYPES = new Set([
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
'[Learn more about adopting passive event listeners](https://web.dev/uses-passive-event-listeners/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
class PassiveEventsAudit extends ViolationAudit {
|
|
31
31
|
/**
|
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
'[Learn more about this errors in console diagnostic audit](https://web.dev/errors-in-console/)',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
/** @typedef {{ignoredPatterns?: Array<RegExp|string>}} AuditOptions */
|
|
33
33
|
|
|
@@ -36,7 +36,7 @@ const UIStrings = {
|
|
|
36
36
|
'other {Lighthouse was unable to automatically check the `font-display` values for the origin {fontOrigin}.}}',
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
const str_ = i18n.
|
|
39
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
40
40
|
|
|
41
41
|
class FontDisplay extends Audit {
|
|
42
42
|
/**
|
|
@@ -33,7 +33,7 @@ const UIStrings = {
|
|
|
33
33
|
columnExpected: 'Expected size',
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
const str_ = i18n.
|
|
36
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
37
37
|
|
|
38
38
|
// Factors used to allow for smaller effective density.
|
|
39
39
|
// A factor of 1 means the actual device pixel density will be used.
|
|
@@ -49,7 +49,7 @@ const resolutionToString = {
|
|
|
49
49
|
MixedContentWarning: UIStrings.warning,
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
const str_ = i18n.
|
|
52
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class HTTPS extends Audit {
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Largest Contentful Paint element](https://web.dev/lighthouse-largest-contentful-paint/)',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
class LargestContentfulPaintElement extends Audit {
|
|
22
22
|
/**
|
|
@@ -17,7 +17,7 @@ const UIStrings = {
|
|
|
17
17
|
columnContribution: 'CLS Contribution',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const str_ = i18n.
|
|
20
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
21
21
|
|
|
22
22
|
class LayoutShiftElements extends Audit {
|
|
23
23
|
/**
|
|
@@ -17,7 +17,7 @@ const UIStrings = {
|
|
|
17
17
|
description: 'Above-the-fold images that are lazily loaded render later in the page lifecycle, which can delay the largest contentful paint. [Learn more about optimal lazy loading](https://web.dev/lcp-lazy-loading/).',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const str_ = i18n.
|
|
20
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
21
21
|
|
|
22
22
|
class LargestContentfulPaintLazyLoaded extends Audit {
|
|
23
23
|
/**
|
|
@@ -28,7 +28,7 @@ const UIStrings = {
|
|
|
28
28
|
columnCategory: 'Category',
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
const str_ = i18n.
|
|
31
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
32
32
|
|
|
33
33
|
/** @typedef {import('../lib/tracehouse/task-groups.js').TaskGroupIds} TaskGroupIds */
|
|
34
34
|
|
|
@@ -17,7 +17,7 @@ const UIStrings = {
|
|
|
17
17
|
'every major browser. [Learn about cross-browser compatibility](https://web.dev/pwa-cross-browser/).',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const str_ = i18n.
|
|
20
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @fileoverview Manual PWA audit for cross browser support.
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'unique for the purpose of shareability on social media. [Learn more about providing deep links](https://web.dev/pwa-each-page-has-url/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview Manual PWA audit to ensure every page has a deep link.
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'This experience is key to a user\'s perception of performance. [Learn more about page transitions](https://web.dev/pwa-page-transitions/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview Manual PWA audit for janky-free page transitions.
|
|
@@ -20,7 +20,7 @@ const UIStrings = {
|
|
|
20
20
|
'the app on a device. [Learn about maskable manifest icons](https://web.dev/maskable-icon-audit/).',
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
const str_ = i18n.
|
|
23
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* @fileoverview
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Cumulative Layout Shift metric](https://web.dev/cls/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview This metric represents the amount of visual shifting of DOM elements during page load.
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Interaction to Next Paint metric](https://web.dev/inp/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview This metric gives a high-percentile measure of responsiveness to input.
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'painted. [Learn more about the First Contentful Paint metric](https://web.dev/first-contentful-paint/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class FirstContentfulPaint extends Audit {
|
|
21
21
|
/**
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'visible. [Learn more about the First Meaningful Paint metric](https://web.dev/first-meaningful-paint/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class FirstMeaningfulPaint extends Audit {
|
|
21
21
|
/**
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'interactive. [Learn more about the Time to Interactive metric](https://web.dev/interactive/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @fileoverview This audit identifies the time the page is "consistently interactive".
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
`painted. [Learn more about the Largest Contentful Paint metric](https://web.dev/lighthouse-largest-contentful-paint/)`,
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class LargestContentfulPaint extends Audit {
|
|
21
21
|
/**
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Maximum Potential First Input Delay metric](https://web.dev/lighthouse-max-potential-fid/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview This metric is the duration of the longest task after FCP. It is meant to capture
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'[Learn more about the Speed Index metric](https://web.dev/speed-index/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class SpeedIndex extends Audit {
|
|
21
21
|
/**
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Total Blocking Time metric](https://web.dev/lighthouse-total-blocking-time/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
class TotalBlockingTime extends Audit {
|
|
22
22
|
/**
|
|
@@ -19,7 +19,7 @@ const UIStrings = {
|
|
|
19
19
|
'improve performance. [Learn more about the Round Trip Time](https://hpbn.co/primer-on-latency-and-bandwidth/).',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const str_ = i18n.
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
23
|
|
|
24
24
|
class NetworkRTT extends Audit {
|
|
25
25
|
/**
|
|
@@ -19,7 +19,7 @@ const UIStrings = {
|
|
|
19
19
|
'or has poor backend performance. [Learn more about server response time](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall).',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const str_ = i18n.
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
23
|
|
|
24
24
|
class NetworkServerLatency extends Audit {
|
|
25
25
|
/**
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
description: 'The `unload` event does not fire reliably and listening for it can prevent browser optimizations like the Back-Forward Cache. Use `pagehide` or `visibilitychange` events instead. [Learn more about unload event listeners](https://web.dev/bfcache/#never-use-the-unload-event)',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
class NoUnloadListeners extends Audit {
|
|
24
24
|
/**
|