在赛普拉斯的测试中保留cookie / localStorage会话

我想保存/持久化/保存由cy.request()设置的cookie或localStorage令牌,这样我就不必使用自定义命令登录每个测试.这应该适用于存储在客户端localStorage中的jwt(json web tokens)之类的令牌.

解决方法

来自赛普拉斯 docs

对于持久性cookie:默认情况下,赛普拉斯会在每次测试之前自动清除所有cookie,以防止状态累积.

您可以使用Cypress.Cookies api将特定cookie列入白名单,以便在测试中保留:

// now any cookie with the name 'session_id' will
// not be cleared before each test runs
Cypress.Cookies.defaults({
  whitelist: "session_id"
})

对于持久化localStorage:它不是内置于ATM中,但您现在可以手动实现它,因为清除本地存储的方法公开为Cypress.LocalStorage.clear.

您可以备份此方法并根据发送的密钥覆盖它.

const clear = Cypress.LocalStorage.clear

Cypress.LocalStorage.clear = function (keys,ls,rs) {
  // do something with the keys here
  if (keys) {
    return clear.apply(this,arguments)
  }

}

相关文章

HTML代码中要想改变字体颜色,常常需要使用CSS样式表。CSS是...
HTML代码如何让字体盖住图片呢?需要使用CSS的position属性及...
HTML代码字体设置 在HTML中,我们可以使用标签来设置网页中的...
在网页设计中,HTML代码的字体和字号选择是非常重要的一个环...
HTML(Hypertext Markup Language,超文本标记语言)是一种用...
外链是指在一个网页中添加一个指向其他网站的链接,用户可以...