From 5cbc0ffb53ead499849ebcb4f4fb4924befcbd3b Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Mon, 27 Apr 2026 18:13:11 +0000 Subject: [PATCH 01/10] fix(ext/node): align node:test `it`/`describe` with Node and enable passing tests Match Node's `lib/test.js` so `it === test` and `describe === suite`, which makes property accesses like `test.it === test` pass identity checks. Previously these were thin wrappers, so the identity check in `test-runner-aliases.js` failed. Also enable a batch of node compat tests that already pass (mostly the cluster suite, recently fixed by #33493, plus a handful of net/http2/ process/tls/webstreams tests). --- ext/node/polyfills/testing.ts | 37 +++-------------- tests/node_compat/config.jsonc | 76 ++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 31 deletions(-) diff --git a/ext/node/polyfills/testing.ts b/ext/node/polyfills/testing.ts index c8219daba1eddc..678f6d608d8a8c 100644 --- a/ext/node/polyfills/testing.ts +++ b/ext/node/polyfills/testing.ts @@ -374,20 +374,6 @@ test.only = function only(name, options, fn) { return test(name, options, fn, { only: true }); }; -export function describe(name, options, fn) { - return suite(name, options, fn, {}); -} - -describe.skip = function skip(name, options, fn) { - return suite.skip(name, options, fn); -}; -describe.todo = function todo(name, options, fn) { - return suite.todo(name, options, fn); -}; -describe.only = function only(name, options, fn) { - return suite.only(name, options, fn); -}; - export function suite(name, options, fn, overrides) { if (currentSuite) { return currentSuite.addSuite(name, options, fn, overrides); @@ -405,21 +391,10 @@ suite.only = function only(name, options, fn) { return suite(name, options, fn, { only: true }); }; -export function it(name, options, fn) { - return test(name, options, fn, {}); -} - -it.skip = function skip(name, options, fn) { - return test.skip(name, options, fn); -}; - -it.todo = function todo(name, options, fn) { - return test.todo(name, options, fn); -}; - -it.only = function only(name, options, fn) { - return test.only(name, options, fn); -}; +// Match Node: `it` is just an alias for `test`, and `describe` for `suite`. +// See https://github.com/nodejs/node/blob/main/lib/test.js +export const it = test; +export const describe = suite; export function before() { notImplemented("test.before"); @@ -437,8 +412,8 @@ export function afterEach() { notImplemented("test.afterEach"); } -test.it = it; -test.describe = describe; +test.it = test; +test.describe = suite; test.suite = suite; // Store all active mocks for restoreAll() diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index e46f1da3a8dc72..f56de3115cd88f 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -99,6 +99,7 @@ "ignore": true, "reason": "Tests Node.js internal modules (require('internal/...')) which are not exposed in Deno" }, + "parallel/test-aborted-util.js": {}, "parallel/test-arm-math-illegal-instruction.js": {}, "parallel/test-assert-async.js": {}, "parallel/test-assert-calltracker-calls.js": {}, @@ -250,7 +251,9 @@ "parallel/test-child-process-disconnect.js": {}, "parallel/test-child-process-double-pipe.js": {}, "parallel/test-child-process-env.js": {}, + "parallel/test-child-process-exec-any-shells-windows.js": {}, "parallel/test-child-process-exec-cwd.js": {}, + "parallel/test-child-process-exec-encoding.js": {}, "parallel/test-child-process-exec-env.js": {}, "parallel/test-child-process-exec-error.js": {}, "parallel/test-child-process-exec-kill-throws.js": { "windows": false }, @@ -294,6 +297,8 @@ "parallel/test-child-process-send-after-close.js": {}, "parallel/test-child-process-send-cb.js": {}, "parallel/test-child-process-send-type-error.js": {}, + "parallel/test-child-process-send-utf8.js": {}, + "parallel/test-child-process-server-close.js": {}, "parallel/test-child-process-set-blocking.js": {}, "parallel/test-child-process-silent.js": {}, "parallel/test-child-process-spawn-args.mjs": {}, @@ -306,6 +311,7 @@ "parallel/test-child-process-spawn-shell.js": {}, "parallel/test-child-process-spawn-timeout-kill-signal.js": {}, "parallel/test-child-process-spawn-typeerror.js": {}, + "parallel/test-child-process-spawn-windows-batch-file.js": {}, "parallel/test-child-process-spawnsync-args.js": {}, "parallel/test-child-process-spawnsync-env.js": {}, "parallel/test-child-process-spawnsync-input.js": {}, @@ -401,9 +407,38 @@ "reason": "Tests Node.js-specific CLI flags/options that are not supported in Deno" }, "parallel/test-client-request-destroy.js": {}, + "parallel/test-cluster-bind-privileged-port.js": {}, + "parallel/test-cluster-call-and-destroy.js": {}, + "parallel/test-cluster-child-index-dgram.js": {}, + "parallel/test-cluster-child-index-net.js": {}, + "parallel/test-cluster-concurrent-disconnect.js": {}, + "parallel/test-cluster-dgram-ipv6only.js": {}, + "parallel/test-cluster-dgram-reuse.js": {}, + "parallel/test-cluster-disconnect-before-exit.js": {}, + "parallel/test-cluster-disconnect-with-no-workers.js": {}, "parallel/test-cluster-eaddrinuse.js": {}, + "parallel/test-cluster-fork-env.js": {}, + "parallel/test-cluster-http-pipe.js": {}, + "parallel/test-cluster-invalid-message.js": {}, + "parallel/test-cluster-ipc-throw.js": {}, + "parallel/test-cluster-kill-infinite-loop.js": {}, + "parallel/test-cluster-listen-pipe-readable-writable.js": {}, + "parallel/test-cluster-net-listen.js": {}, + "parallel/test-cluster-net-reuseport.js": {}, + "parallel/test-cluster-rr-handle-close.js": {}, + "parallel/test-cluster-rr-handle-keep-loop-alive.js": {}, + "parallel/test-cluster-rr-handle-ref-unref.js": {}, + "parallel/test-cluster-rr-ref.js": {}, + "parallel/test-cluster-send-deadlock.js": {}, "parallel/test-cluster-shared-handle-bind-error.js": {}, + "parallel/test-cluster-shared-handle-bind-privileged-port.js": {}, "parallel/test-cluster-uncaught-exception.js": {}, + "parallel/test-cluster-worker-death.js": {}, + "parallel/test-cluster-worker-destroy.js": {}, + "parallel/test-cluster-worker-disconnect-on-error.js": {}, + "parallel/test-cluster-worker-isconnected.js": {}, + "parallel/test-cluster-worker-isdead.js": {}, + "parallel/test-cluster-worker-no-exit.js": {}, "parallel/test-common-countdown.js": {}, "parallel/test-common-expect-warning.js": {}, "parallel/test-common-must-not-call.js": {}, @@ -566,6 +601,7 @@ "parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js": {}, "parallel/test-crypto-worker-thread.js": {}, "parallel/test-datetime-change-notify.js": {}, + "parallel/test-debug-process.js": {}, "parallel/test-debugger-address.mjs": { "ignore": true, "reason": "Tests 'node inspect' CLI subcommand which Deno does not implement" @@ -694,6 +730,9 @@ "parallel/test-dgram-close-is-not-callback.js": {}, "parallel/test-dgram-close-signal.js": {}, "parallel/test-dgram-close.js": {}, + "parallel/test-dgram-cluster-bind-error.js": {}, + "parallel/test-dgram-cluster-close-during-bind.js": {}, + "parallel/test-dgram-cluster-close-in-listening.js": {}, "parallel/test-dgram-connect-send-callback-buffer-length.js": {}, "parallel/test-dgram-connect-send-callback-buffer.js": {}, "parallel/test-dgram-connect-send-callback-multi-buffer.js": {}, @@ -750,6 +789,7 @@ "parallel/test-dgram-setTTL.js": {}, "parallel/test-dgram-udp4.js": {}, "parallel/test-dgram-udp6-send-default-host.js": {}, + "parallel/test-dgram-unref-in-cluster.js": {}, "parallel/test-dgram-unref.js": {}, "parallel/test-diagnostic-channel-http-request-created.js": {}, "parallel/test-diagnostics-channel-bind-store.js": {}, @@ -872,6 +912,7 @@ "parallel/test-eslint-required-modules.js": {}, // "parallel/test-esm-loader-hooks-inspect-brk.js": {}, // "parallel/test-esm-loader-hooks-inspect-wait.js": {}, + "parallel/test-esm-loader-hooks-inspect-brk.js": {}, "parallel/test-eval-strict-referenceerror.js": {}, "parallel/test-eval.js": {}, "parallel/test-event-capture-rejections.js": {}, @@ -1118,6 +1159,7 @@ "parallel/test-fs-read-type.js": {}, "parallel/test-fs-read-zero-length.js": {}, "parallel/test-fs-read.js": {}, + "parallel/test-fs-readdir-buffer.js": {}, "parallel/test-fs-readdir-pipe.js": {}, "parallel/test-fs-readdir-recursive.js": {}, "parallel/test-fs-readdir-stack-overflow.js": {}, @@ -1142,6 +1184,7 @@ "parallel/test-fs-ready-event-stream.js": {}, "parallel/test-fs-realpath-buffer-encoding.js": {}, "parallel/test-fs-realpath-native.js": {}, + "parallel/test-fs-realpath-on-substed-drive.js": {}, "parallel/test-fs-realpath-pipe.js": {}, "parallel/test-fs-realpath.js": { "windows": false, @@ -1188,6 +1231,7 @@ "parallel/test-fs-util-validateoffsetlength.js": {}, "parallel/test-fs-utimes-y2K38.js": {}, "parallel/test-fs-utimes.js": {}, + "parallel/test-fs-watch-close-when-destroyed.js": {}, "parallel/test-fs-watch-file-enoent-after-deletion.js": {}, "parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js": {}, "parallel/test-fs-watch-recursive-add-folder.js": {}, @@ -1497,8 +1541,10 @@ "parallel/test-http-response-setheaders.js": {}, "parallel/test-http-response-status-message.js": {}, "parallel/test-http-response-writehead-returns-this.js": {}, + "parallel/test-http-server-async-dispose.js": {}, "parallel/test-http-server-clear-timer.js": {}, "parallel/test-http-server-close-all.js": {}, + "parallel/test-http-server-close-destroy-timeout.js": {}, "parallel/test-http-server-close-idle-wait-response.js": {}, "parallel/test-http-server-connection-list-when-close.js": {}, "parallel/test-http-server-consumed-timeout.js": {}, @@ -1589,6 +1635,7 @@ "parallel/test-http2-client-upload.js": {}, "parallel/test-http2-client-write-before-connect.js": {}, "parallel/test-http2-client-write-empty-string.js": {}, + "parallel/test-http2-close-while-writing.js": {}, "parallel/test-http2-compat-aborted.js": {}, "parallel/test-http2-compat-errors.js": {}, "parallel/test-http2-compat-expect-continue-check.js": {}, @@ -1639,6 +1686,7 @@ "parallel/test-http2-createserver-options.js": {}, "parallel/test-http2-date-header.js": {}, "parallel/test-http2-destroy-after-write.js": {}, + "parallel/test-http2-dont-lose-data.js": {}, "parallel/test-http2-dont-override.js": {}, "parallel/test-http2-endafterheaders.js": {}, "parallel/test-http2-error-order.js": {}, @@ -1700,7 +1748,9 @@ "parallel/test-http2-sent-headers.js": {}, "parallel/test-http2-server-async-dispose.js": {}, "parallel/test-http2-server-close-callback.js": {}, + "parallel/test-http2-server-close-idle-connection.js": {}, "parallel/test-http2-server-errors.js": {}, + "parallel/test-http2-server-push-stream-errors-args.js": {}, "parallel/test-http2-server-rfc-9113-server.js": {}, "parallel/test-http2-server-rst-before-respond.js": {}, "parallel/test-http2-server-rst-stream.js": {}, @@ -1724,6 +1774,7 @@ "parallel/test-http2-short-stream-client-server.js": {}, "parallel/test-http2-single-headers-validation-disabled.js": {}, "parallel/test-http2-single-headers-validation.js": {}, + "parallel/test-http2-socket-close.js": {}, "parallel/test-http2-socket-proxy-handler-for-has.js": {}, "parallel/test-http2-status-code-invalid.js": {}, "parallel/test-http2-status-code.js": {}, @@ -1771,7 +1822,9 @@ "parallel/test-https-options-boolean-check.js": {}, "parallel/test-https-request-arguments.js": {}, "parallel/test-https-selfsigned-no-keycertsign-no-crash.js": {}, + "parallel/test-https-server-async-dispose.js": {}, "parallel/test-https-server-close-all.js": {}, + "parallel/test-https-server-close-destroy-timeout.js": {}, "parallel/test-https-server-headers-timeout.js": {}, "parallel/test-https-server-options-incoming-message.js": {}, "parallel/test-https-server-options-server-response.js": {}, @@ -1809,6 +1862,7 @@ // "parallel/test-inspector-inspect-brk-node.js": {}, // "parallel/test-inspector-invalid-args.js": {}, + "parallel/test-inspect-support-for-node_options.js": {}, "parallel/test-inspector-close-worker.js": {}, // TODO(bartlomieju): times out @@ -1833,6 +1887,7 @@ // "parallel/test-inspector-enabled.js": {}, // "parallel/test-inspector-debug-end.js": {}, + "parallel/test-inspector-debug-async-hook.js": {}, "parallel/test-inspector-has-idle.js": {}, "parallel/test-inspector-heapdump.js": {}, @@ -1860,6 +1915,7 @@ // TODO(bartlomieju): depends on 'internal/deps/undici/undici' internal module // "parallel/test-inspector-network-fetch.js": {}, "parallel/test-inspector-multisession-ws.js": {}, + "parallel/test-inspector-network-arbitrary-data.js": {}, "parallel/test-inspector-not-blocked-on-idle.js": {}, "parallel/test-inspector-open-coverage.js": {}, "parallel/test-inspector-open-port-integer-overflow.js": {}, @@ -2037,6 +2093,7 @@ "parallel/test-net-autoselectfamily.js": {}, "parallel/test-net-better-error-messages-listen-path.js": {}, "parallel/test-net-better-error-messages-listen.js": {}, + "parallel/test-net-better-error-messages-path.js": {}, "parallel/test-net-better-error-messages-port-hostname.js": {}, "parallel/test-net-binary.js": {}, "parallel/test-net-bind-twice.js": {}, @@ -2051,6 +2108,7 @@ "parallel/test-net-connect-buffer.js": {}, "parallel/test-net-connect-buffer2.js": {}, "parallel/test-net-connect-call-socket-connect.js": {}, + "parallel/test-net-connect-custom-lookup-non-string-address.mjs": {}, "parallel/test-net-connect-destroy.js": {}, "parallel/test-net-connect-immediate-destroy.js": {}, "parallel/test-net-connect-immediate-finish.js": {}, @@ -2059,6 +2117,7 @@ "parallel/test-net-connect-options-invalid.js": {}, "parallel/test-net-connect-options-fd.js": {}, "parallel/test-net-connect-options-ipv6.js": {}, + "parallel/test-net-connect-options-path.js": {}, "parallel/test-net-connect-options-port.js": {}, "parallel/test-net-connect-paused-connection.js": {}, "parallel/test-net-connect-reset-after-destroy.js": {}, @@ -2082,7 +2141,9 @@ "parallel/test-net-listen-close-server-callback-is-not-function.js": {}, "parallel/test-net-listen-close-server.js": {}, "parallel/test-net-listen-error.js": {}, + "parallel/test-net-listen-exclusive-random-ports.js": {}, "parallel/test-net-listen-fd0.js": {}, + "parallel/test-net-listen-handle-in-cluster-2.js": {}, "parallel/test-net-listen-invalid-port.js": {}, "parallel/test-net-listening.js": {}, "parallel/test-net-local-address-port.js": {}, @@ -2107,6 +2168,7 @@ "parallel/test-net-server-call-listen-multiple-times.js": {}, "parallel/test-net-server-capture-rejection.js": {}, "parallel/test-net-server-close-before-calling-lookup-callback.js": {}, + "parallel/test-net-server-close-before-ipc-response.js": {}, "parallel/test-net-server-close.js": {}, "parallel/test-net-server-listen-options-signal.js": {}, "parallel/test-net-server-listen-options.js": {}, @@ -2151,6 +2213,7 @@ "parallel/test-net-write-cb-on-destroy-before-connect.js": {}, "parallel/test-net-write-connect-write.js": {}, "parallel/test-net-write-fully-async-buffer.js": {}, + "parallel/test-net-write-fully-async-hex-string.js": {}, "parallel/test-net-write-slow.js": {}, "parallel/test-next-tick-doesnt-hang.js": {}, "parallel/test-next-tick-domain.js": {}, @@ -2475,12 +2538,14 @@ "parallel/test-process-external-stdio-close-spawn.js": {}, "parallel/test-process-external-stdio-close.js": {}, "parallel/test-process-features.js": {}, + "parallel/test-process-finalization.mjs": {}, "parallel/test-process-get-builtin.mjs": {}, "parallel/test-process-getgroups.js": {}, "parallel/test-process-hrtime-bigint.js": {}, "parallel/test-process-hrtime.js": {}, "parallel/test-process-kill-null.js": {}, "parallel/test-process-kill-pid.js": {}, + "parallel/test-process-load-env-file.js": {}, "parallel/test-process-next-tick.js": {}, "parallel/test-process-no-deprecation.js": {}, "parallel/test-process-ppid.js": {}, @@ -2489,6 +2554,7 @@ "windows": false }, "parallel/test-process-really-exit.js": {}, + "parallel/test-process-ref-unref.js": {}, "parallel/test-process-remove-all-signal-listeners.js": {}, "parallel/test-process-setsourcemapsenabled.js": {}, "parallel/test-process-title-cli.js": {}, @@ -2502,6 +2568,7 @@ "parallel/test-process-umask.js": {}, "parallel/test-process-uptime.js": {}, "parallel/test-process-warning.js": {}, + "parallel/test-process-warnings.mjs": {}, "parallel/test-promise-handled-rejection-no-warning.js": {}, "parallel/test-promise-unhandled-default.js": {}, "parallel/test-promise-unhandled-issue-43655.js": {}, @@ -2524,6 +2591,7 @@ "parallel/test-readable-single-end.js": {}, "parallel/test-readline-async-iterators-backpressure.js": {}, "parallel/test-readline-async-iterators-destroy.js": {}, + "parallel/test-readline-async-iterators.js": {}, "parallel/test-readline-carriage-return-between-chunks.js": {}, "parallel/test-readline-csi.js": {}, "parallel/test-readline-emit-keypress-events.js": {}, @@ -2603,6 +2671,7 @@ "parallel/test-require-resolve.js": {}, "parallel/test-require-resolve-invalid-paths.js": {}, "parallel/test-require-resolve-opts-paths-relative.js": {}, + "parallel/test-runner-aliases.js": {}, "parallel/test-runner-cli-concurrency.js": { "ignore": true, "reason": "Tests Node.js-specific CLI flags/options that are not supported in Deno" @@ -3057,6 +3126,7 @@ "parallel/test-timers.js": {}, "parallel/test-tls-alert.js": {}, "parallel/test-tls-basic-validations.js": {}, + "parallel/test-tls-buffersize.js": {}, "parallel/test-tls-ca-concat.js": {}, "parallel/test-tls-cert-ext-encoding.js": {}, "parallel/test-tls-cert-regression.js": {}, @@ -3096,7 +3166,9 @@ "parallel/test-tls-invoke-queued.js": {}, "parallel/test-tls-ip-servername-forbidden.js": {}, "parallel/test-tls-js-stream.js": {}, + "parallel/test-tls-junk-closes-server.js": {}, "parallel/test-tls-keyengine-invalid-arg-type.js": {}, + "parallel/test-tls-multiple-cas-as-string.js": {}, "parallel/test-tls-net-connect-prefer-path.js": { "windows": false }, "parallel/test-tls-net-socket-keepalive-12.js": {}, "parallel/test-tls-net-socket-keepalive.js": {}, @@ -3117,7 +3189,9 @@ "parallel/test-tls-session-timeout-errors.js": {}, "parallel/test-tls-snicallback-error.js": {}, "parallel/test-tls-socket-allow-half-open-option.js": {}, + "parallel/test-tls-socket-close.js": {}, "parallel/test-tls-socket-constructor-alpn-options-parsing.js": {}, + "parallel/test-tls-startcom-wosign-whitelist.js": {}, "parallel/test-tls-timeout-server-2.js": {}, "parallel/test-tls-tlswrap-segfault-2.js": {}, "parallel/test-tls-transport-destroy-after-own-gc.js": {}, @@ -3283,6 +3357,8 @@ "parallel/test-webstream-string-tag.js": {}, "parallel/test-webstream-structured-clone-no-leftovers.mjs": {}, "parallel/test-webstreams-compose.js": {}, + "parallel/test-webstreams-compression-bad-chunks.js": {}, + "parallel/test-webstreams-compression-buffer-source.js": {}, "parallel/test-webstreams-decompression-reject-trailing.js": {}, "parallel/test-webstreams-finished.js": {}, "parallel/test-webstreams-pipeline.js": {}, From fb802ef327668e0b2aa6faf0146854ea7f61447d Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Mon, 27 Apr 2026 23:32:06 +0000 Subject: [PATCH 02/10] test: format multi-line entries for new windows:false gates --- tests/node_compat/config.jsonc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index bb5303547d258a..e832da62cd0af7 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -251,7 +251,9 @@ "parallel/test-child-process-disconnect.js": {}, "parallel/test-child-process-double-pipe.js": {}, "parallel/test-child-process-env.js": {}, - "parallel/test-child-process-exec-any-shells-windows.js": { "windows": false }, + "parallel/test-child-process-exec-any-shells-windows.js": { + "windows": false + }, "parallel/test-child-process-exec-cwd.js": {}, "parallel/test-child-process-exec-encoding.js": {}, "parallel/test-child-process-exec-env.js": {}, @@ -310,7 +312,9 @@ "parallel/test-child-process-spawn-shell.js": {}, "parallel/test-child-process-spawn-timeout-kill-signal.js": {}, "parallel/test-child-process-spawn-typeerror.js": {}, - "parallel/test-child-process-spawn-windows-batch-file.js": { "windows": false }, + "parallel/test-child-process-spawn-windows-batch-file.js": { + "windows": false + }, "parallel/test-child-process-spawnsync-args.js": {}, "parallel/test-child-process-spawnsync-env.js": {}, "parallel/test-child-process-spawnsync-input.js": {}, From c1713a1d2f7f813b6aa1baa5ceb5f0d6efcd8a82 Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Mon, 27 Apr 2026 23:39:39 +0000 Subject: [PATCH 03/10] test: drop 3 more failing tests from #33593 - test-aborted-util.js: 'Aborted with gc cleanup' subtest fails - test-net-connect-custom-lookup-non-string-address.mjs: fails - test-webstreams-compression-buffer-source.js: fails --- tests/node_compat/config.jsonc | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index e832da62cd0af7..9ede8d1e39bd05 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -99,7 +99,6 @@ "ignore": true, "reason": "Tests Node.js internal modules (require('internal/...')) which are not exposed in Deno" }, - "parallel/test-aborted-util.js": {}, "parallel/test-arm-math-illegal-instruction.js": {}, "parallel/test-assert-async.js": {}, "parallel/test-assert-calltracker-calls.js": {}, @@ -2120,7 +2119,6 @@ "parallel/test-net-connect-buffer.js": {}, "parallel/test-net-connect-buffer2.js": {}, "parallel/test-net-connect-call-socket-connect.js": {}, - "parallel/test-net-connect-custom-lookup-non-string-address.mjs": {}, "parallel/test-net-connect-destroy.js": {}, "parallel/test-net-connect-immediate-destroy.js": {}, "parallel/test-net-connect-immediate-finish.js": {}, @@ -3372,7 +3370,6 @@ "parallel/test-webstream-string-tag.js": {}, "parallel/test-webstream-structured-clone-no-leftovers.mjs": {}, "parallel/test-webstreams-compose.js": {}, - "parallel/test-webstreams-compression-buffer-source.js": {}, "parallel/test-webstreams-decompression-reject-trailing.js": {}, "parallel/test-webstreams-finished.js": {}, "parallel/test-webstreams-pipeline.js": {}, From 54e309b8d0e4c85ee51b423caae6d4ac4f29c11f Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Mon, 27 Apr 2026 23:46:55 +0000 Subject: [PATCH 04/10] test: drop flaky test-inspector-debug-async-hook from #33593 Failed on linux-aarch64 after retry (10s timeout); flaky on runs 0+1. --- tests/node_compat/config.jsonc | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index 9ede8d1e39bd05..872ea32992873c 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -1899,7 +1899,6 @@ // "parallel/test-inspector-enabled.js": {}, // "parallel/test-inspector-debug-end.js": {}, - "parallel/test-inspector-debug-async-hook.js": {}, "parallel/test-inspector-has-idle.js": {}, "parallel/test-inspector-heapdump.js": {}, From 44903572eaf02949217f955b638ffc1507dff26f Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Mon, 27 Apr 2026 23:58:56 +0000 Subject: [PATCH 05/10] test: gate 3 Windows-failing tests in #33593 --- tests/node_compat/config.jsonc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index 872ea32992873c..24fd1da7afde8d 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -254,7 +254,9 @@ "windows": false }, "parallel/test-child-process-exec-cwd.js": {}, - "parallel/test-child-process-exec-encoding.js": {}, + "parallel/test-child-process-exec-encoding.js": { + "windows": false + }, "parallel/test-child-process-exec-env.js": {}, "parallel/test-child-process-exec-error.js": {}, "parallel/test-child-process-exec-kill-throws.js": { "windows": false }, @@ -604,7 +606,9 @@ "parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js": {}, "parallel/test-crypto-worker-thread.js": {}, "parallel/test-datetime-change-notify.js": {}, - "parallel/test-debug-process.js": {}, + "parallel/test-debug-process.js": { + "windows": false + }, "parallel/test-debugger-address.mjs": { "ignore": true, "reason": "Tests 'node inspect' CLI subcommand which Deno does not implement" @@ -2126,7 +2130,9 @@ "parallel/test-net-connect-options-invalid.js": {}, "parallel/test-net-connect-options-fd.js": {}, "parallel/test-net-connect-options-ipv6.js": {}, - "parallel/test-net-connect-options-path.js": {}, + "parallel/test-net-connect-options-path.js": { + "windows": false + }, "parallel/test-net-connect-options-port.js": {}, "parallel/test-net-connect-paused-connection.js": {}, "parallel/test-net-connect-reset-after-destroy.js": {}, From 820e0cb9bc98b41bde53a5ab4846d2f383c36133 Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Tue, 28 Apr 2026 00:10:54 +0000 Subject: [PATCH 06/10] test: gate 2 more Windows-failing tests in #33593 --- tests/node_compat/config.jsonc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index 24fd1da7afde8d..2beb2473737902 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -300,7 +300,9 @@ "parallel/test-child-process-send-cb.js": {}, "parallel/test-child-process-send-type-error.js": {}, "parallel/test-child-process-send-utf8.js": {}, - "parallel/test-child-process-server-close.js": {}, + "parallel/test-child-process-server-close.js": { + "windows": false + }, "parallel/test-child-process-set-blocking.js": {}, "parallel/test-child-process-silent.js": {}, "parallel/test-child-process-spawn-args.mjs": {}, @@ -2107,7 +2109,9 @@ "parallel/test-net-autoselectfamily.js": {}, "parallel/test-net-better-error-messages-listen-path.js": {}, "parallel/test-net-better-error-messages-listen.js": {}, - "parallel/test-net-better-error-messages-path.js": {}, + "parallel/test-net-better-error-messages-path.js": { + "windows": false + }, "parallel/test-net-better-error-messages-port-hostname.js": {}, "parallel/test-net-binary.js": {}, "parallel/test-net-bind-twice.js": {}, From 11bdfad53b6e1cd7368e6c02d5f7f014e89e4bcf Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Tue, 28 Apr 2026 00:22:59 +0000 Subject: [PATCH 07/10] test: drop test-esm-loader-hooks-inspect-brk from #33593 Flaky/hangs on macos-x86_64 (warned flaky on runs 0+1, then ran >60s in serial retry). Was originally commented out in main; revert that re-enable. --- tests/node_compat/config.jsonc | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index 2beb2473737902..9a912fc26927d9 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -921,7 +921,6 @@ "parallel/test-eslint-required-modules.js": {}, // "parallel/test-esm-loader-hooks-inspect-brk.js": {}, // "parallel/test-esm-loader-hooks-inspect-wait.js": {}, - "parallel/test-esm-loader-hooks-inspect-brk.js": {}, "parallel/test-eval-strict-referenceerror.js": {}, "parallel/test-eval.js": {}, "parallel/test-event-capture-rejections.js": {}, From 7d1d73e0de536c93322814e4be08c26c2429effe Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Tue, 28 Apr 2026 00:38:47 +0000 Subject: [PATCH 08/10] test: gate test-child-process-send-utf8 on windows in #33593 --- tests/node_compat/config.jsonc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index 9a912fc26927d9..a2fa349605b655 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -299,7 +299,9 @@ "parallel/test-child-process-send-after-close.js": {}, "parallel/test-child-process-send-cb.js": {}, "parallel/test-child-process-send-type-error.js": {}, - "parallel/test-child-process-send-utf8.js": {}, + "parallel/test-child-process-send-utf8.js": { + "windows": false + }, "parallel/test-child-process-server-close.js": { "windows": false }, From 7ff2af591c3e2511c2bfc751723d381b27c5fc37 Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Tue, 28 Apr 2026 07:27:30 +0000 Subject: [PATCH 09/10] test: drop windows-failing tests from #33593 Per bartlomieju's review, drop the 10 tests that needed `windows: false` gates rather than enabling them only on non-Windows platforms. They can be re-enrolled in a separate PR once the Windows behavior is investigated. --- tests/node_compat/config.jsonc | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index a6c66a60ecf05f..d5cc7e033939de 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -250,13 +250,7 @@ "parallel/test-child-process-disconnect.js": {}, "parallel/test-child-process-double-pipe.js": {}, "parallel/test-child-process-env.js": {}, - "parallel/test-child-process-exec-any-shells-windows.js": { - "windows": false - }, "parallel/test-child-process-exec-cwd.js": {}, - "parallel/test-child-process-exec-encoding.js": { - "windows": false - }, "parallel/test-child-process-exec-env.js": {}, "parallel/test-child-process-exec-error.js": {}, "parallel/test-child-process-exec-kill-throws.js": { "windows": false }, @@ -299,12 +293,6 @@ "parallel/test-child-process-send-after-close.js": {}, "parallel/test-child-process-send-cb.js": {}, "parallel/test-child-process-send-type-error.js": {}, - "parallel/test-child-process-send-utf8.js": { - "windows": false - }, - "parallel/test-child-process-server-close.js": { - "windows": false - }, "parallel/test-child-process-set-blocking.js": {}, "parallel/test-child-process-silent.js": {}, "parallel/test-child-process-spawn-args.mjs": {}, @@ -317,9 +305,6 @@ "parallel/test-child-process-spawn-shell.js": {}, "parallel/test-child-process-spawn-timeout-kill-signal.js": {}, "parallel/test-child-process-spawn-typeerror.js": {}, - "parallel/test-child-process-spawn-windows-batch-file.js": { - "windows": false - }, "parallel/test-child-process-spawnsync-args.js": {}, "parallel/test-child-process-spawnsync-env.js": {}, "parallel/test-child-process-spawnsync-input.js": {}, @@ -610,9 +595,6 @@ "parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js": {}, "parallel/test-crypto-worker-thread.js": {}, "parallel/test-datetime-change-notify.js": {}, - "parallel/test-debug-process.js": { - "windows": false - }, "parallel/test-debugger-address.mjs": { "ignore": true, "reason": "Tests 'node inspect' CLI subcommand which Deno does not implement" @@ -1194,7 +1176,6 @@ "parallel/test-fs-ready-event-stream.js": {}, "parallel/test-fs-realpath-buffer-encoding.js": {}, "parallel/test-fs-realpath-native.js": {}, - "parallel/test-fs-realpath-on-substed-drive.js": { "windows": false }, "parallel/test-fs-realpath-pipe.js": {}, "parallel/test-fs-realpath.js": { "windows": false, @@ -1242,7 +1223,6 @@ "parallel/test-fs-util-validateoffsetlength.js": {}, "parallel/test-fs-utimes-y2K38.js": {}, "parallel/test-fs-utimes.js": {}, - "parallel/test-fs-watch-close-when-destroyed.js": { "windows": false }, "parallel/test-fs-watch-file-enoent-after-deletion.js": {}, "parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js": {}, "parallel/test-fs-watch-recursive-add-folder.js": {}, @@ -2117,9 +2097,6 @@ "parallel/test-net-autoselectfamily.js": {}, "parallel/test-net-better-error-messages-listen-path.js": {}, "parallel/test-net-better-error-messages-listen.js": {}, - "parallel/test-net-better-error-messages-path.js": { - "windows": false - }, "parallel/test-net-better-error-messages-port-hostname.js": {}, "parallel/test-net-binary.js": {}, "parallel/test-net-bind-twice.js": {}, @@ -2142,9 +2119,6 @@ "parallel/test-net-connect-options-invalid.js": {}, "parallel/test-net-connect-options-fd.js": {}, "parallel/test-net-connect-options-ipv6.js": {}, - "parallel/test-net-connect-options-path.js": { - "windows": false - }, "parallel/test-net-connect-options-port.js": {}, "parallel/test-net-connect-paused-connection.js": {}, "parallel/test-net-connect-reset-after-destroy.js": {}, From c446313a6f7a2f43b0301c53650f11bb6fb2fbc3 Mon Sep 17 00:00:00 2001 From: Nathan Whitaker Date: Tue, 28 Apr 2026 07:45:54 +0000 Subject: [PATCH 10/10] test: drop tests not directly related to it/describe alias change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per @nathanwhit's feedback — only parallel/test-runner-aliases.js depends on the new it/describe aliasing in node:test. The rest were already passing on main and will move to a separate PR. --- tests/node_compat/config.jsonc | 54 ---------------------------------- 1 file changed, 54 deletions(-) diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index d5cc7e033939de..4a82290b1ad20f 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -401,38 +401,9 @@ "reason": "Tests Node.js-specific CLI flags/options that are not supported in Deno" }, "parallel/test-client-request-destroy.js": {}, - "parallel/test-cluster-bind-privileged-port.js": {}, - "parallel/test-cluster-call-and-destroy.js": {}, - "parallel/test-cluster-child-index-dgram.js": {}, - "parallel/test-cluster-child-index-net.js": {}, - "parallel/test-cluster-concurrent-disconnect.js": {}, - "parallel/test-cluster-dgram-ipv6only.js": {}, - "parallel/test-cluster-dgram-reuse.js": {}, - "parallel/test-cluster-disconnect-before-exit.js": {}, - "parallel/test-cluster-disconnect-with-no-workers.js": {}, "parallel/test-cluster-eaddrinuse.js": {}, - "parallel/test-cluster-fork-env.js": {}, - "parallel/test-cluster-http-pipe.js": {}, - "parallel/test-cluster-invalid-message.js": {}, - "parallel/test-cluster-ipc-throw.js": {}, - "parallel/test-cluster-kill-infinite-loop.js": {}, - "parallel/test-cluster-listen-pipe-readable-writable.js": {}, - "parallel/test-cluster-net-listen.js": {}, - "parallel/test-cluster-net-reuseport.js": {}, - "parallel/test-cluster-rr-handle-close.js": {}, - "parallel/test-cluster-rr-handle-keep-loop-alive.js": {}, - "parallel/test-cluster-rr-handle-ref-unref.js": {}, - "parallel/test-cluster-rr-ref.js": {}, - "parallel/test-cluster-send-deadlock.js": {}, "parallel/test-cluster-shared-handle-bind-error.js": {}, - "parallel/test-cluster-shared-handle-bind-privileged-port.js": {}, "parallel/test-cluster-uncaught-exception.js": {}, - "parallel/test-cluster-worker-death.js": {}, - "parallel/test-cluster-worker-destroy.js": {}, - "parallel/test-cluster-worker-disconnect-on-error.js": {}, - "parallel/test-cluster-worker-isconnected.js": {}, - "parallel/test-cluster-worker-isdead.js": {}, - "parallel/test-cluster-worker-no-exit.js": {}, "parallel/test-common-countdown.js": {}, "parallel/test-common-expect-warning.js": {}, "parallel/test-common-must-not-call.js": {}, @@ -723,9 +694,6 @@ "parallel/test-dgram-close-is-not-callback.js": {}, "parallel/test-dgram-close-signal.js": {}, "parallel/test-dgram-close.js": {}, - "parallel/test-dgram-cluster-bind-error.js": {}, - "parallel/test-dgram-cluster-close-during-bind.js": {}, - "parallel/test-dgram-cluster-close-in-listening.js": {}, "parallel/test-dgram-connect-send-callback-buffer-length.js": {}, "parallel/test-dgram-connect-send-callback-buffer.js": {}, "parallel/test-dgram-connect-send-callback-multi-buffer.js": {}, @@ -782,7 +750,6 @@ "parallel/test-dgram-setTTL.js": {}, "parallel/test-dgram-udp4.js": {}, "parallel/test-dgram-udp6-send-default-host.js": {}, - "parallel/test-dgram-unref-in-cluster.js": {}, "parallel/test-dgram-unref.js": {}, "parallel/test-diagnostic-channel-http-request-created.js": {}, "parallel/test-diagnostics-channel-bind-store.js": {}, @@ -1151,7 +1118,6 @@ "parallel/test-fs-read-type.js": {}, "parallel/test-fs-read-zero-length.js": {}, "parallel/test-fs-read.js": {}, - "parallel/test-fs-readdir-buffer.js": {}, "parallel/test-fs-readdir-pipe.js": {}, "parallel/test-fs-readdir-recursive.js": {}, "parallel/test-fs-readdir-stack-overflow.js": {}, @@ -1533,10 +1499,8 @@ "parallel/test-http-response-setheaders.js": {}, "parallel/test-http-response-status-message.js": {}, "parallel/test-http-response-writehead-returns-this.js": {}, - "parallel/test-http-server-async-dispose.js": {}, "parallel/test-http-server-clear-timer.js": {}, "parallel/test-http-server-close-all.js": {}, - "parallel/test-http-server-close-destroy-timeout.js": {}, "parallel/test-http-server-close-idle-wait-response.js": {}, "parallel/test-http-server-close-idle.js": {}, "parallel/test-http-server-connection-list-when-close.js": {}, @@ -1630,7 +1594,6 @@ "parallel/test-http2-client-upload.js": {}, "parallel/test-http2-client-write-before-connect.js": {}, "parallel/test-http2-client-write-empty-string.js": {}, - "parallel/test-http2-close-while-writing.js": {}, "parallel/test-http2-compat-aborted.js": {}, "parallel/test-http2-compat-errors.js": {}, "parallel/test-http2-compat-expect-continue-check.js": {}, @@ -1682,7 +1645,6 @@ "parallel/test-http2-createserver-options.js": {}, "parallel/test-http2-date-header.js": {}, "parallel/test-http2-destroy-after-write.js": {}, - "parallel/test-http2-dont-lose-data.js": {}, "parallel/test-http2-dont-override.js": {}, "parallel/test-http2-endafterheaders.js": {}, "parallel/test-http2-error-order.js": {}, @@ -1748,7 +1710,6 @@ "parallel/test-http2-server-close-callback.js": {}, "parallel/test-http2-server-close-idle-connection.js": {}, "parallel/test-http2-server-errors.js": {}, - "parallel/test-http2-server-push-stream-errors-args.js": {}, "parallel/test-http2-server-rfc-9113-server.js": {}, "parallel/test-http2-server-rst-before-respond.js": {}, "parallel/test-http2-server-rst-stream.js": {}, @@ -1772,7 +1733,6 @@ "parallel/test-http2-short-stream-client-server.js": {}, "parallel/test-http2-single-headers-validation-disabled.js": {}, "parallel/test-http2-single-headers-validation.js": {}, - "parallel/test-http2-socket-close.js": {}, "parallel/test-http2-socket-proxy-handler-for-has.js": {}, "parallel/test-http2-status-code-invalid.js": {}, "parallel/test-http2-status-code.js": {}, @@ -1822,9 +1782,7 @@ "parallel/test-https-options-boolean-check.js": {}, "parallel/test-https-request-arguments.js": {}, "parallel/test-https-selfsigned-no-keycertsign-no-crash.js": {}, - "parallel/test-https-server-async-dispose.js": {}, "parallel/test-https-server-close-all.js": {}, - "parallel/test-https-server-close-destroy-timeout.js": {}, "parallel/test-https-server-close-idle.js": {}, "parallel/test-https-server-headers-timeout.js": {}, "parallel/test-https-server-options-incoming-message.js": {}, @@ -1867,8 +1825,6 @@ // "parallel/test-inspect-address-in-use.js": {}, // "parallel/test-inspector-inspect-brk-node.js": {}, // "parallel/test-inspector-invalid-args.js": {}, - - "parallel/test-inspect-support-for-node_options.js": {}, "parallel/test-inspector-close-worker.js": {}, // TODO(bartlomieju): times out @@ -2142,9 +2098,7 @@ "parallel/test-net-listen-close-server-callback-is-not-function.js": {}, "parallel/test-net-listen-close-server.js": {}, "parallel/test-net-listen-error.js": {}, - "parallel/test-net-listen-exclusive-random-ports.js": {}, "parallel/test-net-listen-fd0.js": {}, - "parallel/test-net-listen-handle-in-cluster-2.js": {}, "parallel/test-net-listen-invalid-port.js": {}, "parallel/test-net-listening.js": {}, "parallel/test-net-local-address-port.js": {}, @@ -2169,7 +2123,6 @@ "parallel/test-net-server-call-listen-multiple-times.js": {}, "parallel/test-net-server-capture-rejection.js": {}, "parallel/test-net-server-close-before-calling-lookup-callback.js": {}, - "parallel/test-net-server-close-before-ipc-response.js": {}, "parallel/test-net-server-close.js": {}, "parallel/test-net-server-listen-options-signal.js": {}, "parallel/test-net-server-listen-options.js": {}, @@ -2214,7 +2167,6 @@ "parallel/test-net-write-cb-on-destroy-before-connect.js": {}, "parallel/test-net-write-connect-write.js": {}, "parallel/test-net-write-fully-async-buffer.js": {}, - "parallel/test-net-write-fully-async-hex-string.js": {}, "parallel/test-net-write-slow.js": {}, "parallel/test-next-tick-doesnt-hang.js": {}, "parallel/test-next-tick-domain.js": {}, @@ -2588,7 +2540,6 @@ "parallel/test-readable-single-end.js": {}, "parallel/test-readline-async-iterators-backpressure.js": {}, "parallel/test-readline-async-iterators-destroy.js": {}, - "parallel/test-readline-async-iterators.js": {}, "parallel/test-readline-carriage-return-between-chunks.js": {}, "parallel/test-readline-csi.js": {}, "parallel/test-readline-emit-keypress-events.js": {}, @@ -3123,7 +3074,6 @@ "parallel/test-timers.js": {}, "parallel/test-tls-alert.js": {}, "parallel/test-tls-basic-validations.js": {}, - "parallel/test-tls-buffersize.js": {}, "parallel/test-tls-ca-concat.js": {}, "parallel/test-tls-cert-ext-encoding.js": {}, "parallel/test-tls-cert-regression.js": {}, @@ -3163,9 +3113,7 @@ "parallel/test-tls-invoke-queued.js": {}, "parallel/test-tls-ip-servername-forbidden.js": {}, "parallel/test-tls-js-stream.js": {}, - "parallel/test-tls-junk-closes-server.js": {}, "parallel/test-tls-keyengine-invalid-arg-type.js": {}, - "parallel/test-tls-multiple-cas-as-string.js": {}, "parallel/test-tls-net-connect-prefer-path.js": { "windows": false }, "parallel/test-tls-net-socket-keepalive-12.js": {}, "parallel/test-tls-net-socket-keepalive.js": {}, @@ -3187,10 +3135,8 @@ "parallel/test-tls-session-timeout-errors.js": {}, "parallel/test-tls-snicallback-error.js": {}, "parallel/test-tls-socket-allow-half-open-option.js": {}, - "parallel/test-tls-socket-close.js": {}, "parallel/test-tls-socket-constructor-alpn-options-parsing.js": {}, "parallel/test-tls-socket-destroy.js": {}, - "parallel/test-tls-startcom-wosign-whitelist.js": {}, "parallel/test-tls-timeout-server-2.js": {}, "parallel/test-tls-tlswrap-segfault-2.js": {}, "parallel/test-tls-transport-destroy-after-own-gc.js": {},