diff --git a/src/PageCollector.ts b/src/PageCollector.ts index ce6a792e6..92f461201 100644 --- a/src/PageCollector.ts +++ b/src/PageCollector.ts @@ -342,6 +342,11 @@ class PageEventSubscriber { #onIssueAdded = (inspectorIssue: Issue) => { try { + // DevTools currently defines this protocol issue code but has no + // IssuesManager handler for it, so calling into the mapper only warns. + if (String(inspectorIssue.code) === 'PerformanceIssue') { + return; + } const issue = DevTools.createIssuesFromProtocolIssue( null, // @ts-expect-error Protocol types diverge. diff --git a/tests/PageCollector.test.ts b/tests/PageCollector.test.ts index be5b0b0ef..19a5f9fd8 100644 --- a/tests/PageCollector.test.ts +++ b/tests/PageCollector.test.ts @@ -358,6 +358,35 @@ describe('ConsoleCollector', () => { assert.equal(data.length, 2); }); + it('silently ignores unmapped PerformanceIssue events', async () => { + const browser = getMockBrowser(); + const page = (await browser.pages())[0]; + const warnStub = sinon.stub(console, 'warn'); + + const collector = new ConsoleCollector(browser, collect => { + return { + devtoolsAggregatedIssue: issue => { + collect(issue); + }, + } as ListenerMap; + }); + await collector.init([page]); + + const performanceIssue = { + code: 'PerformanceIssue', + details: { + performanceIssueDetails: { + performanceIssueType: 'DocumentCookie', + }, + }, + } as unknown as Protocol.Audits.InspectorIssue; + + page.emit('issue', performanceIssue); + + assert.equal(collector.getData(page).length, 0); + sinon.assert.notCalled(warnStub); + }); + it('filters duplicated issues', async () => { const browser = getMockBrowser(); const page = (await browser.pages())[0];