From 1561ad21569fbb95ffb6e94985f30bde36455316 Mon Sep 17 00:00:00 2001 From: Sangie Date: Tue, 19 Aug 2025 21:20:01 -0400 Subject: [PATCH 1/4] test 1976523 passed locally --- .gitignore | 2 +- Pipfile | 2 +- modules/browser_object_navigation.py | 24 +++++++++++ modules/data/context_menu.components.json | 6 +++ .../test_open_bookmark_in_new_tab.py | 43 +++++++++++++++++++ 5 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 tests/bookmarks_and_history/test_open_bookmark_in_new_tab.py diff --git a/.gitignore b/.gitignore index 61d0e2f68..542dba796 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ - +/.vscode/ /venv/ .env .report.json diff --git a/Pipfile b/Pipfile index 94087ec5b..a2c46914a 100644 --- a/Pipfile +++ b/Pipfile @@ -11,7 +11,6 @@ pytest = "<8.4" pytest-httpserver = "1.0.12" requests = "<3.0" pytest-xdist = "3.6.1" -pytest-html = "4.1.1" pypom = "2.2.4" taskcluster-taskgraph = "==9.0.0" jsonpath-ng = "1.6.1" @@ -25,6 +24,7 @@ google-auth = "2.32.0" psutil = "<6.1" pytest-json-report = "==1.5.0" beautifulsoup4 = "4.12.3" +pytest-html = "*" [dev-packages] werkzeug = "==3.0.3" diff --git a/modules/browser_object_navigation.py b/modules/browser_object_navigation.py index ed78462a9..598aaa369 100644 --- a/modules/browser_object_navigation.py +++ b/modules/browser_object_navigation.py @@ -569,6 +569,30 @@ def open_bookmark_from_toolbar(self, bookmark_title: str) -> BasePage: self.panel_ui.click_on("bookmark-by-title", labels=[bookmark_title]) return self + @BasePage.context_chrome + def open_bookmark_in_new_tab_via_context_menu( + self, bookmark_title: str + ) -> BasePage: + """ + Right-click bookmark and opens it in a new tab via context menu + + Argument: + bookmark_title: The title of the bookmark to open + """ + # Right-click the bookmark to make the menu appear + self.panel_ui.element_clickable("bookmark-by-title", labels=[bookmark_title]) + self.panel_ui.context_click("bookmark-by-title", labels=[bookmark_title]) + + # Find the menu item we want to click + # We use .fetch() here to get the element without clicking it yet + menu_item = self.context_menu.fetch("context-menu-toolbar-open-in-new-tab") + + # Use ActionChains to perform a more reliable click + actions = ActionChains(self.driver) + actions.move_to_element(menu_item).click().perform() + + return self + @BasePage.context_chrome def open_bookmark_in_new_window_via_context_menu( self, bookmark_title: str diff --git a/modules/data/context_menu.components.json b/modules/data/context_menu.components.json index 283450b6a..e8847b47d 100644 --- a/modules/data/context_menu.components.json +++ b/modules/data/context_menu.components.json @@ -115,6 +115,12 @@ "groups": [] }, + "context-menu-toolbar-open-in-new-tab": { + "selectorData": "placesContext_open:newtab", + "strategy": "id", + "groups": ["doNotCache"] + }, + "context-menu-open-link-in-new-window": { "selectorData": "context-openlink", "strategy": "id", diff --git a/tests/bookmarks_and_history/test_open_bookmark_in_new_tab.py b/tests/bookmarks_and_history/test_open_bookmark_in_new_tab.py new file mode 100644 index 000000000..30f53777f --- /dev/null +++ b/tests/bookmarks_and_history/test_open_bookmark_in_new_tab.py @@ -0,0 +1,43 @@ +import pytest +from selenium.webdriver import Firefox +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait + +from modules.browser_object import Navigation, TabBar +from modules.page_object_generics import GenericPage + + +@pytest.fixture() +def test_case(): + return "134460" + + +BOOKMARK_URL = "https://www.youtube.com/" +BOOKMARK_TITLE = "YouTube" + + +def test_open_bookmark_in_new_tab(driver: Firefox): + """ + C134460: Verify that New Tabs can be opened by right clicking and selecting new tab from the bookmarks. + """ + + # Instantiate objects + nav = Navigation(driver) + tabs = TabBar(driver) + page = GenericPage(driver, url=BOOKMARK_URL) + + # Bookmark the test page via star button + page.open() + nav.add_bookmark_via_star_icon() + + # In a new tab, right-click the bookmarked page in the toolbar and select Open in New Tab from the context menu + tabs.new_tab_by_button() + nav.open_bookmark_in_new_tab_via_context_menu(BOOKMARK_TITLE) + + # Verify that the test page is opened in a new normal tab + tabs.wait_for_num_tabs(3) + driver.switch_to.window(driver.window_handles[-1]) + + WebDriverWait(driver, 5).until(EC.url_contains("youtube")) + assert "youtube" in driver.current_url + page.url_contains("youtube") From c85adf351928c464cc24464287cabacf505eec10 Mon Sep 17 00:00:00 2001 From: Sangie Date: Wed, 20 Aug 2025 17:39:43 -0400 Subject: [PATCH 2/4] rebase main --- Pipfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index a2c46914a..94087ec5b 100644 --- a/Pipfile +++ b/Pipfile @@ -11,6 +11,7 @@ pytest = "<8.4" pytest-httpserver = "1.0.12" requests = "<3.0" pytest-xdist = "3.6.1" +pytest-html = "4.1.1" pypom = "2.2.4" taskcluster-taskgraph = "==9.0.0" jsonpath-ng = "1.6.1" @@ -24,7 +25,6 @@ google-auth = "2.32.0" psutil = "<6.1" pytest-json-report = "==1.5.0" beautifulsoup4 = "4.12.3" -pytest-html = "*" [dev-packages] werkzeug = "==3.0.3" From 46eda3222717e8eb007a71641ec95e02619adf88 Mon Sep 17 00:00:00 2001 From: Tracy Date: Mon, 25 Aug 2025 10:31:27 -0500 Subject: [PATCH 3/4] Refix helper function --- modules/browser_object_navigation.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/modules/browser_object_navigation.py b/modules/browser_object_navigation.py index 598aaa369..4aeae078e 100644 --- a/modules/browser_object_navigation.py +++ b/modules/browser_object_navigation.py @@ -579,17 +579,10 @@ def open_bookmark_in_new_tab_via_context_menu( Argument: bookmark_title: The title of the bookmark to open """ - # Right-click the bookmark to make the menu appear + # Right-click the bookmark and open it in new tabe via context menu item self.panel_ui.element_clickable("bookmark-by-title", labels=[bookmark_title]) self.panel_ui.context_click("bookmark-by-title", labels=[bookmark_title]) - - # Find the menu item we want to click - # We use .fetch() here to get the element without clicking it yet - menu_item = self.context_menu.fetch("context-menu-toolbar-open-in-new-tab") - - # Use ActionChains to perform a more reliable click - actions = ActionChains(self.driver) - actions.move_to_element(menu_item).click().perform() + self.context_menu.click_on("context-menu-toolbar-open-in-new-tab") return self From ab782a59f44a80495264ca8064d453915f0ccc2e Mon Sep 17 00:00:00 2001 From: Tracy Date: Mon, 25 Aug 2025 11:03:21 -0500 Subject: [PATCH 4/4] Add back Selector INFO --- SELECTOR_INFO.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SELECTOR_INFO.md b/SELECTOR_INFO.md index 028f87353..9f9e744d2 100644 --- a/SELECTOR_INFO.md +++ b/SELECTOR_INFO.md @@ -1775,6 +1775,13 @@ Location: Toolbar - any bookmark context menu Path to .json: modules/data/context_menu.components.json ``` ``` +Selector Name: context-menu-toolbar-open-in-new-tab +Selector Data: selectorData": "placesContext_open:newtab" +Description: Context menu option from a Toolbar bookmark +Location: Toolbar - any bookmark context menu +Path to .json: modules/data/context_menu.components.json +``` +``` Selector Name: context-menu-toolbar-open-all-bookmarks Selector Data: placesContext_openBookmarkContainer:tabs Description: Open all bookmarks from the context menu option from a Toolbar bookmark