From 9c8d0cf3a2bd506a7146dc773216f3a9e73cc072 Mon Sep 17 00:00:00 2001 From: Adam Raine <6752989+adamraine@users.noreply.github.com> Date: Thu, 21 Mar 2024 10:16:29 -0700 Subject: [PATCH] core: move preload audits to experimental config (#15876) --- .../smokehouse/test-definitions/perf-fonts.js | 24 +- .../test-definitions/perf-preload.js | 30 +- core/audits/preload-fonts.js | 11 +- core/audits/uses-rel-preload.js | 12 +- core/config/default-config.js | 4 - core/config/experimental-config.js | 11 + core/config/metrics-to-audits.js | 2 - core/test/audits/preload-fonts-test.js | 12 +- core/test/audits/uses-rel-preload-test.js | 22 +- .../reports/sample-flow-result.json | 868 ++++++++---------- core/test/lib/stack-packs-test.js | 1 + core/test/results/sample_v2.json | 56 -- .../__snapshots__/api-test-pptr.js.snap | 8 - .../e2e/lighthouse/navigation_test.ts | 4 +- .../e2e/lighthouse/timespan_test.ts | 2 +- 15 files changed, 427 insertions(+), 640 deletions(-) diff --git a/cli/test/smokehouse/test-definitions/perf-fonts.js b/cli/test/smokehouse/test-definitions/perf-fonts.js index 1c2b592c19c1..4d6861675843 100644 --- a/cli/test/smokehouse/test-definitions/perf-fonts.js +++ b/cli/test/smokehouse/test-definitions/perf-fonts.js @@ -76,18 +76,18 @@ const expectations = { ], }, }, - 'preload-fonts': { - scoreDisplayMode: 'notApplicable', - // Disabled for now, see https://github.com/GoogleChrome/lighthouse/issues/11960 - // score: 0, - // details: { - // items: [ - // { - // url: 'http://localhost:10200/perf/lobster-two-v10-latin-700.woff2?delay=1000', - // }, - // ], - // }, - }, + // Disabled for now, see https://github.com/GoogleChrome/lighthouse/issues/11960 + // 'preload-fonts': { + // scoreDisplayMode: 'notApplicable', + // score: 0, + // details: { + // items: [ + // { + // url: 'http://localhost:10200/perf/lobster-two-v10-latin-700.woff2?delay=1000', + // }, + // ], + // }, + // }, }, }, }; diff --git a/cli/test/smokehouse/test-definitions/perf-preload.js b/cli/test/smokehouse/test-definitions/perf-preload.js index 00bd46fb8dc8..f41cd662a196 100644 --- a/cli/test/smokehouse/test-definitions/perf-preload.js +++ b/cli/test/smokehouse/test-definitions/perf-preload.js @@ -107,21 +107,21 @@ const expectations = { }, }, }, - 'uses-rel-preload': { - scoreDisplayMode: 'notApplicable', - // Disabled for now, see https://github.com/GoogleChrome/lighthouse/issues/11960 - // score: '<1', - // numericValue: '>500', - // warnings: { - // 0: /level-2.*warning/, - // length: 1, - // }, - // details: { - // items: { - // length: 1, - // }, - // }, - }, + // Disabled for now, see https://github.com/GoogleChrome/lighthouse/issues/11960 + // 'uses-rel-preload': { + // scoreDisplayMode: 'notApplicable', + // score: '<1', + // numericValue: '>500', + // warnings: { + // 0: /level-2.*warning/, + // length: 1, + // }, + // details: { + // items: { + // length: 1, + // }, + // }, + // }, 'uses-rel-preconnect': { score: 1, warnings: [/localhost:10503/], diff --git a/core/audits/preload-fonts.js b/core/audits/preload-fonts.js index a133b3d35bfc..f57c4025e60b 100644 --- a/core/audits/preload-fonts.js +++ b/core/audits/preload-fonts.js @@ -62,7 +62,7 @@ class PreloadFontsAudit extends Audit { * @param {LH.Audit.Context} context * @return {Promise} */ - static async audit_(artifacts, context) { + static async audit(artifacts, context) { const devtoolsLog = artifacts.devtoolsLogs[this.DEFAULT_PASS]; const networkRecords = await NetworkRecords.request(devtoolsLog, context); @@ -91,15 +91,6 @@ class PreloadFontsAudit extends Audit { notApplicable: optionalFontURLs.size === 0, }; } - - /** - * @return {Promise} - */ - static async audit() { - // Preload advice is on hold until https://github.com/GoogleChrome/lighthouse/issues/11960 - // is resolved. - return {score: 1, notApplicable: true}; - } } export default PreloadFontsAudit; diff --git a/core/audits/uses-rel-preload.js b/core/audits/uses-rel-preload.js index 8582616be956..bbef1d0d7ae6 100644 --- a/core/audits/uses-rel-preload.js +++ b/core/audits/uses-rel-preload.js @@ -209,7 +209,7 @@ class UsesRelPreloadAudit extends Audit { * @param {LH.Audit.Context} context * @return {Promise} */ - static async audit_(artifacts, context) { + static async audit(artifacts, context) { const trace = artifacts.traces[UsesRelPreloadAudit.DEFAULT_PASS]; const devtoolsLog = artifacts.devtoolsLogs[UsesRelPreloadAudit.DEFAULT_PASS]; const URL = artifacts.URL; @@ -253,16 +253,6 @@ class UsesRelPreloadAudit extends Audit { warnings, }; } - - /** - * @return {Promise} - */ - static async audit() { - // Preload advice is on hold until https://github.com/GoogleChrome/lighthouse/issues/11960 - // is resolved. - return {score: 1, notApplicable: true, - details: Audit.makeOpportunityDetails([], [], {overallSavingsMs: 0})}; - } } export default UsesRelPreloadAudit; diff --git a/core/config/default-config.js b/core/config/default-config.js index 3624038483d8..c98f0b5693d8 100644 --- a/core/config/default-config.js +++ b/core/config/default-config.js @@ -201,12 +201,10 @@ const defaultConfig = { 'content-width', 'image-aspect-ratio', 'image-size-responsive', - 'preload-fonts', 'deprecations', 'third-party-cookies', 'mainthread-work-breakdown', 'bootup-time', - 'uses-rel-preload', 'uses-rel-preconnect', 'font-display', 'diagnostics', @@ -460,7 +458,6 @@ const defaultConfig = { {id: 'uses-rel-preconnect', weight: 0}, {id: 'server-response-time', weight: 0}, {id: 'redirects', weight: 0}, - {id: 'uses-rel-preload', weight: 0}, {id: 'uses-http2', weight: 0}, {id: 'efficient-animated-content', weight: 0}, {id: 'duplicated-javascript', weight: 0}, @@ -605,7 +602,6 @@ const defaultConfig = { {id: 'paste-preventing-inputs', weight: 3, group: 'best-practices-ux'}, {id: 'image-aspect-ratio', weight: 1, group: 'best-practices-ux'}, {id: 'image-size-responsive', weight: 1, group: 'best-practices-ux'}, - {id: 'preload-fonts', weight: 1, group: 'best-practices-ux'}, // Browser Compatibility {id: 'doctype', weight: 1, group: 'best-practices-browser-compat'}, {id: 'charset', weight: 1, group: 'best-practices-browser-compat'}, diff --git a/core/config/experimental-config.js b/core/config/experimental-config.js index ff9d9a9cafbf..4bf0def6c56c 100644 --- a/core/config/experimental-config.js +++ b/core/config/experimental-config.js @@ -14,13 +14,24 @@ const config = { extends: 'lighthouse:default', audits: [ 'autocomplete', + // Preload advice is on hold until https://github.com/GoogleChrome/lighthouse/issues/11960 + 'preload-fonts', + 'uses-rel-preload', ], categories: { + // @ts-ignore: `title` is required in CategoryJson. setting to the same value as the default + // config is awkward - easier to omit the property here. Will defer to default config. + 'performance': { + auditRefs: [ + {id: 'uses-rel-preload', weight: 0}, + ], + }, // @ts-ignore: `title` is required in CategoryJson. setting to the same value as the default // config is awkward - easier to omit the property here. Will defer to default config. 'best-practices': { auditRefs: [ {id: 'autocomplete', weight: 0, group: 'best-practices-ux'}, + {id: 'preload-fonts', weight: 0, group: 'best-practices-ux'}, ], }, }, diff --git a/core/config/metrics-to-audits.js b/core/config/metrics-to-audits.js index 1e19c3c4979d..f98ee0dbb6a9 100644 --- a/core/config/metrics-to-audits.js +++ b/core/config/metrics-to-audits.js @@ -12,7 +12,6 @@ const fcpRelevantAudits = [ 'critical-request-chains', 'uses-text-compression', 'uses-rel-preconnect', - 'uses-rel-preload', 'font-display', 'unminified-javascript', 'unminified-css', @@ -46,7 +45,6 @@ const clsRelevantAudits = [ 'layout-shifts', 'non-composited-animations', 'unsized-images', - // 'preload-fonts', // actually in BP, rather than perf ]; const inpRelevantAudits = [ diff --git a/core/test/audits/preload-fonts-test.js b/core/test/audits/preload-fonts-test.js index 6d2ede10843a..82643cea5a8f 100644 --- a/core/test/audits/preload-fonts-test.js +++ b/core/test/audits/preload-fonts-test.js @@ -42,7 +42,7 @@ describe('Preload Fonts Audit', () => { }, ]; - const result = await PreloadFontsAudit.audit_(getArtifacts(), context); + const result = await PreloadFontsAudit.audit(getArtifacts(), context); expect(result.score).toEqual(0); expect(result.details.items).toEqual([ {url: networkRecords[0].url}, @@ -65,7 +65,7 @@ describe('Preload Fonts Audit', () => { }, ]; - const result = await PreloadFontsAudit.audit_(getArtifacts(), context); + const result = await PreloadFontsAudit.audit(getArtifacts(), context); expect(result.details.items).toEqual([]); expect(result.score).toEqual(1); }); @@ -87,7 +87,7 @@ describe('Preload Fonts Audit', () => { }, ]; - const result = await PreloadFontsAudit.audit_(getArtifacts(), context); + const result = await PreloadFontsAudit.audit(getArtifacts(), context); expect(result.score).toEqual(1); expect(result.details.items).toEqual([]); expect(result.notApplicable).toEqual(true); @@ -108,7 +108,7 @@ describe('Preload Fonts Audit', () => { }, ]; - const result = await PreloadFontsAudit.audit_(getArtifacts(), context); + const result = await PreloadFontsAudit.audit(getArtifacts(), context); expect(result.score).toEqual(1); expect(result.details.items).toEqual([]); expect(result.notApplicable).toEqual(true); @@ -139,7 +139,7 @@ describe('Preload Fonts Audit', () => { networkRecords = []; - const result = await PreloadFontsAudit.audit_(getArtifacts(), context); + const result = await PreloadFontsAudit.audit(getArtifacts(), context); expect(result.score).toEqual(1); expect(result.details.items).toEqual([]); expect(result.notApplicable).toEqual(true); @@ -191,7 +191,7 @@ describe('Preload Fonts Audit', () => { }, ]; - const result = await PreloadFontsAudit.audit_(getArtifacts(), context); + const result = await PreloadFontsAudit.audit(getArtifacts(), context); expect(result.score).toEqual(0); expect(result.details.items).toEqual([ {url: networkRecords[1].url}, diff --git a/core/test/audits/uses-rel-preload-test.js b/core/test/audits/uses-rel-preload-test.js index 915ccaf9b8fa..2e43cb87ca41 100644 --- a/core/test/audits/uses-rel-preload-test.js +++ b/core/test/audits/uses-rel-preload-test.js @@ -152,7 +152,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl); artifacts.URL.requestedUrl = rootNodeUrl; const context = {settings: {}, computedCache: new Map()}; - return UsesRelPreload.audit_(artifacts, context).then( + return UsesRelPreload.audit(artifacts, context).then( output => { assert.equal(output.details.overallSavingsMs, 330); assert.equal(output.details.items.length, 2); @@ -169,7 +169,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - return UsesRelPreload.audit_(artifacts, context).then(output => { + return UsesRelPreload.audit(artifacts, context).then(output => { assert.equal(output.details.overallSavingsMs, 314); assert.equal(output.details.items.length, 1); }); @@ -206,7 +206,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - const result = await UsesRelPreload.audit_(artifacts, context); + const result = await UsesRelPreload.audit(artifacts, context); expect(result.warnings).toHaveLength(1); }); @@ -243,7 +243,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - const result = await UsesRelPreload.audit_(artifacts, context); + const result = await UsesRelPreload.audit(artifacts, context); expect(result.warnings).toBeUndefined(); }); @@ -258,7 +258,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - const result = await UsesRelPreload.audit_(artifacts, context); + const result = await UsesRelPreload.audit(artifacts, context); expect(result.warnings).toBeUndefined(); }); @@ -268,7 +268,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - return UsesRelPreload.audit_(artifacts, context).then(output => { + return UsesRelPreload.audit(artifacts, context).then(output => { assert.equal(output.score, 1); assert.equal(output.details.overallSavingsMs, 0); assert.equal(output.details.items.length, 0); @@ -281,7 +281,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - const result = await UsesRelPreload.audit_(artifacts, context); + const result = await UsesRelPreload.audit(artifacts, context); expect(result).toMatchObject({score: 1, details: {overallSavingsMs: 0, items: []}}); }); @@ -291,7 +291,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - return UsesRelPreload.audit_(artifacts, context).then(output => { + return UsesRelPreload.audit(artifacts, context).then(output => { assert.equal(output.score, 1); assert.equal(output.details.overallSavingsMs, 0); assert.equal(output.details.items.length, 0); @@ -304,7 +304,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - return UsesRelPreload.audit_(artifacts, context).then(output => { + return UsesRelPreload.audit(artifacts, context).then(output => { assert.equal(output.numericValue, 0); assert.equal(output.details.items.length, 0); }); @@ -316,7 +316,7 @@ describe('Performance: uses-rel-preload audit', () => { const artifacts = mockArtifacts(networkRecords, defaultMainResourceUrl); const context = {settings: {}, computedCache: new Map()}; - return UsesRelPreload.audit_(artifacts, context).then(output => { + return UsesRelPreload.audit(artifacts, context).then(output => { assert.equal(output.numericValue, 0); assert.equal(output.details.items.length, 0); }); @@ -335,7 +335,7 @@ describe('Performance: uses-rel-preload audit', () => { const settings = {throttlingMethod: 'provided'}; const context = {settings, computedCache: new Map()}; - const result = await UsesRelPreload.audit_(artifacts, context); + const result = await UsesRelPreload.audit(artifacts, context); assert.equal(result.score, 1); assert.equal(result.numericValue, 0); }); diff --git a/core/test/fixtures/user-flows/reports/sample-flow-result.json b/core/test/fixtures/user-flows/reports/sample-flow-result.json index 3a33468547ea..0d6df6d7d2d6 100644 --- a/core/test/fixtures/user-flows/reports/sample-flow-result.json +++ b/core/test/fixtures/user-flows/reports/sample-flow-result.json @@ -492,13 +492,6 @@ "items": [] } }, - "preload-fonts": { - "id": "preload-fonts", - "title": "Fonts with `font-display: optional` are preloaded", - "description": "Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)", - "score": null, - "scoreDisplayMode": "notApplicable" - }, "deprecations": { "id": "deprecations", "title": "Avoids deprecated APIs", @@ -656,20 +649,6 @@ }, "guidanceLevel": 1 }, - "uses-rel-preload": { - "id": "uses-rel-preload", - "title": "Preload key requests", - "description": "Consider using `` to prioritize fetching resources that are currently requested later in page load. [Learn how to preload key requests](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preload/).", - "score": null, - "scoreDisplayMode": "notApplicable", - "details": { - "type": "opportunity", - "headings": [], - "items": [], - "overallSavingsMs": 0 - }, - "guidanceLevel": 3 - }, "uses-rel-preconnect": { "id": "uses-rel-preconnect", "title": "Preconnect to required origins", @@ -3868,7 +3847,6 @@ "critical-request-chains", "uses-text-compression", "uses-rel-preconnect", - "uses-rel-preload", "font-display", "unminified-javascript", "unminified-css", @@ -3887,7 +3865,6 @@ "critical-request-chains", "uses-text-compression", "uses-rel-preconnect", - "uses-rel-preload", "font-display", "unminified-javascript", "unminified-css", @@ -4004,10 +3981,6 @@ "id": "redirects", "weight": 0 }, - { - "id": "uses-rel-preload", - "weight": 0 - }, { "id": "efficient-animated-content", "weight": 0 @@ -4574,11 +4547,6 @@ "weight": 1, "group": "best-practices-ux" }, - { - "id": "preload-fonts", - "weight": 0, - "group": "best-practices-ux" - }, { "id": "doctype", "weight": 1, @@ -6050,259 +6018,259 @@ }, { "startTime": 115, - "name": "lh:audit:preload-fonts", + "name": "lh:audit:deprecations", "duration": 1, "entryType": "measure" }, { "startTime": 116, - "name": "lh:audit:deprecations", + "name": "lh:audit:third-party-cookies", "duration": 1, "entryType": "measure" }, { "startTime": 117, - "name": "lh:audit:third-party-cookies", + "name": "lh:audit:mainthread-work-breakdown", "duration": 1, "entryType": "measure" }, { "startTime": 118, - "name": "lh:audit:mainthread-work-breakdown", + "name": "lh:computed:MainThreadTasks", "duration": 1, "entryType": "measure" }, { "startTime": 119, - "name": "lh:computed:MainThreadTasks", + "name": "lh:audit:bootup-time", "duration": 1, "entryType": "measure" }, { "startTime": 120, - "name": "lh:audit:bootup-time", + "name": "lh:computed:TBTImpactTasks", "duration": 1, "entryType": "measure" }, { "startTime": 121, - "name": "lh:computed:TBTImpactTasks", + "name": "lh:audit:uses-rel-preconnect", "duration": 1, "entryType": "measure" }, { "startTime": 122, - "name": "lh:audit:uses-rel-preload", + "name": "lh:audit:font-display", "duration": 1, "entryType": "measure" }, { "startTime": 123, - "name": "lh:audit:uses-rel-preconnect", + "name": "lh:audit:diagnostics", "duration": 1, "entryType": "measure" }, { "startTime": 124, - "name": "lh:audit:font-display", + "name": "lh:audit:network-requests", "duration": 1, "entryType": "measure" }, { "startTime": 125, - "name": "lh:audit:diagnostics", + "name": "lh:computed:EntityClassification", "duration": 1, "entryType": "measure" }, { "startTime": 126, - "name": "lh:audit:network-requests", + "name": "lh:audit:network-rtt", "duration": 1, "entryType": "measure" }, { "startTime": 127, - "name": "lh:computed:EntityClassification", + "name": "lh:audit:network-server-latency", "duration": 1, "entryType": "measure" }, { "startTime": 128, - "name": "lh:audit:network-rtt", + "name": "lh:audit:main-thread-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 129, - "name": "lh:audit:network-server-latency", + "name": "lh:audit:metrics", "duration": 1, "entryType": "measure" }, { "startTime": 130, - "name": "lh:audit:main-thread-tasks", + "name": "lh:computed:TimingSummary", "duration": 1, "entryType": "measure" }, { "startTime": 131, - "name": "lh:audit:metrics", + "name": "lh:computed:FirstContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 132, - "name": "lh:computed:TimingSummary", + "name": "lh:computed:LargestContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 133, - "name": "lh:computed:FirstContentfulPaintAllFrames", + "name": "lh:computed:LCPBreakdown", "duration": 1, "entryType": "measure" }, { "startTime": 134, - "name": "lh:computed:LargestContentfulPaintAllFrames", + "name": "lh:computed:TimeToFirstByte", "duration": 1, "entryType": "measure" }, { "startTime": 135, - "name": "lh:computed:LCPBreakdown", + "name": "lh:computed:LCPImageRecord", "duration": 1, "entryType": "measure" }, { "startTime": 136, - "name": "lh:computed:TimeToFirstByte", + "name": "lh:audit:performance-budget", "duration": 1, "entryType": "measure" }, { "startTime": 137, - "name": "lh:computed:LCPImageRecord", + "name": "lh:computed:ResourceSummary", "duration": 1, "entryType": "measure" }, { "startTime": 138, - "name": "lh:audit:performance-budget", + "name": "lh:audit:timing-budget", "duration": 1, "entryType": "measure" }, { "startTime": 139, - "name": "lh:computed:ResourceSummary", + "name": "lh:audit:resource-summary", "duration": 1, "entryType": "measure" }, { "startTime": 140, - "name": "lh:audit:timing-budget", + "name": "lh:audit:third-party-summary", "duration": 1, "entryType": "measure" }, { "startTime": 141, - "name": "lh:audit:resource-summary", + "name": "lh:audit:third-party-facades", "duration": 1, "entryType": "measure" }, { "startTime": 142, - "name": "lh:audit:third-party-summary", + "name": "lh:audit:largest-contentful-paint-element", "duration": 1, "entryType": "measure" }, { "startTime": 143, - "name": "lh:audit:third-party-facades", + "name": "lh:audit:lcp-lazy-loaded", "duration": 1, "entryType": "measure" }, { "startTime": 144, - "name": "lh:audit:largest-contentful-paint-element", + "name": "lh:audit:layout-shift-elements", "duration": 1, "entryType": "measure" }, { "startTime": 145, - "name": "lh:audit:lcp-lazy-loaded", + "name": "lh:audit:layout-shifts", "duration": 1, "entryType": "measure" }, { "startTime": 146, - "name": "lh:audit:layout-shift-elements", + "name": "lh:computed:TraceEngineResult", "duration": 1, "entryType": "measure" }, { "startTime": 147, - "name": "lh:audit:layout-shifts", + "name": "lh:audit:long-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 148, - "name": "lh:computed:TraceEngineResult", + "name": "lh:audit:no-unload-listeners", "duration": 1, "entryType": "measure" }, { "startTime": 149, - "name": "lh:audit:long-tasks", + "name": "lh:audit:non-composited-animations", "duration": 1, "entryType": "measure" }, { "startTime": 150, - "name": "lh:audit:no-unload-listeners", + "name": "lh:audit:unsized-images", "duration": 1, "entryType": "measure" }, { "startTime": 151, - "name": "lh:audit:non-composited-animations", + "name": "lh:audit:valid-source-maps", "duration": 1, "entryType": "measure" }, { "startTime": 152, - "name": "lh:audit:unsized-images", + "name": "lh:audit:prioritize-lcp-image", "duration": 1, "entryType": "measure" }, { "startTime": 153, - "name": "lh:audit:valid-source-maps", + "name": "lh:audit:csp-xss", "duration": 1, "entryType": "measure" }, { "startTime": 154, - "name": "lh:audit:prioritize-lcp-image", + "name": "lh:audit:script-treemap-data", "duration": 1, "entryType": "measure" }, { "startTime": 155, - "name": "lh:audit:csp-xss", + "name": "lh:computed:ModuleDuplication", "duration": 1, "entryType": "measure" }, { "startTime": 156, - "name": "lh:audit:script-treemap-data", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, { "startTime": 157, - "name": "lh:computed:ModuleDuplication", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, @@ -6380,714 +6348,702 @@ }, { "startTime": 170, - "name": "lh:computed:UnusedJavascriptSummary", + "name": "lh:audit:pwa-cross-browser", "duration": 1, "entryType": "measure" }, { "startTime": 171, - "name": "lh:computed:UnusedJavascriptSummary", + "name": "lh:audit:pwa-page-transitions", "duration": 1, "entryType": "measure" }, { "startTime": 172, - "name": "lh:audit:pwa-cross-browser", + "name": "lh:audit:pwa-each-page-has-url", "duration": 1, "entryType": "measure" }, { "startTime": 173, - "name": "lh:audit:pwa-page-transitions", + "name": "lh:audit:accesskeys", "duration": 1, "entryType": "measure" }, { "startTime": 174, - "name": "lh:audit:pwa-each-page-has-url", + "name": "lh:audit:aria-allowed-attr", "duration": 1, "entryType": "measure" }, { "startTime": 175, - "name": "lh:audit:accesskeys", + "name": "lh:audit:aria-allowed-role", "duration": 1, "entryType": "measure" }, { "startTime": 176, - "name": "lh:audit:aria-allowed-attr", + "name": "lh:audit:aria-command-name", "duration": 1, "entryType": "measure" }, { "startTime": 177, - "name": "lh:audit:aria-allowed-role", + "name": "lh:audit:aria-dialog-name", "duration": 1, "entryType": "measure" }, { "startTime": 178, - "name": "lh:audit:aria-command-name", + "name": "lh:audit:aria-hidden-body", "duration": 1, "entryType": "measure" }, { "startTime": 179, - "name": "lh:audit:aria-dialog-name", + "name": "lh:audit:aria-hidden-focus", "duration": 1, "entryType": "measure" }, { "startTime": 180, - "name": "lh:audit:aria-hidden-body", + "name": "lh:audit:aria-input-field-name", "duration": 1, "entryType": "measure" }, { "startTime": 181, - "name": "lh:audit:aria-hidden-focus", + "name": "lh:audit:aria-meter-name", "duration": 1, "entryType": "measure" }, { "startTime": 182, - "name": "lh:audit:aria-input-field-name", + "name": "lh:audit:aria-progressbar-name", "duration": 1, "entryType": "measure" }, { "startTime": 183, - "name": "lh:audit:aria-meter-name", + "name": "lh:audit:aria-required-attr", "duration": 1, "entryType": "measure" }, { "startTime": 184, - "name": "lh:audit:aria-progressbar-name", + "name": "lh:audit:aria-required-children", "duration": 1, "entryType": "measure" }, { "startTime": 185, - "name": "lh:audit:aria-required-attr", + "name": "lh:audit:aria-required-parent", "duration": 1, "entryType": "measure" }, { "startTime": 186, - "name": "lh:audit:aria-required-children", + "name": "lh:audit:aria-roles", "duration": 1, "entryType": "measure" }, { "startTime": 187, - "name": "lh:audit:aria-required-parent", + "name": "lh:audit:aria-text", "duration": 1, "entryType": "measure" }, { "startTime": 188, - "name": "lh:audit:aria-roles", + "name": "lh:audit:aria-toggle-field-name", "duration": 1, "entryType": "measure" }, { "startTime": 189, - "name": "lh:audit:aria-text", + "name": "lh:audit:aria-tooltip-name", "duration": 1, "entryType": "measure" }, { "startTime": 190, - "name": "lh:audit:aria-toggle-field-name", + "name": "lh:audit:aria-treeitem-name", "duration": 1, "entryType": "measure" }, { "startTime": 191, - "name": "lh:audit:aria-tooltip-name", + "name": "lh:audit:aria-valid-attr-value", "duration": 1, "entryType": "measure" }, { "startTime": 192, - "name": "lh:audit:aria-treeitem-name", + "name": "lh:audit:aria-valid-attr", "duration": 1, "entryType": "measure" }, { "startTime": 193, - "name": "lh:audit:aria-valid-attr-value", + "name": "lh:audit:button-name", "duration": 1, "entryType": "measure" }, { "startTime": 194, - "name": "lh:audit:aria-valid-attr", + "name": "lh:audit:bypass", "duration": 1, "entryType": "measure" }, { "startTime": 195, - "name": "lh:audit:button-name", + "name": "lh:audit:color-contrast", "duration": 1, "entryType": "measure" }, { "startTime": 196, - "name": "lh:audit:bypass", + "name": "lh:audit:definition-list", "duration": 1, "entryType": "measure" }, { "startTime": 197, - "name": "lh:audit:color-contrast", + "name": "lh:audit:dlitem", "duration": 1, "entryType": "measure" }, { "startTime": 198, - "name": "lh:audit:definition-list", + "name": "lh:audit:document-title", "duration": 1, "entryType": "measure" }, { "startTime": 199, - "name": "lh:audit:dlitem", + "name": "lh:audit:duplicate-id-active", "duration": 1, "entryType": "measure" }, { "startTime": 200, - "name": "lh:audit:document-title", + "name": "lh:audit:duplicate-id-aria", "duration": 1, "entryType": "measure" }, { "startTime": 201, - "name": "lh:audit:duplicate-id-active", + "name": "lh:audit:empty-heading", "duration": 1, "entryType": "measure" }, { "startTime": 202, - "name": "lh:audit:duplicate-id-aria", + "name": "lh:audit:form-field-multiple-labels", "duration": 1, "entryType": "measure" }, { "startTime": 203, - "name": "lh:audit:empty-heading", + "name": "lh:audit:frame-title", "duration": 1, "entryType": "measure" }, { "startTime": 204, - "name": "lh:audit:form-field-multiple-labels", + "name": "lh:audit:heading-order", "duration": 1, "entryType": "measure" }, { "startTime": 205, - "name": "lh:audit:frame-title", + "name": "lh:audit:html-has-lang", "duration": 1, "entryType": "measure" }, { "startTime": 206, - "name": "lh:audit:heading-order", + "name": "lh:audit:html-lang-valid", "duration": 1, "entryType": "measure" }, { "startTime": 207, - "name": "lh:audit:html-has-lang", + "name": "lh:audit:html-xml-lang-mismatch", "duration": 1, "entryType": "measure" }, { "startTime": 208, - "name": "lh:audit:html-lang-valid", + "name": "lh:audit:identical-links-same-purpose", "duration": 1, "entryType": "measure" }, { "startTime": 209, - "name": "lh:audit:html-xml-lang-mismatch", + "name": "lh:audit:image-alt", "duration": 1, "entryType": "measure" }, { "startTime": 210, - "name": "lh:audit:identical-links-same-purpose", + "name": "lh:audit:image-redundant-alt", "duration": 1, "entryType": "measure" }, { "startTime": 211, - "name": "lh:audit:image-alt", + "name": "lh:audit:input-button-name", "duration": 1, "entryType": "measure" }, { "startTime": 212, - "name": "lh:audit:image-redundant-alt", + "name": "lh:audit:input-image-alt", "duration": 1, "entryType": "measure" }, { "startTime": 213, - "name": "lh:audit:input-button-name", + "name": "lh:audit:label-content-name-mismatch", "duration": 1, "entryType": "measure" }, { "startTime": 214, - "name": "lh:audit:input-image-alt", + "name": "lh:audit:label", "duration": 1, "entryType": "measure" }, { "startTime": 215, - "name": "lh:audit:label-content-name-mismatch", + "name": "lh:audit:landmark-one-main", "duration": 1, "entryType": "measure" }, { "startTime": 216, - "name": "lh:audit:label", + "name": "lh:audit:link-name", "duration": 1, "entryType": "measure" }, { "startTime": 217, - "name": "lh:audit:landmark-one-main", + "name": "lh:audit:link-in-text-block", "duration": 1, "entryType": "measure" }, { "startTime": 218, - "name": "lh:audit:link-name", + "name": "lh:audit:list", "duration": 1, "entryType": "measure" }, { "startTime": 219, - "name": "lh:audit:link-in-text-block", + "name": "lh:audit:listitem", "duration": 1, "entryType": "measure" }, { "startTime": 220, - "name": "lh:audit:list", + "name": "lh:audit:meta-refresh", "duration": 1, "entryType": "measure" }, { "startTime": 221, - "name": "lh:audit:listitem", + "name": "lh:audit:meta-viewport", "duration": 1, "entryType": "measure" }, { "startTime": 222, - "name": "lh:audit:meta-refresh", + "name": "lh:audit:object-alt", "duration": 1, "entryType": "measure" }, { "startTime": 223, - "name": "lh:audit:meta-viewport", + "name": "lh:audit:select-name", "duration": 1, "entryType": "measure" }, { "startTime": 224, - "name": "lh:audit:object-alt", + "name": "lh:audit:skip-link", "duration": 1, "entryType": "measure" }, { "startTime": 225, - "name": "lh:audit:select-name", + "name": "lh:audit:tabindex", "duration": 1, "entryType": "measure" }, { "startTime": 226, - "name": "lh:audit:skip-link", + "name": "lh:audit:table-duplicate-name", "duration": 1, "entryType": "measure" }, { "startTime": 227, - "name": "lh:audit:tabindex", + "name": "lh:audit:table-fake-caption", "duration": 1, "entryType": "measure" }, { "startTime": 228, - "name": "lh:audit:table-duplicate-name", + "name": "lh:audit:target-size", "duration": 1, "entryType": "measure" }, { "startTime": 229, - "name": "lh:audit:table-fake-caption", + "name": "lh:audit:td-has-header", "duration": 1, "entryType": "measure" }, { "startTime": 230, - "name": "lh:audit:target-size", + "name": "lh:audit:td-headers-attr", "duration": 1, "entryType": "measure" }, { "startTime": 231, - "name": "lh:audit:td-has-header", + "name": "lh:audit:th-has-data-cells", "duration": 1, "entryType": "measure" }, { "startTime": 232, - "name": "lh:audit:td-headers-attr", + "name": "lh:audit:valid-lang", "duration": 1, "entryType": "measure" }, { "startTime": 233, - "name": "lh:audit:th-has-data-cells", + "name": "lh:audit:video-caption", "duration": 1, "entryType": "measure" }, { "startTime": 234, - "name": "lh:audit:valid-lang", + "name": "lh:audit:custom-controls-labels", "duration": 1, "entryType": "measure" }, { "startTime": 235, - "name": "lh:audit:video-caption", + "name": "lh:audit:custom-controls-roles", "duration": 1, "entryType": "measure" }, { "startTime": 236, - "name": "lh:audit:custom-controls-labels", + "name": "lh:audit:focus-traps", "duration": 1, "entryType": "measure" }, { "startTime": 237, - "name": "lh:audit:custom-controls-roles", + "name": "lh:audit:focusable-controls", "duration": 1, "entryType": "measure" }, { "startTime": 238, - "name": "lh:audit:focus-traps", + "name": "lh:audit:interactive-element-affordance", "duration": 1, "entryType": "measure" }, { "startTime": 239, - "name": "lh:audit:focusable-controls", + "name": "lh:audit:logical-tab-order", "duration": 1, "entryType": "measure" }, { "startTime": 240, - "name": "lh:audit:interactive-element-affordance", + "name": "lh:audit:managed-focus", "duration": 1, "entryType": "measure" }, { "startTime": 241, - "name": "lh:audit:logical-tab-order", + "name": "lh:audit:offscreen-content-hidden", "duration": 1, "entryType": "measure" }, { "startTime": 242, - "name": "lh:audit:managed-focus", + "name": "lh:audit:use-landmarks", "duration": 1, "entryType": "measure" }, { "startTime": 243, - "name": "lh:audit:offscreen-content-hidden", + "name": "lh:audit:visual-order-follows-dom", "duration": 1, "entryType": "measure" }, { "startTime": 244, - "name": "lh:audit:use-landmarks", + "name": "lh:audit:uses-long-cache-ttl", "duration": 1, "entryType": "measure" }, { "startTime": 245, - "name": "lh:audit:visual-order-follows-dom", + "name": "lh:audit:total-byte-weight", "duration": 1, "entryType": "measure" }, { "startTime": 246, - "name": "lh:audit:uses-long-cache-ttl", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 247, - "name": "lh:audit:total-byte-weight", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 248, "name": "lh:audit:offscreen-images", "duration": 1, "entryType": "measure" }, { - "startTime": 249, + "startTime": 247, "name": "lh:audit:render-blocking-resources", "duration": 1, "entryType": "measure" }, { - "startTime": 250, + "startTime": 248, "name": "lh:computed:UnusedCSS", "duration": 1, "entryType": "measure" }, { - "startTime": 251, + "startTime": 249, "name": "lh:computed:FirstContentfulPaint", "duration": 1, "entryType": "measure" }, { - "startTime": 252, + "startTime": 250, "name": "lh:audit:unminified-css", "duration": 1, "entryType": "measure" }, { - "startTime": 253, + "startTime": 251, "name": "lh:audit:unminified-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 254, + "startTime": 252, "name": "lh:audit:unused-css-rules", "duration": 1, "entryType": "measure" }, { - "startTime": 255, + "startTime": 253, "name": "lh:audit:unused-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 256, + "startTime": 254, "name": "lh:audit:modern-image-formats", "duration": 1, "entryType": "measure" }, { - "startTime": 257, + "startTime": 255, "name": "lh:audit:uses-optimized-images", "duration": 1, "entryType": "measure" }, { - "startTime": 258, + "startTime": 256, "name": "lh:audit:uses-text-compression", "duration": 1, "entryType": "measure" }, { - "startTime": 259, + "startTime": 257, "name": "lh:audit:uses-responsive-images", "duration": 1, "entryType": "measure" }, { - "startTime": 260, + "startTime": 258, "name": "lh:computed:ImageRecords", "duration": 1, "entryType": "measure" }, { - "startTime": 261, + "startTime": 259, "name": "lh:audit:efficient-animated-content", "duration": 1, "entryType": "measure" }, { - "startTime": 262, + "startTime": 260, "name": "lh:audit:duplicated-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 263, + "startTime": 261, "name": "lh:audit:legacy-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 264, + "startTime": 262, "name": "lh:audit:doctype", "duration": 1, "entryType": "measure" }, { - "startTime": 265, + "startTime": 263, "name": "lh:audit:charset", "duration": 1, "entryType": "measure" }, { - "startTime": 266, + "startTime": 264, "name": "lh:audit:dom-size", "duration": 1, "entryType": "measure" }, { - "startTime": 267, + "startTime": 265, "name": "lh:audit:geolocation-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 268, + "startTime": 266, "name": "lh:audit:inspector-issues", "duration": 1, "entryType": "measure" }, { - "startTime": 269, + "startTime": 267, "name": "lh:audit:no-document-write", "duration": 1, "entryType": "measure" }, { - "startTime": 270, + "startTime": 268, "name": "lh:audit:js-libraries", "duration": 1, "entryType": "measure" }, { - "startTime": 271, + "startTime": 269, "name": "lh:audit:notification-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 272, + "startTime": 270, "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, { - "startTime": 273, + "startTime": 271, "name": "lh:audit:uses-passive-event-listeners", "duration": 1, "entryType": "measure" }, { - "startTime": 274, + "startTime": 272, "name": "lh:audit:meta-description", "duration": 1, "entryType": "measure" }, { - "startTime": 275, + "startTime": 273, "name": "lh:audit:http-status-code", "duration": 1, "entryType": "measure" }, { - "startTime": 276, + "startTime": 274, "name": "lh:audit:font-size", "duration": 1, "entryType": "measure" }, { - "startTime": 277, + "startTime": 275, "name": "lh:audit:link-text", "duration": 1, "entryType": "measure" }, { - "startTime": 278, + "startTime": 276, "name": "lh:audit:crawlable-anchors", "duration": 1, "entryType": "measure" }, { - "startTime": 279, + "startTime": 277, "name": "lh:audit:is-crawlable", "duration": 1, "entryType": "measure" }, { - "startTime": 280, + "startTime": 278, "name": "lh:audit:robots-txt", "duration": 1, "entryType": "measure" }, { - "startTime": 281, + "startTime": 279, "name": "lh:audit:tap-targets", "duration": 1, "entryType": "measure" }, { - "startTime": 282, + "startTime": 280, "name": "lh:audit:hreflang", "duration": 1, "entryType": "measure" }, { - "startTime": 283, + "startTime": 281, "name": "lh:audit:plugins", "duration": 1, "entryType": "measure" }, { - "startTime": 284, + "startTime": 282, "name": "lh:audit:canonical", "duration": 1, "entryType": "measure" }, { - "startTime": 285, + "startTime": 283, "name": "lh:audit:structured-data", "duration": 1, "entryType": "measure" }, { - "startTime": 286, + "startTime": 284, "name": "lh:audit:bf-cache", "duration": 1, "entryType": "measure" }, { - "startTime": 287, + "startTime": 285, "name": "lh:runner:generate", "duration": 1, "entryType": "measure" } ], - "total": 288 + "total": 286 }, "i18n": { "rendererFormattedStrings": { @@ -7421,12 +7377,6 @@ "core/audits/image-size-responsive.js | description": [ "audits[image-size-responsive].description" ], - "core/audits/preload-fonts.js | title": [ - "audits[preload-fonts].title" - ], - "core/audits/preload-fonts.js | description": [ - "audits[preload-fonts].description" - ], "core/audits/deprecations.js | title": [ "audits.deprecations.title" ], @@ -7463,12 +7413,6 @@ "core/audits/bootup-time.js | columnScriptParse": [ "audits[bootup-time].details.headings[3].label" ], - "core/audits/uses-rel-preload.js | title": [ - "audits[uses-rel-preload].title" - ], - "core/audits/uses-rel-preload.js | description": [ - "audits[uses-rel-preload].description" - ], "core/audits/uses-rel-preconnect.js | title": [ "audits[uses-rel-preconnect].title" ], @@ -8965,13 +8909,6 @@ ] } }, - "preload-fonts": { - "id": "preload-fonts", - "title": "Fonts with `font-display: optional` are preloaded", - "description": "Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)", - "score": null, - "scoreDisplayMode": "notApplicable" - }, "deprecations": { "id": "deprecations", "title": "Avoids deprecated APIs", @@ -11235,11 +11172,6 @@ "weight": 1, "group": "best-practices-ux" }, - { - "id": "preload-fonts", - "weight": 0, - "group": "best-practices-ux" - }, { "id": "no-unload-listeners", "weight": 1, @@ -11864,157 +11796,157 @@ }, { "startTime": 55, - "name": "lh:audit:preload-fonts", + "name": "lh:audit:deprecations", "duration": 1, "entryType": "measure" }, { "startTime": 56, - "name": "lh:audit:deprecations", + "name": "lh:audit:third-party-cookies", "duration": 1, "entryType": "measure" }, { "startTime": 57, - "name": "lh:audit:third-party-cookies", + "name": "lh:audit:mainthread-work-breakdown", "duration": 1, "entryType": "measure" }, { "startTime": 58, - "name": "lh:audit:mainthread-work-breakdown", + "name": "lh:computed:MainThreadTasks", "duration": 1, "entryType": "measure" }, { "startTime": 59, - "name": "lh:computed:MainThreadTasks", + "name": "lh:audit:bootup-time", "duration": 1, "entryType": "measure" }, { "startTime": 60, - "name": "lh:audit:bootup-time", + "name": "lh:computed:TBTImpactTasks", "duration": 1, "entryType": "measure" }, { "startTime": 61, - "name": "lh:computed:TBTImpactTasks", + "name": "lh:audit:network-requests", "duration": 1, "entryType": "measure" }, { "startTime": 62, - "name": "lh:audit:network-requests", + "name": "lh:computed:EntityClassification", "duration": 1, "entryType": "measure" }, { "startTime": 63, - "name": "lh:computed:EntityClassification", + "name": "lh:audit:network-rtt", "duration": 1, "entryType": "measure" }, { "startTime": 64, - "name": "lh:audit:network-rtt", + "name": "lh:computed:NetworkAnalysis", "duration": 1, "entryType": "measure" }, { "startTime": 65, - "name": "lh:computed:NetworkAnalysis", + "name": "lh:audit:network-server-latency", "duration": 1, "entryType": "measure" }, { "startTime": 66, - "name": "lh:audit:network-server-latency", + "name": "lh:audit:main-thread-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 67, - "name": "lh:audit:main-thread-tasks", + "name": "lh:audit:resource-summary", "duration": 1, "entryType": "measure" }, { "startTime": 68, - "name": "lh:audit:resource-summary", + "name": "lh:computed:ResourceSummary", "duration": 1, "entryType": "measure" }, { "startTime": 69, - "name": "lh:computed:ResourceSummary", + "name": "lh:audit:third-party-summary", "duration": 1, "entryType": "measure" }, { "startTime": 70, - "name": "lh:audit:third-party-summary", + "name": "lh:audit:layout-shift-elements", "duration": 1, "entryType": "measure" }, { "startTime": 71, - "name": "lh:audit:layout-shift-elements", + "name": "lh:audit:layout-shifts", "duration": 1, "entryType": "measure" }, { "startTime": 72, - "name": "lh:audit:layout-shifts", + "name": "lh:computed:TraceEngineResult", "duration": 1, "entryType": "measure" }, { "startTime": 73, - "name": "lh:computed:TraceEngineResult", + "name": "lh:audit:long-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 74, - "name": "lh:audit:long-tasks", + "name": "lh:audit:no-unload-listeners", "duration": 1, "entryType": "measure" }, { "startTime": 75, - "name": "lh:audit:no-unload-listeners", + "name": "lh:audit:non-composited-animations", "duration": 1, "entryType": "measure" }, { "startTime": 76, - "name": "lh:audit:non-composited-animations", + "name": "lh:audit:unsized-images", "duration": 1, "entryType": "measure" }, { "startTime": 77, - "name": "lh:audit:unsized-images", + "name": "lh:audit:valid-source-maps", "duration": 1, "entryType": "measure" }, { "startTime": 78, - "name": "lh:audit:valid-source-maps", + "name": "lh:audit:script-treemap-data", "duration": 1, "entryType": "measure" }, { "startTime": 79, - "name": "lh:audit:script-treemap-data", + "name": "lh:computed:ModuleDuplication", "duration": 1, "entryType": "measure" }, { "startTime": 80, - "name": "lh:computed:ModuleDuplication", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, @@ -12032,144 +11964,138 @@ }, { "startTime": 83, - "name": "lh:computed:UnusedJavascriptSummary", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 84, "name": "lh:audit:uses-long-cache-ttl", "duration": 1, "entryType": "measure" }, { - "startTime": 85, + "startTime": 84, "name": "lh:audit:total-byte-weight", "duration": 1, "entryType": "measure" }, { - "startTime": 86, + "startTime": 85, "name": "lh:audit:unminified-css", "duration": 1, "entryType": "measure" }, { - "startTime": 87, + "startTime": 86, "name": "lh:computed:LoadSimulator", "duration": 1, "entryType": "measure" }, { - "startTime": 88, + "startTime": 87, "name": "lh:audit:unminified-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 89, + "startTime": 88, "name": "lh:audit:unused-css-rules", "duration": 1, "entryType": "measure" }, { - "startTime": 90, + "startTime": 89, "name": "lh:computed:UnusedCSS", "duration": 1, "entryType": "measure" }, { - "startTime": 91, + "startTime": 90, "name": "lh:audit:unused-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 92, + "startTime": 91, "name": "lh:audit:modern-image-formats", "duration": 1, "entryType": "measure" }, { - "startTime": 93, + "startTime": 92, "name": "lh:audit:uses-optimized-images", "duration": 1, "entryType": "measure" }, { - "startTime": 94, + "startTime": 93, "name": "lh:audit:uses-text-compression", "duration": 1, "entryType": "measure" }, { - "startTime": 95, + "startTime": 94, "name": "lh:audit:uses-responsive-images", "duration": 1, "entryType": "measure" }, { - "startTime": 96, + "startTime": 95, "name": "lh:computed:ImageRecords", "duration": 1, "entryType": "measure" }, { - "startTime": 97, + "startTime": 96, "name": "lh:audit:efficient-animated-content", "duration": 1, "entryType": "measure" }, { - "startTime": 98, + "startTime": 97, "name": "lh:audit:duplicated-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 99, + "startTime": 98, "name": "lh:audit:legacy-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 100, + "startTime": 99, "name": "lh:audit:inspector-issues", "duration": 1, "entryType": "measure" }, { - "startTime": 101, + "startTime": 100, "name": "lh:audit:no-document-write", "duration": 1, "entryType": "measure" }, { - "startTime": 102, + "startTime": 101, "name": "lh:audit:uses-passive-event-listeners", "duration": 1, "entryType": "measure" }, { - "startTime": 103, + "startTime": 102, "name": "lh:audit:work-during-interaction", "duration": 1, "entryType": "measure" }, { - "startTime": 104, + "startTime": 103, "name": "lh:audit:bf-cache", "duration": 1, "entryType": "measure" }, { - "startTime": 105, + "startTime": 104, "name": "lh:runner:generate", "duration": 1, "entryType": "measure" } ], - "total": 106 + "total": 105 }, "i18n": { "rendererFormattedStrings": { @@ -12349,12 +12275,6 @@ "core/audits/image-size-responsive.js | columnExpected": [ "audits[image-size-responsive].details.headings[4].label" ], - "core/audits/preload-fonts.js | title": [ - "audits[preload-fonts].title" - ], - "core/audits/preload-fonts.js | description": [ - "audits[preload-fonts].description" - ], "core/audits/deprecations.js | title": [ "audits.deprecations.title" ], @@ -18545,13 +18465,6 @@ "items": [] } }, - "preload-fonts": { - "id": "preload-fonts", - "title": "Fonts with `font-display: optional` are preloaded", - "description": "Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)", - "score": null, - "scoreDisplayMode": "notApplicable" - }, "deprecations": { "id": "deprecations", "title": "Avoids deprecated APIs", @@ -18715,20 +18628,6 @@ }, "guidanceLevel": 1 }, - "uses-rel-preload": { - "id": "uses-rel-preload", - "title": "Preload key requests", - "description": "Consider using `` to prioritize fetching resources that are currently requested later in page load. [Learn how to preload key requests](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preload/).", - "score": null, - "scoreDisplayMode": "notApplicable", - "details": { - "type": "opportunity", - "headings": [], - "items": [], - "overallSavingsMs": 0 - }, - "guidanceLevel": 3 - }, "uses-rel-preconnect": { "id": "uses-rel-preconnect", "title": "Preconnect to required origins", @@ -21990,7 +21889,6 @@ "critical-request-chains", "uses-text-compression", "uses-rel-preconnect", - "uses-rel-preload", "font-display", "unminified-javascript", "unminified-css", @@ -22009,7 +21907,6 @@ "critical-request-chains", "uses-text-compression", "uses-rel-preconnect", - "uses-rel-preload", "font-display", "unminified-javascript", "unminified-css", @@ -22126,10 +22023,6 @@ "id": "redirects", "weight": 0 }, - { - "id": "uses-rel-preload", - "weight": 0 - }, { "id": "efficient-animated-content", "weight": 0 @@ -22696,11 +22589,6 @@ "weight": 1, "group": "best-practices-ux" }, - { - "id": "preload-fonts", - "weight": 0, - "group": "best-practices-ux" - }, { "id": "doctype", "weight": 1, @@ -24152,259 +24040,259 @@ }, { "startTime": 113, - "name": "lh:audit:preload-fonts", + "name": "lh:audit:deprecations", "duration": 1, "entryType": "measure" }, { "startTime": 114, - "name": "lh:audit:deprecations", + "name": "lh:audit:third-party-cookies", "duration": 1, "entryType": "measure" }, { "startTime": 115, - "name": "lh:audit:third-party-cookies", + "name": "lh:audit:mainthread-work-breakdown", "duration": 1, "entryType": "measure" }, { "startTime": 116, - "name": "lh:audit:mainthread-work-breakdown", + "name": "lh:computed:MainThreadTasks", "duration": 1, "entryType": "measure" }, { "startTime": 117, - "name": "lh:computed:MainThreadTasks", + "name": "lh:audit:bootup-time", "duration": 1, "entryType": "measure" }, { "startTime": 118, - "name": "lh:audit:bootup-time", + "name": "lh:computed:TBTImpactTasks", "duration": 1, "entryType": "measure" }, { "startTime": 119, - "name": "lh:computed:TBTImpactTasks", + "name": "lh:audit:uses-rel-preconnect", "duration": 1, "entryType": "measure" }, { "startTime": 120, - "name": "lh:audit:uses-rel-preload", + "name": "lh:audit:font-display", "duration": 1, "entryType": "measure" }, { "startTime": 121, - "name": "lh:audit:uses-rel-preconnect", + "name": "lh:audit:diagnostics", "duration": 1, "entryType": "measure" }, { "startTime": 122, - "name": "lh:audit:font-display", + "name": "lh:audit:network-requests", "duration": 1, "entryType": "measure" }, { "startTime": 123, - "name": "lh:audit:diagnostics", + "name": "lh:computed:EntityClassification", "duration": 1, "entryType": "measure" }, { "startTime": 124, - "name": "lh:audit:network-requests", + "name": "lh:audit:network-rtt", "duration": 1, "entryType": "measure" }, { "startTime": 125, - "name": "lh:computed:EntityClassification", + "name": "lh:audit:network-server-latency", "duration": 1, "entryType": "measure" }, { "startTime": 126, - "name": "lh:audit:network-rtt", + "name": "lh:audit:main-thread-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 127, - "name": "lh:audit:network-server-latency", + "name": "lh:audit:metrics", "duration": 1, "entryType": "measure" }, { "startTime": 128, - "name": "lh:audit:main-thread-tasks", + "name": "lh:computed:TimingSummary", "duration": 1, "entryType": "measure" }, { "startTime": 129, - "name": "lh:audit:metrics", + "name": "lh:computed:FirstContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 130, - "name": "lh:computed:TimingSummary", + "name": "lh:computed:LargestContentfulPaintAllFrames", "duration": 1, "entryType": "measure" }, { "startTime": 131, - "name": "lh:computed:FirstContentfulPaintAllFrames", + "name": "lh:computed:LCPBreakdown", "duration": 1, "entryType": "measure" }, { "startTime": 132, - "name": "lh:computed:LargestContentfulPaintAllFrames", + "name": "lh:computed:TimeToFirstByte", "duration": 1, "entryType": "measure" }, { "startTime": 133, - "name": "lh:computed:LCPBreakdown", + "name": "lh:computed:LCPImageRecord", "duration": 1, "entryType": "measure" }, { "startTime": 134, - "name": "lh:computed:TimeToFirstByte", + "name": "lh:audit:performance-budget", "duration": 1, "entryType": "measure" }, { "startTime": 135, - "name": "lh:computed:LCPImageRecord", + "name": "lh:computed:ResourceSummary", "duration": 1, "entryType": "measure" }, { "startTime": 136, - "name": "lh:audit:performance-budget", + "name": "lh:audit:timing-budget", "duration": 1, "entryType": "measure" }, { "startTime": 137, - "name": "lh:computed:ResourceSummary", + "name": "lh:audit:resource-summary", "duration": 1, "entryType": "measure" }, { "startTime": 138, - "name": "lh:audit:timing-budget", + "name": "lh:audit:third-party-summary", "duration": 1, "entryType": "measure" }, { "startTime": 139, - "name": "lh:audit:resource-summary", + "name": "lh:audit:third-party-facades", "duration": 1, "entryType": "measure" }, { "startTime": 140, - "name": "lh:audit:third-party-summary", + "name": "lh:audit:largest-contentful-paint-element", "duration": 1, "entryType": "measure" }, { "startTime": 141, - "name": "lh:audit:third-party-facades", + "name": "lh:audit:lcp-lazy-loaded", "duration": 1, "entryType": "measure" }, { "startTime": 142, - "name": "lh:audit:largest-contentful-paint-element", + "name": "lh:audit:layout-shift-elements", "duration": 1, "entryType": "measure" }, { "startTime": 143, - "name": "lh:audit:lcp-lazy-loaded", + "name": "lh:audit:layout-shifts", "duration": 1, "entryType": "measure" }, { "startTime": 144, - "name": "lh:audit:layout-shift-elements", + "name": "lh:computed:TraceEngineResult", "duration": 1, "entryType": "measure" }, { "startTime": 145, - "name": "lh:audit:layout-shifts", + "name": "lh:audit:long-tasks", "duration": 1, "entryType": "measure" }, { "startTime": 146, - "name": "lh:computed:TraceEngineResult", + "name": "lh:audit:no-unload-listeners", "duration": 1, "entryType": "measure" }, { "startTime": 147, - "name": "lh:audit:long-tasks", + "name": "lh:audit:non-composited-animations", "duration": 1, "entryType": "measure" }, { "startTime": 148, - "name": "lh:audit:no-unload-listeners", + "name": "lh:audit:unsized-images", "duration": 1, "entryType": "measure" }, { "startTime": 149, - "name": "lh:audit:non-composited-animations", + "name": "lh:audit:valid-source-maps", "duration": 1, "entryType": "measure" }, { "startTime": 150, - "name": "lh:audit:unsized-images", + "name": "lh:audit:prioritize-lcp-image", "duration": 1, "entryType": "measure" }, { "startTime": 151, - "name": "lh:audit:valid-source-maps", + "name": "lh:audit:csp-xss", "duration": 1, "entryType": "measure" }, { "startTime": 152, - "name": "lh:audit:prioritize-lcp-image", + "name": "lh:audit:script-treemap-data", "duration": 1, "entryType": "measure" }, { "startTime": 153, - "name": "lh:audit:csp-xss", + "name": "lh:computed:ModuleDuplication", "duration": 1, "entryType": "measure" }, { "startTime": 154, - "name": "lh:audit:script-treemap-data", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, { "startTime": 155, - "name": "lh:computed:ModuleDuplication", + "name": "lh:computed:UnusedJavascriptSummary", "duration": 1, "entryType": "measure" }, @@ -24476,714 +24364,702 @@ }, { "startTime": 167, - "name": "lh:computed:UnusedJavascriptSummary", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 168, - "name": "lh:computed:UnusedJavascriptSummary", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 169, "name": "lh:audit:pwa-cross-browser", "duration": 1, "entryType": "measure" }, { - "startTime": 170, + "startTime": 168, "name": "lh:audit:pwa-page-transitions", "duration": 1, "entryType": "measure" }, { - "startTime": 171, + "startTime": 169, "name": "lh:audit:pwa-each-page-has-url", "duration": 1, "entryType": "measure" }, { - "startTime": 172, + "startTime": 170, "name": "lh:audit:accesskeys", "duration": 1, "entryType": "measure" }, { - "startTime": 173, + "startTime": 171, "name": "lh:audit:aria-allowed-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 174, + "startTime": 172, "name": "lh:audit:aria-allowed-role", "duration": 1, "entryType": "measure" }, { - "startTime": 175, + "startTime": 173, "name": "lh:audit:aria-command-name", "duration": 1, "entryType": "measure" }, { - "startTime": 176, + "startTime": 174, "name": "lh:audit:aria-dialog-name", "duration": 1, "entryType": "measure" }, { - "startTime": 177, + "startTime": 175, "name": "lh:audit:aria-hidden-body", "duration": 1, "entryType": "measure" }, { - "startTime": 178, + "startTime": 176, "name": "lh:audit:aria-hidden-focus", "duration": 1, "entryType": "measure" }, { - "startTime": 179, + "startTime": 177, "name": "lh:audit:aria-input-field-name", "duration": 1, "entryType": "measure" }, { - "startTime": 180, + "startTime": 178, "name": "lh:audit:aria-meter-name", "duration": 1, "entryType": "measure" }, { - "startTime": 181, + "startTime": 179, "name": "lh:audit:aria-progressbar-name", "duration": 1, "entryType": "measure" }, { - "startTime": 182, + "startTime": 180, "name": "lh:audit:aria-required-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 183, + "startTime": 181, "name": "lh:audit:aria-required-children", "duration": 1, "entryType": "measure" }, { - "startTime": 184, + "startTime": 182, "name": "lh:audit:aria-required-parent", "duration": 1, "entryType": "measure" }, { - "startTime": 185, + "startTime": 183, "name": "lh:audit:aria-roles", "duration": 1, "entryType": "measure" }, { - "startTime": 186, + "startTime": 184, "name": "lh:audit:aria-text", "duration": 1, "entryType": "measure" }, { - "startTime": 187, + "startTime": 185, "name": "lh:audit:aria-toggle-field-name", "duration": 1, "entryType": "measure" }, { - "startTime": 188, + "startTime": 186, "name": "lh:audit:aria-tooltip-name", "duration": 1, "entryType": "measure" }, { - "startTime": 189, + "startTime": 187, "name": "lh:audit:aria-treeitem-name", "duration": 1, "entryType": "measure" }, { - "startTime": 190, + "startTime": 188, "name": "lh:audit:aria-valid-attr-value", "duration": 1, "entryType": "measure" }, { - "startTime": 191, + "startTime": 189, "name": "lh:audit:aria-valid-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 192, + "startTime": 190, "name": "lh:audit:button-name", "duration": 1, "entryType": "measure" }, { - "startTime": 193, + "startTime": 191, "name": "lh:audit:bypass", "duration": 1, "entryType": "measure" }, { - "startTime": 194, + "startTime": 192, "name": "lh:audit:color-contrast", "duration": 1, "entryType": "measure" }, { - "startTime": 195, + "startTime": 193, "name": "lh:audit:definition-list", "duration": 1, "entryType": "measure" }, { - "startTime": 196, + "startTime": 194, "name": "lh:audit:dlitem", "duration": 1, "entryType": "measure" }, { - "startTime": 197, + "startTime": 195, "name": "lh:audit:document-title", "duration": 1, "entryType": "measure" }, { - "startTime": 198, + "startTime": 196, "name": "lh:audit:duplicate-id-active", "duration": 1, "entryType": "measure" }, { - "startTime": 199, + "startTime": 197, "name": "lh:audit:duplicate-id-aria", "duration": 1, "entryType": "measure" }, { - "startTime": 200, + "startTime": 198, "name": "lh:audit:empty-heading", "duration": 1, "entryType": "measure" }, { - "startTime": 201, + "startTime": 199, "name": "lh:audit:form-field-multiple-labels", "duration": 1, "entryType": "measure" }, { - "startTime": 202, + "startTime": 200, "name": "lh:audit:frame-title", "duration": 1, "entryType": "measure" }, { - "startTime": 203, + "startTime": 201, "name": "lh:audit:heading-order", "duration": 1, "entryType": "measure" }, { - "startTime": 204, + "startTime": 202, "name": "lh:audit:html-has-lang", "duration": 1, "entryType": "measure" }, { - "startTime": 205, + "startTime": 203, "name": "lh:audit:html-lang-valid", "duration": 1, "entryType": "measure" }, { - "startTime": 206, + "startTime": 204, "name": "lh:audit:html-xml-lang-mismatch", "duration": 1, "entryType": "measure" }, { - "startTime": 207, + "startTime": 205, "name": "lh:audit:identical-links-same-purpose", "duration": 1, "entryType": "measure" }, { - "startTime": 208, + "startTime": 206, "name": "lh:audit:image-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 209, + "startTime": 207, "name": "lh:audit:image-redundant-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 210, + "startTime": 208, "name": "lh:audit:input-button-name", "duration": 1, "entryType": "measure" }, { - "startTime": 211, + "startTime": 209, "name": "lh:audit:input-image-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 212, + "startTime": 210, "name": "lh:audit:label-content-name-mismatch", "duration": 1, "entryType": "measure" }, { - "startTime": 213, + "startTime": 211, "name": "lh:audit:label", "duration": 1, "entryType": "measure" }, { - "startTime": 214, + "startTime": 212, "name": "lh:audit:landmark-one-main", "duration": 1, "entryType": "measure" }, { - "startTime": 215, + "startTime": 213, "name": "lh:audit:link-name", "duration": 1, "entryType": "measure" }, { - "startTime": 216, + "startTime": 214, "name": "lh:audit:link-in-text-block", "duration": 1, "entryType": "measure" }, { - "startTime": 217, + "startTime": 215, "name": "lh:audit:list", "duration": 1, "entryType": "measure" }, { - "startTime": 218, + "startTime": 216, "name": "lh:audit:listitem", "duration": 1, "entryType": "measure" }, { - "startTime": 219, + "startTime": 217, "name": "lh:audit:meta-refresh", "duration": 1, "entryType": "measure" }, { - "startTime": 220, + "startTime": 218, "name": "lh:audit:meta-viewport", "duration": 1, "entryType": "measure" }, { - "startTime": 221, + "startTime": 219, "name": "lh:audit:object-alt", "duration": 1, "entryType": "measure" }, { - "startTime": 222, + "startTime": 220, "name": "lh:audit:select-name", "duration": 1, "entryType": "measure" }, { - "startTime": 223, + "startTime": 221, "name": "lh:audit:skip-link", "duration": 1, "entryType": "measure" }, { - "startTime": 224, + "startTime": 222, "name": "lh:audit:tabindex", "duration": 1, "entryType": "measure" }, { - "startTime": 225, + "startTime": 223, "name": "lh:audit:table-duplicate-name", "duration": 1, "entryType": "measure" }, { - "startTime": 226, + "startTime": 224, "name": "lh:audit:table-fake-caption", "duration": 1, "entryType": "measure" }, { - "startTime": 227, + "startTime": 225, "name": "lh:audit:target-size", "duration": 1, "entryType": "measure" }, { - "startTime": 228, + "startTime": 226, "name": "lh:audit:td-has-header", "duration": 1, "entryType": "measure" }, { - "startTime": 229, + "startTime": 227, "name": "lh:audit:td-headers-attr", "duration": 1, "entryType": "measure" }, { - "startTime": 230, + "startTime": 228, "name": "lh:audit:th-has-data-cells", "duration": 1, "entryType": "measure" }, { - "startTime": 231, + "startTime": 229, "name": "lh:audit:valid-lang", "duration": 1, "entryType": "measure" }, { - "startTime": 232, + "startTime": 230, "name": "lh:audit:video-caption", "duration": 1, "entryType": "measure" }, { - "startTime": 233, + "startTime": 231, "name": "lh:audit:custom-controls-labels", "duration": 1, "entryType": "measure" }, { - "startTime": 234, + "startTime": 232, "name": "lh:audit:custom-controls-roles", "duration": 1, "entryType": "measure" }, { - "startTime": 235, + "startTime": 233, "name": "lh:audit:focus-traps", "duration": 1, "entryType": "measure" }, { - "startTime": 236, + "startTime": 234, "name": "lh:audit:focusable-controls", "duration": 1, "entryType": "measure" }, { - "startTime": 237, + "startTime": 235, "name": "lh:audit:interactive-element-affordance", "duration": 1, "entryType": "measure" }, { - "startTime": 238, + "startTime": 236, "name": "lh:audit:logical-tab-order", "duration": 1, "entryType": "measure" }, { - "startTime": 239, + "startTime": 237, "name": "lh:audit:managed-focus", "duration": 1, "entryType": "measure" }, { - "startTime": 240, + "startTime": 238, "name": "lh:audit:offscreen-content-hidden", "duration": 1, "entryType": "measure" }, { - "startTime": 241, + "startTime": 239, "name": "lh:audit:use-landmarks", "duration": 1, "entryType": "measure" }, { - "startTime": 242, + "startTime": 240, "name": "lh:audit:visual-order-follows-dom", "duration": 1, "entryType": "measure" }, { - "startTime": 243, + "startTime": 241, "name": "lh:audit:uses-long-cache-ttl", "duration": 1, "entryType": "measure" }, { - "startTime": 244, + "startTime": 242, "name": "lh:audit:total-byte-weight", "duration": 1, "entryType": "measure" }, { - "startTime": 245, + "startTime": 243, "name": "lh:audit:offscreen-images", "duration": 1, "entryType": "measure" }, { - "startTime": 246, + "startTime": 244, "name": "lh:audit:render-blocking-resources", "duration": 1, "entryType": "measure" }, { - "startTime": 247, + "startTime": 245, "name": "lh:computed:UnusedCSS", "duration": 1, "entryType": "measure" }, { - "startTime": 248, + "startTime": 246, "name": "lh:computed:FirstContentfulPaint", "duration": 1, "entryType": "measure" }, { - "startTime": 249, + "startTime": 247, "name": "lh:audit:unminified-css", "duration": 1, "entryType": "measure" }, { - "startTime": 250, + "startTime": 248, "name": "lh:audit:unminified-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 251, + "startTime": 249, "name": "lh:audit:unused-css-rules", "duration": 1, "entryType": "measure" }, { - "startTime": 252, + "startTime": 250, "name": "lh:audit:unused-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 253, + "startTime": 251, "name": "lh:audit:modern-image-formats", "duration": 1, "entryType": "measure" }, { - "startTime": 254, + "startTime": 252, "name": "lh:audit:uses-optimized-images", "duration": 1, "entryType": "measure" }, { - "startTime": 255, + "startTime": 253, "name": "lh:audit:uses-text-compression", "duration": 1, "entryType": "measure" }, { - "startTime": 256, + "startTime": 254, "name": "lh:audit:uses-responsive-images", "duration": 1, "entryType": "measure" }, { - "startTime": 257, + "startTime": 255, "name": "lh:computed:ImageRecords", "duration": 1, "entryType": "measure" }, { - "startTime": 258, + "startTime": 256, "name": "lh:audit:efficient-animated-content", "duration": 1, "entryType": "measure" }, { - "startTime": 259, + "startTime": 257, "name": "lh:audit:duplicated-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 260, + "startTime": 258, "name": "lh:audit:legacy-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 261, + "startTime": 259, "name": "lh:audit:doctype", "duration": 1, "entryType": "measure" }, { - "startTime": 262, + "startTime": 260, "name": "lh:audit:charset", "duration": 1, "entryType": "measure" }, { - "startTime": 263, + "startTime": 261, "name": "lh:audit:dom-size", "duration": 1, "entryType": "measure" }, { - "startTime": 264, + "startTime": 262, "name": "lh:audit:geolocation-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 265, + "startTime": 263, "name": "lh:audit:inspector-issues", "duration": 1, "entryType": "measure" }, { - "startTime": 266, + "startTime": 264, "name": "lh:audit:no-document-write", "duration": 1, "entryType": "measure" }, { - "startTime": 267, + "startTime": 265, "name": "lh:audit:js-libraries", "duration": 1, "entryType": "measure" }, { - "startTime": 268, + "startTime": 266, "name": "lh:audit:notification-on-start", "duration": 1, "entryType": "measure" }, { - "startTime": 269, + "startTime": 267, "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, { - "startTime": 270, + "startTime": 268, "name": "lh:audit:uses-passive-event-listeners", "duration": 1, "entryType": "measure" }, { - "startTime": 271, + "startTime": 269, "name": "lh:audit:meta-description", "duration": 1, "entryType": "measure" }, { - "startTime": 272, + "startTime": 270, "name": "lh:audit:http-status-code", "duration": 1, "entryType": "measure" }, { - "startTime": 273, + "startTime": 271, "name": "lh:audit:font-size", "duration": 1, "entryType": "measure" }, { - "startTime": 274, + "startTime": 272, "name": "lh:audit:link-text", "duration": 1, "entryType": "measure" }, { - "startTime": 275, + "startTime": 273, "name": "lh:audit:crawlable-anchors", "duration": 1, "entryType": "measure" }, { - "startTime": 276, + "startTime": 274, "name": "lh:audit:is-crawlable", "duration": 1, "entryType": "measure" }, { - "startTime": 277, + "startTime": 275, "name": "lh:audit:robots-txt", "duration": 1, "entryType": "measure" }, { - "startTime": 278, + "startTime": 276, "name": "lh:audit:tap-targets", "duration": 1, "entryType": "measure" }, { - "startTime": 279, + "startTime": 277, "name": "lh:audit:hreflang", "duration": 1, "entryType": "measure" }, { - "startTime": 280, + "startTime": 278, "name": "lh:audit:plugins", "duration": 1, "entryType": "measure" }, { - "startTime": 281, + "startTime": 279, "name": "lh:audit:canonical", "duration": 1, "entryType": "measure" }, { - "startTime": 282, + "startTime": 280, "name": "lh:audit:structured-data", "duration": 1, "entryType": "measure" }, { - "startTime": 283, + "startTime": 281, "name": "lh:audit:bf-cache", "duration": 1, "entryType": "measure" }, { - "startTime": 284, + "startTime": 282, "name": "lh:runner:generate", "duration": 1, "entryType": "measure" } ], - "total": 285 + "total": 283 }, "i18n": { "rendererFormattedStrings": { @@ -25519,12 +25395,6 @@ "core/audits/image-size-responsive.js | description": [ "audits[image-size-responsive].description" ], - "core/audits/preload-fonts.js | title": [ - "audits[preload-fonts].title" - ], - "core/audits/preload-fonts.js | description": [ - "audits[preload-fonts].description" - ], "core/audits/deprecations.js | title": [ "audits.deprecations.title" ], @@ -25561,12 +25431,6 @@ "core/audits/bootup-time.js | columnScriptParse": [ "audits[bootup-time].details.headings[3].label" ], - "core/audits/uses-rel-preload.js | title": [ - "audits[uses-rel-preload].title" - ], - "core/audits/uses-rel-preload.js | description": [ - "audits[uses-rel-preload].description" - ], "core/audits/uses-rel-preconnect.js | title": [ "audits[uses-rel-preconnect].title" ], diff --git a/core/test/lib/stack-packs-test.js b/core/test/lib/stack-packs-test.js index af42c22eb34f..a754d6fe0cf1 100644 --- a/core/test/lib/stack-packs-test.js +++ b/core/test/lib/stack-packs-test.js @@ -326,6 +326,7 @@ Array [ expect([...unrecognizedKeys]).toMatchInlineSnapshot(` Array [ "unminified-warning", + "uses-rel-preload", "disable-bundling", ] `); diff --git a/core/test/results/sample_v2.json b/core/test/results/sample_v2.json index 81052163a3ac..9e043811f407 100644 --- a/core/test/results/sample_v2.json +++ b/core/test/results/sample_v2.json @@ -1036,13 +1036,6 @@ "items": [] } }, - "preload-fonts": { - "id": "preload-fonts", - "title": "Fonts with `font-display: optional` are preloaded", - "description": "Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)", - "score": null, - "scoreDisplayMode": "notApplicable" - }, "deprecations": { "id": "deprecations", "title": "Uses deprecated APIs", @@ -1233,20 +1226,6 @@ }, "guidanceLevel": 1 }, - "uses-rel-preload": { - "id": "uses-rel-preload", - "title": "Preload key requests", - "description": "Consider using `` to prioritize fetching resources that are currently requested later in page load. [Learn how to preload key requests](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preload/).", - "score": null, - "scoreDisplayMode": "notApplicable", - "details": { - "type": "opportunity", - "headings": [], - "items": [], - "overallSavingsMs": 0 - }, - "guidanceLevel": 3 - }, "uses-rel-preconnect": { "id": "uses-rel-preconnect", "title": "Preconnect to required origins", @@ -6028,7 +6007,6 @@ "critical-request-chains", "uses-text-compression", "uses-rel-preconnect", - "uses-rel-preload", "font-display", "unminified-javascript", "unminified-css", @@ -6047,7 +6025,6 @@ "critical-request-chains", "uses-text-compression", "uses-rel-preconnect", - "uses-rel-preload", "font-display", "unminified-javascript", "unminified-css", @@ -6164,10 +6141,6 @@ "id": "redirects", "weight": 0 }, - { - "id": "uses-rel-preload", - "weight": 0 - }, { "id": "uses-http2", "weight": 0 @@ -6738,11 +6711,6 @@ "weight": 1, "group": "best-practices-ux" }, - { - "id": "preload-fonts", - "weight": 0, - "group": "best-practices-ux" - }, { "id": "doctype", "weight": 1, @@ -8362,12 +8330,6 @@ "duration": 100, "entryType": "measure" }, - { - "startTime": 0, - "name": "lh:audit:preload-fonts", - "duration": 100, - "entryType": "measure" - }, { "startTime": 0, "name": "lh:audit:deprecations", @@ -8404,12 +8366,6 @@ "duration": 100, "entryType": "measure" }, - { - "startTime": 0, - "name": "lh:audit:uses-rel-preload", - "duration": 100, - "entryType": "measure" - }, { "startTime": 0, "name": "lh:audit:uses-rel-preconnect", @@ -9830,12 +9786,6 @@ "core/audits/image-size-responsive.js | description": [ "audits[image-size-responsive].description" ], - "core/audits/preload-fonts.js | title": [ - "audits[preload-fonts].title" - ], - "core/audits/preload-fonts.js | description": [ - "audits[preload-fonts].description" - ], "core/audits/deprecations.js | failureTitle": [ "audits.deprecations.title" ], @@ -9883,12 +9833,6 @@ "core/audits/bootup-time.js | columnScriptParse": [ "audits[bootup-time].details.headings[3].label" ], - "core/audits/uses-rel-preload.js | title": [ - "audits[uses-rel-preload].title" - ], - "core/audits/uses-rel-preload.js | description": [ - "audits[uses-rel-preload].description" - ], "core/audits/uses-rel-preconnect.js | title": [ "audits[uses-rel-preconnect].title" ], diff --git a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap index 0f21b2b7fdec..4542d2a49bf7 100644 --- a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap +++ b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap @@ -118,7 +118,6 @@ Array [ "paste-preventing-inputs", "performance-budget", "plugins", - "preload-fonts", "prioritize-lcp-image", "pwa-cross-browser", "pwa-each-page-has-url", @@ -162,7 +161,6 @@ Array [ "uses-optimized-images", "uses-passive-event-listeners", "uses-rel-preconnect", - "uses-rel-preload", "uses-responsive-images", "uses-text-compression", "valid-lang", @@ -291,7 +289,6 @@ Array [ "paste-preventing-inputs", "performance-budget", "plugins", - "preload-fonts", "prioritize-lcp-image", "pwa-cross-browser", "pwa-each-page-has-url", @@ -335,7 +332,6 @@ Array [ "uses-optimized-images", "uses-passive-event-listeners", "uses-rel-preconnect", - "uses-rel-preload", "uses-responsive-images", "uses-text-compression", "valid-lang", @@ -467,7 +463,6 @@ Array [ "no-document-write", "no-unload-listeners", "non-composited-animations", - "preload-fonts", "resource-summary", "screenshot-thumbnails", "script-treemap-data", @@ -496,7 +491,6 @@ exports[`Individual modes API startTimespan should compute ConsoleMessage result Array [ "layout-shifts", "non-composited-animations", - "preload-fonts", "third-party-summary", "user-timings", ] @@ -530,7 +524,6 @@ Array [ "no-document-write", "no-unload-listeners", "non-composited-animations", - "preload-fonts", "resource-summary", "screenshot-thumbnails", "script-treemap-data", @@ -566,7 +559,6 @@ Array [ "network-rtt", "network-server-latency", "non-composited-animations", - "preload-fonts", "third-party-summary", "unminified-css", "unminified-javascript", diff --git a/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts b/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts index e4cb209e5eff..b21f9ae1955b 100644 --- a/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts +++ b/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts @@ -122,7 +122,7 @@ describe('Navigation', function() { }); const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr, ['max-potential-fid']); - assert.strictEqual(auditResults.length, 168); + assert.strictEqual(auditResults.length, 166); assert.deepStrictEqual(erroredAudits, []); assert.deepStrictEqual(failedAudits.map(audit => audit.id), [ 'installable-manifest', @@ -204,7 +204,7 @@ describe('Navigation', function() { ]; const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr, flakyAudits); - assert.strictEqual(auditResults.length, 168); + assert.strictEqual(auditResults.length, 166); assert.deepStrictEqual(erroredAudits, []); assert.deepStrictEqual(failedAudits.map(audit => audit.id), [ 'installable-manifest', diff --git a/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts b/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts index 1f95e7bb5d3b..50352b6800c0 100644 --- a/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts +++ b/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts @@ -91,7 +91,7 @@ describe('Timespan', function() { assert.strictEqual(devicePixelRatio, 1); const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr); - assert.strictEqual(auditResults.length, 48); + assert.strictEqual(auditResults.length, 47); assert.deepStrictEqual(erroredAudits, []); assert.deepStrictEqual(failedAudits.map(audit => audit.id), []);