Skip to content

test(e2e): Add cache origin link tests for cached components in pages - #24739

Merged
s1gr1d merged 1 commit into
developfrom
sig/e2e-cache-components-page
Sep 25, 2026
Merged

s1gr1d merged 1 commit into
developfrom
sig/e2e-cache-components-page

Conversation

@s1gr1d

@s1gr1d s1gr1d commented Sep 25, 2026

Copy link
Copy Markdown
Member

Add tests for cache_origin span links on use cache inside rendered pages: cached components and nested cached functions. The key claim beyond the route-handler case: links are per cache entry, so one render with several cached sections carries one link per section, each pointing at its own fill. Currently all in a "failed" state (test.fail()) as this is not yet implemented.

Both routes place the cached code in a dynamic hole (awaited searchParams). Entries served from the prerendered shell (Resume Data Cache) never reach the cache handlers and produce no spans — that path stays untestable until Next.js exposes RDC reads.

Legend
T1, T2       traces, one per request, in order
ck:X         cache.key digest of entry X
o--> put     span link (sentry.link.type: 'cache_origin'), target = the cache.put span

1. Sibling components: one link per section

app/cached-sibling-components/ — dynamic hole renders two cached sibling components
(props are part of the cache key => two entries)

T1 (fill)                              T2 (hit)
|- put ck:A (first)   <-------------------o get hit=true ck:A
|- put ck:B (second)  <-------------------o get hit=true ck:B

The two links must target two different fill spans — origin per section, not per page.

2. Nested caches with different lifetimes (production only)

app/nested-caches/ — cached component (expire: 2s) calls a nested cached fn (cacheLife('hours'));
sleep 3s between requests

T1 (fill)                              T2 (outer refill)
|- put ck:outer                        |- get hit=false ck:outer (expired)
|- put ck:inner  <------------------------o get hit=true  ck:inner
|- put ck:outer

The inner read happens inside the outer entry's isolated fill context and must still link back to T1.

Closes #24731
Linear: https://linear.app/getsentry/issue/JS-3804/cache-origin-link-tests-for-cached-components-in-pages

@github-actions

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 29.24 kB - -
@sentry/browser - with treeshaking flags 27.5 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.4 kB - -
@sentry/browser (incl. Tracing) 51.15 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 51.17 kB - -
@sentry/browser (incl. Tracing, Profiling) 54.18 kB - -
@sentry/browser (incl. Tracing, Replay) 90.76 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 79.86 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 95.46 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 108.41 kB - -
@sentry/browser (incl. Feedback) 46.76 kB - -
@sentry/browser (incl. sendFeedback) 34.3 kB - -
@sentry/browser (incl. FeedbackAsync) 39.41 kB - -
@sentry/browser (incl. Metrics) 30.25 kB - -
@sentry/browser (incl. Logs) 30.51 kB - -
@sentry/browser (incl. Metrics & Logs) 31.18 kB - -
@sentry/react 31 kB - -
@sentry/react (incl. Tracing) 53.45 kB - -
@sentry/vue 36.74 kB - -
@sentry/vue (incl. Tracing) 53.7 kB - -
@sentry/svelte 29.26 kB - -
CDN Bundle 30.93 kB - -
CDN Bundle (incl. Tracing) 51.69 kB - -
CDN Bundle (incl. Logs, Metrics) 33.2 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 53.66 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 73.92 kB - -
CDN Bundle (incl. Tracing, Replay) 89.28 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 91.25 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 95.45 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 97.42 kB - -
CDN Bundle - uncompressed 91.4 kB - -
CDN Bundle (incl. Tracing) - uncompressed 153.77 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 97.97 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 159.73 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 227.54 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 273.5 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 279.44 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 287.2 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 293.13 kB - -
@sentry/nextjs (client) 55.77 kB - -
@sentry/sveltekit (client) 51.59 kB - -
@sentry/core/server 39.95 kB - -
@sentry/core/browser 13.63 kB - -
@sentry/node 133.9 kB +0.01% +5 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 82.43 kB - -
@sentry/node - without tracing 90.46 kB +0.02% +13 B 🔺
@sentry/node - without channel injection 112.41 kB +0.01% +11 B 🔺
@sentry/aws-serverless 98.72 kB +0.01% +5 B 🔺
@sentry/cloudflare (withSentry) - minified 206.49 kB - -
@sentry/cloudflare (withSentry) 513.73 kB - -

View base workflow run

@s1gr1d
s1gr1d merged commit f396b08 into develop Sep 25, 2026
46 checks passed
@s1gr1d
s1gr1d deleted the sig/e2e-cache-components-page branch September 25, 2026 12:34
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.

cache origin link tests for cached components in pages

2 participants