测试cypress时登录挂起,无日志

时间:2019-11-14 21:30:10

标签: reactjs firebase-authentication cypress

it('Can login with modal', () => {
      cy.get('.menu-item')
        .contains('Sign In')
        .click()

      cy.get('.model-wrapper').should('have.css', 'opacity', '1')
      cy.get('.form-heading').should('have.text', 'Welcome Back')

      cy.get('[name=email]').type(email)
      cy.get('[name=password]').type(password)
      cy.get('[type=submit]').click()
    })
  })

这是代码,单击按钮时登录后不会成功。刚进入加载状态。

这是完整的文件:https://github.com/Lambda-School-Labs/forest-fire-watch-fe/blob/np-cypress/fireflight/cypress/integration/login_test.spec.js

我在cypress.json文件中也将chromeWebSecurity设置为false。

1 个答案:

答案 0 :(得分:0)

最可能的原因是 indexedDb.delete 阻止了Firebase的启动/运行。此外,这不是注销的正确方法。您应该使用 firebase.auth()。logout

我建议您通过 commands.js 中的赛普拉斯命令公开登录/注销。赛普拉斯+ firebase集成如下所示

  const fbConfig = {
    apiKey: 'your api key',
    authDomain: '<your auth>.firebaseapp.com',
    databaseURL: 'https://<your db>.firebaseio.com',
    projectId: 'your project id',
    storageBucket: 'your bucket.appspot.com'
  }

  firebase.initializeApp(fbConfig)

  Cypress.Commands.add('login', (email, password) => {
    return firebase.auth().signInWithEmailAndPassword(email, password)
  })

  Cypress.Commands.add('logout', () => {
    return firebase.auth().signOut()
  })

在测试中,您可以将 indexedDB.delete 替换为 cy.logout()