很抱歉,这可能是一个愚蠢的问题,但我终生无法找到答案。我的理解(以及其他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()
})
})