BruceyBandit
BruceyBandit

Reputation: 4334

How to update an alias in cypress

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

Answers (2)

Michael Hines
Michael Hines

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

Alapan Das
Alapan Das

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

Related Questions