chore: disable debugger on test end

This commit is contained in:
Pavel Feldman 2024-10-24 10:57:56 -07:00
parent 0509eca9b6
commit 950f3bcec2
6 changed files with 29 additions and 0 deletions

View file

@ -495,6 +495,12 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel>
async _enableRecorder(params: channels.BrowserContextEnableRecorderParams) { async _enableRecorder(params: channels.BrowserContextEnableRecorderParams) {
await this._channel.enableRecorder(params); await this._channel.enableRecorder(params);
} }
_disableDebugger() {
this._wrapApiCall(async () => {
this._channel.disableDebugger();
}, true).catch(() => {});
}
} }
async function prepareStorageState(options: BrowserContextOptions): Promise<channels.BrowserNewContextParams['storageState']> { async function prepareStorageState(options: BrowserContextOptions): Promise<channels.BrowserNewContextParams['storageState']> {

View file

@ -1047,6 +1047,8 @@ scheme.BrowserContextClockSetSystemTimeParams = tObject({
timeString: tOptional(tString), timeString: tOptional(tString),
}); });
scheme.BrowserContextClockSetSystemTimeResult = tOptional(tObject({})); scheme.BrowserContextClockSetSystemTimeResult = tOptional(tObject({}));
scheme.BrowserContextDisableDebuggerParams = tOptional(tObject({}));
scheme.BrowserContextDisableDebuggerResult = tOptional(tObject({}));
scheme.PageInitializer = tObject({ scheme.PageInitializer = tObject({
mainFrame: tChannel(['Frame']), mainFrame: tChannel(['Frame']),
viewportSize: tOptional(tObject({ viewportSize: tOptional(tObject({

View file

@ -374,6 +374,10 @@ export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channel
this._subscriptions.delete(params.event); this._subscriptions.delete(params.event);
} }
async disableDebugger() {
this._context.debugger().setMuted(true);
}
override _onDispose() { override _onDispose() {
// Avoid protocol calls for the closed context. // Avoid protocol calls for the closed context.
if (!this._context.isClosingOrClosed()) if (!this._context.isClosingOrClosed())

View file

@ -595,11 +595,15 @@ class ArtifactsRecorder {
} }
async didFinishTestFunction() { async didFinishTestFunction() {
this._disableDebugger();
if (this._shouldCaptureScreenshotUponFinish()) if (this._shouldCaptureScreenshotUponFinish())
await this._screenshotOnTestFailure(); await this._screenshotOnTestFailure();
} }
async didFinishTest() { async didFinishTest() {
this._disableDebugger();
const captureScreenshots = this._shouldCaptureScreenshotUponFinish(); const captureScreenshots = this._shouldCaptureScreenshotUponFinish();
if (captureScreenshots) if (captureScreenshots)
await this._screenshotOnTestFailure(); await this._screenshotOnTestFailure();
@ -660,6 +664,13 @@ class ArtifactsRecorder {
this._testInfo.attachments.push({ name: 'screenshot', path: screenshotPath, contentType: 'image/png' }); this._testInfo.attachments.push({ name: 'screenshot', path: screenshotPath, contentType: 'image/png' });
} }
private _disableDebugger() {
for (const browserType of [this._playwright.chromium, this._playwright.firefox, this._playwright.webkit]) {
for (const context of (browserType as any)._contexts)
context._disableDebugger();
}
}
private async _screenshotOnTestFailure() { private async _screenshotOnTestFailure() {
const contexts: BrowserContext[] = []; const contexts: BrowserContext[] = [];
for (const browserType of [this._playwright.chromium, this._playwright.firefox, this._playwright.webkit]) for (const browserType of [this._playwright.chromium, this._playwright.firefox, this._playwright.webkit])

View file

@ -1539,6 +1539,7 @@ export interface BrowserContextChannel extends BrowserContextEventTarget, EventT
clockRunFor(params: BrowserContextClockRunForParams, metadata?: CallMetadata): Promise<BrowserContextClockRunForResult>; clockRunFor(params: BrowserContextClockRunForParams, metadata?: CallMetadata): Promise<BrowserContextClockRunForResult>;
clockSetFixedTime(params: BrowserContextClockSetFixedTimeParams, metadata?: CallMetadata): Promise<BrowserContextClockSetFixedTimeResult>; clockSetFixedTime(params: BrowserContextClockSetFixedTimeParams, metadata?: CallMetadata): Promise<BrowserContextClockSetFixedTimeResult>;
clockSetSystemTime(params: BrowserContextClockSetSystemTimeParams, metadata?: CallMetadata): Promise<BrowserContextClockSetSystemTimeResult>; clockSetSystemTime(params: BrowserContextClockSetSystemTimeParams, metadata?: CallMetadata): Promise<BrowserContextClockSetSystemTimeResult>;
disableDebugger(params?: BrowserContextDisableDebuggerParams, metadata?: CallMetadata): Promise<BrowserContextDisableDebuggerResult>;
} }
export type BrowserContextBindingCallEvent = { export type BrowserContextBindingCallEvent = {
binding: BindingCallChannel, binding: BindingCallChannel,
@ -1902,6 +1903,9 @@ export type BrowserContextClockSetSystemTimeOptions = {
timeString?: string, timeString?: string,
}; };
export type BrowserContextClockSetSystemTimeResult = void; export type BrowserContextClockSetSystemTimeResult = void;
export type BrowserContextDisableDebuggerParams = {};
export type BrowserContextDisableDebuggerOptions = {};
export type BrowserContextDisableDebuggerResult = void;
export interface BrowserContextEvents { export interface BrowserContextEvents {
'bindingCall': BrowserContextBindingCallEvent; 'bindingCall': BrowserContextBindingCallEvent;

View file

@ -1291,6 +1291,8 @@ BrowserContext:
timeNumber: number? timeNumber: number?
timeString: string? timeString: string?
disableDebugger:
events: events:
bindingCall: bindingCall: