Skip to content

test(ios): stream a leased physical iPhone's screen - #645

Draft
V3RON wants to merge 1 commit into
feature/617-adrfrom
task/619
Draft

V3RON wants to merge 1 commit into
feature/617-adrfrom
task/619

Conversation

@V3RON

@V3RON V3RON commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

Closes #619

Status

Red stage: the spec's tests are written and fail on named assertions. No implementation beyond two optional option fields (deviceCommand) so the tests compile.

Done when

  • The tests above pass.
  • pnpm build on this Mac (Xcode 27) puts both programs in dist/bin/.
  • Slow lane: e2e/slow-ios-stream.test.ts passes; the stream cases in e2e/slow-ios-physical.test.ts pass on a real iPhone that meets the Physical iOS row's checks, the two new ones included; the lock case in e2e/slow-ios-physical-manual.test.ts passes with a person at the iPhone.
  • GET /v1/stream/leases/{leaseId} for a physical iPhone no longer answers 415.

Assumptions

  • Assumption: how the physical-lane stream claims are grouped into tests — one test for the version table, one for "642.x goes on, an unknown UDID exits 1 within 26 s", one long test for stream + still screen + second viewer + no-capture-left-and-restream, and the lock case in the manual lane. Grouping the lease-backed claims keeps one lease and one rig for the whole lifecycle, as the existing stream lanes do; a separate test per claim would lease the same iPhone four times, which is slower and harder to pin.
  • Assumption: "the suite fails, not skips, when dist/bin/simlock-device-capture is missing" — it is its own test ("the device capture program is built") rather than a guard inside describe.skipIf. Every other test in the file then fails on its own missing-program error too; an assertion in a test is the shape the suite already has for a broken build, and it keeps describe.skipIf about the machine's fitness, not the checkout's.
  • Assumption: how the build test makes one Swift product fail — a SIMLOCK_FAKE_SWIFT_FAIL name list read by the test's own fake swift. The fake is the test's own helper, so a variable of its own invents no surface; it is the smallest way to have one product build while the other does not.
  • Assumption: the stream-envelope reader both iOS stream lanes need — moved to e2e/helpers/screen-frames.ts and re-exported from the helpers barrel, with slow-ios-stream.test.ts reading it from there. Sharing one copy keeps the two lanes' claim about "meta, an avcC description and a key frame" one claim (testing rule 7); the code itself is unchanged.

This PR is stacked on #622 (feature/617-adr): the ADR and its PoC, which this spec cites as poc/, are on that branch.

Written by an agent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant