Drop-in BDD helpers for AVA test runner 🎇 [DEPRECATED, please use Jest!]
Switch branches/tags
Clone or download
Latest commit 2180afa Mar 20, 2018
Failed to load latest commit information.
test Add tests for failing and always Jan 12, 2017
.editorconfig Initial commit on master Apr 18, 2016
.gitattributes Initial commit on master Apr 18, 2016
.gitignore Initial commit on master Apr 18, 2016
.travis.yml Test main versions of node Nov 18, 2017
LICENSE Initial commit on master Apr 18, 2016
README.md DEPRECATE Mar 20, 2018


DEPRECATED Please use Jest which is more powerful than Ava and supports describe out of the box.

AVA Spec

Build Status


AVA Spec is meant to be installed next to AVA, so please follow its installation instructions first.

Then, install ava-spec as a development dependency:

$ npm install --save-dev ava-spec

You still run tests with ava command. The only thing that changes are tests themselves.


First of all, you can use ava-spec as a drop-in for ava:

import test from 'ava-spec';

test('AVA Spec is 100% compatible with ava', t => {
  t.is(true, true);

Jasmine-like DSL is supported:

import {describe} from 'ava-spec';

describe('AVA Spec', it => {
  it('can look almost like jasmine', t => {
    t.deepEqual([1, 2], [1, 2]);

  it.todo('supports all chaining modifiers!');

Or write cucumber-like scenarios:

import {feature} from 'ava-spec';

feature('Cash withdrawal.', scenario => {
  scenario('Not enough money in ATM', t => {
    // Cucumber-like keywords are available

Or just group tests together:

test.serial.skip.group(test => {
  test('AVA Spec can be used to just group some tests', t => {
    t.not(true, false);

Last but not least you can pass groups around in fun ways:

const subject = test.describe('You');

subject('do not need to use callbacks!', t => {
  t.is(2 + 2, 4);


  - AVA Spec can be used to just group some tests
  ✔ AVA Spec is 100% compatible with ava
  ✔ AVA Spec can look almost like jasmine
  - AVA Spec supports all chaining modifiers!
  ✔ Cash withdrawal. Not enough money in ATM
  ✔ You do not need to use callbacks!

  4 tests passed
  1 test skipped
  1 test todo


AVA spec allows you to define test groups using 3 equivalent methods:

test.describe([title], implementation)

test.feature([title], implementation)

test.group([title], implementation)


Type: string

A group title.


Type: function

It is called by AVA Spec with modified AVA instance as so:

  1. Group modifiers are applied to all tests inside it
  2. Group title is prefixed to all test titles inside it


Currently AVA Spec doesn't support per-group hooks.


Adam Stankiewicz Please help me!
Adam Stankiewicz Become co-author!