启用Cypress experimentalSessionAndOrigin后Cookie无法设置问题求助
检查Cookie的SameSite属性
开启该实验特性后,Cypress会严格遵循浏览器的Cookie同源规则。如果你的Cookie设置了SameSite=Strict或Lax,但测试流程中存在跨域操作,就可能导致Cookie无法被正确设置。可以临时将SameSite改为None(需同时确保Secure属性为true,因为SameSite=None要求HTTPS环境)来验证是否是这个原因。改用Cypress Session API管理会话
启用该特性后,建议放弃手动设置Cookie,改用官方提供的cy.session()来管理会话。手动设置Cookie很容易被新的会话隔离机制拦截,示例用法:cy.session('用户登录会话', () => { cy.visit('/login') cy.get('#username').type('test-user') cy.get('#password').type('test-pass') cy.get('button[type="submit"]').click() })这种方式下Cypress会自动保存和恢复会话相关的Cookie,避免手动操作的冲突。
核对Cookie的域名与路径匹配度
确保要设置的Cookie的domain和path属性与当前测试页面的URL完全匹配。开启实验特性后,Cypress对Cookie的域名校验会更严格,比如子域名的Cookie无法在主域名下被设置,反之亦然。排查第三方Cookie拦截问题
部分应用会限制第三方Cookie,而该实验特性下Cypress的浏览器环境会模拟真实浏览器的拦截策略。可以临时在配置中添加chromeWebSecurity: false(仅限测试环境使用)来验证是否是这个原因:export default defineConfig({ e2e: { watchForFileChanges: false, retries: { runMode: 2, openMode: 0, }, numTestsKeptInMemory: 15, experimentalSessionAndOrigin: true, chromeWebSecurity: false // 临时验证用 }, });确认实验特性已正确启用
从你提供的配置代码中未看到experimentalSessionAndOrigin: true的配置项,需确保在配置中显式开启该特性才会生效:export default defineConfig({ e2e: { // 其他现有配置 experimentalSessionAndOrigin: true, // 必须添加此行 }, });
内容的提问来源于stack exchange,提问作者evklug

