注意到 Cypress 测试运行程序正在X-CSRFToken
从请求标头中删除,这导致请求返回403 Forbidden
。这是手动运行和赛普拉斯测试运行的标题截图,
为了确认这一点,我通过curl
附加X-CSRFToken
. 那时它工作得很好。在运行赛普拉斯测试时我该如何处理?
注意:trigger()
这发生在使用函数执行拖放事件时
注意到 Cypress 测试运行程序正在X-CSRFToken
从请求标头中删除,这导致请求返回403 Forbidden
。这是手动运行和赛普拉斯测试运行的标题截图,
为了确认这一点,我通过curl
附加X-CSRFToken
. 那时它工作得很好。在运行赛普拉斯测试时我该如何处理?
注意:trigger()
这发生在使用函数执行拖放事件时
it
赛普拉斯会在每次测试之间自动清除 cookie,因此虽然您在登录时已正确设置了 cookie,但在该(或specify
,describe
或context
)块完成后它们将被丢弃。这意味着任何后续的网络请求都将具有新的状态(按设计)。
为了解决这个问题,您可以使用Cypress.Cookies.preserveOnce
:https ://docs.cypress.io/api/cypress-api/cookies.html#Preserve-Once
以下是我使用它来解决类似问题的方法:
beforeEach(() => {
Cypress.Cookies.preserveOnce('XSRF-TOKEN', 'session_id')
})
如果您希望在所有测试套件中保持该状态(即:单独的spec.js
文件),您可以将其放在您的cypress/support/index.js
文件中:
Cypress.Cookies.defaults({
preserve: ['XSRF-TOKEN', 'session_id']
})