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

58 lines
2.9 KiB
Markdown
Raw Permalink 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), 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: recheck device availability and signing, then build/install with Xcode or
the installed XcodeBuildMCP skill workflow. The phone was paired and the Nearlight
build launched successfully on September 12; that does not prove today's availability
or a still-valid provisioning profile. Verify the server certificate pin after an
actual certificate rotation, not automatically after every container restart.
For each check, record date, source revision, device/iOS version, backend/model,
observed result and supporting logs. Leave unchecked items unqualified; installing
the app or passing a simulator state test is not equivalent to hearing a reply.
## 1. Mic input with real speech
- [ ] Start → agent joins → mic enables **without** `-4010`.
- [ ] Speak: Lightwell/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.
- [ ] Switching to Type leaves microphone capture off and text messaging usable.
## 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. Audio interruption (phone call / Siri)
- [ ] Mid-conversation, trigger an interruption (incoming call or "Hey Siri").
- [ ] On end (with `shouldResume`), mic and conversation resume automatically.
## 5. Mic permission denied fallback
- [ ] Deny microphone permission in iOS Settings for the app, relaunch.
- [ ] Start → session reaches **ready** despite mic failure (non-fatal); a visible
error explains the problem and offers iPhone Settings recovery; Type remains usable.
## 6. 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.