Add option for setting "--host-resolver-rules=RULES"
This commit is contained in:
parent
f7568e0193
commit
1e949977c3
|
@ -84,6 +84,7 @@ if pure_python:
|
|||
sb._disable_beforeunload = False
|
||||
sb.save_screenshot_after_test = False
|
||||
sb.no_screenshot_after_test = False
|
||||
sb.host_resolver_rules = None
|
||||
sb.page_load_strategy = None
|
||||
sb.timeout_multiplier = None
|
||||
sb.pytest_html_report = None
|
||||
|
|
|
@ -230,6 +230,7 @@ def get_configured_sb(context):
|
|||
sb.proxy_bypass_list = None
|
||||
sb.proxy_pac_url = None
|
||||
sb.multi_proxy = False
|
||||
sb.host_resolver_rules = None
|
||||
sb.enable_3d_apis = False
|
||||
sb.swiftshader = False
|
||||
sb.ad_block_on = False
|
||||
|
@ -772,6 +773,13 @@ def get_configured_sb(context):
|
|||
if low_key in ["multi-proxy", "multi_proxy"]:
|
||||
sb.multi_proxy = True
|
||||
continue
|
||||
# Handle: -D host-resolver-rules=RULES / host_resolver_rules=RULES
|
||||
if low_key in ["host-resolver-rules", "host_resolver_rules"]:
|
||||
host_resolver_rules = userdata[key]
|
||||
if host_resolver_rules == "true":
|
||||
host_resolver_rules = sb.host_resolver_rules
|
||||
sb.host_resolver_rules = host_resolver_rules
|
||||
continue
|
||||
# Handle: -D enable-3d-apis / enable_3d_apis
|
||||
if low_key in ["enable-3d-apis", "enable_3d_apis"]:
|
||||
sb.enable_3d_apis = True
|
||||
|
|
|
@ -756,6 +756,7 @@ def _set_chrome_options(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -837,6 +838,10 @@ def _set_chrome_options(
|
|||
chrome_options.set_capability(
|
||||
"goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"}
|
||||
)
|
||||
if host_resolver_rules:
|
||||
chrome_options.add_argument(
|
||||
"--host-resolver-rules=%s" % host_resolver_rules
|
||||
)
|
||||
if mobile_emulator and not is_using_uc(undetectable, browser_name):
|
||||
emulator_settings = {}
|
||||
device_metrics = {}
|
||||
|
@ -1320,6 +1325,7 @@ def get_driver(
|
|||
enable_3d_apis=False,
|
||||
swiftshader=False,
|
||||
ad_block_on=False,
|
||||
host_resolver_rules=None,
|
||||
block_images=False,
|
||||
do_not_track=False,
|
||||
chromium_arg=None,
|
||||
|
@ -1531,6 +1537,7 @@ def get_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -1585,6 +1592,7 @@ def get_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -1643,6 +1651,7 @@ def get_remote_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -1764,6 +1773,7 @@ def get_remote_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -1928,6 +1938,7 @@ def get_remote_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -2042,6 +2053,7 @@ def get_local_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -2453,6 +2465,10 @@ def get_local_driver(
|
|||
edge_options.set_capability(
|
||||
"ms:loggingPrefs", {"performance": "ALL", "browser": "ALL"}
|
||||
)
|
||||
if host_resolver_rules:
|
||||
edge_options.add_argument(
|
||||
"--host-resolver-rules=%s" % host_resolver_rules
|
||||
)
|
||||
if not enable_sync:
|
||||
edge_options.add_argument("--disable-sync")
|
||||
if (
|
||||
|
@ -2795,6 +2811,7 @@ def get_local_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
ad_block_on,
|
||||
host_resolver_rules,
|
||||
block_images,
|
||||
do_not_track,
|
||||
chromium_arg,
|
||||
|
@ -3295,6 +3312,7 @@ def get_local_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
None, # ad_block_on
|
||||
None, # host_resolver_rules
|
||||
block_images,
|
||||
do_not_track,
|
||||
None, # chromium_arg
|
||||
|
@ -3511,6 +3529,7 @@ def get_local_driver(
|
|||
enable_3d_apis,
|
||||
swiftshader,
|
||||
None, # ad_block_on
|
||||
None, # host_resolver_rules
|
||||
block_images,
|
||||
do_not_track,
|
||||
None, # chromium_arg
|
||||
|
|
|
@ -3765,6 +3765,7 @@ class BaseCase(unittest.TestCase):
|
|||
enable_3d_apis=None,
|
||||
swiftshader=None,
|
||||
ad_block_on=None,
|
||||
host_resolver_rules=None,
|
||||
block_images=None,
|
||||
do_not_track=None,
|
||||
chromium_arg=None,
|
||||
|
@ -3822,6 +3823,7 @@ class BaseCase(unittest.TestCase):
|
|||
enable_3d_apis - the option to enable WebGL and 3D APIs (Chrome)
|
||||
swiftshader - the option to use Chrome's swiftshader (Chrome-only)
|
||||
ad_block_on - the option to block ads from loading (Chromium-only)
|
||||
host_resolver_rules - Configure host-resolver-rules (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
|
||||
|
@ -3937,6 +3939,8 @@ class BaseCase(unittest.TestCase):
|
|||
swiftshader = self._swiftshader
|
||||
if ad_block_on is None:
|
||||
ad_block_on = self.ad_block_on
|
||||
if host_resolver_rules is None:
|
||||
host_resolver_rules = self.host_resolver_rules
|
||||
if block_images is None:
|
||||
block_images = self.block_images
|
||||
if do_not_track is None:
|
||||
|
@ -4024,6 +4028,7 @@ class BaseCase(unittest.TestCase):
|
|||
enable_3d_apis=enable_3d_apis,
|
||||
swiftshader=swiftshader,
|
||||
ad_block_on=ad_block_on,
|
||||
host_resolver_rules=host_resolver_rules,
|
||||
block_images=block_images,
|
||||
do_not_track=do_not_track,
|
||||
chromium_arg=chromium_arg,
|
||||
|
@ -14266,6 +14271,7 @@ class BaseCase(unittest.TestCase):
|
|||
self.message_duration = sb_config.message_duration
|
||||
self.js_checking_on = sb_config.js_checking_on
|
||||
self.ad_block_on = sb_config.ad_block_on
|
||||
self.host_resolver_rules = sb_config.host_resolver_rules
|
||||
self.block_images = sb_config.block_images
|
||||
self.do_not_track = sb_config.do_not_track
|
||||
self.chromium_arg = sb_config.chromium_arg
|
||||
|
@ -14633,6 +14639,7 @@ class BaseCase(unittest.TestCase):
|
|||
enable_3d_apis=self.enable_3d_apis,
|
||||
swiftshader=self._swiftshader,
|
||||
ad_block_on=self.ad_block_on,
|
||||
host_resolver_rules=self.host_resolver_rules,
|
||||
block_images=self.block_images,
|
||||
do_not_track=self.do_not_track,
|
||||
chromium_arg=self.chromium_arg,
|
||||
|
|
|
@ -99,6 +99,7 @@ def Driver(
|
|||
enable_3d_apis=None, # Enable WebGL and 3D APIs.
|
||||
swiftshader=None, # Chrome: --use-gl=angle / --use-angle=swiftshader-webgl
|
||||
ad_block_on=None, # Block some types of display ads from loading.
|
||||
host_resolver_rules=None, # Set host-resolver-rules, comma-separated.
|
||||
block_images=None, # Block images from loading during tests.
|
||||
do_not_track=None, # Tell websites that you don't want to be tracked.
|
||||
chromium_arg=None, # "ARG=N,ARG2" (Set Chromium args, ","-separated.)
|
||||
|
@ -436,6 +437,15 @@ def Driver(
|
|||
ad_block_on = True
|
||||
else:
|
||||
ad_block_on = False
|
||||
if host_resolver_rules is None:
|
||||
if '--host-resolver-rules="' in arg_join:
|
||||
host_resolver_rules = (
|
||||
arg_join.split('--host-resolver-rules="')[1].split('"')[0]
|
||||
)
|
||||
elif '--host_resolver_rules="' in arg_join:
|
||||
host_resolver_rules = (
|
||||
arg_join.split("--host_resolver_rules=")[1].split('"')[0]
|
||||
)
|
||||
if driver_version is None:
|
||||
if "--driver-version=" in arg_join:
|
||||
driver_version = (
|
||||
|
@ -486,6 +496,7 @@ def Driver(
|
|||
enable_3d_apis=enable_3d_apis,
|
||||
swiftshader=swiftshader,
|
||||
ad_block_on=ad_block_on,
|
||||
host_resolver_rules=host_resolver_rules,
|
||||
block_images=block_images,
|
||||
do_not_track=do_not_track,
|
||||
chromium_arg=chromium_arg,
|
||||
|
|
|
@ -76,6 +76,7 @@ def pytest_addoption(parser):
|
|||
--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 from loading.)
|
||||
--host-resolver-rules=RULES (Set host-resolver-rules, comma-separated.)
|
||||
--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.)
|
||||
|
@ -822,6 +823,25 @@ def pytest_addoption(parser):
|
|||
help="""Using this makes WebDriver block display ads
|
||||
that are defined in ad_block_list.AD_BLOCK_LIST.""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--host_resolver_rules",
|
||||
"--host-resolver-rules",
|
||||
action="store",
|
||||
dest="host_resolver_rules",
|
||||
default=None,
|
||||
help="""Use this option to set "host-resolver-rules".
|
||||
This lets you re-map traffic from any domain.
|
||||
Eg. "MAP www.google-analytics.com 0.0.0.0".
|
||||
Eg. "MAP * ~NOTFOUND , EXCLUDE myproxy".
|
||||
Eg. "MAP * 0.0.0.0 , EXCLUDE 127.0.0.1".
|
||||
Eg. "MAP *.google.com myproxy".
|
||||
Find more examples on these pages:
|
||||
(https://www.electronjs.org/docs/
|
||||
latest/api/command-line-switches)
|
||||
(https://www.chromium.org/developers/
|
||||
design-documents/network-stack/socks-proxy/)
|
||||
Use comma-separation for multiple host rules.""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--block_images",
|
||||
"--block-images",
|
||||
|
@ -1499,6 +1519,7 @@ def pytest_configure(config):
|
|||
sb_config.message_duration = config.getoption("message_duration")
|
||||
sb_config.js_checking_on = config.getoption("js_checking_on")
|
||||
sb_config.ad_block_on = config.getoption("ad_block_on")
|
||||
sb_config.host_resolver_rules = config.getoption("host_resolver_rules")
|
||||
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")
|
||||
|
|
|
@ -63,6 +63,7 @@ def SB(
|
|||
enable_3d_apis=None, # Enable WebGL and 3D APIs.
|
||||
swiftshader=None, # Chrome: --use-gl=angle / --use-angle=swiftshader-webgl
|
||||
ad_block_on=None, # Block some types of display ads from loading.
|
||||
host_resolver_rules=None, # Set host-resolver-rules, comma-separated.
|
||||
block_images=None, # Block images from loading during tests.
|
||||
do_not_track=None, # Tell websites that you don't want to be tracked.
|
||||
chromium_arg=None, # "ARG=N,ARG2" (Set Chromium args, ","-separated.)
|
||||
|
@ -604,6 +605,15 @@ def SB(
|
|||
ad_block_on = True
|
||||
else:
|
||||
ad_block_on = False
|
||||
if host_resolver_rules is None:
|
||||
if '--host-resolver-rules="' in arg_join:
|
||||
host_resolver_rules = (
|
||||
arg_join.split('--host-resolver-rules="')[1].split('"')[0]
|
||||
)
|
||||
elif '--host_resolver_rules="' in arg_join:
|
||||
host_resolver_rules = (
|
||||
arg_join.split("--host_resolver_rules=")[1].split('"')[0]
|
||||
)
|
||||
if driver_version is None:
|
||||
if "--driver-version=" in arg_join:
|
||||
driver_version = (
|
||||
|
@ -710,6 +720,7 @@ def SB(
|
|||
sb_config.dashboard = False
|
||||
sb_config._dashboard_initialized = False
|
||||
sb_config.message_duration = message_duration
|
||||
sb_config.host_resolver_rules = host_resolver_rules
|
||||
sb_config.block_images = block_images
|
||||
sb_config.do_not_track = do_not_track
|
||||
sb_config.use_wire = use_wire
|
||||
|
@ -811,6 +822,7 @@ def SB(
|
|||
sb.dashboard = sb_config.dashboard
|
||||
sb._dash_initialized = sb_config._dashboard_initialized
|
||||
sb.message_duration = sb_config.message_duration
|
||||
sb.host_resolver_rules = sb_config.host_resolver_rules
|
||||
sb.block_images = sb_config.block_images
|
||||
sb.do_not_track = sb_config.do_not_track
|
||||
sb.use_wire = sb_config.use_wire
|
||||
|
|
|
@ -55,6 +55,7 @@ class SeleniumBrowser(Plugin):
|
|||
--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 from loading.)
|
||||
--host-resolver-rules=RULES (Set host-resolver-rules, comma-separated.)
|
||||
--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.)
|
||||
|
@ -553,6 +554,25 @@ class SeleniumBrowser(Plugin):
|
|||
help="""Using this makes WebDriver block display ads
|
||||
that are defined in ad_block_list.AD_BLOCK_LIST.""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--host_resolver_rules",
|
||||
"--host-resolver-rules",
|
||||
action="store",
|
||||
dest="host_resolver_rules",
|
||||
default=None,
|
||||
help="""Use this option to set "host-resolver-rules".
|
||||
This lets you re-map traffic from any domain.
|
||||
Eg. "MAP www.google-analytics.com 0.0.0.0".
|
||||
Eg. "MAP * ~NOTFOUND , EXCLUDE myproxy".
|
||||
Eg. "MAP * 0.0.0.0 , EXCLUDE 127.0.0.1".
|
||||
Eg. "MAP *.google.com myproxy".
|
||||
Find more examples on these pages:
|
||||
(https://www.electronjs.org/docs/
|
||||
latest/api/command-line-switches)
|
||||
(https://www.chromium.org/developers/
|
||||
design-documents/network-stack/socks-proxy/)
|
||||
Use comma-separation for multiple host rules.""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--block_images",
|
||||
"--block-images",
|
||||
|
@ -1090,6 +1110,7 @@ class SeleniumBrowser(Plugin):
|
|||
test.test.message_duration = self.options.message_duration
|
||||
test.test.js_checking_on = self.options.js_checking_on
|
||||
test.test.ad_block_on = self.options.ad_block_on
|
||||
test.test.host_resolver_rules = self.options.host_resolver_rules
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue