Open greenkeeper[bot] opened 8 years ago
Update to this version instead 🚀
The new version differs by 63 commits .
2623c11
0.18.0
a45cdb9
Mention magic assert in the readme
c980f97
Fix crash with snapshot testing
34bebc4
Removed --source
CLI flag (#1215)
ca016c0
Remove the repeating
dependency
751d2a8
Cut testing time of AVA itself by more than half
b3eaf30
Bump dependencies
aa1b8bb
Finish ES2015ifying the codebase \o/
c9e6e6f
Magic assert (#1154)
9616dde
Improve metadata checks (#980)
173da28
Improve error message for watch mode in CI (#1208)
872d2ed
Various minor tweaks
2bdf72a
Bump lodash.isequal
(#1206)
0606ff7
Exit with error if --watch is used in CI (#1203)
83937bf
Some tweaks to the TS make file
There are 63 commits in total. See the full diff.
Update to this version instead 🚀
Many bug fixes for snapshot testing, magic assert, and the type definitions: v0.18.1...v0.18.2
The new version differs by 28 commits .
98dded5
0.18.2
7cba283
Speed up flow check (#1241)
d47c5c8
Document that deepEqual() uses lodash.isequal
2ff56ce
Don't call toJSON() when formatting values
795f097
@ava/pretty-format@^1.1.0
9cea60d
Ensure test run failures crash worker (#1265)
f3b60f4
Code excerpt fixes (#1271)
8d6f9bc
Fix typo in babelrc docs
3d75834
Remove Notes section from babelrc documentation
4f87059
Ensure watcher rethrows logger errors
da68f29
Simplify failure output - fixes #1072 (#1234)
2c683b9
Clean up API tests (#1258)
8a8669c
Generate HTML coverage reports (#1259)
87ea70f
Ensure TAP reporter test does not write to stderr (#1240)
09a4765
Avoid helper compilation during API tests
There are 28 commits in total. See the full diff.
Update to this version instead 🚀
Since our last minor release, @novemberborn has worked tirelessly on refactoring big parts of the codebase to be more correct and readable, while squashing many bugs. We've also added multiple detections that will prevent user mistakes.
We released snapshot support with v0.18.0
, but unfortunately it didn’t work. That’s fixed now. Since we’re using jest-snapshot
the output will look a little different from AVA’s other assertions. Most notably the output will not be colored.
Sometimes you write a test that accidentally passes, because your assertion was never run. For example, the following test passes if getAnimals()
returns an empty array:
test('unicorn', t => {
for (const animal of getAnimals()) {
t.is(animal, 'unicorn');
}
});
AVA now fails your test if no assertions were run. This can be a problem if you use third-party assertion libraries, since AVA cannot detect when those assertions pass. You can disable this behavior by setting the failWithoutAssertions
option to false
in AVA's package.json
configuration.
t.throws()
and t.notThrows()
assertions (BREAKING)Various improvements have been made to these assertions. Unfortunately this does include some breaking changes.
Calling these assertions with an observable or promise makes them asynchronous. You now need to await
them:
const promise = Promise.reject(new TypeError('🦄'));
test('rejects', async t => {
await t.throws(promise);
});
Previously, these would return a promise that was rejected if the assertion failed. This leaked AVA’s internal assertion error. Now they’ll fulfill their returned promise with undefined
instead (d56db75). You typically won’t notice this in your test.
We’ve improved how we detect when t.throws()
and t.notThrows()
are used incorrectly (d924045). This might be when, rather than passing a function, you call it:
test('throws', t => {
t.throws(throwingFunction());
});
You can now use await
and yield
in the argument expressions (e.g. t.throws(await createThrowingFunction())
. The instructions on how to use these assertions correctly are now shown with the test failure, instead of being written to the console as your tests run.
Incorrectly using these assertions now always causes your test to fail.
Stack traces are now correct, even if used asynchronously (f6a42ba). The error messages have been improved for when t.throws()
fails to encounter an error, or if t.notThrows()
does (4463f38). If t.notThrows()
fails, the encountered error is shown (22c93ed).
Actual and/or expected values are now included in the magic assert output, with helpful labels that are relevant to the failing assertion.
AVA can now detect when an asynchronous test is hanging (880e87e).
Note that this may not work if your code is listening on a socket or is using a timer or interval.
We’re now resolving Babel options ahead of time, using hullabaloo-config-manager
. This fixes long-standing issues with relative paths in AVA’s "babel"
options in package.json
files (#707). It also means we’re better at recompiling test and helper files if your Babel config changes or you update plugins or presets.
t.regex()
and t.notRegex()
are now validated. f062981We 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.
The new version differs by 65 commits .
8f80ed1
0.19.0
054d39b
Fix get-port usage
affbb45
Fail tests that finish with pending assertions
2e48970
Remove unnecessary test to verify throws/notThrows return promises
d2a294d
Reword error message for when assertions are used after test has finished
ecdadfa
Improve Babel recipe (#1290)
146c3e2
Set default color config based on supports-color
2283247
Document --color CLI flag
b581983
Don't highlight formatted values with --no-color
941c42e
Bump hullabaloo-config-manager
57fd051
Make snapshots usable again
48b892a
Refactor Runner
f23c17d
Remove mention of stage-2 in readme (#1325)
d924045
Integrate with improved throws helper
5e7ea9a
Print error message before formatted assertion
There are 65 commits in total. See the full diff.
Update to this version instead 🚀
A bugfix release. See 0.19.0
for full release notes.
The new version differs by 5 commits .
4cc3403
0.19.1
d169f0e
Fix context for beforeEach and afterEach hooks in Flow type definition file (#1344)
bd81ef4
Fix TypeScript definition for callback tests
6224f31
Set up regression testing for TypeScript
d27bc8f
Avoid MaxListenersExceededWarning in Sequence
See the full diff.
Update to this version instead 🚀
Today’s release is very exciting. After adding magic assert and snapshot testing we found that these features sometimes disagreed with each other. t.deepEqual()
would return false
, yet AVA wouldn’t show a diff. Snapshot tests cared about Set
order but t.deepEqual()
didn’t. @novemberborn came to the realization that comparing and diffing object trees, and doing so over time with snapshots, are variations on the same problem. Thus he started ConcordanceJS, a new project that lets you compare, format, diff and serialize any JavaScript value. This AVA release reaps the fruits of his labor.
Magic assert will now always show the difference between actual and expected values. If an unexpected error occurs it’ll print all (enumerable) properties of the error which can make it easier to debug your program.
More details of an object are printed, like the constructor name and the string tag. Buffers are hex-encoded with line breaks so they’re easy to read:
t.deepEqual()
improvementst.deepEqual()
and t.notDeepEqual()
now use concordance
, rather than lodash.isequal
. This changes what values AVA considers to be equal, making the t.deepEqual()
assertion more predictable. You can now trust that all aspects of your objects are compared.
Object wrappers are no longer equal. The following assertion will now fail:
t.deepEqual(Object(1), 1); // fails
For Map
and Set
objects to be equal, their elements must now be in the same order:
const actual = new Set(['hello', 'world']);
t.deepEqual(actual, new Set(['hello', 'world'])); // passes
t.deepEqual(actual, new Set(['world', 'hello']) // fails
With this release AVA will compare all enumerable properties of an object. For an array this means that the comparison considers not just the array elements. The following are no longer considered equal:
const actual = [1, 2, 3];
const expected = [1, 2, 3];
expected.also = 'a property';
t.deepEqual(actual, expected); // fails
The same goes for Map
and Set
objects, errors, and so forth:
const actual = new TypeError('Bad value');
const expected = new TypeError('Bad value');
expected.value = 41;
t.deepEqual(actual, expected); // fails
You used to be able to compare Arguments
object to an object literal:
const args = (function() { return arguments; })('hello', 'world');
t.deepEqual(args, {0: 'hello', 1: 'world'}); // now fails
Instead you must now use:
const args = (function() { return arguments; })('hello', 'world');
t.deepEqual(args, ['hello', 'world']); // passes
(Of course you can still compare Arguments
objects to each other.)
New in this release is the ability to compare React elements:
t.deepEqual(<HelloWorld/>, <HelloWorld/>);
const renderer = require('react-test-renderer');
t.deepEqual(renderer.create(<HelloWorld/>).toJSON(), <h1>Hello World</h1>);
Snapshots too now use concordance
. This means values are compared with the snapshot according to the same rules as t.deepEqual()
, albeit with some minor differences:
Argument
objects can only be compared to Argument
objectsNote that Node.js versions before 6.5 cannot infer names of all functions . AVA will pass a snapshot assertion if it determines the name information is unreliable.
AVA now saves two files when snapshotting. One, ending in the .snap
extension, contains a compressed serialization of the expected value. The other is a readable Markdown file that contains the snapshot report. You should commit both to source control. The report file can be used to see what is in your snapshots and to compare snapshot changes over time.
Try it out with our snapshot example! Or check out an example snapshot report.
The snapshot file location now follows your test layout. If you use a test
folder, they’ll be placed in test/snapshots
. With __tests__
they’ll be placed in __tests__/__snapshots__
. And if you just have a test.js
in your project root the snapshot files will be written to test.js.snap
and test.js.md
. You may have to manually remove old snapshot files after installing this new AVA version. ebd572a
Improved snapshot support in watch mode
In watch mode, AVA now watches for changes to snapshot files. This is handy when you revert changes while the watcher is running. Snapshot files are correctly tracked as test dependencies, so the right tests are rerun. Typing u
, followed by Enter
updates the snapshots in the tests that just ran. (And the watcher won’t rerun tests when snapshots are updated.) 87eef84 dbc78dc f507e36 50b60a1
AVA 0.19 already worked great with Node.js 8, and we’ve made it even better by removing unnecessary Babel transpilations in our stage-4
preset. We’re now also forwarding the --inspect-brk
flag for debugging purposes. e456951 a868b02
We’ve added new recipes and improved others:
browser-env
c01ac05--concurrency
without a value now causes AVA to exit with an error 8c35a1at.throws()
with a resolved promise now prints a helpful error message dfca2d9t.title
accessor has been documented. 549e99bWe 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.
The new version differs by 63 commits.
854203a
0.20.0
652705b
Add more screenshot fixtures
9d3b1ba
Deep update of XO and its dependencies
8d09ba5
Link to ava-snapshot-example
2360256
Redo all of the screenshots
589489d
Meta tweaks
f507e36
Add command for updating snapshots in watch mode (#1413)
87eef84
Automatically watch for snapshot changes
a141033
concordance@2
f62c137
Update readme
0e82f8f
Add integration test for appending to an existing snapshot file
ebd572a
Determine snapshot directory by where the test is located
dbc78dc
Treat loaded snapshot files as test dependencies
50b60a1
Track snapshot files touched during test run, ignore in watcher
6d3c279
Include dirty sources in watcher debug output
There are 63 commits in total.
See the full diff
Update to this version instead 🚀
This is primarily a bug fix release, but some features did sneak in:
npm
2b4e35dThis release includes the following patches:
t.deepEqual()
and magic assert diffs 9e4ee3fBuffer
APIs that are unavailable in Node.js releases older than 4.5 d0fc8c9t.throws()
promise return value to be any
4a769f8test()
so macros are compatible with the latest flow-bin
e794e73We 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.
The new version differs by 17 commits.
a1afbe3
0.21.0
f9b865a
Update safe-buffer in package-lock.json
d0fc8c9
Avoid directly using newish Buffer APIs (#1448)
9e4ee3f
Upgrade concordance (#1450)
761f7f7
Update expected package.json version in readme (#1449)
e794e73
Resolve strict checking of function call arity (#1441)
1cbcb06
Revert "Handle package-lock.json churn"
8d981bf
Handle package-lock.json churn
c09462c
Assume npm 5.2.0 during development and CI
2b4e35d
Add an additional npm-based recipe for Jetbrains IDEs (#1444)
4a769f8
Update flow def for AssertContext.throws to match typescript def (#1443)
3f6e134
Include raw actual and expected objects in AssertionError (#1432)
0069a7e
Remove non-existent npm run script in maintaining.md (#1434)
e58e96e
Minor readme tweak (#1422)
5ae434a
Bump dependencies
There are 17 commits in total.
See the full diff
Update to this version instead 🚀
There's but a few commits in this release, but we've made a big change to how AVA manages its test workers 👩🏼🔬👨🏼🏭👨🏿🚀👨🏻⚕️👩🏽💼.
We now cap the number of concurrent workers to the number of CPU cores on your machine. Previously AVA started workers for each test file, so if you had many test files this could actually bring things to a halt. 465fcec
You can still customize the concurrency by setting the concurrency
option in AVA's package.json
configuration, or by passing the --concurrency
flag. We've also beefed up input validation on that flag. b6eef5a
Unfortunately this does change how test.only()
behaves. AVA can no longer guarantee that normal tests won't run. For now, if you want to use test.only()
, you should run tests from just that file. We have an open issue to add an --only
flag, which will ensure that AVA runs just the test.only()
tests. If you'd like to help us with that please head on over to #1472.
t.log()
We've also added t.log()
, which lets you print a log message contextually alongside the test result, instead of immediately printing it to stdout
like console.log
. 14f7095
t.notThrows()
example has been clarified 57f5007We 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.
The new version differs by 10 commits.
dd9e8b2
0.22.0
b6eef5a
Fail hard when --concurrency
is set to invalid values (#1478)
57f5007
Fix typo in t.notThrows
example (#1486)
d8c21a6
Update debugging with webstorm recipe (#1483)
14f7095
Implement t.log() (#1452)
e28be05
Fixed makeApp() in endpoint testing recipe (#1479)
465fcec
Limit concurrency to the number of CPU cores (#1467)
4eea226
Use --verbose when testing CLI output (#1477)
a0d5b37
Simplify readme avatar URLs
31b1380
Add tests for improper-usage-messages (#1462)
See the full diff
Update to this version instead 🚀
NODE_ENV=test
AVA will now set process.env.NODE_ENV
to 'test'
, as long as the NODE_ENV
environment variable has not already been set. 42e7c74
Snapshots are stored alongside your test files. This is great when your test file is executed directly but say if you're using TypeScript to precompile your test file AVA would store the snapshots in your build directory. In this release, if source maps are available, AVA determines the original test file location and uses that to store the snapshots.
You can also specify where snapshots are stored through the snapshotLocation
option in the package.json
file. 7fadc34
--match='*'
now matches all tests, including those without a title. 1df502d
2
in CI environments 3f81fc4Bluebird.longStackTraces()
. If you're using Bluebird you may want to call this yourself using a require
script. ebf78b3 61101d9t.log()
is now supported in the Flow and TypeScript type definitions 64b7755t.title
is now supported in the TypeScript type definitions 3c8b1bet.snapshot()
now has a better Flow type definition ded7ab8We 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.
The new version differs by 30 commits.
3b81e2c
0.23.0
3f81fc4
Limit concurrency to 2 in a CI environment
1cb9d4f
Adjust NODE_PATH test to fix linting issue
1ea758f
Only display timestamp in verbose logger if watch mode is active (#1557)
c72f4f2
Include anonymous functions in stacktraces (#1508)
eebf26e
Add Awesome mentioned badge
f43d5ae
Recipe instructions for making jQuery available in browser (#1543)
68ce4b8
Update tsconfig.json docs link in the TS recipe
837b0dd
Fix TypeScript recipe typo (#1549)
2349316
Update package-lock with changes in #1407
bb91862
Version warning when local version is behind (#1407)
42e7c74
Set NODE_ENV to to 'test' if not already set (#1523)
64b7755
Add t.log() for Flow and TypeScript (#1538)
8955e15
Lint test fixtures
fa4f73c
Update to npm@5.4.2
There are 30 commits in total.
See the full diff
Update to this version instead 🚀
This is a pretty small release, but a great one if you're solely developing for Node.js 8.3 or above.
You can now use object rest/spread properties in test files without any further Babel configuration. Note that if you're running tests on older versions of Node.js you'll still need to add the relevant Babel plugins, since this new language feature has not yet reached stage 4. 37c9122
t.is()
values are deeply equal but not the same c41b2afWe 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.
The new version differs by 12 commits.
e401bd1
0.24.0
8141395
Churn and dedupe package-lock
f2979a3
Bump dependencies
efc3b31
Code style tweaks
cb1c3f7
Fix documentation of snapshotDir option
c41b2af
Provide feedback when t.is() values are deeply equal but not the same
1cd3a04
Don't run before and after hooks when all tests are skipped
f98a881
Document how to title macros when using TypeScript
b3c4090
Fix broken link in contributing guide
37c9122
Include syntax-object-rest-spread in default Babel options for Node.js >= 8.3.0
035fd31
Verify package-lock when linting
37e8b49
Use babel-generator to regenerate enhanced assertion statements
See the full diff
Update to this version instead 🚀
The new version differs by 15 commits.
a051d3e
0.25.0
4f896c2
Make t.log()
behave more like console.log()
f00f3c4
Don't set Error.stackTraceLimit
in worker processes
c2b42ec
Mention #1319 as a pitfall
bcb77fc
Recommend skipFiles for VSCode debugging
cd8c91b
Add more clarification for different Babel config in .babelrc.md (#1642)
947f207
Update code-excerpt to ^2.1.1
4a13966
Debug serially in the "Debugging tests with VS Code" recipe (#1634)
aaddc37
Use absolute source map paths in precompiled files
72c53be
support @std/esm (#1618)
29e5dfd
Add TS types for t.snapshot(content, options)
c1faf95
Fix typo in precompiling-with-webpack.md (#1625)
4e8f827
Switch time-require to @ladjs/time-require
965cbc6
Use supertap to generate TAP output (#1610)
4124d77
Update npm, test Node.js 9, detect package-lock churn in CI (#1601)
See the full diff
devDependency
ava was updated from 0.16.0
to 1.0.1
.Update to this version instead 🚀
Back in January we started work on the 1.0 release, taking the opportunity to upgrade to Babel 7 and follow its beta releases. It's been a year where we made massive improvements to AVA. It's also been a year with many exciting events in our personal lives. Be it honeymoons & weddings, work & friends, naturalizations and international relocations.
So, we're done. Or, rather, we're just beginning. Testing can be a drag. AVA helps you get it done. Its concise API, detailed error output, embrace of new language features and process isolation let you write tests more effectively. So you can ship more awesome code or do non-programming things.
Starting now we'll push out patches and new features more regularly. And, when the time comes, ship a 2.0 and a 3.0 and so forth. If you like what we're doing, why not try and contribute? We're a friendly bunch and we could use your help to make AVA even better.
We couldn't have gotten here without the nearly one hundred people who've contributed more, and the many more who suggested improvements, reported bugs and provided feedback. And, of course, everyone who's used AVA. Thank you for your enthusiasm and support.
t.throws()
behavior & t.throwsAsync()
We've rewritten t.throws()
so it behaves better, has better error output and lets you write better tests:
You have a few ways of asserting that the exception is as designed. You can pass a second argument:
message
should be equal to it.message
should match it.The most exciting new feature though is that you can pass an expectation object. A combination of the following expectations is supported:
t.throws(fn, {code: 'ENOTFOUND'}) // err.code === 'ENOTFOUND'
t.throws(fn, {code: 9}) // err.code === 9
t.throws(fn, {instanceOf: SyntaxError}) // err instanceof SyntaxError
t.throws(fn, {is: expectedErrorInstance}) // err === expectedErrorInstance
t.throws(fn, {message: 'expected error message'}) // err.message === 'expected error message'
t.throws(fn, {message: /expected error message/}) // /expected error message/.test(err.message)
t.throws(fn, {name: 'SyntaxError'}) // err.name === 'SyntaxError'
This makes tests like these much easier to write:
// Old assertion
const err = t.throws(fn, TypeError)
t.is(err.message, 'Expected a string')
// New assertion
t.throws(fn, {
instanceOf: TypeError,
message: 'Expected a string'
})
We've removed promise support from t.throws()
and t.notThrows()
. Use the new t.throwsAsync()
and t.notThrowsAsync()
assertions instead. Support for observables has been removed completey.
The original behavior was both hard to explain and hard to express in Flow and TypeScript. Now, if you have a function that throws a synchronous error, use t.throws()
(or t.notThrows()
). If you have a promise that should reject, or an asynchronous function that should fail, use await t.throwsAsync()
(or await t.notThrowsAsync()
).
Generally speaking, you should be able to replace every occurence of await t.throws
with await t.throwsAsync
, and await t.notThrows
with await t.notThrowsAsync
. A transform file for jscodeshift is available in this Gist. Run it like:
$ npx jscodeshift -t https://gist.githubusercontent.com/novemberborn/c2cdc94020083a1cafe3f41e8276f983/raw/eaa64c55dfcda8006fc760054055372bb3109d1c/transform.js test.js
Change test.js
to a glob pattern that matches your test files. See the jscodeshift CLI usage documentation for further details.
Assertion methods are now bound to the test, meaning you can provide them as direct arguments to other functions. A contrived example:
const assertEach = (arr, assert) => {
arr.forEach(value => assert(value));
};
test('all are true', t => {
assertEach(getArray(), t.true);
});
Whilst not strictly assertions, t.plan()
and t.log()
are now also bound to the test.
As part of our Node.js 10 support you can now use BigInt
values in t.deepEqual()
and t.snapshot()
. Note that this is still a stage-3 proposal.
AVA now uses Babel 7, with support for babel.config.js
files. We'll automatically use your project's Babel configuration. Babel options must now be specified in a testOptions
object. This will allow us to add source related options in the future.
Our @ava/stage-4
preset is now accessible via ava/stage-4
. We've added transforms for the latest ES2018 features where available (and even an ES2019 one!). You can also disable ava/stage-4
entirely:
package.json
:
{
"ava": {
"babel": {
"testOptions": {
"presets": [
["ava/stage-4", false]
]
}
}
}
}
Or, you can disable just ES module compilation:
package.json
:
{
"ava": {
"babel": {
"testOptions": {
"presets": [
["ava/stage-4", {"modules": false}]
]
}
}
}
}
The powerAssert
option and command line flags have been removed. You can now disable AVA's test enhancements by setting compileEnhancements
to false
. You can also disable AVA's Babel pipeline entirely:
package.json
:
{
"ava": {
"babel": false,
"compileEnhancements": false
}
}
Hooks declared using test.serial
will now execute serially. Only one of those hooks will run at a time. Other hooks run concurrently. Hooks still run in their declaration order.
Note that concurrent tests run concurrently. This means that .beforeEach()
and .afterEach()
hooks for those tests may also run concurrently, even if you use test.serial
to declare them.
t.context
can now be used in .before
and .after
hooks.
AVA now forwards arguments, provided after an --
argument terminator, to the worker processes. Arguments are available from process.argv[2]
onwards.
npx ava test.js -- hello world
There's a new recipe on how to use this.
Previously AVA populated process.argv[2]
and process.argv[3]
with some undocumented internal values. These are no longer available.
The --no-cache
CLI flag has been replaced by a --reset-cache
command. The latter resets AVA's regular cache location. You can still disable the cache through the cache
configuration option.
npx ava --reset-cache
ava.config.js
You can now configure AVA through an ava.config.js
file. It must be placed next to the package.json
, and you mustn't have any "ava"
options in the package.json
file. Export the configuration as a default:
export default {
babel: {
extensions: ['js', 'jsx']
}
};
Or export a factory function:
export default ({projectDir}) => ({
babel: {
extensions: ['js', 'jsx']
}
});
Following our convention to use ES modules in test files, we're expecting ES modules to be used in the configuration file. If this is causing difficulties please let us know in #1820.
You can now tell AVA to run test files with extensions other than js
! For files that should be compiled using Babel you can specify babel.extensions
:
package.json
:
{
"ava": {
"babel": {
"extensions": ["js", "jsx"]
}
}
}
Or define generic extensions, e.g. for use with TypeScript:
package.json
:
{
"ava": {
"compileEnhancements": false,
"extensions": ["ts"],
"require": [
"ts-node/register"
]
}
}
Note that AVA still assumes test & helper files to be valid JavaScript. They're still precompiled to enable some AVA-specific enhancements. You can disable this behavior by specifying "compileEnhancements": false
.
Adding new snapshots no longer causes the Markdown files to become malformed. Snapshots are now consistent across operating systems. If you've previously generated snapshots on Windows, you should update them using this release.
We now support BigInt
and <React.Fragment>
in t.snapshot()
. We've also improved support for the Symbol.asyncIterator
well-known symbol. Unfortunately these changes are not backwards compatible. You'll need to update your snapshots when upgrading to this release.
We've improved how AVA builds snapshot files to better support precompiled projects. Say, if you compile your TypeScript test files using tsc
before running AVA on the build output. AVA will now use the source map to figure out the original filename and use that as the basis for the snapshot files. You'll have to manually remove snapshots generated by previous AVA versions.
The TypeScript and Flow definitions have been rewritten and much improved. The TypeScript recipe has been updated to reflect the changes, and there's a new Flow recipe too.
AVA recognizes TypeScript build errors when using ts-node/register
.
TypeScript now type-checks additional arguments used by macros. You must type the arguments used:
import test, {Macro} from 'ava'
const failsToParse: Macro<[Buffer]> = (t, input) => {
t.throws(parse(input))
}
failsToParse.title = (providedTitle = 'unexpected input') => `throws when parsing ${providedTitle}`
test('malformed', failsToParse, fs.readFileSync('fixtures/malformed.txt'))
test(failsToParse, '}') // ⬅️ fails to compile
require
configuration.--fail-fast
behavior has been improved. AVA now makes sure not to start new tests. Tests that are already running though will finish. Hooks will also be called. AVA now prints the number of skipped test files if an error occurs and --fail-fast
is enabled.ci-parallel-vars
package for a list of supported CI environments.assert
module in Node.js 10 no longer crashes.process.stderr
is now emulated in the worker processes.--verbose
.<React.Fragment>
can be used in t.deepEqual
.title
functions of macros now receive undefined
rather than an empty string if no title was given in the test declaration. This means you can use default parameters.We've published a statement with regards to which Node.js versions we intend to support. As of this release we're only supporting Node.js 6.12.3 or newer, 8.9.4 or newer, 10.0.0 or newer and 11.0.0 or newer. This does not include Node.js 7 and 9.
You can no longer do:
test(t => t.pass());
Instead all tests must have titles, and they must be unique within the test file:
test('passes', t => t.pass());
This makes it easier to pinpoint test failures and makes snapshots better too.
Note that AVA no longer infers a test title from a function name:
test(function myTest (t) {
t.pass();
});
AVA's various test modifiers (.serial
, .skip
) must now be used in the correct order:
.serial
must be used at the beginning, e.g. test.serial()
..only
and .skip
must be used at the end, e.g. test.skip()
. You cannot combine them..failing
must be used at the end, but can be followed by .only
and .skip
, e.g. test.cb.failing()
and test.cb.failing.only()
..always
can only be used after .after
and .afterEach
, e.g. test.after.always()
..todo()
is only available on test
and test.serial
. No further modifiers can be applied.You must declare all tests and hooks at once. This was always the intent but previously AVA didn't enforce it very well. Now, once you declare a test or hook, all other tests and hooks must be declared synchronously. However you can perform some asynchronous actions before declaring your tests and hooks.
test
exportWe're no longer exporting the test()
method as a named export. Where before you could use import {test} from 'ava'
, you should now write import test from 'ava'
.
Macros can generate a test title. Previously, AVA would call the title
function with an empty string if no title was given in the test declaration. Now, it'll pass undefined
instead. This means you can use default parameters. Here's an example:
import test from 'ava'
const failsToParse = (t, input) => {
t.throws(parse(input))
}
failsToParse.title = (providedTitle = 'unexpected input') => `throws when parsing ${providedTitle}`
test('malformed', failsToParse, fs.readFileSync('fixtures/malformed.txt'))
test(failsToParse, Buffer.from('}', 'utf8'))
This is a breaking change if you were concatenating the provided title, under the assumption that it was an empty string.
t.throws()
& t.notThrows()
Thrown exceptions (or rejection reasons) must now be error objects.
t.throws()
and t.notThrows()
no longer support observables or promises. For the latter, use await t.throwsAsync()
and await t.notThrowsAsync()
instead.
Generally speaking, you should be able to replace every occurence of await t.throws
with await t.throwsAsync
, and await t.notThrows
with await t.notThrowsAsync
. A transform file for jscodeshift is available in this Gist. Run it like:
$ npx jscodeshift -t https://gist.githubusercontent.com/novemberborn/c2cdc94020083a1cafe3f41e8276f983/raw/eaa64c55dfcda8006fc760054055372bb3109d1c/transform.js test.js
Change test.js
to a glob pattern that matches your test files. See the jscodeshift CLI usage documentation for further details.
Assertions can be skipped by using .skip
at the end of the assertion, e.g. t.deepEqual.skip()
. You can now safely skip snapshot tests, though not whilst updating snapshots.
t.ifError()
We've removed the t.ifError()
assertion. It worked the same as t.falsy()
, so if you were using it please switch to t.falsy()
instead.
The source
option has been renamed to sources
. This is now consistent with files
. AVA will exit with an error if it encounters the source
option.
We've also removed unintentional support for init
, watch
and updateSnapshot
options.
The "default"
and "inherit"
configuration values have been removed. Babel options must now be specified in a testOptions
object. This will allow us to add source related options in the future.
The powerAssert
option and command line flags have been removed. You can now disable AVA's test enhancements by setting compileEnhancements
to false
.
The Babel recipe has been updated with the latest details.
The TypeScript and Flow definitions have been rewritten. The definitions export different interfaces so you may need to update your test code as well.
TypeScript now type-checks additional arguments used by macros. You must type the arguments used.
Some other internals have changed. You shouldn't have been relying on these, though if you did we're interested in hearing about it so we can better support your use case.
t._test
value has been removed@std/esm
, in favor of the plain esm
package.ava/stage-4
preset is applied after all other plugins and presets.null
as the this
value.stdout
. The stdout
and stderr
output from workers is written to process.stderr
. AVA will insert linebreaks in process.stdout
after writing a chunk to process.stderr
that does not end in a line break.--no-cache
CLI flag has been replaced by a --reset-cache
command. The latter resets AVA's regular cache location. You can still disable the cache through the cache
configuration option.async
/await
support.There's a new recipe on using ES modules. We've also added a recipe on setting up tests and how test webapps using AVA and Puppeteer.
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.
The new version differs by 218 commits.
783944f
1.0.1
024bab7
1.0.0
aac41dc
Reword introduction
84d8fff
Bump dependencies & update documentation
c1364a1
Update the tagline and readme intro (#1983)
eed2e7a
Clarify that not all configuration options can be overridden by CLI flags
93e91c9
Fix 'sources' option in configuration docs
3bc80b0
Remove moot ESLint disable comment
311c197
Fix snapshot skip interface
0e82b04
1.0.0-rc.2
f97e277
Bump dependencies
6f54db8
Type additional arguments used by macros
a82fee5
Documentation updates
afe028a
CI updates
1ba31d8
Reorganize documentation
There are 218 commits in total.
See the full diff
devDependency
ava was updated from 0.16.0
to 1.1.0
.Update to this version instead 🚀
AVA now exports a meta
object. Currently, you can retrieve the path of the test file being run:
import test from 'ava';
console.log('Test currently being run: ', test.meta.file);
import {meta} from 'ava';
console.log('Test currently being run: ', meta.file);
This is useful in helpers that need to know the test file. bccd297
t.log()
now works in hooks d187712
Error output for improper usage of t.throws()
once again links to the correct documentation dc552bc
We've added a section on webpack aliases to the Babel recipe c3bcbf2
We've updated the Vue recipe for Babel 7, and added a section on webpack aliases c3bcbf2
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.
The new version differs by 9 commits.
a28094a
1.1.0
7262a78
Bump dependencies
d187712
Fix t.log() in hooks
bccd297
Expose test file path within worker process
c3bcbf2
Improve Babel and Vue recipes
dc552bc
Update link to t.throws()
assertion in AVA output
f4b2d19
Fix links to French translation of docs (#2005)
2e72fe7
Fix npm install command in readme (#2001)
7b6e578
Use newer ES syntax where possible
See the full diff
devDependency
ava was updated from 0.16.0
to 1.2.0
.Update to this version instead 🚀
You can now set a timeout for test themselves. The test will fail if this timeout is exceeded. The timeout is reset each time an assertion is made:
test('foo', t => {
t.timeout(100); // 100 milliseconds
// Write your assertions here
});
AVA also has a global timeout feature. The mini reporter now logs tests that were pending when those timeouts occur. Additionally, if you interrupt a test using ctrl+c we'll now also show the pending tests. 2b60556
Thank you @dflupu for your hard work on this!
workspaceFolder
variable 0a5fe42 and --serial
argument placement edfc005We 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.
The new version differs by 11 commits.
010914b
1.2.0
ad087f2
Fix stack traces in throw assertions
8ad5efd
Bump dependencies
2b60556
Print pending tests on interrupt, and on timeout in mini reporter
0a5fe42
Change deprecated workspaceRoot variable to the equivalent workspaceFolder
b65c6d7
Add t.timeout()
ed7807e
Linter fixes
f0a07cd
Rely on npm 6.6.0
6b10f2e
Bump XO and fix some lint issues
72e0762
Fix accidental truncation of multi-line error messages
edfc005
Fix profile.js example
See the full diff
devDependency
ava was updated from 0.16.0
to 1.2.1
.Update to this version instead 🚀
This is a bug fix release. In very large projects, the options send to worker processes would exceed limits on process argument size. We're now sending the options via the inter-process communication channel. 3078892
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.
devDependency
ava was updated from 0.16.0
to 1.3.0
.Update to this version instead 🚀
t.throws()
and t.throwsAsync()
. If you'd set a code
expectation to a number we never actually checked that the thrown error had such a code! Thanks to @qlonik for both spotting and fixing this. 82daa5eclearTimeout()
, you'd break AVA. That's now been fixed. 40f331cYou can now use require()
in ava.config.js
files to load non-ES modules. 334e15b
Thank you @itaisteinherz, @jdalton, @kagawagao, @KompKK, @SleeplessByte, @Chrisyee22 and @qlonik for helping us with this release. We couldn't have done this without you!
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.
The new version differs by 12 commits.
b0fadb4
1.3.0
9600966
Bump dependencies
82daa5e
Assert on expected error code, even when a number
1e3b072
Document timeout
configuration
d97f11d
Improve pronunciation examples
40f331c
Fix unbound reference to clearTimeout
334e15b
Support require() in config files
5751226
Added few tests for lib/chalk.js
7d10446
Fix link to Babel recipe
565822e
Update esm package detection
2fce19f
Remove the typings
field in package.json
d066f6f
Recognize snapshot files as source files
See the full diff
devDependency
ava was updated from 0.16.0
to 1.3.1
.Update to this version instead 🚀
t.throws()
and t.throwsAsync()
. If you'd set a code
expectation to a number we never actually checked that the thrown error had such a code! Thanks to @qlonik for both spotting and fixing this. 82daa5eclearTimeout()
, you'd break AVA. That's now been fixed. 40f331cYou can now use require()
in ava.config.js
files to load non-ES modules. 334e15b
Thank you @itaisteinherz, @jdalton, @kagawagao, @KompKK, @SleeplessByte, @Chrisyee22 and @qlonik for helping us with this release. We couldn't have done this without you!
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.
devDependency
ava was updated from 0.16.0
to 1.4.0
.Update to this version instead 🚀
power-assert
AVA comes with power-assert
built-in, giving you more descriptive assertion messages. However it's been confusing to understand which assertions come with power-assert
. To address this we've added the new t.assert()
assertion. It's now the only assertion that is power-assert
enabled. The assertion passes if called with a truthy value. Consider this example:
test('enhanced assertions', t => {
const a = /foo/;
const b = 'bar';
const c = 'baz';
t.assert(a.test(b) || b === c);
});
6: const c = 'baz'; 7: t.assert(a.test(b) || b === c); 8: });
Value is not truthy:
false
a.test(b) || b === c
=> falseb === c
=> falsec
=> 'baz'b
=> 'bar'a.test(b)
=> falseb
=> 'bar'
a
=> /foo/
Our ESLint plugin has been updated to support this new assertion. Many thanks to @eemed for implementing this! 9406470
Watch mode now prints the available commands. Thanks @KompKK! cd256ac
--match
, .skip()
or .only()
) are no longer included in the list of pending tests when timeouts occur or when you interrupt a test run. Thanks @vancouverwill! 23e302aThank you @eemed, @KompKK, @vancouverwill, @okyantoro and @amokmen. We couldn't have done this without you!
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.
The new version differs by 7 commits.
20db474
1.4.0
0154a7f
Bump dependencies
9406470
Only apply power-assert to new t.assert() assertion
c1f6fdf
Shim all tty methods
23e302a
Don't report filtered tests as pending
99a10a1
Document that there is no default timeout
cd256ac
Print commands in watch mode
See the full diff
devDependency
ava was updated from 0.16.0
to 1.4.1
.Update to this version instead 🚀
power-assert
AVA comes with power-assert
built-in, giving you more descriptive assertion messages. However it's been confusing to understand which assertions come with power-assert
. To address this we've added the new t.assert()
assertion. It's now the only assertion that is power-assert
enabled. The assertion passes if called with a truthy value. Consider this example:
test('enhanced assertions', t => {
const a = /foo/;
const b = 'bar';
const c = 'baz';
t.assert(a.test(b) || b === c);
});
6: const c = 'baz'; 7: t.assert(a.test(b) || b === c); 8: });
Value is not truthy:
false
a.test(b) || b === c
=> falseb === c
=> falsec
=> 'baz'b
=> 'bar'a.test(b)
=> falseb
=> 'bar'
a
=> /foo/
Our ESLint plugin has been updated to support this new assertion. Many thanks to @eemed for implementing this! 9406470
Watch mode now prints the available commands. Thanks @KompKK! cd256ac
--match
, .skip()
or .only()
) are no longer included in the list of pending tests when timeouts occur or when you interrupt a test run. Thanks @vancouverwill! 23e302aThank you @eemed, @KompKK, @vancouverwill, @okyantoro and @amokmen. We couldn't have done this without you!
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.
devDependency
ava was updated from 0.16.0
to 2.0.0
.Update to this version instead 🚀
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
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": [
"**/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.
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
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
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.
Test implementations may return observables. We've updated our TypeScript definition to require these to have a Symbol.observable
function. c2d8218
AVA now uses the util.inspect.defaultOptions.depth
option when printing objects, so you can configure the depth. 98034fb
You can now specify environment variables in your config, using the environmentVariables
object. a53ea15
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! ebf4807test.skip(macro)
ba5cd80Thank you @StoneCypher, @LukasHechenberger, @lo1tuma, @htor, @alexisfontaine and @grnch. We couldn't have done this without you!
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.
The new version differs by 36 commits.
e1572d9
2.0.0
2daf6a9
Bump dependencies
b1e54b1
By default, select test and helpers inside 'tests' directories
677578f
Replace individual lodash packages with the main package
a53ea15
Define environment variables to be injected in the test file processes
626e58c
2.0.0-rc.1
51433be
Implement helper for our ESLint plugin
c10e38c
Remove underline from Babel configuration validation errors
928ed14
Bump dependencies
98034fb
Make the object printing depth configurable (#2121)
f26634b
2.0.0-beta.2
80d72ff
Bump dependencies
5f4c96f
Further helper selection improvements
ba5cd80
Fix TypeScript definition allowing macro-without-title-using-tests to be skipped
13a89e1
Reduce size of logo in readme
There are 36 commits in total.
See the full diff
devDependency
ava was updated from 0.16.0
to 2.1.0
.devDependency
ava was updated from 0.16.0
to 2.2.0
.devDependency
ava was updated from 0.16.0
to 2.3.0
.devDependency
ava was updated from 0.16.0
to 2.4.0
.devDependency
ava was updated from 0.16.0
to 3.0.0
.devDependency
ava was updated from 0.16.0
to 3.1.0
.devDependency
ava was updated from 0.16.0
to 3.2.0
.devDependency
ava was updated from 0.16.0
to 3.3.0
.devDependency
ava was updated from 0.16.0
to 3.4.0
.devDependency
ava was updated from 0.16.0
to 3.5.0
.devDependency
ava was updated from 0.16.0
to 3.5.1
.devDependency
ava was updated from 0.16.0
to 3.5.2
.devDependency
ava was updated from 0.16.0
to 3.6.0
.devDependency
ava was updated from 0.16.0
to 3.7.0
.devDependency
ava was updated from 0.16.0
to 3.7.1
.devDependency
ava was updated from 0.16.0
to 3.8.0
.devDependency
ava was updated from 0.16.0
to 3.8.1
.🚨 Reminder! Less than one month left to migrate your repositories over to Snyk before Greenkeeper says goodbye on June 3rd! 💜 🚚💨 💚
Find out how to migrate to Snyk at greenkeeper.io
devDependency
ava was updated from 0.16.0
to 3.8.2
.
Version 0.17.0 of ava just got published.
The version 0.17.0 is not covered by your current version range.
Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.
I recommend you look into these changes and try to get onto the latest version of ava. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.
Commits
The new version differs by 51 commits .
b24495d
0.17.0
056f227
bump dev dependencies and make XO happy
26bcab0
temp fix for Node.js internal stack traces showing
2d04763
Add docs for test parameter need to be named
t
(#1096)59254b7
Use current working directory if no
package.json
(#1044)3c3a6d8
add XO badge
e0a170b
Speed up CI (#1076)
257b34d
Upgrade XO (#1080)
3ea2ba1
Ensure test files load correct AVA installation (#1085)
476c653
Change the current working directory of tests to be the same directory as package.json (#1074)
1b214be
clean up caching precompiler (#1077)
6165a23
linting: turn off the
no-use-extend-native
rulee10338e
Update readme.md (#1075)
dae3a44
make XO happy
c258d03
Fix link to configuration in readme (#1073)
There are 51 commits in total. See the full diff.
Not sure how things should work exactly?
There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html) and of course you may always [ask my humans](https://github.com/greenkeeperio/greenkeeper/issues/new).Your Greenkeeper Bot :palm_tree: