Maifee Ul Asad
Maifee Ul Asad

Reputation: 4607

cypress not resolving localstorage item, although it shows on local storage

I'm trying to test my react application. And some data are saved in the local storage, and I want to make sure that these are working. So I started writing tests with cypress. Really cool library, it was so fun that I already wrote ~50 tests. But it started showing problems with local storage.

My code:


describe("delete account",()=>{
    it("delete",()=>{
        cy.visit("/")

        assert.equal(localStorage.getItem("---current---"), null)

        const username = 'abcd1234'
        cy.get('[data-cy=username-input]').click().type(username)
        cy.get('[data-cy=login-button]').click()


        cy.wait(4*1000)

        cy.log({...localStorage})

        // assert.equal(localStorage.getItem(currentPlayerLS), username)
    })
})

My goal was to check when the user logs in, it gets the local storage and checks if the ---current--- player value matches or not. But it raises an exception saying expected null to equal 'abcd1234'

I guessed there was some issue with resolving, so I even added a delay of 4 seconds.

I also logged the whole {...localSotage} says it is an empty dictionary. But the local storage says it has some value stored there.

I'm not sure how to handle it!! Can anyone help me?

Here is the snap: enter image description here

Upvotes: 3

Views: 2212

Answers (1)

Fody
Fody

Reputation: 31862

The log at cy.log({...localStorage}) takes it's value before the test runs.

You should use this to get the value after the login.

cy.then(() => cy.log({...localStorage}))

As for the final assert, try directly using the key ---current--- in case currentPlayerLS is something else (some indication this is so).

assert.equal(localStorage.getItem('---current---'), username)

Upvotes: 2

Related Questions