@nocobase/plugin-workflow-manual 0.20.0-alpha.9 → 0.21.0-alpha.2
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.
- package/dist/client/index.js +4 -4
- package/dist/client/instruction/SchemaConfig.d.ts +14 -3
- package/dist/client/instruction/createManualFormBlockUISchema.d.ts +57 -0
- package/dist/client/instruction/forms/custom.d.ts +7 -2
- package/dist/externalVersion.js +9 -9
- package/dist/locale/index.d.ts +2 -1
- package/dist/locale/index.js +3 -0
- package/dist/locale/zh-CN.json +2 -1
- package/dist/server/forms/create.d.ts +2 -1
- package/dist/server/forms/create.js +4 -4
- package/dist/server/forms/update.d.ts +2 -1
- package/dist/server/forms/update.js +4 -4
- package/dist/server/migrations/20240325213145-fix-schema.d.ts +4 -0
- package/dist/server/migrations/20240325213145-fix-schema.js +88 -0
- package/package.json +2 -2
- package/src/client/WorkflowTodo.tsx +4 -4
- package/src/client/__e2e__/createRecordForm.test.ts +123 -67
- package/src/client/__e2e__/customFormBlocks.test.ts +135 -70
- package/src/client/__e2e__/datablocks.test.ts +43 -30
- package/src/client/__e2e__/updateRecordForm.test.ts +241 -57
- package/src/client/__e2e__/workflowTodo.test.ts +16 -7
- package/src/client/index.ts +12 -4
- package/src/client/instruction/FormBlockInitializer.tsx +3 -3
- package/src/client/instruction/SchemaConfig.tsx +162 -40
- package/src/client/instruction/createManualFormBlockUISchema.ts +5 -0
- package/src/client/instruction/forms/create.tsx +1 -1
- package/src/client/instruction/forms/custom.tsx +52 -21
- package/src/client/instruction/forms/update.tsx +16 -8
- package/src/client/instruction/index.tsx +1 -1
- package/src/locale/index.ts +3 -1
- package/src/locale/zh-CN.json +2 -1
- package/src/server/__tests__/data-source.test.ts +223 -0
- package/src/server/__tests__/{instruction.test.ts → form.test.ts} +1 -510
- package/src/server/__tests__/mode.test.ts +561 -0
- package/src/server/forms/create.ts +10 -3
- package/src/server/forms/update.ts +10 -3
- package/src/server/migrations/20240325213145-fix-schema.ts +81 -0
- package/dist/client/instruction/DetailsBlockProvider.d.ts +0 -2
- package/src/client/instruction/DetailsBlockProvider.tsx +0 -87
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
import { faker } from '@faker-js/faker';
|
|
2
2
|
import {
|
|
3
3
|
CollectionTriggerNode,
|
|
4
|
-
|
|
5
|
-
EditWorkFlow,
|
|
6
|
-
WorkflowListRecords,
|
|
4
|
+
ManualNode,
|
|
7
5
|
apiCreateWorkflow,
|
|
8
6
|
apiDeleteWorkflow,
|
|
9
7
|
apiGetWorkflow,
|
|
10
|
-
apiUpdateRecord,
|
|
11
8
|
apiGetWorkflowNodeExecutions,
|
|
12
9
|
apiUpdateWorkflowTrigger,
|
|
13
10
|
appendJsonCollectionName,
|
|
14
11
|
generalWithNoRelationalFields,
|
|
15
|
-
QueryRecordNode,
|
|
16
|
-
ManualNode,
|
|
17
|
-
apiGetRecord,
|
|
18
|
-
apiCreateWorkflowNode,
|
|
19
|
-
apiGetWorkflowNode,
|
|
20
|
-
ClculationNode,
|
|
21
|
-
CreateRecordNode,
|
|
22
|
-
AggregateNode,
|
|
23
|
-
apiGetList,
|
|
24
|
-
apiFilterList,
|
|
25
12
|
} from '@nocobase/plugin-workflow-test/e2e';
|
|
26
13
|
import { expect, test } from '@nocobase/test/e2e';
|
|
27
14
|
import { dayjs } from '@nocobase/utils';
|
|
@@ -95,17 +82,23 @@ test.describe('field data entry', () => {
|
|
|
95
82
|
await manualNode.customFormMenu.click();
|
|
96
83
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
97
84
|
// 获取自定义表单的随机值
|
|
98
|
-
const configureFieldsButton = page.locator(
|
|
85
|
+
const configureFieldsButton = page.locator(
|
|
86
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
87
|
+
);
|
|
99
88
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
100
89
|
const randomValue = ariaLabel.split('-').pop();
|
|
101
90
|
|
|
102
|
-
await page
|
|
91
|
+
await page
|
|
92
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
93
|
+
.hover();
|
|
103
94
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
104
95
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
105
96
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
106
97
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
107
98
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
108
|
-
await page
|
|
99
|
+
await page
|
|
100
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
101
|
+
.hover();
|
|
109
102
|
await page.getByRole('menuitem', { name: 'Single line text' }).click();
|
|
110
103
|
await page
|
|
111
104
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -134,7 +127,7 @@ test.describe('field data entry', () => {
|
|
|
134
127
|
const newPage = mockPage();
|
|
135
128
|
await newPage.goto();
|
|
136
129
|
await page.waitForLoadState('networkidle');
|
|
137
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
130
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
138
131
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
139
132
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
140
133
|
await page.waitForTimeout(300);
|
|
@@ -232,17 +225,23 @@ test.describe('field data entry', () => {
|
|
|
232
225
|
await manualNode.customFormMenu.click();
|
|
233
226
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
234
227
|
// 获取自定义表单的随机值
|
|
235
|
-
const configureFieldsButton = page.locator(
|
|
228
|
+
const configureFieldsButton = page.locator(
|
|
229
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
230
|
+
);
|
|
236
231
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
237
232
|
const randomValue = ariaLabel.split('-').pop();
|
|
238
233
|
|
|
239
|
-
await page
|
|
234
|
+
await page
|
|
235
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
236
|
+
.hover();
|
|
240
237
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
241
238
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
242
239
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
243
240
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
244
241
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
245
|
-
await page
|
|
242
|
+
await page
|
|
243
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
244
|
+
.hover();
|
|
246
245
|
await page.getByRole('menuitem', { name: 'Long text' }).click();
|
|
247
246
|
await page
|
|
248
247
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -271,7 +270,7 @@ test.describe('field data entry', () => {
|
|
|
271
270
|
const newPage = mockPage();
|
|
272
271
|
await newPage.goto();
|
|
273
272
|
await page.waitForLoadState('networkidle');
|
|
274
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
273
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
275
274
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
276
275
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
277
276
|
await page.waitForTimeout(300);
|
|
@@ -369,17 +368,23 @@ test.describe('field data entry', () => {
|
|
|
369
368
|
await manualNode.customFormMenu.click();
|
|
370
369
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
371
370
|
// 获取自定义表单的随机值
|
|
372
|
-
const configureFieldsButton = page.locator(
|
|
371
|
+
const configureFieldsButton = page.locator(
|
|
372
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
373
|
+
);
|
|
373
374
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
374
375
|
const randomValue = ariaLabel.split('-').pop();
|
|
375
376
|
|
|
376
|
-
await page
|
|
377
|
+
await page
|
|
378
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
379
|
+
.hover();
|
|
377
380
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
378
381
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
379
382
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
380
383
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
381
384
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
382
|
-
await page
|
|
385
|
+
await page
|
|
386
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
387
|
+
.hover();
|
|
383
388
|
await page.getByRole('menuitem', { name: 'Phone' }).click();
|
|
384
389
|
await page
|
|
385
390
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -408,7 +413,7 @@ test.describe('field data entry', () => {
|
|
|
408
413
|
const newPage = mockPage();
|
|
409
414
|
await newPage.goto();
|
|
410
415
|
await page.waitForLoadState('networkidle');
|
|
411
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
416
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
412
417
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
413
418
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
414
419
|
await page.waitForTimeout(300);
|
|
@@ -506,17 +511,23 @@ test.describe('field data entry', () => {
|
|
|
506
511
|
await manualNode.customFormMenu.click();
|
|
507
512
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
508
513
|
// 获取自定义表单的随机值
|
|
509
|
-
const configureFieldsButton = page.locator(
|
|
514
|
+
const configureFieldsButton = page.locator(
|
|
515
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
516
|
+
);
|
|
510
517
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
511
518
|
const randomValue = ariaLabel.split('-').pop();
|
|
512
519
|
|
|
513
|
-
await page
|
|
520
|
+
await page
|
|
521
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
522
|
+
.hover();
|
|
514
523
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
515
524
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
516
525
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
517
526
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
518
527
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
519
|
-
await page
|
|
528
|
+
await page
|
|
529
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
530
|
+
.hover();
|
|
520
531
|
await page.getByRole('menuitem', { name: 'Email' }).click();
|
|
521
532
|
await page
|
|
522
533
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -545,7 +556,7 @@ test.describe('field data entry', () => {
|
|
|
545
556
|
const newPage = mockPage();
|
|
546
557
|
await newPage.goto();
|
|
547
558
|
await page.waitForLoadState('networkidle');
|
|
548
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
559
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
549
560
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
550
561
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
551
562
|
await page.waitForTimeout(300);
|
|
@@ -643,17 +654,23 @@ test.describe('field data entry', () => {
|
|
|
643
654
|
await manualNode.customFormMenu.click();
|
|
644
655
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
645
656
|
// 获取自定义表单的随机值
|
|
646
|
-
const configureFieldsButton = page.locator(
|
|
657
|
+
const configureFieldsButton = page.locator(
|
|
658
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
659
|
+
);
|
|
647
660
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
648
661
|
const randomValue = ariaLabel.split('-').pop();
|
|
649
662
|
|
|
650
|
-
await page
|
|
663
|
+
await page
|
|
664
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
665
|
+
.hover();
|
|
651
666
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
652
667
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
653
668
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
654
669
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
655
670
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
656
|
-
await page
|
|
671
|
+
await page
|
|
672
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
673
|
+
.hover();
|
|
657
674
|
await page.getByRole('menuitem', { name: 'Integer' }).click();
|
|
658
675
|
await page
|
|
659
676
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -682,7 +699,7 @@ test.describe('field data entry', () => {
|
|
|
682
699
|
const newPage = mockPage();
|
|
683
700
|
await newPage.goto();
|
|
684
701
|
await page.waitForLoadState('networkidle');
|
|
685
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
702
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
686
703
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
687
704
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
688
705
|
await page.waitForTimeout(300);
|
|
@@ -702,13 +719,13 @@ test.describe('field data entry', () => {
|
|
|
702
719
|
return b.id - a.id;
|
|
703
720
|
});
|
|
704
721
|
const jobs = getWorkflowNodeExecutionsObj[0].jobs;
|
|
705
|
-
const manualNodeJob = jobs.find((job) => job.nodeId.toString()
|
|
722
|
+
const manualNodeJob = jobs.find((job) => job.nodeId.toString() == manualNodeId);
|
|
706
723
|
const manualNodeJobStatus = manualNodeJob.status;
|
|
707
724
|
expect(manualNodeJobStatus).toBe(1);
|
|
708
725
|
|
|
709
726
|
const manualNodeJobResult = manualNodeJob.result;
|
|
710
727
|
const hasStaffnum = Object.values(manualNodeJobResult).some(
|
|
711
|
-
(value) => (value as { staffnum: number }).staffnum
|
|
728
|
+
(value) => (value as { staffnum: number }).staffnum == manualNodeRecord,
|
|
712
729
|
);
|
|
713
730
|
expect(hasStaffnum).toBe(true);
|
|
714
731
|
|
|
@@ -780,17 +797,23 @@ test.describe('field data entry', () => {
|
|
|
780
797
|
await manualNode.customFormMenu.click();
|
|
781
798
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
782
799
|
// 获取自定义表单的随机值
|
|
783
|
-
const configureFieldsButton = page.locator(
|
|
800
|
+
const configureFieldsButton = page.locator(
|
|
801
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
802
|
+
);
|
|
784
803
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
785
804
|
const randomValue = ariaLabel.split('-').pop();
|
|
786
805
|
|
|
787
|
-
await page
|
|
806
|
+
await page
|
|
807
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
808
|
+
.hover();
|
|
788
809
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
789
810
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
790
811
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
791
812
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
792
813
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
793
|
-
await page
|
|
814
|
+
await page
|
|
815
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
816
|
+
.hover();
|
|
794
817
|
await page.getByRole('menuitem', { name: 'Number' }).click();
|
|
795
818
|
await page
|
|
796
819
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -819,7 +842,7 @@ test.describe('field data entry', () => {
|
|
|
819
842
|
const newPage = mockPage();
|
|
820
843
|
await newPage.goto();
|
|
821
844
|
await page.waitForLoadState('networkidle');
|
|
822
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
845
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
823
846
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
824
847
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
825
848
|
await page.waitForTimeout(300);
|
|
@@ -839,13 +862,13 @@ test.describe('field data entry', () => {
|
|
|
839
862
|
return b.id - a.id;
|
|
840
863
|
});
|
|
841
864
|
const jobs = getWorkflowNodeExecutionsObj[0].jobs;
|
|
842
|
-
const manualNodeJob = jobs.find((job) => job.nodeId.toString()
|
|
865
|
+
const manualNodeJob = jobs.find((job) => job.nodeId.toString() == manualNodeId);
|
|
843
866
|
const manualNodeJobStatus = manualNodeJob.status;
|
|
844
867
|
expect(manualNodeJobStatus).toBe(1);
|
|
845
868
|
|
|
846
869
|
const manualNodeJobResult = manualNodeJob.result;
|
|
847
870
|
const hasRegcapital = Object.values(manualNodeJobResult).some(
|
|
848
|
-
(value) => (value as { regcapital: number }).regcapital
|
|
871
|
+
(value) => (value as { regcapital: number }).regcapital == manualNodeRecord,
|
|
849
872
|
);
|
|
850
873
|
expect(hasRegcapital).toBe(true);
|
|
851
874
|
|
|
@@ -917,17 +940,23 @@ test.describe('field data entry', () => {
|
|
|
917
940
|
await manualNode.customFormMenu.click();
|
|
918
941
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
919
942
|
// 获取自定义表单的随机值
|
|
920
|
-
const configureFieldsButton = page.locator(
|
|
943
|
+
const configureFieldsButton = page.locator(
|
|
944
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
945
|
+
);
|
|
921
946
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
922
947
|
const randomValue = ariaLabel.split('-').pop();
|
|
923
948
|
|
|
924
|
-
await page
|
|
949
|
+
await page
|
|
950
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
951
|
+
.hover();
|
|
925
952
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
926
953
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
927
954
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
928
955
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
929
956
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
930
|
-
await page
|
|
957
|
+
await page
|
|
958
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
959
|
+
.hover();
|
|
931
960
|
await page.getByRole('menuitem', { name: 'Percent' }).click();
|
|
932
961
|
await page
|
|
933
962
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -956,7 +985,7 @@ test.describe('field data entry', () => {
|
|
|
956
985
|
const newPage = mockPage();
|
|
957
986
|
await newPage.goto();
|
|
958
987
|
await page.waitForLoadState('networkidle');
|
|
959
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
988
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
960
989
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
961
990
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
962
991
|
await page.waitForTimeout(300);
|
|
@@ -1054,17 +1083,23 @@ test.describe('field data entry', () => {
|
|
|
1054
1083
|
await manualNode.customFormMenu.click();
|
|
1055
1084
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1056
1085
|
// 获取自定义表单的随机值
|
|
1057
|
-
const configureFieldsButton = page.locator(
|
|
1086
|
+
const configureFieldsButton = page.locator(
|
|
1087
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
1088
|
+
);
|
|
1058
1089
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
1059
1090
|
const randomValue = ariaLabel.split('-').pop();
|
|
1060
1091
|
|
|
1061
|
-
await page
|
|
1092
|
+
await page
|
|
1093
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1094
|
+
.hover();
|
|
1062
1095
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
1063
1096
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
1064
1097
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
1065
1098
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
1066
1099
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
1067
|
-
await page
|
|
1100
|
+
await page
|
|
1101
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1102
|
+
.hover();
|
|
1068
1103
|
await page.getByRole('menuitem', { name: 'Checkbox', exact: true }).click();
|
|
1069
1104
|
await page
|
|
1070
1105
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -1093,7 +1128,7 @@ test.describe('field data entry', () => {
|
|
|
1093
1128
|
const newPage = mockPage();
|
|
1094
1129
|
await newPage.goto();
|
|
1095
1130
|
await page.waitForLoadState('networkidle');
|
|
1096
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
1131
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
1097
1132
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
1098
1133
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1099
1134
|
await page.waitForTimeout(300);
|
|
@@ -1191,17 +1226,23 @@ test.describe('field data entry', () => {
|
|
|
1191
1226
|
await manualNode.customFormMenu.click();
|
|
1192
1227
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1193
1228
|
// 获取自定义表单的随机值
|
|
1194
|
-
const configureFieldsButton = page.locator(
|
|
1229
|
+
const configureFieldsButton = page.locator(
|
|
1230
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
1231
|
+
);
|
|
1195
1232
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
1196
1233
|
const randomValue = ariaLabel.split('-').pop();
|
|
1197
1234
|
|
|
1198
|
-
await page
|
|
1235
|
+
await page
|
|
1236
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1237
|
+
.hover();
|
|
1199
1238
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
1200
1239
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
1201
1240
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
1202
1241
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
1203
1242
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
1204
|
-
await page
|
|
1243
|
+
await page
|
|
1244
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1245
|
+
.hover();
|
|
1205
1246
|
await page.getByRole('menuitem', { name: 'Single select', exact: true }).click();
|
|
1206
1247
|
await page
|
|
1207
1248
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -1236,7 +1277,7 @@ test.describe('field data entry', () => {
|
|
|
1236
1277
|
const newPage = mockPage();
|
|
1237
1278
|
await newPage.goto();
|
|
1238
1279
|
await page.waitForLoadState('networkidle');
|
|
1239
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
1280
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
1240
1281
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
1241
1282
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1242
1283
|
await page.waitForTimeout(300);
|
|
@@ -1335,17 +1376,23 @@ test.describe('field data entry', () => {
|
|
|
1335
1376
|
await manualNode.customFormMenu.click();
|
|
1336
1377
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1337
1378
|
// 获取自定义表单的随机值
|
|
1338
|
-
const configureFieldsButton = page.locator(
|
|
1379
|
+
const configureFieldsButton = page.locator(
|
|
1380
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
1381
|
+
);
|
|
1339
1382
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
1340
1383
|
const randomValue = ariaLabel.split('-').pop();
|
|
1341
1384
|
|
|
1342
|
-
await page
|
|
1385
|
+
await page
|
|
1386
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1387
|
+
.hover();
|
|
1343
1388
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
1344
1389
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
1345
1390
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
1346
1391
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
1347
1392
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
1348
|
-
await page
|
|
1393
|
+
await page
|
|
1394
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1395
|
+
.hover();
|
|
1349
1396
|
await page.getByRole('menuitem', { name: 'Multiple select', exact: true }).click();
|
|
1350
1397
|
await page
|
|
1351
1398
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -1380,7 +1427,7 @@ test.describe('field data entry', () => {
|
|
|
1380
1427
|
const newPage = mockPage();
|
|
1381
1428
|
await newPage.goto();
|
|
1382
1429
|
await page.waitForLoadState('networkidle');
|
|
1383
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
1430
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
1384
1431
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
1385
1432
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1386
1433
|
await page.waitForTimeout(300);
|
|
@@ -1486,17 +1533,23 @@ test.describe('field data entry', () => {
|
|
|
1486
1533
|
await manualNode.customFormMenu.click();
|
|
1487
1534
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1488
1535
|
// 获取自定义表单的随机值
|
|
1489
|
-
const configureFieldsButton = page.locator(
|
|
1536
|
+
const configureFieldsButton = page.locator(
|
|
1537
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
1538
|
+
);
|
|
1490
1539
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
1491
1540
|
const randomValue = ariaLabel.split('-').pop();
|
|
1492
1541
|
|
|
1493
|
-
await page
|
|
1542
|
+
await page
|
|
1543
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1544
|
+
.hover();
|
|
1494
1545
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
1495
1546
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
1496
1547
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
1497
1548
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
1498
1549
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
1499
|
-
await page
|
|
1550
|
+
await page
|
|
1551
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1552
|
+
.hover();
|
|
1500
1553
|
await page.getByRole('menuitem', { name: 'Radio group', exact: true }).click();
|
|
1501
1554
|
await page
|
|
1502
1555
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -1531,7 +1584,7 @@ test.describe('field data entry', () => {
|
|
|
1531
1584
|
const newPage = mockPage();
|
|
1532
1585
|
await newPage.goto();
|
|
1533
1586
|
await page.waitForLoadState('networkidle');
|
|
1534
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
1587
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
1535
1588
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
1536
1589
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1537
1590
|
await page.waitForTimeout(300);
|
|
@@ -1629,17 +1682,23 @@ test.describe('field data entry', () => {
|
|
|
1629
1682
|
await manualNode.customFormMenu.click();
|
|
1630
1683
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1631
1684
|
// 获取自定义表单的随机值
|
|
1632
|
-
const configureFieldsButton = page.locator(
|
|
1685
|
+
const configureFieldsButton = page.locator(
|
|
1686
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
1687
|
+
);
|
|
1633
1688
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
1634
1689
|
const randomValue = ariaLabel.split('-').pop();
|
|
1635
1690
|
|
|
1636
|
-
await page
|
|
1691
|
+
await page
|
|
1692
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1693
|
+
.hover();
|
|
1637
1694
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
1638
1695
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
1639
1696
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
1640
1697
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
1641
1698
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
1642
|
-
await page
|
|
1699
|
+
await page
|
|
1700
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1701
|
+
.hover();
|
|
1643
1702
|
await page.getByRole('menuitem', { name: 'Checkbox group', exact: true }).click();
|
|
1644
1703
|
await page
|
|
1645
1704
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -1674,7 +1733,7 @@ test.describe('field data entry', () => {
|
|
|
1674
1733
|
const newPage = mockPage();
|
|
1675
1734
|
await newPage.goto();
|
|
1676
1735
|
await page.waitForLoadState('networkidle');
|
|
1677
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
1736
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
1678
1737
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
1679
1738
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1680
1739
|
await page.waitForTimeout(300);
|
|
@@ -1778,17 +1837,23 @@ test.describe('field data entry', () => {
|
|
|
1778
1837
|
await manualNode.customFormMenu.click();
|
|
1779
1838
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1780
1839
|
// 获取自定义表单的随机值
|
|
1781
|
-
const configureFieldsButton = page.locator(
|
|
1840
|
+
const configureFieldsButton = page.locator(
|
|
1841
|
+
'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]',
|
|
1842
|
+
);
|
|
1782
1843
|
const ariaLabel = await configureFieldsButton.getAttribute('aria-label');
|
|
1783
1844
|
const randomValue = ariaLabel.split('-').pop();
|
|
1784
1845
|
|
|
1785
|
-
await page
|
|
1846
|
+
await page
|
|
1847
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1848
|
+
.hover();
|
|
1786
1849
|
await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover();
|
|
1787
1850
|
await page.getByRole('menuitem', { name: 'Edit block title' }).click();
|
|
1788
1851
|
const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString();
|
|
1789
1852
|
await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle);
|
|
1790
1853
|
await page.getByRole('button', { name: 'OK', exact: true }).click();
|
|
1791
|
-
await page
|
|
1854
|
+
await page
|
|
1855
|
+
.locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`)
|
|
1856
|
+
.hover();
|
|
1792
1857
|
await page.getByRole('menuitem', { name: 'Datetime', exact: true }).click();
|
|
1793
1858
|
await page
|
|
1794
1859
|
.getByLabel(`block-item-Input-${randomValue}-Field display name`)
|
|
@@ -1817,7 +1882,7 @@ test.describe('field data entry', () => {
|
|
|
1817
1882
|
const newPage = mockPage();
|
|
1818
1883
|
await newPage.goto();
|
|
1819
1884
|
await page.waitForLoadState('networkidle');
|
|
1820
|
-
await page.getByLabel('schema-initializer-Grid-
|
|
1885
|
+
await page.getByLabel('schema-initializer-Grid-page:addBlock').hover();
|
|
1821
1886
|
await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click();
|
|
1822
1887
|
await page.mouse.move(300, 0, { steps: 100 });
|
|
1823
1888
|
await page.waitForTimeout(300);
|