This repository has been archived on 2026-10-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
hope-voice-ios/docs/DEVICE_TESTING.md
T

62 lines
3.0 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.
# Device testing checklist
Simulator verification covered connect/disconnect, transcripts (text mode), media
reconciliation/UI, tasks panel, and the hardening pass. The items below need a **real
iPhone on the LAN** (`https://192.168.86.2:9178`) because mic input, WebRTC capture,
and audio session behavior don't work in this simulator environment (CoreAudio `-4010`,
0 input channels).
Setup: build with Xcode for a physical device (or `xcodebuild ... -destination`), install,
ensure the server cert pin is current (see README — re-export after any server restart).
## 1. Mic input with real speech
- [ ] Start → agent joins → mic enables **without** `-4010`.
- [ ] Speak: orb/status transitions to **listening**; mic meter moves with voice level.
- [ ] Stop speaking, wait >2 s while agent is silent → **thinking** chip appears.
- [ ] Agent replies: state goes to **speaking** (remote audio drives it), TTS audible.
- [ ] User transcript finals arrive in the list with correct role/timestamps.
## 2. Barge-in
- [ ] While the agent is speaking, start talking → conversation continues without a
"barge-in" glitch; state returns to listening/thinking as expected.
- [ ] Text mode: barge-in hint line visible while in text mode.
## 3. Wake lock (screen off)
- [ ] During an active conversation, observe that auto-lock is suppressed
(`isIdleTimerDisabled` prevents the device from locking due to inactivity).
- [ ] Note: `isIdleTimerDisabled` does **not** prevent a user from pressing the
side button to lock the device. It only disables the automatic idle timeout.
- [ ] After hang-up, auto-lock returns (idle timer re-enabled).
## 4. Audible media playback
- [ ] The deployed server now serves cached AAC for library tracks requested with
`?format=m4a`; verify actual speaker/headphone output on hardware.
- [ ] Play a library track: audio is audible, now-playing card shows art/title/status.
- [ ] Pause / ±10 s / stop / seek all work; agent mics off while playing
(`media_state` published), mics back on when stopped.
- [ ] End conversation while music was playing before → playback resumes.
## 5. Audio interruption (phone call / Siri)
- [ ] Mid-conversation, trigger an interruption (incoming call or "Hey Siri").
- [ ] Mic is muted on interruption begin; conversation/media pause cleanly.
- [ ] On end (with `shouldResume`), mic and media resume automatically.
- [ ] Media panel: AVPlayer pauses on interruption and resumes after.
## 6. Mic permission denied fallback
- [ ] Deny microphone permission in iOS Settings for the app, relaunch.
- [ ] Start → session reaches **ready** despite mic failure (non-fatal); orange error
banner shows the mic error; text mode remains fully usable.
## 7. General device sanity
- [ ] Connect / hang-up / reconnect matrix (3×) — no crashes, state resets cleanly.
- [ ] Change server URL in Settings while idle → session recreates without crash.
- [ ] Reconnect banner appears on network loss mid-call; recovers on return.
- [ ] Voice/model picker changes take effect live on the agent and survive relaunch.