summaryrefslogtreecommitdiffstats
path: root/browser/components/search/test/browser/browser_tooManyEnginesOffered.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/search/test/browser/browser_tooManyEnginesOffered.js')
-rw-r--r--browser/components/search/test/browser/browser_tooManyEnginesOffered.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/browser/components/search/test/browser/browser_tooManyEnginesOffered.js b/browser/components/search/test/browser/browser_tooManyEnginesOffered.js
new file mode 100644
index 0000000000..89647f9854
--- /dev/null
+++ b/browser/components/search/test/browser/browser_tooManyEnginesOffered.js
@@ -0,0 +1,68 @@
+"use strict";
+
+// This test makes sure that when a page offers many search engines,
+// a limited number of add-engine items will be shown in the searchbar.
+
+const searchPopup = document.getElementById("PopupSearchAutoComplete");
+
+add_task(async function test_setup() {
+ await gCUITestUtils.addSearchBar();
+
+ await Services.search.init();
+ registerCleanupFunction(() => {
+ gCUITestUtils.removeSearchBar();
+ });
+});
+
+add_task(async function test() {
+ let searchbar = BrowserSearch.searchBar;
+
+ let rootDir = getRootDirectory(gTestPath);
+ let url = rootDir + "tooManyEnginesOffered.html";
+ await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
+
+ // Open the search popup.
+ let promise = promiseEvent(searchPopup, "popupshown");
+ info("Opening search panel");
+ searchbar.focus();
+ // In TV we may try opening too early, when the searchbar is not ready yet.
+ await TestUtils.waitForCondition(
+ () => BrowserSearch.searchBar.textbox.controller.input,
+ "Wait for the searchbar controller to connect"
+ );
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ await promise;
+
+ const addEngineList = searchPopup.oneOffButtons._getAddEngines();
+ Assert.equal(
+ addEngineList.length,
+ 6,
+ "Expected number of engines retrieved from web page"
+ );
+
+ const displayedAddEngineList =
+ searchPopup.oneOffButtons.buttons.querySelectorAll(
+ ".searchbar-engine-one-off-add-engine"
+ );
+ Assert.equal(
+ displayedAddEngineList.length,
+ searchPopup.oneOffButtons._maxInlineAddEngines,
+ "Expected number of engines displayed on popup"
+ );
+
+ for (let i = 0; i < displayedAddEngineList.length; i++) {
+ const engine = addEngineList[i];
+ const item = displayedAddEngineList[i];
+ Assert.equal(
+ item.getAttribute("engine-name"),
+ engine.title,
+ "Expected engine is displaying"
+ );
+ }
+
+ promise = promiseEvent(searchPopup, "popuphidden");
+ EventUtils.synthesizeKey("KEY_Escape", {}, searchPopup.ownerGlobal);
+ await promise;
+
+ gBrowser.removeCurrentTab();
+});