// testharness file with WebExtensions utilities /** * Loads the WebExtension at the path specified and runs the tests defined in the extension's resources. * Listens to messages sent from the user agent and converts the `browser.test` assertions * into testharness.js assertions. * * @param {string} extensionPath - a path to the extension's resources. */ setup({ explicit_done: true }) globalThis.runTestsWithWebExtension = function(extensionPath) { test_driver.install_web_extension({ type: "path", path: extensionPath }) .then((result) => { let test; browser.test.onTestStarted.addListener((data) => { test = async_test(data.testName) }) browser.test.onTestFinished.addListener((data) => { test.step(() => { let description = data.message ? `${data.assertionDescription}. ${data.message}` : data.assertionDescription assert_true(data.result, description) }) test.done() if (!data.result) { test.set_status(test.FAIL) } if (!data.remainingTests) { test_driver.uninstall_web_extension(result.extension).then(() => { done() }) } }) }) }