Skip to content

test(e2e): slow lane: a target boots a real simulator and emulator, and off shuts both down - #419

Draft
V3RON wants to merge 14 commits into
mainfrom
task/372
Draft

V3RON wants to merge 14 commits into
mainfrom
task/372

Conversation

@V3RON

@V3RON V3RON commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Closes #372

Status

Implement: done (slow-lane tests only) Review: round 10, 0 open Mutate: n/a (no src change) Hardware: postponed to the next day (run 3 stopped by the maintainer) Gate: pending

Done when

  • On a Mac with an iOS runtime and an Android system image: scripts/slow-e2e.sh runs e2e/slow-warm-pool.test.ts green, and its log names the two device.ready events before the first lease.
  • On a machine without one of the platforms, the test skips with a reason naming the missing platform.

Assumptions

  • Assumption: where the spec names the docs/internal/ARCHITECTURE.md test-lanes paragraph — that file has no test-lanes paragraph; the lane docs live in e2e/README.md, so its known-gaps line about real emulators now names the new file there.
  • Assumption: the new file joins scripts/slow-e2e.sh by being passed as its argument (the script runs whatever files it is given; it lists none).
  • Assumption: the spec's order (wait for both ready, then restart with the pool off) — the off test now starts with the pool off, because a shut-down extra device of the kind made the next boot ambiguous on hardware; the ready path is proven by the other two tests, and this is the conservative way to make "each boots on the next lease" assertable by device id.

Written by an agent.

V3RON added 11 commits October 6, 2026 20:26
…ice, true comments (#372)

Review round 2 fixes: holdsState fails on any poll that leaves the state; test 1 holds one ready device per platform for a window; test 3 asserts the second lease gets the first round's device and that its lease.granted event exists; the HOLD comment names one pool tick. 4 findings -> 0
Comment-only; no test count changes (0 failing -> 0 failing)
…its kind (#372)

The planner boots the first shutdown device that serves the request, not the one just released.
1 failing -> 1 failing (slow lane, not run here)
… device is the only one the next lease can boot (#372)

The second lease asserts the released device's id. 1 failing -> 1 failing (slow lane, not run here)
…gy (#372)

Round 6 finding: the lane's snapshot-restore claim could stay green on a wipe fallback.
Test 2 now asserts device.reclaimed strategy is snapshot; two comments reworded.
…get and names itself (#372)

The 30 min timeout named no step: the log showed no progress and unbounded
calls (list, simctl, adb) could not fail alone. Each step is bounded, logged,
and a failure dumps the daemon log tail and the device rows.
…lines reach the log (#372)

Fix round 8: every question put to the machine or daemon has a timeout, the
test timeouts exceed budgets plus unbudgeted work, test 3's daemon start is a
named step inside the try, and the slow lane runs the default reporter so a
passing test's console lines reach the log. 4 findings -> 0 open
#372)

Keeps the test body under the Fallow complexity threshold. 1 failing -> 0 failing
@V3RON

V3RON commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Hardware postponed

The review passed at 8d62bbc, with no blocking findings after round 10. The slow-lane check still has to run.

  • Run 1 (f6e06de): tests 1 and 2 passed. Test 3 failed because it expected the second lease to get the device it had released. The planner boots the first shut-down device that fits, so test 3 was reworked: it now starts with the pool off, so the released device is the only one of its kind.
  • Run 2 (f1088de): tests 1 and 2 passed. Test 3 hit its 30-minute timeout, and the run did not show which step hung. Test 3 now logs every step and gives each one its own time limit. The lane also uses --reporter=default, so the device.ready lines reach the log.
  • Run 3 (8d62bbc): stopped by the maintainer about 20 minutes in, and moved to the next day. It had logged both device.ready events before any lease.

Next: run e2e/slow-warm-pool.test.ts through the slow lane on 8d62bbc. If test 3 fails, the log names the step that hung. This machine has both platforms, so the skip-when-missing case can't be shown here.

An emulator (qemu, pid 53897) was still running after the stop. It may come from run 3, but that is not proven, so it was left alone.

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.

Slow lane: a target boots a real simulator and emulator, and off shuts both down

1 participant