@@ -34,46 +34,7 @@ export const createWorkspace = async (
34
34
const name = randomName ( )
35
35
await page . getByLabel ( "name" ) . fill ( name )
36
36
37
- for ( const buildParameter of buildParameters ) {
38
- const richParameter = richParameters . find (
39
- ( richParam ) => richParam . name === buildParameter . name ,
40
- )
41
- if ( ! richParameter ) {
42
- throw new Error (
43
- "build parameter is expected to be present in rich parameter schema" ,
44
- )
45
- }
46
-
47
- const parameterLabel = await page . waitForSelector (
48
- "[data-testid='parameter-field-" + richParameter . name + "']" ,
49
- { state : "visible" } ,
50
- )
51
-
52
- if ( richParameter . type === "bool" ) {
53
- const parameterField = await parameterLabel . waitForSelector (
54
- "[data-testid='parameter-field-bool'] .MuiRadio-root input[value='" +
55
- buildParameter . value +
56
- "']" ,
57
- )
58
- await parameterField . check ( )
59
- } else if ( richParameter . options . length > 0 ) {
60
- const parameterField = await parameterLabel . waitForSelector (
61
- "[data-testid='parameter-field-options'] .MuiRadio-root input[value='" +
62
- buildParameter . value +
63
- "']" ,
64
- )
65
- await parameterField . check ( )
66
- } else if ( richParameter . type === "list(string)" ) {
67
- throw new Error ( "not implemented yet" ) // FIXME
68
- } else {
69
- // text or number
70
- const parameterField = await parameterLabel . waitForSelector (
71
- "[data-testid='parameter-field-text'] input" ,
72
- )
73
- await parameterField . fill ( buildParameter . value )
74
- }
75
- }
76
-
37
+ await fillParameters ( page , richParameters , buildParameters )
77
38
await page . getByTestId ( "form-submit" ) . click ( )
78
39
79
40
await expect ( page ) . toHaveURL ( "/@admin/" + name )
@@ -216,10 +177,7 @@ export const sshIntoWorkspace = async (
216
177
} )
217
178
}
218
179
219
- export const stopWorkspace = async (
220
- page : Page ,
221
- workspaceName : string ,
222
- ) => {
180
+ export const stopWorkspace = async ( page : Page , workspaceName : string ) => {
223
181
await page . goto ( "/@admin/" + workspaceName , {
224
182
waitUntil : "domcontentloaded" ,
225
183
} )
@@ -249,48 +207,8 @@ export const buildWorkspaceWithParameters = async (
249
207
250
208
await page . getByTestId ( "build-parameters-button" ) . click ( )
251
209
252
- for ( const buildParameter of buildParameters ) {
253
- const richParameter = richParameters . find (
254
- ( richParam ) => richParam . name === buildParameter . name ,
255
- )
256
- if ( ! richParameter ) {
257
- throw new Error (
258
- "build parameter is expected to be present in rich parameter schema" ,
259
- )
260
- }
261
-
262
- const parameterLabel = await page . waitForSelector (
263
- "[data-testid='parameter-field-" + richParameter . name + "']" ,
264
- { state : "visible" } ,
265
- )
266
-
267
- if ( richParameter . type === "bool" ) {
268
- const parameterField = await parameterLabel . waitForSelector (
269
- "[data-testid='parameter-field-bool'] .MuiRadio-root input[value='" +
270
- buildParameter . value +
271
- "']" ,
272
- )
273
- await parameterField . check ( )
274
- } else if ( richParameter . options . length > 0 ) {
275
- const parameterField = await parameterLabel . waitForSelector (
276
- "[data-testid='parameter-field-options'] .MuiRadio-root input[value='" +
277
- buildParameter . value +
278
- "']" ,
279
- )
280
- await parameterField . check ( )
281
- } else if ( richParameter . type === "list(string)" ) {
282
- throw new Error ( "not implemented yet" ) // FIXME
283
- } else {
284
- // text or number
285
- const parameterField = await parameterLabel . waitForSelector (
286
- "[data-testid='parameter-field-text'] input" ,
287
- )
288
- await parameterField . fill ( buildParameter . value )
289
- }
290
- }
291
-
210
+ await fillParameters ( page , richParameters , buildParameters )
292
211
await page . getByTestId ( "build-parameters-submit" ) . click ( )
293
-
294
212
if ( confirm ) {
295
213
await page . getByTestId ( "confirm-button" ) . click ( )
296
214
}
@@ -651,3 +569,49 @@ export const echoResponsesWithParameters = (
651
569
] ,
652
570
}
653
571
}
572
+
573
+ export const fillParameters = async (
574
+ page : Page ,
575
+ richParameters : RichParameter [ ] = [ ] ,
576
+ buildParameters : WorkspaceBuildParameter [ ] = [ ] ,
577
+ ) => {
578
+ for ( const buildParameter of buildParameters ) {
579
+ const richParameter = richParameters . find (
580
+ ( richParam ) => richParam . name === buildParameter . name ,
581
+ )
582
+ if ( ! richParameter ) {
583
+ throw new Error (
584
+ "build parameter is expected to be present in rich parameter schema" ,
585
+ )
586
+ }
587
+
588
+ const parameterLabel = await page . waitForSelector (
589
+ "[data-testid='parameter-field-" + richParameter . name + "']" ,
590
+ { state : "visible" } ,
591
+ )
592
+
593
+ if ( richParameter . type === "bool" ) {
594
+ const parameterField = await parameterLabel . waitForSelector (
595
+ "[data-testid='parameter-field-bool'] .MuiRadio-root input[value='" +
596
+ buildParameter . value +
597
+ "']" ,
598
+ )
599
+ await parameterField . check ( )
600
+ } else if ( richParameter . options . length > 0 ) {
601
+ const parameterField = await parameterLabel . waitForSelector (
602
+ "[data-testid='parameter-field-options'] .MuiRadio-root input[value='" +
603
+ buildParameter . value +
604
+ "']" ,
605
+ )
606
+ await parameterField . check ( )
607
+ } else if ( richParameter . type === "list(string)" ) {
608
+ throw new Error ( "not implemented yet" ) // FIXME
609
+ } else {
610
+ // text or number
611
+ const parameterField = await parameterLabel . waitForSelector (
612
+ "[data-testid='parameter-field-text'] input" ,
613
+ )
614
+ await parameterField . fill ( buildParameter . value )
615
+ }
616
+ }
617
+ }
0 commit comments