@nocobase/plugin-workflow-test 0.17.0-alpha.7 → 0.18.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,528 @@
1
+ import { Locator, Page } from '@nocobase/test/e2e';
2
+ export class CreateWorkFlow {
3
+ readonly page: Page;
4
+ name: Locator;
5
+ triggerType: Locator;
6
+ description: Locator;
7
+ autoDeleteHistory: Locator;
8
+ submitButton: Locator;
9
+ cancelButton: Locator;
10
+ constructor(page: Page) {
11
+ this.page = page;
12
+ this.name = page.getByLabel('block-item-CollectionField-workflows-Name').getByRole('textbox');
13
+ this.triggerType = page.getByTestId('select-single');
14
+ this.description = page.getByTestId('description-item').getByRole('textbox');
15
+ this.autoDeleteHistory = page.getByTestId('select-multiple');
16
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
17
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
18
+ }
19
+ }
20
+
21
+ export class EditWorkFlow {
22
+ readonly page: Page;
23
+ name: Locator;
24
+ statusIsOn: Locator;
25
+ statusIisOff: Locator;
26
+ description: Locator;
27
+ autoDeleteHistory: Locator;
28
+ submitButton: Locator;
29
+ cancelButton: Locator;
30
+ constructor(page: Page, workFlowName: string) {
31
+ this.page = page;
32
+ this.name = page.getByLabel('block-item-CollectionField-workflows-Name').getByRole('textbox');
33
+ this.statusIsOn = page.getByLabel('On', { exact: true });
34
+ this.statusIisOff = page.getByLabel('Off');
35
+ this.description = page.getByTestId('description-item').getByRole('textbox');
36
+ this.autoDeleteHistory = page
37
+ .getByTestId('deleteExecutionOnStatus-item')
38
+ .getByTestId('antd-select')
39
+ .locator('div')
40
+ .nth(1);
41
+ this.submitButton = page.getByLabel(`action-Action-Submit-workflows-${workFlowName}`);
42
+ this.cancelButton = page.getByLabel(`action-Action-Cancel-workflows-${workFlowName}`);
43
+ }
44
+ }
45
+
46
+ export class WorkflowManagement {
47
+ readonly page: Page;
48
+ addNewButton: Locator;
49
+ deleteButton: Locator;
50
+ filterButton: Locator;
51
+ constructor(page: Page) {
52
+ this.page = page;
53
+ this.addNewButton = page.getByLabel('action-Action-Add new-workflows');
54
+ this.deleteButton = page.getByLabel('action-Action-Delete-workflows');
55
+ this.filterButton = page.getByLabel('action-Filter.Action-Filter-filter-workflows');
56
+ }
57
+ }
58
+
59
+ export class WorkflowListRecords {
60
+ readonly page: Page;
61
+ executionCountPopup: Locator;
62
+ configureAction: Locator;
63
+ editAction: Locator;
64
+ duplicateAction: Locator;
65
+ deleteAction: Locator;
66
+ constructor(page: Page, workFlowName: string) {
67
+ this.page = page;
68
+ this.executionCountPopup = page.getByLabel(`executed-${workFlowName}`);
69
+ this.configureAction = page.getByLabel(`action-WorkflowLink-Configure-workflows-${workFlowName}`);
70
+ this.editAction = page.getByLabel(`action-Action.Link-Edit-workflows-${workFlowName}`);
71
+ this.duplicateAction = page.getByLabel(`action-Action.Link-Duplicate-workflows-${workFlowName}`);
72
+ this.deleteAction = page.getByLabel(`action-Action.Link-Delete-workflows-${workFlowName}`);
73
+ }
74
+ }
75
+
76
+ export class ApprovalTriggerNode {
77
+ readonly page: Page;
78
+ node: Locator;
79
+ nodeTitle: Locator;
80
+ nodeConfigure: Locator;
81
+ collectionDropDown: Locator;
82
+ checkWthdrawable: Locator;
83
+ configureUserInterfaceButton: Locator;
84
+ addBlockButton: Locator;
85
+ addApplyFormMenu: Locator;
86
+ configureFieldsButton: Locator;
87
+ configureActionsButton: Locator;
88
+ saveDraftSwitch: Locator;
89
+ addNodeButton: Locator;
90
+ constructor(page: Page, triggerName: string, collectionName: string) {
91
+ this.page = page;
92
+ this.node = page.getByText('TriggeraConfigure');
93
+ this.nodeTitle = page.locator('textarea').filter({ hasText: triggerName });
94
+ this.nodeConfigure = page.getByRole('button', { name: 'Configure' });
95
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
96
+ this.checkWthdrawable = page.getByLabel('Withdrawable');
97
+ this.configureUserInterfaceButton = page.getByRole('button', { name: 'Configure user interface' });
98
+ this.addBlockButton = page.getByRole('button', { name: 'Add block' });
99
+ this.addApplyFormMenu = page.getByRole('menuitem', { name: 'Apply form' });
100
+ this.configureFieldsButton = page.getByTestId('configure-fields-button-of-form-item-' + collectionName);
101
+ this.configureActionsButton = page.getByTestId(
102
+ 'approval-trigger-configure-form-actions-add-action-button-' + collectionName,
103
+ );
104
+ this.saveDraftSwitch = page.getByRole('menuitem', { name: 'Save draft' }).getByRole('switch');
105
+ this.addNodeButton = page.getByLabel('add-button', { exact: true });
106
+ }
107
+ }
108
+
109
+ export class ApprovalNode {
110
+ readonly page: Page;
111
+ node: Locator;
112
+ nodeTitle: Locator;
113
+ nodeConfigure: Locator;
114
+ assigneesDropDown: Locator;
115
+ checkReturnable: Locator;
116
+ configureUserInterfaceButton: Locator;
117
+ addBlockButton: Locator;
118
+ addApplyFormMenu: Locator;
119
+ configureFieldsButton: Locator;
120
+ configureActionsButton: Locator;
121
+ saveDraftSwitch: Locator;
122
+ addNodeButton: Locator;
123
+ constructor(page: Page, nodeName: string, collectionName: string) {
124
+ this.page = page;
125
+ this.node = page.getByText('TriggeraConfigure');
126
+ this.nodeTitle = page.locator('textarea').filter({ hasText: nodeName });
127
+ this.nodeConfigure = page.getByRole('button', { name: 'Configure' });
128
+ this.assigneesDropDown = page.getByLabel('Search');
129
+ this.checkReturnable = page.getByLabel('Returnable');
130
+ this.configureUserInterfaceButton = page.getByRole('button', { name: 'Configure user interface' });
131
+ this.addBlockButton = page.getByTestId('add-block-button-in-workflow-workflows');
132
+ this.addApplyFormMenu = page.getByRole('menuitem', { name: 'Apply form' });
133
+ this.configureFieldsButton = page.getByTestId('configure-fields-button-of-form-item-' + collectionName);
134
+ this.configureActionsButton = page.getByTestId(
135
+ 'approval-trigger-configure-form-actions-add-action-button-' + collectionName,
136
+ );
137
+ this.saveDraftSwitch = page.getByRole('menuitem', { name: 'Save draft' }).getByRole('switch');
138
+ this.addNodeButton = page.getByLabel(`add-button-calculation-${nodeName}`, { exact: true });
139
+ }
140
+ }
141
+
142
+ export class ScheduleTriggerNode {
143
+ readonly page: Page;
144
+ node: Locator;
145
+ nodeTitle: Locator;
146
+ nodeConfigure: Locator;
147
+ customTimeTriggerOptions: Locator;
148
+ startTimeEntryBox: Locator;
149
+ RrpeatModeDropdown: Locator;
150
+
151
+ dataTableTimeFieldOptions: Locator;
152
+ collectionDropDown: Locator;
153
+ startTimeDropdown: Locator;
154
+ submitButton: Locator;
155
+ cancelButton: Locator;
156
+ addNodeButton: Locator;
157
+ constructor(page: Page, triggerName: string, collectionName: string) {
158
+ this.page = page;
159
+ this.node = page.getByText('TriggeraConfigure');
160
+ this.nodeTitle = page.locator('textarea').filter({ hasText: triggerName });
161
+ this.nodeConfigure = page.getByRole('button', { name: 'Configure' });
162
+ this.customTimeTriggerOptions = page.getByLabel('Based on certain date');
163
+ this.startTimeEntryBox = page.getByPlaceholder('Select date');
164
+ this.RrpeatModeDropdown = page.getByLabel('block-item-RepeatField-workflows-Repeat mode');
165
+
166
+ this.dataTableTimeFieldOptions = page.getByLabel('Based on date field of collection');
167
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
168
+ this.startTimeDropdown = page.getByLabel('block-item-OnField-workflows-Starts on');
169
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
170
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
171
+ this.addNodeButton = page.getByLabel('add-button', { exact: true });
172
+ }
173
+ }
174
+
175
+ export class CollectionTriggerNode {
176
+ readonly page: Page;
177
+ node: Locator;
178
+ nodeTitle: Locator;
179
+ nodeConfigure: Locator;
180
+ collectionDropDown: Locator;
181
+ triggerOnDropdown: Locator;
182
+ submitButton: Locator;
183
+ cancelButton: Locator;
184
+ addNodeButton: Locator;
185
+ constructor(page: Page, triggerName: string, collectionName: string) {
186
+ this.page = page;
187
+ this.node = page.getByLabel(`Trigger-${triggerName}`);
188
+ this.nodeTitle = page.getByLabel(`Trigger-${triggerName}`).getByRole('textbox');
189
+ this.nodeConfigure = page.getByLabel(`Trigger-${triggerName}`).getByRole('button', { name: 'Configure' });
190
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
191
+ this.triggerOnDropdown = page
192
+ .getByLabel('block-item-Select-workflows-Trigger on')
193
+ .getByRole('button', { name: 'Trigger on' });
194
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
195
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
196
+ this.addNodeButton = page.getByLabel('add-button', { exact: true });
197
+ }
198
+ }
199
+
200
+ export class FormEventTriggerNode {
201
+ readonly page: Page;
202
+ node: Locator;
203
+ nodeTitle: Locator;
204
+ nodeConfigure: Locator;
205
+ collectionDropDown: Locator;
206
+ relationalDataDropdown: Locator;
207
+ submitButton: Locator;
208
+ cancelButton: Locator;
209
+ addNodeButton: Locator;
210
+ constructor(page: Page, triggerName: string, collectionName: string) {
211
+ this.page = page;
212
+ this.node = page.getByLabel(`Trigger-${triggerName}`);
213
+ this.nodeTitle = page.getByLabel(`Trigger-${triggerName}`).getByRole('textbox');
214
+ this.nodeConfigure = page.getByLabel(`Trigger-${triggerName}`).getByRole('button', { name: 'Configure' });
215
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
216
+ this.relationalDataDropdown = page.getByTestId('select-field-Preload associations');
217
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
218
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
219
+ this.addNodeButton = page.getByLabel('add-button', { exact: true });
220
+ }
221
+ }
222
+
223
+ export class ClculationNode {
224
+ readonly page: Page;
225
+ node: Locator;
226
+ nodeTitle: Locator;
227
+ nodeConfigure: Locator;
228
+ mathCalculationEngine: Locator;
229
+ formulaCalculationEngine: Locator;
230
+ calculationExpression: Locator;
231
+ submitButton: Locator;
232
+ cancelButton: Locator;
233
+ addNodeButton: Locator;
234
+ constructor(page: Page, nodeName: string) {
235
+ this.page = page;
236
+ this.node = page.getByLabel(`Calculation-${nodeName}`, { exact: true });
237
+ this.nodeTitle = page.getByLabel(`Calculation-${nodeName}`, { exact: true }).getByRole('textbox');
238
+ this.nodeConfigure = page
239
+ .getByLabel(`Calculation-${nodeName}`, { exact: true })
240
+ .getByRole('button', { name: 'Configure' });
241
+ this.mathCalculationEngine = page.getByLabel('Math.js');
242
+ this.formulaCalculationEngine = page.getByLabel('Formula.js');
243
+ this.calculationExpression = page.getByLabel('textbox');
244
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
245
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
246
+ this.addNodeButton = page.getByLabel(`add-button-calculation-${nodeName}`, { exact: true });
247
+ }
248
+ }
249
+
250
+ export class QueryRecordNode {
251
+ readonly page: Page;
252
+ node: Locator;
253
+ nodeTitle: Locator;
254
+ nodeConfigure: Locator;
255
+ collectionDropDown: Locator;
256
+ allowMultipleDataBoxesForResults: Locator;
257
+ addSortFieldsButton: Locator;
258
+ pageNumberEditBox: Locator;
259
+ pageNumberVariableButton: Locator;
260
+ pageSizeEditBox: Locator;
261
+ exitProcessOptionsBoxWithEmptyResult: Locator;
262
+ submitButton: Locator;
263
+ cancelButton: Locator;
264
+ addNodeButton: Locator;
265
+ constructor(page: Page, nodeName: string) {
266
+ this.page = page;
267
+ this.node = page.getByLabel(`Query record-${nodeName}`, { exact: true });
268
+ this.nodeTitle = page.getByLabel(`Query record-${nodeName}`, { exact: true }).getByRole('textbox');
269
+ this.nodeConfigure = page
270
+ .getByLabel(`Query record-${nodeName}`, { exact: true })
271
+ .getByRole('button', { name: 'Configure' });
272
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
273
+ this.allowMultipleDataBoxesForResults = page.getByLabel('Allow multiple records as');
274
+ this.addSortFieldsButton = page.getByRole('button', { name: 'plus Add sort field' });
275
+ this.pageNumberEditBox = page.getByLabel('variable-constant');
276
+ this.pageNumberVariableButton = page.getByLabel('variable-button');
277
+ this.pageSizeEditBox = page.getByLabel('block-item-InputNumber-workflows-Page size').getByRole('spinbutton');
278
+ this.exitProcessOptionsBoxWithEmptyResult = page.getByLabel('Exit when query result is null');
279
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
280
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
281
+ this.addNodeButton = page.getByLabel(`add-button-query-${nodeName}`, { exact: true });
282
+ }
283
+ }
284
+
285
+ export class CreateRecordNode {
286
+ readonly page: Page;
287
+ node: Locator;
288
+ nodeTitle: Locator;
289
+ nodeConfigure: Locator;
290
+ collectionDropDown: Locator;
291
+ addFieldsButton: Locator;
292
+ submitButton: Locator;
293
+ cancelButton: Locator;
294
+ addNodeButton: Locator;
295
+ constructor(page: Page, nodeName: string) {
296
+ this.page = page;
297
+ this.node = page.getByLabel(`Create record-${nodeName}`, { exact: true });
298
+ this.nodeTitle = page.getByLabel(`Create record-${nodeName}`, { exact: true }).getByRole('textbox');
299
+ this.nodeConfigure = page
300
+ .getByLabel(`Create record-${nodeName}`, { exact: true })
301
+ .getByRole('button', { name: 'Configure' });
302
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
303
+ this.addFieldsButton = page.getByRole('button', { name: 'plus Add field' });
304
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
305
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
306
+ this.addNodeButton = page.getByLabel(`add-button-create-${nodeName}`, { exact: true });
307
+ }
308
+ }
309
+
310
+ export class UpdateRecordNode {
311
+ readonly page: Page;
312
+ node: Locator;
313
+ nodeTitle: Locator;
314
+ nodeConfigure: Locator;
315
+ collectionDropDown: Locator;
316
+ batchUpdateModeRadio: Locator;
317
+ articleByArticleUpdateModeRadio: Locator;
318
+ addFieldsButton: Locator;
319
+ submitButton: Locator;
320
+ cancelButton: Locator;
321
+ addNodeButton: Locator;
322
+ constructor(page: Page, nodeName: string) {
323
+ this.page = page;
324
+ this.node = page.getByLabel(`Update record-${nodeName}`, { exact: true });
325
+ this.nodeTitle = page.getByLabel(`Update record-${nodeName}`, { exact: true }).getByRole('textbox');
326
+ this.nodeConfigure = page
327
+ .getByLabel(`Update record-${nodeName}`, { exact: true })
328
+ .getByRole('button', { name: 'Configure' });
329
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
330
+ this.batchUpdateModeRadio = page
331
+ .getByLabel('block-item-IndividualHooksRadioWithTooltip-workflows-Update mode')
332
+ .getByLabel('Update in a batch');
333
+ this.articleByArticleUpdateModeRadio = page
334
+ .getByLabel('block-item-IndividualHooksRadioWithTooltip-workflows-Update mode')
335
+ .getByLabel('Update one by one');
336
+ this.addFieldsButton = page.getByRole('button', { name: 'plus Add field' });
337
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
338
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
339
+ this.addNodeButton = page.getByLabel(`add-button-update-${nodeName}`, { exact: true });
340
+ }
341
+ }
342
+
343
+ export class DeleteRecordNode {
344
+ readonly page: Page;
345
+ node: Locator;
346
+ nodeTitle: Locator;
347
+ nodeConfigure: Locator;
348
+ collectionDropDown: Locator;
349
+ submitButton: Locator;
350
+ cancelButton: Locator;
351
+ addNodeButton: Locator;
352
+ constructor(page: Page, nodeName: string) {
353
+ this.page = page;
354
+ this.node = page.getByLabel(`Delete record-${nodeName}`, { exact: true });
355
+ this.nodeTitle = page.getByLabel(`Delete record-${nodeName}`, { exact: true }).getByRole('textbox');
356
+ this.nodeConfigure = page
357
+ .getByLabel(`Delete record-${nodeName}`, { exact: true })
358
+ .getByRole('button', { name: 'Configure' });
359
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
360
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
361
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
362
+ this.addNodeButton = page.getByLabel(`add-button-delete-${nodeName}`, { exact: true });
363
+ }
364
+ }
365
+
366
+ export class AggregateNode {
367
+ readonly page: Page;
368
+ node: Locator;
369
+ nodeTitle: Locator;
370
+ nodeConfigure: Locator;
371
+ countRadio: Locator;
372
+ sumRadio: Locator;
373
+ avgRadio: Locator;
374
+ maxRadio: Locator;
375
+ minRadio: Locator;
376
+ dataTableDataRadio: Locator;
377
+ linkedDataTableDataRadio: Locator;
378
+ collectionDropDown: Locator;
379
+ aggregatedFieldDropDown: Locator;
380
+ submitButton: Locator;
381
+ cancelButton: Locator;
382
+ addNodeButton: Locator;
383
+ constructor(page: Page, nodeName: string) {
384
+ this.page = page;
385
+ this.node = page.getByLabel(`Aggregate-${nodeName}`, { exact: true });
386
+ this.nodeTitle = page.getByLabel(`Aggregate-${nodeName}`, { exact: true }).getByRole('textbox');
387
+ this.nodeConfigure = page
388
+ .getByLabel(`Aggregate-${nodeName}`, { exact: true })
389
+ .getByRole('button', { name: 'Configure' });
390
+ this.countRadio = page.getByLabel('COUNT');
391
+ this.sumRadio = page.getByLabel('SUM', { exact: true });
392
+ this.avgRadio = page.getByLabel('AVG', { exact: true });
393
+ this.maxRadio = page.getByLabel('MAX', { exact: true });
394
+ this.minRadio = page.getByLabel('MIN', { exact: true });
395
+ this.dataTableDataRadio = page.getByLabel('Data of collection');
396
+ this.linkedDataTableDataRadio = page.getByLabel('Data of associated collection');
397
+ this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
398
+ // this.aggregatedFieldDropDown = page.getByLabel('block-item-FieldsSelect-workflows-Field to aggregate').getByRole('textbox').getByRole('combobox');
399
+ this.aggregatedFieldDropDown = page.locator(
400
+ 'input.ant-select-selection-search-input[role="combobox"][aria-haspopup="listbox"]',
401
+ );
402
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
403
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
404
+ this.addNodeButton = page.getByLabel(`add-button-aggregate-${nodeName}`, { exact: true });
405
+ }
406
+ }
407
+
408
+ export class ManualNode {
409
+ readonly page: Page;
410
+ node: Locator;
411
+ nodeTitle: Locator;
412
+ nodeConfigure: Locator;
413
+ assigneesDropDown: Locator;
414
+ configureUserInterfaceButton: Locator;
415
+ addBlockButton: Locator;
416
+ triggerDataMenu: Locator;
417
+ nodeDataMenu: Locator;
418
+ customFormMenu: Locator;
419
+ createRecordFormMenu: Locator;
420
+ updateRecordFormMenu: Locator;
421
+ submitButton: Locator;
422
+ cancelButton: Locator;
423
+ addNodeButton: Locator;
424
+ constructor(page: Page, nodeName: string) {
425
+ this.page = page;
426
+ this.node = page.getByLabel(`Manual-${nodeName}`, { exact: true });
427
+ this.nodeTitle = page.getByLabel(`Manual-${nodeName}`, { exact: true }).getByRole('textbox');
428
+ this.nodeConfigure = page
429
+ .getByLabel(`Manual-${nodeName}`, { exact: true })
430
+ .getByRole('button', { name: 'Configure' });
431
+ this.assigneesDropDown = page.getByTestId('select-single');
432
+ this.configureUserInterfaceButton = page.getByRole('button', { name: 'Configure user interface' });
433
+ this.addBlockButton = page.getByLabel('schema-initializer-Grid-AddBlockButton-workflows');
434
+ this.triggerDataMenu = page.getByLabel('Data blocks-triggerData');
435
+ this.nodeDataMenu = page.getByLabel('nodes', { exact: true });
436
+ this.customFormMenu = page.getByRole('menuitem', { name: 'Custom form' });
437
+ this.createRecordFormMenu = page.getByRole('menuitem', { name: 'Create record form' });
438
+ this.updateRecordFormMenu = page.getByRole('menuitem', { name: 'Update record form' });
439
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
440
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
441
+ this.addNodeButton = page.getByLabel(`add-button-manual-${nodeName}`, { exact: true });
442
+ }
443
+ }
444
+
445
+ export class ConditionYesNode {
446
+ readonly page: Page;
447
+ node: Locator;
448
+ nodeTitle: Locator;
449
+ nodeConfigure: Locator;
450
+ basicRadio: Locator;
451
+ mathRadio: Locator;
452
+ formulaRadio: Locator;
453
+ submitButton: Locator;
454
+ cancelButton: Locator;
455
+ addNodeButton: Locator;
456
+ constructor(page: Page, nodeName: string) {
457
+ this.page = page;
458
+ this.node = page.getByLabel(`Condition-${nodeName}`, { exact: true });
459
+ this.nodeTitle = page.getByLabel(`Condition-${nodeName}`, { exact: true }).getByRole('textbox');
460
+ this.nodeConfigure = page
461
+ .getByLabel(`Condition-${nodeName}`, { exact: true })
462
+ .getByRole('button', { name: 'Configure' });
463
+ // await page.getByLabel('variable-constant').first().click();
464
+ // await page.getByLabel('variable-button').first().click();
465
+ // await page.getByLabel('select-operator-calc').first().click();
466
+ // await page.getByRole('option', { name: '=' }).click();
467
+ // await page.getByLabel('variable-constant').nth(1).click();
468
+ // await page.getByLabel('variable-button').nth(1).click();
469
+ this.basicRadio = page.getByLabel('Basic');
470
+ this.mathRadio = page.getByLabel('Math.js');
471
+ this.formulaRadio = page.getByLabel('Formula.js');
472
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
473
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
474
+ this.addNodeButton = page.getByLabel(`add-button-condition-${nodeName}`, { exact: true });
475
+ }
476
+ }
477
+
478
+ export class ConditionBranchNode {
479
+ readonly page: Page;
480
+ node: Locator;
481
+ nodeTitle: Locator;
482
+ nodeConfigure: Locator;
483
+ basicRadio: Locator;
484
+ mathRadio: Locator;
485
+ formulaRadio: Locator;
486
+ submitButton: Locator;
487
+ cancelButton: Locator;
488
+ addNoBranchNode: Locator;
489
+ addYesBranchNode: Locator;
490
+ addNodeButton: Locator;
491
+ constructor(page: Page, nodeName: string) {
492
+ this.page = page;
493
+ this.node = page.getByLabel(`Condition-${nodeName}`, { exact: true });
494
+ this.nodeTitle = page.getByLabel(`Condition-${nodeName}`, { exact: true }).getByRole('textbox');
495
+ this.nodeConfigure = page
496
+ .getByLabel(`Condition-${nodeName}`, { exact: true })
497
+ .getByRole('button', { name: 'Configure' });
498
+ this.submitButton = page.getByLabel('action-Action-Submit-workflows');
499
+ this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
500
+ this.addNodeButton = page.getByLabel(`add-button-condition-${nodeName}`, { exact: true });
501
+ this.basicRadio = page.getByLabel('Basic');
502
+ this.mathRadio = page.getByLabel('Math.js');
503
+ this.formulaRadio = page.getByLabel('Formula.js');
504
+ this.addNoBranchNode = page.getByLabel(`add-button-condition-${nodeName}-0`);
505
+ this.addYesBranchNode = page.getByLabel(`add-button-condition-${nodeName}-1`);
506
+ }
507
+ }
508
+
509
+ export default module.exports = {
510
+ CreateWorkFlow,
511
+ EditWorkFlow,
512
+ WorkflowManagement,
513
+ WorkflowListRecords,
514
+ ApprovalTriggerNode,
515
+ ApprovalNode,
516
+ ScheduleTriggerNode,
517
+ CollectionTriggerNode,
518
+ FormEventTriggerNode,
519
+ ClculationNode,
520
+ QueryRecordNode,
521
+ CreateRecordNode,
522
+ UpdateRecordNode,
523
+ DeleteRecordNode,
524
+ AggregateNode,
525
+ ManualNode,
526
+ ConditionYesNode,
527
+ ConditionBranchNode,
528
+ };