赛普拉斯:登录身份验证重定向到另一个域:解决方法?

杰夫·坦纳

我了解赛普拉斯不允许从一个域切换到另一个域,因为它将出现以下错误:

chrome-error://chromewebdata/

但是,我需要一种解决方法。我正在为多个环境提供测试集:STAGE,DEMO,PROD。

使用DEMOPROD,在身份验证阶段(用户名/密码),保持在同一域内:

  • 参观https://[demo|www].foo.com
  • AUTHhttps://account.foo.com/auth>>用户名>>密码
  • 同意https://[demo|www].foo.com/action...

使用STAGE,身份验证阶段转到另一个域:

  • 参观https://[stage].foo.com
  • AUTHhttps://account.bar.com/auth>>用户名>>密码
  • 同意https://[stage].foo.com/action...

因此,由于域翻转,赛普拉斯无法从VISIT重定向AUTH这阻止了STAGE的测试

有什么建议的解决方法?

  • 木偶?
  • 柏天然使用cy.request()

引用:

谢谢,非常感谢您的协助。

杰夫·坦纳

我采用的方法类似于使用CSRF令牌的赛普拉斯食谱登录

如前所述,每个部署都有其自己的网站URL,后跟帐户登录URL

首先需要使用帐户登录页面中CSRF令牌,其URL在这里称为$baseUrl

Cypress.Commands.add('cmdGetCSRF', ($baseUrl) => {
    cy.log('COMMAND cmdGetCSRF');

    expect($baseUrl)
        .to.be.a('string')
        .not.empty

    cy.request($baseUrl)
        .its('body')
        .then(($body) => {
            const $html = Cypress.$($body)

            cy.log('html', $html)

            const csrf = $html.find('input[name="__RequestVerificationToken"]').val()

            expect(csrf)
                .to.be.a('string')
                .not.empty

            return cy.wrap(csrf)
        })
})

然后在将要执行登录body的所requestOptions提供的范围内提供cy.request()一次性CSRF令牌:

    const body: { [key: string]: string } = {
        email: $envCypress.account_username,
        password: $envCypress.account_password,
        __RequestVerificationToken: $csrfToken
    };

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

赛普拉斯:如何将选定的属性从API响应传递到另一个API请求?

在赛普拉斯中使用另一个命令进行更改

赛普拉斯登录后等待重定向

在登录身份验证和使用PHP PDO的if语句后,将用户重定向到另一个页面

如何使用赛普拉斯删除“选定”属性并将其移动到另一个选项?

重定向到另一个域的 HSTS

使用赛普拉斯测试跨浏览器功能的解决方法?

赛普拉斯:在多个API测试中重复使用身份验证令牌

在受Windows身份验证保护的Intranet应用上编写赛普拉斯测试

PasswordSignIn 返回成功但重定向到另一个 ActionResult 用户未在 net core 3.1 中进行身份验证

使用赛普拉斯测试重定向到新路由

赛普拉斯-选择另一个元素内的元素-`inside`的选择器语法快捷方式

在Traefik中从一个域重定向到另一个域

Cloudflare从一个域重定向到另一个域?

symfony 从一个域重定向到另一个域

Apache动态将一个域重定向到另一个域

.htaccess 将一个域重定向到另一个域

域被重定向到同一液滴中的另一个域

从一个域永久重定向到另一个但相同的主机

将域重定向到另一个域上的特定页面(htaccess)

将域重定向到ASP.NET中的另一个域

使用参数将子域重定向到另一个域

使用dns或htaccess将子域重定向到另一个域

AWS Amplify域重定向到另一个域

整个域的 301 重定向 (.htaccess) 到另一个域索引

在赛普拉斯中,如何测试一个属性等于多个值之一?

Ajax发布到其他域URL,重定向到另一个URL

赛普拉斯测试验证

如何检查赛普拉斯中的任何一个元素?