赛普拉斯不适用于外部登录

时间:2021-07-28 13:32:39

标签: authentication cypress e2e-testing e2e

我正在我的应用程序上使用 cypress 进行 e2e 测试。 在我的情况下,登录由外部服务管理。
当我想进入我的应用程序主页(https://myApplication/home)时,系统将我重定向到不同的超级域进行登录。
一开始cypress好像可以更改超级域,但是一旦到了外部服务页面进行认证,系统就进入登录错误(好像我们已经登录了,但不正确)。 这种行为不会发生在柏树之外。

是否有其他解决方案来管理 cypress 测试中的外部访问,或者是否可以直接从 cypress 进行管理?

我在 cypress.json 中添加了 chromeWebSecurity:false,当我调用登录链接时,我添加了 failOnStatusCode: false, 但它仍然不起作用。

2 个答案:

答案 0 :(得分:0)

我们遇到了类似的问题,在完成登录过程后,赛普拉斯将我们重定向到默认的“您尚未登录”页面。我不确定这是否正是您遇到的问题,但为了以防万一,这是我们的解决方案。在我们的案例中,问题是由 Chrome 的“Same Site Cookies”功能与 Cypress 交互不佳引起的,因此我们需要禁用它。在您的 .prototype 文件中,您将添加以下代码:

plugins/index.js

请注意,如果您已经设置了launchOptions,您只需将此代码添加到它上面,这样它就不会发生冲突。

希望这也适用于您!

答案 1 :(得分:0)

在当前版本的 cypress 中,您不能在同一个测试中转到另一个域。这是因为 cypress 将其测试注入浏览器(他们正在解决这个问题)。

所以今天的一个解决方案是您需要利用 cy.request 以编程方式执行登录并将身份验证秘密(jwt、cookie、localstorage、token 或您拥有的)自己注入浏览器上下文中(对于 cookie,这将是cy.setcookie).

如果您的登录已经有抽象,请务必检查插件。通常这是 openId 或 ntlm。