fune/toolkit/components/extensions/test/browser/browser_ext_test_mock.js
William Durand 64e8f3272d Bug 1797050 - Part 3 - Use browser_specific_settings instead of applications in existing WebExt tests. r=rpl,geckoview-reviewers,extension-reviewers,owlish
We want to encourage extension developers to use `browser_specific_settings` instead of `applications`,
which will be unsupported in Manifest Version 3+. This patch prepares the introduction of a new warning
(that is usually converted into an error in the test environment).

Differential Revision: https://phabricator.services.mozilla.com/D160059
2022-10-28 09:53:09 +00:00

47 lines
1.8 KiB
JavaScript

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
// This test verifies that the extension mocks behave consistently, regardless
// of test type (xpcshell vs browser test).
// See also toolkit/components/extensions/test/xpcshell/test_ext_test_mock.js
// Check the state of the extension object. This should be consistent between
// browser tests and xpcshell tests.
async function checkExtensionStartupAndUnload(ext) {
await ext.startup();
Assert.ok(ext.id, "Extension ID should be available");
Assert.ok(ext.uuid, "Extension UUID should be available");
await ext.unload();
// Once set nothing clears the UUID.
Assert.ok(ext.uuid, "Extension UUID exists after unload");
}
add_task(async function test_MockExtension() {
// When "useAddonManager" is set, a MockExtension is created in the main
// process, which does not necessarily behave identically to an Extension.
let ext = ExtensionTestUtils.loadExtension({
// xpcshell/test_ext_test_mock.js tests "temporary", so here we use
// "permanent" to have even more test coverage.
useAddonManager: "permanent",
manifest: {
browser_specific_settings: { gecko: { id: "@permanent-mock-extension" } },
},
});
Assert.ok(!ext.id, "Extension ID is initially unavailable");
Assert.ok(!ext.uuid, "Extension UUID is initially unavailable");
await checkExtensionStartupAndUnload(ext);
Assert.ok(ext.id, "Extension ID exists after unload");
});
add_task(async function test_generated_Extension() {
let ext = ExtensionTestUtils.loadExtension({
manifest: {},
});
Assert.ok(!ext.id, "Extension ID is initially unavailable");
Assert.ok(!ext.uuid, "Extension UUID is initially unavailable");
await checkExtensionStartupAndUnload(ext);
Assert.ok(ext.id, "Extension ID exists after unload");
});