如何在不使用隧道的情况下测试 localhost?
将 BASE_URL 指向本地主机上的应用或私有预发布环境 URL. Nexus 引擎会在测试运行前启动应用,等待应用响应后运行测试,并在测试结束后停止应用,无需隧道,无需公开预发布环境 URL, 测试数据也不会离开你的网络。
由 Verdict System LLC 的 Nexus Studio 团队撰写。2026年10月27日。
为什么云端测试网格需要隧道?
托管网格在自己的服务器上运行浏览器,因此只能通过隧道或公开的预发布环境 URL 访问你机器上的应用。Nexus Studio 在应用所在的机器上运行浏览器,因此测试和应用可以直接通过 localhost 或私有预发布环境 URL 通信。
引擎如何运行你的应用?
- 测试结束后仍在运行的开发服务器。
NEXUS_APP_START会在每次运行前启动应用,并在运行结束、失败或中断时停止应用及其整个进程树,包括按下 Ctrl+C 的情况。 - 应用根本没启动,测试却显示通过。 测试运行会等待就绪 URL 返回低于 500 的任意状态码,每 0.5 秒检查一次。如果应用无法启动,测试就不会开始:
CONFIG_ERROR APP_DID_NOT_START, 并附上最后 40 行日志。 - 为已在运行的应用又启动一个实例。
NEXUS_APP_REUSE=true会使用已能响应的应用,并让它继续运行;false则会在该地址有其他服务响应时停止测试运行。 - 无法关联到具体构建的结果。 每次运行都会记录应用 package.json 中的版本号和测试时的 git 提交。
在 Docker 中和通过 SSH 运行时有什么不同?
在 Docker 中,应用仍在本机运行,容器通过 host.docker.internal 访问指向 localhost 的 BASE_URL. 通过 SSH 运行时,应用在远程主机上启动。
需要配置什么?
一个程序及其参数,不使用 shell: npm run dev、pnpm dev 或 node server.js. 执行 nexus app check 或在 Studio 中点击测试,即可启动应用、等待就绪,然后将其停止。完整日志保存在 evidence/run-context/ 中。
有哪些局限?
- 启动命令由一个程序及其参数组成,不使用 shell, 因此不支持
&&等 shell 运算符。如需执行较长的命令序列,请将其放入脚本,然后启动该脚本。 - 通过 SSH 运行时,localhost 指的是远程主机:应用在那里启动,而不是在 Studio 所在的机器上启动。
在哪里可以了解更多?
自有基础设施页面对比了 PC、迷你 PC、Docker 和租用服务器,并说明了各自的费用。 信任页面列出了 Studio 唯一会自行建立的连接, 自托管 Playwright 指南则介绍了如何在 Docker 或 Linux 服务器上运行相同的测试。