test(ios): simulator lifecycle e2e flows against master's service - #29679
Merged
chrisnojima merged 10 commits intoSep 23, 2026
Merged
Conversation
Tolerate legitimate BACKGROUNDACTIVE churn from location fixes and background-sync/refresh tasks instead of asserting an empty or exact app-state sequence, and make the push tests' 'no tap happened' checks non-vacuous by requiring a positive marker in the same log window first.
Backgrounding while sharing goes to BACKGROUNDACTIVE, not BACKGROUND. A background relaunch has no JS, so no fix reaches Go there: assert that rather than a post. Read KbLocationWatcher's NSLog lines, which carry no subsystem.
chrisnojima
added this pull request to stack #29680
September 23, 2026 19:54
This was referenced Sep 23, 2026
chrisnojima
removed this pull request from stack #29680
September 23, 2026 19:56
chrisnojima
added this pull request to stack #29681
September 23, 2026 19:56
Inside KbModule the bare companion field name appLifecycleState resolved to the spec's Java getter, so getAppLifecycleState recursed and threw StackOverflowError on the JS thread at startup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack 7/7 on #29650.
Why
The rest of this stack changes behaviour only a device shows: app-state transitions, the local http server, links and push taps, and live location. These flows drive a simulator against master's service and assert on the Metro, simulator and Go logs, not on the UI.
What this changes
yarn test:e2e:ios:lifecycle.yarn tsctype-checks the e2e suite as a third project, so a flow that stops compiling is caught.MobileAppState.Update: useful update: <STATE>,(the trailing comma keeps BACKGROUND from matching BACKGROUNDACTIVE)startHTTPSrv: start success: addr:andkbhttp.Srv: server starting on:LiveLocationTrackerlinesJudgment calls
Where these flows differ from the ones written for the native-Go approach:
[AppState] native:line, because the listener mounts after the bundle loads and can miss that transition.BackgroundSync. It requires BACKGROUND, then a final FOREGROUND after the last BACKGROUND, and JS seeingbackgroundthen endingactive.app focus changed: active. A silent Metro stream can no longer pass them.KbLocationWatcher: starting/stopping location updatesfrom NSLogTests