playwright/docs/src/api/class-clock.md

7.6 KiB

class: Clock

  • since: v1.45

Accurately simulating time-dependent behavior is essential for verifying the correctness of applications. Learn more about clock emulation.

Note that clock is installed for the entire [BrowserContext], so the time in all the pages and iframes is controlled by the same clock.

async method: Clock.fastForward

  • since: v1.45

Advance the clock by jumping forward in time. Only fires due timers at most once. This is equivalent to user closing the laptop lid for a while and reopening it later, after given time.

Usage

await page.clock.fastForward(1000);
await page.clock.fastForward('30:00');
await page.clock.fast_forward(1000)
await page.clock.fast_forward("30:00")
page.clock.fast_forward(1000)
page.clock.fast_forward("30:00")
page.clock().fastForward(1000);
page.clock().fastForward("30:00");
await page.Clock.FastForwardAsync(1000);
await page.Clock.FastForwardAsync("30:00");

param: Clock.fastForward.ticks

  • since: v1.45
  • ticks <[long]|[string]>

Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds.

async method: Clock.install

  • since: v1.45

Install fake implementations for the following time-related functions:

  • Date
  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • requestAnimationFrame
  • cancelAnimationFrame
  • requestIdleCallback
  • cancelIdleCallback
  • performance

Fake timers are used to manually control the flow of time in tests. They allow you to advance time, fire timers, and control the behavior of time-dependent functions. See [method: Clock.runFor] and [method: Clock.fastForward] for more information.

option: Clock.install.time

  • langs: js, java
  • since: v1.45
  • time <[long]|[string]|[Date]>

Time to initialize with, current system time by default.

option: Clock.install.time

  • langs: python
  • since: v1.45
  • time <[float]|[string]|[Date]>

Time to initialize with, current system time by default.

option: Clock.install.time

  • langs: csharp
  • since: v1.45
  • time <[string]|[Date]>

Time to initialize with, current system time by default.

async method: Clock.runFor

  • since: v1.45

Advance the clock, firing all the time-related callbacks.

Usage

await page.clock.runFor(1000);
await page.clock.runFor('30:00');
await page.clock.run_for(1000);
await page.clock.run_for("30:00")
page.clock.run_for(1000);
page.clock.run_for("30:00")
page.clock().runFor(1000);
page.clock().runFor("30:00");
await page.Clock.RunForAsync(1000);
await page.Clock.RunForAsync("30:00");

param: Clock.runFor.ticks

  • since: v1.45
  • ticks <[long]|[string]>

Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds.

async method: Clock.pauseAt

  • since: v1.45

Advance the clock by jumping forward in time and pause the time. Once this method is called, no timers are fired unless [method: Clock.runFor], [method: Clock.fastForward], [method: Clock.pauseAt] or [method: Clock.resume] is called.

Only fires due timers at most once. This is equivalent to user closing the laptop lid for a while and reopening it at the specified time and pausing.

Usage

await page.clock.pauseAt(new Date('2020-02-02'));
await page.clock.pauseAt('2020-02-02');
await page.clock.pause_at(datetime.datetime(2020, 2, 2))
await page.clock.pause_at("2020-02-02")
page.clock.pause_at(datetime.datetime(2020, 2, 2))
page.clock.pause_at("2020-02-02")
SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd");
page.clock().pauseAt(format.parse("2020-02-02"));
page.clock().pauseAt("2020-02-02");
await page.Clock.PauseAtAsync(DateTime.Parse("2020-02-02"));
await page.Clock.PauseAtAsync("2020-02-02");

param: Clock.pauseAt.time

  • langs: js, java
  • since: v1.45
  • time <[long]|[string]|[Date]>

Time to pause at.

param: Clock.pauseAt.time

  • langs: python
  • since: v1.45
  • time <[float]|[string]|[Date]>

Time to pause at.

param: Clock.pauseAt.time

  • langs: csharp
  • since: v1.45
  • time <[Date]|[string]>

Time to pause at.

async method: Clock.resume

  • since: v1.45

Resumes timers. Once this method is called, time resumes flowing, timers are fired as usual.

async method: Clock.setFixedTime

  • since: v1.45

Makes Date.now and new Date() return fixed fake time at all times, keeps all the timers running.

Use this method for simple scenarios where you only need to test with a predefined time. For more advanced scenarios, use [method: Clock.install] instead. Read docs on clock emulation to learn more.

Usage

await page.clock.setFixedTime(Date.now());
await page.clock.setFixedTime(new Date('2020-02-02'));
await page.clock.setFixedTime('2020-02-02');
await page.clock.set_fixed_time(datetime.datetime.now())
await page.clock.set_fixed_time(datetime.datetime(2020, 2, 2))
await page.clock.set_fixed_time("2020-02-02")
page.clock.set_fixed_time(datetime.datetime.now())
page.clock.set_fixed_time(datetime.datetime(2020, 2, 2))
page.clock.set_fixed_time("2020-02-02")
page.clock().setFixedTime(new Date());
page.clock().setFixedTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setFixedTime("2020-02-02");
await page.Clock.SetFixedTimeAsync(DateTime.Now);
await page.Clock.SetFixedTimeAsync(new DateTime(2020, 2, 2));
await page.Clock.SetFixedTimeAsync("2020-02-02");

param: Clock.setFixedTime.time

  • langs: js, java
  • since: v1.45
  • time <[long]|[string]|[Date]>

Time to be set in milliseconds.

param: Clock.setFixedTime.time

  • langs: python
  • since: v1.45
  • time <[float]|[string]|[Date]>

Time to be set.

param: Clock.setFixedTime.time

  • langs: csharp
  • since: v1.45
  • time <[string]|[Date]>

Time to be set.

async method: Clock.setSystemTime

  • since: v1.45

Sets system time, but does not trigger any timers. Use this to test how the web page reacts to a time shift, for example switching from summer to winter time, or changing time zones.

Usage

await page.clock.setSystemTime(Date.now());
await page.clock.setSystemTime(new Date('2020-02-02'));
await page.clock.setSystemTime('2020-02-02');
await page.clock.set_system_time(datetime.datetime.now())
await page.clock.set_system_time(datetime.datetime(2020, 2, 2))
await page.clock.set_system_time("2020-02-02")
page.clock.set_system_time(datetime.datetime.now())
page.clock.set_system_time(datetime.datetime(2020, 2, 2))
page.clock.set_system_time("2020-02-02")
page.clock().setSystemTime(new Date());
page.clock().setSystemTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setSystemTime("2020-02-02");
await page.Clock.SetSystemTimeAsync(DateTime.Now);
await page.Clock.SetSystemTimeAsync(new DateTime(2020, 2, 2));
await page.Clock.SetSystemTimeAsync("2020-02-02");

param: Clock.setSystemTime.time

  • langs: js, java
  • since: v1.45
  • time <[long]|[string]|[Date]>

Time to be set in milliseconds.

param: Clock.setSystemTime.time

  • langs: python
  • since: v1.45
  • time <[float]|[string]|[Date]>

Time to be set.

param: Clock.setSystemTime.time

  • langs: csharp
  • since: v1.45
  • time <[string]|[Date]>

Time to be set.