入门

测试范围

从登录到恰好只扣款一次的支付,每种测试需要 danwo 的哪些层。

danwo 能测试每个应用都有的用户流程,也能做大多数测试套件触及不到的界面背后的检查。本页列出这两类测试,以及每一种所需的层和延伸阅读。

各个层

每一层都是可选的,并在前面各层的基础上叠加。简介用几行代码展示了每一层。

层增加的能力前提
1. 定位器指名某个元素的步骤:按钮、输入框、标题无
2. 智能体步骤用自然语言写的步骤,录制一次,回放时不调用模型一个模型,用于首次运行
3. 视觉对比把页面或某个元素与基线图片进行对比无
4. 模拟的第三方服务Stripe、Clerk、Resend 等,在本地应答在配置中加入一个服务
5. 不变性校验读取你的数据库和第三方服务数据的规则通常需要第 4 层
6. 故障矩阵针对每一种可能出错的情况,把测试回放一次一条用来判定结果的不变性校验

第 1 到 3 层本身就是一套完整的端到端配置。

界面上的用户流程

这些只需要第 1 到 3 层,不需要第三方服务。定位器测试不需要模型;智能体步骤在录制完成之前需要模型密钥。

你想测试层参见
用密码注册和登录1智能体与定位器
每个测试开始时就已登录1保存的会话
导航:菜单、链接、按地址打开的页面1Web
搜索和筛选列表1 或 2智能体与定位器
表单:必填字段、错误提示、成功提示1智能体与定位器
结账页面:购物车、合计、地址1 或 2智能体步骤
一个应当与上次看起来一样的页面3视觉对比
两个人:聊天、邀请、共享文档1第二个人
Android 或 iOS 上的流程1 或 2Android 测试、iOS 测试
在预发布或生产环境中测试的页面1 或 2danwo 的运行环境
难以用定位器确定的步骤2智能体步骤
已有的 Playwright 测试任意Playwright Test
已有的 Cypress 测试套件任意从 Cypress 迁移
已有的 Detox 测试套件任意从 Detox 迁移

智能体步骤只在首次运行时调用模型。之后它们从回放缓存中回放,而 --replay-only 确保 CI 永远不会调用模型。

经过第三方服务的流程

这些流程会加入一个模拟的第三方服务,所以测试运行时不需要沙箱账号,也不需要真实密钥。

你想测试层参见
用邮件发送的验证码或魔法链接登录4邮件和 2FA 验证码
用 Clerk、Google 或 GitHub 登录4用 Clerk 登录
用 Stripe Checkout 或卡号输入框付款4测试第三方服务
到期的试用、自动续费的订阅4时间旅行
点击之后运行的后台任务4后台任务
AI 功能,模型的回答由脚本预设4带工具的 AI 聊天
直接上传到 S3 的文件4S3

界面背后的检查

这些是界面通过时被掩盖的 bug。它们需要一条不变性校验(invariant),并借助故障矩阵找出不变性校验被打破的那些运行。

你想确认层参见
银行卡只被扣款一次,而不是两次5, 6重复付款
只发出一封欢迎邮件,而不是零封或两封5, 6Next.js 候补名单
到达两次的 webhook 只被处理一次5, 6被处理两次的 webhook
第三方服务返回 500 时应用能够恢复6故障类型
双击按钮只生成一个订单5, 6故障类型
你的数据与第三方服务的数据一致5编写不变性校验
数据库提交丢失时不会丢失订单5, 6丢失的提交

下一步

本页内容

在每个 Pull Request 上运行

每个 Pull Request 一个 GitHub Check 和一条评论,并附上完整的运行记录。

配置 CI