MVP 10 use case — Walk-through test plan

Test plan thực tế chạy trên app build cuối. Mỗi case ghi:

  • Steps (preconditions + actions)
  • Expected outcome
  • Failure mode + acceptable workaround

Pass criteria MVP: 8/10 case work end-to-end với TV thật + Home Assistant.

Preconditions

  • App XTalk cài (iOS hoặc Android)
  • TV Sony BRAVIA 2015 (hoặc Android TV khác) cùng Wi-Fi
  • (Optional) HA instance ở http://<lan-ip>:8123 với Long-Lived token
  • (Optional) Đèn/AC đã add HA, expose qua app pair flow
  • Server local (Cloudflare tunnel) running + OpenRouter API key set

D1 — “Good morning” (sáng dậy)

Test text: “anh chào buổi sáng” hoặc “good morning”

Steps:

  1. Mở app, Chat tab
  2. Gõ “anh chào buổi sáng”

Expected:

  • LLM emit ≥ 2 actions trong cùng response (welcome scene)
  • Một action power_on TV
  • Một action set_brightness đèn (vd 70%)
  • Speech: “Chào buổi sáng anh! Đã bật TV và đèn.”

Failure mode: Nếu manifest không có scene → LLM fallback unknown. Workaround: tạo manual scene HA trước.

D4 — TV sleep timer

Test text: “đặt sleep timer 30 phút”

Expected:

  • LLM hiện tại trả fallback: out_of_scope vì hẹn giờ chưa support
  • Speech: “Chức năng hẹn giờ sẽ có ở bản sau”

Status: ⚠️ Defer P2 (cần background scheduler client). Acceptable beta: ❌ — đánh dấu known issue.

D5 — Welcome home scene

Test text: “anh về rồi”

Steps:

  1. Pair TV + ít nhất 1 đèn HA
  2. Gõ “anh về rồi”

Expected:

  • 3 actions: power_on TV + set_brightness 30% đèn ấm + set_temperature 25°C AC
  • Speech: “Chào mừng anh về!”

Failure mode: thiếu device → adapt với devices có.

D7 — Good night

Test text: “chúc ngủ ngon”

Expected:

  • 2-3 actions: power_off TV + turn_off đèn + AC chế độ ngủ
  • Speech: “Chúc anh ngủ ngon!”

F2 — Đổi kênh TV bằng tên VN

Test text: “bật VTV1” / “chuyển kênh HTV7” / “ON Sports”

Expected:

  • Single action: tune_channel { channel: "VTV1" }
  • Client executor map “VTV1” → kênh số 1 → emit KEYCODE_1
  • TV chuyển kênh 1
  • Speech: “Đã chuyển sang VTV1”

Note: TV phải đang ở chế độ live TV (không phải streaming app).

F3 — Bé ngủ — quiet mode

Test text: “bé đang ngủ” hoặc “im lặng đi”

Expected:

  • LLM emit mute TV + (optional) set_brightness 10% đèn
  • Speech: “Đã chuyển quiet mode, đèn dịu lại”

F5 — Bà nghe cải lương qua YouTube TV

Test text: “bật cải lương cho bà”

Expected:

  • Single action: launch_content { query: "cải lương", app: "youtube" }
  • Client executor → HOME → launch YouTube search URL → DPAD_DOWN → CENTER → auto-play
  • Speech: “Đã mở cải lương trên YouTube”

Status: ✅ Verified working trên Sony BRAVIA.

VN1 — Channel VN bằng tên kênh (wow moment)

Test text: “bật ON Sports đi” / “FPT Play đâu”

Expected:

  • tune_channel { channel: "ON Sports" } hoặc launch_app { app: "fpt_play" }
  • TV chuyển kênh / mở app

Note: ON Sports kênh số 91 trên VTVCab. FPT Play app deeplink fptplay.vn.

W1 — Focus mode (WFH)

Test text: “vào chế độ tập trung” / “focus mode”

Expected:

  • TV mute hoặc power_off (defaults).
  • Đèn ấm 40% (warm white)
  • Không có notification → app set DND mode (defer P2)
  • Speech: “Đã vào focus mode”

S5 — Đèn ấm + nhạc khi có khách

Test text: “có khách đến” / “scene tiếp khách”

Expected:

  • Đèn set warm 60%
  • TV launch Spotify hoặc YouTube nhạc nhẹ
  • Speech: “Đã setup phòng tiếp khách”

Walk-through procedure

  1. Mở app, ghi log toàn bộ test session
  2. Với mỗi case:
    • Capture screenshot trước + sau khi tap Send
    • Ghi response time (chat bubble appear)
    • Ghi action result (✓/✗ cho từng action)
    • Quan sát TV/đèn có thay đổi không
  3. Tally: pass / fail / partial
  4. Pass criteria: 8/10

Known issues acceptable cho beta

  • D4 Sleep timer — defer P2
  • W1 DND mode — defer P2 (cần native API iOS/Android background)
  • D1/D5 multi-action scenes — phụ thuộc manifest có đủ devices
  • ATV power_on không bật được TV nếu TV tắt Quick Start mode

Post-test

Sau mỗi case, paste debug log (long-press chat bubble → “Copy full debug”) vào issue tracker để track LLM accuracy + executor success rate.

Anh chạy walk-through này 1 lần/tuần trong P1 beta, gửi summary qua email xuyenthanhngo@gmail.com.