{"__v":0,"_id":"56b8b2d086d2b0190070bd3e","category":{"__v":21,"_id":"56b8b0f7ddeb231700e69825","pages":["56b8b1b30094520d006b3c7b","56b8b1b39fc0de1700b60a20","56b8b1b386d2b0190070bd33","56b8b1b3578edc0d0023cefc","56b8b1b386d2b0190070bd34","56b8b1ec43bbd10d0081d15d","56b8b1ec9fc0de1700b60a21","56b8b1ec38b1070d002891fa","56b8b1ec0094520d006b3c7c","56b8b1ec578edc0d0023cefe","56b8b285ddeb231700e69829","56b8b28538b1070d002891fb","56b8b2855d75fe0d00fbcc6e","56b8b2850094520d006b3c7e","56b8b2850094520d006b3c7f","56b8b2d014feef0d00824140","56b8b2d08a9e7c0d004bb173","56b8b2d0ddeb231700e6982a","56b8b2d086d2b0190070bd3e","56b8b2d086d2b0190070bd3f","56b936d0578edc0d0023cfa5"],"project":"568fde81b700ce0d002f4b43","version":"568fde82b700ce0d002f4b46","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-02-08T15:15:03.713Z","from_sync":false,"order":2,"slug":"utilities","title":"Utilities"},"parentDoc":null,"project":"568fde81b700ce0d002f4b43","user":"568fffce769f210d0013258f","version":{"__v":23,"_id":"568fde82b700ce0d002f4b46","project":"568fde81b700ce0d002f4b43","createdAt":"2016-01-08T16:06:26.373Z","releaseDate":"2016-01-08T16:06:26.373Z","categories":["568fde82b700ce0d002f4b47","568ff0e504440a1700e4cbbd","569002f19ebef90d0087289d","569004f4769f210d00132599","5690056d9ebef90d008728a0","569005d394c5030d0028813a","5690067804440a1700e4cbe2","569137eb3c4f510d00ec9b92","56913815e56a790d008dbfe3","569138ba3c4f510d00ec9b93","5691392f3c4f510d00ec9b94","56913bbe72f2810d007e4cb0","56933b8d6ebadc0d005b71d2","56933b8d6ebadc0d005b71d3","569564facaa32519009c41e6","5696a319b6d61f0d00acfb40","5696a319a857080d0082e8e8","5697efe43503e40d0061f4d1","5697efe48d2a770d00d2fd16","569e9597ffccd10d00a05c59","56a7a1523d33bc2100793d5c","56a7a32ecf6d771700baeee8","56b8b0f7ddeb231700e69825"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":false,"codename":"bar","version_clean":"1.0.0","version":"1.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-02-08T15:22:56.692Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"auth":"required","params":[],"url":""},"isReference":false,"order":5,"body":"# [new Cypress.Promise( *function* )](#section-usage)\n\nCypress automatically proxies [`Bluebird`](https://github.com/petkaantonov/bluebird) and exposes it as `Cypress.Promise`.\n\nInstantiate a new bluebird promise.\n\n***\n\n# Usage\n\nUse `Cypress.Promise` to create promises. Cypress is promise aware so if you return a promise from inside of commands like [`cy.then`](https://on.cypress.io/api/then), Cypress will not continue until those promises resolve.\n\n## Basic Promise\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"cy.get(\\\"button\\\").then(function($button){\\n  return new Cypress.Promise(function(resolve, reject){\\n    // do something custom here\\n  })\\n})\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n***\n\n## Waiting for Promises\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"it(\\\"waits for promises to resolve\\\", function(){\\n  var waited = false\\n\\n  function waitOneSecond(){\\n    // return a promise that resolves after 1 second\\n    return new Cypress.Promise(function(resolve, reject){\\n      setTimeout(function(){\\n        // set waited to true\\n        waited = true\\n\\n        // resolve with 'foo' string\\n        resolve('foo')\\n      }, 1000)\\n    })\\n  }\\n\\n  cy\\n    .then(function(){\\n      // return a promise to cy.then() that\\n      // is awaited until it resolves\\n      return waitOneSecond().then(function(str){\\n        expect(str).to.eq('foo')\\n        expect(waited).to.be.true\\n      })\\n    })\\n})\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]","excerpt":"Instantiate a bluebird promise","slug":"cypress-promise","type":"basic","title":"Promise"}

Promise

Instantiate a bluebird promise

# [new Cypress.Promise( *function* )](#section-usage) Cypress automatically proxies [`Bluebird`](https://github.com/petkaantonov/bluebird) and exposes it as `Cypress.Promise`. Instantiate a new bluebird promise. *** # Usage Use `Cypress.Promise` to create promises. Cypress is promise aware so if you return a promise from inside of commands like [`cy.then`](https://on.cypress.io/api/then), Cypress will not continue until those promises resolve. ## Basic Promise [block:code] { "codes": [ { "code": "cy.get(\"button\").then(function($button){\n return new Cypress.Promise(function(resolve, reject){\n // do something custom here\n })\n})\n", "language": "javascript" } ] } [/block] *** ## Waiting for Promises [block:code] { "codes": [ { "code": "it(\"waits for promises to resolve\", function(){\n var waited = false\n\n function waitOneSecond(){\n // return a promise that resolves after 1 second\n return new Cypress.Promise(function(resolve, reject){\n setTimeout(function(){\n // set waited to true\n waited = true\n\n // resolve with 'foo' string\n resolve('foo')\n }, 1000)\n })\n }\n\n cy\n .then(function(){\n // return a promise to cy.then() that\n // is awaited until it resolves\n return waitOneSecond().then(function(str){\n expect(str).to.eq('foo')\n expect(waited).to.be.true\n })\n })\n})\n", "language": "javascript" } ] } [/block]