Skip to content

Commit e35e85c

Browse files
committed
Add better error-handling for Recorder Mode
1 parent ca4f5a5 commit e35e85c

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,10 +399,11 @@ def _set_chrome_options(
399399
)
400400
chrome_options.add_experimental_option("useAutomationExtension", False)
401401
if (settings.DISABLE_CSP_ON_CHROME or disable_csp) and not headless:
402-
# Headless Chrome doesn't support extensions, which are required
403-
# for disabling the Content Security Policy on Chrome
402+
# Headless Chrome does not support extensions, which are required
403+
# for disabling the Content Security Policy on Chrome.
404404
chrome_options = _add_chrome_disable_csp_extension(chrome_options)
405405
if ad_block_on and not headless:
406+
# Headless Chrome does not support extensions.
406407
chrome_options = _add_chrome_ad_block_extension(chrome_options)
407408
if recorder_ext and not headless:
408409
chrome_options = _add_chrome_recorder_extension(chrome_options)

seleniumbase/fixtures/base_case.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9964,10 +9964,14 @@ def setUp(self, masterqa_mode=False):
99649964
if self._reuse_session:
99659965
sb_config.shared_driver = self.driver
99669966

9967-
if self.browser in ["firefox", "ie", "safari"]:
9968-
# Only Chromium-based browsers have the mobile emulator.
9967+
if self.browser in ["firefox", "ie", "safari", "opera"]:
9968+
# Only Chrome and Edge browsers have the mobile emulator.
99699969
# Some actions such as hover-clicking are different on mobile.
99709970
self.mobile_emulator = False
9971+
# The Recorder Mode browser extension is only for Chrome/Edge.
9972+
if self.recorder_mode:
9973+
print('\n* The Recorder extension is for Chrome & Edge only!')
9974+
self.recorder_mode = False
99719975

99729976
# Configure the test time limit (if used).
99739977
self.set_time_limit(self.time_limit)

seleniumbase/plugins/pytest_plugin.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,19 @@ def pytest_addoption(parser):
899899
'\n (DO NOT combine "--recorder" with "-n NUM_PROCESSES"!)\n'
900900
)
901901

902+
# Recorder Mode does not support headless browser runs.
903+
# (Chromium does not allow extensions in Headless Mode)
904+
if (
905+
"--recorder" in sys_argv
906+
or "--record" in sys_argv
907+
or "--rec" in sys_argv
908+
):
909+
if ("--headless" in sys_argv):
910+
raise Exception(
911+
"\n\n Recorder Mode does NOT support Headless Mode!"
912+
'\n (DO NOT combine "--recorder" with "--headless"!)\n'
913+
)
914+
902915
# As a shortcut, you can use "--edge" instead of "--browser=edge", etc,
903916
# but you can only specify one default browser for tests. (Default: chrome)
904917
browser_changes = 0

0 commit comments

Comments
 (0)