Skip to content

Native app: tapping Log in on the feed does not reach the sign-in page #1007

Description

@glennmichael123

Mobile E2E has been red since Chris's 25 Sep rebuild. 01-navigation fails on both platforms at the step that proves a signed-out visitor can get in — the thing a39fa9a6 ("give signed-out users a way to sign in, and test that") was written to guarantee.

[Failed] Native shell navigation (Assertion is false: "Welcome [Bb]ack" is visible)

It is not a slow runner, and not the flow's copy

From the failing run's own step timings (36420991541):

step result
launchApp 24.3 s
feed visible 9.1 s
assertNotVisible Menu / Record 1.4 s each
tapOn "^Log in$" COMPLETED, 2.9 s
wait for "Welcome [Bb]ack" FAILED after 31.7 s

The tap succeeded. The screenshot captured 30 seconds later shows the feed unchanged, with Log in still in the header. The device log shows no crash — the app and the WebView are alive throughout. The view hierarchy at that moment has exactly one element named Log in, the header link at [333,77][374,98], so there is no ambiguity about what was tapped.

What it is not

  • Not the assertion. Welcome [Bb]ack still exists in both login.stx and AuthGate.stx; tests/unit/mobile-e2e-copy.test.ts passes.
  • Not the browser. At 375×812 in a desktop browser against the QA stack, clicking that same header link navigates to /login and the title becomes Log In — Wildloop. No console errors.
  • Not the backend commits. It passed on ac173724. Everything of mine since (012a5f10, 872dcbd8) is the elevation backfill, the scheduler and cloud config — nothing that reaches the frontend bundle.

Between the last green run and now, the frontend changed only in ede87f99, ee9bd40a, 95325716 and 11711421 — feed.stx alone is +546/-165, and the feed is the page the tap happens on.

Lead, unconfirmed

scripts/run-mobile-e2e.ts → validateNativeTabLinks() already asserts that the header's /feed, /notifications and /settings links must do document navigation, because "an SPA fragment swap may leave that page's client module unexecuted". The header's /login link is the one link in that header the validator does not check. mobile-header.stx:40 carries no router opt-out.

I could not confirm this from outside the shell: stx's shouldIntercept() intercepts an internal route only when getContainer() finds a router container, and whether the bundled WebView has one needs a device to answer. So this is a lead, not a diagnosis — worth starting from, not worth shipping on.

Next step

Reproduce with bun run preview:ios and watch what the tap does in the shell. If it is the router, the fix is an opt-out on that link plus /login added to validateNativeTabLinks() so the gap cannot reopen.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions