Skip to content

Commit 3181618

Browse files
authored
Merge pull request #152 from mozilla/tw/manage_cookie_data
Create test and add PoM objects and methods.
2 parents 17606f8 + bdc5e6e commit 3181618

File tree

4 files changed

+136
-1
lines changed

4 files changed

+136
-1
lines changed

modules/data/about_prefs.components.json

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,15 @@
272272
]
273273
},
274274

275+
"manage-data-save-changes-button": {
276+
"selectorData": "[class='button-text'][value='Save Changes']",
277+
"strategy": "css",
278+
"shadowParent": "cookies-shadow-root",
279+
"groups": [
280+
"doNotCache"
281+
]
282+
},
283+
275284
"permissions-notifications-button": {
276285
"selectorData": "notificationSettingsButton",
277286
"strategy": "id",
@@ -344,12 +353,24 @@
344353
"groups": []
345354
},
346355

356+
"manage-cookies-site": {
357+
"selectorData": "richlistitem[host='{name}']",
358+
"strategy": "css",
359+
"groups": []
360+
},
361+
347362
"language-set-alternative-button": {
348363
"selectorData": "[data-l10n-id='manage-browser-languages-button']",
349364
"strategy": "css",
350365
"groups": []
351366
},
352367

368+
"remove-selected-button": {
369+
"selectorData": "removeSelected",
370+
"strategy": "id",
371+
"groups": []
372+
},
373+
353374
"language-settings-content": {
354375
"selectorData": "[data-l10n-id='browser-languages-window2']",
355376
"strategy": "css",
@@ -362,6 +383,12 @@
362383
"groups": []
363384
},
364385

386+
"remove-all-button": {
387+
"selectorData": "removeAll",
388+
"strategy": "id",
389+
"groups": []
390+
},
391+
365392
"language-settings-select": {
366393
"selectorData": "[data-l10n-id='browser-languages-select-language']",
367394
"strategy": "css",
@@ -415,5 +442,23 @@
415442
"selectorData": "historyMode",
416443
"strategy": "id",
417444
"groups": []
445+
},
446+
447+
"manage-cookies-site": {
448+
"selectorData": "richlistitem[host='{name}']",
449+
"strategy": "css",
450+
"groups": []
451+
},
452+
453+
"remove-selected-button": {
454+
"selectorData": "removeSelected",
455+
"strategy": "id",
456+
"groups": []
457+
},
458+
459+
"remove-all-button": {
460+
"selectorData": "removeAll",
461+
"strategy": "id",
462+
"groups": []
418463
}
419464
}

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

tests/bookmarks_and_history/test_bookmark_via_bookmark_menu.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ def test_bookmark_via_bookmark_menu(driver: Firefox):
2323

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

0 commit comments

Comments
 (0)