@nocobase/plugin-workflow-test 1.0.0-alpha.1 → 1.0.0-alpha.3

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.
Files changed (47) hide show
  1. package/dist/client/index.d.ts +8 -0
  2. package/dist/client/index.js +9 -0
  3. package/dist/e2e/e2eCollectionModel.d.ts +8 -0
  4. package/dist/e2e/e2eCollectionModel.js +9 -0
  5. package/dist/e2e/e2ePageObjectModel.d.ts +8 -0
  6. package/dist/e2e/e2ePageObjectModel.js +9 -0
  7. package/dist/e2e/e2eUtils.d.ts +8 -0
  8. package/dist/e2e/e2eUtils.js +9 -0
  9. package/dist/e2e/index.d.ts +8 -0
  10. package/dist/e2e/index.js +9 -0
  11. package/dist/externalVersion.js +16 -7
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.js +9 -0
  14. package/dist/server/collections/categories.d.ts +8 -0
  15. package/dist/server/collections/categories.js +9 -0
  16. package/dist/server/collections/comments.d.ts +8 -0
  17. package/dist/server/collections/comments.js +9 -0
  18. package/dist/server/collections/posts.d.ts +8 -0
  19. package/dist/server/collections/posts.js +9 -0
  20. package/dist/server/collections/replies.d.ts +8 -0
  21. package/dist/server/collections/replies.js +9 -0
  22. package/dist/server/collections/tags.d.ts +8 -0
  23. package/dist/server/collections/tags.js +9 -0
  24. package/dist/server/functions.d.ts +8 -0
  25. package/dist/server/functions.js +9 -0
  26. package/dist/server/index.d.ts +8 -0
  27. package/dist/server/index.js +9 -0
  28. package/dist/server/instructions.d.ts +8 -0
  29. package/dist/server/instructions.js +9 -0
  30. package/dist/server/triggers.d.ts +8 -0
  31. package/dist/server/triggers.js +9 -0
  32. package/package.json +2 -2
  33. package/src/client/index.ts +0 -3
  34. package/src/e2e/e2eCollectionModel.ts +0 -4250
  35. package/src/e2e/e2ePageObjectModel.ts +0 -646
  36. package/src/e2e/e2eUtils.ts +0 -950
  37. package/src/e2e/index.ts +0 -4
  38. package/src/index.ts +0 -2
  39. package/src/server/collections/categories.ts +0 -15
  40. package/src/server/collections/comments.ts +0 -24
  41. package/src/server/collections/posts.ts +0 -40
  42. package/src/server/collections/replies.ts +0 -9
  43. package/src/server/collections/tags.ts +0 -15
  44. package/src/server/functions.ts +0 -3
  45. package/src/server/index.ts +0 -85
  46. package/src/server/instructions.ts +0 -67
  47. package/src/server/triggers.ts +0 -19
@@ -1,646 +0,0 @@
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
- dataBlocksInitiationRadio: Locator;
83
- dataBlocksAndGlobalApprovalBlocksInitiationRadio: Locator;
84
- allowedToBeWithdrawnCheckbox: Locator;
85
- goToconfigureButton: Locator;
86
- addBlockButton: Locator;
87
- addApplyFormMenu: Locator;
88
- configureFieldsButton: Locator;
89
- configureActionsButton: Locator;
90
- saveDraftSwitch: Locator;
91
- submitButton: Locator;
92
- cancelButton: Locator;
93
- addNodeButton: Locator;
94
- constructor(page: Page, triggerName: string, collectionName: string) {
95
- this.page = page;
96
- this.node = page.getByText('TriggeraConfigure');
97
- this.nodeTitle = page.locator('textarea').filter({ hasText: triggerName });
98
- this.nodeConfigure = page.getByRole('button', { name: 'Configure' });
99
- this.collectionDropDown = page
100
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
101
- .locator('.ant-select-selection-search-input');
102
- this.dataBlocksInitiationRadio = page.getByLabel('Initiate and approve in data blocks only');
103
- this.dataBlocksAndGlobalApprovalBlocksInitiationRadio = page.getByLabel(
104
- 'Initiate and approve in both data blocks and global approval blocks',
105
- );
106
- this.allowedToBeWithdrawnCheckbox = page.getByLabel('Allowed to be withdrawn');
107
- this.goToconfigureButton = page.getByRole('button', { name: 'Go to configure' });
108
- this.addBlockButton = page.getByLabel(`schema-initializer-Grid-ApprovalApplyAddBlockButton-${collectionName}`);
109
- this.addApplyFormMenu = page.getByRole('menuitem', { name: 'Apply form' });
110
- this.configureFieldsButton = page.getByLabel(`schema-initializer-Grid-form:configureFields-${collectionName}`);
111
- this.configureActionsButton = page.getByLabel(
112
- `schema-initializer-ActionBar-ApprovalApplyAddActionButton-${collectionName}`,
113
- );
114
- this.saveDraftSwitch = page.getByRole('menuitem', { name: 'Save draft' }).getByRole('switch');
115
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
116
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
117
- this.addNodeButton = this.addNodeButton = page.getByLabel('add-button', { exact: true });
118
- }
119
- }
120
-
121
- export class ApprovalPassthroughModeNode {
122
- readonly page: Page;
123
- node: Locator;
124
- nodeTitle: Locator;
125
- nodeConfigure: Locator;
126
- addAssigneesButton: Locator;
127
- assigneesDropDown: Locator;
128
- OrRadio: Locator;
129
- AndRadio: Locator;
130
- votingRadio: Locator;
131
- parallellyRadio: Locator;
132
- sequentiallyRadio: Locator;
133
- goToconfigureButton: Locator;
134
- addBlockButton: Locator;
135
- addDetailsMenu: Locator;
136
- detailsConfigureFieldsButton: Locator;
137
- addActionsMenu: Locator;
138
- actionsConfigureFieldsButton: Locator;
139
- actionsConfigureActionsButton: Locator;
140
- addApproveButton: Locator;
141
- addRejectButton: Locator;
142
- addReturnButton: Locator;
143
- addNodeResult: Locator;
144
- submitButton: Locator;
145
- cancelButton: Locator;
146
- addNodeButton: Locator;
147
- constructor(page: Page, nodeName: string, collectionName: string) {
148
- this.page = page;
149
- this.node = page.getByLabel(`Approval-${nodeName}`, { exact: true });
150
- this.nodeTitle = page.getByLabel(`Approval-${nodeName}`, { exact: true }).getByRole('textbox');
151
- this.nodeConfigure = page
152
- .getByLabel(`Approval-${nodeName}`, { exact: true })
153
- .getByRole('button', { name: 'Configure' });
154
- this.addAssigneesButton = page.getByRole('button', { name: 'plus Add assignee' });
155
- this.assigneesDropDown = page.getByTestId('select-single');
156
- this.OrRadio = page.getByLabel('Or', { exact: true });
157
- this.AndRadio = page.getByLabel('And', { exact: true });
158
- this.votingRadio = page.getByLabel('Voting', { exact: true });
159
- this.parallellyRadio = page.getByLabel('Parallelly', { exact: true });
160
- this.sequentiallyRadio = page.getByLabel('Sequentially', { exact: true });
161
- this.goToconfigureButton = page.getByRole('button', { name: 'Go to configure' });
162
- this.addBlockButton = page.getByLabel('schema-initializer-Grid-ApprovalProcessAddBlockButton-workflows');
163
- this.addDetailsMenu = page.getByRole('menuitem', { name: 'Details' });
164
- this.detailsConfigureFieldsButton = page.getByLabel(
165
- `schema-initializer-Grid-ReadPrettyFormItemInitializers-${collectionName}`,
166
- );
167
- this.addActionsMenu = page.getByRole('menuitem', { name: 'Actions' }).getByRole('switch');
168
- this.actionsConfigureFieldsButton = page.getByLabel('schema-initializer-Grid-FormItemInitializers-approvalRecords');
169
- this.actionsConfigureActionsButton = page.getByLabel(
170
- 'schema-initializer-ActionBar-ApprovalProcessAddActionButton-approvalRecords',
171
- );
172
- this.addApproveButton = page.getByRole('menuitem', { name: 'Approve' }).getByRole('switch');
173
- this.addRejectButton = page.getByRole('menuitem', { name: 'Reject' }).getByRole('switch');
174
- this.addReturnButton = page.getByRole('menuitem', { name: 'Return' }).getByRole('switch');
175
- this.addNodeResult = page.getByRole('menuitem', { name: 'Node result right' });
176
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
177
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
178
- this.addNodeButton = page.getByLabel(`add-button-calculation-${nodeName}`, { exact: true });
179
- }
180
- }
181
-
182
- export class ScheduleTriggerNode {
183
- readonly page: Page;
184
- node: Locator;
185
- nodeTitle: Locator;
186
- nodeConfigure: Locator;
187
- customTimeTriggerOptions: Locator;
188
- startTimeEntryBox: Locator;
189
- RrpeatModeDropdown: Locator;
190
-
191
- dataTableTimeFieldOptions: Locator;
192
- collectionDropDown: Locator;
193
- startTimeDropdown: Locator;
194
- submitButton: Locator;
195
- cancelButton: Locator;
196
- addNodeButton: Locator;
197
- constructor(page: Page, triggerName: string, collectionName: string) {
198
- this.page = page;
199
- this.node = page.getByText('TriggeraConfigure');
200
- this.nodeTitle = page.locator('textarea').filter({ hasText: triggerName });
201
- this.nodeConfigure = page.getByRole('button', { name: 'Configure' });
202
- this.customTimeTriggerOptions = page.getByLabel('Based on certain date');
203
- this.startTimeEntryBox = page.getByPlaceholder('Select date');
204
- this.RrpeatModeDropdown = page.getByLabel('block-item-RepeatField-workflows-Repeat mode');
205
-
206
- this.dataTableTimeFieldOptions = page.getByLabel('Based on date field of collection');
207
- this.collectionDropDown = page
208
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
209
- .locator('.ant-select-selection-search-input');
210
- this.startTimeDropdown = page.getByLabel('block-item-OnField-workflows-Starts on');
211
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
212
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
213
- this.addNodeButton = page.getByLabel('add-button', { exact: true });
214
- }
215
- }
216
-
217
- export class CollectionTriggerNode {
218
- readonly page: Page;
219
- node: Locator;
220
- nodeTitle: Locator;
221
- nodeConfigure: Locator;
222
- collectionDropDown: Locator;
223
- triggerOnDropdown: Locator;
224
- submitButton: Locator;
225
- cancelButton: Locator;
226
- addNodeButton: Locator;
227
- constructor(page: Page, triggerName: string, collectionName: string) {
228
- this.page = page;
229
- this.node = page.getByLabel(`Trigger-${triggerName}`);
230
- this.nodeTitle = page.getByLabel(`Trigger-${triggerName}`).getByRole('textbox');
231
- this.nodeConfigure = page.getByLabel(`Trigger-${triggerName}`).getByRole('button', { name: 'Configure' });
232
- // this.collectionDropDown = page.getByRole('button', { name: 'Select collection' });
233
- this.collectionDropDown = page
234
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
235
- .locator('.ant-select-selection-search-input');
236
- this.triggerOnDropdown = page
237
- .getByLabel('block-item-Select-workflows-Trigger on')
238
- .getByRole('button', { name: 'Trigger on' });
239
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
240
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
241
- this.addNodeButton = page.getByLabel('add-button', { exact: true });
242
- }
243
- }
244
-
245
- export class FormEventTriggerNode {
246
- readonly page: Page;
247
- node: Locator;
248
- nodeTitle: Locator;
249
- nodeConfigure: Locator;
250
- collectionDropDown: Locator;
251
- relationalDataDropdown: Locator;
252
- submitButton: Locator;
253
- cancelButton: Locator;
254
- addNodeButton: Locator;
255
- constructor(page: Page, triggerName: string, collectionName: string) {
256
- this.page = page;
257
- this.node = page.getByLabel(`Trigger-${triggerName}`);
258
- this.nodeTitle = page.getByLabel(`Trigger-${triggerName}`).getByRole('textbox');
259
- this.nodeConfigure = page.getByLabel(`Trigger-${triggerName}`).getByRole('button', { name: 'Configure' });
260
- this.collectionDropDown = page
261
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
262
- .locator('.ant-select-selection-search-input');
263
- this.relationalDataDropdown = page.getByTestId('select-field-Preload associations');
264
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
265
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
266
- this.addNodeButton = page.getByLabel('add-button', { exact: true });
267
- }
268
- }
269
-
270
- export class ClculationNode {
271
- readonly page: Page;
272
- node: Locator;
273
- nodeTitle: Locator;
274
- nodeConfigure: Locator;
275
- mathCalculationEngine: Locator;
276
- formulaCalculationEngine: Locator;
277
- calculationExpression: Locator;
278
- submitButton: Locator;
279
- cancelButton: Locator;
280
- addNodeButton: Locator;
281
- constructor(page: Page, nodeName: string) {
282
- this.page = page;
283
- this.node = page.getByLabel(`Calculation-${nodeName}`, { exact: true });
284
- this.nodeTitle = page.getByLabel(`Calculation-${nodeName}`, { exact: true }).getByRole('textbox');
285
- this.nodeConfigure = page
286
- .getByLabel(`Calculation-${nodeName}`, { exact: true })
287
- .getByRole('button', { name: 'Configure' });
288
- this.mathCalculationEngine = page.getByLabel('Math.js');
289
- this.formulaCalculationEngine = page.getByLabel('Formula.js');
290
- this.calculationExpression = page.getByLabel('textbox');
291
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
292
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
293
- this.addNodeButton = page.getByLabel(`add-button-calculation-${nodeName}`, { exact: true });
294
- }
295
- }
296
-
297
- export class QueryRecordNode {
298
- readonly page: Page;
299
- node: Locator;
300
- nodeTitle: Locator;
301
- nodeConfigure: Locator;
302
- collectionDropDown: Locator;
303
- allowMultipleDataBoxesForResults: Locator;
304
- addSortFieldsButton: Locator;
305
- pageNumberEditBox: Locator;
306
- pageNumberVariableButton: Locator;
307
- pageSizeEditBox: Locator;
308
- exitProcessOptionsBoxWithEmptyResult: Locator;
309
- submitButton: Locator;
310
- cancelButton: Locator;
311
- addNodeButton: Locator;
312
- constructor(page: Page, nodeName: string) {
313
- this.page = page;
314
- this.node = page.getByLabel(`Query record-${nodeName}`, { exact: true });
315
- this.nodeTitle = page.getByLabel(`Query record-${nodeName}`, { exact: true }).getByRole('textbox');
316
- this.nodeConfigure = page
317
- .getByLabel(`Query record-${nodeName}`, { exact: true })
318
- .getByRole('button', { name: 'Configure' });
319
- this.collectionDropDown = page
320
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
321
- .locator('.ant-select-selection-search-input');
322
- this.allowMultipleDataBoxesForResults = page.getByLabel('Allow multiple records as');
323
- this.addSortFieldsButton = page.getByRole('button', { name: 'plus Add sort field' });
324
- this.pageNumberEditBox = page.getByLabel('variable-constant');
325
- this.pageNumberVariableButton = page.getByLabel('variable-button');
326
- this.pageSizeEditBox = page.getByLabel('block-item-InputNumber-workflows-Page size').getByRole('spinbutton');
327
- this.exitProcessOptionsBoxWithEmptyResult = page.getByLabel('Exit when query result is null');
328
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
329
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
330
- this.addNodeButton = page.getByLabel(`add-button-query-${nodeName}`, { exact: true });
331
- }
332
- }
333
-
334
- export class CreateRecordNode {
335
- readonly page: Page;
336
- node: Locator;
337
- nodeTitle: Locator;
338
- nodeConfigure: Locator;
339
- collectionDropDown: Locator;
340
- addFieldsButton: Locator;
341
- submitButton: Locator;
342
- cancelButton: Locator;
343
- addNodeButton: Locator;
344
- constructor(page: Page, nodeName: string) {
345
- this.page = page;
346
- this.node = page.getByLabel(`Create record-${nodeName}`, { exact: true });
347
- this.nodeTitle = page.getByLabel(`Create record-${nodeName}`, { exact: true }).getByRole('textbox');
348
- this.nodeConfigure = page
349
- .getByLabel(`Create record-${nodeName}`, { exact: true })
350
- .getByRole('button', { name: 'Configure' });
351
- this.collectionDropDown = page
352
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
353
- .locator('.ant-select-selection-search-input');
354
- this.addFieldsButton = page.getByRole('button', { name: 'plus Add field' });
355
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
356
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
357
- this.addNodeButton = page.getByLabel(`add-button-create-${nodeName}`, { exact: true });
358
- }
359
- }
360
-
361
- export class UpdateRecordNode {
362
- readonly page: Page;
363
- node: Locator;
364
- nodeTitle: Locator;
365
- nodeConfigure: Locator;
366
- collectionDropDown: Locator;
367
- batchUpdateModeRadio: Locator;
368
- articleByArticleUpdateModeRadio: Locator;
369
- addFieldsButton: Locator;
370
- submitButton: Locator;
371
- cancelButton: Locator;
372
- addNodeButton: Locator;
373
- constructor(page: Page, nodeName: string) {
374
- this.page = page;
375
- this.node = page.getByLabel(`Update record-${nodeName}`, { exact: true });
376
- this.nodeTitle = page.getByLabel(`Update record-${nodeName}`, { exact: true }).getByRole('textbox');
377
- this.nodeConfigure = page
378
- .getByLabel(`Update record-${nodeName}`, { exact: true })
379
- .getByRole('button', { name: 'Configure' });
380
- this.collectionDropDown = page
381
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
382
- .locator('.ant-select-selection-search-input');
383
- this.batchUpdateModeRadio = page
384
- .getByLabel('block-item-IndividualHooksRadioWithTooltip-workflows-Update mode')
385
- .getByLabel('Update in a batch');
386
- this.articleByArticleUpdateModeRadio = page
387
- .getByLabel('block-item-IndividualHooksRadioWithTooltip-workflows-Update mode')
388
- .getByLabel('Update one by one');
389
- this.addFieldsButton = page.getByRole('button', { name: 'plus Add field' });
390
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
391
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
392
- this.addNodeButton = page.getByLabel(`add-button-update-${nodeName}`, { exact: true });
393
- }
394
- }
395
-
396
- export class DeleteRecordNode {
397
- readonly page: Page;
398
- node: Locator;
399
- nodeTitle: Locator;
400
- nodeConfigure: Locator;
401
- collectionDropDown: Locator;
402
- submitButton: Locator;
403
- cancelButton: Locator;
404
- addNodeButton: Locator;
405
- constructor(page: Page, nodeName: string) {
406
- this.page = page;
407
- this.node = page.getByLabel(`Delete record-${nodeName}`, { exact: true });
408
- this.nodeTitle = page.getByLabel(`Delete record-${nodeName}`, { exact: true }).getByRole('textbox');
409
- this.nodeConfigure = page
410
- .getByLabel(`Delete record-${nodeName}`, { exact: true })
411
- .getByRole('button', { name: 'Configure' });
412
- this.collectionDropDown = page
413
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Collection')
414
- .locator('.ant-select-selection-search-input');
415
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
416
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
417
- this.addNodeButton = page.getByLabel(`add-button-delete-${nodeName}`, { exact: true });
418
- }
419
- }
420
-
421
- export class AggregateNode {
422
- readonly page: Page;
423
- node: Locator;
424
- nodeTitle: Locator;
425
- nodeConfigure: Locator;
426
- countRadio: Locator;
427
- sumRadio: Locator;
428
- avgRadio: Locator;
429
- maxRadio: Locator;
430
- minRadio: Locator;
431
- dataTableDataRadio: Locator;
432
- linkedDataTableDataRadio: Locator;
433
- collectionDropDown: Locator;
434
- aggregatedFieldDropDown: Locator;
435
- distinctCheckBox: Locator;
436
- submitButton: Locator;
437
- cancelButton: Locator;
438
- addNodeButton: Locator;
439
- constructor(page: Page, nodeName: string) {
440
- this.page = page;
441
- this.node = page.getByLabel(`Aggregate-${nodeName}`, { exact: true });
442
- this.nodeTitle = page.getByLabel(`Aggregate-${nodeName}`, { exact: true }).getByRole('textbox');
443
- this.nodeConfigure = page
444
- .getByLabel(`Aggregate-${nodeName}`, { exact: true })
445
- .getByRole('button', { name: 'Configure' });
446
- this.countRadio = page.getByLabel('COUNT');
447
- this.sumRadio = page.getByLabel('SUM', { exact: true });
448
- this.avgRadio = page.getByLabel('AVG', { exact: true });
449
- this.maxRadio = page.getByLabel('MAX', { exact: true });
450
- this.minRadio = page.getByLabel('MIN', { exact: true });
451
- this.dataTableDataRadio = page.getByLabel('Data of collection');
452
- this.linkedDataTableDataRadio = page.getByLabel('Data of associated collection');
453
- this.collectionDropDown = page
454
- .getByLabel('block-item-DataSourceCollectionCascader-workflows-Data of collection')
455
- .locator('.ant-select-selection-search-input');
456
- this.aggregatedFieldDropDown = page
457
- .getByLabel('block-item-FieldsSelect-workflows-Field to aggregate')
458
- .locator('.ant-select-selection-search-input');
459
- this.distinctCheckBox = page
460
- .getByLabel('block-item-Checkbox-workflows-Distinct')
461
- .locator('input.ant-checkbox-input[type="checkbox"]');
462
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
463
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
464
- this.addNodeButton = page.getByLabel(`add-button-aggregate-${nodeName}`, { exact: true });
465
- }
466
- }
467
-
468
- export class ManualNode {
469
- readonly page: Page;
470
- node: Locator;
471
- nodeTitle: Locator;
472
- nodeConfigure: Locator;
473
- assigneesDropDown: Locator;
474
- configureUserInterfaceButton: Locator;
475
- addBlockButton: Locator;
476
- triggerDataMenu: Locator;
477
- nodeDataMenu: Locator;
478
- customFormMenu: Locator;
479
- createRecordFormMenu: Locator;
480
- updateRecordFormMenu: Locator;
481
- submitButton: Locator;
482
- cancelButton: Locator;
483
- addNodeButton: Locator;
484
- constructor(page: Page, nodeName: string) {
485
- this.page = page;
486
- this.node = page.getByLabel(`Manual-${nodeName}`, { exact: true });
487
- this.nodeTitle = page.getByLabel(`Manual-${nodeName}`, { exact: true }).getByRole('textbox');
488
- this.nodeConfigure = page
489
- .getByLabel(`Manual-${nodeName}`, { exact: true })
490
- .getByRole('button', { name: 'Configure' });
491
- this.assigneesDropDown = page.getByTestId('select-single');
492
- this.configureUserInterfaceButton = page.getByRole('button', { name: 'Configure user interface' });
493
- this.addBlockButton = page.getByLabel(
494
- 'schema-initializer-Grid-workflowManual:popup:configureUserInterface:addBlock-workflows',
495
- );
496
- this.triggerDataMenu = page.getByRole('menuitem', { name: 'Trigger data' });
497
- this.nodeDataMenu = page.getByRole('menuitem', { name: 'Node result right' });
498
- this.customFormMenu = page.getByRole('menuitem', { name: 'Custom form' });
499
- this.createRecordFormMenu = page.getByRole('menuitem', { name: 'Create record form right' });
500
- this.updateRecordFormMenu = page.getByRole('menuitem', { name: 'Update record form right' });
501
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
502
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
503
- this.addNodeButton = page.getByLabel(`add-button-manual-${nodeName}`, { exact: true });
504
- }
505
- }
506
-
507
- export class ConditionYesNode {
508
- readonly page: Page;
509
- node: Locator;
510
- nodeTitle: Locator;
511
- nodeConfigure: Locator;
512
- basicRadio: Locator;
513
- mathRadio: Locator;
514
- formulaRadio: Locator;
515
- conditionExpressionEditBox: Locator;
516
- submitButton: Locator;
517
- cancelButton: Locator;
518
- addNodeButton: Locator;
519
- constructor(page: Page, nodeName: string) {
520
- this.page = page;
521
- this.node = page.getByLabel(`Condition-${nodeName}`, { exact: true });
522
- this.nodeTitle = page.getByLabel(`Condition-${nodeName}`, { exact: true }).getByRole('textbox');
523
- this.nodeConfigure = page
524
- .getByLabel(`Condition-${nodeName}`, { exact: true })
525
- .getByRole('button', { name: 'Configure' });
526
- this.conditionExpressionEditBox = page.getByLabel('textbox');
527
- // await page.getByLabel('variable-constant').first().click();
528
- // await page.getByLabel('variable-button').first().click();
529
- // await page.getByLabel('select-operator-calc').first().click();
530
- // await page.getByRole('option', { name: '=' }).click();
531
- // await page.getByLabel('variable-constant').nth(1).click();
532
- // await page.getByLabel('variable-button').nth(1).click();
533
- this.basicRadio = page.getByLabel('Basic');
534
- this.mathRadio = page.getByLabel('Math.js');
535
- this.formulaRadio = page.getByLabel('Formula.js');
536
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
537
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
538
- this.addNodeButton = page.getByLabel(`add-button-condition-${nodeName}`, { exact: true });
539
- }
540
- }
541
-
542
- export class ConditionBranchNode {
543
- readonly page: Page;
544
- node: Locator;
545
- nodeTitle: Locator;
546
- nodeConfigure: Locator;
547
- basicRadio: Locator;
548
- mathRadio: Locator;
549
- formulaRadio: Locator;
550
- conditionExpressionEditBox: Locator;
551
- submitButton: Locator;
552
- cancelButton: Locator;
553
- addNoBranchNode: Locator;
554
- addYesBranchNode: Locator;
555
- addNodeButton: Locator;
556
- constructor(page: Page, nodeName: string) {
557
- this.page = page;
558
- this.node = page.getByLabel(`Condition-${nodeName}`, { exact: true });
559
- this.nodeTitle = page.getByLabel(`Condition-${nodeName}`, { exact: true }).getByRole('textbox');
560
- this.nodeConfigure = page
561
- .getByLabel(`Condition-${nodeName}`, { exact: true })
562
- .getByRole('button', { name: 'Configure' });
563
- this.conditionExpressionEditBox = page.getByLabel('textbox');
564
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
565
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
566
- this.addNodeButton = page.getByLabel(`add-button-condition-${nodeName}`, { exact: true });
567
- this.basicRadio = page.getByLabel('Basic');
568
- this.mathRadio = page.getByLabel('Math.js');
569
- this.formulaRadio = page.getByLabel('Formula.js');
570
- this.addNoBranchNode = page.getByLabel(`add-button-condition-${nodeName}-0`);
571
- this.addYesBranchNode = page.getByLabel(`add-button-condition-${nodeName}-1`);
572
- }
573
- }
574
-
575
- export class SQLNode {
576
- readonly page: Page;
577
- node: Locator;
578
- nodeTitle: Locator;
579
- nodeConfigure: Locator;
580
- sqlEditBox: Locator;
581
- submitButton: Locator;
582
- cancelButton: Locator;
583
- addNodeButton: Locator;
584
- constructor(page: Page, nodeName: string) {
585
- this.page = page;
586
- this.node = page.getByLabel(`SQL action-${nodeName}`, { exact: true });
587
- this.nodeTitle = page.getByLabel(`SQL action-${nodeName}`, { exact: true }).getByRole('textbox');
588
- this.nodeConfigure = page
589
- .getByLabel(`SQL action-${nodeName}`, { exact: true })
590
- .getByRole('button', { name: 'Configure' });
591
- this.sqlEditBox = page.getByLabel('block-item-WorkflowVariableRawTextArea-workflows-SQL').getByRole('textbox');
592
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
593
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
594
- this.addNodeButton = page.getByLabel(`add-button-sql-${nodeName}`, { exact: true });
595
- }
596
- }
597
-
598
- export class ParallelBranchNode {
599
- readonly page: Page;
600
- node: Locator;
601
- nodeTitle: Locator;
602
- nodeConfigure: Locator;
603
- addBranchButton: Locator;
604
- allSucceededRadio: Locator;
605
- anySucceededRadio: Locator;
606
- anySucceededOrFailedRadio: Locator;
607
- submitButton: Locator;
608
- cancelButton: Locator;
609
- addNodeButton: Locator;
610
- constructor(page: Page, nodeName: string) {
611
- this.page = page;
612
- this.node = page.getByLabel(`Parallel branch-${nodeName}`, { exact: true });
613
- this.nodeTitle = page.locator('textarea').filter({ hasText: nodeName });
614
- this.nodeConfigure = page.getByLabel(`Parallel branch-${nodeName}`).getByRole('button', { name: 'Configure' });
615
- this.addBranchButton = page.getByLabel(`add-button-parallel-${nodeName}-add-branch`, { exact: true });
616
- this.allSucceededRadio = page.getByLabel('All succeeded', { exact: true });
617
- this.anySucceededRadio = page.getByLabel('Any succeeded', { exact: true });
618
- this.anySucceededOrFailedRadio = page.getByLabel('Any succeeded or failed', { exact: true });
619
- this.submitButton = page.getByLabel('action-Action-Submit-workflows');
620
- this.cancelButton = page.getByLabel('action-Action-Cancel-workflows');
621
- this.addNodeButton = page.getByLabel(`add-button-parallel-${nodeName}`, { exact: true });
622
- }
623
- }
624
-
625
- export default module.exports = {
626
- CreateWorkFlow,
627
- EditWorkFlow,
628
- WorkflowManagement,
629
- WorkflowListRecords,
630
- ApprovalTriggerNode,
631
- ApprovalPassthroughModeNode,
632
- ScheduleTriggerNode,
633
- CollectionTriggerNode,
634
- FormEventTriggerNode,
635
- ClculationNode,
636
- QueryRecordNode,
637
- CreateRecordNode,
638
- UpdateRecordNode,
639
- DeleteRecordNode,
640
- AggregateNode,
641
- ManualNode,
642
- ConditionYesNode,
643
- ConditionBranchNode,
644
- SQLNode,
645
- ParallelBranchNode,
646
- };