fix(tracing): do not stall on dialogs (#7059)
This commit is contained in:
parent
e4d93cd1f3
commit
cbce7cbdec
|
|
@ -27,6 +27,7 @@ import { CallMetadata, InstrumentationListener, SdkObject } from '../../instrume
|
|||
import { Page } from '../../page';
|
||||
import * as trace from '../common/traceEvents';
|
||||
import { TraceSnapshotter } from './traceSnapshotter';
|
||||
import { Dialog } from '../../dialog';
|
||||
|
||||
export type TracerOptions = {
|
||||
name?: string;
|
||||
|
|
@ -128,6 +129,13 @@ export class Tracing implements InstrumentationListener {
|
|||
return;
|
||||
if (!this._snapshotter.started())
|
||||
return;
|
||||
|
||||
if (sdkObject instanceof Dialog && name === 'before') {
|
||||
// A call on the dialog is going to dismiss it and resume the evaluation.
|
||||
// We can't be capturing the snapshot before dismiss action is performed.
|
||||
return;
|
||||
}
|
||||
|
||||
const snapshotName = `${name}@${metadata.id}`;
|
||||
metadata.snapshots.push({ title: name, snapshotName });
|
||||
await this._snapshotter!.captureSnapshot(sdkObject.attribution.page, snapshotName, element);
|
||||
|
|
|
|||
|
|
@ -103,6 +103,21 @@ test('should collect two traces', async ({ context, page, server }, testInfo) =>
|
|||
}
|
||||
});
|
||||
|
||||
test('should not stall on dialogs', async ({ page, context, server }) => {
|
||||
await context.tracing.start({ screenshots: true, snapshots: true });
|
||||
await page.goto(server.EMPTY_PAGE);
|
||||
|
||||
page.on('dialog', async dialog => {
|
||||
await dialog.accept();
|
||||
});
|
||||
|
||||
await page.evaluate(() => {
|
||||
confirm('are you sure');
|
||||
});
|
||||
await context.tracing.stop();
|
||||
});
|
||||
|
||||
|
||||
for (const params of [
|
||||
{
|
||||
id: 'fit',
|
||||
|
|
|
|||
Loading…
Reference in a new issue