Repository navigation
Description
Port these E2E test applications to span streaming (17 apps).
Apps
- react-create-browser-router
- react-create-hash-router
- react-create-memory-router
- react-router-5
- react-router-6
- react-router-6-descendant-routes
- react-router-6-use-routes
- react-router-7-cross-usage
- react-router-7-framework
- react-router-7-framework-instrumentation
- react-router-7-framework-spa
- react-router-7-lazy-routes
- react-router-7-spa
- react-router-8-cloudflare
- react-router-8-cross-usage
- react-router-8-framework
- react-router-8-spa
What to do
For each app:
- Remove the
traceLifecycle: 'static'pin added in test(e2e): Disable span streaming in e2e test applications #22590 from everySentry.init(client, server, edge). - Rewrite the specs from transaction envelopes to span v2:
waitForTransactionbecomeswaitForStreamedSpan/waitForStreamedSpansevent.transactionbecomesspan.namecontexts.trace.opbecomesgetSpanOp(span)plusspan.is_segmentcontexts.trace.data['x']becomesspan.attributes['x'], which has the shape{ value, type }transaction_info.sourcebecomes thesentry.segment.name.sourceattribute
- Streamed child spans arrive across several envelopes, so use
collectStreamedSpanswherever a test asserts on children of a segment span.
Watch for span names that become low cardinality under streaming (Pageload, Navigation, Router, HTTP, and so on). Those assertions have to change, not just the helper.
Reference apps: react-router-7-spa-streaming and nextjs-16-streaming. Worked example: #23797.
Keep static trace lifecycle coverage
Before porting this group, duplicate react-router-7-framework as-is into react-router-7-framework-static and leave that copy on the current transaction-based specs. That keeps the static trace lifecycle covered once the rest of the group moves to streaming.
The copy is verbatim; only the app name changes:
package.json->namestart-event-proxy.mjs->proxyServerName- every
waitForTransaction/waitForError/waitForSessioncall intests/
Keep traceLifecycle: 'static' in the copy's Sentry.init calls. The e2e matrix discovers apps by directory, so no CI config change is needed.
The representative is a suggestion: swap it if another app in the list exercises more of this SDK's instrumentation.
Activity
linear-code commentedon Sep 1, 2026
JS-3482
test(e2e): Add a static trace lifecycle React Router E2E app (#23840)
test(e2e): Port React Router SPA E2E apps to span streaming (#23843)
test(e2e): Port React Router v5 and v6 E2E apps to span streaming (#2…
test(e2e): Port React Router data router E2E apps to span streaming (#…
test(e2e): Port the React Router instrumentation API E2E app to span …
test(e2e): Port the React Router instrumentation API E2E app to span …
test(e2e): Port React Router framework E2E apps to span streaming (#2…
test(e2e): Port the React Router lazy routes E2E app to span streaming (
github-actions commentedon Sep 23, 2026
A PR closing this issue has just been released 🚀
This issue was referenced by PR #23846, which was included in the 11.0.0 release.