From a4d240c1347fa69bdf52e9917be7b6fd5ebba5e3 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Wed, 5 Feb 2025 12:50:33 -0800 Subject: [PATCH] graceful failure --- core/audits/insights/insight-audit.js | 13 ++++++++----- core/test/scenarios/api-test-pptr.js | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/audits/insights/insight-audit.js b/core/audits/insights/insight-audit.js index 316125be15ff..6d4f61c1a4b8 100644 --- a/core/audits/insights/insight-audit.js +++ b/core/audits/insights/insight-audit.js @@ -13,20 +13,17 @@ import {Audit} from '../audit.js'; /** * @param {LH.Artifacts} artifacts * @param {LH.Audit.Context} context - * @return {Promise} + * @return {Promise} */ async function getInsightSet(artifacts, context) { const trace = artifacts.traces[Audit.DEFAULT_PASS]; - const processedTrace = await ProcessedTrace.request(trace, context); const traceEngineResult = await TraceEngineResult.request({trace}, context); const navigationId = processedTrace.timeOriginEvt.args.data?.navigationId; const key = navigationId ?? NO_NAVIGATION; - const insights = traceEngineResult.insights.get(key); - if (!insights) throw new Error('No navigations insights found'); - return insights; + return traceEngineResult.insights.get(key); } /** @@ -39,6 +36,12 @@ async function getInsightSet(artifacts, context) { */ async function adaptInsightToAuditProduct(artifacts, context, insightName, createDetails) { const insights = await getInsightSet(artifacts, context); + if (!insights) { + return { + score: null, + }; + } + const insight = insights.model[insightName]; const details = createDetails(insight); return { diff --git a/core/test/scenarios/api-test-pptr.js b/core/test/scenarios/api-test-pptr.js index e9e48d78a163..ed8b21564d34 100644 --- a/core/test/scenarios/api-test-pptr.js +++ b/core/test/scenarios/api-test-pptr.js @@ -65,7 +65,7 @@ describe('Individual modes API', function() { server.baseDir = `${LH_ROOT}/core/test/fixtures/user-flows/snapshot-basic`; }); - it('should compute ConsoleMessage results across a span of time', async () => { + it.only('should compute ConsoleMessage results across a span of time', async () => { const run = await api.startTimespan(state.page, { config: { extends: 'lighthouse:default', @@ -107,7 +107,7 @@ describe('Individual modes API', function() { expect(notApplicableAudits.map(audit => audit.id).sort()).toMatchSnapshot(); expect(notApplicableAudits.map(audit => audit.id)).not.toContain('total-blocking-time'); - expect(erroredAudits).toHaveLength(0); + expect(erroredAudits).toStrictEqual([]); expect(failedAudits.map(audit => audit.id)).toContain('errors-in-console'); const errorsInConsole = lhr.audits['errors-in-console'];