Class: Playwright::Clock

Inherits:
PlaywrightApi show all
Defined in:
lib/playwright_api/clock.rb

Overview

Accurately simulating time-dependent behavior is essential for verifying the correctness of applications. Learn more about [clock emulation](../clock.md).

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

Instance Method Summary collapse

Methods inherited from PlaywrightApi

#initialize, unwrap, wrap

Constructor Details

This class inherits a constructor from Playwright::PlaywrightApi

Instance Method Details

#fast_forward(ticks) ⇒ Object

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

“‘python sync page.clock.fast_forward(1000) page.clock.fast_forward(“30:00”) “`



19
20
21
# File 'lib/playwright_api/clock.rb', line 19

def fast_forward(ticks)
  wrap_impl(@impl.fast_forward(unwrap_impl(ticks)))
end

#install(time: nil) ⇒ Object

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.



37
38
39
# File 'lib/playwright_api/clock.rb', line 37

def install(time: nil)
  wrap_impl(@impl.install(time: unwrap_impl(time)))
end

#pause_at(time) ⇒ Object

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

“‘python sync page.clock.pause_at(datetime.datetime(2020, 2, 2)) page.clock.pause_at(“2020-02-02”) “`



68
69
70
# File 'lib/playwright_api/clock.rb', line 68

def pause_at(time)
  wrap_impl(@impl.pause_at(unwrap_impl(time)))
end

#resumeObject

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



74
75
76
# File 'lib/playwright_api/clock.rb', line 74

def resume
  wrap_impl(@impl.resume)
end

#run_for(ticks) ⇒ Object

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

Usage

“‘python sync page.clock.run_for(1000); page.clock.run_for(“30:00”) “`



50
51
52
# File 'lib/playwright_api/clock.rb', line 50

def run_for(ticks)
  wrap_impl(@impl.run_for(unwrap_impl(ticks)))
end

#set_fixed_time(time) ⇒ Object Also known as: fixed_time=

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

Usage

“‘python sync 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”) “`



89
90
91
# File 'lib/playwright_api/clock.rb', line 89

def set_fixed_time(time)
  wrap_impl(@impl.set_fixed_time(unwrap_impl(time)))
end

#set_system_time(time) ⇒ Object Also known as: system_time=

Sets current system time but does not trigger any timers.

Usage

“‘python sync 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”) “`



104
105
106
# File 'lib/playwright_api/clock.rb', line 104

def set_system_time(time)
  wrap_impl(@impl.set_system_time(unwrap_impl(time)))
end