You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)是否存在,提前发现会话失效问题。

额外排查点

  1. 检查 cy.login() 实现:确认登录命令正确设置了会话所需的 Cookie 或 LocalStorage,且没有在登录后触发意外的登出操作。
  2. 查看 Cypress 配置:确保 cypress.config.js 中未禁用会话相关特性(13.x 版本默认启用会话功能,无需额外配置 experimentalSessionAndOrigin)。
  3. 观察测试日志:运行测试时打开 Cypress 日志面板,查看会话的「创建」「恢复」日志,确认第二个测试用例是否成功触发会话恢复。

内容的提问来源于stack exchange,提问作者Ricardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:19:57