- Notifications
You must be signed in to change notification settings - Fork30
Test runner based on Tape and Browserify
License
azer/prova
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Node & Browser Test runner based onTape andBrowserify.
Screencasts:node.gif,browser.gif,both.gif,headless browser
Slides:slides.com/azer/prova
Features and screenshots:
- EmbedsTape
- Comes with a builtin web app to run tests on browser, sourcemaps are enabled.
- Outputs less when tests pass (Node,Browser)
- Outputs more when tests fail (Node,Browser)
- Browser app runs tests inside of an iframeScreenshot
- Useswatchify to observe file changes and restart browser tests.GIF Screenshot
- Lets filtering test cases (e.g node test.js -g foobar)
- Comes withbrowser-launcher forlaunching browsers automatically and headless testing. (Screenshot)
- Clickable error stacks on the browser:Screenshot
- Optional progress bar for slow tests. GIFs:Node /Browser
$ npm install -g azer/prova
Example test:
vartest=require('prova')test('timing test',function(t){t.plan(2)t.equal(typeofDate.now,'function')varstart=Date.now()setTimeout(function(){t.equal(Date.now()-start,100)},100)})
In Node, it will output:
$ node test.jsPassed 1 test.
Or, in case it fails:
To run the tests in a web browser, just pass-b
parameter:
$ node test.js -bVisit localhost:7559 with a browser to start running the tests.
Then visitlocalhost:7559
in your web browser:
In case it fails, it'll show:
The web app useswatchify to monitor file changes.So, you won't have to reload the page when you modify a source code.
Prova runs the tests inside of an iframe. In case you test some UI stuff, you can open the iframeby clicking the<
button on the right:
Prova comes with a command-line script when you install it globally;
$ npm install -g prova
And it allows you running multiple tests on both Node and browser;
$ prova test/foo.js test/bar.js
$ prova test/**/*.js -b
List the detected browsers;
$ prova -lAvailable Browsers: safari v7.0.2, chrome v34.0.1847.116, phantom v1.9.7
And launch after publishing the tests:
$ prova -b -l safari
If your system has Xvfb, you can pass-e
parameter to open the browser headlessly:
$ prova -b -l chrome -e
Or you can just run the tests on PhantomJS:
$ prova -b -l phantom
If you getno matches for
errors and you think that your system has that browser, try removingbrowser-launcher's config:
$ rm /Users/azer/.config/browser-launcher/config.json
Prova automatically appliesbunch of transforms by looking at the file extension. If you'd like to use a transform that doesn't exist in Prova by default, you can choose it with a parameter;
$ nodetest -b -t coffeeify
Multiple transforms can be specified using comma;
$ nodetest -b -t coffeeify,brfs,foo,bar
Pass Browserify plugins passing-u
or--plugin
parameter;
$ nodetest -b --plugin foo
Use comma to separate multiple plugins;
$ nodetest -b --plugin foo,bar
When you're running the tests on the browser, Prova has an empty HTML template that loads and runs the JavaScript tests.You can customize this HTML file with -f or --frame parameter:
$nodetest-b-ftest.html
Click the arrow button on right middle to keep the frame open. You'll be seeing the HTML document and test results in the same screen.
Prova watches for changes and automatically restarts the browser tests (inside in an iframe) but in case you need, there is an endpoint for restarting all the tests by hitting an endpoint;
$ curl localhost:7559/restart
You may need to load your images, web workers etc. for testing. Prova allows you to load assets from your current directory via the/assets/in
endpoint. Let's say you'd like to load a file called "foobar.png":
$ curl http://localhost:7559/assets/in/foobar.png
Should work for you.
HTTP proxying is pretty useful to by-pass cross-domain issues (CORS) on the browser. You can easily point a URL to another host using-y
/--http-proxy
parameters:
$ node test -b -y "/my-api=http://localhost:8080"
Assuming that you'll be running your tests on:7559
, any requests to/my-api
will be streamed throughlocalhost:8080
in the above example.
USAGE prova [filenames] [options] OPTIONS -g --grep Run tests matching with given pattern -b --browser Publishes the tests on 0.0.0.0:7559 -o --port Publish the tests on given port number. -d --hostname Publish the tests on given hostname. -l --launch List available browsers to launch or launch specified browser. -e --headless Launch the browser headlessly. (Requires xvfb) -r --proxy Launch the browser with specified proxy configuration. -q --quit Shut down the browser server once all the tests are done. -f --frame Specify a custom document to run tests on browser. e.g node test -b -f custom.html -x --exec Execute given commmand before running the tests. -y --http-proxy Proxy requests matching with given pattern to a target. e.g -y "/images=localhost:8080" -t --transform Use given Browserify transforms. e.g node test -b -t coffeeify,brfs -u --plugin Use given Browserify plugins. e.g node test -b -u foo,bar -s --progress Show a progress bar. Useful when tests are running slow. -p --tap Output original Tap output without modifying anything. -C --no-console Disable showing browser console messages on command-line. -v --version Show version and exit -h --help Show help and exit --examples Show example commands
EXAMPLES 1. Run the tests on NodeJS. $ node test.js $ node test $ prova test/index.js $ prova All the above example commands will work same way. Prova assumes the filename of your test is either `test.js` or `test/index.js` 2. Publish the tests on localhost:7559, so you can run the tests on a web browser. $ node test.js -b $ prova test -b $ prova -b 3. Publish the tests on given host and port. $ node test.js -o 8080 -d foobar.net $ prova test.js -o 8080 -d foobar.net 4. Publish the tests and launch a browser to automatically run the tests. $ node test.js -b -l chrome $ prova test.js -b -l chrome 5. List the browsers that can be launched automatically. $ prova -l $ node test.js -l 6. Run the tests with PhantomJS. $ node test.js -b -l phantom $ prova test.js -b -l phantom 7. Run only specified tests with PhantomJS. $ node test.js -b -l phantom -g pattern $ prova test.js -b -l phantom -g pattern 8. Launch Chrome headlessly using xvfb: $ node test -b -l chrome -e $ prova test -b -l chrome -e
About
Test runner based on Tape and Browserify
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors9
Uh oh!
There was an error while loading.Please reload this page.