Commit Graph

15 Commits

Author SHA1 Message Date
woan 4b76e5de17 控制稳定性与报告增强 + 多项用例修复
- 蓝牙: resetBluetooth(adb svc 关→开)接入吸顶灯Pro/relay switch添加前; switchToBleAndVerify(切BLE+下拉刷新+响应度校验+重试)接入BLE控制阶段
- 卡片查找: scrollToAndTap 点击前重取新鲜句柄+stale重取(治RN首页"does not exist in DOM anymore"); 找不到设备时打印当前页设备卡(logVisibleDeviceCards)接入blind_tilt/灯/空净/加湿器finder
- 用例修复: 创建房间补点Got it引导; 账号注销destroyBto兜底+诊断; plug添加后ensurePlugOn保证供电
- 报告: gen-p0-report 增 BLE/WiFi 控制成功率拆分(按阶段标记去重); run-ios-adds 清.results.json使iOS报告不混Android
- 重试: vitest用例级retry:1(VITEST_RETRY 控制阶段开启, 两端); run-p0-all 加 CONTROL_ONLY 只跑控制 + 末尾自动出成功率表

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 16:17:48 +08:00
woan fb1c13e086 修自动连接型设备误判 not found in BLE scan(彩灯等)
彩灯等设备配对后自动连接、直接进配网页,无"从扫描列表选设备"步 → waitForDeviceInScan 等不到设备名元素 30s 超时报 not found in BLE scan,实际已在配网页。
修:waitForDeviceInScan 增 advanceKeywords,轮询时若已直达配网/连接页则提前返回;Step3 未选到设备时检查"是否已推进到配网/连接页",已推进则跳过选设备步继续。
验证:Color Bulb 现完整 PASS(自动连接→ASUS_30 配网成功 15s→落账号)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 14:59:20 +08:00
woan 1f0b8fd576 修 iOS 选品类点偏:滚到居中带+沉降重取rect点新鲜中心
Color Bulb 在 y=3941(第5屏),滚进可视区后 tapElement 取到移动中的旧坐标点偏 → 仍在目录页空转。改:滚到居中带 [0.16h,0.72h]、沉降450ms、重取 rect 点新鲜中心坐标。验证 Color Bulb 现可进 Installing 流程。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 14:47:30 +08:00
woan 85a6f04fb1 修 iOS 选品类点空:屏外元素先滚进可视区再点 + 校验真进流程
根因:WDA 返回屏外元素(品类常在 y=1192,屏高 844),旧代码直接点屏外坐标→点空没导航却 return true→relay 在目录页空按→添加失败("没点进入口")。
修复:① selectDeviceCategory 找到品类后先滚动送进可视区(y∈[0.10h,0.82h])再点,在下方下滑/上方上滑;② 点后用 "Add Manually"(目录页独有)是否消失校验真进流程,替代会误判的 includes(categoryName)。
验证:Robot Vacuum Cleaner S1 Plus 现可正确进入 Configuration wizard。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 14:29:38 +08:00
woan cf153b31ab 删除调试临时脚本(probe-*.ts + tmp_hub.ts)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 11:58:11 +08:00
woan ae336e300f iOS P0 适配与稳定性修复 + 报告计数/重试增强
- iOS reset-except 重写:滚动找可删卡逐张/批量删(一批~10),跳过固定插件与删除异常项,NEVER_KEEP 让 Outdoor PTC 可删
- goBackToHomepage 修误触:isFullscreen 加 source.length<2500 闸(Preferences 不再误判全屏点进消息页),根 tab 页精确点 Home tab,加载守卫
- iOS WiFi 配网:轮询点"加入"系统框 + Available now 成功判定;扫地机 S1P relay 等 Second step 再按
- 卡片查找统一改"滚到找到/到底"(bot/plug/water control),修 34 设备首页找不到卡片
- 选品类慢滑防过冲;feedback 滚轮用 setPickerWheelValue;插件热更多行解析
- 报告:plug/curtain suite 带设备名 + PROTO 后缀(ble/wifi 各算一条,修用例总数偏低);总体成功率;控制/添加失败重试
- iOS 全 P0:补 keypad/平台/账号 TAIL + doorbell/outdoor_ptc + camera_stream Outdoor PTC

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 11:57:34 +08:00
woan 71553bf200 test(camera): 门铃 Video Doorbell 纳入拉流用例(出流验证通过; ONES stepId 待补)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 18:59:48 +08:00
woan c67f46992f feat: 新增多设备添加用例 + 灯类卡片控制(亮度/色温) + 选品类大小写不敏感
添加用例(真机验证通过, Android):
- 屋檐灯 Permanent Outdoor Lights(ch38/4s, 发现页流程)
- URC 万能遥控器(ch20+21 双键同按/4s, 发现页流程)
- Relay Switch 1(ch48/2s; 二级选型号 + Skip this guide + Select Device 选设备)
- AI Art Frame(ch46/3s, 流程同 AI Hub; 首页名 AI→Al 渲染坑用 "Art Frame" 匹配 + 升级弹框关闭)
- Hub 3(ch9+10 双键同按/5s, 发现页流程而非 Hub Mini 流程)
- Contact Sensor(ch47/6s 串口配对)
- 门铃 Video Doorbell(ch36+37 同按/5s) 注释更正

控制用例:
- 灯类首页卡片通用控制 eave_light_control(动态识别电源键+滑条; 亮度+色温; 边缘夹紧防返回手势)
  覆盖屋檐灯/RGBICWW Floor Lamp/RGBWW Floor Lamp/RGBWW Strip Light 3/Strip Light 4E/Color Bulb/Ceiling Light Pro

helper/config:
- selectDeviceCategory 大小写不敏感全字匹配(textMatches (?i))
- config/relay.config.ts 新增 eave_light/urc/strip_light_3/relay_switch/hub3/ai_art_frame 通道
- run-p0-all.sh 纳入上述 ADD/CONTROL

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 18:47:11 +08:00
woan d5c81826fb feat: 串口配对添加链路 + 多设备连接用例 + soak/继电器工具
- 设备添加: device-add.helper 串口配对主链路(addDeviceWithSerialPairing),
  按平台设备名注册表(device-registry.helper),hub/curtain/qr 专用 helper
- 新增多设备连接用例: remote、outdoor_meter、rn_plugin,刷新各品类 connect 用例
- 配置: relay.config(继电器通道/按键映射)、wifi.config(分平台配网凭据)
- 脚本: 夜间 soak(android/ios)、reset-devices、relay 控制与报告、调试脚本
- 工具: serial_controller 串口协议、zendesk/feedback/ones-anchor helper、test-reporter
- 杂项: 撤出追踪 .DS_Store / .claude 本地设置;.gitignore 忽略
  docs/ test-plan/ test_must_case/(生成产物/单独维护)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 14:14:37 +08:00
woan 373a8bd6fa feat: 必测项自动化锚点 + 动态设备锚点 + 双协议网络切换 + ONES mutation 回写
ONES 回写:
- ones-sync 改为 ones graphql mutation(updateTestcasePlanCase/Step),修复 token 打码导致的 401;支持 step 级回写、按 case 聚合
- gen-writeback-params.ts + ones-writeback-params.json:固化用例/步骤 uuid,给 plan 链接即可回写

必测项锚点(reporter.record 名带 [P0][ONES:号(#step)][协议],it 标题带 [ONES:号] 备注):
- 添加:15 个 connect
- 控制:bot/color_bulb/lock/plug/strip_light/fan/sensor/humidifier/ceiling_light/curtain/meter/urc(双协议,PROTO 切换)
- 同品类多型号:ones-anchor.helper 动态解析(curtain/lock/plug/sensor/humidifier/hub/meter/robot),换 <CAT>_DEVICE 重跑分别回写

双协议网络前置(network.helper + driver.activateApp):
- Android adb(svc wifi + am start 蓝牙设置点 switch_widget;实测 svc bluetooth 不可用)
- iOS 系统设置 UI(蓝牙 name=BLUETOOTH / WiFi name=无线局域网,iOS26.5 实测)

测试计划:generate_test_plan.py 重构为优先级四层(必测项→探索→全功能→平台)+ AI人力估算 + 双平台/夜测/硬件并行;去除机械臂4款(82→78)
提示词:must_test_conversion / ones_to_automation(含 iOS 快速连接) / test_plan_conversion

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 16:10:57 +08:00
woan fda826446a fix(ones-sync): step 回写按 ONES 形态列全量 step
经实测确认 ONES 写接口形态:case result 可保持 to_do,只在跑过的 step 上
填 execute_result,未跑 step 仅列 uuid,且需列出该用例全部 step。

- OnesStepResult.execute_result 改为可选(未跑 step 只带 uuid)
- buildAnchoredPayloads 支持 fullStepsByNumber:列全量 step,
  全部跑完才聚合 case 结果(passed/failed),否则保持 to_do
- fetchCaseSteps: 取用例全部 step uuid
- sync 脚本对含 step 锚点的用例先拉全量 step 列表再回写

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 15:49:22 +08:00
woan 88435b0ffc feat(ones-sync): step 级结果回写支持
- buildAnchoredPayloads: 按测试名锚点 [ONES:号(#step)] 精确匹配,
  step 级结果填入 step.execute_result,并聚合出 case 级结果(fail>skip>pass)
- postPayloads: 抽出的批量 POST,syncResultsToOnes 复用
- sync-ones-results.ts: 锚点优先 + LCS 兜底,dry-run 打印完整 payload 供核对

注: 控制必测 2 条超级用例(15974/15975)按 step 回写;step 执行结果字段
用 execute_result(待一次受控 live 写入验证字段被接受)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 15:01:10 +08:00
woan cf994c1aad docs/prompts: 必测项 manifest 生成器 + 测试计划按优先级四层重构
- scripts/gen-must-test-manifest.ts + test-plan/must-test.manifest.ts:
  从 ONES 必测项-AI自动化(CQz9YCNX/EPfZfC9Y) 生成映射清单 187 条
  (添加73 + 功能9 + 控制105step双协议),npm run gen:must-test
- docs/generate_test_plan.py + docx: 测试计划由"品类/16周Phase"重构为
  "优先级四层 backlog"(必测项→单品探索→全功能→平台),添加提到最前(串口前置),
  补充人力安排(1人) + 基于AI的逐功能人力预估(总~105-135人日)
- prompts/test_plan_conversion.md: 新增"按测试计划驱动转换"执行总纲
- prompts/ones_to_automation.md: 登记测试计划/必测项子提示词组合

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 14:55:40 +08:00
woan e33b042c69 feat: AI Hub 测试完善 + ONES 同步 + 必测项转换提示词
- tests/aihub/*: 侦测/勿扰/回放/本地存储/日报/AI事件等用例修正与扩展,
  新增投屏(aihub_screen_casting)、AI Hub Show(tests/aihubshow/) 与 setup helper
- utils/ones-sync.ts + scripts/sync-ones-results.ts: 测试结果反写 ONES 测试计划
- drivers/hubshow-driver.ts、firmware/test-reporter helper、device.config 更新
- docs/: UI自动化测试计划 + 生成脚本
- prompts/: 新增 must_test_conversion.md 必测项专项子提示词,
  主提示词 ones_to_automation.md 增加子提示词组合引用

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 11:04:12 +08:00
woan cb274082ee feat: initial commit - AI UI Automation (Midscene + Vitest) 2026-05-27 18:50:22 +08:00