From ed63b8a5712260df1d339aafd45198bc5d7985de Mon Sep 17 00:00:00 2001 From: Hani Yacoub Date: Wed, 22 Oct 2025 12:26:51 +0300 Subject: [PATCH 1/4] test_insertion_point_no_search_terms_display --- ...insertion_point_no_search_terms_display.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py diff --git a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py new file mode 100644 index 000000000..b544faef5 --- /dev/null +++ b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py @@ -0,0 +1,33 @@ +import pytest +from selenium.webdriver import Firefox, Keys + +from modules.browser_object_navigation import Navigation + + +@pytest.fixture() +def test_case(): + return "3028716" + + +@pytest.mark.parametrize("engine", ["Bing"]) +def test_insertion_point_no_search_terms_display(driver: Firefox, engine): + """ + C3028716 - Verify that Insertion Point without search terms is correctly displayed + """ + + # Instantiate objects + nav = Navigation(driver) + + # Click on the USB and select one of the engines + nav.click_search_mode_switcher() + nav.set_search_mode(engine) + + # Click on the url bar + nav.click_in_awesome_bar() + + # Press [backspace/Delete in macOS] + nav.perform_key_combo(Keys.BACKSPACE) + + # check that the selected engine is returned to using default engine + + # Type anything in the url bar (example moza) From c5c264c9aea08b269e4320195397d8f2ff9df984 Mon Sep 17 00:00:00 2001 From: Hani Yacoub Date: Wed, 22 Oct 2025 16:46:26 +0300 Subject: [PATCH 2/4] Test test_insertion_point_no_search_terms_display --- SELECTOR_INFO.md | 7 +++++++ modules/browser_object_navigation.py | 5 +++++ modules/data/navigation.components.json | 6 ++++++ modules/page_base.py | 11 +++++++++++ .../test_insertion_point_no_search_terms_display.py | 13 ++++++++++++- 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/SELECTOR_INFO.md b/SELECTOR_INFO.md index f838f7671..476e1b7f4 100644 --- a/SELECTOR_INFO.md +++ b/SELECTOR_INFO.md @@ -3132,6 +3132,13 @@ Description: Developer tool icon Location: Navigation bar Path to .json: modules/data/navigation.components.json ``` +``` +Selector Name: google-default-engine +Selector Data: "toolbarbutton#urlbar-searchmode-switcher[label='Google, pick a search engine']" +Description: Google default search engine +Location: Address bar +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 66b58fe09..bfeba8423 100644 --- a/modules/browser_object_navigation.py +++ b/modules/browser_object_navigation.py @@ -751,3 +751,8 @@ def verify_autoplay_state(self, expected: Literal["allow", "block"]) -> None: else: self.element_visible("permission-popup-audio-video-blocked") self.element_visible("autoplay-icon-blocked") + + def verify_engine_returned_default(self) -> None: + self.wait.until( + lambda d: self.element_visible("google-default-engine") + ) diff --git a/modules/data/navigation.components.json b/modules/data/navigation.components.json index 61c18f3c9..a40af903d 100644 --- a/modules/data/navigation.components.json +++ b/modules/data/navigation.components.json @@ -603,5 +603,11 @@ "selectorData": "developer-button", "strategy": "id", "groups": [] + }, + + "google-default-engine": { + "selectorData": "toolbarbutton#urlbar-searchmode-switcher[label='Google, pick a search engine']", + "strategy": "css", + "groups": [] } } diff --git a/modules/page_base.py b/modules/page_base.py index e1d4fca55..0ebc3a0aa 100644 --- a/modules/page_base.py +++ b/modules/page_base.py @@ -190,6 +190,17 @@ def perform_key_combo(self, *keys) -> Page: return self + @context_chrome + def perform_key_combo_chrome(self, *keys) -> Page: + """ + Perform a keyboard shortcut in the browser chrome context (e.g., address bar). + This method should be used for actions that target browser UI elements such as the + awesome bar or toolbar buttons — not web content. + Example: + self.perform_key_combo_chrome(Keys.COMMAND, "c") # Copy from address bar + """ + return self.perform_key_combo(*keys) + def load_element_manifest(self, manifest_loc): """Populate self.elements with the parse of the elements JSON""" logging.info(f"Loading element manifest: {manifest_loc}") diff --git a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py index b544faef5..dd208108f 100644 --- a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py +++ b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py @@ -26,8 +26,19 @@ def test_insertion_point_no_search_terms_display(driver: Firefox, engine): nav.click_in_awesome_bar() # Press [backspace/Delete in macOS] - nav.perform_key_combo(Keys.BACKSPACE) + nav.perform_key_combo_chrome(Keys.BACKSPACE) # check that the selected engine is returned to using default engine + nav.verify_engine_returned_default() # Type anything in the url bar (example moza) + nav.type_in_awesome_bar("moza") + + # check that there is no Bing "Search Mode", search suggestions populate with default engine + nav.verify_engine_returned_default() + + # Press enter key + nav.perform_key_combo_chrome(Keys.ENTER) + + # Check that the search is done for "moza" using the default search engine + nav.verify_engine_returned_default() \ No newline at end of file From ab8c2cd1948b82946ab38a02581d28c2631df277 Mon Sep 17 00:00:00 2001 From: Hani Yacoub Date: Thu, 23 Oct 2025 17:08:28 +0300 Subject: [PATCH 3/4] Edit test --- .../test_insertion_point_no_search_terms_display.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py index dd208108f..31cf2ec4e 100644 --- a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py +++ b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py @@ -32,7 +32,7 @@ def test_insertion_point_no_search_terms_display(driver: Firefox, engine): nav.verify_engine_returned_default() # Type anything in the url bar (example moza) - nav.type_in_awesome_bar("moza") + nav.type_in_awesome_bar("fire") # check that there is no Bing "Search Mode", search suggestions populate with default engine nav.verify_engine_returned_default() From bc0f92a6e0ad0c15d68a7b16d72981a3997f4dc1 Mon Sep 17 00:00:00 2001 From: Hani Yacoub Date: Mon, 27 Oct 2025 11:17:06 +0200 Subject: [PATCH 4/4] Edit comments --- .../test_insertion_point_no_search_terms_display.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py index 31b0a135c..8de58c6be 100644 --- a/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py +++ b/tests/address_bar_and_search/test_insertion_point_no_search_terms_display.py @@ -28,13 +28,13 @@ def test_insertion_point_no_search_terms_display(driver: Firefox, engine): # Press [backspace/Delete in macOS] nav.perform_key_combo_chrome(Keys.BACKSPACE) - # check that the selected engine is returned to using default engine + # Check that the selected engine is returned to using default engine nav.verify_engine_returned_default() # Type anything in the url bar (example fire) nav.type_in_awesome_bar("fire") - # check that there is no Bing "Search Mode", search suggestions populate with default engine + # Check that there is no Bing "Search Mode", search suggestions populate with default engine nav.verify_engine_returned_default() # Press enter key