Skip to content
Choose a tag to compare


@sindresorhus sindresorhus released this
· 925 commits to main since this release
Choose a tag to compare

This release is one of the biggest, most feature-packed release we鈥檝e had in a long time. We have prepared lots of tasty things for you - snapshot testing, magic assert, precompiling test helpers, improvements to Babel transpilation, and more. Our team and contributors have been working hard to deliver all this goodness. We can鈥檛 wait to hear your feedback and don鈥檛 hesitate to suggest new ideas and report bugs!


Dropped support for Node.js 0.10 and 0.12

As mentioned in the 0.17.0 release notes, we鈥檙e dropping support for Node.js 0.10 and 0.12 in this release. They鈥檙e both out of maintenance mode. Time to upgrade!

Magic assert


We completely overhauled the error output to make it as easy and fast as possible to detect the source of the failure. Magic assert, as we call it internally, adds code excerpts and clean diffs for actual and expected values. If values in the assertion are objects or arrays, only a difference is displayed to remove the noise and focus on the problem. Oh, and the diff is syntax-highlighted too! If you are comparing strings, both single and multi line, AVA displays a different kind of output, highlighting the added or missing characters. Last but not least, you don鈥檛 have to update any of your tests to take advantage of this! Third-party assertion libraries, like expect, chai and others, are supported out-of-the-box as well.


Snapshot testing

We now have snapshot testing, thanks to @lithin


Snapshot testing simply saves a stringified state of some data structure and compares it on the next run. It was popularized with React component testing, but you can use it with anything that can be stringified. For example, ensuring API responses stay the same.

Precompile helper files

Previously, AVA transpiled your test files, but not your test helpers. Now we transpile helper files too! Helpers are files starting with _ or any files in a helpers directory inside the test directory. These are usually used for utilities and shared logic between test files.

Improving language support

We鈥檝e come up with a specification for how AVA handles Babel projects and may better support other languages like TypeScript. Customizing transpilation of test and helper files will be easier, and AVA will start transpiling source files too. We鈥檝e started work on this, but there are no user-facing changes yet.


  • Removed deprecated assertions (t.ok, t.notOk, t.same, t.notSame). If you haven鈥檛 migrated yet, you can do so automagically with our codemod. c010fd7
  • Removed the --source flag. Use the package.json config instead. 34bebc4
  • Support symlinked test files. 033d4dc
  • No longer using babel-runtime. Built-ins like Map and Promise are no longer replaced with polyfills. ad5122d
  • Prints a warning when test.only() is used, so you don鈥檛 mistakenly think you鈥檙e running all the tests. 22a6081
  • Prints a warning when --fail-fast is enabled, so you鈥檙e aware AVA didn鈥檛 run all your tests. 09d23f5
  • Exits with an error when --watch is used in CI, as otherwise the process would never exit, since watch mode is persistent. 0606ff7
  • Only transpile what鈥檚 needed on Node.js 6. We already did that for Node.js 4. 5158ac8
  • Flow type definition improvements: ce42fcb 314f7a0
  • TypeScript type definition improvement: 0603edc

All changes



馃挅 Huge thanks to @lithin, @ThomasBem, @leebyron, @rnkdev, @sebald, @gconaty, @jarlehansen, @LasaleFamine, @asafigan, for helping us with this release. We couldn鈥檛 have done it without you!

Get involved

We welcome new contributors. AVA is a friendly place to get started in open source. We have a great article on getting started contributing and a comprehensive contributing guide.