feat(network): implement listing network requests (#247)

Fixes: https://github.com/microsoft/playwright-mcp/issues/242
This commit is contained in:
Pavel Feldman
2025-04-22 16:04:25 -07:00
committed by GitHub
parent c80f7cf222
commit 1bc3c761de
11 changed files with 401 additions and 4 deletions

View File

@@ -317,6 +317,7 @@ export class Tab {
readonly context: Context;
readonly page: playwright.Page;
private _console: playwright.ConsoleMessage[] = [];
private _requests: Map<playwright.Request, playwright.Response | null> = new Map();
private _snapshot: PageSnapshot | undefined;
private _onPageClose: (tab: Tab) => void;
@@ -325,9 +326,11 @@ export class Tab {
this.page = page;
this._onPageClose = onPageClose;
page.on('console', event => this._console.push(event));
page.on('request', request => this._requests.set(request, null));
page.on('response', response => this._requests.set(response.request(), response));
page.on('framenavigated', frame => {
if (!frame.parentFrame())
this._console.length = 0;
this._clearCollectedArtifacts();
});
page.on('close', () => this._onClose());
page.on('filechooser', chooser => {
@@ -342,8 +345,13 @@ export class Tab {
page.setDefaultTimeout(5000);
}
private _onClose() {
private _clearCollectedArtifacts() {
this._console.length = 0;
this._requests.clear();
}
private _onClose() {
this._clearCollectedArtifacts();
this._onPageClose(this);
}
@@ -367,6 +375,10 @@ export class Tab {
return this._console;
}
async requests(): Promise<Map<playwright.Request, playwright.Response | null>> {
return this._requests;
}
async captureSnapshot() {
this._snapshot = await PageSnapshot.create(this.page);
}