Move time after overriding a native time function with cy.clock()
.
cy.clock()
must be called beforecy.tick()
in order to override native time functions first.
Syntax
cy.tick(milliseconds)
Usage
Correct Usage
cy.tick(500)
Arguments
milliseconds (Number)
The number of milliseconds
to move the clock. Any timers within the affected range of time will be called.
Yields
cy.tick()
yields a clock
object with the following methods:
-
clock.tick(milliseconds)
Move the clock a number of milliseconds. Any timers within the affected range of time will be called.
-
clock.restore()
Restore all overridden native functions. This is automatically called between tests, so should not generally be needed.
You can also access the clock
object via this.clock
in a .then()
callback.
Examples
Milliseconds
Create a clock and move time to trigger a setTimeout
// app code loaded by index.html window.addIntro = () => { setTimeout(() => { document.getElementById('#header').textContent = 'Hello, World' }, 500) }
cy.clock() cy.visit('/index.html') cy.window().invoke('addIntro') cy.tick(500) cy.get('#header').should('have.text', 'Hello, World')
Using cy.clock()
with cy.tick()
Check out our example recipe testing spying, stubbing and time
Restore clock
You can restore the clock and allow your application to resume normally without manipulating native global functions related to time. This is automatically called between tests.
cy.clock() cy.visit('http://localhost:3333') cy.get('#search').type('Acme Company') cy.tick(1000) // more test code here // restore the clock cy.clock().then((clock) => { clock.restore() }) // more test code here
You could also restore by using .invoke()
to invoke the restore
function.
cy.clock().invoke('restore')
Rules
Requirements
cy.tick()
requires being chained off ofcy
.cy.tick()
requires thatcy.clock()
be called before it.
Assertions
cy.tick()
is a utility command.cy.tick()
will not run assertions. Assertions will pass through as if this command did not exist.
Timeouts
cy.tick()
cannot time out.
Command Log
Create a clock and tick it 1 second
cy.clock() cy.tick(1000)
The command above will display in the Command Log as:
When clicking on the tick
command within the command log, the console outputs the following:
History
Version | Changes |
---|---|
0.18.8 |
cy.tick() command added |