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) {
await this._channel.enableRecorder(params);
}
_disableDebugger() {
this._wrapApiCall(async () => {
this._channel.disableDebugger();
}, true).catch(() => {});
}
}
async function prepareStorageState(options: BrowserContextOptions): Promise<channels.BrowserNewContextParams['storageState']> {

View file

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

View file

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

View file

@ -595,11 +595,15 @@ class ArtifactsRecorder {
}
async didFinishTestFunction() {
this._disableDebugger();
if (this._shouldCaptureScreenshotUponFinish())
await this._screenshotOnTestFailure();
}
async didFinishTest() {
this._disableDebugger();
const captureScreenshots = this._shouldCaptureScreenshotUponFinish();
if (captureScreenshots)
await this._screenshotOnTestFailure();
@ -660,6 +664,13 @@ class ArtifactsRecorder {
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() {
const contexts: BrowserContext[] = [];
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>;
clockSetFixedTime(params: BrowserContextClockSetFixedTimeParams, metadata?: CallMetadata): Promise<BrowserContextClockSetFixedTimeResult>;
clockSetSystemTime(params: BrowserContextClockSetSystemTimeParams, metadata?: CallMetadata): Promise<BrowserContextClockSetSystemTimeResult>;
disableDebugger(params?: BrowserContextDisableDebuggerParams, metadata?: CallMetadata): Promise<BrowserContextDisableDebuggerResult>;
}
export type BrowserContextBindingCallEvent = {
binding: BindingCallChannel,
@ -1902,6 +1903,9 @@ export type BrowserContextClockSetSystemTimeOptions = {
timeString?: string,
};
export type BrowserContextClockSetSystemTimeResult = void;
export type BrowserContextDisableDebuggerParams = {};
export type BrowserContextDisableDebuggerOptions = {};
export type BrowserContextDisableDebuggerResult = void;
export interface BrowserContextEvents {
'bindingCall': BrowserContextBindingCallEvent;

View file

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