外观
这套测试是什么
我们用 Midscene.js 的测试运行器 @midscene/test 做电商的 UI 自动化。它的特点是用例用自然语言写:
yaml
cases:
- name: 搜索商品并加入购物车
steps:
- aiAct: 在顶部搜索框输入"蓝牙耳机"并回车
- aiAct: 点击搜索结果里第一个商品
- aiAct: 点击"加入购物车"
- aiAssert: 页面出现"已加入购物车"提示,购物车角标数字为 1运行时由大模型看截图理解页面,找到元素再操作,所以:
- 不用写选择器,页面改版、换皮肤一般不用改用例。
- 同一套写法既能跑 Web(Playwright + Chromium),也能跑 Android 真机(adb)。
- 每一步自动截图进报告,失败时打开报告就知道卡在哪一步、页面长什么样。
两类步骤
| 类型 | 举例 | 调不调模型 | 适合做什么 |
|---|---|---|---|
| AI 节点 | aiAct、aiTap、aiInput、aiAssert、aiQuery、aiWaitFor | 调 | 业务操作、页面断言 |
| 确定性节点 | gotoUrl、setViewportSize、launch、terminate、back、home、sleep 以及自己写的节点 | 不调 | 打开页面、拉起 App、重置数据、查后台状态 |
原则:能确定的事用确定性节点,需要"看"页面的事用 AI 节点。比如打开商品页直接 gotoUrl,不要让 AI 去点导航;判断"订单状态是已支付"用 aiAssert。
一次测试的流程
- 拉代码、装依赖、填模型 Key(见环境准备)。
- 在
cases/web/或cases/android/下写 YAML 用例(见用例写法)。 pnpm test:web或pnpm test:android跑起来。- 打开
midscene_run/report/下的 HTML 报告看结果。 - 有问题按问题上报规范提单,附报告。
当前覆盖范围
| 端 | 状态 |
|---|---|
| Web(Chromium) | 已接入,示例用例跑通 |
| Android 真机 | 已接入,Galaxy A16 冒烟通过 |
| iOS | 未接入,需要 Mac + Xcode + WebDriverAgent |
| 微信小程序 | 未接入 |