Javascript 在Cypress测试中尝试使用Auth0登录时出错

Javascript 在Cypress测试中尝试使用Auth0登录时出错,javascript,login,xmlhttprequest,auth0,cypress,Javascript,Login,Xmlhttprequest,Auth0,Cypress,我们的应用程序只能由经过身份验证的用户访问,我们使用它进行身份验证 我们已经开始编写Cypress测试,并尝试在每次测试之前使用Auth0 JavaScript客户端登录。第一次测试始终通过,没有任何问题,但所有其他测试失败,出现以下错误: NetworkError:未能对“XMLHttpRequest”执行“发送”:未能加载“”:文档已分离 我们是否需要使用cy.request()手动进行所有API调用以防止此类错误,或者是否有任何方法使Auth0客户端工作?我与Auth0有类似的问题,但我不

我们的应用程序只能由经过身份验证的用户访问,我们使用它进行身份验证

我们已经开始编写Cypress测试,并尝试在每次测试之前使用Auth0 JavaScript客户端登录。第一次测试始终通过,没有任何问题,但所有其他测试失败,出现以下错误:

NetworkError:未能对“XMLHttpRequest”执行“发送”:未能加载“”:文档已分离


我们是否需要使用
cy.request()
手动进行所有API调用以防止此类错误,或者是否有任何方法使Auth0客户端工作?

我与Auth0有类似的问题,但我不记得收到了您收到的错误。在我登录之前的块中。我在before()块中调用此方法。不确定这对你有帮助,但值得一试。应该有更好的方法来做,我试着调用他们的API来做,但我始终无法让它工作。。所以我把它砍掉了

Cypress.Commands.add('loginAuth0', () => {
    cy.visit('');
    cy.get('#log-in').click();
    cy.get('[type="email"]').type('MYEMAIL@DOMAIN>COM');
    cy.get('[type="password"]').type('MYPASSWORD');
    cy.get('.auth0-label-submit').click();
    cy.url().should('include', '/callback');
})
在beforeach()块中,我调用此方法

var accessToken = null; ** this is a global variable at top of file
Cypress.Commands.add('resetLocalStorage', () => {
    if (!accessToken) {
        accessToken = localStorage.getItem('access_token');
    }
    window.localStorage.setItem('access_token', accessToken);

}
在我的cypress.json文件中,我关闭了chromeWebSecurity

"chromeWebSecurity": false
我的规范文件你会看到这样的东西

 before(() => {
        cy.loginAuth0();
        cy.wait(2000); 
    })    

    beforeEach(() => {
        cy.resetLocalStorage();
    })

Cypress每次运行测试时都会清除本地存储,您的访问令牌可能在第一次测试的本地存储中,然后在第二次测试中被删除。不确定这是否是您的问题,但我也使用Auth0和Cypress,并且在登录时必须存储访问令牌,并缓存它,然后在beforeEach块中的每个测试中重置它。我不记得有你的错误。我会去看看我的代码。我没有回答这个问题,因为我不确定是否收到了您的问题。@Maccurt,谢谢,但我们在每次测试之前都登录了,第二个请求总是失败,出现了我提到的错误。我将访问令牌存储在窗口对象中,然后在每次测试之前恢复它(而不是再次登录),从而使其正常工作。它工作得很好,但我仍然很好奇在每次测试之前尝试登录时是什么导致了错误。不要忘记被调用方法的右括号:)