The principal value of this test harness is its support for asynchronous
tests -- that is, tests where you have to wait for a callback to happen
before you can continue testing. This applies to every test in our
testsuite that uses WebPage.open(), and some others as well. With this
harness, the test suite is significantly faster and can be made race-free.
The API is not exactly the same as W3C testharness.js -- important
differences include: test execution is serialized within a file; "file is
test" mode has been removed, as we do not need it and it adds significant
complexity; several additional assertions have been added; the ability to
mark tests as expected to fail, or as to be skipped entirely, has been added.
New-style tests can opt out of testharness.js with a "no-harness"
directive at the top of the file; this is necessary for a small number
of tests (e.g. basics/exit.js) that test functionality the harness
reserves for its own use.
All existing new-style tests have been converted to testharness.js; some
groups of tests have been consolidated into fewer files. The naming
convention for tests in regression/ is clarified.
Part of issue #13478 (test suite overhaul).
This means that there is no longer a need to add every individual test
to the list; only new *directories* have to be mentioned. New tests
can be added just by dropping .js files into appropriate directories.
Tests which are not meant to be run by default now live in tests/manual/.
Currently there is one such test, tests/manual/standards/ecma-test262.js,
which downloads and runs the ECMAScript conformance suite.
Ongoing work on issue #12439.