@@ -127,6 +127,10 @@ export const createWorkspace = async (
127
127
const name = randomName ( ) ;
128
128
await page . getByLabel ( "name" ) . fill ( name ) ;
129
129
130
+ if ( buildParameters . length > 0 ) {
131
+ await page . waitForSelector ( "form" , { state : "visible" } ) ;
132
+ }
133
+
130
134
await fillParameters ( page , richParameters , buildParameters ) ;
131
135
132
136
if ( useExternalAuth ) {
@@ -898,28 +902,29 @@ const fillParameters = async (
898
902
) ;
899
903
}
900
904
901
- const parameterLabel = await page . waitForSelector (
902
- `[data-testid='parameter-field- ${ richParameter . name } ']` ,
903
- { state : "visible" } ,
905
+ // Use modern locator approach instead of waitForSelector
906
+ const parameterLabel = page . getByTestId (
907
+ `parameter-field- ${ richParameter . name } ` ,
904
908
) ;
909
+ await expect ( parameterLabel ) . toBeVisible ( ) ;
905
910
906
911
if ( richParameter . type === "bool" ) {
907
- const parameterField = await parameterLabel . waitForSelector (
908
- `[data-testid=' parameter-field-bool'] .MuiRadio-root input[value=' ${ buildParameter . value } ']` ,
909
- ) ;
912
+ const parameterField = parameterLabel
913
+ . getByTestId ( " parameter-field-bool" )
914
+ . locator ( `.MuiRadio-root input[value=' ${ buildParameter . value } ']` ) ;
910
915
await parameterField . click ( ) ;
911
916
} else if ( richParameter . options . length > 0 ) {
912
- const parameterField = await parameterLabel . waitForSelector (
913
- `[data-testid=' parameter-field-options'] .MuiRadio-root input[value=' ${ buildParameter . value } ']` ,
914
- ) ;
917
+ const parameterField = parameterLabel
918
+ . getByTestId ( " parameter-field-options" )
919
+ . locator ( `.MuiRadio-root input[value=' ${ buildParameter . value } ']` ) ;
915
920
await parameterField . click ( ) ;
916
921
} else if ( richParameter . type === "list(string)" ) {
917
922
throw new Error ( "not implemented yet" ) ; // FIXME
918
923
} else {
919
924
// text or number
920
- const parameterField = await parameterLabel . waitForSelector (
921
- "[data-testid=' parameter-field-text'] input" ,
922
- ) ;
925
+ const parameterField = parameterLabel
926
+ . getByTestId ( " parameter-field-text" )
927
+ . locator ( "input" ) ;
923
928
await parameterField . fill ( buildParameter . value ) ;
924
929
}
925
930
}
@@ -1217,22 +1222,34 @@ export const disableDynamicParameters = async (
1217
1222
waitUntil : "domcontentloaded" ,
1218
1223
} ) ;
1219
1224
1225
+ await page . waitForSelector ( "form" , { state : "visible" } ) ;
1226
+
1220
1227
// Find and uncheck the "Enable dynamic parameters" checkbox
1221
1228
const dynamicParamsCheckbox = page . getByRole ( "checkbox" , {
1222
1229
name : / E n a b l e d y n a m i c p a r a m e t e r s f o r w o r k s p a c e c r e a t i o n / ,
1223
1230
} ) ;
1224
1231
1232
+ await dynamicParamsCheckbox . waitFor ( { state : "visible" } ) ;
1233
+
1225
1234
// If the checkbox is checked, uncheck it
1226
1235
if ( await dynamicParamsCheckbox . isChecked ( ) ) {
1227
1236
await dynamicParamsCheckbox . click ( ) ;
1228
1237
}
1229
1238
1230
1239
// Save the changes
1231
- await page . getByRole ( "button" , { name : / s a v e / i } ) . click ( ) ;
1240
+ const saveButton = page . getByRole ( "button" , { name : / s a v e / i } ) ;
1241
+ await saveButton . waitFor ( { state : "visible" } ) ;
1242
+ await saveButton . click ( ) ;
1232
1243
1233
1244
// Wait for the success message or page to update
1234
- await page . waitForSelector ( "text=Template updated successfully" , {
1235
- state : "visible" ,
1236
- timeout : 10000 ,
1237
- } ) ;
1245
+ await page
1246
+ . locator ( "[role='alert']:has-text('Template updated successfully')" )
1247
+ . first ( )
1248
+ . waitFor ( {
1249
+ state : "visible" ,
1250
+ timeout : 15000 ,
1251
+ } ) ;
1252
+
1253
+ // Additional wait to ensure the changes are persisted
1254
+ await page . waitForTimeout ( 500 ) ;
1238
1255
} ;
0 commit comments