simple browser testing
Zuul is different than other cross browser test runners in its simplicity and ability to easily run your test suite in many browsers without having them installed locally. It lets you iterate quickly during development and provide good browser coverage before release without worrying about missing a supported browser.
Don't just claim your js supports "all browsers", prove it with tests!
Zuul has 3 modes of operation: locally, cloud browsers, and continuous integration. You should make sure that zuul is working locally before you try to run the other two.
When iterating on your tests during development, simply use zuul
--local mode to see your tests run in a browser.
See the quickstart page on the wiki for more details.
The reason we go through all this trouble in the first place is to seamlessly run our tests against all those browsers we don't have installed. Luckily, saucelabs runs some browsers and we can easily task zuul to test on those.
See the cooking with sauce wiki page to get your tests running in the cloud.
No testing setup would be complete without a badge for passing or failing tests. After making sure your tests all pass in the cloud from your local machine, we will configure our tests to pass from travis-ci when we commit changes.
See the travis-ci integration wiki page.
The following frameworks are supported:
- mocha (tdd, qunit, and bdd flavors)
See the examples directory for some simple tests. Use the above knowledge to test the examples with your install of zuul.
- quickstart - from the quickstart wiki tutorial
- emberjs with qunit - basic ember.js app with qunit tests
- jasmine - basic jasmine example
All of the examples can be tested locally by running the following command in each example directory.
zuul --local 8080 -- test.js
The zuul consumes a yaml config file. See the zuul.yml wiki page for all of the goodies this file provides.
It includes advanced usage like how to run an additional server to support tests that make ajax requests.
This probject is made possible by all the awesome modules it uses. See the
package.json file for all the awesome.