如何用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 }, }运行时的完整流程:
- 🚀 运行器按
command拉起 dev server(不经过 shell,executable从PATH中解析) - ⏳ 轮询
app.url直到有响应(或readyUrl指定的健康检查地址) - 🧪 所有测试跑完、失败或被中断后,自动终止该进程
启动成功后你会看到类似提示:✓ target "web" command ready 1.20s。
command 配置项速查表
| 选项 | 作用 | 默认值 |
|---|---|---|
executable | 可执行程序名(如npm、pnpm),必填 | — |
args | 参数数组,原样传递 | — |
cwd | 工作目录,相对项目根目录 | 项目根目录 |
env | 注入的环境变量(子进程只继承PATH、HOME和临时目录变量) | — |
startupTimeout | 等待就绪的毫秒数,超时报APP_UNREACHABLE | 60000 |
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),仅供参考