spectacular

Advanced BDD framework for CoffeeScript and JavaScript

Usage no npm install needed!

<script type="module">
  import spectacular from 'https://cdn.skypack.dev/spectacular';
</script>

README

Spectacular

Build Status Coverage Status Dependency Status

Spectacular is a BDD framework for CoffeeScript and JavaScript whose attempt to bring the power of RSpec to JavaScript. Spectacular try to favor the best practices used for writing better RSpec tests in its design.

This is the kind of tests you can write with Spectacular:

describe Array, ->
  given 'item', -> foo: 'bar'

  it -> should exist

  itsInstance 'length', -> should equal 0

  describe '::indexOf', ->
    context 'with an item not present in the array', ->
      itsReturn with: (-> [@item]), -> should equal -1

    context 'with an item present in the array', ->
      subject 'array', -> [@item]

      specify 'the returned value', ->
        expect(@array.indexOf @item).to equal 0

Features, the short tour

  • Conditionned Specs
  • Matcher based description
  • Implicit subjects
  • Describe auto-subject
  • Factories
  • JSON and HTML fixtures (and more)
  • Promised-based tests run
  • Synchronous and asynchronous matchers
  • Synchronous and asynchronous tests
  • Browser support
  • Shared examples
  • Custom matchers
  • CSS-queries expressions to test the DOM content
  • Strings and objects diff in comparison results
  • The API is provided with both camelCase and snake_case version
  • No external dependencies in browsers

For more information view the documentation

Install

Spectacular is available as a npm module, you can then install it with:

npm install -g spectacular

This will install Spectacular globally and allow you to use the Spectacular command line tool.

Command-line

The most simple way to use the spectacular command line tool is as follow:

spectacular specs/**/*.spec.js

Options

`-c, --coffee` Add support for CoffeeScript files. You can now run your specs with: `spectacular --coffee specs/**/*.coffee`.
`-v, --verbose` Enable verbose output.
`-t, --trace` Enable stack trace report for failures (default is `true`).
`--long-trace` By default the stack traces are cropped after 6 lines to limit the amount of output. You can display the full stack trace with this option.
`-p, --profile` Add a report with the 10 slowest examples at the end of the output.
`-d, --documentation` Enable the documentation format in the output.
`-s, --server` Starts a server instead of running the specs. The specs can then be accessed from a browser at the the following address: `http://localhost:5000`.
`-m, --matchers PATH` Specify the path where project matchers can be found, by default matchers are loaded from `./specs/support/matchers`.
`--helpers PATH` Specify the path where project helpers can be found, by default helpers are loaded from `./specs/support/helpers`.
`--fixtures PATH` Specify the path where project fixtures can be found, by default fixtures are loaded from `./specs/support/fixtures`.
`--no-trace` Remove stack trace from failures reports.
`--no-colors` Remove coloring from the output.
`--no-matchers` Disable the loading of project matchers.
`--no-helpers` Disable the loading of project helpers.

Contributing

I decided to start using the AngularJS commit messages convention for this project. Please use the same convention as well for commits in PR.