赛普拉斯测试代码在before()挂钩完成之前执行

时间:2019-11-27 21:37:07

标签: authentication testing e2e-testing cypress

很抱歉,这可能是一个愚蠢的问题,但我终生无法找到答案。我的理解(以及其他e2e框架中此类钩子的当前用法)是,在测试代码运行之前,应该先完成before()或beforeEach()钩子,对吗?我的意思是,否则,有什么意义?但是我的测试在before()挂钩完成之前开始执行,所以测试失败了,因为before()正在等待auth数据以便登录并访问受保护的URL ...为什么测试没有等待为before()和beforeEach()完成?旁白:我不是通过UI登录的,而是使用cy.request的,因为我们的应用程序使用Auth0(这本身就使cypress头疼)-这可能是问题吗? DOM中没有什么等待的东西了吗?)我希望从硒/守夜制转向柏树,但是我在auth过程中遇到的问题正在使它具有挑战性……任何见识将不胜感激! :)

这是让我感到不适的代码:(并且登录在测试中进行时测试通过了,但是我需要它在之前执行!此外,将before钩子移到support / index.js上也无济于事解决这个问题。)->

describe('Header modules test', () => {

    before(function () {
        console.log('testing 123 why does the test not wait for me to finish?')

        cy.loginWithCyRequest()
            .then(resp => {
                return resp.body.access_token
            }).as('token')
    })

    beforeEach(function () {
        cy.on('window:before:load', (win) => {
            win.localStorage.setItem('access_token', this.token)
        })
    })


    it('checks header modules on the left', function () {
        cy.visit('https://qa.ware2goproject.com/merchant')
            .get('[data-test="merchant_dashboard_title"]').should('have.text', 'Dashboard')
        headerModules.checkModulesLength()
        headerModules.checkModulesMatch()
    })

    it('checks header modules on the right', function () {
        cy.visit('https://qa.ware2goproject.com/merchant')
        headerModules.checkRightNav()
        headerModules.checkAccountDropdown()
    })

})

0 个答案:

没有答案