Skip to content

Commit 258f68d

Browse files
Philimon/Stabilization_fixes (#945)
* first fix * remember history addition but test now is unstable * further fixes * changes to key.yaml * changes to key.yaml --------- Co-authored-by: Ben Chatterton <[email protected]>
1 parent ddb41a3 commit 258f68d

File tree

9 files changed

+82
-44
lines changed

9 files changed

+82
-44
lines changed

modules/browser_object_print_preview.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from time import sleep
22

33
from selenium.common import NoAlertPresentException
4+
from selenium.webdriver.common.by import By
45
from selenium.webdriver.common.keys import Keys
56

67
from modules.browser_object_panel_ui import PanelUi
@@ -54,16 +55,14 @@ def switch_to_preview_window(self) -> BasePage:
5455
)
5556
return self
5657

57-
def start_print(self, secondary_confirm=True) -> BasePage:
58-
"""Press Enter in Print"""
58+
@BasePage.context_content
59+
def start_print(self) -> BasePage:
60+
"""Press Enter in Print Preview Page."""
5961
from pynput.keyboard import Controller, Key
6062

6163
self.switch_to_preview_window()
62-
with self.driver.context(self.driver.CONTEXT_CHROME):
63-
self.actions.send_keys_to_element(
64-
self.get_element("print-settings-browser"), Keys.TAB + Keys.ENTER
65-
).perform()
66-
sleep(2)
67-
keyboard = Controller()
68-
keyboard.tap(Key.enter)
64+
self.get_element("print-button").click()
65+
sleep(2)
66+
keyboard = Controller()
67+
keyboard.tap(Key.enter)
6968
return self

modules/components/dropdown.py

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,17 @@ class Dropdown(Region):
1313
def __init__(self, page, require_shadow=True, **kwargs):
1414
super().__init__(page, **kwargs)
1515
self.utils = PomUtils(self.page.driver)
16+
self.is_search_dropdown = (
17+
page.__class__.__name__ == "AboutPrefs"
18+
and page.url_kwargs.get("category") == "search"
19+
)
1620
if require_shadow:
1721
self.shadow_elements = self.utils.get_shadow_content(self.root)
1822
self.dropmarker = next(
19-
el for el in self.shadow_elements if el.tag_name == "dropmarker"
23+
el
24+
for el in self.shadow_elements
25+
if el.tag_name == "dropmarker"
26+
or el.get_attribute("class") == "select-wrapper with-icon"
2027
)
2128

2229
@property
@@ -38,11 +45,21 @@ def select_option(
3845
except AttributeError:
3946
self.root.click()
4047

41-
matching_menuitems = [
42-
el
43-
for el in self.root.find_elements(By.CSS_SELECTOR, option_tag)
44-
if el.get_attribute(label_name) == option_name
45-
]
48+
if self.is_search_dropdown:
49+
panel_element = next(
50+
el for el in self.shadow_elements if el.tag_name == "panel-list"
51+
)
52+
matching_menuitems = [
53+
el
54+
for el in panel_element.find_elements(By.TAG_NAME, "panel-item")
55+
if option_name in el.text
56+
]
57+
else:
58+
matching_menuitems = [
59+
el
60+
for el in self.root.find_elements(By.CSS_SELECTOR, option_tag)
61+
if el.get_attribute(label_name) == option_name
62+
]
4663
if len(matching_menuitems) == 0:
4764
return False
4865
elif len(matching_menuitems) == 1:
@@ -51,7 +68,13 @@ def select_option(
5168
else:
5269
matching_menuitems[0].click()
5370
if wait_for_selection:
54-
self.wait.until(EC.element_to_be_selected(matching_menuitems[0]))
71+
if self.is_search_dropdown:
72+
panel_trigger = self.dropmarker.find_element(
73+
By.CLASS_NAME, "panel-trigger"
74+
)
75+
self.wait.until(lambda _: panel_trigger.text == option_name)
76+
else:
77+
self.wait.until(EC.element_to_be_selected(matching_menuitems[0]))
5578
# self.root.send_keys(Keys.ESCAPE)
5679
return self
5780
else:

modules/data/about_prefs.components.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
"groups": []
105105
},
106106
"import-browser-data": {
107-
"selectorData": "button[id='data-migration']",
107+
"selectorData": "moz-box-button[id='data-migration']",
108108
"strategy": "css",
109109
"groups": []
110110
},
@@ -366,7 +366,7 @@
366366
"groups": []
367367
},
368368
"history-privacy-label": {
369-
"selectorData": "historyPane",
369+
"selectorData": "historyMode",
370370
"strategy": "id",
371371
"groups": []
372372
},
@@ -619,5 +619,12 @@
619619
"selectorData": "historySuggestion",
620620
"strategy": "id",
621621
"groups": []
622+
},
623+
"history-option-select": {
624+
"selectorData": "select[id='input']",
625+
"strategy": "css",
626+
"shadowParent": "history_menulist",
627+
"groups": [
628+
]
622629
}
623630
}

modules/data/print_preview.components.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,20 @@
1616
"selectorData": "browser.printSettingsBrowser",
1717
"strategy": "css",
1818
"groups": []
19+
},
20+
"footer-button-group": {
21+
"selectorData": "button-container",
22+
"strategy": "id",
23+
"groups": []
24+
},
25+
"print-button": {
26+
"selectorData": "print-button",
27+
"strategy": "id",
28+
"groups": []
29+
},
30+
"cancel-button": {
31+
"selectorData": "cancel-button",
32+
"strategy": "id",
33+
"groups": []
1934
}
2035
}

modules/page_object_prefs.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,7 @@ def select_search_suggestions_in_address_bar(self, value: bool = True) -> BasePa
6868

6969
def search_engine_dropdown(self) -> Dropdown:
7070
"""Returns the Dropdown region for search engine prefs"""
71-
self.get_element("search-engine-dropdown-root")
72-
return Dropdown(
73-
self, self.driver, root=self.get_element("search-engine-dropdown-root")
74-
)
71+
return Dropdown(self, root=self.get_element("search-engine-dropdown-root"))
7572

7673
def find_in_settings(self, term: str) -> BasePage:
7774
"""Search via the Find in Settings bar, return self."""
@@ -241,6 +238,17 @@ def get_history_menulist(self) -> WebElement:
241238
"""
242239
return self.get_element("history_menulist")
243240

241+
def set_history_option(self, option: str):
242+
"""
243+
Set the history option in about:preferences.
244+
"""
245+
history_menulist = self.get_history_menulist()
246+
self.driver.execute_script("arguments[0].scrollIntoView();", history_menulist)
247+
sleep(1)
248+
menulist_popup = Select(self.get_element("history-option-select"))
249+
menulist_popup.select_by_value(option)
250+
return self
251+
244252
# Payment and Address Management
245253
def verify_cc_json(
246254
self, cc_info_json: dict, credit_card_fill_obj: CreditCardBase

tests/bookmarks_and_history/test_import_bookmarks_chrome.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ def test_chrome_bookmarks_imported(chrome_bookmarks, driver: Firefox, sys_platfo
9696
pytest.skip("Google Chrome not installed or directory could not be created")
9797
about_prefs = AboutPrefs(driver, category="General")
9898
about_prefs.open()
99-
about_prefs.click_on("import-browser-data")
10099
about_prefs.import_bookmarks("Chrome", sys_platform)
101100
toolbar = Navigation(driver)
102101
toolbar.confirm_bookmark_exists(TEST_PAGE_TITLE)

tests/preferences/test_never_remember_history.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pytest
55
from selenium.webdriver import Firefox
66
from selenium.webdriver.common.by import By
7+
from selenium.webdriver.support.select import Select
78

89
from modules.page_object import AboutPrefs
910

@@ -27,20 +28,7 @@ def test_never_remember_history(driver: Firefox, sys_platform: str):
2728
about_prefs = AboutPrefs(driver, category="privacy").open()
2829

2930
# Change the settings to not remember the browser history
30-
history_menulist = about_prefs.get_history_menulist()
31-
menulist_popup = history_menulist.find_element(By.TAG_NAME, "menupopup")
32-
options = menulist_popup.find_elements(By.TAG_NAME, "menuitem")
33-
34-
# Scrolling for visibility
35-
driver.execute_script("arguments[0].scrollIntoView();", history_menulist)
36-
time.sleep(1)
37-
current_selection = history_menulist.get_attribute("value")
38-
39-
if current_selection != "dontremember":
40-
for option in options:
41-
if option.get_attribute("value") == "dontremember":
42-
option.click()
43-
break
31+
about_prefs.set_history_option("dontremember")
4432

4533
# Verify that the pref is set to True
4634
profile_path = driver.capabilities["moz:profile"]

tests/security_and_privacy/test_cookies_not_saved_private_browsing.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from selenium.webdriver import Firefox
33

44
from modules.browser_object import PanelUi
5-
from modules.page_object import AboutPrefs, GoogleSearch
5+
from modules.browser_object_navigation import Navigation
6+
from modules.page_object import AboutPrefs
67
from modules.util import BrowserActions
78

89

@@ -18,17 +19,14 @@ def test_cookies_not_saved_private_browsing(driver: Firefox):
1819
# Instantiate objs
1920
about_prefs = AboutPrefs(driver, category="privacy")
2021
panel_ui = PanelUi(driver)
21-
google_search = GoogleSearch(driver)
22+
nav = Navigation(driver)
2223
ba = BrowserActions(driver)
2324

2425
# Open new private window
2526
panel_ui.open_and_switch_to_new_window("private")
2627

2728
# Open the Google page and perform a search
28-
google_search.open()
29-
google_search.type_in_search_bar("hello")
30-
google_search.press_enter_search_bar()
31-
google_search.wait_for_page_to_load()
29+
nav.search("hello")
3230

3331
# Close the page and switch to first tab
3432
driver.close()

tests/security_and_privacy/test_never_remember_browsing_history.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ def test_never_remember_browsing_history_settings(driver: Firefox):
4949
login_exceptions = about_prefs.get_element("logins-exceptions")
5050
assert login_exceptions.get_attribute("disabled") == "true"
5151

52-
about_prefs.element_has_text("history-privacy-label", HISTORY_LABEL_TEXT)
52+
history_mode_description = about_prefs.get_element("history-privacy-label")
53+
assert history_mode_description.get_attribute("description") == HISTORY_LABEL_TEXT
5354

5455

5556
def test_never_remember_browsing_history_from_panel(driver: Firefox):

0 commit comments

Comments
 (0)