Reputation: 4334
I am not sure if I am using this correctly in cypress. What I want to do is update my alias @priceValue
so I can use the updated alias later on.
This is what I mean logic wise:
1: Take the text and give it an alias of priceValue
2: Check price value to make sure it contains a string and then (and here is the issue)-> the alias is updated to a fraction by converting. string to a fraction
How do I update the alias so it's now the converted fraction?
priceElements.priceButton().first().invoke("text").as("priceValue");
cy.get("@priceValue").then((priceValue) => {
expect(priceValue).contains("/");
math.fraction(priceValue);
})
Upvotes: 2
Views: 2105
Reputation: 1128
No need for a new alias just change the old one.
priceElements.priceButton().first().invoke("text")
.should('contain', '/')
.as("priceValue")
cy.get("@priceValue")
.then(priceValue => math.fraction(priceValue)) // modify
.as("priceValue") // re-save
cy.get("@priceValue")
.invoke('toString')
.should('not.contain', '/') // different value
Upvotes: 8
Reputation: 18618
You can check this blog out, it discusses in detail how to update an alias - https://ronvalstar.nl/updating-a-cypress-alias.
An easier way would be to wrap the value and create a new alias.
priceElements.priceButton().first().invoke("text").as("priceValue")
cy.get("@priceValue").then((priceValue) => {
expect(priceValue).contains("/")
cy.wrap(math.fraction(priceValue)).as("newPriceValue")
})
cy.get("@newPriceValue").then((newPriceValue) => {
cy.log(newPriceValue)
})
Upvotes: 1