在赛普拉斯测试中尝试使用Auth0登录时出错

时间:2018-11-24 17:00:10

标签: javascript login xmlhttprequest auth0 cypress

只有经过身份验证的用户才能访问我们的应用程序,并且我们使用Auth0进行身份验证。

我们已经开始编写赛普拉斯测试,并尝试在每次测试之前使用Auth0 JavaScript客户端登录。第一次测试始终可以顺利通过,但是所有其他测试均失败,并显示以下错误:

  

NetworkError:无法在'XMLHttpRequest'上执行'send':无法加载'https://ourdomain.eu.auth0.com/co/authenticate':文档已被分离。

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

1 个答案:

答案 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();
    })