【问题标题】:How to detach Cypress test runner from a page?如何从页面中分离赛普拉斯测试运行器?
【发布时间】:2021-12-24 04:26:04
【问题描述】:

我正在尝试将赛普拉斯与将用户重定向到第三方网站进行身份验证的网站一起使用。用户登录后,他们会自动重定向回我们控制的站点。根据我的阅读,赛普拉斯不支持这种特殊设置。

第三方站点的身份验证也可以通过弹出窗口进行。我可以让 Cypress 打开那个弹出窗口。

有没有办法可以将赛普拉斯测试运行器从登录弹出窗口中分离出来,使其不再受赛普拉斯控制?如果是这样,这是如何完成的?我想这样做,以便我可以使用其他东西(即 Puppeteer)自动登录,然后在 Cypress iframe 的基本页面中运行实际测试。

【问题讨论】:

  • 您应该只拦截请求并返回预期的响应,以便您只停留在您的网站上
  • @mosaad,不幸的是,这在这种情况下行不通。这个 Auth0 SSO 绝对需要在他们自己的站点上进行身份验证(而不是通过 API 端点或类似的东西远程)。使用弹出窗口进行身份验证至少会保留我们应用程序的基本页面。换句话说,所有到第三方站点的重定向都会发生在弹出窗口上。如果我可以让赛普拉斯产量控制,那么自动化就会起作用。
  • 你不能改变它在测试环境中的工作方式吗?
  • 我不想仅仅为了赛普拉斯而介绍任何类型的安全漏洞。如果我可以简单地自动登录,我们有一个用于非生产环境的测试用户帐户,它将在这种情况下工作。目前,我正在考虑放弃 Cypress 并使用 Jest-Puppeteer 替代方案。

标签: authentication puppeteer cypress auth0


【解决方案1】:

由于您可以假设 AUT 在某个时间点接受来自第 3 方的请求,因此应该有一个解决方案,您可以使用与 UI 相同的方式使用 cy.request 触发该 api 请求。

您可能需要为密钥存储环境变量或其他一些身份验证安全性,但如果您这样做,赛普拉斯可以复制登录流程,而无需使用他们的第 3 方代码;如果它是 iframe 或其他常见的第 3 方身份验证 UI 设置,您将无法使用 Cypress 访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 2019-07-29
    • 2023-02-14
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2023-01-10
    相关资源
    最近更新 更多