Currently at 1.23.1
The 1.x releases up until this point have already provided the 2.0 API (initially as a front for the old code and gradually refactored to be "real").
### Removed globals
NOTE: See **<https://qunitjs.com/upgrade-guide-2.x/>** for a detailed migration guide for code still using the deprecated pre-1.14 interfaces.
The following functionality that was deprecated in QUnit 1.x have been removed in QUnit 2.0:
* Global assert methods – Use `assert.equal` on the contextual `assert` object (parameter to `QUnit.test` callback), not global function `equal()`.
* Global test suite method – Use `QUnit.test` and `QUnit.module`, not global functions `module()` or `test()`.
* Static control flow methods – Use `assert.async()` or return a promise from `QUnit.test`, don't use static `QUnit.stop()`, `QUnit.asyncTest()`, or `QUnit.start()`.
* Static push method - Use `this.pushResult` inside an assertion method, not `QUnit.push`.
* Test assertion counts - Remove the assertCount parameter from any `QUnit.test()` call. If needed, use `assert.expect()` instead.
* Event listener – Use `QUnit.someEventName( handler )` instead of assigning a function directly, like `QUnit.someEventName = handler`.
The deprecated features in the above list have been removed in the 2.0 release. They will have to be migrated before the upgrade.
### New features
Here's an (incomplete) list of some interesting new features available since QUnit 2.0:
* Core: Improved async handling.
* Core: Improved performance of built-in assertion methods.
* Core: Support for nested modules (sub-module grouping), per-test and per-module hooks (before/beforeEach).
* Assert: Add assert.verifySteps.
* Assert: Add assert.step.
* Assert: Add assert.timeout for setting per-test timeout durations.
* CLI: Introduce a new QUnit CLI
* .. more at <https://github.com/qunitjs/qunit/blob/2.4.0/History.md>