[PR #922] [codex] Add first-pass Pages Router deploy suite parity #949

Open
opened 2026-05-06 13:11:02 +02:00 by BreizhHardware · 0 comments

📋 Pull Request Information

Original PR: https://github.com/cloudflare/vinext/pull/922
Author: @southpolesteve
Created: 4/27/2026
Status: 🔄 Open

Base: mainHead: codex/pages-router-suite-main


📝 Commits (10+)

  • 7d4572c Add first-pass Pages Router deploy suite parity
  • c14692c Fix pages router suite CI fallout
  • 0425e65 Fix Pages Router dev navigation CI failures
  • 1191206 Fix Pages Router client head replacement
  • ec65f22 Fix CI fallout for Pages Router suite
  • e899add Update entry template assertions
  • dcb8062 Fix React resolution for CI
  • 9528112 Fix Pages Router CI regressions
  • 00e897f Keep Pages allReady handling for buffered renders
  • 55a8f15 Update Pages server entry snapshot

📊 Changes

103 files changed (+13276 additions, -894 deletions)

View changed files

.github/workflows/nextjs-pages-router-deploy-suite.yml (+107 -0)
📝 .gitignore (+1 -0)
📝 benchmarks/vinext/tsconfig.json (+2 -1)
📝 packages/vinext/package.json (+2 -0)
📝 packages/vinext/src/build/prerender.ts (+31 -6)
📝 packages/vinext/src/cli.ts (+9 -2)
📝 packages/vinext/src/client/validate-module-path.ts (+13 -2)
📝 packages/vinext/src/config/config-matchers.ts (+113 -9)
📝 packages/vinext/src/config/next-config.ts (+98 -3)
📝 packages/vinext/src/deploy.ts (+108 -7)
📝 packages/vinext/src/entries/app-rsc-entry.ts (+76 -7)
📝 packages/vinext/src/entries/pages-client-entry.ts (+36 -2)
📝 packages/vinext/src/entries/pages-server-entry.ts (+607 -32)
📝 packages/vinext/src/global.d.ts (+35 -5)
📝 packages/vinext/src/index.ts (+673 -113)
packages/vinext/src/plugins/css-data-url.ts (+63 -0)
packages/vinext/src/plugins/edge-blob-assets.ts (+90 -0)
packages/vinext/src/plugins/import-meta-url.ts (+153 -0)
📝 packages/vinext/src/plugins/og-assets.ts (+2 -2)
📝 packages/vinext/src/plugins/postcss.ts (+34 -7)

...and 80 more files

📄 Description

Summary

This is a first-pass Pages Router adapter-parity slice against the Next.js deploy suite. The goal is intentionally narrow: make the non-app-dir / Pages Router deploy suites pass and give us an opt-in way to keep checking them without adding a 200+ suite tax to every PR.

This is not claiming full Next.js deploy-suite parity. It does not cover the full ~795-suite manifest, and it does not make the new deploy-suite job a required PR check.

What changed

  • Adds compatibility fixes for Pages Router SSR/data routes, API routes, routing state, middleware/header behavior, i18n/basePath/trailingSlash handling, and several asset/runtime edge cases surfaced by the Next.js deploy suites.
  • Adds focused local tests for the new compatibility seams, including router behavior, Pages data responses, API routes, middleware, static asset compatibility, server externals, WASM, CSS data URLs, import.meta.url, styled-jsx, SWC helpers, and trace metadata.
  • Adds a manual-only GitHub Actions workflow, Next.js Pages Router Deploy Suite, triggered with workflow_dispatch and sharded 16 ways. This is deliberately on-demand only and should not run on every PR.
  • Adds a manifest generator that derives a Pages Router-only deploy manifest from Next.js test/deploy-tests-manifest.json, excluding test/e2e/app-dir/** so canary drift does not silently expand the scope.

Validation

  • vp check passed after rebasing onto latest origin/main (598782e), with warning-only lint/type output.
  • vp run vinext#build passed.
  • Manifest dry run selected exactly 207 suites and 0 app-dir suites.
  • Full local Pages Router deploy-suite verification passed before PR prep: 207/207 suites passing.
  • Post-rebase compact canary passed on retry 0/2: module-layer, og-api, getserversideprops, and opentelemetry/client-trace-metadata.

Notes

The workflow is intentionally manual and heavily sharded so we can run it when we want broad adapter confidence without making normal PR CI unbearably slow. Follow-up PRs can continue shrinking this by moving the highest-value cases into the fast vinext-native test suite.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/cloudflare/vinext/pull/922 **Author:** [@southpolesteve](https://github.com/southpolesteve) **Created:** 4/27/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `codex/pages-router-suite-main` --- ### 📝 Commits (10+) - [`7d4572c`](https://github.com/cloudflare/vinext/commit/7d4572c2192d711e117771885da3c6d2b9ef623f) Add first-pass Pages Router deploy suite parity - [`c14692c`](https://github.com/cloudflare/vinext/commit/c14692c2b229cbd57b563269d5b28998a350c3be) Fix pages router suite CI fallout - [`0425e65`](https://github.com/cloudflare/vinext/commit/0425e6576942eba12bb00fdae24951c6b982f81d) Fix Pages Router dev navigation CI failures - [`1191206`](https://github.com/cloudflare/vinext/commit/119120654ee57fdd6af3c80ebd436f615aa37c13) Fix Pages Router client head replacement - [`ec65f22`](https://github.com/cloudflare/vinext/commit/ec65f2290f50363da64dff5130f7ea70363209d7) Fix CI fallout for Pages Router suite - [`e899add`](https://github.com/cloudflare/vinext/commit/e899add0b93646a67a983b54e8bddf78b655f052) Update entry template assertions - [`dcb8062`](https://github.com/cloudflare/vinext/commit/dcb8062430e4a1ec3951610c5890439c4d39bfaf) Fix React resolution for CI - [`9528112`](https://github.com/cloudflare/vinext/commit/95281123fa51ba05384c554c2de12dda12bc596c) Fix Pages Router CI regressions - [`00e897f`](https://github.com/cloudflare/vinext/commit/00e897fc39ff797d4f75fe560f39e0ba43d167a0) Keep Pages allReady handling for buffered renders - [`55a8f15`](https://github.com/cloudflare/vinext/commit/55a8f153ad197febb7d722d5ec6000fdd535d9ca) Update Pages server entry snapshot ### 📊 Changes **103 files changed** (+13276 additions, -894 deletions) <details> <summary>View changed files</summary> ➕ `.github/workflows/nextjs-pages-router-deploy-suite.yml` (+107 -0) 📝 `.gitignore` (+1 -0) 📝 `benchmarks/vinext/tsconfig.json` (+2 -1) 📝 `packages/vinext/package.json` (+2 -0) 📝 `packages/vinext/src/build/prerender.ts` (+31 -6) 📝 `packages/vinext/src/cli.ts` (+9 -2) 📝 `packages/vinext/src/client/validate-module-path.ts` (+13 -2) 📝 `packages/vinext/src/config/config-matchers.ts` (+113 -9) 📝 `packages/vinext/src/config/next-config.ts` (+98 -3) 📝 `packages/vinext/src/deploy.ts` (+108 -7) 📝 `packages/vinext/src/entries/app-rsc-entry.ts` (+76 -7) 📝 `packages/vinext/src/entries/pages-client-entry.ts` (+36 -2) 📝 `packages/vinext/src/entries/pages-server-entry.ts` (+607 -32) 📝 `packages/vinext/src/global.d.ts` (+35 -5) 📝 `packages/vinext/src/index.ts` (+673 -113) ➕ `packages/vinext/src/plugins/css-data-url.ts` (+63 -0) ➕ `packages/vinext/src/plugins/edge-blob-assets.ts` (+90 -0) ➕ `packages/vinext/src/plugins/import-meta-url.ts` (+153 -0) 📝 `packages/vinext/src/plugins/og-assets.ts` (+2 -2) 📝 `packages/vinext/src/plugins/postcss.ts` (+34 -7) _...and 80 more files_ </details> ### 📄 Description ## Summary This is a first-pass Pages Router adapter-parity slice against the Next.js deploy suite. The goal is intentionally narrow: make the non-`app-dir` / Pages Router deploy suites pass and give us an opt-in way to keep checking them without adding a 200+ suite tax to every PR. This is **not** claiming full Next.js deploy-suite parity. It does not cover the full ~795-suite manifest, and it does not make the new deploy-suite job a required PR check. ## What changed - Adds compatibility fixes for Pages Router SSR/data routes, API routes, routing state, middleware/header behavior, i18n/basePath/trailingSlash handling, and several asset/runtime edge cases surfaced by the Next.js deploy suites. - Adds focused local tests for the new compatibility seams, including router behavior, Pages data responses, API routes, middleware, static asset compatibility, server externals, WASM, CSS data URLs, `import.meta.url`, styled-jsx, SWC helpers, and trace metadata. - Adds a manual-only GitHub Actions workflow, `Next.js Pages Router Deploy Suite`, triggered with `workflow_dispatch` and sharded 16 ways. This is deliberately on-demand only and should not run on every PR. - Adds a manifest generator that derives a Pages Router-only deploy manifest from Next.js `test/deploy-tests-manifest.json`, excluding `test/e2e/app-dir/**` so canary drift does not silently expand the scope. ## Validation - `vp check` passed after rebasing onto latest `origin/main` (`598782e`), with warning-only lint/type output. - `vp run vinext#build` passed. - Manifest dry run selected exactly `207` suites and `0` app-dir suites. - Full local Pages Router deploy-suite verification passed before PR prep: `207/207` suites passing. - Post-rebase compact canary passed on retry `0/2`: `module-layer`, `og-api`, `getserversideprops`, and `opentelemetry/client-trace-metadata`. ## Notes The workflow is intentionally manual and heavily sharded so we can run it when we want broad adapter confidence without making normal PR CI unbearably slow. Follow-up PRs can continue shrinking this by moving the highest-value cases into the fast vinext-native test suite. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/vinext#949
No description provided.