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', () => { 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 }) }) })