The built-in runner became usable for a package of plain JavaScript at the point it gained watching and a coverage report.
$ node --test --watch
$ node --test --experimental-test-coverage
ℹ tests 88
ℹ pass 88
ℹ duration_ms 412
file | line % | branch % | funcs %
src/slugify.js | 100.0 | 94.11 | 100.00
# dependencies removed from this package: 41
Forty-one transitive dependencies gone from a package that does string manipulation is the argument, and it is only available for code that needs no transform and no browser environment. Anything with TypeScript or JSX still needs a build step, at which point a runner that already understands it is less friction than a loader hook.