Skip to content

test(e2e): Port the React Router lazy routes E2E app to span streaming - #23846

Merged
andreiborza merged 5 commits into
developfrom
ab/js-3482/lazy-routes
Sep 2, 2026
Merged

test(e2e): Port the React Router lazy routes E2E app to span streaming#23846
andreiborza merged 5 commits into
developfrom
ab/js-3482/lazy-routes

Conversation

@andreiborza

@andreiborza andreiborza commented Sep 1, 2026

Copy link
Copy Markdown
Member

What

Ports react-router-7-lazy-routes to span streaming, the last app in the group.

Why

Span streaming is the default now, so the E2E suite has to exercise it. The span-leaking and GQL attribution specs group streamed spans by trace instead of reading a transaction's spans array, and they match fetch spans on url.full, since a streamed http.client span carries only the domain in its name.

Closes: #23798

@linear-code

linear-code Bot commented Sep 1, 2026

Copy link
Copy Markdown

JS-3482

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 28.57 kB - -
@sentry/browser - with treeshaking flags 26.94 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 26.83 kB - -
@sentry/browser (incl. Tracing) 48.87 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 48.88 kB - -
@sentry/browser (incl. Tracing, Profiling) 51.8 kB - -
@sentry/browser (incl. Tracing, Replay) 88.36 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 77.76 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 93.05 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 106.02 kB - -
@sentry/browser (incl. Feedback) 46.06 kB - -
@sentry/browser (incl. sendFeedback) 33.64 kB - -
@sentry/browser (incl. FeedbackAsync) 38.74 kB - -
@sentry/browser (incl. Metrics) 29.52 kB - -
@sentry/browser (incl. Logs) 29.81 kB - -
@sentry/browser (incl. Metrics & Logs) 30.45 kB - -
@sentry/react 30.32 kB - -
@sentry/react (incl. Tracing) 51.08 kB - -
@sentry/vue 35.74 kB - -
@sentry/vue (incl. Tracing) 51.14 kB - -
@sentry/svelte 28.6 kB - -
CDN Bundle 30.36 kB - -
CDN Bundle (incl. Tracing) 49.52 kB - -
CDN Bundle (incl. Logs, Metrics) 32.59 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 51.43 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 73.19 kB - -
CDN Bundle (incl. Tracing, Replay) 87 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 88.88 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 92.93 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 94.83 kB - -
CDN Bundle - uncompressed 89.97 kB - -
CDN Bundle (incl. Tracing) - uncompressed 147.57 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 96.27 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 153.26 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 225.43 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 267.07 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 272.74 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 280.77 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 286.43 kB - -
@sentry/nextjs (client) 53.7 kB - -
@sentry/sveltekit (client) 49.3 kB - -
@sentry/core/server 40.74 kB - -
@sentry/core/browser 13.42 kB - -
@sentry/node 124.12 kB +0.02% +21 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 81.51 kB - -
@sentry/node - without tracing 88.3 kB +0.03% +21 B 🔺
@sentry/node - without channel injection 103.42 kB +0.02% +20 B 🔺
@sentry/aws-serverless 96.66 kB +0.03% +23 B 🔺
@sentry/cloudflare (withSentry) - minified 200.81 kB - -
@sentry/cloudflare (withSentry) 499.76 kB - -

View base workflow run

@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from 2cc3dfd to 9083cbf Compare September 1, 2026 14:21
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 2f982ae to a9e6808 Compare September 1, 2026 14:56
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from 9083cbf to ea78db3 Compare September 1, 2026 14:56
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from a9e6808 to 8126529 Compare September 1, 2026 15:43
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from ea78db3 to 797611d Compare September 1, 2026 15:43
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 8126529 to cf5c7f9 Compare September 1, 2026 15:55
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from 797611d to 2460015 Compare September 1, 2026 15:55
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from cf5c7f9 to 9e03698 Compare September 1, 2026 16:05
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch 2 times, most recently from e5246b4 to aa2cbfc Compare September 1, 2026 16:37
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 9e03698 to edd1076 Compare September 1, 2026 16:37
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from aa2cbfc to cd0da76 Compare September 1, 2026 16:51
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from edd1076 to 7d44686 Compare September 1, 2026 16:51
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from cd0da76 to c243026 Compare September 2, 2026 08:23
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 7d44686 to d638522 Compare September 2, 2026 08:23
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from d638522 to 979eaa0 Compare September 2, 2026 08:46
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch 2 times, most recently from a20f314 to b76c163 Compare September 2, 2026 09:05
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 979eaa0 to 01f6e5d Compare September 2, 2026 09:05

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b76c163. Configure here.

@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 01f6e5d to 9d1bbda Compare September 2, 2026 09:30
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from b76c163 to cbeb816 Compare September 2, 2026 09:30
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 9d1bbda to 1db63f1 Compare September 2, 2026 10:01
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from cbeb816 to 8d5a351 Compare September 2, 2026 10:01
@andreiborza
andreiborza force-pushed the ab/js-3482/instrumentation-api branch from 1db63f1 to 107a1e4 Compare September 2, 2026 10:07
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from 8d5a351 to ba9bc18 Compare September 2, 2026 10:07
@andreiborza
andreiborza marked this pull request as ready for review September 2, 2026 11:44
Base automatically changed from ab/js-3482/instrumentation-api to ab/js-3482/framework-apps September 2, 2026 12:25
andreiborza and others added 2 commits September 2, 2026 14:27
Removes the `traceLifecycle: 'static'` pin from `react-router-7-framework`,
`react-router-8-framework` and `react-router-7-framework-spa`, and rewrites
their specs against streamed span v2.

Envelope-level metadata has no span equivalent, so the SDK assertions read the
`sentry.sdk.*` and `sentry.environment` attributes instead, and the `runtime`
tag assertions are dropped.

The trace connection spec is keyed off the `sentry-trace` meta tag. Spans are
buffered before they flush, so an earlier page load on `/` can still be arriving
here, and matching the two halves independently paired spans from different
loads. The document advertises its own trace, and the client span is selected by
the parent it continues, so a pageload that failed to continue the trace still
fails the test rather than passing vacuously.
…streaming (#23845)

## What

Ports `react-router-7-framework-instrumentation` to span streaming.

## Why

Span streaming is the default now, so the E2E suite has to exercise it.
Loader, action, middleware and fetcher assertions walk the streamed
trace instead of a transaction's `spans` array, and the orchestrion
mysql spec matches on `db.query.text`, since a streamed mysql span is
named after its query summary.

Part of #23798
@andreiborza
andreiborza force-pushed the ab/js-3482/framework-apps branch from 0424336 to be21d07 Compare September 2, 2026 12:27
Removes the `traceLifecycle: 'static'` pin from `react-router-7-lazy-routes`
and rewrites its specs against streamed span v2.

The span-leaking and GQL attribution specs group streamed spans by trace instead
of reading a transaction's `spans` array, and they match fetch spans on
`url.full`, since a streamed `http.client` span carries only the domain in its
name.
collectStreamedSpans scopes its result to one trace now, so the GQL and
slow-fetch lookups no longer need to filter children by the segment's trace id,
and three segment lookups that only existed to supply it are gone. The
corruption test keeps the trace-scoped helper, since it collects across traces on
purpose.
@andreiborza
andreiborza force-pushed the ab/js-3482/lazy-routes branch from de1f81c to b811d6b Compare September 2, 2026 12:27
Base automatically changed from ab/js-3482/framework-apps to develop September 2, 2026 12:45
@andreiborza
andreiborza merged commit 345f7cd into develop Sep 2, 2026
43 checks passed
@andreiborza
andreiborza deleted the ab/js-3482/lazy-routes branch September 2, 2026 12:59
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.

Port React Router E2E test apps to span streaming

2 participants