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

Cypress能否保留浏览器信息/数据而不启动新会话?

回答

这个需求完全可以实现。Cypress默认重建会话、清除缓存/cookie的逻辑是为了保证测试用例之间的环境隔离,避免脏数据影响测试结果,这类默认行为都可以通过配置手动关闭,实现浏览器上下文全量保留。

具体配置方案

  • 单个spec文件内跨用例保留状态
    Cypress 12及以上版本直接在配置中关闭测试隔离即可。配置生效后,同一份spec文件里的所有测试用例执行时不会重建浏览器会话,也不会自动清除cookie、页面缓存、localStorage/sessionStorage数据,之前输入的表单内容、登录态、页面操作状态都会完整保留。
    配置示例:

    const { defineConfig } = require("cypress");
    module.exports = defineConfig({
      e2e: {
        testIsolation: false, // 关闭默认测试隔离逻辑
        // 其余原有配置保持不变
      }
    })
    

    如果用的是12以下的旧版本,也可以通过Cypress.Cookies.defaults({ preserve: /.*/ })全局保留所有cookie,搭配手动跳过页面重置的逻辑实现类似效果,但这类兼容方案稳定性一般,有条件的话直接升级到新版用官方提供的配置项最省事。

  • 跨spec文件、跨次运行持久化全量浏览器数据
    如果需要不同spec文件之间、甚至多次重启Cypress跑测试时都保留之前的所有浏览器数据,可以在关闭测试隔离的基础上,给Chromium内核浏览器(Chrome、Edge、Electron等)指定固定的用户数据存储目录,让浏览器把缓存、cookie、用户输入记录、登录态等所有数据持久化存到本地固定路径,不会在测试结束后自动销毁临时目录。
    配置示例:

    const { defineConfig } = require("cypress");
    const path = require("path");
    
    module.exports = defineConfig({
      e2e: {
        testIsolation: false,
        setupNodeEvents(on, config) {
          on('before:browser:launch', (browser, launchOptions) => {
            if (browser.family === 'chromium') {
              // 移除默认的临时用户数据目录启动参数
              launchOptions.args = launchOptions.args.filter(arg => !arg.startsWith('--user-data-dir'))
              // 指定固定的持久化用户数据目录
              const persistentDataPath = path.resolve(__dirname, 'cypress/chrome-persist-data')
              launchOptions.args.push(`--user-data-dir=${persistentDataPath}`)
              return launchOptions
            }
          })
        }
      }
    })
    

注意事项

  • 关闭测试隔离后,测试用例之间会完全共享上下文状态,如果有部分用例需要依赖干净的无状态浏览器环境执行,不要全局开启该配置,可以在对应的测试describe块单独设置隔离规则。
  • 使用固定用户数据目录做持久化时,不要同时跑多组并行测试,避免多个进程同时读写同一个用户数据目录引发冲突,导致测试报错或状态异常。
  • 如果用Firefox跑测试,持久化逻辑一致,只需要在before:browser:launch钩子中替换为Firefox对应的用户目录启动参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:18:28