Skip to content

Using async await in Cypress

I’m very new in Cypress and I’m trying to take a value from an element to use after in the test, but I can’t manage to get the value. Someone said that I need to use async await, but it is not working or maybe I’m doing something wrong. Thanks in advance!

it.only('should access Time Worked section and insert same Staff Complement value, but negative as Flexitime',  function () {
        let timeValue = 0;
        cy.get('[data-tag="staff-complement-input"] > div > span').invoke('text').then(text => +text).then(($val) => {
            // $val = 420
            timeValue = $val;
            cy.log(timeValue) //420
        })
        cy.log(timeValue) // 0
        // need timeValue to be 420
 })

Answer

You can use aliases and save the value and use it later.

cy.get('[data-tag="staff-complement-input"] > div > span')
  .invoke("text")
  .then((text) => +text)
  .as("someNum")

cy.get("@someNum").then((someNum) => {
  cy.log(someNum) //420
})

One point to remember is that cypress clears aliases after every test. So the above will only work if you are doing everything under one it() block.