Add option to enable Chromium's "Do-Not-Track" feature

This commit is contained in:
Michael Mintz 2022-07-08 16:38:15 -04:00
parent 536aa7987d
commit 07591a1bcf
8 changed files with 62 additions and 5 deletions

View File

@ -465,8 +465,9 @@ The code above will leave your browser window open in case there's a failure. (i
--highlights=NUM # (Number of highlight animations for Demo Mode actions.)
--message-duration=SECONDS # (The time length for Messenger alerts.)
--check-js # (Check for JavaScript errors after page loads.)
--ad-block # (Block some types of display ads after page loads.)
--ad-block # (Block some types of display ads from loading.)
--block-images # (Block images from loading during tests.)
--do-not-track # (Indicate to websites that you don't want to be tracked.)
--verify-delay=SECONDS # (The delay before MasterQA verification checks.)
--recorder # (Enables the Recorder for turning browser actions into code.)
--rec-behave # (Same as Recorder Mode, but also generates behave-gherkin.)

View File

@ -93,6 +93,7 @@ if pure_python:
sb._dash_initialized = False
sb.message_duration = None
sb.block_images = False
sb.do_not_track = False
sb.external_pdf = False
sb.remote_debug = False
sb.settings_file = None

View File

@ -147,8 +147,9 @@ pytest my_first_test.py --settings-file=custom_settings.py
--highlights=NUM # (Number of highlight animations for Demo Mode actions.)
--message-duration=SECONDS # (The time length for Messenger alerts.)
--check-js # (Check for JavaScript errors after page loads.)
--ad-block # (Block some types of display ads after page loads.)
--ad-block # (Block some types of display ads from loading.)
--block-images # (Block images from loading during tests.)
--do-not-track # (Indicate to websites that you don't want to be tracked.)
--verify-delay=SECONDS # (The delay before MasterQA verification checks.)
--recorder # (Enables the Recorder for turning browser actions into code.)
--rec-behave # (Same as Recorder Mode, but also generates behave-gherkin.)

View File

@ -57,8 +57,9 @@ behave -D agent="User Agent String" -D demo
-D highlights=NUM (Number of highlight animations for Demo Mode actions.)
-D message-duration=SECONDS (The time length for Messenger alerts.)
-D check-js (Check for JavaScript errors after page loads.)
-D ad-block (Block some types of display ads after page loads.)
-D ad-block (Block some types of display ads from loading.)
-D block-images (Block images from loading during tests.)
-D do-not-track (Indicate to websites that you don't want to be tracked.)
-D verify-delay=SECONDS (The delay before MasterQA verification checks.)
-D recorder (Enables the Recorder for turning browser actions into code.)
-D rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
@ -188,6 +189,7 @@ def get_configured_sb(context):
sb._dash_initialized = False
sb.message_duration = None
sb.block_images = False
sb.do_not_track = False
sb.external_pdf = False
sb.remote_debug = False
sb.settings_file = None
@ -578,6 +580,10 @@ def get_configured_sb(context):
if low_key in ["block-images", "block_images"]:
sb.block_images = True
continue
# Handle: -D do-not-track / do_not_track
if low_key in ["do-not-track", "do_not_track"]:
sb.do_not_track = True
continue
# Handle: -D external-pdf / external_pdf
if low_key in ["external-pdf", "external_pdf"]:
sb.external_pdf = True

View File

@ -277,6 +277,7 @@ def _set_chrome_options(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
user_data_dir,
extension_zip,
@ -313,6 +314,8 @@ def _set_chrome_options(
prefs["intl.accept_languages"] = locale_code
if block_images:
prefs["profile.managed_default_content_settings.images"] = 2
if do_not_track:
prefs["enable_do_not_track"] = True
if external_pdf:
prefs["plugins.always_open_pdf_externally"] = True
chrome_options.add_experimental_option("prefs", prefs)
@ -752,6 +755,7 @@ def get_driver(
swiftshader=None,
ad_block_on=None,
block_images=None,
do_not_track=None,
chromium_arg=None,
firefox_arg=None,
firefox_pref=None,
@ -856,6 +860,7 @@ def get_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
firefox_arg,
firefox_pref,
@ -896,6 +901,7 @@ def get_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
firefox_arg,
firefox_pref,
@ -940,6 +946,7 @@ def get_remote_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
firefox_arg,
firefox_pref,
@ -1034,6 +1041,7 @@ def get_remote_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
user_data_dir,
extension_zip,
@ -1242,6 +1250,7 @@ def get_remote_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
user_data_dir,
extension_zip,
@ -1424,6 +1433,7 @@ def get_local_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
firefox_arg,
firefox_pref,
@ -1663,6 +1673,8 @@ def get_local_driver(
prefs["intl.accept_languages"] = locale_code
if block_images:
prefs["profile.managed_default_content_settings.images"] = 2
if do_not_track:
prefs["enable_do_not_track"] = True
if external_pdf:
prefs["plugins.always_open_pdf_externally"] = True
edge_options.add_experimental_option("prefs", prefs)
@ -1924,6 +1936,7 @@ def get_local_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
user_data_dir,
extension_zip,
@ -1980,6 +1993,7 @@ def get_local_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
user_data_dir,
extension_zip,
@ -2100,6 +2114,7 @@ def get_local_driver(
swiftshader,
ad_block_on,
block_images,
do_not_track,
chromium_arg,
user_data_dir,
extension_zip,

View File

@ -2981,6 +2981,7 @@ class BaseCase(unittest.TestCase):
swiftshader=None,
ad_block_on=None,
block_images=None,
do_not_track=None,
chromium_arg=None,
firefox_arg=None,
firefox_pref=None,
@ -3024,6 +3025,7 @@ class BaseCase(unittest.TestCase):
swiftshader - the option to use Chrome's swiftshader (Chrome-only)
ad_block_on - the option to block ads from loading (Chromium-only)
block_images - the option to block images from loading (Chrome)
do_not_track - indicate that websites should not track you (Chrome)
chromium_arg - the option to add a Chromium arg to Chrome/Edge
firefox_arg - the option to add a Firefox arg to Firefox runs
firefox_pref - the option to add a Firefox pref:value set (Firefox)
@ -3120,6 +3122,8 @@ class BaseCase(unittest.TestCase):
ad_block_on = self.ad_block_on
if block_images is None:
block_images = self.block_images
if do_not_track is None:
do_not_track = self.do_not_track
if chromium_arg is None:
chromium_arg = self.chromium_arg
if firefox_arg is None:
@ -3184,6 +3188,7 @@ class BaseCase(unittest.TestCase):
swiftshader=swiftshader,
ad_block_on=ad_block_on,
block_images=block_images,
do_not_track=do_not_track,
chromium_arg=chromium_arg,
firefox_arg=firefox_arg,
firefox_pref=firefox_pref,
@ -12175,6 +12180,7 @@ class BaseCase(unittest.TestCase):
self.js_checking_on = sb_config.js_checking_on
self.ad_block_on = sb_config.ad_block_on
self.block_images = sb_config.block_images
self.do_not_track = sb_config.do_not_track
self.chromium_arg = sb_config.chromium_arg
self.firefox_arg = sb_config.firefox_arg
self.firefox_pref = sb_config.firefox_pref
@ -12495,6 +12501,7 @@ class BaseCase(unittest.TestCase):
swiftshader=self.swiftshader,
ad_block_on=self.ad_block_on,
block_images=self.block_images,
do_not_track=self.do_not_track,
chromium_arg=self.chromium_arg,
firefox_arg=self.firefox_arg,
firefox_pref=self.firefox_pref,

View File

@ -68,8 +68,9 @@ def pytest_addoption(parser):
--highlights=NUM (Number of highlight animations for Demo Mode actions.)
--message-duration=SECONDS (The time length for Messenger alerts.)
--check-js (Check for JavaScript errors after page loads.)
--ad-block (Block some types of display ads after page loads.)
--ad-block (Block some types of display ads from loading.)
--block-images (Block images from loading during tests.)
--do-not-track (Indicate to websites that you don't want to be tracked.)
--verify-delay=SECONDS (The delay before MasterQA verification checks.)
--recorder (Enables the Recorder for turning browser actions into code.)
--rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
@ -721,6 +722,17 @@ def pytest_addoption(parser):
help="""Using this makes WebDriver block images from
loading on web pages during tests.""",
)
parser.addoption(
"--do_not_track",
"--do-not-track",
action="store_true",
dest="do_not_track",
default=False,
help="""Indicate to websites that you don't want to be
tracked. The browser will send an extra HTTP
header each time it requests a web page.
https://support.google.com/chrome/answer/2790761""",
)
parser.addoption(
"--verify_delay",
"--verify-delay",
@ -1220,6 +1232,7 @@ def pytest_configure(config):
sb_config.js_checking_on = config.getoption("js_checking_on")
sb_config.ad_block_on = config.getoption("ad_block_on")
sb_config.block_images = config.getoption("block_images")
sb_config.do_not_track = config.getoption("do_not_track")
sb_config.verify_delay = config.getoption("verify_delay")
sb_config.recorder_mode = config.getoption("recorder_mode")
sb_config.recorder_ext = config.getoption("recorder_mode") # Again

View File

@ -49,8 +49,9 @@ class SeleniumBrowser(Plugin):
--highlights=NUM (Number of highlight animations for Demo Mode actions.)
--message-duration=SECONDS (The time length for Messenger alerts.)
--check-js (Check for JavaScript errors after page loads.)
--ad-block (Block some types of display ads after page loads.)
--ad-block (Block some types of display ads from loading.)
--block-images (Block images from loading during tests.)
--do-not-track (Indicate to websites that you don't want to be tracked.)
--verify-delay=SECONDS (The delay before MasterQA verification checks.)
--recorder (Enables the Recorder for turning browser actions into code.)
--rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
@ -453,6 +454,17 @@ class SeleniumBrowser(Plugin):
help="""Using this makes WebDriver block images from
loading on web pages during tests.""",
)
parser.add_option(
"--do_not_track",
"--do-not-track",
action="store_true",
dest="do_not_track",
default=False,
help="""Indicate to websites that you don't want to be
tracked. The browser will send an extra HTTP
header each time it requests a web page.
https://support.google.com/chrome/answer/2790761""",
)
parser.add_option(
"--verify_delay",
"--verify-delay",
@ -771,6 +783,7 @@ class SeleniumBrowser(Plugin):
test.test.js_checking_on = self.options.js_checking_on
test.test.ad_block_on = self.options.ad_block_on
test.test.block_images = self.options.block_images
test.test.do_not_track = self.options.do_not_track
test.test.verify_delay = self.options.verify_delay # MasterQA
test.test.recorder_mode = self.options.recorder_mode
test.test.recorder_ext = self.options.recorder_mode # Again