Skip to content

Commit 349d6bf

Browse files
committed
Add option to enable WebGL and 3D APIs
1 parent 554cd02 commit 349d6bf

File tree

6 files changed

+67
-12
lines changed

6 files changed

+67
-12
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ def _set_chrome_options(
362362
guest_mode,
363363
devtools,
364364
remote_debug,
365+
enable_3d_apis,
365366
swiftshader,
366367
ad_block_on,
367368
block_images,
@@ -630,7 +631,8 @@ def _set_chrome_options(
630631
chrome_options.add_argument("--disable-prompt-on-repost")
631632
chrome_options.add_argument("--dns-prefetch-disable")
632633
chrome_options.add_argument("--disable-translate")
633-
chrome_options.add_argument("--disable-3d-apis")
634+
if not enable_3d_apis:
635+
chrome_options.add_argument("--disable-3d-apis")
634636
if (
635637
is_using_uc(undetectable, browser_name)
636638
and (
@@ -904,6 +906,7 @@ def get_driver(
904906
guest_mode=False,
905907
devtools=False,
906908
remote_debug=False,
909+
enable_3d_apis=False,
907910
swiftshader=False,
908911
ad_block_on=False,
909912
block_images=False,
@@ -1068,6 +1071,7 @@ def get_driver(
10681071
guest_mode,
10691072
devtools,
10701073
remote_debug,
1074+
enable_3d_apis,
10711075
swiftshader,
10721076
ad_block_on,
10731077
block_images,
@@ -1114,6 +1118,7 @@ def get_driver(
11141118
guest_mode,
11151119
devtools,
11161120
remote_debug,
1121+
enable_3d_apis,
11171122
swiftshader,
11181123
ad_block_on,
11191124
block_images,
@@ -1164,6 +1169,7 @@ def get_remote_driver(
11641169
guest_mode,
11651170
devtools,
11661171
remote_debug,
1172+
enable_3d_apis,
11671173
swiftshader,
11681174
ad_block_on,
11691175
block_images,
@@ -1264,6 +1270,7 @@ def get_remote_driver(
12641270
guest_mode,
12651271
devtools,
12661272
remote_debug,
1273+
enable_3d_apis,
12671274
swiftshader,
12681275
ad_block_on,
12691276
block_images,
@@ -1493,6 +1500,7 @@ def get_remote_driver(
14931500
guest_mode,
14941501
devtools,
14951502
remote_debug,
1503+
enable_3d_apis,
14961504
swiftshader,
14971505
ad_block_on,
14981506
block_images,
@@ -1688,6 +1696,7 @@ def get_local_driver(
16881696
guest_mode,
16891697
devtools,
16901698
remote_debug,
1699+
enable_3d_apis,
16911700
swiftshader,
16921701
ad_block_on,
16931702
block_images,
@@ -2040,7 +2049,8 @@ def get_local_driver(
20402049
edge_options.add_argument("--dom-automation")
20412050
edge_options.add_argument("--disable-hang-monitor")
20422051
edge_options.add_argument("--disable-prompt-on-repost")
2043-
edge_options.add_argument("--disable-3d-apis")
2052+
if not enable_3d_apis:
2053+
edge_options.add_argument("--disable-3d-apis")
20442054
if (
20452055
selenium4_or_newer
20462056
and page_load_strategy
@@ -2288,6 +2298,7 @@ def get_local_driver(
22882298
guest_mode,
22892299
devtools,
22902300
remote_debug,
2301+
enable_3d_apis,
22912302
swiftshader,
22922303
ad_block_on,
22932304
block_images,
@@ -2351,6 +2362,7 @@ def get_local_driver(
23512362
guest_mode,
23522363
devtools,
23532364
remote_debug,
2365+
enable_3d_apis,
23542366
swiftshader,
23552367
ad_block_on,
23562368
block_images,
@@ -2732,6 +2744,7 @@ def get_local_driver(
27322744
guest_mode,
27332745
devtools,
27342746
remote_debug,
2747+
enable_3d_apis,
27352748
swiftshader,
27362749
ad_block_on,
27372750
block_images,

seleniumbase/fixtures/base_case.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3189,6 +3189,7 @@ def get_new_driver(
31893189
guest_mode=None,
31903190
devtools=None,
31913191
remote_debug=None,
3192+
enable_3d_apis=None,
31923193
swiftshader=None,
31933194
ad_block_on=None,
31943195
block_images=None,
@@ -3238,6 +3239,7 @@ def get_new_driver(
32383239
guest - the option to enable Chrome's Guest mode (Chrome)
32393240
devtools - the option to open Chrome's DevTools on start (Chrome)
32403241
remote_debug - the option to enable Chrome's Remote Debugger
3242+
enable_3d_apis - the option to enable WebGL and 3D APIs (Chrome)
32413243
swiftshader - the option to use Chrome's swiftshader (Chrome-only)
32423244
ad_block_on - the option to block ads from loading (Chromium-only)
32433245
block_images - the option to block images from loading (Chrome)
@@ -3341,6 +3343,8 @@ def get_new_driver(
33413343
devtools = self.devtools
33423344
if remote_debug is None:
33433345
remote_debug = self.remote_debug
3346+
if enable_3d_apis is None:
3347+
enable_3d_apis = self.enable_3d_apis
33443348
if swiftshader is None:
33453349
swiftshader = self.swiftshader
33463350
if ad_block_on is None:
@@ -3416,6 +3420,7 @@ def get_new_driver(
34163420
guest_mode=guest_mode,
34173421
devtools=devtools,
34183422
remote_debug=remote_debug,
3423+
enable_3d_apis=enable_3d_apis,
34193424
swiftshader=swiftshader,
34203425
ad_block_on=ad_block_on,
34213426
block_images=block_images,
@@ -12777,6 +12782,7 @@ def setUp(self, masterqa_mode=False):
1277712782
self.dash_lock = fasteners.InterProcessLock(
1277812783
constants.Dashboard.LOCKFILE
1277912784
)
12785+
self.enable_3d_apis = sb_config.enable_3d_apis
1278012786
self.swiftshader = sb_config.swiftshader
1278112787
self.user_data_dir = sb_config.user_data_dir
1278212788
self.extension_zip = sb_config.extension_zip
@@ -13057,6 +13063,7 @@ def setUp(self, masterqa_mode=False):
1305713063
guest_mode=self.guest_mode,
1305813064
devtools=self.devtools,
1305913065
remote_debug=self.remote_debug,
13066+
enable_3d_apis=self.enable_3d_apis,
1306013067
swiftshader=self.swiftshader,
1306113068
ad_block_on=self.ad_block_on,
1306213069
block_images=self.block_images,

seleniumbase/plugins/driver_manager.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def Driver(
5656
guest_mode=None, # Enable Chromium's Guest mode.
5757
devtools=None, # Open Chromium's DevTools when the browser opens.
5858
remote_debug=None, # Enable Chrome's Debugger on "http://localhost:9222".
59+
enable_3d_apis=None, # Enable WebGL and 3D APIs.
5960
swiftshader=None, # Use Chrome's "--use-gl=swiftshader" feature.
6061
ad_block_on=None, # Block some types of display ads from loading.
6162
block_images=None, # Block images from loading during tests.
@@ -299,32 +300,37 @@ def Driver(
299300
elif "--pls=none" in sys_argv or '--pls="none"' in sys_argv:
300301
page_load_strategy = "none"
301302
if block_images is None:
302-
if "--block-images" in sys_argv:
303+
if "--block-images" in sys_argv or "--block_images" in sys_argv:
303304
block_images = True
304305
else:
305306
block_images = False
306307
if do_not_track is None:
307-
if "--do-not-track" in sys_argv:
308+
if "--do-not-track" in sys_argv or "--do_not_track" in sys_argv:
308309
do_not_track = True
309310
else:
310311
do_not_track = False
311312
if external_pdf is None:
312-
if "--external-pdf" in sys_argv:
313+
if "--external-pdf" in sys_argv or "--external_pdf" in sys_argv:
313314
external_pdf = True
314315
else:
315316
external_pdf = False
316317
if remote_debug is None:
317-
if "--remote-debug" in sys_argv:
318+
if "--remote-debug" in sys_argv or "--remote_debug" in sys_argv:
318319
remote_debug = True
319320
else:
320321
remote_debug = False
322+
if enable_3d_apis is None:
323+
if "--enable-3d-apis" in sys_argv or "--enable_3d_apis" in sys_argv:
324+
enable_3d_apis = True
325+
else:
326+
enable_3d_apis = False
321327
if swiftshader is None:
322328
if "--swiftshader" in sys_argv:
323329
swiftshader = True
324330
else:
325331
swiftshader = False
326332
if ad_block_on is None:
327-
if "--ad-block" in sys_argv:
333+
if "--ad-block" in sys_argv or "--ad_block" in sys_argv:
328334
ad_block_on = True
329335
else:
330336
ad_block_on = False
@@ -362,6 +368,7 @@ def Driver(
362368
guest_mode=guest_mode,
363369
devtools=devtools,
364370
remote_debug=remote_debug,
371+
enable_3d_apis=enable_3d_apis,
365372
swiftshader=swiftshader,
366373
ad_block_on=ad_block_on,
367374
block_images=block_images,

seleniumbase/plugins/pytest_plugin.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ def pytest_addoption(parser):
9696
--final-debug (Enter Debug Mode after each test ends. Don't use with CI!)
9797
--dashboard (Enable the SeleniumBase Dashboard. Saved at: dashboard.html)
9898
--dash-title=STRING (Set the title shown for the generated dashboard.)
99+
--enable-3d-apis (Enables WebGL and 3D APIs.)
99100
--swiftshader (Use Chrome's "--use-gl=swiftshader" feature.)
100101
--incognito (Enable Chrome's Incognito mode.)
101102
--guest (Enable Chrome's Guest mode.)
@@ -980,6 +981,14 @@ def pytest_addoption(parser):
980981
default=None,
981982
help="Set the title shown for the generated dashboard.",
982983
)
984+
parser.addoption(
985+
"--enable_3d_apis",
986+
"--enable-3d-apis",
987+
action="store_true",
988+
dest="enable_3d_apis",
989+
default=False,
990+
help="""Using this enables WebGL and 3D APIs.""",
991+
)
983992
parser.addoption(
984993
"--swiftshader",
985994
action="store_true",
@@ -1393,6 +1402,7 @@ def pytest_configure(config):
13931402
sb_config.final_debug = config.getoption("final_debug")
13941403
sb_config.dashboard = config.getoption("dashboard")
13951404
sb_config.dash_title = config.getoption("dash_title")
1405+
sb_config.enable_3d_apis = config.getoption("enable_3d_apis")
13961406
sb_config.swiftshader = config.getoption("swiftshader")
13971407
sb_config.incognito = config.getoption("incognito")
13981408
sb_config.guest_mode = config.getoption("guest_mode")

seleniumbase/plugins/sb_manager.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def SB(
5050
guest_mode=None, # Enable Chromium's Guest mode.
5151
devtools=None, # Open Chromium's DevTools when the browser opens.
5252
remote_debug=None, # Enable Chrome's Debugger on "http://localhost:9222".
53+
enable_3d_apis=None, # Enable WebGL and 3D APIs.
5354
swiftshader=None, # Use Chrome's "--use-gl=swiftshader" feature.
5455
ad_block_on=None, # Block some types of display ads from loading.
5556
block_images=None, # Block images from loading during tests.
@@ -470,32 +471,37 @@ def SB(
470471
elif "--demo" in sys_argv:
471472
demo_mode = True
472473
if block_images is None:
473-
if "--block-images" in sys_argv:
474+
if "--block-images" in sys_argv or "--block_images" in sys_argv:
474475
block_images = True
475476
else:
476477
block_images = False
477478
if do_not_track is None:
478-
if "--do-not-track" in sys_argv:
479+
if "--do-not-track" in sys_argv or "--do_not_track" in sys_argv:
479480
do_not_track = True
480481
else:
481482
do_not_track = False
482483
if external_pdf is None:
483-
if "--external-pdf" in sys_argv:
484+
if "--external-pdf" in sys_argv or "--external_pdf" in sys_argv:
484485
external_pdf = True
485486
else:
486487
external_pdf = False
487488
if remote_debug is None:
488-
if "--remote-debug" in sys_argv:
489+
if "--remote-debug" in sys_argv or "--remote_debug" in sys_argv:
489490
remote_debug = True
490491
else:
491492
remote_debug = False
493+
if enable_3d_apis is None:
494+
if "--enable-3d-apis" in sys_argv or "--enable_3d_apis" in sys_argv:
495+
enable_3d_apis = True
496+
else:
497+
enable_3d_apis = False
492498
if swiftshader is None:
493499
if "--swiftshader" in sys_argv:
494500
swiftshader = True
495501
else:
496502
swiftshader = False
497503
if ad_block_on is None:
498-
if "--ad-block" in sys_argv:
504+
if "--ad-block" in sys_argv or "--ad_block" in sys_argv:
499505
ad_block_on = True
500506
else:
501507
ad_block_on = False
@@ -602,6 +608,7 @@ def SB(
602608
sb_config.proxy_string = proxy_string
603609
sb_config.proxy_bypass_list = proxy_bypass_list
604610
sb_config.proxy_pac_url = proxy_pac_url
611+
sb_config.enable_3d_apis = enable_3d_apis
605612
sb_config.swiftshader = swiftshader
606613
sb_config.ad_block_on = ad_block_on
607614
sb_config.highlights = highlights
@@ -694,6 +701,7 @@ def SB(
694701
sb.proxy_string = sb_config.proxy_string
695702
sb.proxy_bypass_list = sb_config.proxy_bypass_list
696703
sb.proxy_pac_url = sb_config.proxy_pac_url
704+
sb.enable_3d_apis = sb_config.enable_3d_apis
697705
sb.swiftshader = sb_config.swiftshader
698706
sb.ad_block_on = sb_config.ad_block_on
699707
sb.highlights = sb_config.highlights

seleniumbase/plugins/selenium_plugin.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class SeleniumBrowser(Plugin):
7272
--uc-sub | --uc-subprocess (Use undetected-chromedriver as a subprocess.)
7373
--remote-debug (Enable Chrome's Remote Debugger on http://localhost:9222)
7474
--final-debug (Enter Debug Mode after each test ends. Don't use with CI!)
75+
--enable-3d-apis (Enables WebGL and 3D APIs.)
7576
--swiftshader (Use Chrome's "--use-gl=swiftshader" feature.)
7677
--incognito (Enable Chrome's Incognito mode.)
7778
--guest (Enable Chrome's Guest mode.)
@@ -685,6 +686,14 @@ def options(self, parser, env):
685686
If using both "--final-debug" and "--pdb" together,
686687
then Debug Mode will activate twice on failures.""",
687688
)
689+
parser.add_option(
690+
"--enable_3d_apis",
691+
"--enable-3d-apis",
692+
action="store_true",
693+
dest="enable_3d_apis",
694+
default=False,
695+
help="""Using this enables WebGL and 3D APIs.""",
696+
)
688697
parser.add_option(
689698
"--swiftshader",
690699
action="store_true",
@@ -923,6 +932,7 @@ def beforeTest(self, test):
923932
test.test.disable_gpu = self.options.disable_gpu
924933
test.test.remote_debug = self.options.remote_debug
925934
test.test._final_debug = self.options.final_debug
935+
test.test.enable_3d_apis = self.options.enable_3d_apis
926936
test.test.swiftshader = self.options.swiftshader
927937
test.test.incognito = self.options.incognito
928938
test.test.guest_mode = self.options.guest_mode

0 commit comments

Comments
 (0)