标签: cypress-login

赛普拉斯登录与重定向

我想创建执行以下操作的 Cypress 脚本:

  1. 登录平台
  2. 存储以下测试的会话 - 因此我不必在每次执行新测试时都登录
  3. 执行其余测试

1. 可以工作,但不理想

当我通过访问启动脚本时,我确实设法让它工作

cy.visit('https://localhost:3000/login')
Run Code Online (Sandbox Code Playgroud)

但后来我有两个问题:

A. 其余代码需要位于 origin 函数中:

cy.origin('https://localhost:3000/login', () => {
    cy.visit('https://localhost:3000')
    // test script
})
Run Code Online (Sandbox Code Playgroud)

B、更重要的是:

  • 它不保留会话
  • 多次登录后,用户以某种方式停止工作并且不再通过平台进行身份验证。

2. 不工作,理想

所以我想通过访问以正确的方式启动脚本

cy.visit('https://localhost:3000/')
Run Code Online (Sandbox Code Playgroud)

然后点击Log In按钮

cy.contains('Log In')
    .click()
Run Code Online (Sandbox Code Playgroud)

这是棘手的部分 - 一旦用户单击按钮,Log InURL https://localhost:3000/login(状态代码302)会将用户重定向到

https://staging.XXX.com/login?redirect_uri=https%3A%2F%2Flocalhost%3A3000%2Freturn_from_login&client_id=CLIENT_ID&scope=%7B%22full%22%3A+true%7D
Run Code Online (Sandbox Code Playgroud)

一旦我让脚本以这种方式工作,我就会遇到两个问题:

A。Chrome 要求我允许重定向

b. 一旦允许,我将被重定向到 Cypress 之外,因此左侧边栏完全消失

赛普拉斯侧边栏不见了

有人知道如何解决这个问题吗?

整个代码是

describe('User Session + Start a Discussion', () => {
    const username = "username";
    const password = "password";

    before(() => { …
Run Code Online (Sandbox Code Playgroud)

session-cookies cypress cypress-login

1
推荐指数
1
解决办法
5944
查看次数

标签 统计

cypress ×1

cypress-login ×1

session-cookies ×1