JSESSIONID cookie 未使用 Cypress 保留

问题描述

我们目前正在使用 cy.request() 方法登录到我们的应用程序,这里设置了 JSESSIONID cookie。之后,我们也使用 cy.request() 执行各种其他请求,但它们都不起作用,因为 JSESSIONID cookie 似乎未在标头中设置。之前,我们通过在 support 文件夹的 index.js 文件中使用 Cypress.Cookies.preserveOnce('JSESSIONID') 来处理这个问题。我已经使用了各种 cookie 选项,例如在测试中移动 preserveOnce、使用白名单等,但它们都没有奏效。 我还使用 UI 自动登录,但在登录后,会话立即过期。

有没有办法控制这个cookie?我们不明白为什么它突然停止工作(尽管最近修改了端点)。目前我们有 Cypress 4.7.0 版,我也尝试过 7.0.0 版。

有没有人遇到过这样的问题?

解决方法

你能不能尝试用 beforeEach 钩子把它放在测试文件中?

例如:

beforeEach(() => {
        Cypress.Cookies.preserveOnce('<id>')
    })
,

您是否尝试在规范本身中传递 cookie/s?

在您的描述中,请添加此代码以在整个规范中保留 cookie。

Cypress.Cookies.defaults({
    preserve: 'JSESSIONID'
})

如果需要多个 cookie,它们可以放在一个数组中:

Cypress.Cookies.defaults({
    preserve: ['JSESSIONID','Cookie2']
})