Specify is a cross-platform library for defining and running tests using a BDD style. It supports pluggable assertions, custom reporters, and custom interfaces.
( TBD )
The officially supported way of getting Specify is through npm:
$ npm install specify-framework
If you don't have npm, you'll need to install Node.js and npm in your system before installing Specify.
A tool like Browserify or Webpack can be used to run Specify in platforms that don't implement Node-style modules, like the Browser.
( TBD )
Why not (insert-popular-testing-library-here)?
Mocha, and other popular BDD testing frameworks, have been designed with a particular environment in mind (Node for Mocha, Browser for Jasmine), so while they can be extended, it's often awkward to use them in different environments. In particular, running Mocha under CIs like Testling requires specific Mocha extensions.
Furthermore, most popular testing frameworks and libraries (like Mocha and Tape) are designed for asynchronous testing with callbacks. This isn't a deal breaker, but it's a minor inconvenience since one would need to provide wrappers for using Promises or Tasks. Specify uses Tasks, and provides wrappers for other styles out of the box, which makes just writing tests simpler.
Specify is supported in all platforms that support ECMAScript 5.
For platforms that don't support ECMAScript 5, (like IE8 and 9) the es5-shim library can be used to provide the additional runtime support.
If you think you've found a bug in the project, or want to voice your frustration about using it (maybe the documentation isn't clear enough? Maybe it takes too much effort to use?), feel free to open a new issue in the Github issue tracker.
Pull Requests are welcome. By submitting a Pull Request you agree with releasing your code under the MIT licence.
You can contact the author over email, or Twitter.
Note that all interactions in this project are subject to Origami Tower's Code of Conduct.
Specify is copyright (c) Quildreen Motta 2014-2016, and released under the MIT licence. See the
LICENCE file in this repository for detailed information.