NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4147 most downloaded on npm
uvu is an extremely fast and lightweight test runner for Node.js and the browser
Last release 4 years ago
no release in 18 months
Release timing varies
gaps range from 8 days to 8 months
Some releases are documented
notes for 19 of 41 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
50 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
(uvu): Ensure tests fail if have process.exit or unresolved Promises (#206, #207): 70b59e7 _Thank you @rictic~!_
(uvu): Ensure tests fail if have process.exit or unresolved Promises (#206, #207): 70b59e7
Thank you @rictic~!
(uvu/diff): Print BigInts within JSON correctly (#186): d764c08
Thank you @rdmurphy~!
(uvu): Attach globalThis.UVU_DEFER to isCLI bool guard: 213efb5
(uvu/run): Move uvu imports into function call: f735f5a
Both of these commits enable (some) programmatic-style uvu usage.
// Basic ESM programmatic usage
// ---
let { run } = await import('uvu/run');
let { parse } = await import('uvu/parse');
// find all "src/**/*.test.ts" files
let { suites } = await parse('src', /\.test.ts$/, {
require: ['tsm'],
});
try {
await run(suites);
} catch (err) {
console.error(err.stack || err);
process.exitCode = 1;
}
Note: This will still be greatly simplified in a future release (#113)
setup-node image version for CI: 2831a14Full Changelog: https://github.com/lukeed/uvu/compare/v0.5.5...v0.5.6
(uvu/parse): Support native ESM mode: 870e6aa _Previously contained unsupported require statement within the ESM version._
uvu/parse): Support native ESM mode: 870e6aa
Previously contained unsupported require statement within the ESM version.Full Changelog: https://github.com/lukeed/uvu/compare/v0.5.4...v0.5.5
(types) Correct suite.run return type (#190): 86725b4 _Thank you @andrew0~!_
(types) Correct suite.run return type (#190): 86725b4
Thank you @andrew0~!
(types): support TS "Node16" module resolution (#209, #210): b84b116 Thank you @bgotink & @tom-sherman~!
Full Changelog: https://github.com/lukeed/uvu/compare/v0.5.3...v0.5.4
(diff) Prevent error when comparing null w/ Array (#178, #185): c6ef0b7 _Thank you @marvinhagemeister!_
(diff) Prevent error when comparing null w/ Array (#178, #185): c6ef0b7
Thank you @marvinhagemeister!
(cli/parse) Ignore ^.git by default: ff50a71
(cli) Check --ignore patterns before dir access (#111): 730e7be
assert.throws example for async function testing (#172): 957fa25
Thank you @nohea~!Full Changelog: https://github.com/lukeed/uvu/compare/v0.5.2...v0.5.3
(uvu) Improve deferral for single-file execution (#145): 2a3a598 _This allows top-level await when using the node approach._
(uvu) Improve deferral for single-file execution (#145): 2a3a598
This allows top-level await when using the node <file> approach.
(uvu/diff): Handle undefined|null vs object values (#94): 0acb895
(uvu/assert): Normalize windows newlines (\r\n) for snapshot & fixture helpers: 2ec6735
(uvu/assert): Rewrite dedent with for-loop (#117): b84c0a4
Thank you @bartveneman~!
(uvu/assert): Include TypeScript asserts typehint for assert.ok method (#105): a1f9bfb
Thank you @ryanatkn~!
(types): Replace VoidFunction type (#89): 1d75357
NEW: Add /examples/esbuild demo (#119): d56753e, 8792e3b
Thank you @osdevisnot~!
NEW: Add /examples/typescript.module example: 75b6573
Shows how to use TypeScript tests in a file that also uses ESM via "type": "module" source.
Simplify the /examples/typescript demo: 44a437d
Replaces ts-node usage with tsm instead!
(docs): Add assert.match and assert.not.match info (#118): 271b7f1
Thank you @aldy505~!
(docs): Remove duplicate esm content (#83): ae7fd4e
Thank you @apfelbox~!
Full Changelog: https://github.com/lukeed/uvu/compare/v0.5.1...v0.5.2
(core) Use performance.now in supporting browsers (#70): d126d2c _Results in higher fidelity measurements; avoids most fakerTimer issues._
(core) Use performance.now in supporting browsers (#70): d126d2c
Results in higher fidelity measurements; avoids most fakerTimer issues.
(core) Move QUEUE to globalThis scope (#76): e419ff9
Guarantees that all tests reside in same queue, even if both uvu CommonJS and ESM variants are loaded.
(core) Force CommonJS mode when any -r/--require option is defined (#72, #78)
Ensures that any desired --require flags actually can be invoked. Native ESM does not trigger require hooks.
(parse) Return requires boolean in result: 4288f22
(parse) Add opts.cwd default: 838646f, bcda8c9
(types) Make uvu/parse arguments optional: 2762c1c
uvu version within "typescript" example: 6169070Added Native ESM Support 🎉 (#7, #68): 5ae6740 _Promoted the next-tagged release to stable. Thank you all who helped me test it_ 🙇
Added Native ESM Support 🎉 (#7, #68): 5ae6740
Promoted the next-tagged release to stable. Thank you all who helped me test it 🙇
As mentioned in #7, maintaining legacy Node.js support was a high priority. Mission accomplished!
With this release, uvu retains Node.js 8.x and 10.x support. 💪 Native support for ESM is detected before invoked, only attempting to import test files when it's supported.
Check out the "esm.dual" example to find out how to run the same tests across varying Node versions.
Add "esm.mjs" example: 5ae6740
Shows how to use Native ESM within .mjs files. (Node 12+ only)
Add "esm.loader" example: 5ae6740
Demo with -r esm require hook for ESM polyfill
Add "esm.dual" example: 5ae6740 Shows how to use run tests with Native ESM (Node 12+) without neglecting older Node.js runtimes.
Nothing published for this version
Nothing published for this version
(bin) Employ stricter logic for isNode check (#63): d736cef _Thank you @zigomir_
isNode check (#63): d736cef
Thank you @zigomirRemove immutability protection on context object (#39, #58): 3d3076d
Remove immutability protection on context object (#39, #58): 3d3076d
Previously, uvu only allowed suites' context to be modified within suite hooks. It would then pass in a read-only copy into the test handlers. The idea was to help ensure that the tests weren't unexpectedly relying on mutated context values between tests. However, in practice, this caused more problems than it prevented (#39, #58).
So now, uvu passes around the original context object, allowing your hooks and tests to read/write/whatever to context. The warning has also been removed. You're in full control~!
context object (#55): 28d12e9
Allows your hooks and/or tests to be made aware of which suite+test combination was executed.
Every context object will be given __suite__ and __test__ keys, which will be the respective name (string) values.
Thank you @maraisr~!Test interface (#57): 1772435
Thank you @maraisrNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
(diff) Allow comparison with empty strings (#59): a1a5621 _Thank you @matej21_
(diff) Allow comparison with empty strings (#59): a1a5621 Thank you @matej21
(types) Rename context parameter within suite definition (#56): d2f2504
Thank you @maraisr
(bin) Bail with non-zero exit code on boot/require error (#50): 973eb04
require error (#50): 973eb04bundt version: dba97fftotalist version: c916972dequal version: 4cb9310, 083e2bdindex.d.ts into separate files: 4786a85(diff) Apply undefined and NaN preservation to Array value diff'ing (#44): 80172fa
undefined and NaN preservation to Array value diff'ing (#44): 80172fa(diff) Preserve undefined and NaN values in diff details (#42): 4853b49 _Circumvent JSON.stringify which naturally hides/alters these values -- missin
(diff) Preserve undefined and NaN values in diff details (#42): 4853b49
Circumvent JSON.stringify which naturally hides/alters these values -- missing info!
(types) Move Arrayable and Promisable types into uvu namespace: d1f1b5f
Avoids potential conflict(s) with user and/or third-party types.
(uvu) Print err.operator property only if it exists (#41): 18ada58
Allows for custom and/or plain throw new Error in tests without visual artifact.
Thank you @lukeshiru~!
(assert): Added assert.match and assert.not.match operators (#34): 74d1d84
assert.match and assert.not.match operators (#34): 74d1d84uvu to run in the browser without process shims (#37): 878524cSupport Suite Context (#23, #30): b5ddb50
jest with --env=node flag for fairplay (#28): f9f268c(diff) Ensure multi-line string vs non-string does not throw TypeError (#26): e9f5148
TypeError (#26): e9f5148TypeError (#26): 4235ed5/docs/watch.md documentation (#17): 941a652/examples/coverage within "Coverage" document: 08b3d64/docs/api.assert.md document (#25): 37056bbimport statements within "svelte" example: c03a226import statements within "preact" example: 52fdb90"preact" example sets up valid HTML (#21): 5bc997dignore-paths config for CI triggers: 94e541c(cli) Allow --require hooks to local files: 43322ff
--require hooks to local files: 43322ff(diff) Fix comma placement within complex-Array diffs: 29070e4
import (#15): 68d1ff7--bail help text: ae6eb8eAdded `before.each` and `after.each` suite hooks (#9, #11): c3965c8 _Documentation available here. Thank you @hyanmandian~!_
Added before.each and after.each suite hooks (#9, #11): c3965c8
Documentation available here.<br> Thank you @hyanmandian~!
Track and report "Skipped" test count (#8): 54887d5
fix(assert): no diff for throws assertion: 0a2db3e
Hide the true vs false report; useless
fix(assert): use compare for is method: 9c87085
Using compare allows for improved string reports (proxy chars or lines)
suite.only and suite.skip tests: 24ace44not.* method tests: cbbff82, 1240fd0, de6b684, 159566d, ae96293, 9792496throws tests & docs: cdb8d28package.json keys: a63deb8Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →