Skip to content

test: retain deploy exclusions for local process control - #99392

Merged
jamiboym merged 1 commit into
canaryfrom
jamiboym/deploy-exclusion-reasons/process-control
Sep 29, 2026
Merged

jamiboym merged 1 commit into
canaryfrom
jamiboym/deploy-exclusion-reasons/process-control

Conversation

@jamiboym

Copy link
Copy Markdown
Contributor

Summary

Retain the deployment exclusions for two suites that require control of the local Node.js process, replacing legacy skipDeployment handling with explicit @force-gate !deploy directives:

  • graceful-shutdown-next-after/next-start starts a fresh Next.js process, sends SIGINT and SIGTERM, and checks whether after() callbacks finish before it exits. Vercel manages the deployed process lifecycle; the deploy test runner cannot send those signals to that process or deterministically observe its shutdown. This does not imply that Vercel lacks graceful shutdown support.
  • node-cli-args invokes Node with --experimental-network-inspection and checks whether that invocation starts successfully on the current Node version. Deploy mode does not execute the test's local startCommand, so it cannot exercise Node's handling of that CLI flag.

Preserve all test bodies, including the different development/production shutdown expectations and the Node 20 rejection case.

Based on #98994, with #98911 above this PR.

Verification

  • The shutdown assertions passed in webpack development and production modes (both signals in each mode).
  • The Node CLI test passed in both modes with normal isolated installation on Node 26.10.0. An initial NEXT_SKIP_ISOLATE=1 run could not resolve its required fixture-local node_modules/next; using the normal fixture installation resolved that validation setup issue.
  • Collection with the real gate runtime and fixture setup stubbed confirmed all three assertions enabled in dev/start and all three skipped in deploy. A syntax-tree comparison confirmed the test definitions and assertions are unchanged.
  • Formatting and ESLint passed. All 24 gate-transform tests passed on the same base.
  • The JavaScript workspace build passed. Full bootstrap remains blocked in the native Rust step (cargo metadata failed to run). Deploy execution was not run; local collection verifies the exclusions without deployment.

@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: 2dca053

@jamiboym
jamiboym added this pull request to stack #99393 September 29, 2026 00:34
@jamiboym
jamiboym requested a review from gnoff September 29, 2026 15:56
@jamiboym
jamiboym force-pushed the jamiboym/deploy-exclusion-reasons/process-control branch from 8381b28 to a5bd666 Compare September 29, 2026 16:07
@jamiboym
jamiboym marked this pull request as ready for review September 29, 2026 16:11
Base automatically changed from jamiboym/deploy-exclusion-reasons/custom-servers to canary September 29, 2026 19:52
jamiboym added a commit that referenced this pull request Sep 29, 2026
## Summary

Custom-server suites depend on local server entrypoints that deploy mode
does not launch. Replace their legacy `skipDeployment` exclusions and
`skipped` returns with `@force-gate !deploy` and explain the dependency,
while preserving their existing local mode restrictions and assertions.

This covers six test files, including the custom-server sections of API
body parsing and OpenTelemetry. The ordinary API JSON body-parser case
remains enabled in deploy mode; only the Express pre-parsing cases are
excluded. The custom-server shutdown suite also requires the runner to
signal its server process and observe `after()` completion.

Stack: #99012 → #98994 → #99392 → #98911. Based on #99012; #99392
separately explains local process-control exclusions.

## Verification

- The two added suites passed in both webpack development and production
modes: five tests in each mode.
- Collection with the real gate runtime and fixture setup stubbed
confirmed all five tests enabled locally, and only the ordinary API
body-parser test enabled in deploy mode. Both parameterized shutdown
signals are excluded in deploy.
- All 24 gate-transform tests passed. Formatting and ESLint passed for
the added files.
- The JavaScript workspace build passed. The full bootstrap build failed
in the native Rust step (`cargo metadata failed to run`).
- No new deployment was created. The ordinary API body-parser case
passed in the earlier deployment experiment.

<!-- NEXT_JS_LLM -->
@jamiboym
jamiboym force-pushed the jamiboym/deploy-exclusion-reasons/process-control branch from a5bd666 to 2dca053 Compare September 29, 2026 19:52
@jamiboym
jamiboym merged commit 84dd9be into canary Sep 29, 2026
119 checks passed
@jamiboym
jamiboym deleted the jamiboym/deploy-exclusion-reasons/process-control branch September 29, 2026 23:35
jamiboym added a commit that referenced this pull request Sep 29, 2026
## Summary

Based on #99392. Stack: #99012 → #98994 → #99392 → #98911. This PR now
contains its own `skipDeployment` → `@force-gate` conversions and
removal of `skipped` returns, with no dependency on Josh’s migration
PRs. Enable only the two body-size tests confirmed passing in both
deployment CI variants: a 4 MiB request with a 5 MiB Next.js buffer and
a 1 MiB request with a 2 MiB buffer.

Keep the other seven tests gated and replace the migration TODOs with
verified reasons:
- The test deployment enforces the documented 4.5 MB Vercel payload
limit. Requests of 5, 6, 10, 11, 20, and 51 MiB receive HTTP 413,
independently of the Next.js buffering setting.
- The 3 MiB request is accepted, but Vercel forwards the entire body
instead of applying Next.js's local 2 MiB truncation.

The 5 MiB and 2 MiB suite gates are narrowed to their failing over-limit
tests. All test bodies and assertions are unchanged. The redundant
dev-only image exclusion is handled separately in #98908.

## Verification

- Restacked above #99392; `git range-diff` confirms the body-size patch
is unchanged.

- Prettier and ESLint passed.
- Verified test bodies and assertions are unchanged after removing the
legacy deployment skips; all four force-gates attach. A collection-only
check with fixture setup stubbed confirms two tests enabled and seven
gated in deploy, and all nine enabled locally.
- Prior reproduction on canary:
https://github.com/vercel/next.js/actions/runs/35401223346/job/105783820893
and
https://github.com/vercel/next.js/actions/runs/35401223346/job/105783820915
(2 passed, 7 failed in each).
- Direct HTTP reproduction returned Vercel's FUNCTION_PAYLOAD_TOO_LARGE
for 5 MiB with a configured 50 MiB Next.js buffer; 4 MiB succeeded.
- Full suite execution remains blocked by the local installation’s
missing `node-fetch`; bootstrap/watch builds stalled during the
first-layer validation. CI must validate execution on the new stack.

<!-- NEXT_JS_LLM -->
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants