Skip to content

Commit e34bdd5

Browse files
committed
Create test for the tracking content status in custom mode
1 parent 76ac154 commit e34bdd5

File tree

5 files changed

+106
-2
lines changed

5 files changed

+106
-2
lines changed

modules/browser_object_navigation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,6 @@ def open_tracker_panel(self) -> BasePage:
188188
"""
189189
Clicks the shield icon and opens the panel associated with it
190190
"""
191-
# self.set_chrome_context()
191+
self.set_chrome_context()
192192
self.get_element("shield-icon").click()
193193
return self

modules/data/about_prefs.components.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,18 @@
258258
"groups": []
259259
},
260260

261+
"tracking-in-all-windows": {
262+
"selectorData": "menuitem[data-l10n-id='content-blocking-tracking-protection-option-all-windows']",
263+
"strategy": "css",
264+
"groups": []
265+
},
266+
267+
"cryptominers-checkbox": {
268+
"selectorData": "contentBlockingCryptominersCheckbox",
269+
"strategy": "id",
270+
"groups": []
271+
},
272+
261273
"known-fingerprints-checkbox": {
262274
"selectorData": "contentBlockingFingerprintersCheckbox",
263275
"strategy": "id",

modules/data/tracker_panel.components.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,11 @@
6161
"doNotCache",
6262
"requiredForPage"
6363
]
64-
}
64+
},
65+
66+
"tracking-subview": {
67+
"selectorData": "protections-popup-trackersView",
68+
"strategy": "id",
69+
"groups": []
70+
}
6571
}

modules/page_object_about_prefs.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,3 +322,40 @@ def get_iframe(self) -> WebElement:
322322
Gets the webelement for the iframe that commonly appears in about:preferences
323323
"""
324324
return self.get_element("browser-popup")
325+
326+
def set_etp_custom_mode(self) -> BasePage:
327+
"""Select the Custom mode in Enhanced Tracking Protection section"""
328+
self.get_element("custom-radio").click()
329+
return self
330+
331+
def set_etp_custom_mode_options(self, options_to_check: List[str]) -> BasePage:
332+
"""
333+
Configures the Custom mode settings in the Enhanced Tracking Protection (ETP) section by selecting
334+
specified options.
335+
336+
This method first ensures that the browser is set to Custom mode. It then deselects all available
337+
tracking protection options (there are checked by default) and selectively re-checks only those specified in the
338+
`options_to_check` list (multiple values can be checked at once).
339+
"""
340+
self.set_etp_custom_mode()
341+
checkbox_mapping = {
342+
"cookies": self.get_element("cookies-checkbox"),
343+
"tracking": self.get_element("tracking-checkbox"),
344+
"cryptominers": self.get_element("cryptominers-checkbox"),
345+
"known_fingerprints": self.get_element("known-fingerprints-checkbox"),
346+
"suspected_fingerprints": self.get_element(
347+
"suspected-fingerprints-checkbox"
348+
),
349+
}
350+
351+
# Uncheck all options first
352+
for checkbox in checkbox_mapping.values():
353+
if checkbox.is_selected():
354+
checkbox.click()
355+
356+
# Check only the specified options
357+
for option in options_to_check:
358+
checkbox = checkbox_mapping.get(option)
359+
if checkbox and not checkbox.is_selected():
360+
checkbox.click()
361+
return self
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from selenium.webdriver import Firefox
2+
3+
from modules.browser_object_navigation import Navigation
4+
from modules.browser_object_tracker_panel import TrackerPanel
5+
from modules.page_object_about_prefs import AboutPrefs
6+
7+
Tracker_URL = "https://senglehardt.com/test/trackingprotection/test_pages/tracking_protection.html"
8+
9+
10+
def test_blocked_tracking_content(driver: Firefox):
11+
"""
12+
C446405.1: Ensure that ETP Custom mode with option Tracking Content -> In all windows set blocks tracking content
13+
"""
14+
15+
nav = Navigation(driver)
16+
about_prefs = AboutPrefs(driver, category="privacy").open()
17+
tracker_panel = TrackerPanel(driver)
18+
19+
about_prefs.set_etp_custom_mode()
20+
about_prefs.set_etp_custom_mode_options(["tracking"])
21+
about_prefs.get_element("tracking-in-all-windows").click()
22+
23+
driver.get(Tracker_URL)
24+
nav.open_tracker_panel()
25+
tracker_panel.get_element("tracker-tracking-content").click()
26+
tracker_subview_title = tracker_panel.get_element("tracking-subview")
27+
assert tracker_subview_title.get_attribute("title") == "Tracking Content Blocked"
28+
29+
30+
def test_allowed_tracking_content(driver: Firefox):
31+
"""
32+
C446405.2: Ensure that ETP Custom mode with option Tracking Content -> Only in Private Windows set allows
33+
tracking content
34+
"""
35+
36+
nav = Navigation(driver)
37+
about_prefs = AboutPrefs(driver, category="privacy").open()
38+
tracker_panel = TrackerPanel(driver)
39+
40+
about_prefs.set_etp_custom_mode()
41+
about_prefs.set_etp_custom_mode_options(["tracking"])
42+
43+
driver.get(Tracker_URL)
44+
nav.open_tracker_panel()
45+
tracker_panel.get_element("tracker-tracking-content").click()
46+
tracker_subview_title = tracker_panel.get_element("tracking-subview")
47+
assert (
48+
tracker_subview_title.get_attribute("title") == "Not Blocking Tracking Content"
49+
)

0 commit comments

Comments
 (0)