Skip to content

Commit f1aedb4

Browse files
committed
更新备忘录v10.5:记录所有关键发现、铁律、步骤类型和提交链
1 parent 3cc6952 commit f1aedb4

1 file changed

Lines changed: 82 additions & 17 deletions

File tree

开发备忘录.md

Lines changed: 82 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,26 +1025,91 @@ HTTP服务器已就绪(0.5秒)
10251025

10261026
---
10271027

1028-
### 下一步目标(v10.4)
1028+
## v10.5 — 小程序蓝本测试完整闭环(2026-03-08)
1029+
1030+
### 成果
1031+
- **100%通过率**:70/70步骤,0 Bug,44.4秒完成
1032+
- **通用执行器**:13种步骤类型,不写死任何业务逻辑
1033+
- **完整12场景蓝本**:全部用通用步骤表达,编程AI可按此格式生成任意蓝本
1034+
- **Bug发现→修复→验证闭环**:发现4Bug→修复2个小程序真实Bug+2个蓝本问题→重测100%
1035+
1036+
### 关键技术发现和铁律
1037+
1038+
1. **小程序evaluate必须用`new Function`传函数**
1039+
- `mp.evaluate("字符串")` → 报`Arg string terminates parameters early``Unexpected token`
1040+
- `mp.evaluate(new Function("代码"))` → 正确执行,等同于`mp.evaluate(() => { 代码 })`
1041+
- 这是因为automator对字符串参数有严格的解析限制
1042+
1043+
2. **小程序没有`document`对象**
1044+
- evaluate里不能用`document.querySelector`,只能用`getApp()``getCurrentPages()``wx.xxx`
1045+
- 查询DOM元素用automator的`page.$``page.$$`(在Node端执行,不在小程序端)
1046+
- 新增`page_query`步骤类型解决此问题
1047+
1048+
3. **`callMethod('onShow')`会导致100秒超时**
1049+
- reset_state里调callMethod会让后续截图卡死
1050+
- 解决:去掉callMethod,`reLaunch + sleep(2000)`已足够
1051+
1052+
4. **策略3必须强杀进程,不能依赖`cli quit`**
1053+
- 模拟器状态烂了时,`cli quit`也会失败
1054+
- 改为`taskkill /F /IM wechatdevtools.exe /T`强杀所有进程
1055+
- 然后`cli open``cli auto`重建干净环境
1056+
1057+
5. **小程序代码修改后必须重新编译**
1058+
- 外部编辑器改了js文件,开发者工具不会自动检测
1059+
- 需要在开发者工具里点"编译",或者执行器自动kill重启
1060+
1061+
### 通用执行器步骤类型一览
1062+
1063+
| 步骤类型 | 用途 | 执行环境 |
1064+
|---------|------|---------|
1065+
| `navigate` | reLaunch跳页面(清空栈) | 小程序端 |
1066+
| `navigate_to` | navigateTo跳页面(保留栈) | 小程序端 |
1067+
| `click` | 点击元素 | automator |
1068+
| `tap_multiple` | 连续点击N次 | automator |
1069+
| `fill` | 输入文本 | automator |
1070+
| `screenshot` | 截图 | automator |
1071+
| `evaluate` | 执行JS(new Function) | 小程序端 |
1072+
| `call_method` | 调用页面方法 | automator |
1073+
| `page_query` | 查元素(text/count/texts) | Node端 |
1074+
| `read_text` | 读取元素文本(带重试) | automator |
1075+
| `assert_text` | 文本包含断言 | automator |
1076+
| `assert_compare` | 数值比较断言 | automator |
1077+
| `reset_state` | 重置全局状态+回首页 | 小程序端 |
1078+
| `wait` | 等待 | Node端 |
1079+
| `scroll` | 滚动页面 | 小程序端 |
1080+
1081+
### 修改文件
1082+
- `src/controller/miniprogram_runner.js`:13种步骤类型、new Function方案、策略3强杀进程
1083+
- `src/api/routes.py`:返回bugs和steps详情、crash保护友好提示
1084+
- `src/testing/models.py`:ActionType枚举新增7种类型
1085+
- `extension/src/sidebarProvider.ts`:步骤详情自动展开
1086+
- `miniprogram-demo/testpilot/testpilot.json`:v3.1完整12场景蓝本
1087+
- `miniprogram-demo/pages/index/index.js`:修复库存上限检查Bug
1088+
- `miniprogram-demo/pages/checkout/checkout.js`:修复同城配送费Bug
1089+
1090+
### Git提交链
1091+
- 52c20cf:通用执行器+完整12场景蓝本
1092+
- 62d8289:修复evaluate用document问题+page_query+read_text重试
1093+
- 6b4651b:关键修复evaluate/navigate/reset_state全部改用new Function
1094+
- 3970581:修复小程序蓝本测试返回bugs和steps详情
1095+
- c64f8ed:修复2个小程序Bug(库存+配送费)+空购物车蓝本
1096+
- 92ecee3:执行器crash保护
1097+
- 444c59e:策略3改为强杀进程taskkill
1098+
- 3cc6952:步骤详情自动展开+逐步进度输出
10291099

1030-
#### 优先级1:端到端验证
1031-
1. **启动引擎 → 扫描蓝本 → 选Android项目 → 设备检测 → 完整流程打通**
1032-
- 目前设备检测UI已做,但后端API(`listMobileDevices`)需要引擎实际运行才能验证
1033-
- 需要连接真机或启动模拟器测试
1100+
---
10341101

1035-
2. **小程序项目完整测试流程**
1036-
- 选择FreshMart项目 → 平台前置检查(开发者工具状态) → 运行蓝本 → 查看结果
1037-
- 验证`platformPrecheck`消息链路
1102+
### 下一步目标(v10.6)
10381103

1039-
3. **Web项目完整测试流程**
1040-
- 选择shop-demo项目 → 运行蓝本 → 查看Bug列表 → 确认结果正确
1104+
#### 优先级1:测试体验
1105+
1. **逐步进度日志**:routes.py改Popen流式读stderr,实时推送每步进度
1106+
2. **测试中状态提示**:前端显示"测试中..."动画,让用户知道系统在运行
10411107

1042-
#### 优先级2:测试报告增强
1043-
4. **报告底部附带经验总结+蓝本维护提醒**(已设计格式,待实现)
1044-
5. **报告中的Bug列表与蓝本场景对应**
1108+
#### 优先级2:端到端验证
1109+
3. **Android项目完整测试流程**
1110+
4. **Web项目完整测试流程**(shop-demo)
10451111

1046-
#### 优先级3:用户体验优化
1047-
6. **状态文案标准化**:未连接/已连接/检测中/测试中
1048-
7. **错误提示可执行化**:每个错误告诉用户下一步做什么
1049-
8. **首次无蓝本时醒目提示**(已部分实现,需完善引导文案)
1112+
#### 优先级3:蓝本生成提示词
1113+
5. **编写提示词模板**:让编程AI能自动生成符合格式的testpilot.json蓝本
1114+
6. **蓝本格式文档**:步骤类型、字段说明、示例
10501115

0 commit comments

Comments
 (0)