fix(inspector): do not pause while recording (#6604)
This commit is contained in:
parent
95bd4b315c
commit
9f3e66566b
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(() => {});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue