你的 AI 不仅仅编写测试,还会运行它们。

发布: (2026年4月19日 GMT+8 18:47)
7 分钟阅读
原文: Dev.to

Source: Dev.to

在真实浏览器中编写可运行的测试

大多数 AI 生成的测试在 Node.js 中运行——针对 jsdom(一个模拟的 DOM)。这在很多情况下都能工作,但它并不等同于在实际应用中运行,使用真实的组件、真实的路由以及真实的网络模拟。

TWD 测试在浏览器中运行。它们在你正在运行的应用内部执行,针对真实的 DOM,挂载你的实际组件树。/twd 技能——TWD AI 插件 的一部分——会编写测试,在浏览器中运行它们,读取结果,如果出现失败,则修复代码并重新运行。

完整循环

  1. Write – 代理读取你的 .claude/twd-patterns.md,了解项目的测试约定,然后生成符合这些模式的测试。
  2. Execute – 测试通过 twd-relay 发送到你的浏览器,这是一个将代理与运行在应用中的 TWD 侧边栏连接的 WebSocket 中继。
  3. Read results – 通过/失败状态以纯文本形式返回,并附带错误细节(没有截图,没有 DOM 转储——只有你需要的信号)。
  4. Fix and re‑run – 如果测试失败,代理读取错误信息,调整测试并重新执行。

此循环自动运行;在完成之前你无需参与。

How the Relay Works (Without Getting Heavy)

twd-relay 使用 WebSocket 连接在代理和浏览器之间。当代理想要运行测试时,它会通过中继发送命令。浏览器在运行中的应用内部执行测试——针对真实的 DOM,使用你已经模拟的 API 响应,并且使用真实的组件状态。

结果以简洁的文本返回:是否通过?,如果没有,则返回 错误信息是什么。这使得令牌使用量非常低,给代理提供与你在终端中看到的相同输出——结构化且可操作。

在构建之前先运行

推荐的工作流程是先写测试。先运行 /twd 再实现功能。

/twd Write a test for the checkout form it should verify that submitting with an empty email shows a validation error

代理根据你现有的模式编写测试,在浏览器中运行它,并且会失败——因为该功能尚未实现。这个失败本身就充当了规范。随后你实现功能,测试通过,而你无需考虑测试结构、选择器或 mock 设置;代理会使用项目中已经掌握的模式来处理这些。

当测试无法通过时会发生什么

并不是每个测试都能在第一次尝试时修复。有时代理会遇到它无法解决的情况——组件的行为与预期不同,或模式无法清晰地转换。

/twd 技能通过硬性限制来处理这种情况:如果在三次修复尝试后测试仍然失败,它会被标记为 it.skip 并在文件中留下注释。它不会阻塞其余的测试运行,让你可以稍后调查真正的问题。这种做法保持了信任:失败会被显现出来,而不是被静默隐藏。

保持对话清洁

/twd 技能在一个分叉的上下文中运行,这意味着测试迭代、失败尝试和修复循环会与主对话分开进行。完成后,你会收到一个摘要,说明哪些通过、哪些被跳过以及创建了哪些文件,而无需滚动浏览大量调试信息。

一个具体示例

假设你正在构建一个 Vue 组件,用于获取并显示用户数据。你执行:

/twd Write tests for the UserProfile component

在幕后:

  • 代理读取 .claude/twd-patterns.md,了解你的项目约定、如何使用 twd.mockRequest() 来模拟 API 端点,以及在 screenDom 中使用哪些选择器。
  • 它生成的测试会模拟 /api/users/:id 端点,访问页面,并断言显示的数据是否正确。
  • 通过中继在你的浏览器中运行这些测试。
  • 如果测试失败(例如选择器与标记不匹配),代理会读取错误信息,修正查询并重新运行。
  • 所有测试最终都会通过。

**总耗时:**不到两分钟,且无需人工干预。

实际需要的入门准备

  • 在你的应用中运行的 TWD 侧边栏(来自 twd-js)。
  • 本地运行的 twd-relay
  • /twd:setup 生成的 .claude/twd-patterns.md
  • twd‑ai repository 安装的 /twd 技能。

就这么简单。relay 负责浏览器连接,patterns 文件定义约定,skill 协调其余工作。

即将推出:CI 设置

在本地编写和运行测试只是方程式的一半。另一半是将它们集成到 CI 流水线中,使测试在每次推送时无头运行,根本不需要浏览器。

本系列的下一篇文章介绍 /twd:ci-setup,它会配置你的项目在 CI 中使用无头 CLI 运行器执行 TWD 测试。如果你曾希望 AI 编写的测试来把关部署,这篇文章就是你需要阅读的。

0 浏览
Back to Blog

相关文章

阅读更多 »

地球日的活力

我构建的 History 按日历天在浏览器中保存;每个部分旁边的照片是真实的捆绑图像。可选的 Gemini API 路由可以添加温暖的教练……