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

如何使用cypress run --headed执行测试后保持Test Runner开启?

解决方案:让cypress run --headed测试后保持Test Runner打开

嘿,我懂你的需求——比起需要手动触发测试的cypress open,你更倾向用cypress run --headed来启动测试,还希望跑完后Test Runner能一直保持打开状态,刚好你已经在CI环境配好了xvfb和VNC,这有几个可行的方案:

方法1:通过Cypress配置的after:run钩子阻止进程退出

你可以在Cypress的配置文件(cypress.config.js或cypress.config.ts)里添加一个节点事件钩子,在测试全部运行完成后,让进程保持活跃状态,从而留住Test Runner窗口:

const { defineConfig } = require("cypress");

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // 在测试运行结束后触发
      on('after:run', () => {
        // 用无限循环空操作阻止进程退出
        setInterval(() => {}, 1000);
      });
    },
  },
});

配置好之后,直接运行你的命令:

cypress run --headed

测试跑完后,Test Runner就会一直保持打开状态,你可以通过VNC连接到CI机器上查看甚至操作它。

方法2:用Shell脚本封装测试命令

如果觉得钩子的方式有点“硬核”,也可以写一个简单的Shell脚本,先执行测试命令,测试完成后启动一个无限循环来维持会话:

#!/bin/bash

# 执行Cypress headed模式测试
cypress run --headed

# 测试完成后,用无限循环保持进程活跃
while true; do
  sleep 1
done

把脚本保存为run-cypress-keep-open.sh,给它加上执行权限:

chmod +x run-cypress-keep-open.sh

然后在CI环境中运行这个脚本即可。

注意事项

  • 这两种方式都会让CI进程一直处于运行状态,所以如果是用于调试场景非常合适,但如果是自动化流水线,你需要手动终止进程或者按需使用。
  • 因为你已经配置了xvfb和VNC,Test Runner的界面会正常渲染,你完全可以像在本地使用cypress open一样操作它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:55:27