Source code
Revision control
Copy as Markdown
Other Tools
/* Any copyright is dedicated to the Public Domain.
"use strict";
const ADDON_ID = "homepage-extension@tests.mozilla.org";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.settings-redesign.enabled", true],
["browser.startup.homepage", "about:home"],
],
});
});
add_task(async function test_extension_shows_in_windows_dropdown() {
let extension = ExtensionTestUtils.loadExtension({
useAddonManager: "permanent",
manifest: {
name: "Test Homepage Extension",
browser_specific_settings: { gecko: { id: ADDON_ID } },
},
});
await extension.startup();
let { win, tab } = await openHomePreferences();
let control = await settingControlRenders("homepageNewWindows", win);
let select = control.controlEl;
let nativeSelect = select.inputEl;
info("Waiting for new windows dropdown to show the extension");
await BrowserTestUtils.waitForMutationCondition(
select,
{ attributes: true, childList: true, subtree: true },
() => nativeSelect.value === ADDON_ID
);
let extensionOption = select.querySelector(
`moz-option[value="${CSS.escape(ADDON_ID)}"]`
);
ok(extensionOption, "Extension option exists in the dropdown");
// The pref may already have been written by the time we get here, so
// check before waiting.
if (
!Services.prefs
.getStringPref("browser.startup.homepage", "")
.includes("example.com")
) {
await TestUtils.waitForPrefChange("browser.startup.homepage", v =>
v.includes("example.com")
);
}
await extension.unload();
BrowserTestUtils.removeTab(tab);
});