Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History

js-api

This directory contains tests specific to the JavaScript API to WebAssembly.

These tests exist in the web-platform-tests project, and are included here primarily to simplify sharing them between JavaScript engine implementers.

These tests can be run in a pure JavaScript environment, that is, a JS shell (like V8 or spidermonkey's shells), as well as in the browser.

The tests use the testharness.js library and the multi-global tests setup for smooth integrations with the web-platform-tests project and the existing test infrastructure in implementations.

Metadata

All tests must have the .any.js extension.

In order to be run in the JavaScript shell, a metadata comment to add the jsshell scope to the default set of scopes (window and dedicatedworker) is required at the start of the file:

// META: global=jsshell

Additional JavaScript files can be imported with

// META: script=helper-file.js

Harness

A single test file contains multiple subtests, which are created with one of the following functions:

  • For synchronous tests: test(function, name) runs the function immediately. The test fails if any assertion fails or an exception is thrown while calling the function.
  • For asynchronous tests: promise_test(function, name) where function returns a Promise. The test fails if the returned Promise rejects.

All assertions must be in one of those subtests.

A number of assertion functions are provided, e.g.:

  • assert_equals(x, y);
  • assert_not_equals(x, y);
  • assert_true(x);
  • assert_false(x);
  • assert_unreached();
  • assert_throws(error, function): checks if function throws an appropriate exception (a typical value for error would be new TypeError());
  • assert_class_string(object, class_name): checks if the result of calling Object.prototype.toString on object uses class_name;
  • promise_rejects: assert_throws, but for Promises.

All the above functions also take an optional trailing description argument.

Non-trivial code that runs before the subtests should be put in the function argument to setup(function), to ensure any exceptions are handled gracefully.

Finally, the harness also exposes a format_value function that provides a helpful stringification of its argument.

See the testharness.js documentation for more information.