只有经过身份验证的用户才能访问我们的应用程序,并且我们使用Auth0进行身份验证。
我们已经开始编写赛普拉斯测试,并尝试在每次测试之前使用Auth0 JavaScript客户端登录。第一次测试始终可以顺利通过,但是所有其他测试均失败,并显示以下错误:
NetworkError:无法在'XMLHttpRequest'上执行'send':无法加载'https://ourdomain.eu.auth0.com/co/authenticate':文档已被分离。
我们是否需要使用cy.request()
手动进行所有API调用以防止此类错误,或者有什么方法可以使Auth0客户端正常工作?
答案 0 :(得分:0)
我在Auth0上也遇到了类似的问题,但我不记得遇到了您遇到的错误。在before块中,我登录。我在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');
})
在beforeEach()块中,我将此方法称为
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();
})