| 1 | --- |
| 2 | name: test-t3-mobile |
| 3 | description: Test T3 Code's native iOS and Android app through its Device panel and returned AgentDevice command. Use for mobile verification, native-client builds, Metro launch, and mobile pairing against isolated development state. |
| 4 | --- |
| 5 | |
| 6 | # Test T3 Mobile |
| 7 | |
| 8 | ## Open the device |
| 9 | |
| 10 | Call `device_list`, then `device_open` with the selected host and device IDs. |
| 11 | T3 boots the device and shows its live stream in the Device panel. Follow its |
| 12 | returned `quickStart`, using the exact `agentDevice.command` and all `targetArgs` |
| 13 | on every operation. Use `device_screenshot` to inspect the screen. |
| 14 | |
| 15 | If T3 device tools or the selected device are unavailable, report the blocker |
| 16 | and stop verification. Do not install or switch to another automation system. |
| 17 | |
| 18 | ## Use an isolated backend |
| 19 | |
| 20 | Reuse this task's healthy backend. Otherwise run `vp run dev` from the |
| 21 | repository root, retain its terminal session, and read the actual backend port |
| 22 | from the dev-runner output. Use the worktree's ignored `.t3` state. Never run |
| 23 | against `~/.t3/userdata`. The Browser panel is not required for this workflow. |
| 24 | |
| 25 | Test with meaningful project and thread data. Read the shared |
| 26 | [SQLite fixture reference](../test-t3-app/references/sqlite-fixtures.md) only |
| 27 | when inspecting or seeding SQLite. Stop the test server before fixture writes. |
| 28 | |
| 29 | ## Launch The Knife Dev |
| 30 | |
| 31 | From the checkout being tested on the selected device host, run: |
| 32 | |
| 33 | ```bash |
| 34 | node scripts/mobile-native-client.ts ensure <ios|android> <device-id> |
| 35 | ``` |
| 36 | |
| 37 | This reuses a matching native client or builds and installs one. Authorized |
| 38 | mobile verification includes that build step unless the user prohibits it. |
| 39 | |
| 40 | Start `vp run dev:client` from `apps/mobile`, or reuse a healthy Metro belonging |
| 41 | to this checkout. Open its printed development-client URL with AgentDevice |
| 42 | `open com.t3tools.t3code.dev <url>` and all returned target arguments. |
| 43 | The device must be able to reach both Metro and the isolated backend. |
| 44 | Append `&disableAutoLaunch=1&disableFab=1` to the development-client URL query |
| 45 | when developer chrome would obscure screenshots or taps; the SDK 58 dev client |
| 46 | applies these preferences before the app loads. |
| 47 | |
| 48 | ## Pair and verify |
| 49 | |
| 50 | Use the helper from the repository root, with the returned executable and target |
| 51 | arguments stored in `agent_device_command` and the Bash array |
| 52 | `agent_device_target_args`: |
| 53 | |
| 54 | ```bash |
| 55 | .agents/skills/test-t3-mobile/scripts/pair-client.sh \ |
| 56 | <server-port> <base-dir> <device-reachable-backend-origin> \ |
| 57 | "$agent_device_command" "${agent_device_target_args[@]}" |
| 58 | ``` |
| 59 | |
| 60 | It issues a fresh credential and opens The Knife Dev's existing pairing route |
| 61 | through AgentDevice. For a backend on the device host, use |
| 62 | `http://127.0.0.1:<server-port>` on iOS or `http://10.0.2.2:<server-port>` |
| 63 | on Android. For a remote backend, use its reachable origin. |
| 64 | |
| 65 | Confirm the intended projects appear, exercise the affected flow, and capture |
| 66 | evidence. Retain the app and environment while iterating. At teardown, remove |
| 67 | the disposable connection, close the AgentDevice session, call `device_close`, |
| 68 | and stop only your backend and Metro processes. |