Node's test runner is a non-contender, at least right now.
If you've ever used any other test runner, you'll find Node's is woefully inferior. I'd say "but maybe it will get better", except I've seen the maintainer responses to several issues, and it seems they are wedded to bad architectural decisions that keep it that way.
The node test runner is perfect for small libraries without build where you pretty much ship the source code. The assertion library is actually superior to vitest’s if you don’t use spies etc. because unlike vitest’s assertions, the node ones do type narrowing correctly.
If you've ever used any other test runner, you'll find Node's is woefully inferior. I'd say "but maybe it will get better", except I've seen the maintainer responses to several issues, and it seems they are wedded to bad architectural decisions that keep it that way.