Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const HOMEPAGE_PREF = "browser.startup.homepage";
const DEFAULT_HOMEPAGE_URL = "about:home";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.settings-redesign.enabled", true],
["identity.fxaccounts.account.device.name", ""],
],
});
});
add_task(async function test_custom_homepage_button_visibility() {
await SpecialPowers.pushPrefEnv({
set: [[HOMEPAGE_PREF, DEFAULT_HOMEPAGE_URL]],
});
let { win, tab } = await openHomePreferences();
let customHomepageButtonControl = getSettingControl(
"homepageGoToCustomHomepageUrlPanel",
win
);
ok(
!customHomepageButtonControl ||
BrowserTestUtils.isHidden(customHomepageButtonControl),
"Custom homepage button is hidden when homepage is default"
);
let homepageNewWindowsControl = await settingControlRenders(
"homepageNewWindows",
win
);
let select = homepageNewWindowsControl.controlEl;
await changeMozSelectValue(select, "custom");
customHomepageButtonControl = await settingControlRenders(
"homepageGoToCustomHomepageUrlPanel",
win
);
ok(
customHomepageButtonControl,
"Custom homepage button exists when custom is selected"
);
ok(
BrowserTestUtils.isVisible(customHomepageButtonControl),
"Custom homepage button is visible when custom is selected"
);
await BrowserTestUtils.removeTab(tab);
});
add_task(async function test_custom_homepage_button_description_shows_urls() {
await SpecialPowers.pushPrefEnv({
set: [[HOMEPAGE_PREF, "https://example.com"]],
});
let { win, tab } = await openHomePreferences();
let homepageNewWindowsControl = await settingControlRenders(
"homepageNewWindows",
win
);
let select = homepageNewWindowsControl.controlEl;
await changeMozSelectValue(select, "custom");
let customHomepageButtonControl = await settingControlRenders(
"homepageGoToCustomHomepageUrlPanel",
win
);
ok(customHomepageButtonControl, "Custom homepage button exists");
let button = customHomepageButtonControl.controlEl;
let description = button.descriptionEl;
ok(description, "Button has description element");
ok(
description.textContent.includes("example.com"),
"Description includes 'example.com'"
);
await SpecialPowers.pushPrefEnv({
set: [[HOMEPAGE_PREF, "https://example.com|https://test.org"]],
});
await TestUtils.waitForCondition(
() =>
description.textContent.includes("example.com") &&
description.textContent.includes("test.org"),
"Wait for description to update with multiple URLs"
);
ok(
description.textContent.includes("example.com, test.org"),
"Description shows both URLs separated by comma"
);
await BrowserTestUtils.removeTab(tab);
});
add_task(async function test_custom_homepage_button_navigates_to_subpage() {
await SpecialPowers.pushPrefEnv({
set: [[HOMEPAGE_PREF, "https://example.com"]],
});
let { win, tab } = await openHomePreferences();
let homepageNewWindowsControl = await settingControlRenders(
"homepageNewWindows",
win
);
let select = homepageNewWindowsControl.controlEl;
await changeMozSelectValue(select, "custom");
let customHomepageButtonControl = await settingControlRenders(
"homepageGoToCustomHomepageUrlPanel",
win
);
let button = customHomepageButtonControl.controlEl;
let paneChangePromise = waitForPaneChange("customHomepage", win);
button.click();
await paneChangePromise;
let doc = gBrowser.contentDocument;
is(
doc.location.hash,
"#customHomepage",
"Navigated to custom homepage subpage"
);
await BrowserTestUtils.removeTab(tab);
});