📝 The Road to QUnit 3: What's new since QUnit 2.0?
Step API, data providers, assert.propContains(), conditional skip, global hooks, and more.
qunitjs.com/blog/2026/09/20/…
QUnit 2.26 is out!
✨ Add return value to assert.rejects(), for extra assertions on the rejection value.
✨ Support local scripts in CLI --reporter option.
🧩 Add "ignoreUnhandledRejections" to ease upgrade for SAP OpenUI5 apps.
qunitjs.com/blog/2026/05/31/…
Stickers packed and ready for FOSDEM!
Message me to meet and take some!
#fosdem #fosdem2026
QUnit 2.25 is out!
Highlights from 2.24.1 and 2.25.0:
🧩 Add display of "early" errors in the HTML Reporter.
✨ New test filter callback, for parallel runners and other cool stuff. Thanks Sebastian Gbudje and @nullvoxpopuli
🐛 Fix bugs in TAP-reporter.
qunitjs.com/blog/2025/12/30/…
QUnit 2.24.0 is out!
Highlights since 2.21:
☑️ New test.if() to conditionally skip.
🏷️ Automatic labels in test.each().
📝 New stack trace formatter for CLI output
✨ There is a new QUnit Blog. You can also follow us on Mastodon or Bluesky.
github.com/qunitjs/qunit/rel…
QUnit 2.21.1 is out!
🐛 Fix bug in stacktrace cleaner.
🐛 Fix bug where a second "Hide passed" click reversed test results.
👉 Add notice about upcoming change in how assert.expect() counts steps for assert.verifySteps().
github.com/qunitjs/qunit/rel…
QUnit 2.21 is out!
☑️ New assert.closeTo() method.
For float-friendly number comparisons.
👉 Deprecate unset timeout for tests longer than 3s.
How to set a timeout? qunitjs.com/api/config/testT…
Credit to JamesMGreene for the original assert-close plugin!
github.com/qunitjs/qunit/rel…
QUnit 2.20.1 is out!
Highlights:
🐛 Fix compat with sinon.useFakeTimers in IE.
🐛 Fix hanging assert.async() after assert.timeout().
Welcome Timmy Willison as new QUnit contributor!
github.com/qunitjs/qunit/rel…
QUnit 2.20.0 is out!
Highlights:
🐛 Add type check to assert.async() parameter.
⏱ Faster internal inArray operations.
Welcome Zixin and Hareesh as first-time QUnit contributions!
github.com/qunitjs/qunit/rel…
Check out QUnitX by @izelnakri:
github.com/izelnakri/qunitx
It is is the only universal JS/TS test framework that is fast, flexible, zero dependency, and can run your test files interchangably in Node.js, browser, or Deno environments!
Guess who's number 1 on the test-runners Speedlify, for the third year in a row!
Credit to @zachleat for running it all these years! #perfmatters
speedlify.dev/test-runners/
qunitjs.com
One thing that keeps qunitjs.com lean is our approach to search.
Rather than the popular algolia/docsearch widget (~100KB), we use a fast 2KB alternative based on HTML5, progressive enhancement, no FOUC, and backed by self-hosted @typesense.
github.com/Krinkle/typesense…
QUnit 2.19.4 is out! github.com/qunitjs/qunit/rel…
Since 2.19.0:
⏱ Faster assert.deepEqual() .
⏱ Faster config.noglobals.
🐛 Fix memory release from last test.
📝 Improve API examples and fix typos.
Thanks Izel Nakri, Sergey Astapov, and others for their contributions.
QUnit 2.19 is out!
🧩 New --module CLI option. (Thanks Shachar!)
🔍 Improve accessibility and fuzziness of module filter UI.
⏱ Faster setup of the HTML toolbar. (Thanks @mixonic!)
ℹ️ Fix reported runtime to use whole milliseconds.
🐛 Fix various bugs.
github.com/qunitjs/qunit/rel…
QUnit 2.18 is out!
🧩 New assert.propContains for partial object comparison. (Thanks @izelnakri!)
🪝 New global QUnit.hooks beforeEach and afterEach.
🐛 Fix bugs for TypeScript and Windows.
🗜 Shrink npm install size by 7%.
⏱ Faster CLI watch mode.
github.com/qunitjs/qunit/rel…
QUnit 2.17 is out!
🏄♀️ New shortcut to "Rerun all failed tests".
🐛 Fix memory release for skipped module closures.
ℹ️ Improve built-in diagnostics for various failure scenarios.
Thanks to Ben Demboski, @buschtoens, Chris Krycho, and others. #qunit
github.com/qunitjs/qunit/rel…
QUnit 2.16 is out!
ℹ️ Improved color contrast.
♻️ New test.each() data provider method.
⚙️ New failOnZeroTests option.
📝 Add TAP reporter to browser mode (experimental).
🐛 Bug fixes.
Thanks to Ventuno, Brenden Palmer, and others. #qunit
github.com/qunitjs/qunit/rel…
QUnit 2.15 is out!
🐛 Fix TAP output to support cyclical objects.
🐛 Fix strict mode compat.
🕵️♂️ The filter UI now trims whitespace to improve matching.
Thanks to Zachary @ztheh, Edward @eaf4, and Nathaniel (nlfurniss) for their contributions! #qunit
github.com/qunitjs/qunit/rel…
QUnit 2.14 is out!
🏄♀️ New floating header on the test page.
ℹ️ Accessibility improvements in the HTML reporter.
🦎 Official support for @SpiderMonkeyJS runtime.
🐛 Misc bug fixes.
Thanks to Bryan Crotaz and Steve McClure for their contributions! #qunit
github.com/qunitjs/qunit/rel…
QUnit 2.13 is out!
📦 Introduce native support for ES Modules.
ℹ️ Improve logging for leaked assertions.
🐛 Fix suiteEnd event bug involving filters.
Thanks Steve McClure, Stephen Yeung, and brandonocasey for their contributions! #qunit #esmodules
github.com/qunitjs/qunit/rel…


