Source code
Revision control
Copy as Markdown
Other Tools
/* Any copyright is dedicated to the Public Domain.
Services.scriptloader.loadSubScript(
this
);
async function doSuggestVisibilityTest({
initialSuggestEnabled,
initialExpected,
nimbusVariables,
newExpected = initialExpected,
pane = "search",
}) {
info(
"Running Suggest visibility test: " +
JSON.stringify(
{
initialSuggestEnabled,
initialExpected,
nimbusVariables,
newExpected,
},
null,
2
)
);
// Set the initial enabled status.
await SpecialPowers.pushPrefEnv({
set: [["browser.urlbar.quicksuggest.enabled", initialSuggestEnabled]],
});
// Open prefs and check the initial visibility.
await openPreferencesViaOpenPreferencesAPI(pane, { leaveOpen: true });
await assertSuggestVisibility(initialExpected);
// Install a Nimbus experiment.
await QuickSuggestTestUtils.withExperiment({
valueOverrides: nimbusVariables,
callback: async () => {
// Check visibility again.
await assertSuggestVisibility(newExpected);
// To make sure visibility is properly updated on load, close the tab,
// open the prefs again, and check visibility.
gBrowser.removeCurrentTab();
await openPreferencesViaOpenPreferencesAPI(pane, { leaveOpen: true });
await assertSuggestVisibility(newExpected);
},
});
gBrowser.removeCurrentTab();
await SpecialPowers.popPrefEnv();
}
/**
* Checks the visibility of the Suggest UI.
*
* @param {object} expectedByElementId
* An object that maps IDs of elements in the current tab to objects with the
* following properties:
*
* {bool} isVisible
* Whether the element is expected to be visible.
* {string} l10nId
* The expected l10n ID of the element. Optional.
*/
async function assertSuggestVisibility(expectedByElementId) {
let doc = gBrowser.selectedBrowser.contentDocument;
for (let [elementId, { isVisible, l10nId }] of Object.entries(
expectedByElementId
)) {
let element = doc.getElementById(elementId);
await TestUtils.waitForCondition(
() => BrowserTestUtils.isVisible(element) == isVisible,
"Waiting for element visbility: " +
JSON.stringify({ elementId, isVisible })
);
Assert.strictEqual(
BrowserTestUtils.isVisible(element),
isVisible,
"Element should have expected visibility: " + elementId
);
if (l10nId) {
Assert.equal(
element.dataset.l10nId,
l10nId,
"The l10n ID should be correct for element: " + elementId
);
}
}
}