Add official Node.js core module test harness#693
Open
brandonpayton wants to merge 132 commits into
Open
Conversation
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| libcurl | wasm32 | built | 0dc752cd |
| libcxx | wasm32 | built | ba88376d |
| libcxx | wasm64 | built | eef98246 |
| libpng | wasm32 | built | 300aeaae |
| libxml2 | wasm32 | built | d9edfdfc |
| libxml2 | wasm64 | built | f33ac92c |
| openssl | wasm32 | built | 0b87d133 |
| openssl | wasm64 | built | 92a2f35f |
| sqlite | wasm32 | built | 092822d5 |
| sqlite | wasm64 | built | 93719642 |
| zlib | wasm32 | built | ad546e23 |
| zlib | wasm64 | built | f6c287f7 |
| bc | wasm32 | built | e43a76d5 |
| bzip2 | wasm32 | built | 3f1adcf1 |
| coreutils | wasm32 | built | 0cbae556 |
| curl | wasm32 | built | 4f7327d2 |
| dash | wasm32 | built | 65e39bf3 |
| diffutils | wasm32 | built | 6c59fc70 |
| dinit | wasm32 | built | afe9bac1 |
| fbdoom | wasm32 | built | 19779c73 |
| file | wasm32 | built | 6f22edb6 |
| findutils | wasm32 | built | 62ddd144 |
| gawk | wasm32 | built | 42462259 |
| git | wasm32 | built | 83f4bbe7 |
| grep | wasm32 | built | 2c663f51 |
| gzip | wasm32 | built | 0ee50c18 |
| kandelo-sdk | wasm32 | built | 4629b05b |
| kernel | wasm32 | built | 12626ee2 |
| less | wasm32 | built | 293fbae1 |
| lsof | wasm32 | built | e8f4435b |
| m4 | wasm32 | built | fdbfa05c |
| make | wasm32 | built | 3be6a8d2 |
| mariadb | wasm32 | built | 892b315d |
| mariadb | wasm64 | built | 7fbc6075 |
| msmtpd | wasm32 | built | f9952440 |
| nano | wasm32 | built | 98c4c429 |
| ncurses | wasm32 | built | 0329c51d |
| netcat | wasm32 | built | 71425a0e |
| nginx | wasm32 | built | 5bbf80bc |
| php | wasm32 | built | 454ac774 |
| posix-utils-lite | wasm32 | built | b39226ea |
| sed | wasm32 | built | 66417fe9 |
| spidermonkey | wasm32 | built | 0da8b996 |
| tar | wasm32 | built | e5e26250 |
| tcl | wasm32 | built | b48f372a |
| unzip | wasm32 | built | ae0fbecc |
| userspace | wasm32 | built | f1ea1901 |
| vim | wasm32 | built | 2415d302 |
| wget | wasm32 | built | d72b84ef |
| xz | wasm32 | built | 535357d4 |
| zip | wasm32 | built | d3aff965 |
| zstd | wasm32 | built | 5272fa6e |
| bash | wasm32 | built | a8ab2cc6 |
| mariadb-test | wasm32 | built | 163a4d4f |
| mariadb-vfs | wasm32 | built | 31398107 |
| mariadb-vfs | wasm64 | built | 596c59a1 |
| nethack | wasm32 | built | 0b797814 |
| node | wasm32 | built | 31a9ced2 |
| spidermonkey-node | wasm32 | built | 2678fd04 |
| vim-browser-bundle | wasm32 | built | dc90bfc0 |
| nethack-browser-bundle | wasm32 | built | 45c13d37 |
| rootfs | wasm32 | built | 2cffd99a |
| shell | wasm32 | built | 3910288d |
| lamp | wasm32 | built | 70772eea |
| node-vfs | wasm32 | built | 83b8330b |
| wordpress | wasm32 | built | 7b414f4e |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
…81ua' into HEAD # Conflicts: # packages/registry/node-compat/bootstrap.js # packages/registry/spidermonkey/test/spidermonkey-node-bootstrap-source.test.ts
Expose buffer.kMaxLength and buffer.constants.MAX_LENGTH from the Node compatibility bootstrap so upstream buffer allocation checks use SpiderMonkey's wasm32 typed-array limit instead of undefined. Add SpiderMonkey Node compatibility coverage for the kMaxLength overflow allocation assertion and bump the package revision because bootstrap.js is a build input.
# Conflicts: # packages/registry/node-compat/bootstrap.js # packages/registry/spidermonkey/test/spidermonkey-node-bootstrap-source.test.ts
Preserve existing URL.search percent escapes while encoding raw search characters, and ensure URLSearchParams values are serialized after USVString normalization so unpaired surrogates become U+FFFD. Add node-compat and SpiderMonkey bootstrap regressions, repair the SpiderMonkey shell patch so it applies cleanly from a fresh source extract, and bump the SpiderMonkey package revision.
…o HEAD # Conflicts: # packages/registry/node-compat/bootstrap.js # packages/registry/spidermonkey/build.toml # packages/registry/spidermonkey/test/browser/spidermonkey-browser-stress.spec.ts # packages/registry/spidermonkey/test/spidermonkey-node-compat.test.ts
…ttic/kandelo into HEAD
…m:Automattic/kandelo into HEAD # Conflicts: # packages/registry/node-compat/bootstrap.js # packages/registry/spidermonkey/test/spidermonkey-node-compat.test.ts
… into refinery/kad-wisp-2hf
…8td3f' into refinery/kad-wisp-7ms
…8l7gu' into refinery/kad-wisp-tlh
…3' into refinery/kad-wisp-dtb # Conflicts: # packages/registry/spidermonkey/build.toml
…5' into refinery/kad-wisp-3xs # Conflicts: # packages/registry/node-compat/bootstrap.js # packages/registry/spidermonkey/build.toml # scripts/node-core-official-runner.ts # tests/package-system/node-core-official-runner.test.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds an official Node.js core JavaScript test harness for Kandelo's
SpiderMonkey-backed Node-compatible runtime. The harness is pinned to upstream
nodejs/nodev22.0.0at peeled commit12fb157f79da8c094a54bc99370994941c28c235and can run the full upstreamtest/parallel/test-*.jssuite on both Kandelo hosts.The branch includes:
scripts/run-node-core-official-tests.shandscripts/node-core-official-runner.ts.test/parallel/test-*.js; the checked-inmanifest is now only for smoke, targeted reruns, and explicit SKIP/XFAIL
support-boundary entries.
generated prelude, and runtime wasm through a same-origin Vite route.
test-runs/node-core-official-*.discovered while expanding from the original smoke manifest to the full suite.
Validation Status
Pinned source:
https://github.com/nodejs/node.gitv22.0.0ec49bec48284ab642db1d109d917c6ae3b695c1312fb157f79da8c094a54bc99370994941c28c235test/parallel/test-*.js3382Authoritative full-suite correction run from
kad-nct.17:test-runs/node-core-official-node-full-kad-nct17/test-runs/node-core-official-browser-full-kad-nct17-host-timeout/Browser authority check from
kad-nct.17:test-runs/node-core-official-node-sentinel-kad-nct17/test-runs/node-core-official-browser-sentinel-kad-nct17/The browser false-PASS issue was tracked by
kad-nct.18and later fixed, butthis PR body does not claim an authoritative browser full-suite PASS/FAIL/SKIP
count until a post-fix browser full-suite rerun is recorded.
Latest committed Node-host full-suite rerun from
kad-nct.48:test-runs/node-core-official-node-full-kad-nct48-rerun/kad-nct.48reran the Node-host full suite after the first wave of semanticfixes had landed, then split the remaining tail into narrower follow-up beads.
It supersedes the original 10-test smoke-manifest numbers for PR status, but it
is still not a final green run.
The original 10-test manifest artifacts remain useful smoke history only:
test-runs/node-core-official-node-final/test-runs/node-core-official-browser-final/Those selected-manifest counts must not be used as this epic's pass/fail/skip
status.
Failure Tracking
The first authoritative Node-host full run (
kad-nct.17) grouped failures intotracked follow-up beads:
test/commonunexpected global leak assertionkad-nct.11kad-nct.21kad-nct.23kad-nct.23, plus selected narrow bugskad-nct.12-kad-nct.15http.createServermissingkad-nct.20kad-nct.19cluster.forkmissingkad-nct.22child_process.fork/cp.forkmissingkad-nct.22kad-nct.24The later
kad-nct.48rerun split the remaining one-off tail into:kad-nct.61: self-exec CLI option and exit statuskad-nct.62:node:testrunner behaviorkad-nct.63: bootstrap and preload semanticskad-nct.64:test/commonhelper diagnosticskad-nct.65:--disable-protodelete/throw modeskad-nct.66: dotenv /--env-file/NODE_OPTIONSkad-nct.67:ostmpdir, homedir, priority, andavailableParallelism()kad-nct.68: punycode API surfacekad-nct.69: source-map API surfacekad-nct.70: querystring residualskad-nct.71: V8-only SharedArray conveyor support boundarykad-nct.72: residual HTTPIncomingMessage/OutgoingMessagesemanticsSee
docs/plans/2026-06-13-node-core-full-suite-kad-nct17.md,docs/plans/2026-06-14-node-core-semantic-mismatch-triage-kad-nct23.md,docs/plans/2026-06-14-node-core-timeout-triage-kad-nct24.md, anddocs/plans/2026-06-14-node-core-tail-triage-kad-nct48.mdfor the exactcommands, artifacts, and triage detail.
Unsupported And Excluded Scope
The full-suite harness discovers all upstream
test/parallel/test-*.jsfiles bydefault. Exclusions are not made by narrowing selection; they are represented as
explicit manifest
SKIPorXFAILentries only after triage.Current unsupported categories include:
.nodeloads, andprocess.dlopen().V8-specific stack/format details, and experimental V8-only flags such as
--harmony-struct/ SharedArray conveyor behavior.host-specific signal/job-control expectations unless a later bead expands the
supported behavior.
and Python
tools/test.pyorchestration.internal/test/bindingunless represented asexplicit support-boundary skips.
Current Review Note
This PR is not claiming the full Node.js core JavaScript suite is passing. It
adds the harness, records the full-suite attempts, and tracks the remaining
kernel/platform/runtime work with concrete beads. The hard numbers above replace
the obsolete selected 10-test smoke status that was present before the epic scope
correction.