summaryrefslogtreecommitdiffstats
path: root/browser/components/search/test/browser/browser_oneOffContextMenu.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/search/test/browser/browser_oneOffContextMenu.js')
-rw-r--r--browser/components/search/test/browser/browser_oneOffContextMenu.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/browser/components/search/test/browser/browser_oneOffContextMenu.js b/browser/components/search/test/browser/browser_oneOffContextMenu.js
new file mode 100644
index 0000000000..c036a5f007
--- /dev/null
+++ b/browser/components/search/test/browser/browser_oneOffContextMenu.js
@@ -0,0 +1,89 @@
+"use strict";
+
+const TEST_ENGINE_NAME = "Foo";
+const TEST_ENGINE_BASENAME = "testEngine.xml";
+
+let searchbar;
+let searchIcon;
+
+add_setup(async function () {
+ searchbar = await gCUITestUtils.addSearchBar();
+ registerCleanupFunction(() => {
+ gCUITestUtils.removeSearchBar();
+ });
+ searchIcon = searchbar.querySelector(".searchbar-search-button");
+
+ await SearchTestUtils.promiseNewSearchEngine({
+ url: getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME,
+ });
+});
+
+add_task(async function telemetry() {
+ let searchPopup = document.getElementById("PopupSearchAutoComplete");
+ let oneOffInstance = searchPopup.oneOffButtons;
+
+ let oneOffButtons = oneOffInstance.buttons;
+
+ // Open the popup.
+ let shownPromise = promiseEvent(searchPopup, "popupshown");
+ let builtPromise = promiseEvent(oneOffInstance, "rebuild");
+ info("Opening search panel");
+ EventUtils.synthesizeMouseAtCenter(searchIcon, {});
+ await Promise.all([shownPromise, builtPromise]);
+
+ // Get the one-off button for the test engine.
+ let oneOffButton;
+ for (let node of oneOffButtons.children) {
+ if (node.engine && node.engine.name == TEST_ENGINE_NAME) {
+ oneOffButton = node;
+ break;
+ }
+ }
+ Assert.notEqual(
+ oneOffButton,
+ undefined,
+ "One-off for test engine should exist"
+ );
+
+ // Open the context menu on the one-off.
+ let contextMenu = oneOffInstance.querySelector(
+ ".search-one-offs-context-menu"
+ );
+ let promise = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
+ EventUtils.synthesizeMouseAtCenter(oneOffButton, {
+ type: "contextmenu",
+ button: 2,
+ });
+ await promise;
+
+ // Click the Search in New Tab menu item.
+ let searchInNewTabMenuItem = contextMenu.querySelector(
+ ".search-one-offs-context-open-in-new-tab"
+ );
+ promise = BrowserTestUtils.waitForNewTab(gBrowser);
+ contextMenu.activateItem(searchInNewTabMenuItem);
+ let tab = await promise;
+
+ // By default the search will open in the background and the popup will stay open:
+ promise = promiseEvent(searchPopup, "popuphidden");
+ info("Closing search panel");
+ EventUtils.synthesizeKey("KEY_Escape");
+ await promise;
+
+ // Check the loaded tab.
+ Assert.equal(
+ tab.linkedBrowser.currentURI.spec,
+ "http://mochi.test:8888/browser/browser/components/search/test/browser/",
+ "Expected search tab should have loaded"
+ );
+
+ BrowserTestUtils.removeTab(tab);
+
+ // Move the cursor out of the panel area to avoid messing with other tests.
+ await EventUtils.promiseNativeMouseEvent({
+ type: "mousemove",
+ target: searchbar,
+ offsetX: 0,
+ offsetY: 0,
+ });
+});