Skip to content

Commit db9b54f

Browse files
committed
Create test and add PoM objects and methods. Test fails in headless mode
1 parent 7f44c0b commit db9b54f

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed

modules/data/about_prefs.components.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,15 @@
323323
]
324324
},
325325

326+
"manage-data-save-changes-button": {
327+
"selectorData": "[class='button-text'][value='Save Changes']",
328+
"strategy": "css",
329+
"shadowParent": "cookies-shadow-root",
330+
"groups": [
331+
"doNotCache"
332+
]
333+
},
334+
326335
"permissions-notifications-button": {
327336
"selectorData": "notificationSettingsButton",
328337
"strategy": "id",
@@ -381,5 +390,23 @@
381390
"selectorData": "description[data-l10n-id='history-dontremember-description']",
382391
"strategy": "css",
383392
"groups": []
393+
},
394+
395+
"manage-cookies-site": {
396+
"selectorData": "richlistitem[host='{name}']",
397+
"strategy": "css",
398+
"groups": []
399+
},
400+
401+
"remove-selected-button": {
402+
"selectorData": "removeSelected",
403+
"strategy": "id",
404+
"groups": []
405+
},
406+
407+
"remove-all-button": {
408+
"selectorData": "removeAll",
409+
"strategy": "id",
410+
"groups": []
384411
}
385412
}

modules/page_object_about_prefs.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,13 @@ def get_clear_cookie_data_value(self) -> int:
317317
else:
318318
print("No number found in the string")
319319

320+
def get_manage_data_site_element(self, site: str) -> WebElement:
321+
"""
322+
Returns the WebElement for the given site in the manage site data popup
323+
"""
324+
element = self.get_element("manage-cookies-site", labels=[site])
325+
return element
326+
320327
def get_iframe(self) -> WebElement:
321328
"""
322329
Gets the webelement for the iframe that commonly appears in about:preferences
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
from selenium.webdriver import Firefox
2+
3+
from modules.page_object import AboutPrefs
4+
from modules.util import BrowserActions
5+
from pynput.keyboard import Controller, Key
6+
from time import sleep
7+
8+
COOKIE_SITE = "google.com"
9+
10+
11+
def test_manage_cookie_data(driver: Firefox):
12+
"""
13+
C143633 - Cookies and Site Data can be managed
14+
via the "Managed Cookies and Site Data" pane
15+
"""
16+
# Instantiate objects
17+
about_prefs = AboutPrefs(driver, category="privacy")
18+
ba = BrowserActions(driver)
19+
keyboard = Controller()
20+
21+
def open_manage_cookies_data_dialog():
22+
about_prefs.open()
23+
manage_data_popup = about_prefs.press_button_get_popup_dialog_iframe(
24+
"Manage Data…"
25+
)
26+
ba.switch_to_iframe_context(manage_data_popup)
27+
28+
# Visit some sites to get a few cookies added to saved data
29+
driver.get("https://www.google.com")
30+
driver.get("https://www.jetbrains.com")
31+
driver.get("https://www.wikipedia.com")
32+
33+
# Navigate to the manage data dialog of about:preferences#privacy
34+
open_manage_cookies_data_dialog()
35+
36+
# Click on one of the items from the list.
37+
cookie_item = about_prefs.get_manage_data_site_element(COOKIE_SITE)
38+
cookie_item.click()
39+
40+
# The clicked on site in the list is highlighted
41+
selected = cookie_item.get_attribute("selected")
42+
assert selected == "true"
43+
44+
# Click the "Remove Selected" button.
45+
about_prefs.get_element("remove-selected-button").click()
46+
47+
# The selected item is removed from the list.
48+
about_prefs.element_does_not_exist("manage-cookies-site", labels=[COOKIE_SITE])
49+
50+
# Click on the "Remove All" button and wait for changes to take.
51+
about_prefs.get_element("remove-all-button").click()
52+
sleep(1)
53+
54+
# All the sites are removed from the list.
55+
# NOTE: There seems to be an empty placeholder element, thus 1 item is always there.
56+
cookie_list = about_prefs.get_elements("cookies-manage-data-sitelist")
57+
assert len(cookie_list) == 1
58+
59+
# Click on "Save Changes" button and wait for changes to take.
60+
about_prefs.get_element("manage-data-save-changes-button").click()
61+
sleep(1)
62+
63+
# Using pynput, navigate to the "Remove" button of the acceptance dialog/alert,
64+
# then send the Enter key and wait for changes to take
65+
keyboard.press(Key.tab)
66+
keyboard.release(Key.tab)
67+
sleep(0.5)
68+
keyboard.press(Key.tab)
69+
keyboard.release(Key.tab)
70+
sleep(0.5)
71+
keyboard.press(Key.enter)
72+
keyboard.release(Key.enter)
73+
sleep(1)
74+
75+
# Navigate back to the manage data dialog of about:preferences#privacy
76+
open_manage_cookies_data_dialog()
77+
78+
# All the cookies and site data are deleted.
79+
cookie_list_post_remove = about_prefs.get_elements("cookies-manage-data-sitelist")
80+
assert len(cookie_list_post_remove) == 1 # NOTE: always an empty item here

0 commit comments

Comments
 (0)