Skip to content

A wannabe tiny largely-drop-in replacement for ava that works in the browser too.

License

Notifications You must be signed in to change notification settings

fabiospampinato/fava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fava's logo

Fava (WIP)

A wannabe tiny largely-drop-in replacement for ava that works in the browser too.

Features

  • ava-like: if you like ava's APIs you'll like fava's too, because it provides essentially the same APIs.
  • Tiny: it requires about 90% fewer dependencies, that's ~8MB less code to download and execute, and most of the dependencies used I maintain myself.
  • Isomorphic: it works everywhere, Node CLI, Node runtime, Electron, Browser, maybe even Deno.

Drawbacks

This is still very much a work in progress, compared to ava it currently has the following drawbacks (and probably more):

  • It's untested, testing software with an untested testing framework isn't really recommended.
  • Tests are always run serially, even across multiple test files, no two tests are ever running at the same time.
  • Test files are not preprocessed with Babel or TypeScript, they are just plain JS files.
  • The textual output of the library is pretty bare-bones in general, it's pretty far from being as nice as ava's.
  • Error outputs in particular are pretty basic, no fancy diffs.
  • The snapshot and try assertions are not implemented.
  • Observables are not supported.
  • TAP reporters are not supported.
  • Callback tests are not supported.
  • Coverage reports are not supported.

Basically unless you want to play with this or you absolutely need an ava-like testing framework in the browser I wouldn't recommend using this.

Install

npm install --save-dev fava

Usage

import {assert, test, describe, suite} from 'fava';

// A standalone assertion library is provided

assert.deepEqual ( [1], [1] );

// A "suite" function is provided, for opt-in better code organization
// You can totally just not use it at all

suite ( 'Example suite', describe => {

  // A "describe" function is provided, for opt-in better code organization
  // "describe" functions can be nested indefinitely
  // You can totally just not use it at all

  describe ( 'Example describe', test => {

    // A "test" function is provided, it should work just like ava's

    test ( 'Example test', t => {

      // A "t" context object is provided, it should work just like ava's

      t.pass ();

    });

  });

});

For further documentation for now just refer to ava's.

Testimonials

  • @liquid: I have used Fava and it's bean a pleasure.

License

MIT © Fabio Spampinato