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

Cypress运行多个测试时如何避免浏览器自动关闭?

Cypress命令行运行多spec文件浏览器不提前关闭的解决方法

Cypress 的cypress run模式和cypress openGUI模式的默认行为存在差异:run模式默认开启测试隔离,每跑完一个独立spec文件就会销毁当前浏览器上下文、清空页面状态,而GUI模式默认复用同一个浏览器会话跑所有选中的spec,这就是两种模式下执行结果不一致的原因。

可选解决方案

方案1:合并关联用例到同一spec文件

将填写表单、上传图片、校验结果这三个强关联的测试用例放在同一个spec文件中,作为同一个测试套件下的不同测试块,run模式下单个spec内的所有用例默认复用同一个浏览器会话,页面状态会全程保留,不需要重复调用打开url的逻辑。

方案2:关闭测试隔离配置

在cypress.config.js(或ts配置文件)中关闭测试隔离,强制跨spec文件复用同一个浏览器上下文:

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    // 关闭测试隔离,跨spec复用浏览器会话和页面状态
    testIsolation: false,
    // 其余原有配置保持不变
  }
})

注意:关闭测试隔离后前一个spec的Cookie、本地存储、页面状态都会保留到后续spec,仅建议关联度高的测试套件使用该配置,避免独立用例之间互相干扰

方案3:全局封装页面跳转逻辑

如果不想修改默认隔离配置,可以把打开目标表单的逻辑封装为公共命令,在每个spec执行前自动调用,无需每个用例重复写跳转逻辑:

  1. 在cypress/support/commands.js中添加自定义命令:
Cypress.Commands.add('openTestForm', () => {
  cy.visit('https://demoqa.com/automation-practice-form')
})
  1. 在每个spec文件开头添加全局前置钩子:
before(() => {
  cy.openTestForm()
})

方案4:执行命令时指定全量spec

运行命令时明确指定所有要执行的spec文件路径,配合关闭测试隔离的配置,会复用同一个浏览器跑完所有指定spec:
npx cypress run --headed --browser chrome --spec "cypress/e2e/填写表单.cy.js,cypress/e2e/上传图片.cy.js,cypress/e2e/校验结果.cy.js"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:27:04