Skip to content

Commit 65b0a32

Browse files
authored
Merge pull request #564 from mozilla/Hani/refactor_pass_manager_batch1
Hani/ Passwors manager first batch refactor
2 parents 6af4e9d + 5b94a78 commit 65b0a32

20 files changed

+67
-42
lines changed

modules/browser_object_panel_ui.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ def loaded(self):
3939
]
4040
return all([EC.presence_of_element_located(el) for el in targeted])
4141

42+
@BasePage.context_chrome
4243
def open_panel_menu(self) -> BasePage:
4344
"""
4445
Opens the PanelUi menu.
4546
"""
46-
with self.driver.context(self.driver.CONTEXT_CHROME):
47-
panel_root = self.get_element("panel-ui-button")
48-
panel_root.click()
49-
self.menu = self.Menu(self, root=panel_root)
47+
panel_root = self.get_element("panel-ui-button")
48+
panel_root.click()
49+
self.menu = self.Menu(self, root=panel_root)
5050
return self
5151

5252
def select_panel_setting(self, name: str, *labels) -> BasePage:
@@ -181,13 +181,13 @@ def get_all_history(self) -> List[WebElement]:
181181
history_items = self.get_elements("bookmark-item")
182182
return history_items
183183

184+
@BasePage.context_chrome
184185
def redirect_to_about_logins_page(self) -> BasePage:
185186
"""
186187
Opens the about:logins page by clicking the Password option in Hamburger Menu"
187188
"""
188189
self.open_panel_menu()
189-
with self.driver.context(self.driver.CONTEXT_CHROME):
190-
self.get_element("password-button").click()
190+
self.get_element("password-button").click()
191191
return self
192192

193193
# Bookmarks section

modules/page_object_about_pages.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from modules.page_base import BasePage
1414
from modules.util import BrowserActions
15+
from selenium.webdriver import Firefox
1516

1617

1718
class AboutConfig(BasePage):
@@ -133,6 +134,10 @@ class AboutLogins(BasePage):
133134

134135
URL_TEMPLATE = "about:logins"
135136

137+
def __init__(self, driver: Firefox, **kwargs):
138+
super().__init__(driver, **kwargs)
139+
self.ba = BrowserActions(self.driver)
140+
136141
def click_add_login_button(self) -> Page:
137142
"""Click the Add Login button"""
138143
self.get_element("create-login-button").click()
@@ -144,11 +149,10 @@ def create_new_login(self, form_info: dict) -> Page:
144149
Given a dict with keys that match the valid item types in the
145150
new login dialog, create a new login with those values through UI.
146151
"""
147-
ba = BrowserActions(self.driver)
148152
try:
149153
for item_type, value in form_info.items():
150154
logging.info(f"Filling {item_type} with {value}")
151-
ba.clear_and_fill(
155+
self.ba.clear_and_fill(
152156
self.get_element("login-item-type", labels=[item_type]), value
153157
)
154158
logging.info("Clicking submit...")

tests/password_manager/test_about_logins_navigation_from_context_menu.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def test_about_logins_navigation_from_login_form_context_menu(driver: Firefox):
1616
C2241087 - Verify that right-clicking the Username field in a login form and then the Manage Passwords option
1717
from context menu opens about:logins page in a new tab
1818
"""
19-
19+
# Instantiate objects
2020
context_menu = ContextMenu(driver)
2121
tabs = TabBar(driver)
2222
login = LoginAutofill(driver).open()

tests/password_manager/test_about_logins_navigation_from_hamburger_menu.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def test_about_logins_navigation_from_password_hamburger_menu(driver: Firefox):
1313
"""
1414
C2241082 - Verify that clicking the Password option in Hamburger Menu opens about:logins page in a new tab
1515
"""
16-
16+
# Instantiate objects
1717
panel_ui = PanelUi(driver)
1818
tabs = TabBar(driver)
1919

tests/password_manager/test_about_logins_search_username.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ def test_about_logins_search_username(driver_and_saved_logins):
1616
"""
1717
# Initializing objects
1818
(driver, usernames, logins) = driver_and_saved_logins
19-
about_logins = AboutLogins(driver).open()
19+
about_logins = AboutLogins(driver)
2020
ba = BrowserActions(driver)
2121

22-
# Search for a username with 2 results
22+
# Open about:logins and search for a username with 2 results
23+
about_logins.open()
2324
ba.clear_and_fill(about_logins.get_element("login-filter-input"), usernames[-1])
2425

2526
# Check that only the correct 2 results are shown

tests/password_manager/test_about_logins_search_website.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ def test_about_logins_search_website(origins, driver_and_saved_logins):
1616
"""
1717
# Initializing objects
1818
(driver, usernames, logins) = driver_and_saved_logins
19-
about_logins = AboutLogins(driver).open()
19+
about_logins = AboutLogins(driver)
2020
ba = BrowserActions(driver)
2121

22-
# Search for a website
22+
# Open about:logins and search for a website
23+
about_logins.open()
2324
ba.clear_and_fill(about_logins.get_element("login-filter-input"), origins[1])
2425

2526
# Check that only the correct 1 result is shown

tests/password_manager/test_add_password_non_ascii_chars.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ def test_add_password_non_ascii_chars(driver: Firefox):
1313
"""
1414
C2241113 Add password - non-ascii characters
1515
"""
16-
# instantiate object
17-
about_logins = AboutLogins(driver).open()
16+
# Instantiate object
17+
about_logins = AboutLogins(driver)
1818

19-
# Click on the "Add password" button
19+
# Open about:logins and click on the "Add password" button
20+
about_logins.open()
2021
about_logins.click_add_login_button()
2122

2223
# Complete all the fields with valid data and click the "Save" button.

tests/password_manager/test_add_password_save_valid_data.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ def test_add_password_save_valid_data(driver: Firefox):
1515
C2241112 Verify that a password can be added and saved
1616
"""
1717
# instantiate object
18-
about_logins = AboutLogins(driver).open()
18+
about_logins = AboutLogins(driver)
1919

20-
# Click on the "Add password" button
20+
# Open about:logins and click on the "Add password" button
21+
about_logins.open()
2122
about_logins.click_add_login_button()
2223

2324
# Complete all the fields with valid data and click the "Save" button.

tests/password_manager/test_add_primary_password.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,19 @@ def hard_quit():
1515
return True
1616

1717

18+
PRIMARY_PASSWORD = "securePassword1"
19+
20+
1821
def test_add_primary_password(driver: Firefox):
1922
"""
2023
C2245178: Verify that a primary password can be added in about:preferences#privacy
2124
"""
2225
# Instantiate objects
23-
about_prefs = AboutPrefs(driver, category="privacy").open()
26+
about_prefs = AboutPrefs(driver, category="privacy")
2427
ba = BrowserActions(driver)
2528

2629
# Select the "Use a primary password" check box to trigger the "Change Primary Password" window
30+
about_prefs.open()
2731
about_prefs.click_on("use-primary-password")
2832
primary_pw_popup = about_prefs.get_element("browser-popup")
2933
ba.switch_to_iframe_context(primary_pw_popup)
@@ -32,8 +36,8 @@ def test_add_primary_password(driver: Firefox):
3236
about_prefs.element_attribute_contains("current-password", "disabled", "true")
3337

3438
# Primary password can be changed
35-
about_prefs.get_element("enter-new-password").send_keys("securePassword1")
36-
about_prefs.get_element("reenter-new-password").send_keys("securePassword1")
39+
about_prefs.get_element("enter-new-password").send_keys(PRIMARY_PASSWORD)
40+
about_prefs.get_element("reenter-new-password").send_keys(PRIMARY_PASSWORD)
3741
about_prefs.click_on("submit-password")
3842

3943
# Check that the pop-up appears

tests/password_manager/test_auto_saved_generated_password_context_menu.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@ def test_auto_saved_generated_password_context_menu(driver: Firefox):
2020
"""
2121
C2248176 - Securely Generated Password is auto-saved when generated from password field context menu
2222
"""
23-
23+
# Instantiate objects
2424
context_menu = ContextMenu(driver)
2525
tabs = TabBar(driver)
26-
login_autofill = LoginAutofill(driver).open()
26+
login_autofill = LoginAutofill(driver)
2727
nav = Navigation(driver)
2828
about_logins = AboutLogins(driver)
2929
autofill_popup_panel = AutofillPopup(driver)
3030

31-
# Select "Suggest Strong Password..." from password field context menu
31+
# Open login autofill test page and select "Suggest Strong Password..." from password field context menu
32+
login_autofill.open()
3233
password_field = login_autofill.get_element("password-login-field")
3334
login_autofill.context_click(password_field)
3435
context_menu.click_and_hide_menu("context-menu-suggest-strong-password")

tests/password_manager/test_autocomplete_dropdown_is_toggled_for_focused_login_fields_on_page_load.py

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def test_autocomplete_dropdown_is_toggled_for_focused_login_fields_on_page_load(
2727
"""
2828
C2240907 - Verify that autocomplete dropdown is toggled for focused login fields on page load
2929
"""
30+
# Instantiate objects
3031
tabs = TabBar(driver)
3132
about_logins = AboutLogins(driver)
3233
login_autofill = LoginAutofill(driver)

tests/password_manager/test_can_view_password_when_PP_enabled.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ def test_password_can_be_shown(driver: Firefox):
1717
C2264688: Verify that the Show Password button prompts for the Primary Password before revealing the saved login
1818
"""
1919
# instantiate object
20-
about_logins = AboutLogins(driver).open()
20+
about_logins = AboutLogins(driver)
2121
about_prefs = AboutPrefs(driver, category="privacy")
2222
ba = BrowserActions(driver)
2323

24-
# Click on the "Add password" button
24+
# Open about:login and click on the "Add password" button
25+
about_logins.open()
2526
about_logins.click_add_login_button()
2627

2728
# Complete all the fields with valid data and click the "Save" button.
@@ -52,7 +53,7 @@ def test_password_can_be_shown(driver: Firefox):
5253
alert = about_prefs.get_alert()
5354
alert.accept()
5455

55-
about_logins = AboutLogins(driver).open()
56+
about_logins.open()
5657
show_password_button = about_logins.get_element("show-password-checkbox")
5758
show_password_button.click()
5859

tests/password_manager/test_changes_made_in_edit_mode_are_saved.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ def test_changes_made_in_edit_mode_are_saved(driver: Firefox):
1414
C2241121 - Verify that changes made in Edit Mode are saved
1515
"""
1616
# instantiate object
17-
about_logins = AboutLogins(driver).open()
17+
about_logins = AboutLogins(driver)
1818

19-
# Add a new login
19+
# Open about:logins and add a new login
20+
about_logins.open()
2021
about_logins.click_add_login_button()
2122
about_logins.create_new_login(
2223
{

tests/password_manager/test_delete_login.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ def test_delete_login(driver_and_saved_logins):
1717
# Adds 6 fake logins in about:login
1818
driver, usernames, logins = driver_and_saved_logins
1919

20-
about_logins = AboutLogins(driver).open()
20+
# Instantiate objects
21+
about_logins = AboutLogins(driver)
2122
login_autofill = LoginAutofill(driver)
2223

23-
# Verify the initial number of saved passwords
24+
# Open about:logins and verify the initial number of saved passwords
25+
about_logins.open()
2426
password_count = about_logins.get_element("password-count")
2527
login_autofill.wait.until(
2628
lambda _: password_count.get_attribute("innerText") == "6 passwords"

tests/password_manager/test_multiple_saved_logins.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def test_multiple_saved_logins(driver: Firefox, temp_selectors):
3838
# Instantiate objects
3939
about_logins = AboutLogins(driver)
4040
keyboard = Controller()
41+
autofill_popup = AutofillPopup(driver)
4142

4243
# Save 3 sets of credentials for facebook
4344
about_logins.open()
@@ -71,7 +72,6 @@ def test_multiple_saved_logins(driver: Firefox, temp_selectors):
7172
# Open saucedemo.com
7273
web_page = GenericPage(driver, url=SAUCEDEMO_URL).open()
7374
web_page.elements |= temp_selectors
74-
autofill_popup = AutofillPopup(driver)
7575

7676
# Verify that all 3 credentials and "Manage Passwords" footer are in the pop-up
7777
web_page.click_on("username-field")

tests/password_manager/test_never_save_login_via_doorhanger.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ def test_never_save_login_via_doorhanger(driver: Firefox):
2424
login form. Additionally, confirm that the demo page is correctly added to the 'Exceptions - Saved Passwords'
2525
list in the browser's preferences.
2626
"""
27-
28-
login_autofill = LoginAutofill(driver).open()
27+
# Instantiate objects
28+
login_autofill = LoginAutofill(driver)
2929
autofill_popup_panel = AutofillPopup(driver)
3030
nav = Navigation(driver)
3131
ba = BrowserActions(driver)
32+
about_prefs = AboutPrefs(driver, category="privacy")
3233

3334
# Creating an instance of the LoginForm within the LoginAutofill page object
35+
login_autofill.open()
3436
login_form = LoginAutofill.LoginForm(login_autofill)
3537

3638
# Fill in the login form in demo page, opt for Never Save the credentials via doorhanger and see the doorhanger is
@@ -55,7 +57,7 @@ def test_never_save_login_via_doorhanger(driver: Firefox):
5557
login_autofill.wait.until(lambda _: password_element.get_attribute("value") == "")
5658

5759
# Navigate to about:preferences#privacy and open Exceptions - Saved Passwords modal
58-
about_prefs = AboutPrefs(driver, category="privacy").open()
60+
about_prefs.open()
5961
iframe = about_prefs.get_password_exceptions_popup_iframe()
6062
ba.switch_to_iframe_context(iframe)
6163

tests/password_manager/test_primary_password_triggered_on_about_logins_access.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ def test_primary_password_triggered_on_about_logins_access_via_hamburger_menu(
2828
"""
2929

3030
# Instantiate objects
31-
about_prefs = AboutPrefs(driver, category="privacy").open()
31+
about_prefs = AboutPrefs(driver, category="privacy")
3232
ba = BrowserActions(driver)
3333
panel_ui = PanelUi(driver)
3434
tabs = TabBar(driver)
3535
about_logins = AboutLogins(driver)
3636

3737
# Enable the setup for primary password
38+
about_prefs.open()
3839
about_prefs.click_on("use-primary-password")
3940
primary_pw_popup = about_prefs.get_element("browser-popup")
4041
ba.switch_to_iframe_context(primary_pw_popup)

tests/password_manager/test_save_login_via_doorhanger.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ def test_save_login_via_doorhanger(driver: Firefox):
2222
C2243016 - Verify that Firefox successfully saves login credentials via the save password doorhanger and
2323
autofill them on subsequent access
2424
"""
25-
26-
login_autofill = LoginAutofill(driver).open()
25+
# Instantiate objects
26+
login_autofill = LoginAutofill(driver)
2727
autofill_popup_panel = AutofillPopup(driver)
2828
nav = Navigation(driver)
2929
context_menu = ContextMenu(driver)
3030

3131
# Creating an instance of the LoginForm within the LoginAutofill page object
32+
login_autofill.open()
3233
login_form = LoginAutofill.LoginForm(login_autofill)
3334

3435
# Fill in the login form in demo page, save the login credentials via the doorhanger and see the doorhanger is

tests/password_manager/test_saved_hyperlink_redirects_to_corresponding_page.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ def test_saved_hyperlink_redirects_to_corresponding_page(driver: Firefox):
2222
"""
2323
C2241089 - Verify that a saved hyperlink redirects to the corresponding page
2424
"""
25-
about_logins = AboutLogins(driver).open()
25+
# Instantiate objects
26+
about_logins = AboutLogins(driver)
2627
login_autofill = LoginAutofill(driver)
2728

2829
# Add a new login
30+
about_logins.open()
2931
about_logins.click_add_login_button()
3032
about_logins.create_new_login(
3133
{

tests/password_manager/test_update_login_via_doorhanger.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ def test_update_login_via_doorhanger(driver: Firefox):
2222
C2243013 - Verify that Firefox successfully updates login credentials via the update password doorhanger and
2323
autofill them on subsequent access
2424
"""
25-
26-
login_autofill = LoginAutofill(driver).open()
25+
# Instantiate objects
26+
login_autofill = LoginAutofill(driver)
2727
autofill_popup_panel = AutofillPopup(driver)
2828
nav = Navigation(driver)
2929
context_menu = ContextMenu(driver)
3030

3131
# Creating an instance of the LoginForm within the LoginAutofill page object
32+
login_autofill.open()
3233
login_form = LoginAutofill.LoginForm(login_autofill)
3334

3435
# Fill in the login form in demo page and save the login credentials via the doorhanger

0 commit comments

Comments
 (0)