Cypress 13.15版本session无法保持,多测试用例会话共享求助
解决方案:Cypress 13.15 会话跨测试用例复用问题
核心问题原因
Cypress 在每个测试用例(it)执行前会自动重置浏览器上下文(包括 Cookie、LocalStorage 等),仅在 before 中创建一次会话无法保证后续测试能复用该会话状态。
修正后的代码示例
describe("Organization Membership Management", () => { beforeEach(() => { // 在每个测试前初始化/恢复会话 cy.session("userSession", () => { cy.login(); // 追加登录验证,确保会话捕获到有效状态 cy.visit("/dashboard"); cy.contains("Welcome, User").should("be.visible"); }, { // 可选:添加会话校验逻辑,确保会话有效 validate() { cy.getCookie("your_session_cookie_name").should("exist"); } }); // 每个测试前统一跳转至目标页面(根据实际业务调整) cy.visit("/organization/members"); }); it("should add user", () => { // 你的添加用户测试逻辑 }); it("should remove user", () => { // 你的移除用户测试逻辑 }); });
关键调整说明
- 将
cy.session从before移至beforeEach:确保每个测试用例启动时,Cypress 会自动恢复之前存储的会话状态,而非仅创建一次。 - 追加登录后验证:确保
cy.session能正确捕获到已登录的状态(避免因登录未完成就结束会话捕获)。 - 可选会话校验:通过
validate选项,每次恢复会话前自动检查关键会话标识(如会话 Cookie)是否存在,提前发现会话失效问题。
额外排查点
- 检查
cy.login()实现:确认登录命令正确设置了会话所需的 Cookie 或 LocalStorage,且没有在登录后触发意外的登出操作。 - 查看 Cypress 配置:确保
cypress.config.js中未禁用会话相关特性(13.x 版本默认启用会话功能,无需额外配置experimentalSessionAndOrigin)。 - 观察测试日志:运行测试时打开 Cypress 日志面板,查看会话的「创建」「恢复」日志,确认第二个测试用例是否成功触发会话恢复。
内容的提问来源于stack exchange,提问作者Ricardo
相关产品推荐
相关产品推荐

