Repository: GoogleChrome/lighthouse
Pull request #12661 (2021-06-14 19:44:19)

core(preload): temporarily disable all preload advice
**Summary**
Temporarily moves all our preload audits to always return `notApplicable` while the preload fix is being evaluated. See #11960 for long-term plan and more discussion.

**Related Issues/PRs**
ref https://github.com/GoogleChrome/lighthouse/issues/11960

FYI @khempenius @addyosmani @spanicker


connorjclark: can you summarize AIs needed for v9 in the tracker? https://github.com/GoogleChrome/lighthouse/issues/12614 
patrickhulce: > can you summarize AIs needed for v9 in the tracker? #12614

Done 👍 
patrickhulce: friendly ping @adamraine :)

Patch:
diff --git a/lighthouse-core/audits/preload-fonts.js b/lighthouse-core/audits/preload-fonts.js
index acb68ef81..574678cac 100644
--- a/lighthouse-core/audits/preload-fonts.js
+++ b/lighthouse-core/audits/preload-fonts.js
@@ -63,7 +63,7 @@ class PreloadFontsAudit extends Audit {
    * @param {LH.Audit.Context} context
    * @return {Promise<LH.Audit.Product>}
    */
-  static async audit(artifacts, context) {
+  static async audit_(artifacts, context) {
     const devtoolsLog = artifacts.devtoolsLogs[this.DEFAULT_PASS];
     const networkRecords = await NetworkRecords.request(devtoolsLog, context);
 
@@ -92,6 +92,16 @@ class PreloadFontsAudit extends Audit {
       notApplicable: optionalFontURLs.size === 0,
     };
   }
+
+  /**
+   * @return {Promise<LH.Audit.Product>}
+   */
+  static async audit() {
+    // Preload advice is dangerous until https://bugs.chromium.org/p/chromium/issues/detail?id=788757
+    // has been fixed and validated. All preload audits are on hold until then.
+    // See https://github.com/GoogleChrome/lighthouse/issues/11960 for more discussion.
+    return {score: 1, notApplicable: true};
+  }
 }
 
 module.exports = PreloadFontsAudit;
diff --git a/lighthouse-core/audits/preload-lcp-image.js b/lighthouse-core/audits/preload-lcp-image.js
index 0c1758c14..fe114964a 100644
--- a/lighthouse-core/audits/preload-lcp-image.js
+++ b/lighthouse-core/audits/preload-lcp-image.js
@@ -195,7 +195,7 @@ class PreloadLCPImageAudit extends Audit {
    * @param {LH.Audit.Context} context
    * @return {Promise<LH.Audit.Product>}
    */
-  static async audit(artifacts, context) {
+  static async audit_(artifacts, context) {
     const gatherContext = artifacts.GatherContext;
     const trace = artifacts.traces[PreloadLCPImageAudit.DEFAULT_PASS];
     const devtoolsLog = artifacts.devtoolsLogs[PreloadLCPImageAudit.DEFAULT_PASS];
@@ -233,6 +233,16 @@ class PreloadLCPImageAudit extends Audit {
       details,
     };
   }
+
+  /**
+   * @return {Promise<LH.Audit.Product>}
+   */
+  static async audit() {
+    // Preload advice is dangerous until https://bugs.chromium.org/p/chromium/issues/detail?id=788757
+    // has been fixed and validated. All preload audits are on hold until then.
+    // See https://github.com/GoogleChrome/lighthouse/issues/11960 for more discussion.
+    return {score: 1, notApplicable: true, details: Audit.makeOpportunityDetails([], [], 0)};
+  }
 }
 
 module.exports = PreloadLCPImageAudit;
diff --git a/lighthouse-core/audits/uses-rel-preload.js b/lighthouse-core/audits/uses-rel-preload.js
index 564ee9db4..f2dc89c32 100644
--- a/lighthouse-core/audits/uses-rel-preload.js
+++ b/lighthouse-core/audits/uses-rel-preload.js
@@ -208,7 +208,7 @@ class UsesRelPreloadAudit extends Audit {
    * @param {LH.Audit.Context} context
    * @return {Promise<LH.Audit.Product>}
    */
-  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;
@@ -251,6 +251,16 @@ class UsesRelPreloadAudit extends Audit {
       warnings,
     };
   }
+
+  /**
+   * @return {Promise<LH.Audit.Product>}
+   */
+  static async audit() {
+    // Preload advice is dangerous until https://bugs.chromium.org/p/chromium/issues/detail?id=788757
+    // has been fixed and validated. All preload audits are on hold until then.
+    // See https://github.com/GoogleChrome/lighthouse/issues/11960 for more discussion.
+    return {score: 1, notApplicable: true, details: Audit.makeOpportunityDetails([], [], 0)};
+  }
 }
 
 module.exports = UsesRelPreloadAudit;


Test patch:
diff --git a/lighthouse-cli/test/smokehouse/test-definitions/perf/expectations.js b/lighthouse-cli/test/smokehouse/test-definitions/perf/expectations.js
index b55405e26..bdfc3b3d1 100644
--- a/lighthouse-cli/test/smokehouse/test-definitions/perf/expectations.js
+++ b/lighthouse-cli/test/smokehouse/test-definitions/perf/expectations.js
@@ -41,17 +41,19 @@ module.exports = [
           },
         },
         'uses-rel-preload': {
-          score: '<1',
-          numericValue: '>500',
-          warnings: {
-            0: /level-2.*warning/,
-            length: 1,
-          },
-          details: {
-            items: {
-              length: 1,
-            },
-          },
+          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,
+          //   },
+          // },
         },
         'uses-rel-preconnect': {
           score: 1,
@@ -163,14 +165,16 @@ module.exports = [
           },
         },
         'preload-fonts': {
-          score: 0,
-          details: {
-            items: [
-              {
-                url: 'http://localhost:10200/perf/lobster-two-v10-latin-700.woff2?delay=1000',
-              },
-            ],
-          },
+          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',
+          //     },
+          //   ],
+          // },
         },
       },
     },
diff --git a/lighthouse-core/test/audits/preload-fonts-test.js b/lighthouse-core/test/audits/preload-fonts-test.js
index 808db38b3..4e4549606 100644
--- a/lighthouse-core/test/audits/preload-fonts-test.js
+++ b/lighthouse-core/test/audits/preload-fonts-test.js
@@ -45,7 +45,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},
@@ -68,7 +68,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);
     });
@@ -90,7 +90,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);
@@ -111,7 +111,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);
@@ -142,7 +142,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);
@@ -194,7 +194,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/lighthouse-core/test/audits/preload-lcp-image-test.js b/lighthouse-core/test/audits/preload-lcp-image-test.js
index 2603e4d8e..f7384d3d0 100644
--- a/lighthouse-core/test/audits/preload-lcp-image-test.js
+++ b/lighthouse-core/test/audits/preload-lcp-image-test.js
@@ -97,7 +97,7 @@ describe('Performance: preload-lcp audit', () => {
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl, imageUrl);
     artifacts.ImageElements = [];
     const context = {settings: {}, computedCache: new Map()};
-    const results = await PreloadLCPImage.audit(artifacts, context);
+    const results = await PreloadLCPImage.audit_(artifacts, context);
     expect(results.score).toEqual(1);
     expect(results.details.overallSavingsMs).toEqual(0);
     expect(results.details.items).toHaveLength(0);
@@ -108,7 +108,7 @@ describe('Performance: preload-lcp audit', () => {
     networkRecords[3].isLinkPreload = true;
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl, imageUrl);
     const context = {settings: {}, computedCache: new Map()};
-    const results = await PreloadLCPImage.audit(artifacts, context);
+    const results = await PreloadLCPImage.audit_(artifacts, context);
     expect(results.score).toEqual(1);
     expect(results.details.overallSavingsMs).toEqual(0);
     expect(results.details.items).toHaveLength(0);
@@ -119,7 +119,7 @@ describe('Performance: preload-lcp audit', () => {
     networkRecords[3].protocol = 'data';
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl, imageUrl);
     const context = {settings: {}, computedCache: new Map()};
-    const results = await PreloadLCPImage.audit(artifacts, context);
+    const results = await PreloadLCPImage.audit_(artifacts, context);
     expect(results.score).toEqual(1);
     expect(results.details.overallSavingsMs).toEqual(0);
     expect(results.details.items).toHaveLength(0);
@@ -129,7 +129,7 @@ describe('Performance: preload-lcp audit', () => {
     const networkRecords = mockNetworkRecords();
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl, imageUrl);
     const context = {settings: {}, computedCache: new Map()};
-    const results = await PreloadLCPImage.audit(artifacts, context);
+    const results = await PreloadLCPImage.audit_(artifacts, context);
     expect(results.numericValue).toEqual(180);
     expect(results.details.overallSavingsMs).toEqual(180);
     expect(results.details.items[0].url).toEqual(imageUrl);
@@ -141,7 +141,7 @@ describe('Performance: preload-lcp audit', () => {
     networkRecords[3].transferSize = 5 * 1000 * 1000;
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl, imageUrl);
     const context = {settings: {}, computedCache: new Map()};
-    const results = await PreloadLCPImage.audit(artifacts, context);
+    const results = await PreloadLCPImage.audit_(artifacts, context);
     expect(results.numericValue).toEqual(30);
     expect(results.details.overallSavingsMs).toEqual(30);
     expect(results.details.items[0].url).toEqual(imageUrl);
@@ -153,7 +153,7 @@ describe('Performance: preload-lcp audit', () => {
     networkRecords[2].transferSize = 2 * 1000 * 1000;
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl, imageUrl);
     const context = {settings: {}, computedCache: new Map()};
-    const results = await PreloadLCPImage.audit(artifacts, context);
+    const results = await PreloadLCPImage.audit_(artifacts, context);
     expect(results.numericValue).toEqual(30);
     expect(results.details.overallSavingsMs).toEqual(30);
     expect(results.details.items[0].url).toEqual(imageUrl);
diff --git a/lighthouse-core/test/audits/uses-rel-preload-test.js b/lighthouse-core/test/audits/uses-rel-preload-test.js
index 7d253b2f4..aba44f38e 100644
--- a/lighthouse-core/test/audits/uses-rel-preload-test.js
+++ b/lighthouse-core/test/audits/uses-rel-preload-test.js
@@ -149,7 +149,7 @@ describe('Performance: uses-rel-preload audit', () => {
 
     const artifacts = mockArtifacts(networkRecords, mainDocumentNodeUrl);
     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);
@@ -166,7 +166,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);
     });
@@ -203,7 +203,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);
   });
 
@@ -240,7 +240,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();
   });
 
@@ -255,7 +255,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();
   });
 
@@ -265,7 +265,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);
@@ -278,7 +278,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: []}});
   });
 
@@ -288,7 +288,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);
@@ -301,7 +301,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);
     });
@@ -313,7 +313,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);
     });
@@ -332,7 +332,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/lighthouse-core/test/report/html/renderer/category-renderer-test.js b/lighthouse-core/test/report/html/renderer/category-renderer-test.js
index 88dad0337..667bbf044 100644
--- a/lighthouse-core/test/report/html/renderer/category-renderer-test.js
+++ b/lighthouse-core/test/report/html/renderer/category-renderer-test.js
@@ -231,8 +231,15 @@ describe('CategoryRenderer', () => {
         notApplicableCount,
         'score shows informative and dash icon'
       );
+    });
 
-      const bestPracticeCat = sampleResults.categories['best-practices'];
+    it('does not render a not applicable section if the category does not contain them', () => {
+      const category = sampleResults.categories['best-practices'];
+      const bestPracticeCat = {
+        ...category,
+        auditRefs: category.auditRefs
+          .filter(ref => ref.result.scoreDisplayMode !== 'notApplicable'),
+      };
       const categoryDOM2 = renderer.render(bestPracticeCat, sampleResults.categoryGroups);
       assert.ok(!categoryDOM2.querySelector('.lh-clump--notapplicable'));
     });
diff --git a/lighthouse-core/test/report/html/renderer/performance-category-renderer-test.js b/lighthouse-core/test/report/html/renderer/performance-category-renderer-test.js
index a8eb0c3f0..87aefebfa 100644
--- a/lighthouse-core/test/report/html/renderer/performance-category-renderer-test.js
+++ b/lighthouse-core/test/report/html/renderer/performance-category-renderer-test.js
@@ -101,7 +101,7 @@ describe('PerfCategoryRenderer', () => {
     const categoryDOM = renderer.render(category, sampleResults.categoryGroups);
 
     const oppAudits = category.auditRefs.filter(audit => audit.group === 'load-opportunities' &&
-        audit.result.score !== 1);
+        audit.result.score !== 1 && audit.result.scoreDisplayMode !== 'notApplicable');
     const oppElements = categoryDOM.querySelectorAll('.lh-audit--load-opportunity');
     assert.equal(oppElements.length, oppAudits.length);
 
diff --git a/lighthouse-core/test/results/sample_v2.json b/lighthouse-core/test/results/sample_v2.json
index 288c44c81..0664ed9b7 100644
--- a/lighthouse-core/test/results/sample_v2.json
+++ b/lighthouse-core/test/results/sample_v2.json
@@ -732,25 +732,10 @@
     },
     "preload-fonts": {
       "id": "preload-fonts",
-      "title": "Fonts with `font-display: optional` are not preloaded",
+      "title": "Fonts with `font-display: optional` are preloaded",
       "description": "Preload `optional` fonts so first-time visitors may use them. [Learn more](https://web.dev/preload-optional-fonts/)",
-      "score": 0,
-      "scoreDisplayMode": "binary",
-      "details": {
-        "type": "table",
-        "headings": [
-          {
-            "key": "url",
-            "itemType": "url",
-            "text": "URL"
-          }
-        ],
-        "items": [
-          {
-            "url": "http://localhost:10200/perf/lobster-two-v10-latin-700.woff2?cors=true"
-          }
-        ]
-      }
+      "score": null,
+      "scoreDisplayMode": "notApplicable"
     },
     "deprecations": {
       "id": "deprecations",
@@ -941,11 +926,8 @@
       "id": "uses-rel-preload",
       "title": "Preload key requests",
       "description": "Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn more](https://web.dev/uses-rel-preload/).",
-      "score": 1,
-      "scoreDisplayMode": "numeric",
-      "numericValue": 0,
-      "numericUnit": "millisecond",
-      "displayValue": "",
+      "score": null,
+      "scoreDisplayMode": "notApplicable",
       "details": {
         "type": "opportunity",
         "headings": [],
@@ -2160,11 +2142,8 @@
       "id": "preload-lcp-image",
       "title": "Preload Largest Contentful Paint image",
       "description": "Preload the image used by the LCP element in order to improve your LCP time. [Learn more](https://web.dev/optimize-lcp/#preload-important-resources).",
-      "score": 1,
-      "scoreDisplayMode": "numeric",
-      "numericValue": 0,
-      "numericUnit": "millisecond",
-      "displayValue": "",
+      "score": null,
+      "scoreDisplayMode": "notApplicable",
       "details": {
         "type": "opportunity",
         "headings": [],
@@ -5597,7 +5576,7 @@
         },
         {
           "id": "preload-fonts",
-          "weight": 1,
+          "weight": 0,
           "group": "best-practices-ux"
         },
         {
@@ -5647,7 +5626,7 @@
         }
       ],
       "id": "best-practices",
-      "score": 0.19
+      "score": 0.2
     },
     "seo": {
       "title": "SEO",
@@ -6414,12 +6393,6 @@
         "duration": 100,
         "entryType": "measure"
       },
-      {
-        "startTime": 0,
-        "name": "lh:computed:LanternLargestContentfulPaint",
-        "duration": 100,
-        "entryType": "measure"
-      },
       {
         "startTime": 0,
         "name": "lh:audit:csp-xss",
@@ -7345,7 +7318,6 @@
         "audits[server-response-time].details.headings[0].label",
         "audits[image-aspect-ratio].details.headings[1].text",
         "audits[image-size-responsive].details.headings[1].text",
-        "audits[preload-fonts].details.headings[0].text",
         "audits[bootup-time].details.headings[0].text",
         "audits[network-rtt].details.headings[0].text",
         "audits[network-server-latency].details.headings[0].text",
@@ -7472,7 +7444,7 @@
       "lighthouse-core/audits/image-size-responsive.js | columnExpected": [
         "audits[image-size-responsive].details.headings[4].text"
       ],
-      "lighthouse-core/audits/preload-fonts.js | failureTitle": [
+      "lighthouse-core/audits/preload-fonts.js | title": [
         "audits[preload-fonts].title"
       ],
       "lighthouse-core/audits/preload-fonts.js | description": [
diff --git a/third-party/chromium-webtests/webtests/http/tests/devtools/lighthouse/lighthouse-successful-run-expected.txt b/third-party/chromium-webtests/webtests/http/tests/devtools/lighthouse/lighthouse-successful-run-expected.txt
index 1d437a3ab..c33594341 100644
--- a/third-party/chromium-webtests/webtests/http/tests/devtools/lighthouse/lighthouse-successful-run-expected.txt
+++ b/third-party/chromium-webtests/webtests/http/tests/devtools/lighthouse/lighthouse-successful-run-expected.txt
@@ -520,7 +520,7 @@ password-inputs-can-be-pasted-into: pass
 performance-budget: notApplicable
 plugins: pass
 preload-fonts: notApplicable
-preload-lcp-image: numeric
+preload-lcp-image: notApplicable
 pwa-cross-browser: manual
 pwa-each-page-has-url: manual
 pwa-page-transitions: manual