我应该如何升级依赖preserveOnce beforeEach的Cypress测试?

问题描述 投票:0回答:1

我在使用 Cypress 版本 8 的 Cypress 测试中使用了此代码:

beforeEach(() => {
  Cypress.Cookies.preserveOnce(
    'csrftoken',
    'sessionid',
    // ...other cookies...
  )
})

现在我终于升级到了 Cypress 13,并被告知要使用

cy.session
来代替。根据文档迁移指南中提供的示例,我无法弄清楚上述内容的等效内容。

preserveOnce
中使用
beforeEach
可以完美地确保 cookie 持续存在,就像在我的所有测试之间的浏览器会话中一样。有人可以解释一下我如何使用 Cypress 13+ 编写与上述代码等效的代码吗?

如果我将创建 cookie 的请求包装在

session
调用中,则页面随后会自动清除,因此下一个测试会失败。看来我需要主要重构我的测试套件,或者我是否缺少一种更简单的方法来实现与
preserveOnce
相同的效果?

javascript cypress
1个回答
0
投票

由于名为测试隔离的新 Cypress 设置,您可能会得到一个 about:blank(透明页面)。您可以在这里了解更多关于测试隔离的信息

启用测试隔离后,Cypress 会在每次测试前通过以下方式重置浏览器上下文:

通过访问about:blank清除dom状态 清除所有域中的cookie 清除所有域中的 localStorage 清除所有域中的 sessionStorage 由于测试在新的浏览器上下文中开始,因此您必须重新访问应用程序并执行为每个测试构建 dom 和浏览器状态所需的一系列交互。

您应该尝试重构您的测试以依赖测试隔离,但如果您目前不想这样做,您可以简单地关闭此测试隔离设置。

© www.soinside.com 2019 - 2024. All rights reserved.