Cypress.Promise

Improve this doc

Cypress automatically includes Bluebird and exposes it as Cypress.Promise.

Instantiate a new bluebird promise.

Syntax

new Cypress.Promise(fn)

Usage

Correct Usage

new Cypress.Promise((resolve, reject) => { ... })

Incorrect Usage

new cy.Promise(...)  // Errors, cannot be chained off 'cy'

Examples

Use Cypress.Promise to create promises. Cypress is promise aware so if you return a promise from inside of commands like .then(), Cypress will not continue until those promises resolve.

Basic Promise

cy.get('button').then(($button) => {
  return new Cypress.Promise((resolve, reject) => {
    // do something custom here
  })
})

Waiting for Promises

it('waits for promises to resolve', function () {
  let waited = false

  function waitOneSecond() {
    // return a promise that resolves after 1 second
    return new Cypress.Promise((resolve, reject) => {
      setTimeout(() => {
        // set waited to true
        waited = true

        // resolve with 'foo' string
        resolve('foo')
      }, 1000)
    })
  }

  cy.wrap(null).then(() => {
    // return a promise to cy.then() that
    // is awaited until it resolves
    return waitOneSecond().then((str) => {
      expect(str).to.eq('foo')
      expect(waited).to.be.true
    })
  })
})