Skip to content

test(e2e): Port envelope-capture e2e harness to the Expo Router sample #6531

Description

@antonis

Context

The navigation / TTID-TTFD bug cluster (#6431, #6432, #6433, #6434, #6436) was all reported on the same stack: Expo Router + New Architecture + Hermes. Each defect now has unit-level regression coverage, and PR #6530 adds an end-to-end trace/parent-span assertion — but that e2e runs against samples/react-native, which uses React Navigation bottom tabs, not Expo Router.

The Expo sample (samples/expo) already uses expo-router with file-based routing, so the app that reproduces the cluster's stack exists. What's missing is the e2e envelope-capture harnessmockedSentryServer, Maestro flows, jest configs, and a Sauce Labs CI job — which is currently wired only into samples/react-native.

Proposal

Port the existing e2e harness to samples/expo, mirroring captureSpaceflightNewsScreenTransaction:

  • mockedSentryServer envelope capture + jest configs (iOS/Android, auto- and manual-init)
  • Maestro navigation flows: cold start where Sentry.init() precedes React render, push, POP/POP_TO, background → foreground → cached screen, route override provider
  • assert the same properties the React Navigation e2e checks: TTID/TTFD measurements present, and display spans share the navigation transaction's trace_id / parent_span_id
  • add the Expo e2e job to e2e-v2.yml

Why this is deferred (not started now)

Trigger to prioritize

Pick this up when either:

  • another Expo Router navigation / TTID-TTFD bug is reported, or
  • we decide to promote Expo Router + New Architecture to a formally guaranteed support tier.

Notes

Effort is harness wiring, not app building — the Expo Router sample app already exists. Related: #6530 (React Navigation e2e assertion).

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions