代码之家  ›  专栏  ›  技术社区  ›  livthomas

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

  •  0
  • livthomas  · 技术社区  · 7 年前

    我们的应用程序只允许经过身份验证的用户访问,并且我们使用 Auth0 用于身份验证。

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

    https://ourdomain.eu.auth0.com/co/authenticate ':文档已分离。

    我们是否需要使用 cy.request() 为了防止这种错误,或者有什么方法可以让Auth0客户端工作?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Maccurt    7 年前

    我对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');
    })
    

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