diff --git a/packages/playwright-core/src/server/trace/recorder/snapshotter.ts b/packages/playwright-core/src/server/trace/recorder/snapshotter.ts index cb09ea5652..48bfea7302 100644 --- a/packages/playwright-core/src/server/trace/recorder/snapshotter.ts +++ b/packages/playwright-core/src/server/trace/recorder/snapshotter.ts @@ -86,7 +86,8 @@ export class Snapshotter { eventsHelper.addEventListener(this._context, BrowserContext.Events.Page, this._onPage.bind(this)), ]; - const initScript = `(${frameSnapshotStreamer})("${this._snapshotStreamer}", ${!!this._context._options.javaScriptEnabled})`; + const { javaScriptEnabled } = this._context._options; + const initScript = `(${frameSnapshotStreamer})("${this._snapshotStreamer}", ${javaScriptEnabled || javaScriptEnabled === undefined})`; await this._context.addInitScript(initScript); await this._runInAllFrames(initScript); } diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts index 593e449b8d..1cd1d92366 100644 --- a/tests/library/trace-viewer.spec.ts +++ b/tests/library/trace-viewer.spec.ts @@ -1156,3 +1156,39 @@ test('should preserve noscript when javascript is disabled', async ({ browser, s const frame = await traceViewer.snapshotFrame('page.setContent'); await expect(frame.getByText('javascript is disabled!')).toBeVisible(); }); + +test('should remove noscript by default', async ({ browser, server, showTraceViewer, browserType }) => { + const traceFile = test.info().outputPath('trace.zip'); + const page = await browser.newPage({ javaScriptEnabled: undefined }); + await page.context().tracing.start({ snapshots: true, screenshots: true, sources: true }); + await page.goto(server.EMPTY_PAGE); + await page.setContent(` + +
Always visible
+ `); + await page.context().tracing.stop({ path: traceFile }); + await page.close(); + + const traceViewer = await showTraceViewer([traceFile]); + const frame = await traceViewer.snapshotFrame('page.setContent'); + await expect(frame.getByText('Always visible')).toBeVisible(); + await expect(frame.getByText('Enable JavaScript to run this app.')).toBeHidden(); +}); + +test('should remove noscript when javaScriptEnabled is set to true', async ({ browser, server, showTraceViewer, browserType }) => { + const traceFile = test.info().outputPath('trace.zip'); + const page = await browser.newPage({ javaScriptEnabled: true }); + await page.context().tracing.start({ snapshots: true, screenshots: true, sources: true }); + await page.goto(server.EMPTY_PAGE); + await page.setContent(` + +
Always visible
+ `); + await page.context().tracing.stop({ path: traceFile }); + await page.close(); + + const traceViewer = await showTraceViewer([traceFile]); + const frame = await traceViewer.snapshotFrame('page.setContent'); + await expect(frame.getByText('Always visible')).toBeVisible(); + await expect(frame.getByText('Enable JavaScript to run this app.')).toBeHidden(); +});