Skip to content

test(prerender): add e2e coverage for notFoundBoundary on prerender routes - #438

Merged
ivogt merged 1 commit into
mainfrom
test/not-found-boundary-e2e
Mar 31, 2026
Merged

ivogt merged 1 commit into
mainfrom
test/not-found-boundary-e2e

Conversation

@ivogt

@ivogt ivogt commented Mar 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add notFoundBoundary to the docs.article prerender route in the test app
  • Update production e2e test to verify custom 404 UI renders (not generic "Not Found") when visiting a non-prerendered slug

Test plan

  • Production: non-prerendered slug returns 404 status
  • Production: notFoundBoundary renders "Doc Not Found" custom UI
  • Dev: unknown slug renders on-demand (handler present, boundary not triggered)
  • All 58 prerender e2e tests pass
  • 2677 unit tests pass
  • Typecheck, lint, format clean

…outes

Add a notFoundBoundary to the docs.article prerender route and verify
that non-prerendered slugs in production render the custom 404 UI from
the boundary rather than the generic Not Found page. This covers the
interaction between the prerender stub (DataNotFoundError) and the
notFoundBoundary DSL helper.
@ivogt
ivogt merged commit 3f165a1 into main Mar 31, 2026
@ivogt
ivogt deleted the test/not-found-boundary-e2e branch March 31, 2026 20:08
ivogt added a commit that referenced this pull request Jul 4, 2026
… HITs (#669)

A bake-lane loader's nested promise that settled inside the capture window
was recorded as its RAW value; the HIT overlay handed that plain value to
consumers whose code is an unconditional use(data.x) - React #438, root
error boundary, whole page down (found live on a storefront PDP whose 165ms
price fetch won the quiet window because a concurrent loader kept the
Flight stream byte-active past it).

- loader-snapshot.ts: settled nested promises now record behind a
  $rangoLoaderSettled marker; overlayLoaderContainer rehydrates them as
  Promise.resolve(pinned). A capture-computed holes bit on the marker picks
  the rehydration path (fully-pinned resolves immediately; deep holes chain
  on the fresh promise) so HITs never rescan the pinned subtree. The root
  container still unwraps (elideNested owns nested marking - no root flag).
- Red->green: 7 unit regressions + /shell-cache/settled + /ppr-shell/settled
  e2e twins (dev + production, both apps).
- guardHydrationErrors hoisted to @shared/e2e with one canonical string
  list (unminified #438 text + [RootErrorBoundary]); the two suite-local
  copies had already drifted, which is how the regression e2e passed
  against broken code. waitForHydration keeps the error window in scope.
- parallel() DSL: dropped the inference-only TSlots generic in both type
  files - bare arrow slot handlers get a typed ctx (descriptor arrows still
  need an annotation; StaticHandlerDefinition.handler pollutes the union).
- skills/ppr + parallel, loader-container-bake design doc updated.
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