Skip to content

@novemberborn novemberborn released this Jun 1, 2019

Breaking changes

AVA now requires at least Node.js 8.9.4

Per the Node.js release schedule, the 6.x releases reach end of live on April 30th. Consequently we've removed support in AVA. We are now testing with Node.js 12 though. 3a4afc6

Test file and helper selection

We've been working on simplifying how test files and helpers are selected. First off, the files option now only accepts glob patterns. If you configured it with directories before, please add /**/* to get the previous behavior.

The files and sources options must now be arrays containing at least one pattern. It's no longer possible to override a default exclusion pattern, but we're looking at making these configurable separately.

AVA used to treat all files inside a helpers directory as test helpers. Finding these files could be really slow, however, and it also meant you couldn't have tests inside a helpers directory. Instead you can now specify glob paterns to find these helpers:

  "ava": {
    "helpers": [

Test files starting with an underscore are still recognized as helpers.

Files inside fixtures directories are no longer ignored, and will now be treated as test files. The watcher now also watches ava.config.js files.

AVA now also selects files ending with .spec.js when looking for tests, as well as looking in tests directories. 08e99e5 b1e54b1

The CLI now only takes file paths, not glob patterns.

We'd like some help updating our ESLint plugin as well.

Snapshots in CI

When you run tests locally and add a new snapshot, AVA automatically updates the .snap file. However if you forget to commit this file and then run your CI tests, they won't fail because AVA quietly updates the .snap file, just like it does locally.

With this release, AVA will fail the t.snapshot() assertion if it is run in CI and no snapshot could be found. 0804107

Assertion messages must be strings

AVA now enforces assertion messages to be strings. The message is only used when the assertion fails, and non-string values may cause AVA to crash. You may see test failures if you were accidentally passing a non-string message. 49120aa

Flow type definitions

We've decided to remove the Flow type definitions from AVA itself. We don't have anybody to maintain them and consequently they've become a blocker when adding features to AVA. c633cf0

We've set up a new repository from which we'll publish the definitions, but we need your help setting it up. If you use AVA and Flow, please join us in avajs/flow-typed#1.

Observable typing

Test implementations may return observables. We've updated our TypeScript definition to require these to have a Symbol.observable function. c2d8218

New features

Configurable printing depth

AVA now uses the util.inspect.defaultOptions.depth option when printing objects, so you can configure the depth. 98034fb

Specify environment variables in your AVA config

You can now specify environment variables in your config, using the environmentVariables object. a53ea15

Other changes

  • We've added UntitledMacro and UntitledCbMacro types, for macro functions that will never have a .title function. Though really this just helped simplify the type definition. Thanks @qlonik! ebf4807
  • The dependency tracking in watch mode now respects custom require hooks you install in the worker processes. Thanks @lo1tuma! cb4c809
  • The TypeScript definition once again allows test.skip(macro) ba5cd80
  • AVA now exposes some methods to our ESLint plugin, allowing our plugin to support the new test & helper file selection. 51433be

All changes



Thank you @StoneCypher, @LukasHechenberger, @lo1tuma, @htor, @alexisfontaine and @grnch. We couldn't have done this 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.

Assets 2