Je souhaite enregistrer une valeur de cookie à l'aide de Cypress, mais malheureusement, je suis toujours indéfini dans la console de journal en utilisant ce code

let cookieValue;
cy.getCookie('SOME_COOKIE')
    .should('have.property', 'value')
    .then((cookie) => {
        cookieValue = cookie.value;
    })
cy.log(cookieValue);

Quand j'essaye

let cookieValue;
cy.getCookie('SOME_COOKIE')
    .should('have.property', 'value', 'Dummy value')
    .then((cookie) => {
        cookieValue = cookie.value;
    })
cy.log(cookieValue);

Je peux voir la valeur réelle que je veux dans le message d'erreur.

2
ounis 14 mars 2019 à 20:10

2 réponses

Meilleure réponse

Cypress fonctionne de manière asynchrone et vous ne pouvez pas consommer la valeur du cookie comme vous l'avez fait.

De le documents

Vous voulez vous lancer dans le flux de commandes et mettre la main directement sur le sujet ? Pas de problème, ajoutez simplement un .then() à votre chaîne de commande. Lorsque la commande précédente sera résolue, elle appellera votre fonction de rappel avec le sujet renvoyé comme premier argument.

Vous devez continuer avec votre code de test dans le rappel then et ne pas vous fier à l'affectation externe let cookieValue.

Essaye ça

cy.getCookie('SOME_COOKIE')
    .should('have.property', 'value')
    .then((cookie) => {
        cookieValue = cookie.value;
        // YOU SHOULD CONSUME `cookieValue` here
        // .. go ahead inside this `then` callback
    })
4
NoriSte 18 mars 2019 à 06:21

Vous pouvez également utiliser Async et attendre au lieu d'ajouter du code à l'intérieur de then()

const getmyCookie = async (cookiename) => {
    return cy.getCookie(cookiename)
        .should('exist')
        .then(async (c) => {
            cy.log(c.value)
            return c.value
        })
}

Utilisez-le dans votre test et assurez-vous que votre bloc informatique est asynchrone

it('Sample Test', async function () {
   ... some code

   const cookie = await getmyCookie('cookiename')
   cy.log(cookie)

   ... some code
})
0
Puneet Punj 24 sept. 2019 à 02:25