I’m trying to setup my beforeEach
to create a new email if none exist before starting my tests, but when I try to count how many emails there are in my beforeEach
, it always logs as 0
, even if there are more. If I log the count
in my it
block, it shows the correct count.
Does this look correct? How can I properly check the count
in the beforeEach
so that it doesn’t always create a new email for every test?
describe("email", () => { beforeEach(() => { cy.visit("/"); let count = Cypress.$('#emails').length // always logs 0 cy.log(count) if(count == 0) { createNewEmail() } }); it("email", () => { let count = Cypress.$('#emails').length // logs correct amount cy.log(count) }); });
Advertisement
Answer
Cypress commands are asynchronous. So when the test executes cy.visit("/")
it does not mean that the next line will be executed after the page gets really loaded.
You can fix this as follows:
beforeEach(() => { cy.visit("/").then(() => { let count = Cypress.$('#emails').length cy.log(count) if(count == 0) { createNewEmail() } }) }