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

Cypress运行describe块后重置页面跳转登录页测试失败问题

问题原因

两个核心配置和钩子用法问题导致现象不符合预期:

  • Cypress 12+ 版本默认开启测试隔离(testIsolation):默认配置下,每一个it用例执行前,Cypress会自动清空所有浏览器存储(Cookie、LocalStorage、SessionStorage),将页面重置为空白页,不会保留上一个用例、甚至外层before()钩子执行后的登录会话状态。所以执行到第二个describe块的用例时,登录态已经被清除,访问页面自然会跳回登录页。
  • 钩子类型使用错误:你在每个子describe块中使用的beforeEach()是用例级钩子,块内每一个it执行前都会触发一次,不符合你「区块内只点击一次导航」的需求;且因为测试隔离重置了状态,钩子执行时页面已经回到未登录状态,根本找不到对应的导航元素。
修复方案

按照你的需求调整两处即可:

  1. 在当前测试套件的context配置中关闭测试隔离,让整个套件的用例共享登录状态,保证根层级的登录操作仅执行一次
  2. 将两个子describe块中的beforeEach()替换为before()(块级钩子),让导航点击逻辑仅在当前区块的所有用例执行前触发一次,区块内后续用例直接复用已跳转完成的页面状态

修正后的完整代码如下:

context('Admin - Analyze Tab', { 
  tags: ['@admin'],
  testIsolation: false // 关闭当前套件的测试隔离,保留跨用例状态
}, () => {
  let user;

  before(() => {
    cy.visit(Cypress.env('admin_url'));
    user = Cypress.env('admin_user');
    cy.login(user.email, user.password);
  });

  describe('Analyze Section', ()=>{
    // 替换beforeEach为before,区块内仅执行一次导航
    before(() => {
      cy.get('#HyperLinkAnalyze').click();
      cy.get('#HyperLinkCampaignStats').click();
    });

    it('TEST 1', {}, () => {
      cy.contains('#analytics-row1', 'Response Rate').should('be.visible');
    });

    it('TEST 2', {}, () => {
      cy.contains('#analytics-row1', 'Response Rate').should('be.visible');
    });
  });

  describe('Other Section', ()=>{
    // 替换beforeEach为before,区块内仅执行一次导航
    before(() => {
      cy.get('#HyperLinkAnalyze').click();
      cy.get('#HyperLinkXSellStats').click();
    });

    it('TEST 1', {}, () => {
      cy.contains('#analytics-row1', 'Response Rate').should('be.visible');
    });

    it('TEST 2', {}, () => {
      cy.contains('#analytics-row1', 'Response Rate').should('be.visible');
    });
  });
});
补充说明
  • 如果不想关闭测试隔离,也可以在登录逻辑外包裹cy.session()缓存登录凭证,每个用例执行前会自动恢复登录态,不需要重复走登录流程,这种方式更符合Cypress推荐的最佳实践,适合用例间可能存在状态污染的场景。
  • 如果后续某个用例执行后会修改页面状态,导致同区块后续用例的页面上下文错乱,可以在对应describe块内补充轻量的beforeEach校验逻辑,比如判断当前是否在目标页面,不在的话再触发导航,不用每次都强制点击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:00:59