summaryrefslogtreecommitdiffstats
path: root/browser/components/search/test/browser/browser_searchbar_addEngine.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/search/test/browser/browser_searchbar_addEngine.js')
-rw-r--r--browser/components/search/test/browser/browser_searchbar_addEngine.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/browser/components/search/test/browser/browser_searchbar_addEngine.js b/browser/components/search/test/browser/browser_searchbar_addEngine.js
new file mode 100644
index 0000000000..7d72d63dab
--- /dev/null
+++ b/browser/components/search/test/browser/browser_searchbar_addEngine.js
@@ -0,0 +1,99 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/*
+ * Tests the Add Search Engine option in the search bar.
+ */
+
+"use strict";
+
+const { PromptTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/PromptTestUtils.sys.mjs"
+);
+
+const searchPopup = document.getElementById("PopupSearchAutoComplete");
+let searchbar;
+
+add_setup(async function () {
+ searchbar = await gCUITestUtils.addSearchBar();
+
+ registerCleanupFunction(async function () {
+ gCUITestUtils.removeSearchBar();
+ Services.search.restoreDefaultEngines();
+ });
+});
+
+add_task(async function test_invalidEngine() {
+ let rootDir = getRootDirectory(gTestPath);
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ rootDir + "opensearch.html"
+ );
+ let promise = promiseEvent(searchPopup, "popupshown");
+ await EventUtils.synthesizeMouseAtCenter(
+ searchbar.querySelector(".searchbar-search-button"),
+ {}
+ );
+ await promise;
+
+ let addEngineList = searchPopup.querySelectorAll(
+ ".searchbar-engine-one-off-add-engine"
+ );
+ let item = addEngineList[addEngineList.length - 1];
+
+ await TestUtils.waitForCondition(
+ () => item.tooltipText.includes("engineInvalid"),
+ "Wait until the tooltip will be correct"
+ );
+ Assert.ok(true, "Last item should be the invalid entry");
+
+ let promptPromise = PromptTestUtils.waitForPrompt(tab.linkedBrowser, {
+ modalType: Ci.nsIPromptService.MODAL_TYPE_CONTENT,
+ promptType: "alert",
+ });
+
+ await EventUtils.synthesizeMouseAtCenter(item, {});
+
+ let prompt = await promptPromise;
+
+ Assert.ok(
+ prompt.ui.infoBody.textContent.includes(
+ "http://mochi.test:8888/browser/browser/components/search/test/browser/testEngine_404.xml"
+ ),
+ "Should have included the url in the prompt body"
+ );
+
+ await PromptTestUtils.handlePrompt(prompt);
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_onOnlyDefaultEngine() {
+ info("Remove engines except default");
+ const defaultEngine = Services.search.defaultEngine;
+ const engines = await Services.search.getVisibleEngines();
+ for (const engine of engines) {
+ if (defaultEngine.name !== engine.name) {
+ await Services.search.removeEngine(engine);
+ }
+ }
+
+ info("Show popup");
+ const rootDir = getRootDirectory(gTestPath);
+ const tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ rootDir + "opensearch.html"
+ );
+ const onShown = promiseEvent(searchPopup, "popupshown");
+ await EventUtils.synthesizeMouseAtCenter(
+ searchbar.querySelector(".searchbar-search-button"),
+ {}
+ );
+ await onShown;
+
+ const addEngineList = searchPopup.querySelectorAll(
+ ".searchbar-engine-one-off-add-engine"
+ );
+ Assert.equal(addEngineList.length, 3, "Add engines should be shown");
+
+ BrowserTestUtils.removeTab(tab);
+});