Skip to content

Latest commit

 

History

History
179 lines (122 loc) · 4.21 KB

File metadata and controls

179 lines (122 loc) · 4.21 KB
title description sidebar_label
tick | Cypress Documentation
Move time after overriding a native time function with `cy.clock()` in Cypress.
tick

tick

Move time after overriding a native time function with cy.clock().

:::caution

cy.clock() must be called before cy.tick() in order to override native time functions first.

:::

Syntax

cy.tick(milliseconds, options)

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.

options (Object)

Pass in an options object to change the default behavior of cy.tick().

Option Default Description
log true Displays the command in the Command log

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()

:::info

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

  • cy.tick() requires being chained off of cy.
  • cy.tick() requires that cy.clock() be called before it.
  • cy.tick() is a utility command.
  • cy.tick() will not run assertions. Assertions will pass through as if this command did not exist.
  • 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
7.0.0 log option added to cy.tick()
0.18.8 cy.tick() command added

See also