visionA/local-tool/.autoflow/06-testing/scripts/manual-checklist-windows.md
jim800121chen 8c27da7cca test(local-tool): M9-5 — three-platform validation plan + e2e scripts + MJ3 fix
A 階段最後 milestone、出測試計畫 + 自動化腳本 + 三平台人工 checklist、使用者下週手動跑實機驗證。

Testing artifacts (8 檔、2630 行):
- .autoflow/06-testing/m9-5-validation-plan.md: 656 行(4 情境 × 3 平台 × 2 chip = 24 combo)
- 4 e2e specs (vitest + RTL + mock WS / mock fetch):
  - firmware-upgrade-happy-path.spec.ts (357 / 4 cases)
  - firmware-upgrade-error-recovery.spec.ts (356 / 4 cases + 8 reason it.each)
  - firmware-r-fw-11-modal-not-closable.spec.ts (303 / 6 cases)
  - wails-onbeforeclose-firmware-active.spec.ts (217 / 9 cases、含 5 todo 占位 M9-12)
- 3 manual checklists: macOS 264 / Windows 234 / Linux 243 行

設計取捨:
- 不引入 Playwright/Cypress (visionA-local frontend 沒裝、屬 architect 決策)、走 vitest + mock
- E2E 腳本放 06-testing/scripts/ 作 spec doc + 可選實作參考
- 實機驗證走人工 checklist (dongle 插拔 / kill process / SIGTERM 等需要實體互動)

MJ3 修復 (M9-4 reviewer round 1 留的 follow-up):
- server/internal/api/ws/firmware_ws_test.go: +16/-8
- "type": "firmware:progress" → "firmware_progress" (對齊 firmwareProgressMessage.Type)
- "phase" → "stage" (對齊 TDD §4.2 + FirmwareProgress.Stage)
- 不動 production code、只 test schema 對齊

執行建議 (給你下週):
- Day 1 P0: macOS+Win+Linux × KL520+KL720 happy path (~3h)
- Day 2 P1: R-FW-11 + disconnect_during_op + upgrade_mid_failed + 失敗注入 (4h)
- Day 3 P2: SIGTERM 延遲關閉 + Wails OnBeforeClose force-quit modal (2-3h)

測試:
- go test ./... -race 全綠 (server / wails / frontend 60 tests)
- MJ3 修復不破壞既有測試

A 階段開發 6/7 完成 (M9 文件 + M9-1 ~ M9-4.5)、剩 M9-5 實機驗證 (你下週跑)、跑完依結果決定 A 階段交付或派 sub-agent 修。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 15:34:17 +08:00

235 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# M9-5 Windows 實機驗證 checklist
> 對應 plan`../m9-5-validation-plan.md`
> 平台Windows 10 / 11x86_64
> 預估時間3-4 小時
> 執行人:使用者(下週)
---
## 0. 前置準備15 分鐘)
- [ ] 確認 Windows 版本:`winver`、紀錄__________
- [ ] visionA-local A 階段 build 已安裝(含 M9-1 ~ M9-4
- [ ] 清空舊狀態:刪除 `%APPDATA%\visiona-local\`PowerShell`Remove-Item -Recurse -Force "$env:APPDATA\visiona-local\"`
- [ ] 準備硬體:
- [ ] KL520 KDP1 legacy dongle__________
- [ ] KL520 KDP2 dongle__________
- [ ] KL720 dongle__________
- [ ] **WinUSB driver 已綁定**重要、KneronPLUS Windows 必要):
- [ ] 開「裝置管理員」→「通用序列匯流排控制器」
- [ ] 確認看到 `Kneron USB Device` 或類似條目
- [ ] 若沒有、跑 Zadig 工具綁定 WinUSB driverinstaller 應已處理)
- [ ] Chrome / Edge 任一最新版開啟、F12 DevTools 準備好
- [ ] Console / PowerShell 開好
---
## 1. Functional 升級流程驗證90 分鐘)
### 1.1 情境 AKL520 KDP1 → KDP2 完整 4-stage30 分鐘)
**前置**:插 KL520 KDP1 dongle
- [ ] 啟動 visionA-local雙擊 `visiona-local.exe` 或 Start 選單)
- [ ] **Windows Defender 首次掃描**:可能延遲 30-60 秒KneronPLUS dll 簽章)、若超過 60 秒持續啟動 → P1 bug
- [ ] Wails 視窗開啟、控制台顯示 server URL
- [ ] 點「開啟瀏覽器」、Devices 頁出現
- [ ] **紅色 badge** `KDP1 (legacy)` 顯示
- [ ] 點升級、confirm modal、from/to 正確
- [ ] 點「開始升級」、upgrading phase
- [ ] **progress modal 不顯示 ✕ / 取消**
- [ ] 紅色 banner「請勿拔除裝置」顯示
- [ ] stage 序列preparing → loading → flashing → verifying
- [ ] ESC 不關 modal、點外部不關
- [ ] 升級在 60 秒內完成(**實測時長**______ 秒)
- [ ] modal 顯示綠勾、自動關閉、toast 顯示 6 秒
- [ ] Devices 卡片 badge 變綠 + `v2.2.0`
- [ ] Server log`%APPDATA%\visiona-local\server.log`)沒有 panic
**截圖**
- [ ] `.autoflow/06-testing/screenshots/windows-A-before.png`
- [ ] `.autoflow/06-testing/screenshots/windows-A-upgrading.png`
- [ ] `.autoflow/06-testing/screenshots/windows-A-success.png`
### 1.2 情境 BKL520 KDP2 short-circuit15 分鐘)
- [ ] 黃色 badge / 點升級
- [ ] **3 stage 序列**(沒 loading
- [ ] 60 秒內完成(**實測**______ 秒)
### 1.3 情境 CKL720 升級15 分鐘)
- [ ] 點升級、confirm 顯示「3 分鐘」
- [ ] 3 stageKL720 走 short-circuit
- [ ] 200 秒內完成(**實測**______ 秒)
### 1.4 情境 D來回升級15 分鐘)
- [ ] 重跑情境 A 一次
- [ ] **無 Error 15 SEND_DATA_TOO_LARGE**
- [ ] 兩次都成功
### 1.5 多裝置同時連接15 分鐘)
- [ ] KL520 + KL720 同時插
- [ ] 兩張卡片
- [ ] KL520 升級進行中、試 KL720 升級
- [ ] 被擋409 或 modal 不開)
- [ ] KL520 完成後 KL720 可升級
---
## 2. Reliability 失敗注入45 分鐘)
### 2.1 #1 scan_not_found5 分鐘)
- [ ] 拔 USB、點升級
- [ ] error modal「找不到裝置」
### 2.2 #3 loader_write_failed10 分鐘)
**注入**loading stage 時、Task Manager 強殺 `python.exe`(或 PowerShell 跑 `Stop-Process -Name python -Force`
- [ ] error modal「引導程式載入失敗」
- [ ] 「拔插後重試」按鈕
- [ ] **無 brick warning**recoverable
### 2.3 #4 upgrade_mid_failed10 分鐘)
**注入**flashing stage 時、強殺 python
- [ ] error modal「韌體寫入失敗」
- [ ] errorCode `FW_UPGRADE_*`
- [ ] 「重試」按鈕
### 2.4 #5 disconnect_during_op10 分鐘)
**注入**flashing stage 時、**拔 USB**
- [ ] error modal「裝置已斷開」
- [ ] **brick warning role=note**
- [ ] **無 Retry 按鈕**
- [ ] **Contact Support destructive 按鈕**
- [ ] 點 Contact Support、開 Outlook / 預設 mail handler
### 2.5 #6 timeout10 分鐘)
- [ ] 拔 USB 後等 KL520 > 60s
- [ ] error modal「操作超時」
---
## 3. UX 驗證30 分鐘)
### 3.1 Badge 4 色
| State | 觸發 | 紀錄 |
|-------|------|------|
| current | | [ ] |
| older | | [ ] |
| legacy | KDP1 | [ ] |
| unknown | scan 過渡期 | [ ] |
### 3.2 Modal 警告 banner 全程顯示
- [ ] 4 個 stage 都顯示「請勿拔除裝置」
### 3.3 Toast 停留 6 秒
- [ ] 計時驗證
### 3.4 複製錯誤訊息
- [ ] 點複製、變「已複製 ✓」
- [ ] PowerShell `Get-Clipboard` 確認內容
### 3.5 mailto: 開啟
- [ ] destructive reason 點 Contact Support
- [ ] Outlook / Windows Mail / 預設 mail handler 開啟
---
## 4. Integration 驗證30 分鐘)
### 4.1 SIGTERM 延遲關閉
**Windows SIGTERM 行為不直觀**——`taskkill /F` 等於 SIGKILL、不會走 graceful。
**替代方法**
- 開兩個 visionA-local 實例second 應該失敗、single-instance lock→ 觀察 first instance behavior
- 或:跑升級、然後 Task Manager「End Task」不 force視為 SIGTERM 等效
- [ ] 啟動升級流程
- [ ] flashing stage 時、Task Manager → End Task不 Force
- [ ] visionA-local server 應延遲關閉、log 顯示「delaying shutdown」
- [ ] 升級完成才真正退出
### 4.2 Wails OnBeforeClose 攔截
- [ ] 啟動升級流程
- [ ] flashing stage 時、點 Wails 視窗右上 **✕**
- [ ] **視窗不關**
- [ ] Frontend modal 出現「韌體切換進行中...」
- [ ] modal 顯示 task infodevice name / chip / stage / etaSeconds
- [ ] 「繼續等待」+「強制關閉」按鈕
- [ ] 點強制關閉、第二層 FORCE 確認
- [ ] 輸入「force」小寫 → disabled
- [ ] 輸入「FORCE」 → enabled
- [ ] 點「繼續等待」、modal 關、升級繼續
- [ ] 升級完成、再點 ✕ → 視窗正常關
### 4.3 Alt+F4 攔截
⚠ Windows 特有:使用者可能用 Alt+F4 關視窗
- [ ] 升級進行中、Alt+F4
- [ ] **預期**:同 ✕ 按鈕、攔截 modal 顯示
- [ ] 若 Alt+F4 直接關 → P1 bug
---
## 5. Windows 特有觀察點
### 5.1 USB driver 重新枚舉
升級成功後 device re-enumerate、Windows USB stack 可能不穩:
- [ ] 升級成功後 5-8 秒內、Devices 頁卡片自動更新(依 needsReset + rescan
- [ ] 若超過 30 秒仍未更新 → P1 bug既有 KL520 reset bug 重現)
### 5.2 Defender 即時掃描
- [ ] 啟動時間是否 > 60 秒(首次)/ > 10 秒(後續)
- [ ] 升級期間 Defender 是否擾動 USB I/O罕見但可能
---
## 6. 驗證結果摘要
| 類別 | 結果 | 備註 |
|------|------|------|
| §1 Functional | | |
| §2 Reliability | | |
| §3 UX | | |
| §4 Integration | | |
| §5 Windows 特有 | | |
**升級時長實測**
| Combo | 實測 | 護欄 | Pass / Fail |
|-------|------|------|-----------|
| KL520 KDP1→KDP2 | __秒 | 60s | |
| KL520 short-circuit | __秒 | 60s | |
| KL720 | __秒 | 200s | |
---
## 7. Bug 回報
`../m9-5-validation-plan.md §11` 格式回報到 `.autoflow/06-testing/bugs/M9-5-BUG-{NN}.md`
標題加「[Windows]」前綴方便分流。
**完成簽核**________________ 日期________________