@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.
Files changed (39) hide show
  1. package/dist/client/index.js +4 -4
  2. package/dist/client/instruction/SchemaConfig.d.ts +14 -3
  3. package/dist/client/instruction/createManualFormBlockUISchema.d.ts +57 -0
  4. package/dist/client/instruction/forms/custom.d.ts +7 -2
  5. package/dist/externalVersion.js +9 -9
  6. package/dist/locale/index.d.ts +2 -1
  7. package/dist/locale/index.js +3 -0
  8. package/dist/locale/zh-CN.json +2 -1
  9. package/dist/server/forms/create.d.ts +2 -1
  10. package/dist/server/forms/create.js +4 -4
  11. package/dist/server/forms/update.d.ts +2 -1
  12. package/dist/server/forms/update.js +4 -4
  13. package/dist/server/migrations/20240325213145-fix-schema.d.ts +4 -0
  14. package/dist/server/migrations/20240325213145-fix-schema.js +88 -0
  15. package/package.json +2 -2
  16. package/src/client/WorkflowTodo.tsx +4 -4
  17. package/src/client/__e2e__/createRecordForm.test.ts +123 -67
  18. package/src/client/__e2e__/customFormBlocks.test.ts +135 -70
  19. package/src/client/__e2e__/datablocks.test.ts +43 -30
  20. package/src/client/__e2e__/updateRecordForm.test.ts +241 -57
  21. package/src/client/__e2e__/workflowTodo.test.ts +16 -7
  22. package/src/client/index.ts +12 -4
  23. package/src/client/instruction/FormBlockInitializer.tsx +3 -3
  24. package/src/client/instruction/SchemaConfig.tsx +162 -40
  25. package/src/client/instruction/createManualFormBlockUISchema.ts +5 -0
  26. package/src/client/instruction/forms/create.tsx +1 -1
  27. package/src/client/instruction/forms/custom.tsx +52 -21
  28. package/src/client/instruction/forms/update.tsx +16 -8
  29. package/src/client/instruction/index.tsx +1 -1
  30. package/src/locale/index.ts +3 -1
  31. package/src/locale/zh-CN.json +2 -1
  32. package/src/server/__tests__/data-source.test.ts +223 -0
  33. package/src/server/__tests__/{instruction.test.ts → form.test.ts} +1 -510
  34. package/src/server/__tests__/mode.test.ts +561 -0
  35. package/src/server/forms/create.ts +10 -3
  36. package/src/server/forms/update.ts +10 -3
  37. package/src/server/migrations/20240325213145-fix-schema.ts +81 -0
  38. package/dist/client/instruction/DetailsBlockProvider.d.ts +0 -2
  39. 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
- CreateWorkFlow,
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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() === manualNodeId);
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 === manualNodeRecord,
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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() === manualNodeId);
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 === manualNodeRecord,
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]');
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover();
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-BlockInitializers').hover();
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);