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?
Advertisement
Answer
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, e.g 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).