diff --git a/packages/playwright-core/src/client/browser.ts b/packages/playwright-core/src/client/browser.ts index 7c353656cbee7..be47ddeb51dd1 100644 --- a/packages/playwright-core/src/client/browser.ts +++ b/packages/playwright-core/src/client/browser.ts @@ -85,16 +85,6 @@ export class Browser extends ChannelOwner implements ap const response = forReuse ? await this._channel.newContextForReuse(contextOptions) : await this._channel.newContext(contextOptions); const context = BrowserContext.from(response.context); await this._browserType._didCreateContext(context, contextOptions, this._options, options.logger || this._logger); - if (!forReuse && process.env.PW_CLOCK === 'frozen') { - await this._wrapApiCall(async () => { - await context.clock.install({ time: 0 }); - await context.clock.pauseAt(1000); - }, true); - } else if (!forReuse && process.env.PW_CLOCK === 'realtime') { - await this._wrapApiCall(async () => { - await context.clock.install({ time: 0 }); - }, true); - } return context; } diff --git a/packages/playwright/src/index.ts b/packages/playwright/src/index.ts index 2e1236d8ea3fd..a258cbcad55bc 100644 --- a/packages/playwright/src/index.ts +++ b/packages/playwright/src/index.ts @@ -274,6 +274,18 @@ const playwrightFixtures: Fixtures = ({ contexts.set(context, contextData); if (captureVideo) context.on('page', page => contextData.pagesWithVideo.push(page)); + + if (process.env.PW_CLOCK === 'frozen') { + await (context as any)._wrapApiCall(async () => { + await context.clock.install({ time: 0 }); + await context.clock.pauseAt(1000); + }, true); + } else if (process.env.PW_CLOCK === 'realtime') { + await (context as any)._wrapApiCall(async () => { + await context.clock.install({ time: 0 }); + }, true); + } + return context; }); diff --git a/tests/page/page-clock.frozen.spec.ts b/tests/page/page-clock.frozen.spec.ts index 9b709363772d8..b9b319cd6331a 100644 --- a/tests/page/page-clock.frozen.spec.ts +++ b/tests/page/page-clock.frozen.spec.ts @@ -23,5 +23,5 @@ it('clock should be frozen', async ({ page }) => { it('clock should be realtime', async ({ page }) => { it.skip(process.env.PW_CLOCK !== 'realtime'); - expect(await page.evaluate('Date.now()')).toBeLessThan(1000); + expect(await page.evaluate('Date.now()')).toBeLessThan(10000); }); diff --git a/tests/playwright-test/reporter-html.spec.ts b/tests/playwright-test/reporter-html.spec.ts index 83992c0bad55b..e416cd05c1ed7 100644 --- a/tests/playwright-test/reporter-html.spec.ts +++ b/tests/playwright-test/reporter-html.spec.ts @@ -294,6 +294,7 @@ for (const useIntermediateMergeReport of [false] as const) { }); test('should include image diff when screenshot failed to generate due to animation', async ({ runInlineTest, page, showReport }) => { + test.skip(process.env.PW_CLOCK === 'frozen', 'Assumes Date.now() changes'); const result = await runInlineTest({ 'playwright.config.ts': ` module.exports = { use: { viewport: { width: 200, height: 200 }} };