Skip to content

Commit bde8c67

Browse files
authored
Merge pull request #632 from mozilla/ben/stabilize-two-bookmarks-tests
Stabilize Bookmark Tests
2 parents c87c41d + 11ea331 commit bde8c67

16 files changed

+124
-94
lines changed

SELECTOR_INFO.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3043,6 +3043,12 @@ Location: Toolbar
30433043
Path to .json: modules/data/panel_ui.components.json
30443044
```
30453045
```
3046+
Selector name: panel-main-view
3047+
Description: Main body of Panel UI
3048+
Location: See above
3049+
Path to .json: modules/data/panel_ui.components.json
3050+
```
3051+
```
30463052
Selector name: sync-user-button
30473053
Selector Data: toolbarbutton[id='fxa-toolbar-menu-button']
30483054
Description: Account button
@@ -3148,6 +3154,12 @@ Location: Firefox menu
31483154
Path to .json: modules/data/panel_ui.components.json
31493155
```
31503156
```
3157+
Selector name: panel-ui-history-view
3158+
Description: Subview of Panel UI
3159+
Location: See above
3160+
Path to .json: modules/data/panel_ui.components.json
3161+
```
3162+
```
31513163
Selector name: panel-ui-history-recently-closed
31523164
Selector Data: appMenuRecentlyClosedTabs
31533165
Description: Recently closed tabs

modules/browser_object_find_toolbar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def __init__(self, driver: Firefox, **kwargs):
2121
def open(self) -> BasePage:
2222
"""Use PanelUi to open the Find Toolbar, wait for element to load"""
2323
self.panel_ui.open_panel_menu()
24-
self.panel_ui.select_panel_setting("find-in-page")
24+
self.panel_ui.click_on("find-in-page")
2525
self.wait_for_page_to_load()
2626
return self
2727

modules/browser_object_panel_ui.py

Lines changed: 61 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from time import sleep
12
from typing import List
23

34
from pypom import Region
@@ -46,46 +47,27 @@ def open_panel_menu(self) -> BasePage:
4647
self.menu = self.Menu(self, root=panel_root)
4748
return self
4849

49-
def select_panel_setting(self, name: str, *labels) -> BasePage:
50-
"""
51-
Selects a panel setting in PanelUi.
52-
53-
...
54-
55-
Parameters
56-
----------
57-
58-
name: str
59-
Name of setting element
60-
labels: *list[str]
61-
Labels to pass to get_element()
62-
"""
63-
self.click_on(name, labels=labels)
64-
return self
65-
6650
def navigate_to_about_addons(self):
6751
"""
6852
On the hamburger menu > More Tools > Customize Toolbar > Manage Themes
6953
"""
70-
self.select_panel_setting("more-tools")
71-
self.select_panel_setting("customize-toolbar")
72-
with self.driver.context(self.driver.CONTEXT_CHROME):
73-
self.get_element("manage-themes").click()
54+
self.click_on("more-tools")
55+
self.click_on("customize-toolbar")
56+
self.click_on("manage-themes")
7457

7558
def navigate_to_customize_toolbar(self):
7659
"""
7760
On the hamburger menu > More Tools > Customize Toolbar
7861
"""
79-
self.select_panel_setting("more-tools")
80-
self.select_panel_setting("customize-toolbar")
62+
self.click_on("more-tools")
63+
self.click_on("customize-toolbar")
8164

8265
def click_sync_sign_in_button(self) -> BasePage:
8366
"""
8467
Click FxA sync button.
8568
"""
86-
with self.driver.context(self.driver.CONTEXT_CHROME):
87-
self.open_panel_menu()
88-
self.select_panel_setting("fxa-sign-in")
69+
self.open_panel_menu()
70+
self.click_on("fxa-sign-in")
8971
return self
9072

9173
def log_out_fxa(self) -> BasePage:
@@ -147,13 +129,16 @@ def open_private_window(self) -> BasePage:
147129
self.get_element("panel-ui-new-private-window").click()
148130
return self
149131

132+
@BasePage.context_chrome
150133
def open_history_menu(self) -> BasePage:
151134
"""
152135
Opens the History menu
153136
"""
154137
self.open_panel_menu()
155-
with self.driver.context(self.driver.CONTEXT_CHROME):
156-
self.get_element("panel-ui-history").click()
138+
# Bug 1974080
139+
if self.sys_platform() == "Windows":
140+
sleep(2)
141+
self.click_on("panel-ui-history")
157142
return self
158143

159144
def select_clear_history_option(self, option: str) -> BasePage:
@@ -184,6 +169,9 @@ def redirect_to_about_logins_page(self) -> BasePage:
184169
Opens the about:logins page by clicking the Password option in Hamburger Menu"
185170
"""
186171
self.open_panel_menu()
172+
# Bug 1974080
173+
if self.sys_platform() == "Windows":
174+
sleep(2)
187175
self.get_element("password-button").click()
188176
return self
189177

@@ -195,6 +183,9 @@ def open_bookmarks_panel_from_hamburger_menu(self) -> BasePage:
195183
Opens the Bookmarks panel from the Hamburger Menu
196184
"""
197185
self.open_panel_menu()
186+
# Bug 1974080
187+
if self.sys_platform() == "Windows":
188+
sleep(2)
198189
self.click_on("panel-ui-bookmarks")
199190
return self
200191

@@ -261,3 +252,45 @@ def get_bookmark_tags(self, tags: List[str]) -> List[str]:
261252
)
262253
for tag in tags
263254
]
255+
256+
@BasePage.context_chrome
257+
def clear_recent_history(self, execute=True) -> BasePage:
258+
"""Clears recent history. Case of execute=True may not be complete"""
259+
self.open_panel_menu()
260+
# Bug 1974080
261+
if self.sys_platform() == "Windows":
262+
sleep(2)
263+
self.get_element("panel-ui-history").click()
264+
265+
self.element_exists("clear-recent-history")
266+
self.element_visible("clear-recent-history")
267+
self.element_clickable("clear-recent-history")
268+
if execute:
269+
self.click("clear_recent_history")
270+
271+
return self
272+
273+
@BasePage.context_chrome
274+
def confirm_history_clear(self):
275+
"""Confirm that the history is empty"""
276+
self.open_history_menu()
277+
self.expect_element_attribute_contains(
278+
"recent-history-content", "value", "(Empty)"
279+
)
280+
281+
@BasePage.context_chrome
282+
def reopen_recently_closed_tabs(self) -> BasePage:
283+
"""Reopen all recently closed tabs"""
284+
self.open_panel_menu()
285+
# Bug 1974080
286+
if self.sys_platform() == "Windows":
287+
sleep(2)
288+
self.click_on("panel-ui-history")
289+
290+
self.click_on("panel-ui-history-recently-closed")
291+
if self.sys_platform() == "Linux":
292+
sleep(2)
293+
294+
self.click_on("panel-ui-history-recently-closed-reopen-tabs")
295+
296+
return self

modules/browser_object_print_preview.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ class PrintPreview(BasePage):
2121

2222
URL_TEMPLATE = "about:blank"
2323

24+
@BasePage.context_chrome
2425
def open(self) -> BasePage:
2526
"""Use PanelUi to open the Print Preview, wait for element to load"""
2627
panel_ui = PanelUi(self.driver)
27-
with self.driver.context(self.driver.CONTEXT_CHROME):
28-
panel_ui.open_panel_menu()
29-
panel_ui.select_panel_setting("print-option")
30-
self.wait_for_page_to_load()
28+
panel_ui.open_panel_menu()
29+
panel_ui.click_on("print-option")
30+
self.wait_for_page_to_load()
3131
return self
3232

3333
def open_with_key_combo(self) -> BasePage:

modules/data/panel_ui.components.json

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
{
22
"context": "chrome",
3+
"do-not-cache": true,
34
"panel-ui-button": {
45
"selectorData": "PanelUI-menu-button",
56
"strategy": "id",
67
"groups": [
7-
"requiredForPage",
8-
"doNotCache"
8+
"requiredForPage"
99
]
1010
},
1111

12+
"panel-main-view": {
13+
"selectorData": "appMenu-mainView",
14+
"strategy": "id",
15+
"groups": []
16+
},
17+
1218
"sync-user-button": {
1319
"selectorData": "toolbarbutton[id='fxa-toolbar-menu-button']",
1420
"strategy": "css",
@@ -36,9 +42,7 @@
3642
"fxa-sync-label": {
3743
"selectorData": "syncnow-label",
3844
"strategy": "class",
39-
"groups": [
40-
"doNotCache"
41-
]
45+
"groups": []
4246
},
4347

4448
"new-private-window-option": {
@@ -109,6 +113,12 @@
109113
"groups": []
110114
},
111115

116+
"panel-ui-history-view": {
117+
"selectorData": "PanelUI-history",
118+
"strategy": "id",
119+
"groups": []
120+
},
121+
112122
"panel-ui-history-recently-closed": {
113123
"selectorData": "appMenuRecentlyClosedTabs",
114124
"strategy": "id",
@@ -324,4 +334,4 @@
324334
"strategy": "id",
325335
"groups": []
326336
}
327-
}
337+
}

tests/bookmarks_and_history/test_clear_all_history.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
from modules.browser_object import PanelUi
55
from modules.page_object import GenericPage
6-
from modules.util import BrowserActions
76

87

98
@pytest.fixture()
@@ -20,16 +19,12 @@ def test_clear_all_history(driver: Firefox):
2019
"""
2120
C172045: Verify that the user can Clear all the History
2221
"""
22+
gen_page = GenericPage(driver)
2323
panel_ui = PanelUi(driver)
2424
panel_ui.open()
25-
gen_page = GenericPage(driver)
2625
panel_ui.open_history_menu()
27-
ba = BrowserActions(driver)
2826

2927
panel_ui.select_clear_history_option("Everything")
3028

31-
gen_page.get_element("clear-history-button").click()
32-
ba.switch_to_content_context()
33-
34-
panel_ui.open_history_menu()
35-
panel_ui.element_does_not_exist("bookmark-item")
29+
gen_page.click_on("clear-history-button")
30+
panel_ui.confirm_history_clear()

tests/bookmarks_and_history/test_clear_recent_history_displayed.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,4 @@ def test_clear_recent_history_displayed(driver: Firefox):
1616
panel_ui = PanelUi(driver)
1717
panel_ui.open()
1818

19-
panel_ui.open_panel_menu()
20-
with driver.context(driver.CONTEXT_CHROME):
21-
panel_ui.get_element("panel-ui-history").click()
22-
23-
panel_ui.element_exists("clear-recent-history")
24-
panel_ui.element_visible("clear-recent-history")
25-
panel_ui.element_clickable("clear-recent-history")
19+
panel_ui.clear_recent_history(execute=False)

tests/bookmarks_and_history/test_opened_website_in_new_tab_present_in_toolbar_history.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import pytest
22
from selenium.webdriver import Firefox
33

4-
from modules.browser_object_panel_ui import PanelUi
5-
from modules.browser_object_tabbar import TabBar
4+
from modules.browser_object import PanelUi, TabBar
65
from modules.page_object_generics import GenericPage
76

87

tests/password_manager/test_primary_password_triggered_on_about_logins_access.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from platform import system
2+
13
import pytest
24
from selenium.webdriver import Firefox, Keys
35

@@ -16,6 +18,9 @@ def test_case():
1618
return "2245199"
1719

1820

21+
@pytest.mark.skipif(
22+
system().lower().startswith("linux"), reason="Currently unstable in linux"
23+
)
1924
def test_primary_password_triggered_on_about_logins_access_via_hamburger_menu(
2025
driver: Firefox,
2126
):

tests/preferences/test_firefox_home_on_launch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_firefox_home_on_launch(driver: Firefox, sys_platform: str):
3838
# make sure that the option was selected correctly
3939
assert drop_down.get_attribute("label") == "Firefox Home (Default)"
4040
panel_ui.open_panel_menu()
41-
panel_ui.select_panel_setting("panel-ui-new-window")
41+
panel_ui.click_on("panel-ui-new-window")
4242
# wait for the number of tabs and switch
4343
tabs.wait_for_num_tabs(2)
4444
driver.switch_to.window(driver.window_handles[-1])

0 commit comments

Comments
 (0)