@@ -106,6 +106,13 @@ def pytest_addoption(parser: pytest.Parser) -> None:
106
106
default = None ,
107
107
help = "Service Key" ,
108
108
)
109
+ group .addoption (
110
+ "--service-version" ,
111
+ action = "store" ,
112
+ type = str ,
113
+ default = None ,
114
+ help = "The service version option defines a service specific version" ,
115
+ )
109
116
group .addoption (
110
117
"--template-id" ,
111
118
action = "store" ,
@@ -260,6 +267,14 @@ def service_key(request: pytest.FixtureRequest) -> str:
260
267
return os .environ ["SERVICE_KEY" ]
261
268
262
269
270
+ @pytest .fixture (scope = "session" )
271
+ def service_version (request : pytest .FixtureRequest ) -> str | None :
272
+ if key := request .config .getoption ("--service-version" ):
273
+ assert isinstance (key , str )
274
+ return key
275
+ return None
276
+
277
+
263
278
@pytest .fixture (scope = "session" )
264
279
def template_id (request : pytest .FixtureRequest ) -> str | None :
265
280
if key := request .config .getoption ("--template-id" ):
@@ -426,13 +441,25 @@ def _open_with_resources(page: Page, *, click_it: bool):
426
441
return open_with_resources_button
427
442
428
443
444
+ def _select_service_version (page : Page , * , version : str ) -> None :
445
+ try :
446
+ # since https://github.com/ITISFoundation/osparc-simcore/pull/7060
447
+ page .get_by_test_id ("serviceSelectBox" , timeout = 5 * SECOND ).select_option (
448
+ version
449
+ )
450
+ except TimeoutError :
451
+ # we try the non robust way
452
+ page .get_by_label ("Version" ).select_option (version )
453
+
454
+
429
455
@pytest .fixture
430
456
def create_new_project_and_delete (
431
457
page : Page ,
432
458
log_in_and_out : RestartableWebSocket ,
433
459
is_product_billable : bool ,
434
460
api_request_context : APIRequestContext ,
435
461
product_url : AnyUrl ,
462
+ service_version : str | None ,
436
463
) -> Iterator [Callable [[tuple [RunningState ], bool ], dict [str , Any ]]]:
437
464
"""The first available service currently displayed in the dashboard will be opened
438
465
NOTE: cannot be used multiple times or going back to dashboard will fail!!
@@ -441,6 +468,7 @@ def create_new_project_and_delete(
441
468
442
469
def _ (
443
470
expected_states : tuple [RunningState ] = (RunningState .NOT_STARTED ,),
471
+ * ,
444
472
press_open : bool = True ,
445
473
template_id : str | None = None ,
446
474
) -> dict [str , Any ]:
@@ -467,6 +495,8 @@ def _(
467
495
):
468
496
open_with_resources_clicked = False
469
497
# Project detail view pop-ups shows
498
+ if service_version is not None :
499
+ _select_service_version (page , version = service_version )
470
500
if press_open :
471
501
open_button = page .get_by_test_id ("openResource" )
472
502
if template_id is not None :
@@ -632,7 +662,7 @@ def create_project_from_new_button(
632
662
def _ (plus_button_test_id : str ) -> dict [str , Any ]:
633
663
start_study_from_plus_button (plus_button_test_id )
634
664
expected_states = (RunningState .UNKNOWN ,)
635
- return create_new_project_and_delete (expected_states , False )
665
+ return create_new_project_and_delete (expected_states , press_open = False )
636
666
637
667
return _
638
668
@@ -645,7 +675,9 @@ def create_project_from_template_dashboard(
645
675
def _ (template_id : str ) -> dict [str , Any ]:
646
676
find_and_click_template_in_dashboard (template_id )
647
677
expected_states = (RunningState .UNKNOWN ,)
648
- return create_new_project_and_delete (expected_states , True , template_id )
678
+ return create_new_project_and_delete (
679
+ expected_states , press_open = True , template_id = template_id
680
+ )
649
681
650
682
return _
651
683
@@ -664,7 +696,7 @@ def _(
664
696
expected_states = (RunningState .UNKNOWN ,)
665
697
if service_type is ServiceType .COMPUTATIONAL :
666
698
expected_states = (RunningState .NOT_STARTED ,)
667
- return create_new_project_and_delete (expected_states , True )
699
+ return create_new_project_and_delete (expected_states , press_open = True )
668
700
669
701
return _
670
702
0 commit comments