How to Mock Dates in Playwright Tests

Better Stack Team
Updated on February 27, 2024

If you'd like to mock or emulate a specific date or time in your Playwright tests, you can use the following code:

 
test.beforeEach(async ({ page }) => {
  const fakeNow = new Date('June 21 2026 13:00:00').valueOf();

  await page.addInitScript(`{
    Date = class extends Date {
      constructor(...args) {
        if (args.length === 0) {
          super(${fakeNow});
        } else {
          super(...args);
        }
      }
    }

    const __DateNowOffset = ${fakeNow} - Date.now();
    const __DateNow = Date.now;
    Date.now = () => __DateNow() + __DateNowOffset;
  }`);
});

This snippet overrides the JavaScript Date object and Date.now() function to simulate the current time as June 21, 2026, at 13:00:00. It ensures that any usage of Date or Date.now() within the tested page reflects this specific time, facilitating consistent testing of time-dependent features by mocking the system time before each test case runs.

Thanks for reading, and happy coding!

🔭 Want to automate and scale your Playwright end-to-end tests?

Head over to Better Stack and start monitoring in 5 minutes.