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

如何在Cypress多Spec文件分组测试中实现单次登录且不关闭浏览器

实现Cypress分组测试仅登录一次且保持浏览器打开

需求说明

  • 现有4个测试用例,全部需要使用相同的登录凭据
  • 执行分组测试时,仅需完成一次登录操作
  • 测试结束后,Cypress不关闭浏览器

当前配置

在package.json中的脚本配置如下:

{
  "scripts": {
    "groupingspec": "cypress run --spec cypress/integration/specs/OneSpec.js cypress/integration/specs/TwoSpec.js cypress/integration/specs/ThreeSpec.js cypress/integration/specs/FourSpec.js --browser chrome --headed",
  }
}

通过终端执行命令:

npm run groupingspec

解决方案步骤

1. 添加--no-exit参数保持浏览器打开

修改package.json中的脚本,在命令末尾添加--no-exit,确保测试完成后浏览器不会自动关闭:

{
  "scripts": {
    "groupingspec": "cypress run --spec cypress/integration/specs/OneSpec.js cypress/integration/specs/TwoSpec.js cypress/integration/specs/ThreeSpec.js cypress/integration/specs/FourSpec.js --browser chrome --headed --no-exit",
  }
}

2. 使用Cypress Session API实现单次登录

在cypress/support/e2e.js(旧版本为cypress/support/index.js)中添加以下代码,利用Session API在所有测试用例间共享登录状态,仅执行一次登录:

beforeEach(() => {
  cy.session('user-login', () => {
    // 替换为你的实际登录逻辑
    cy.visit('/login');
    cy.get('#username').type('你的用户名');
    cy.get('#password').type('你的密码');
    cy.get('button[type="submit"]').click();
    // 验证登录成功(示例:检查是否跳转到主页)
    cy.url().should('include', '/dashboard');
  });
});

3. 简化测试用例代码

每个测试用例(如OneSpec.js)无需重复编写登录逻辑,直接编写业务测试即可:

// OneSpec.js示例
describe('测试模块一', () => {
  it('测试功能A', () => {
    cy.visit('/feature-a');
    // 执行具体测试操作
  });
});

原理说明

  • --no-exit参数:阻止Cypress在测试完成后终止浏览器进程,保持窗口打开状态。
  • Session API:Cypress会缓存登录后的会话数据(包括Cookies、LocalStorage等),后续测试用例执行时自动恢复登录状态,避免重复登录;若会话过期,会自动重新执行登录流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:31:23