Tests
The automated tests are in the tests/
directory and are executed with
Window.js itself:
$ windowjs.exe tests/run_tests.js
Running tests
The runner indicates whether any tests failed, and show the stack trace for each failure.
It support two optional parameters:
file | A RegExp pattern. Only matching filenames will be executed. |
test | A RegExp pattern. Only matching test names will run. |
For example, if test functionName
in test_file.js
is failing, then these
flags can be used to run that single test:
$ windowjs.exe tests/run_tests.js -- test_file.js functionName
Pixel diffs
Tests can compare the pixels in their canvas to an image with the expected output (the golden screenshot image).
The canvas tests compare their output to the image rendered by Chrome, using the same code.
The canvas.html tool generates goldens in Chrome directly, by executing the same test code. It needs a web server to run:
$ npm install http-server
$ npx http-server
This starts a web server in the current directory, listening on port 8080.
Navigating to
http://localhost:8080/tests/canvas.html
shows an HTML <canvas>
with the output of each test, and the golden image
next to it.
If that tests has executed and failed, then the test output is also shown next to the golden. These output files should not be checked in.
Details
The main runner will execute each Javascript source under tests/
in its own
subprocess. It runs up to Process.cpus test files
in parallel.
Each test is a module and all of its exported functions will be executed as a test. The test fails if the function throws, or if it returns a Promise that gets rejected (e.g. async functions that throw).
Test files can import tests/lib.js
to use common test utilities.