diff --git a/tests/config/traceViewerFixtures.ts b/tests/config/traceViewerFixtures.ts index 7044e30a29..3b79a55e98 100644 --- a/tests/config/traceViewerFixtures.ts +++ b/tests/config/traceViewerFixtures.ts @@ -31,7 +31,7 @@ type BaseWorkerFixtures = { export type TraceViewerFixtures = { showTraceViewer: (trace: string[], options?: {host?: string, port?: number}) => Promise; - runAndTrace: (body: () => Promise) => Promise; + runAndTrace: (body: () => Promise, optsOverrides?: Parameters[0]) => Promise; }; class TraceViewerPage { @@ -127,9 +127,9 @@ export const traceViewerFixtures: Fixtures { - await use(async (body: () => Promise) => { + await use(async (body: () => Promise, optsOverrides = {}) => { const traceFile = testInfo.outputPath('trace.zip'); - await context.tracing.start({ snapshots: true, screenshots: true, sources: true }); + await context.tracing.start({ snapshots: true, screenshots: true, sources: true, ...optsOverrides }); await body(); await context.tracing.stop({ path: traceFile }); return showTraceViewer([traceFile]); diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts index 74e02c1ef3..f8aaf9d0df 100644 --- a/tests/library/trace-viewer.spec.ts +++ b/tests/library/trace-viewer.spec.ts @@ -1483,3 +1483,15 @@ test('should allow showing screenshots instead of snapshots', async ({ runAndTra await expect(screenshot).toBeVisible(); }); +test('should handle case where neither snapshots nor screenshots exist', async ({ runAndTrace, page, server }) => { + const traceViewer = await runAndTrace(async () => { + await page.goto(server.PREFIX + '/one-style.html'); + }, { snapshots: false, screenshots: false }); + + await traceViewer.page.getByTitle('Settings').click(); + await traceViewer.page.getByText('Show screenshot instead of snapshot').setChecked(true); + + const screenshot = traceViewer.page.getByAltText(`Screenshot of page.goto > Action`); + await expect(screenshot).not.toBeVisible(); +}); +