Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tape-testing/testling

unit tests in all the browsers
https://github.com/tape-testing/testling

Last synced: 9 days ago
JSON representation

unit tests in all the browsers

Awesome Lists containing this project

README

        

# testling

Run [testling-ci](http://ci.testling.com) tests locally.

# example

write a test:

``` js
var test = require('tape');

test('beep boop', function (t) {
t.plan(2);
t.equal(1+1, 2);
t.ok(true);
});
```

run your test in a local headless browser:

```
$ browserify example/test.js | testling

TAP version 13
# beep boop
ok 1 should be equal
ok 2 (unnamed assert)

1..2
# tests 2
# pass 2

# ok
```

with an exit code of 0 for successes and non-zero for failures like a good unix
citizen

Once you have a `package.json` with a configured `"testling"` field, you can just
type:

```
$ testling
```

to run all your tests locally just like they will be run on
[testling-ci](https://ci.testling.com). This includes mocha harnesses, scripts,
and files parameters.

# usage

```
usage: testling {DIRECTORY|-} {OPTIONS}

If there (is no DIRECTORY and stdin is a tty) or the DIRECTORY is "-",
javascript will be read from stdin and executed.

Otherwise, DIRECTORY (or the $CWD) will be checked for a package.json with a
testling field.

OPTIONS are:

--html Instead of launching a server, show the generated html.

--no-show Don't render the console.log() output to the document body.

-u Instead of launching a browser, print the url to visit so you can
open the browser yourself.

-x Launch a browser with an explicit command. By default, chrome or
firefox is launched by searching your $PATH.

--host Set up the testling url on a specific hostname. Default: localhost

--port Set up the testling url on a specific port
```

# testling field

[Read more about how the package.json "testling" field works.](doc/testling_field.markdown)

# code coverage

To compute code coverage, just use the
[coverify](https://npmjs.org/package/coverify)
transform with `-t coverify` when you run browserify.

[coverify](https://npmjs.org/package/coverify) writes coverage data with
console.log(), so you can pipe the output of testling through to the `coverify`
command to parse the results and give human-readable output:

```
$ browserify -t coverify test.js | testling | coverify

TAP version 13
# beep boop
ok 1 should be equal

1..1
# tests 1
# pass 1

# ok

# /home/substack/projects/coverify/example/test.js: line 7, column 16-28

if (err) deadCode();
^^^^^^^^^^^

# /home/substack/projects/coverify/example/foo.js: line 3, column 35-48

if (i++ === 10 || (false && neverFires())) {
^^^^^^^^^^^^

```

The exit code of coverify is non-zero when there are unreachable expressions.

# dependencies

Make sure you have [PhantomJS](https://github.com/ariya/phantomjs) installed; this is the headless browser that testling will run your tests in if you are not using the `-u` option.

# install

First, install `browserify` globally so that the `testling` command can find it
when there is no `browserify` in `./node_modules/.bin`:

```
npm install -g browserify
```

then do:

```
npm install -g testling
```

# license

MIT

![attack of the testlings!](https://web.archive.org/web/20151126095557if_/http://substack.net/images/browsers/war_of_the_browsers.png)