Files
tubestation/testing/web-platform/tests/resources/test
Philip Chimento a3bfaf1f42 Bug 1933007 [wpt PR 49342] - Improve idlharness-ShadowRealm integration, a=testonly
Automatic update from web-platform-tests
Improve idlharness-ShadowRealm integration

By exposing a fetch_spec() on globalThis in testharness-shadowrealm-inner,
we no longer need to have IDL tests in separate files for ShadowRealm, as
the regular idlharness.js will just run there.

Delete all existing idlharness-shadowrealm.window.js files and incorporate
them into their neighbouring idlharness.any.js files.

It seems sufficient to run the IDL tests only in shadowrealm-in-window;
repeating them in every ShadowRealm scope seems like overkill.

--
Improve test message in idlharness

This gets me every time. If we are testing that an interface is not
exposed, we should be clear about that in the test message.

--
Don't test namespaces in idlharness if not exposed

Instead, if a namespace is not exposed, test that there is no global
property of that name, similar to what we do with interfaces.

--

wpt-commits: 67880a4eb83ca9aa732eec4b35a1971ff5bf37ff, 524e1e0643c9d42e74f0bec6092227738b605f76, 49980192b50a30cd8bbea9b6baab9ac191eb1eb7
wpt-pr: 49342
2024-11-28 11:57:44 +00:00
..

testharness.js test suite

The test suite for the testharness.js testing framework.

Executing Tests

Install the following dependencies:

Make sure geckodriver can be found in your PATH.

Currently, the tests should be run with the latest Firefox Nightly. In order to specify the path to Firefox Nightly, use the following command-line option:

tox -- --binary=/path/to/FirefoxNightly

Automated Script

Alternatively, you may run tools/ci/ci_resources_unittest.sh, which only depends on Python 2. The script will install other dependencies automatically and start tox with the correct arguments.

Authoring Tests

Test cases are expressed as .html files located within the tests/unit/ and tests/functional/ sub-directories. Each test should include the testharness.js library with the following markup:

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

This should be followed by one or more <script> tags that interface with the testharness.js API in some way. For example:

<script>
test(function() {
    1 = 1;
  }, 'This test is expected to fail.');
</script>

Unit tests

The "unit test" type allows for concisely testing the expected behavior of assertion methods. These tests may define any number of sub-tests; the acceptance criteria is simply that all tests executed pass.

Functional tests

Thoroughly testing the behavior of the harness itself requires ensuring a number of considerations which cannot be verified with the "unit testing" strategy. These include:

  • Ensuring that some tests are not run
  • Ensuring conditions that cause test failures
  • Ensuring conditions that cause harness errors

Functional tests allow for these details to be verified. Every functional test must include a summary of the expected results as a JSON string within a <script> tag with an id of "expected", e.g.:

<script type="text/json" id="expected">
{
  "summarized_status": {
    "message": null,
    "stack": null,
    "status_string": "OK"
  },
  "summarized_tests": [
    {
      "message": "ReferenceError: invalid assignment left-hand side",
      "name": "Sample HTML5 API Tests",
      "properties": {},
      "stack": "(implementation-defined)",
      "status_string": "FAIL"
    }
  ],
  "type": "complete"
}
</script>