TestDog

MIT
TypeScript
macOS / Windows
w471176877 · September 29, 2026 · 37 次阅读 · 0 条评论

TestDog 是一款面向 Web 回归测试的本地桌面工具。核心思路是把「理解需求」和「执行回归」分开:用自然语言描述流程生成测试脚本,确认后保存为可编辑的 Playwright 脚本,之后由 Playwright 确定性回放——回放过程不调用大模型,不消耗 token。

它想解决什么问题

让 AI agent 直接跑 E2E,通常会遇到三件事:同一需求的两次执行路径不同,失败不可归因;回归越频繁、token 成本越高;产物是一段执行历史,没法评审和 diff。TestDog 的边界划分是:

环节 是否需要 LLM 说明
自然语言 → 脚本 是 使用用户自己配置的 OpenAI 兼容网关
定位器修复 / 自愈 仅失败时 已保存定位器失效后才请求模型提替代方案
手动录制 否 走 Playwright codegen
回放与断言 否 已保存步骤由 Playwright 确定性执行
批量回归与报告 否 复用已保存脚本,输出截图 / console / network 证据

核心能力

  1. AI 生成脚本:输入自然语言(可带附件、截图、登录配置)→ 模型先预拆步骤计划 → 确认后在真实浏览器逐步执行 → 动作成功后解析为语义定位器落库;支持暂停续跑、AI 修复与人工接管。
  2. 手动录制脚本:Playwright codegen 录制操作,解析为可编辑的结构化步骤(未识别的行保留原始记录,不丢行)。
  3. 回放运行:Playwright 确定性回放(零模型成本),支持 UI 断言(可见 / 隐藏 / 文本 / URL)、接口断言(状态码 / 响应体 / JSON 字段)、WebSocket 断言(发送 / 接收);失败自动截图并采集 console / network;结果导出 JSON / Excel;项目内用例支持批量无头运行。
  4. 定位器与自愈:定位策略优先语义(role + 可访问名、label、placeholder),结构选择器仅作兜底;支持显式父作用域处理同名元素;自愈仅在失败时触发,且需人工确认后才回写脚本,不做静默自动改写。
  5. 组件库插件:按「组件库 × 能力域」拆分的语义动作插件(下拉 / 树选择 / 级联 / 日期 / 时间 / 滑块),覆盖 Ant Design、Element(element-ui / element-plus)、Vant、MUI;动作遵循三态结果协议(成功 / 失败 / 待定)+ 页内后验校验,拦截「点了但没选上」的假成功;支持上传自定义插件与预设编排。
  6. 生成记录:每次生成留步骤级日志(工具调用、视觉观察、求助决策)与 token usage 记账,按保留天数自动清理。
  7. 其他:.testcase 单条 / 批量导入导出;用例拖拽排序、批量设置默认脚本版本;测试报告(Excel,含逐运行步骤明细 / console / network / token);系统变量注入唯一测试数据(随机手机号 / 邮箱等);中英双语界面。

安装与快速开始

  1. 到 GitHub Releases 下载对应平台安装包(macOS Apple Silicon / Intel、Windows x64),安装包内置 Node 运行时;
  2. 安装并确认系统已装 Chrome(浏览器自动化默认走系统 Chrome);
  3. 在「设置」里填写 OpenAI 兼容网关地址、密钥与模型名;
  4. 在「项目」页导入示例 .testcase,或直接新建用例试一次 AI 生成;
  5. 详细步骤见快速开始。

技术栈

Tauri 2 外壳 + 系统 WebView 中的 React 18(Vite / Ant Design / Tailwind CSS)+ 独立 Node 后端进程(Fastify,REST + WebSocket;Prisma + SQLite;Playwright 负责回放与录制,Stagehand 负责生成期执行与自愈重定位)。Prisma、Stagehand 无法运行在 Tauri 的 Rust/WebView 层,因此后端独立成进程,生产环境打包为单文件并内置 Node 运行时。

限制(先说清楚)

  • 需要自备 OpenAI 兼容的模型网关,项目不内置模型、不做托管服务;
  • 需要系统安装 Chrome;
  • 仅桌面端(macOS / Windows),不是云测试平台,也不做通用浏览器助手;
  • 项目早期(v0.1.x),用例与脚本格式可能随版本演进。

链接

评论列表
No Comment at the moment.