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/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 diff --git a/modules/browser_object_navigation.py b/modules/browser_object_navigation.py index ed78462a9..4aeae078e 100644 --- a/modules/browser_object_navigation.py +++ b/modules/browser_object_navigation.py @@ -569,6 +569,23 @@ 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 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]) + self.context_menu.click_on("context-menu-toolbar-open-in-new-tab") + + 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")