Feature: Support native node:test runner#6020
Conversation
Signed-off-by: will Farrell <willfarrell@proton.me>
Signed-off-by: will Farrell <willfarrell@proton.me>
Signed-off-by: will Farrell <willfarrell@proton.me>
Signed-off-by: will Farrell <willfarrell@proton.me>
Signed-off-by: will Farrell <willfarrell@proton.me>
|
@willfarrell, thanks for your work and idea. Have you tried the tap-runner? It was the recommended way of running Stryker with the node-runner. It is a small wrapper and might even be slightly faster. A small PoC can be found in the e2e tests. If there is a reason why the tap runner doesn't work or why your approach is better, I would be happy to review and merge this PR. 🙏 |
Signed-off-by: will Farrell <willfarrell@proton.me>
|
Thanks for taking a look! Yes, I tried the tap-runner first (including the 1. Per-test granularity instead of per-file. The tap-runner's unit of work is the test file: test ids are file names, 2. One process per run instead of one per file. The tap-runner spawns a fresh I benchmarked both on the same projects (same machine,
The gap grows with test-file count: every surviving mutant costs the tap-runner one Node startup per covering file, while this runner pays it once per mutant. Why not extend the tap-runner instead? I considered it, but every feature above requires in-process Happy to walk through any part of the implementation, thanks for reviewing! 🙏 PS just ran an audit using Fable 5, and added in support foe skip. Good to review. |
…nner Signed-off-by: will Farrell <willfarrell@proton.me>
|
Cool, thanks for your explanation. I now understand that this is a big improvement over the current |
Has been tested across ~12 different OSS repos I maintain, working really well. I've see 2-7x speed perf improvements and 50% reduction in CPU use compared to
command.Closes #5421
AI disclosure: Initial PoC by Claude Opus 4.8, Reviewed/Edited/Tested by human
cc @m-ronchi @bsene @bausmeier