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.

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.

community@betterstack.com

or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github