What is it?
(Note: this is still a work in progress. Nonetheless, the base functioality is there, and works)
AQ allows you to automate your QUnit tests, leveraging Node.js.
To get started, create a Node.js server.
npm install aq
Update the packages:
aq =app = http;// AQ optionsvar options =// Display test results on the terminallog: true// Name of the folder where the unit test files residetestFolder: 'unit-tests'// Directorydir: path// The test pagepage: '/test/index.html';// Let AQ listen to the serveraq = aq;
Creating the tests
The test page
Before you can automate your tests, you first need a page where the tests can run in.
In your test page (perhaps index.html), include AQ and socket.io:
Additionally, there has to be a target container called
aq-container where AQ can load the proper unit test into.
AQ will begin testing only when explicitly told. You can do this by calling
AQ.start(), in the test page:
Struture of a Unit Test file
Each unit test file within the unit test filder should be an HTML file containing a global
run function. This function must exist so the test harness can execute the tests defined therein properly.
<!-- Maybe some DOM here -->
How does it all work?
When the server starts, AQ scans the specified directory where the unit tests are contained. Each file name is then returned to the client side. The content of each test file is loaded via an AJAX request, and inserted into
aq-container. Once iserted, the
run function is called, and the tests are executed. Upon completion of the tests, the next unit test file is loaded.
All tests results (and final results) are passed to the server.
Running the tests
Run all tests in the unit test folder
Command line options:
Specify the browser
By default, the unit tests will run on all the browsers specified in
config.js. To specify the browser, you can use the
node server.js -b chrome
Keep browser open
By default, after all the unit tests have completed running on a browser, that browser session will close. You can choose to keep the browser open with the
node server.js -k true
How to specify which unit tests to run
Insert the unit tests to run after
node server.js -- test1.html test2.html
On the client
AQ provides a
beforeTestRun event which is executed after a unit test file is loaded. If this is event is bound, no test will run unless an explicit call to
AQ.run is made. For example, in the test page:
On the server
On the server side, once AQ is listening, you can bind onto certain events:
aq = aq;/*** Triggers when a new unit test file is executing** @param filename*/aq;/*** Triggers when a file containing unit tests has completed** @param data** failed:* passed:* total:* details:*/aq;/*** Triggers when all the unit test files have been executed** @param data** failed:* passed:* total:*/aq;