Skip to content

Commit b5ae9b0

Browse files
committed
Add option to reuse the class session in behave-BDD tests
1 parent 2421d21 commit b5ae9b0

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

seleniumbase/behave/behave_sb.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,17 @@
7272
-D enable-ws (Enable Web Security on Chromium-based browsers.)
7373
-D enable-sync (Enable "Chrome Sync".)
7474
-D uc | -D undetected (Use undetected-chromedriver to evade bot-detection)
75-
-D uc-cdp-events (Capture CDP events when running in "--undetected" mode.)
75+
-D uc-cdp-events (Capture CDP events when running in "-D undetected" mode)
7676
-D remote-debug (Sync to Chrome Remote Debugger chrome://inspect/#devices)
7777
-D dashboard (Enable the SeleniumBase Dashboard. Saved at: dashboard.html)
7878
-D dash-title=STRING (Set the title shown for the generated dashboard.)
7979
-D enable-3d-apis (Enables WebGL and 3D APIs.)
80-
-D swiftshader (Use Chrome's "--use-gl=swiftshader" feature.)
80+
-D swiftshader (Use Chrome's SwiftShader Graphics Library.)
8181
-D incognito (Enable Chrome's Incognito mode.)
8282
-D guest (Enable Chrome's Guest mode.)
8383
-D devtools (Open Chrome's DevTools when the browser opens.)
84-
-D reuse-session | -D rs (Reuse browser session between tests.)
84+
-D reuse-session | -D rs (Reuse browser session for all tests.)
85+
-D reuse-class-session | -D rcs (Reuse session for tests in class/feature)
8586
-D crumbs (Delete all cookies between tests reusing a session.)
8687
-D disable-beforeunload (Disable the "beforeunload" event on Chrome.)
8788
-D window-size=WIDTH,HEIGHT (Set the browser's starting window size.)
@@ -103,6 +104,7 @@
103104
from seleniumbase.core import log_helper
104105
from seleniumbase.core import download_helper
105106
from seleniumbase.core import proxy_helper
107+
from seleniumbase.core import session_helper
106108
from seleniumbase.fixtures import constants
107109
from seleniumbase import config as sb_config
108110

@@ -179,6 +181,7 @@ def get_configured_sb(context):
179181
sb.disable_gpu = False
180182
sb._multithreaded = False
181183
sb._reuse_session = False
184+
sb._reuse_class_session = False
182185
sb._crumbs = False
183186
sb._disable_beforeunload = False
184187
sb.visual_baseline = False
@@ -234,6 +237,7 @@ def get_configured_sb(context):
234237
sb_config._has_logs = None
235238
sb_config._has_exception = None
236239
sb_config.save_screenshot = None
240+
sb_config.reuse_class_session = None
237241

238242
browsers = set() # To error if selecting more than one
239243
valid_browsers = constants.ValidBrowsers.valid_browsers
@@ -541,6 +545,13 @@ def get_configured_sb(context):
541545
if low_key in ["rs", "reuse-session", "reuse_session"]:
542546
sb._reuse_session = True
543547
continue
548+
# Handle: -D rcs / rfs / reuse-class-session / reuse-feature-session
549+
if low_key in [
550+
"rcs", "rfs", "reuse-class-session", "reuse-feature-session"
551+
]:
552+
sb._reuse_session = True
553+
sb._reuse_class_session = True
554+
continue
544555
# Handle: -D crumbs
545556
if low_key == "crumbs":
546557
sb._crumbs = True
@@ -870,6 +881,7 @@ def get_configured_sb(context):
870881
sb_config.window_size = sb.window_size
871882
sb_config.maximize_option = sb.maximize_option
872883
sb_config.xvfb = sb.xvfb
884+
sb_config.reuse_class_session = sb._reuse_class_session
873885
sb_config.save_screenshot = sb.save_screenshot_after_test
874886
sb_config.no_screenshot = sb.no_screenshot_after_test
875887
sb_config._has_logs = False
@@ -1256,6 +1268,7 @@ def before_all(context):
12561268

12571269
def before_feature(context, feature):
12581270
sb_config.behave_feature = feature
1271+
session_helper.end_reused_class_session_as_needed()
12591272

12601273

12611274
def before_scenario(context, scenario):
@@ -1290,6 +1303,7 @@ def after_scenario(context, scenario):
12901303

12911304
def after_feature(context, feature):
12921305
sb_config.feature = feature
1306+
session_helper.end_reused_class_session_as_needed()
12931307

12941308

12951309
def after_all(context):

0 commit comments

Comments
 (0)