From a043fb49022651ad38d99c716168ea1bfce53aa7 Mon Sep 17 00:00:00 2001 From: Hani Yacoub Date: Tue, 28 Oct 2025 10:31:57 +0200 Subject: [PATCH 1/2] test searchmode change tab --- .../test_searchmode_change_tab.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/address_bar_and_search/test_searchmode_change_tab.py diff --git a/tests/address_bar_and_search/test_searchmode_change_tab.py b/tests/address_bar_and_search/test_searchmode_change_tab.py new file mode 100644 index 000000000..63ff58d29 --- /dev/null +++ b/tests/address_bar_and_search/test_searchmode_change_tab.py @@ -0,0 +1,49 @@ +from time import sleep + +import pytest +from selenium.webdriver import Firefox + +from modules.browser_object_navigation import Navigation +from modules.browser_object_tabbar import TabBar + +TEXT = "Fire" + + +@pytest.mark.parametrize("engine1, engine2", [("Bing", "DuckDuckGo")]) +def test_searchmode_change_tab(driver: Firefox, engine1, engine2): + """ + C3028732 - Verify that searchmode with change tab works correctly + """ + + # Instantiate objects + nav = Navigation(driver) + tabs = TabBar(driver) + + # Click on the USB + nav.click_search_mode_switcher() + + # Click on Bing engine + nav.set_search_mode(engine1) + + # Open a new tab and click on the USB + nav.open_and_switch_to_new_window("tab") + nav.click_search_mode_switcher() + + # Click on the Duckduckgo engine + nav.set_search_mode(engine2) + + # Go back to tab from step #2 + tabs.click_tab_by_index(1) + + # Type any word and hit enter + nav.type_in_awesome_bar(TEXT) + + # Check search is done using Bing engine + + # Go back to tab on step #4 + tabs.click_tab_by_index(2) + + # Type any word and hit enter + nav.type_in_awesome_bar(TEXT) + + # Check that search is done using the duckduckgo engine From f8e5ead801d4980e8229788ff1151f02a69f71f8 Mon Sep 17 00:00:00 2001 From: Hani Yacoub Date: Tue, 28 Oct 2025 13:06:30 +0200 Subject: [PATCH 2/2] Test searchmode change tab --- SELECTOR_INFO.md | 7 +++++++ modules/browser_object_navigation.py | 12 +++++++++++ modules/data/navigation.components.json | 7 +++++++ .../test_searchmode_change_tab.py | 21 ++++++++++++++----- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/SELECTOR_INFO.md b/SELECTOR_INFO.md index 3c9009042..f3dd9a30c 100644 --- a/SELECTOR_INFO.md +++ b/SELECTOR_INFO.md @@ -3168,6 +3168,13 @@ Description: Status panel URL label Location: newtab page bottom left corner on link hover Path to .json: modules/data/navigation.components.json ``` +``` +Selector Name: searchmode-engine +Selector Data: toolbarbutton#urlbar-searchmode-switcher[label*='{engine}, pick a search engine'] +Description: Searchmode engine label +Location: Address bar searchmode engine label +Path to .json: modules/data/navigation.components.json +``` #### panel_ui ``` Selector name: panel-ui-button diff --git a/modules/browser_object_navigation.py b/modules/browser_object_navigation.py index 38e11b7a5..157807462 100644 --- a/modules/browser_object_navigation.py +++ b/modules/browser_object_navigation.py @@ -827,3 +827,15 @@ def verify_status_panel_url(self, expected_url: str): assert expected_url in actual_url, ( f"Expected '{expected_url}' in status panel URL, got '{actual_url}'" ) + + @BasePage.context_chrome + def verify_engine_returned(self, engine: str) -> None: + """ + Verify that the given search engine is visible in the search mode switcher. + """ + engine_locator = ( + self.elements["searchmode-engine"]["selectorData"].format(engine=engine) + ) + self.wait.until( + EC.visibility_of_element_located((By.CSS_SELECTOR, engine_locator)) + ) diff --git a/modules/data/navigation.components.json b/modules/data/navigation.components.json index 3165f2a5e..339eb97be 100644 --- a/modules/data/navigation.components.json +++ b/modules/data/navigation.components.json @@ -609,5 +609,12 @@ "selectorData": "statuspanel-label", "strategy": "id", "groups": [] + }, + + "searchmode-engine": { + "selectorData": "toolbarbutton#urlbar-searchmode-switcher[label*='{engine}, pick a search engine']", + "strategy": "css", + "groups": [] } + } diff --git a/tests/address_bar_and_search/test_searchmode_change_tab.py b/tests/address_bar_and_search/test_searchmode_change_tab.py index 63ff58d29..810568817 100644 --- a/tests/address_bar_and_search/test_searchmode_change_tab.py +++ b/tests/address_bar_and_search/test_searchmode_change_tab.py @@ -1,5 +1,3 @@ -from time import sleep - import pytest from selenium.webdriver import Firefox @@ -9,6 +7,11 @@ TEXT = "Fire" +@pytest.fixture() +def test_case(): + return "3028732" + + @pytest.mark.parametrize("engine1, engine2", [("Bing", "DuckDuckGo")]) def test_searchmode_change_tab(driver: Firefox, engine1, engine2): """ @@ -25,6 +28,9 @@ def test_searchmode_change_tab(driver: Firefox, engine1, engine2): # Click on Bing engine nav.set_search_mode(engine1) + # "Search Mode" is visible in URL bar for Bing + nav.verify_engine_returned(engine1) + # Open a new tab and click on the USB nav.open_and_switch_to_new_window("tab") nav.click_search_mode_switcher() @@ -32,18 +38,23 @@ def test_searchmode_change_tab(driver: Firefox, engine1, engine2): # Click on the Duckduckgo engine nav.set_search_mode(engine2) + # "Search Mode" is visible in URL bar for duckduckgo + nav.verify_engine_returned(engine2) + # Go back to tab from step #2 tabs.click_tab_by_index(1) # Type any word and hit enter - nav.type_in_awesome_bar(TEXT) + nav.search(TEXT) # Check search is done using Bing engine + nav.verify_engine_returned(engine1) - # Go back to tab on step #4 + # Go back to the tab from step #4 tabs.click_tab_by_index(2) # Type any word and hit enter - nav.type_in_awesome_bar(TEXT) + nav.search(TEXT) # Check that search is done using the duckduckgo engine + nav.verify_engine_returned(engine2)