简体   繁体   中英

How do I run a beforeEach in Cypress?

I'm currently building a test, and it seems that after the second and third test, the beforeEach is not getting the information that I need and is telling me that I'm having the following issue:

cy.type() can only accept a string or number. You passed in: undefinedLearn more

My file is the following:


describe('Test all', function () {

    beforeEach(() => {
        cy.fixture('onlineApp.json').then(function (data) {
            this.data = data
        })

        cy.fixture('onlineAppUsers.json').then(function (info) {
            this.info = info
        })

    })


    // Getting into the site to start testing

    it('Build remodel ', function () {

        // Get into the producs page
        Cypress.config().baseUrl
        cy.visit(Cypress.env('url_products'))

        cy.buildRemodel()
        cy.onlineappCreateProfileForm()
        cy.businessInfo()
        cy.logOut()

    })

    it('Buy a Business', function () {

        // Get into the login page
        Cypress.config().baseUrl
        cy.visit(Cypress.env('url_login'))

        // Login | Use the information from the Fixture file created at the time that we create an account

        cy.get('#email').type(this.data.email)
        cy.get('#password').type('Abcd1234')
        cy.get('.app-submit-btn-text').should('be.visible').click()

        // Start a new Application

        cy.get(':nth-child(2) > .small-text > a').should('be.visible').click()

        // Start Loan Application

        cy.buyBusiness()

        // Fill out form

        cy.get('#full_name').type(this.info.userGoodCredit.name)
        cy.get('#company').type(this.info.userGoodCredit.company)
        cy.get('#phone_number').type(this.info.userGoodCredit.phone)
        cy.get('#email')
        cy.wait(10000)
        cy.get('.app-submit-btn-text', { delay: 100 }).should('be.visible').click()
        cy.businessInfo()
        cy.logOut()


    })

    it('Expand a Business', function () {
        // Get into the login page
        Cypress.config().baseUrl
        cy.visit(Cypress.env('url_login'))

        // Login | Use the information from the Fixture file created at the time that we create an account

        cy.get('#email').type(this.data.email)
        cy.get('#password').type('Abcd1234')
        cy.get('.app-submit-btn-text', { time: 100000 }).should('be.visible').click()

        // Start a new Application

        cy.get(':nth-child(2) > .small-text > a').should('be.visible').click()

        // Start Loan Application

        cy.expandBusiness()

        // Fill out form

        cy.get('#full_name').type(this.data.fullName)
        cy.get('#company').type(this.info.userGoodCredit.company)
        cy.get('#phone_number').type(this.info.userGoodCredit.phone)
        

    })
    
  })

My issue starts after the Expand a Business test. I don't know if I have to pass any other function under the beforeEach statement or if needs to be set up differently.

How should I use the beforeEach? This file was working before, but for some reason started to fail. Could you please advise?

The error message cy.type() can only accept a string or number. You passed in: undefined says the last part of the path is undefined , eg this.data. fullName or this.info.userGoodCredit. company .

If this.data was undefined, you error would be cannot get property "fullName" of undefined , so your beforeEach() is probably ok.

It looks like there's a typo in the property used in the test, or in the fixture object. Check with console.log(this.info.userGoodCredit) and console.log(this.data) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM