ava-spec

Drop-in BDD helpers for AVA test runner 🌠

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
ava-spec
14501.1.15 years ago7 years agoMinified + gzip package size for ava-spec in KB

Readme

AVA Spec
Build Status

Installation

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.

Usage

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);
});

Result:
- 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

API

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

test.describe([title], implementation)

test.feature([title], implementation)

test.group([title], implementation)

title
Type: string
A group title.
implementation(ava)
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

Caveats

Currently AVA Spec doesn't support per-group hooks. It's a feature planned for 1.1.0.

Team

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