summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_toolbarbutton_menu_show_in_folder.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_toolbarbutton_menu_show_in_folder.js')
-rw-r--r--browser/components/places/tests/browser/browser_toolbarbutton_menu_show_in_folder.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_toolbarbutton_menu_show_in_folder.js b/browser/components/places/tests/browser/browser_toolbarbutton_menu_show_in_folder.js
new file mode 100644
index 0000000000..02720cfa2e
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_toolbarbutton_menu_show_in_folder.js
@@ -0,0 +1,92 @@
+/**
+ * This test checks that the Show in Folder context menu item in the
+ * bookmarks menu under the app menu actually shows the bookmark in
+ * its folder location in the sidebar.
+ */
+"use strict";
+
+const TEST_PARENT_FOLDER = "The Parent Folder";
+const TEST_URL = "https://example.com/";
+const TEST_TITLE = "Test Bookmark";
+
+let appMenuButton = document.getElementById("PanelUI-menu-button");
+let bookmarksAppMenu = document.getElementById("PanelUI-bookmarks");
+let sidebarWasAlreadyOpen = SidebarUI.isOpen;
+
+const { CustomizableUITestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/CustomizableUITestUtils.sys.mjs"
+);
+let gCUITestUtils = new CustomizableUITestUtils(window);
+
+add_task(async function toolbarBookmarkShowInFolder() {
+ let parentFolder = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ title: TEST_PARENT_FOLDER,
+ });
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: parentFolder.guid,
+ url: TEST_URL,
+ title: TEST_TITLE,
+ });
+
+ // Open app menu and select bookmarks view
+ await gCUITestUtils.openMainMenu();
+ let appMenuBookmarks = document.getElementById("appMenu-bookmarks-button");
+ appMenuBookmarks.click();
+ let bookmarksView = document.getElementById("PanelUI-bookmarks");
+ let bmViewPromise = BrowserTestUtils.waitForEvent(bookmarksView, "ViewShown");
+ await bmViewPromise;
+
+ // Find the test bookmark and open the context menu on it
+ let list = document.getElementById("panelMenu_bookmarksMenu");
+ let listItem = [...list.children].find(node => node.label == TEST_TITLE);
+ let placesContext = document.getElementById("placesContext");
+ let contextPromise = BrowserTestUtils.waitForEvent(
+ placesContext,
+ "popupshown"
+ );
+ EventUtils.synthesizeMouseAtCenter(listItem, {
+ button: 2,
+ type: "contextmenu",
+ });
+ await contextPromise;
+
+ // Select Show in Folder and wait for the sidebar to show up
+ let sidebarShownPromise = BrowserTestUtils.waitForEvent(
+ window,
+ "SidebarShown"
+ );
+ placesContext.activateItem(
+ document.getElementById("placesContext_showInFolder")
+ );
+ await sidebarShownPromise;
+
+ // Get the sidebar tree element and find the selected node
+ let sidebar = document.getElementById("sidebar");
+ let tree = sidebar.contentDocument.getElementById("bookmarks-view");
+ let treeNode = tree.selectedNode;
+
+ Assert.equal(
+ treeNode.parent.bookmarkGuid,
+ parentFolder.guid,
+ "Containing folder node is correct"
+ );
+ Assert.equal(
+ treeNode.title,
+ listItem.label,
+ "The bookmark title matches selected node"
+ );
+ Assert.equal(
+ treeNode.uri,
+ TEST_URL,
+ "The bookmark URL matches selected node"
+ );
+
+ // Cleanup
+ await PlacesUtils.bookmarks.eraseEverything();
+ if (!sidebarWasAlreadyOpen) {
+ SidebarUI.hide();
+ }
+ await gCUITestUtils.hideMainMenu();
+});