Skip to content

test(e2e): Port nextjs-pages-dir to span streaming - #23914

Draft
chargome wants to merge 1 commit into
test/e2e-port-nextjs-app-dirfrom
test/e2e-port-nextjs-pages-dir
Draft

test(e2e): Port nextjs-pages-dir to span streaming#23914
chargome wants to merge 1 commit into
test/e2e-port-nextjs-app-dirfrom
test/e2e-port-nextjs-pages-dir

Conversation

@chargome

@chargome chargome commented Sep 2, 2026

Copy link
Copy Markdown
Member

Ports nextjs-pages-dir 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.

Request headers carry over as http.request.header.* span attributes, and http.client span names are low cardinality under streaming (GET localhost). Transaction-side tags and the middleware breadcrumbs assertion had no equivalent and were dropped; the fetch itself is still covered by its http.client child span.

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 📦

⚠️ 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 +0.01% +1 B 🔺
CDN Bundle (incl. Logs, Metrics) 32.59 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 51.43 kB +0.01% +2 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) 73.19 kB - -
CDN Bundle (incl. Tracing, Replay) 87 kB -0.01% -7 B 🔽
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 88.88 kB +0.01% +1 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) 92.93 kB -0.02% -10 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 94.83 kB -0.01% -5 B 🔽
CDN Bundle - uncompressed 89.97 kB - -
CDN Bundle (incl. Tracing) - uncompressed 147.57 kB -0.01% -6 B 🔽
CDN Bundle (incl. Logs, Metrics) - uncompressed 96.27 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 153.26 kB -0.01% -6 B 🔽
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 225.43 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 267.07 kB -0.01% -6 B 🔽
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 272.74 kB -0.01% -6 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 280.77 kB -0.01% -6 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 286.43 kB -0.01% -6 B 🔽
@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.09% +100 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.09% +87 B 🔺
@sentry/aws-serverless 96.66 kB +0.03% +23 B 🔺
@sentry/cloudflare (withSentry) - minified 201.33 kB +0.05% +97 B 🔺
@sentry/cloudflare (withSentry) 501.09 kB +0.03% +149 B 🔺

View base workflow run

@chargome
chargome force-pushed the test/e2e-port-nextjs-pages-dir branch from e784010 to 82a2df0 Compare September 2, 2026 09:54
@chargome
chargome force-pushed the test/e2e-port-nextjs-pages-dir branch 2 times, most recently from 5551356 to c3bebe4 Compare September 2, 2026 10:23
Removes the `traceLifecycle: 'static'` pins and rewrites the specs onto streamed spans. Tests asserting on children of a segment span (async context isolation, middleware fetch) use `collectStreamedSpans` and accumulate until the segment span, which ends last.

`http.client` span names are low cardinality under streaming, so the middleware fetch span is named `GET localhost` rather than `GET http://localhost:3030/`. The URL is still asserted via `url.full`.

Request headers carry over as `http.request.header.*` span attributes, so the `x-yeet` and `User-Agent` assertions are kept in that form.

Dropped, having no span v2 equivalent:

- Transaction-side `tags` (isolation scope). The error-side assertions still cover it.
- The `contexts.runtime.name === 'vercel-edge'` matchers - the edge routes are uniquely named.
- The middleware `breadcrumbs` assertion. Breadcrumbs live on events, not spans; the fetch is still covered by the `http.client` child span assertion in the same test.

Ref #23802
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chargome
chargome force-pushed the test/e2e-port-nextjs-pages-dir branch from c3bebe4 to 7472aca 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