diff --git a/packages/playwright/src/index.ts b/packages/playwright/src/index.ts index a258cbcad5..79184cc135 100644 --- a/packages/playwright/src/index.ts +++ b/packages/playwright/src/index.ts @@ -609,7 +609,7 @@ class ArtifactsRecorder { if ((tracing as any)[this._startedCollectingArtifacts]) return; (tracing as any)[this._startedCollectingArtifacts] = true; - if (this._testInfo._tracing.traceOptions()) + if (this._testInfo._tracing.traceOptions() && (tracing as any)[kTracingStarted]) await tracing.stopChunk({ path: this._testInfo._tracing.generateNextTraceRecordingPath() }); } } diff --git a/tests/installation/playwright-electron-should-work.spec.ts b/tests/installation/playwright-electron-should-work.spec.ts index 4de28e8b54..5c6ced0948 100755 --- a/tests/installation/playwright-electron-should-work.spec.ts +++ b/tests/installation/playwright-electron-should-work.spec.ts @@ -15,6 +15,7 @@ */ import { test } from './npmTest'; import fs from 'fs'; +import { expect } from 'packages/playwright-test'; import path from 'path'; test('electron should work', async ({ exec, tsc, writeFiles }) => { @@ -39,3 +40,46 @@ test('electron should work with special characters in path', async ({ exec, tmpW cwd: path.join(folderName) }); }); + +test('should work when wrapped inside @playwright/test and trace is enabled', async ({ exec, tmpWorkspace, writeFiles }) => { + await exec('npm i -D @playwright/test electron@31'); + await writeFiles({ + 'electron-with-tracing.spec.ts': ` + import { test, expect, _electron } from '@playwright/test'; + + test('should work', async ({ trace }) => { + const electronApp = await _electron.launch({ args: [${JSON.stringify(path.join(__dirname, '../electron/electron-window-app.js'))}] }); + + const window = await electronApp.firstWindow(); + if (trace) + await window.context().tracing.start({ screenshots: true, snapshots: true }); + + await window.goto('data:text/html,