forked from mirrors/gecko-dev
344 lines
9.9 KiB
JavaScript
344 lines
9.9 KiB
JavaScript
"use strict";
|
|
/**
|
|
* This file contains tests for the Preferences search bar.
|
|
*/
|
|
|
|
requestLongerTimeout(6);
|
|
|
|
/**
|
|
* Tests to see if search bar is being shown when pref is turned on
|
|
*/
|
|
add_task(async function show_search_bar_when_pref_is_enabled() {
|
|
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {
|
|
leaveOpen: true,
|
|
});
|
|
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
|
is_element_visible(searchInput, "Search box should be shown");
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|
|
/**
|
|
* Test for "Search Result" panel.
|
|
* After it runs a search, it tests if the "Search Results" panel is the only selected category.
|
|
* The search is then cleared, it then tests if the "General" panel is the only selected category.
|
|
*/
|
|
add_task(async function show_search_results_pane_only_then_revert_to_general() {
|
|
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {
|
|
leaveOpen: true,
|
|
});
|
|
|
|
// Performs search
|
|
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
|
|
|
is(
|
|
searchInput,
|
|
gBrowser.contentDocument.activeElement.closest("#searchInput"),
|
|
"Search input should be focused when visiting preferences"
|
|
);
|
|
|
|
let query = "password";
|
|
let searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == query
|
|
);
|
|
EventUtils.sendString(query);
|
|
await searchCompletedPromise;
|
|
|
|
let categoriesList = gBrowser.contentDocument.getElementById("categories");
|
|
|
|
for (let i = 0; i < categoriesList.childElementCount; i++) {
|
|
let child = categoriesList.itemChildren[i];
|
|
is(child.selected, false, "No other panel should be selected");
|
|
}
|
|
// Takes search off
|
|
searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == ""
|
|
);
|
|
let count = query.length;
|
|
while (count--) {
|
|
EventUtils.sendKey("BACK_SPACE");
|
|
}
|
|
await searchCompletedPromise;
|
|
|
|
// Checks if back to generalPane
|
|
for (let i = 0; i < categoriesList.childElementCount; i++) {
|
|
let child = categoriesList.itemChildren[i];
|
|
if (child.id == "category-general") {
|
|
is(child.selected, true, "General panel should be selected");
|
|
} else if (child.id) {
|
|
is(child.selected, false, "No other panel should be selected");
|
|
}
|
|
}
|
|
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|
|
/**
|
|
* Test for "password" case. When we search "password", it should show the "passwordGroup"
|
|
*/
|
|
add_task(async function search_for_password_show_passwordGroup() {
|
|
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {
|
|
leaveOpen: true,
|
|
});
|
|
|
|
// Performs search
|
|
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
|
|
|
is(
|
|
searchInput,
|
|
gBrowser.contentDocument.activeElement.closest("#searchInput"),
|
|
"Search input should be focused when visiting preferences"
|
|
);
|
|
|
|
let query = "password";
|
|
let searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == query
|
|
);
|
|
EventUtils.sendString(query);
|
|
await searchCompletedPromise;
|
|
|
|
let mainPrefTag = gBrowser.contentDocument.getElementById("mainPrefPane");
|
|
|
|
for (let i = 0; i < mainPrefTag.childElementCount; i++) {
|
|
let child = mainPrefTag.children[i];
|
|
if (
|
|
child.id == "passwordsGroup" ||
|
|
child.id == "weavePrefsDeck" ||
|
|
child.id == "header-searchResults" ||
|
|
child.id == "certSelection" ||
|
|
child.id == "connectionGroup" ||
|
|
child.id == "dataMigrationGroup"
|
|
) {
|
|
is_element_visible(child, "Should be in search results");
|
|
} else if (child.id) {
|
|
is_element_hidden(child, "Should not be in search results");
|
|
}
|
|
}
|
|
|
|
// Takes search off
|
|
searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == ""
|
|
);
|
|
let count = query.length;
|
|
while (count--) {
|
|
EventUtils.sendKey("BACK_SPACE");
|
|
}
|
|
await searchCompletedPromise;
|
|
|
|
let expectedChildren = [
|
|
"paneGeneral",
|
|
"startupGroup",
|
|
"languagesGroup",
|
|
"webAppearanceGroup",
|
|
"colorsGroup",
|
|
"fontsGroup",
|
|
"zoomGroup",
|
|
"downloadsGroup",
|
|
"applicationsGroup",
|
|
"drmGroup",
|
|
"browsingGroup",
|
|
"performanceGroup",
|
|
"connectionGroup",
|
|
"generalCategory",
|
|
"languageAndAppearanceCategory",
|
|
"filesAndApplicationsCategory",
|
|
"performanceCategory",
|
|
"browsingCategory",
|
|
"networkProxyCategory",
|
|
"dataMigrationGroup",
|
|
"translationsGroup",
|
|
];
|
|
// Only visible for non-MSIX builds
|
|
if (
|
|
AppConstants.platform !== "win" ||
|
|
!Services.sysinfo.getProperty("hasWinPackageId", false)
|
|
) {
|
|
expectedChildren.push("updatesCategory");
|
|
expectedChildren.push("updateApp");
|
|
}
|
|
// Checks if back to generalPane
|
|
for (let i = 0; i < mainPrefTag.childElementCount; i++) {
|
|
let child = mainPrefTag.children[i];
|
|
if (expectedChildren.includes(child.id)) {
|
|
is_element_visible(child, `Should be in general tab: ${child.id}`);
|
|
} else if (child.id) {
|
|
is_element_hidden(child, `Should not be in general tab: ${child.id}`);
|
|
}
|
|
}
|
|
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|
|
/**
|
|
* Test for if nothing is found
|
|
*/
|
|
add_task(async function search_with_nothing_found() {
|
|
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {
|
|
leaveOpen: true,
|
|
});
|
|
|
|
let noResultsEl = gBrowser.contentDocument.querySelector(
|
|
"#no-results-message"
|
|
);
|
|
let sorryMsgQueryEl = gBrowser.contentDocument.getElementById(
|
|
"sorry-message-query"
|
|
);
|
|
|
|
is_element_hidden(noResultsEl, "Should not be in search results yet");
|
|
|
|
// Performs search
|
|
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
|
|
|
is(
|
|
searchInput,
|
|
gBrowser.contentDocument.activeElement.closest("#searchInput"),
|
|
"Search input should be focused when visiting preferences"
|
|
);
|
|
|
|
let query = "coach";
|
|
let searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == query
|
|
);
|
|
EventUtils.sendString(query);
|
|
await searchCompletedPromise;
|
|
|
|
is_element_visible(noResultsEl, "Should be in search results");
|
|
is(
|
|
sorryMsgQueryEl.textContent,
|
|
query,
|
|
"sorry-message-query should contain the query"
|
|
);
|
|
|
|
// Takes search off
|
|
searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == ""
|
|
);
|
|
let count = query.length;
|
|
while (count--) {
|
|
EventUtils.sendKey("BACK_SPACE");
|
|
}
|
|
await searchCompletedPromise;
|
|
|
|
is_element_hidden(noResultsEl, "Should not be in search results");
|
|
is(
|
|
sorryMsgQueryEl.textContent.length,
|
|
0,
|
|
"sorry-message-query should be empty"
|
|
);
|
|
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|
|
/**
|
|
* Test for if we go back to general tab after search case
|
|
*/
|
|
add_task(async function exiting_search_reverts_to_general_pane() {
|
|
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
|
|
let generalPane = gBrowser.contentDocument.getElementById("generalCategory");
|
|
|
|
is_element_hidden(generalPane, "Should not be in general");
|
|
|
|
// Performs search
|
|
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
|
|
|
is(
|
|
searchInput,
|
|
gBrowser.contentDocument.activeElement.closest("#searchInput"),
|
|
"Search input should be focused when visiting preferences"
|
|
);
|
|
|
|
let query = "password";
|
|
let searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == query
|
|
);
|
|
EventUtils.sendString(query);
|
|
await searchCompletedPromise;
|
|
|
|
// Takes search off
|
|
searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == ""
|
|
);
|
|
let count = query.length;
|
|
while (count--) {
|
|
EventUtils.sendKey("BACK_SPACE");
|
|
}
|
|
await searchCompletedPromise;
|
|
|
|
// Checks if back to normal
|
|
is_element_visible(generalPane, "Should be in generalPane");
|
|
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|
|
/**
|
|
* Test for if we go to another tab after searching
|
|
*/
|
|
add_task(async function changing_tabs_after_searching() {
|
|
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {
|
|
leaveOpen: true,
|
|
});
|
|
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
|
|
|
is(
|
|
searchInput,
|
|
gBrowser.contentDocument.activeElement.closest("#searchInput"),
|
|
"Search input should be focused when visiting preferences"
|
|
);
|
|
|
|
let query = "permission";
|
|
let searchCompletedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.contentWindow,
|
|
"PreferencesSearchCompleted",
|
|
evt => evt.detail == query
|
|
);
|
|
EventUtils.sendString(query);
|
|
await searchCompletedPromise;
|
|
|
|
// Search header should be shown for the permissions group
|
|
let permissionsSearchHeader = gBrowser.contentDocument.querySelector(
|
|
"#permissionsGroup .search-header"
|
|
);
|
|
is(
|
|
permissionsSearchHeader.hidden,
|
|
false,
|
|
"Permissions search-header should be visible"
|
|
);
|
|
|
|
let privacyCategory =
|
|
gBrowser.contentDocument.getElementById("category-privacy");
|
|
privacyCategory.click();
|
|
is(searchInput.value, "", "search input should be empty");
|
|
let categoriesList = gBrowser.contentDocument.getElementById("categories");
|
|
for (let i = 0; i < categoriesList.childElementCount; i++) {
|
|
let child = categoriesList.itemChildren[i];
|
|
if (child.id == "category-privacy") {
|
|
is(child.selected, true, "Privacy panel should be selected");
|
|
} else if (child.id) {
|
|
is(child.selected, false, "No other panel should be selected");
|
|
}
|
|
}
|
|
|
|
// Search header should now be hidden when viewing the permissions group not through a search
|
|
is(
|
|
permissionsSearchHeader.hidden,
|
|
true,
|
|
"Permissions search-header should be hidden"
|
|
);
|
|
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|