Skip to content

test(ios): simulator lifecycle e2e flows - #29657

Draft
chrisnojima wants to merge 1 commit into
nojima/HOTPOT-as-08-pushtapfrom
nojima/HOTPOT-as-09-e2e
Draft

chrisnojima wants to merge 1 commit into
nojima/HOTPOT-as-08-pushtapfrom
nojima/HOTPOT-as-09-e2e

Conversation

@chrisnojima

@chrisnojima chrisnojima commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Stack 9/9, splitting #29637. Parent: #29656.

Why

Everything below this PR changes behaviour that only appears on a real device: app-state transitions, whether the local http server is up, whether a deep link or a push tap reaches the right screen, and whether live location keeps reporting in the background. Unit tests cannot observe any of it. These flows drive a simulator and assert on what the app actually did.

What this adds

Three Appium flows — app state and the local http server, deep links and push taps, and native live location — over a shared harness. The harness asserts on the Metro and simulator logs rather than on the UI, so a flow fails on observed behaviour rather than on a rendering detail. The app-state flow matches Srv: start: addr: and kbhttp.Srv: server starting on: , confirmed to be what the reconciling server from #29652 actually logs.

Run with yarn test:e2e:ios:lifecycle.

Two pieces of wiring worth calling out

  • yarn tsc now type-checks the e2e suite as a third project. Previously an e2e file could stop compiling and nothing would notice until someone ran the flows — the failure mode where a test silently stops being a test.
  • eslint stops walking android/app/build, a gitignored gradle output that any local Android test run leaves behind. On master this makes yarn lint:all fail with 8 errors in a generated file; every PR in this stack had to work around it. This removes the workaround.

Verification

yarn lint:all is clean end to end, including the new tsc project. Unit suite green at 241 suites / 2368 tests.

The flows themselves were not executed here — they need a booted simulator and a running service.

@chrisnojima
chrisnojima added this pull request to stack #29658 September 21, 2026 18:56
@chrisnojima chrisnojima changed the title test(ios): simulator lifecycle e2e flows for app state, links, push and location test(ios): simulator lifecycle e2e flows Sep 21, 2026
…nd location

Three Appium flows drive a real simulator through the lifecycle work in this
stack: app-state transitions and the local http server, deep links and push
taps, and native live location.

The shared harness reads the Metro and simulator logs rather than driving the
UI to assert, so a flow fails on what the app actually did. The app-state flow
matches "Srv: start: addr: " and "kbhttp.Srv: server starting on: ", which are
the lines the reconciling server logs.

tsc now type-checks the suite as a third project, so an e2e file that stops
compiling fails lint:all instead of only failing when someone runs the flows.
eslint stops walking android/app/build, a gitignored gradle output that a local
test run leaves behind.
@chrisnojima
chrisnojima force-pushed the nojima/HOTPOT-as-09-e2e branch from 1ec29d2 to 4e70bd5 Compare September 22, 2026 23:08
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