Skip to content

Commit 7fd8d1a

Browse files
authored
chore: pass Page[] to PageCollector.init for consistency (#629)
Small cleanup PR that uses the result of `createPagesSnapshot` and passes it to the two collector instances. This way, we consistently apply the `Page[]` filtering done by `createPagesSnapshot` and we don't have to forward the `experimentalIncludeAllPages` option to all collectors.
1 parent fcaf553 commit 7fd8d1a

File tree

3 files changed

+38
-51
lines changed

3 files changed

+38
-51
lines changed

src/McpContext.ts

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -123,41 +123,33 @@ export class McpContext implements Context {
123123
this.#locatorClass = locatorClass;
124124
this.#options = options;
125125

126-
this.#networkCollector = new NetworkCollector(
127-
this.browser,
128-
undefined,
129-
this.#options.experimentalIncludeAllPages,
130-
);
126+
this.#networkCollector = new NetworkCollector(this.browser);
131127

132-
this.#consoleCollector = new ConsoleCollector(
133-
this.browser,
134-
collect => {
135-
return {
136-
console: event => {
137-
collect(event);
138-
},
139-
pageerror: event => {
140-
if (event instanceof Error) {
141-
collect(event);
142-
} else {
143-
const error = new Error(`${event}`);
144-
error.stack = undefined;
145-
collect(error);
146-
}
147-
},
148-
issue: event => {
128+
this.#consoleCollector = new ConsoleCollector(this.browser, collect => {
129+
return {
130+
console: event => {
131+
collect(event);
132+
},
133+
pageerror: event => {
134+
if (event instanceof Error) {
149135
collect(event);
150-
},
151-
} as ListenerMap;
152-
},
153-
this.#options.experimentalIncludeAllPages,
154-
);
136+
} else {
137+
const error = new Error(`${event}`);
138+
error.stack = undefined;
139+
collect(error);
140+
}
141+
},
142+
issue: event => {
143+
collect(event);
144+
},
145+
} as ListenerMap;
146+
});
155147
}
156148

157149
async #init() {
158-
await this.createPagesSnapshot();
159-
await this.#networkCollector.init();
160-
await this.#consoleCollector.init();
150+
const pages = await this.createPagesSnapshot();
151+
await this.#networkCollector.init(pages);
152+
await this.#consoleCollector.init(pages);
161153
}
162154

163155
dispose() {
@@ -663,6 +655,6 @@ export class McpContext implements Context {
663655
},
664656
} as ListenerMap;
665657
});
666-
await this.#networkCollector.init();
658+
await this.#networkCollector.init(await this.browser.pages());
667659
}
668660
}

src/PageCollector.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ export class PageCollector<T> {
6363
) => ListenerMap<PageEvents>;
6464
#listeners = new WeakMap<Page, ListenerMap>();
6565
#maxNavigationSaved = 3;
66-
#includeAllPages?: boolean;
6766

6867
/**
6968
* This maps a Page to a list of navigations with a sub-list
@@ -75,15 +74,12 @@ export class PageCollector<T> {
7574
constructor(
7675
browser: Browser,
7776
listeners: (collector: (item: T) => void) => ListenerMap<PageEvents>,
78-
includeAllPages?: boolean,
7977
) {
8078
this.#browser = browser;
8179
this.#listenersInitializer = listeners;
82-
this.#includeAllPages = includeAllPages;
8380
}
8481

85-
async init() {
86-
const pages = await this.#browser.pages(this.#includeAllPages);
82+
async init(pages: Page[]) {
8783
for (const page of pages) {
8884
this.addPage(page);
8985
}
@@ -369,9 +365,8 @@ export class NetworkCollector extends PageCollector<HTTPRequest> {
369365
},
370366
} as ListenerMap;
371367
},
372-
includeAllPages?: boolean,
373368
) {
374-
super(browser, listeners, includeAllPages);
369+
super(browser, listeners);
375370
}
376371
override splitAfterNavigation(page: Page) {
377372
const navigations = this.storage.get(page) ?? [];

tests/PageCollector.test.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe('PageCollector', () => {
3333
},
3434
} as ListenerMap;
3535
});
36-
await collector.init();
36+
await collector.init([page]);
3737
page.emit('request', request);
3838

3939
assert.equal(collector.getData(page)[0], request);
@@ -51,7 +51,7 @@ describe('PageCollector', () => {
5151
},
5252
} as ListenerMap;
5353
});
54-
await collector.init();
54+
await collector.init([page]);
5555
page.emit('request', request);
5656

5757
assert.equal(collector.getData(page)[0], request);
@@ -71,7 +71,7 @@ describe('PageCollector', () => {
7171
},
7272
} as ListenerMap;
7373
});
74-
await collector.init();
74+
await collector.init([page]);
7575
page.emit('request', request);
7676
page.emit('framenavigated', {} as Frame);
7777

@@ -90,7 +90,7 @@ describe('PageCollector', () => {
9090
},
9191
} as ListenerMap;
9292
});
93-
await collector.init();
93+
await collector.init([page]);
9494
page.emit('request', request);
9595

9696
assert.equal(collector.getData(page)[0], request);
@@ -114,7 +114,7 @@ describe('PageCollector', () => {
114114
},
115115
} as ListenerMap;
116116
});
117-
await collector.init();
117+
await collector.init([page]);
118118
browser.emit('targetcreated', {
119119
page() {
120120
return Promise.resolve(page);
@@ -146,7 +146,7 @@ describe('PageCollector', () => {
146146
},
147147
} as ListenerMap;
148148
});
149-
await collector.init();
149+
await collector.init([page]);
150150

151151
page.emit('request', request);
152152

@@ -176,7 +176,7 @@ describe('PageCollector', () => {
176176
},
177177
} as ListenerMap;
178178
});
179-
await collector.init();
179+
await collector.init([page]);
180180

181181
page.emit('request', request1);
182182
page.emit('request', request2);
@@ -200,7 +200,7 @@ describe('NetworkCollector', () => {
200200
});
201201
const request2 = getMockRequest();
202202
const collector = new NetworkCollector(browser);
203-
await collector.init();
203+
await collector.init([page]);
204204
page.emit('request', request);
205205
page.emit('request', navRequest);
206206

@@ -233,7 +233,7 @@ describe('NetworkCollector', () => {
233233
const request = getMockRequest();
234234

235235
const collector = new NetworkCollector(browser);
236-
await collector.init();
236+
await collector.init([page]);
237237
page.emit('request', navRequest);
238238
assert.equal(collector.getData(page)[0], navRequest);
239239

@@ -269,7 +269,7 @@ describe('NetworkCollector', () => {
269269
const request = getMockRequest();
270270

271271
const collector = new NetworkCollector(browser);
272-
await collector.init();
272+
await collector.init([page]);
273273
page.emit('request', navRequest);
274274
assert.equal(collector.getData(page, true).length, 1);
275275

@@ -324,7 +324,7 @@ describe('ConsoleCollector', () => {
324324
},
325325
} as ListenerMap;
326326
});
327-
await collector.init();
327+
await collector.init([page]);
328328
cdpSession.emit('Audits.issueAdded', {issue});
329329
sinon.assert.calledOnce(onIssuesListener);
330330

@@ -345,7 +345,7 @@ describe('ConsoleCollector', () => {
345345
},
346346
} as ListenerMap;
347347
});
348-
await collector.init();
348+
await collector.init([page]);
349349

350350
const issue2 = {
351351
code: 'ElementAccessibilityIssue' as const,
@@ -377,7 +377,7 @@ describe('ConsoleCollector', () => {
377377
},
378378
} as ListenerMap;
379379
});
380-
await collector.init();
380+
await collector.init([page]);
381381

382382
cdpSession.emit('Audits.issueAdded', {issue});
383383
cdpSession.emit('Audits.issueAdded', {issue});

0 commit comments

Comments
 (0)