From 71cba41d7f9fcca99eedc2d5e5b319d0f969b1d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Z=C3=BCnd?= Date: Fri, 28 Nov 2025 10:49:55 +0100 Subject: [PATCH] chore: pass Page[] to PageCollector.init for consistency --- src/McpContext.ts | 54 ++++++++++++++++--------------------- src/PageCollector.ts | 9 ++----- tests/PageCollector.test.ts | 26 +++++++++--------- 3 files changed, 38 insertions(+), 51 deletions(-) diff --git a/src/McpContext.ts b/src/McpContext.ts index 2490d3420..6651e7cd7 100644 --- a/src/McpContext.ts +++ b/src/McpContext.ts @@ -123,41 +123,33 @@ export class McpContext implements Context { this.#locatorClass = locatorClass; this.#options = options; - this.#networkCollector = new NetworkCollector( - this.browser, - undefined, - this.#options.experimentalIncludeAllPages, - ); + this.#networkCollector = new NetworkCollector(this.browser); - this.#consoleCollector = new ConsoleCollector( - this.browser, - collect => { - return { - console: event => { - collect(event); - }, - pageerror: event => { - if (event instanceof Error) { - collect(event); - } else { - const error = new Error(`${event}`); - error.stack = undefined; - collect(error); - } - }, - issue: event => { + this.#consoleCollector = new ConsoleCollector(this.browser, collect => { + return { + console: event => { + collect(event); + }, + pageerror: event => { + if (event instanceof Error) { collect(event); - }, - } as ListenerMap; - }, - this.#options.experimentalIncludeAllPages, - ); + } else { + const error = new Error(`${event}`); + error.stack = undefined; + collect(error); + } + }, + issue: event => { + collect(event); + }, + } as ListenerMap; + }); } async #init() { - await this.createPagesSnapshot(); - await this.#networkCollector.init(); - await this.#consoleCollector.init(); + const pages = await this.createPagesSnapshot(); + await this.#networkCollector.init(pages); + await this.#consoleCollector.init(pages); } dispose() { @@ -663,6 +655,6 @@ export class McpContext implements Context { }, } as ListenerMap; }); - await this.#networkCollector.init(); + await this.#networkCollector.init(await this.browser.pages()); } } diff --git a/src/PageCollector.ts b/src/PageCollector.ts index a25805f9a..abc41f685 100644 --- a/src/PageCollector.ts +++ b/src/PageCollector.ts @@ -63,7 +63,6 @@ export class PageCollector { ) => ListenerMap; #listeners = new WeakMap(); #maxNavigationSaved = 3; - #includeAllPages?: boolean; /** * This maps a Page to a list of navigations with a sub-list @@ -75,15 +74,12 @@ export class PageCollector { constructor( browser: Browser, listeners: (collector: (item: T) => void) => ListenerMap, - includeAllPages?: boolean, ) { this.#browser = browser; this.#listenersInitializer = listeners; - this.#includeAllPages = includeAllPages; } - async init() { - const pages = await this.#browser.pages(this.#includeAllPages); + async init(pages: Page[]) { for (const page of pages) { this.addPage(page); } @@ -369,9 +365,8 @@ export class NetworkCollector extends PageCollector { }, } as ListenerMap; }, - includeAllPages?: boolean, ) { - super(browser, listeners, includeAllPages); + super(browser, listeners); } override splitAfterNavigation(page: Page) { const navigations = this.storage.get(page) ?? []; diff --git a/tests/PageCollector.test.ts b/tests/PageCollector.test.ts index b9dd15cc0..997293b79 100644 --- a/tests/PageCollector.test.ts +++ b/tests/PageCollector.test.ts @@ -33,7 +33,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); page.emit('request', request); assert.equal(collector.getData(page)[0], request); @@ -51,7 +51,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); page.emit('request', request); assert.equal(collector.getData(page)[0], request); @@ -71,7 +71,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); page.emit('request', request); page.emit('framenavigated', {} as Frame); @@ -90,7 +90,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); page.emit('request', request); assert.equal(collector.getData(page)[0], request); @@ -114,7 +114,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); browser.emit('targetcreated', { page() { return Promise.resolve(page); @@ -146,7 +146,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); page.emit('request', request); @@ -176,7 +176,7 @@ describe('PageCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); page.emit('request', request1); page.emit('request', request2); @@ -200,7 +200,7 @@ describe('NetworkCollector', () => { }); const request2 = getMockRequest(); const collector = new NetworkCollector(browser); - await collector.init(); + await collector.init([page]); page.emit('request', request); page.emit('request', navRequest); @@ -233,7 +233,7 @@ describe('NetworkCollector', () => { const request = getMockRequest(); const collector = new NetworkCollector(browser); - await collector.init(); + await collector.init([page]); page.emit('request', navRequest); assert.equal(collector.getData(page)[0], navRequest); @@ -269,7 +269,7 @@ describe('NetworkCollector', () => { const request = getMockRequest(); const collector = new NetworkCollector(browser); - await collector.init(); + await collector.init([page]); page.emit('request', navRequest); assert.equal(collector.getData(page, true).length, 1); @@ -324,7 +324,7 @@ describe('ConsoleCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); cdpSession.emit('Audits.issueAdded', {issue}); sinon.assert.calledOnce(onIssuesListener); @@ -345,7 +345,7 @@ describe('ConsoleCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); const issue2 = { code: 'ElementAccessibilityIssue' as const, @@ -377,7 +377,7 @@ describe('ConsoleCollector', () => { }, } as ListenerMap; }); - await collector.init(); + await collector.init([page]); cdpSession.emit('Audits.issueAdded', {issue}); cdpSession.emit('Audits.issueAdded', {issue});