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

Cypress 12.17.0中cacheAcrossSpecs跨Specs保持会话失效求助

Cypress 12.17.0 测试用例间会话丢失问题修复

问题场景

使用Cypress 12.17.0,在before钩子中通过cy.session完成登录并配置cacheAcrossSpecs: true,但同一个describe下的Test1执行正常,Test2会被重定向至登录页面,无法保持会话。

核心原因

  1. cy.session仅在before中执行一次,而Cypress默认每个it用例会隔离上下文(重置cookie、localStorage等),Test2运行时没有触发会话恢复逻辑,导致使用无效会话。
  2. 缺少会话有效性验证,Cypress无法判断现有会话是否可用,可能直接跳过会话复用。

解决方案

1. 将before替换为beforeEach并添加验证逻辑

每个测试用例执行前触发cy.session,确保Cypress尝试恢复或重新创建会话,并添加验证逻辑确认会话有效性:

describe('Testing session persistence', () => {
    beforeEach(() => {
        const url = '/';
        const username = 'my_user';
        const pass = 'user_pass';

        cy.session(
            'session_test', 
            () => {
                cy.visit(url);
                cy.get('#username').type(username);
                cy.get('#password').type(pass);
                cy.get('#acceptButton').click();
                cy.getCookie('PHPSESSID').should('exist');
            },
            {
                cacheAcrossSpecs: true,
                validate: () => {
                    cy.visit('/');
                    cy.url().should('not.contain', '/login');
                }
            }
        );
    });

    it('Test 1: Check anything', () => {        
        cy.visit('/');
        cy.url().should('not.contain', '/login');
    });

    it('Test 2: Other action', () => {
        cy.visit('/');
        cy.url().should('not.contain', '/login');
    });
});

2. 关键配置说明

  • beforeEach钩子:保证每个用例执行前都会触发会话处理逻辑,Cypress会自动复用已缓存的有效会话,无需重复登录。
  • validate函数:验证当前会话是否仍有效,若验证失败(比如跳转到登录页),Cypress会自动重新执行登录逻辑,确保用例使用有效会话。
  • cacheAcrossSpecs: true:该配置负责跨多个spec文件共享会话,同一个spec内的用例复用则依赖cy.session的自动恢复机制。

额外检查项

  • 确认应用的会话cookie名称是否为PHPSESSID,部分应用可能使用SESSIONID或其他自定义名称,需对应修改cy.getCookie的参数。
  • 保持Cypress默认的testIsolation: true配置,不要关闭用例隔离,cy.session会自动处理会话共享逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:37:08