fix(inspector): do not pause while recording (#6604)

This commit is contained in:
Pavel Feldman 2021-05-26 15:49:30 -07:00 committed by GitHub
parent 95bd4b315c
commit 9f3e66566b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View file

@ -31,6 +31,7 @@ export class Debugger extends EventEmitter implements InstrumentationListener {
static Events = {
PausedStateChanged: 'pausedstatechanged'
};
private _muted = false;
constructor(context: BrowserContext) {
super();
@ -47,12 +48,20 @@ export class Debugger extends EventEmitter implements InstrumentationListener {
return (context as any)[symbol] as Debugger | undefined;
}
async setMuted(muted: boolean) {
this._muted = muted;
}
async onBeforeCall(sdkObject: SdkObject, metadata: CallMetadata): Promise<void> {
if (shouldPauseOnCall(sdkObject, metadata) || (this._pauseOnNextStatement && shouldPauseOnStep(sdkObject, metadata)))
if (this._muted)
return;
if (shouldPauseOnCall(sdkObject, metadata) || (this._pauseOnNextStatement && shouldPauseOnNonInputStep(sdkObject, metadata)))
await this.pause(sdkObject, metadata);
}
async onBeforeInputAction(sdkObject: SdkObject, metadata: CallMetadata): Promise<void> {
if (this._muted)
return;
if (this._enabled && this._pauseOnNextStatement)
await this.pause(sdkObject, metadata);
}
@ -62,6 +71,8 @@ export class Debugger extends EventEmitter implements InstrumentationListener {
}
async pause(sdkObject: SdkObject, metadata: CallMetadata) {
if (this._muted)
return;
this._enabled = true;
metadata.pauseStartTime = monotonicTime();
const result = new Promise<void>(resolve => {
@ -106,6 +117,8 @@ function shouldPauseOnCall(sdkObject: SdkObject, metadata: CallMetadata): boolea
return metadata.method === 'pause';
}
function shouldPauseOnStep(sdkObject: SdkObject, metadata: CallMetadata): boolean {
return metadata.method === 'goto' || metadata.method === 'close';
const nonInputActionsToStep = new Set(['close', 'evaluate', 'evaluateHandle', 'goto', 'setContent']);
function shouldPauseOnNonInputStep(sdkObject: SdkObject, metadata: CallMetadata): boolean {
return nonInputActionsToStep.has(metadata.method);
}

View file

@ -262,6 +262,7 @@ export class RecorderSupplement implements InstrumentationListener {
this._mode = mode;
this._recorderApp?.setMode(this._mode);
this._generator.setEnabled(this._mode === 'recording');
Debugger.lookup(this._context)!.setMuted(this._mode === 'recording');
if (this._mode !== 'none')
this._context.pages()[0].bringToFront().catch(() => {});
}