☰
如何用e2e自动管理开发服务器?app启动命令配置详解
2026/10/7 14:09:20 网站建设 项目流程

如何用e2e自动管理开发服务器?app启动命令配置详解

【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e

e2e 是一款面向 Web 和移动端的新一代 e2e 自动化测试框架。它最大的省心之处之一,是能在e2e.config.ts里通过 app 启动命令(app.command)自动拉起开发服务器:测试运行器替你启动应用、轮询等待就绪、跑完后自动停止。本文面向新手,用最小示例带你一次配好。

两种启动方式,按需选择

方式写法适用场景
只给地址app: { url: 'http://localhost:3000' }自己已在终端跑着 dev server
托管启动再加一个command字段希望运行器自动启动/停止应用

完整说明见官方文档 docs/starting-your-app.mdx。

让 e2e 托管启动:最小配置示例

以 examples/with-next/e2e.config.ts 为例,核心只有三行:

app: { url: 'http://localhost:3100', command: { executable: 'npm', args: ['run', 'dev'], reuseExisting: true }, }

运行时的完整流程:

  1. 🚀 运行器按command拉起 dev server(不经过 shell,executable从PATH中解析)
  2. ⏳ 轮询app.url直到有响应(或readyUrl指定的健康检查地址)
  3. 🧪 所有测试跑完、失败或被中断后,自动终止该进程

启动成功后你会看到类似提示:✓ target "web" command ready 1.20s。

command 配置项速查表

选项作用默认值
executable可执行程序名(如npm、pnpm),必填—
args参数数组,原样传递—
cwd工作目录,相对项目根目录项目根目录
env注入的环境变量(子进程只继承PATH、HOME和临时目录变量)—
startupTimeout等待就绪的毫秒数,超时报APP_UNREACHABLE60000
shutdownTimeout停止时强杀前的宽限期(毫秒)10000
log把应用 stdout/stderr 追加写入项目内文件,启动失败会带出最后 20 行不记录
reuseExisting若就绪地址已有进程在应答,直接复用、不再启动false

两个高频技巧:

  • reuseExisting: true:本地开发时如果端口上已经跑着服务,就复用它(CI 环境会忽略该选项,始终重新启动)。
  • log: '.e2e/logs/app.log':排障神器,应用启动报错时日志里一目了然。参考 docs/examples/quickstart/e2e.command.config.ts。

进阶:让 e2e 自动挑选空闲端口

多个检出并行跑测试时,固定端口容易打架。把 URL 端口写成0,运行器会自动挑一个空闲端口:

app: { url: 'http://127.0.0.1:0', command: { executable: 'pnpm', args: ['dev', '--port', '{port}'], env: { PORT: '{port}' } }, }

{port}会被替换成实际分配的端口,测试中可通过app.baseUrl读取。注意两点:主机名需用127.0.0.1或[::1](localhost:0会被拒绝);该模式与reuseExisting互斥。

多目标共享与常见坑

  • 多目标共享进程:多个 target 声明相同的command时,只启动一个进程,全部 target 复用,适合「同一应用、多个浏览器/视口」的组合。
  • CI 行为:CI 中reuseExisting被忽略,若端口已被占用会报APP_ALREADY_RUNNING。
  • Next.js 16 注意:target 打开127.0.0.1而next dev识别为localhost时会出现「点得到按钮但事件不触发」的问题,需在next.config.ts中加入allowedDevOrigins。
  • 依赖服务:当前版本只托管app.command这一个进程,数据库等依赖需提前启动,或让启动脚本一并拉起。

延伸阅读

资源位置
启动应用指南docs/starting-your-app.mdx
配置参考docs/reference/config.mdx
命令校验源码packages/e2e/src/config/command.ts
应用解析源码packages/e2e/src/config/app.ts
Next.js 完整示例examples/with-next/e2e.config.ts
Expo 多平台示例examples/with-expo/e2e.config.ts

配好app.command后,你只需一条e2e run命令,开发服务器的生命周期就全部交给框架了 🎉

【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询