Skip to content

test(e2e): Port nextjs-15 to span streaming - #23923

Draft
chargome wants to merge 1 commit into
test/e2e-port-nextjs-14from
test/e2e-port-nextjs-15
Draft

test(e2e): Port nextjs-15 to span streaming#23923
chargome wants to merge 1 commit into
test/e2e-port-nextjs-14from
test/e2e-port-nextjs-15

Conversation

@chargome

@chargome chargome commented Sep 2, 2026

Copy link
Copy Markdown
Member

Ports nextjs-15 to span streaming: removes the traceLifecycle: 'static' pins and rewrites the specs onto streamed spans, using collectStreamedSpans where a test asserts on children of a segment span.

The RSC error specs match the server span on the error event's own trace, so batching cannot pair spans across specs. Request headers carry over as http.request.header.* attributes and the release as sentry.release. The contexts.runtime.name matcher was dropped, having no span v2 equivalent.

Ref https://linear.app/getsentry/issue/JS-3486/port-the-main-nextjs-e2e-test-suites-to-span-streaming
Ref #23802

@chargome chargome self-assigned this Sep 2, 2026
@linear-code

linear-code Bot commented Sep 2, 2026

Copy link
Copy Markdown

JS-3486

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

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% +22 B 🔺
@sentry/node - without channel injection 103.42 kB +0.02% +20 B 🔺
@sentry/aws-serverless 96.66 kB +0.03% +24 B 🔺
@sentry/cloudflare (withSentry) - minified 201.33 kB - -
@sentry/cloudflare (withSentry) 501.09 kB - -

View base workflow run

Removes the `traceLifecycle: 'static'` pins and rewrites the specs onto streamed spans. Tests asserting on children of a segment span use `collectStreamedSpans` and accumulate until the segment, which ends last.

The RSC error specs correlate an error event with its server span. Those match the span on the error's own trace, so a span from an earlier spec cannot satisfy the correlation once streamed spans are flushed in batches.

Request headers carry over as `http.request.header.*` span attributes, and the release as `sentry.release`, so the header-extraction and release-injection specs keep their coverage.

The middleware specs asserted `request.url` / `request.method`; those become the `http.target` and `http.request.method` attributes. The `contexts.runtime.name === 'vercel-edge'` matcher was dropped, having no span v2 equivalent and only ever disambiguating a uniquely named span.

Ref #23802
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chargome
chargome force-pushed the test/e2e-port-nextjs-15 branch from 037e410 to dd5edcd Compare September 2, 2026 10:58
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.

1 participant