Skip to content

Commit f11300b

Browse files
committed
Fail fast if using Recorder Mode without Chrome or Edge
1 parent 1b23e26 commit f11300b

File tree

3 files changed

+33
-4
lines changed

3 files changed

+33
-4
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10327,6 +10327,14 @@ def setUp(self, masterqa_mode=False):
1032710327
"Chrome/89.0.4389.105 Mobile Safari/537.36"
1032810328
)
1032910329

10330+
if self.browser in ["firefox", "ie", "safari", "opera"]:
10331+
# The Recorder Mode browser extension is only for Chrome/Edge.
10332+
if self.recorder_mode:
10333+
message = (
10334+
"Recorder Mode ONLY supports Chrome and Edge!\n"
10335+
'(Your browser choice was: "%s")' % self.browser)
10336+
raise Exception(message)
10337+
1033010338
# Dashboard pre-processing:
1033110339
if self.dashboard:
1033210340
if self._multithreaded:
@@ -10428,10 +10436,6 @@ def setUp(self, masterqa_mode=False):
1042810436
# Only Chrome and Edge browsers have the mobile emulator.
1042910437
# Some actions such as hover-clicking are different on mobile.
1043010438
self.mobile_emulator = False
10431-
# The Recorder Mode browser extension is only for Chrome/Edge.
10432-
if self.recorder_mode:
10433-
print('\n* The Recorder extension is for Chrome & Edge only!')
10434-
self.recorder_mode = False
1043510439

1043610440
# Configure the test time limit (if used).
1043710441
self.set_time_limit(self.time_limit)

seleniumbase/plugins/pytest_plugin.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,7 @@ def pytest_addoption(parser):
902902

903903
# Recorder Mode does not support headless browser runs.
904904
# (Chromium does not allow extensions in Headless Mode)
905+
using_recorder = False
905906
if (
906907
"--recorder" in sys_argv
907908
or "--record" in sys_argv
@@ -912,11 +913,13 @@ def pytest_addoption(parser):
912913
"\n\n Recorder Mode does NOT support Headless Mode!"
913914
'\n (DO NOT combine "--recorder" with "--headless"!)\n'
914915
)
916+
using_recorder = True
915917

916918
# As a shortcut, you can use "--edge" instead of "--browser=edge", etc,
917919
# but you can only specify one default browser for tests. (Default: chrome)
918920
browser_changes = 0
919921
browser_set = None
922+
browser_text = None
920923
browser_list = []
921924
if "--browser=chrome" in sys_argv or "--browser chrome" in sys_argv:
922925
browser_changes += 1
@@ -950,28 +953,35 @@ def pytest_addoption(parser):
950953
browser_changes += 1
951954
browser_set = "remote"
952955
browser_list.append("--browser=remote")
956+
browser_text = browser_set
953957
if "--chrome" in sys_argv and not browser_set == "chrome":
954958
browser_changes += 1
959+
browser_text = "chrome"
955960
sb_config._browser_shortcut = "chrome"
956961
browser_list.append("--chrome")
957962
if "--edge" in sys_argv and not browser_set == "edge":
958963
browser_changes += 1
964+
browser_text = "edge"
959965
sb_config._browser_shortcut = "edge"
960966
browser_list.append("--edge")
961967
if "--firefox" in sys_argv and not browser_set == "firefox":
962968
browser_changes += 1
969+
browser_text = "firefox"
963970
sb_config._browser_shortcut = "firefox"
964971
browser_list.append("--firefox")
965972
if "--ie" in sys_argv and not browser_set == "ie":
966973
browser_changes += 1
974+
browser_text = "ie"
967975
sb_config._browser_shortcut = "ie"
968976
browser_list.append("--ie")
969977
if "--opera" in sys_argv and not browser_set == "opera":
970978
browser_changes += 1
979+
browser_text = "opera"
971980
sb_config._browser_shortcut = "opera"
972981
browser_list.append("--opera")
973982
if "--safari" in sys_argv and not browser_set == "safari":
974983
browser_changes += 1
984+
browser_text = "opera"
975985
sb_config._browser_shortcut = "safari"
976986
browser_list.append("--safari")
977987
if browser_changes > 1:
@@ -983,6 +993,15 @@ def pytest_addoption(parser):
983993
message += "\n ONLY ONE default browser is allowed!"
984994
message += "\n Select a single browser & try again!\n"
985995
raise Exception(message)
996+
if (
997+
using_recorder
998+
and browser_changes == 1
999+
and browser_text not in ["chrome", "edge"]
1000+
):
1001+
message = (
1002+
"\n\n Recorder Mode ONLY supports Chrome and Edge!"
1003+
'\n (Your browser choice was: "%s")\n' % browser_list[0])
1004+
raise Exception(message)
9861005

9871006

9881007
def pytest_configure(config):

seleniumbase/plugins/selenium_plugin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,12 @@ def configure(self, options, conf):
595595
proxy_helper.remove_proxy_zip_if_present()
596596

597597
def beforeTest(self, test):
598+
browser = self.options.browser
599+
if self.options.recorder_mode and browser not in ["chrome", "edge"]:
600+
message = (
601+
"\n\n Recorder Mode ONLY supports Chrome and Edge!"
602+
'\n (Your browser choice was: "%s")\n' % browser)
603+
raise Exception(message)
598604
test.test.browser = self.options.browser
599605
test.test.cap_file = self.options.cap_file
600606
test.test.cap_string = self.options.cap_string

0 commit comments

Comments
 (0)