@umbraco/playwright-testhelpers 15.0.6 → 15.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/lib/helpers/ContentUiHelper.d.ts +5 -1
  2. package/dist/lib/helpers/ContentUiHelper.js +45 -8
  3. package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
  4. package/dist/lib/helpers/DataTypeUiHelper.js +22 -6
  5. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
  6. package/dist/lib/helpers/DocumentTypeUiHelper.js +4 -4
  7. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
  8. package/dist/lib/helpers/FormsUiHelper.d.ts +123 -0
  9. package/dist/lib/helpers/FormsUiHelper.js +487 -0
  10. package/dist/lib/helpers/FormsUiHelper.js.map +1 -0
  11. package/dist/lib/helpers/LogViewerUiHelper.js +15 -3
  12. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
  13. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -1
  14. package/dist/lib/helpers/MediaUiHelper.d.ts +3 -1
  15. package/dist/lib/helpers/MediaUiHelper.js +13 -5
  16. package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
  17. package/dist/lib/helpers/MemberApiHelper.js +3 -3
  18. package/dist/lib/helpers/MemberApiHelper.js.map +1 -1
  19. package/dist/lib/helpers/MemberUiHelper.js +5 -1
  20. package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
  21. package/dist/lib/helpers/PackageUiHelper.js +11 -5
  22. package/dist/lib/helpers/PackageUiHelper.js.map +1 -1
  23. package/dist/lib/helpers/StylesheetUiHelper.js +1 -1
  24. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  25. package/dist/lib/helpers/TemplateUiHelper.js +2 -2
  26. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  27. package/dist/lib/helpers/UiBaseLocators.d.ts +17 -6
  28. package/dist/lib/helpers/UiBaseLocators.js +75 -18
  29. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  30. package/dist/lib/helpers/UiHelpers.d.ts +2 -0
  31. package/dist/lib/helpers/UiHelpers.js +3 -0
  32. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  33. package/dist/lib/helpers/UserGroupUiHelper.js +6 -2
  34. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
  35. package/dist/lib/helpers/UserUiHelper.js +4 -1
  36. package/dist/lib/helpers/UserUiHelper.js.map +1 -1
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,487 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormsUiHelper = void 0;
4
+ const UiBaseLocators_1 = require("./UiBaseLocators");
5
+ const test_1 = require("@playwright/test");
6
+ class FormsUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ formMenuItem;
8
+ quickCreateNewBtn;
9
+ createNewFormModalBtn;
10
+ saveFormBtn;
11
+ formNameTxt;
12
+ formPageNametxt;
13
+ formGroupNameTxt;
14
+ formExpandBtn;
15
+ formAddNewPageBtn;
16
+ formAddNewGroupBtn;
17
+ formPage;
18
+ formAddQuestionBtn;
19
+ formFieldType;
20
+ formFieldNameTxt;
21
+ formSubmitButtonModal;
22
+ formTree;
23
+ formActionModal;
24
+ formDeleteThreeDotBtn;
25
+ formWorkspaceEditor;
26
+ formSettingIcon;
27
+ formSettingStoreRecordBtn;
28
+ formSettingCaptions;
29
+ formSettingStyling;
30
+ formSettingValidation;
31
+ formSettingAutocomplete;
32
+ formSettingModeration;
33
+ formSettingFieldsDisplayed;
34
+ formSettingDataRetention;
35
+ formSettingCaptionsLabel;
36
+ formSettingStylingLabel;
37
+ formSettingValidationLabel;
38
+ formSettingAutocompleteLabel;
39
+ formSettingModerationLabel;
40
+ formSettingFieldsDisplayedLabel;
41
+ formSettingDataRetentionLabel;
42
+ formWorkflowConfigureBtn;
43
+ formWorkflowOnSubmitStage;
44
+ formWorkflowAddButtonModal;
45
+ formConfigureWorkflowModal;
46
+ formEditWorkflowModal;
47
+ formEditFieldModal;
48
+ formMenuItemForForm;
49
+ formInputTxt;
50
+ formInputNumber;
51
+ formToggleSlider;
52
+ formMenuItemForPrevalueSource;
53
+ createNewPrevaluesourceModalBtn;
54
+ prevalueSourceExpandBtn;
55
+ prevalueSourceTree;
56
+ prevalueSourceDeleteBtn;
57
+ formFieldMandatory;
58
+ formFieldRegex;
59
+ formWorkflowNameTxt;
60
+ prevalueSourceCacheContainer;
61
+ prevalueSourceTypeLabel;
62
+ formSettingFieldsDisplayedContainer;
63
+ formSettingDataRetentionContainer;
64
+ formSettingValidationContainer;
65
+ formSettingCaptionsContainer;
66
+ formSettingStylingContainer;
67
+ formSettingAutocompleteContainer;
68
+ formSettingModerationContainer;
69
+ prevalueSourceOriginModal;
70
+ constructor(page) {
71
+ super(page);
72
+ this.quickCreateNewBtn = page.locator('uui-button[label="Create..."]');
73
+ this.createNewFormModalBtn = page.locator('#menu-item').getByLabel('New Form...');
74
+ this.createNewPrevaluesourceModalBtn = page.locator('umb-ref-item');
75
+ this.saveFormBtn = page.getByLabel('Save', { exact: true });
76
+ this.formNameTxt = page.locator('#nameInput input[aria-label="Enter a name..."]');
77
+ this.formPageNametxt = page.locator('input[type = "text"][placeholder = "Untitled page (optional)"]');
78
+ this.formGroupNameTxt = page.locator('input[type = "text"][placeholder = "Untitled group (optional)"]');
79
+ this.formAddNewPageBtn = page.getByLabel('Add new page', { exact: true });
80
+ this.formAddNewGroupBtn = page.getByLabel('Add new group', { exact: true });
81
+ this.formPage = page.locator('forms-form-page');
82
+ this.formAddQuestionBtn = page.getByLabel("Add question", { exact: true });
83
+ this.formEditFieldModal = page.locator("form-edit-field-modal");
84
+ this.formFieldType = page.locator('#btn-item');
85
+ this.formFieldNameTxt = page.locator('#caption input[type="text"][aria-label="caption"]');
86
+ this.formSubmitButtonModal = page.getByLabel('Submit', { exact: true });
87
+ this.formExpandBtn = page.locator('#menu-item button[aria-label="Expand child items for Forms"] svg');
88
+ this.formTree = page.locator('umb-tree[alias="Forms.Tree.Forms"]');
89
+ this.formMenuItem = page.locator('uui-menu-item');
90
+ this.formMenuItemForForm = page.locator('uui-menu-item[label="Forms"]');
91
+ this.formMenuItemForPrevalueSource = page.locator('uui-menu-item[label="Prevalue Sources"]');
92
+ this.formActionModal = page.locator('#action-modal');
93
+ this.formDeleteThreeDotBtn = page.locator('uui-menu-item[label="Delete..."]');
94
+ this.formWorkspaceEditor = page.locator('umb-workspace-editor[alias="Forms.Workspace.Form"]');
95
+ this.formSettingIcon = page.locator('umb-icon[name="settings"]');
96
+ this.formSettingStoreRecordBtn = page.locator('forms-settings-store-records');
97
+ this.formSettingCaptions = page.locator('forms-settings-captions');
98
+ this.formSettingStyling = page.locator('forms-settings-styling');
99
+ this.formSettingValidation = page.locator('forms-settings-validation');
100
+ this.formSettingAutocomplete = page.locator('forms-settings-autocomplete');
101
+ this.formSettingModeration = page.locator('forms-settings-moderation');
102
+ this.formSettingFieldsDisplayed = page.locator('forms-settings-fields-display');
103
+ this.formSettingDataRetention = page.locator('forms-settings-data-retention');
104
+ this.formSettingCaptionsLabel = page.locator('uui-label[title="captions"]');
105
+ this.formSettingStylingLabel = page.locator('uui-label[title="styling"]');
106
+ this.formSettingValidationLabel = page.locator('uui-label[title="validation"]');
107
+ this.formSettingAutocompleteLabel = page.locator('uui-label[title="autocomplete"]');
108
+ this.formSettingModerationLabel = page.locator('uui-label[title="manualApproval"]');
109
+ this.formSettingFieldsDisplayedLabel = page.locator('uui-label[title="fieldsDisplayed"]');
110
+ this.formSettingDataRetentionLabel = page.locator('uui-label[title="dataRetention"]');
111
+ this.formWorkflowConfigureBtn = page.getByLabel('Configure workflow', { exact: true });
112
+ this.formWorkflowOnSubmitStage = page.locator('form-configure-workflow-stage[collectionname="onSubmit"]');
113
+ this.formWorkflowAddButtonModal = page.locator('.stage-block', { hasText: "Add workflow" });
114
+ this.formConfigureWorkflowModal = page.locator('form-configure-workflow-modal');
115
+ this.formEditWorkflowModal = page.locator('form-edit-workflow-modal');
116
+ this.formInputTxt = page.locator('input[type = "text"]');
117
+ this.formInputNumber = page.locator('input[type = "number"]');
118
+ this.formToggleSlider = page.locator('uui-toggle #slider');
119
+ this.prevalueSourceExpandBtn = page.locator('#menu-item button[aria-label="Expand child items for Prevalue Sources"] svg');
120
+ this.prevalueSourceTree = page.locator('umb-tree[alias="Forms.Tree.PrevalueSources"]');
121
+ this.prevalueSourceDeleteBtn = page.locator('uui-button[label="Delete..."]');
122
+ this.prevalueSourceCacheContainer = this.page.locator('umb-property-layout[alias="_cachePrevalues"]');
123
+ this.prevalueSourceTypeLabel = this.page.locator("[label = 'Type']");
124
+ this.formFieldMandatory = this.page.locator('umb-property-layout[alias="mandatory"]');
125
+ this.formFieldRegex = this.page.locator('umb-property-layout[alias="regex"]');
126
+ this.formWorkflowNameTxt = this.page.locator('umb-property-layout[alias="name"] input[type=text]');
127
+ this.formSettingFieldsDisplayedContainer = this.formSettingFieldsDisplayed.locator(this.formSettingFieldsDisplayedLabel);
128
+ this.formSettingDataRetentionContainer = this.formSettingDataRetention.locator(this.formSettingDataRetentionLabel);
129
+ this.formSettingValidationContainer = this.formSettingValidation.locator(this.formSettingValidationLabel);
130
+ this.formSettingCaptionsContainer = this.formSettingCaptions.locator(this.formSettingCaptionsLabel);
131
+ this.formSettingStylingContainer = this.formSettingStyling.locator(this.formSettingStylingLabel);
132
+ this.formSettingAutocompleteContainer = this.formSettingAutocomplete.locator(this.formSettingAutocompleteLabel);
133
+ this.formSettingModerationContainer = this.formSettingModeration.locator(this.formSettingModerationLabel);
134
+ this.prevalueSourceOriginModal = this.page.locator('umb-body-layout[headline="Pick origin"]');
135
+ }
136
+ /*
137
+ * Methods for Forms.
138
+ */
139
+ async clickQuickCreateFormButton() {
140
+ await this.formMenuItemForForm.hover();
141
+ await this.formMenuItemForForm.locator(this.quickCreateNewBtn).click();
142
+ }
143
+ async clickNewFormButton() {
144
+ await (0, test_1.expect)(this.createNewFormModalBtn).toBeVisible();
145
+ await this.createNewFormModalBtn.click();
146
+ }
147
+ async clickSaveFormButton() {
148
+ await this.saveFormBtn.click();
149
+ }
150
+ async fillFormName(name) {
151
+ await (0, test_1.expect)(this.formNameTxt).toBeVisible();
152
+ await this.formNameTxt.fill(name);
153
+ }
154
+ async fillFormPageName(position, name) {
155
+ const nameInput = this.formPageNametxt.nth(position);
156
+ await (0, test_1.expect)(nameInput).toBeVisible();
157
+ await nameInput.fill(name);
158
+ }
159
+ async fillFormGroupName(position, name) {
160
+ const groupInput = this.formGroupNameTxt.nth(position);
161
+ await (0, test_1.expect)(groupInput).toBeVisible();
162
+ await groupInput.fill(name);
163
+ }
164
+ async fillFormFieldName(name) {
165
+ await this.formEditFieldModal.locator(this.formFieldNameTxt).fill(name);
166
+ }
167
+ async clickAddNewPageButton() {
168
+ await this.formAddNewPageBtn.click();
169
+ }
170
+ async clickAddNewGroupButton() {
171
+ await this.formAddNewGroupBtn.click();
172
+ }
173
+ async clickAddQuestionButton(index = 0) {
174
+ const button = this.formPage.nth(index).locator(this.formAddQuestionBtn);
175
+ await button.click();
176
+ }
177
+ async chooseFormFieldType(type) {
178
+ await this.formFieldType.filter({ hasText: type }).nth(0).click();
179
+ }
180
+ async clickExpandFormsTreeButton() {
181
+ await this.formExpandBtn.click();
182
+ }
183
+ async doesFormTreeHaveFormName(name) {
184
+ await (0, test_1.expect)(this.formTree).toContainText(name);
185
+ }
186
+ async goToFormWithName(name) {
187
+ await this.formTree.getByText(name, { exact: true }).click();
188
+ }
189
+ async clickFormFieldTypeSubmitModal() {
190
+ await this.formSubmitButtonModal.click();
191
+ }
192
+ async clickActionMenuOnFormMenuItem(name) {
193
+ await this.formMenuItem.locator('[label="' + name + '"] uui-button[label="Open actions menu"]').click();
194
+ }
195
+ async clickDeleteFormButton() {
196
+ await this.formActionModal.locator(this.formDeleteThreeDotBtn).click();
197
+ await this.deleteExactBtn.click();
198
+ }
199
+ async goToFormSetting() {
200
+ await this.formWorkspaceEditor.locator(this.formSettingIcon).click();
201
+ }
202
+ async setFormStoreRecordsSetting() {
203
+ await (0, test_1.expect)(this.formSettingStoreRecordBtn).toBeVisible();
204
+ const toggle = this.formSettingStoreRecordBtn.locator(this.formToggleSlider);
205
+ await (0, test_1.expect)(toggle).toBeVisible();
206
+ await toggle.check();
207
+ }
208
+ async setFormCaptionsSetting() {
209
+ await (0, test_1.expect)(this.formSettingCaptionsContainer).toBeVisible();
210
+ for (let i = 0; i < 3; i++) {
211
+ const captionInput = this.formSettingCaptions.locator(this.formInputTxt).nth(i);
212
+ await (0, test_1.expect)(captionInput).toBeVisible();
213
+ await captionInput.fill("Test Caption " + (i + 1));
214
+ }
215
+ }
216
+ async setFormStylingSetting() {
217
+ await (0, test_1.expect)(this.formSettingStylingContainer).toBeVisible();
218
+ const cssClassInput = this.formSettingStyling.locator(this.formInputTxt);
219
+ await (0, test_1.expect)(cssClassInput).toBeVisible();
220
+ await cssClassInput.fill("custom-css-class");
221
+ const disableDefaultStylesheetInput = this.formSettingStyling.locator(this.formToggleSlider);
222
+ await (0, test_1.expect)(disableDefaultStylesheetInput).toBeVisible();
223
+ await disableDefaultStylesheetInput.click();
224
+ }
225
+ async setFormValidationSetting() {
226
+ await (0, test_1.expect)(this.formSettingValidationContainer).toBeVisible();
227
+ const requiredErrorMessageInput = this.formSettingValidation.locator(this.formInputTxt).nth(0);
228
+ await (0, test_1.expect)(requiredErrorMessageInput).toBeVisible();
229
+ await requiredErrorMessageInput.fill("Required error message");
230
+ const invalidErrorMessageInput = this.formSettingValidation.locator(this.formInputTxt).nth(1);
231
+ await (0, test_1.expect)(invalidErrorMessageInput).toBeVisible();
232
+ await invalidErrorMessageInput.fill("Invalid error message");
233
+ const showValidationSummaryInput = this.formSettingValidation.locator(this.formToggleSlider).nth(0);
234
+ await (0, test_1.expect)(showValidationSummaryInput).toBeVisible();
235
+ await showValidationSummaryInput.click();
236
+ const hideFieldValidationInput = this.formSettingValidation.locator(this.formToggleSlider).nth(1);
237
+ await (0, test_1.expect)(hideFieldValidationInput).toBeVisible();
238
+ await hideFieldValidationInput.click();
239
+ const markMandatoryFieldRadioInput = this.formSettingValidation.locator("uui-radio[value = 'MarkMandatoryFields']");
240
+ await (0, test_1.expect)(markMandatoryFieldRadioInput).toBeVisible();
241
+ await markMandatoryFieldRadioInput.click();
242
+ const indicatorInput = this.formSettingValidation.locator(this.formInputTxt).nth(2);
243
+ await (0, test_1.expect)(indicatorInput).toBeVisible();
244
+ await indicatorInput.fill("+");
245
+ }
246
+ async setFormAutocompleteSetting() {
247
+ await (0, test_1.expect)(this.formSettingAutocompleteContainer).toBeVisible();
248
+ const autocompleteAttributeRadioInput = this.formSettingAutocomplete.locator('uui-radio[value = "On"]');
249
+ await (0, test_1.expect)(autocompleteAttributeRadioInput).toBeVisible();
250
+ await autocompleteAttributeRadioInput.click();
251
+ }
252
+ async setFormModerationSetting() {
253
+ await (0, test_1.expect)(this.formSettingModerationContainer).toBeVisible();
254
+ const enablePostModerationAttributeToggleInput = this.formSettingModeration.locator(this.formToggleSlider);
255
+ await (0, test_1.expect)(enablePostModerationAttributeToggleInput).toBeVisible();
256
+ await enablePostModerationAttributeToggleInput.click();
257
+ }
258
+ async setFormFieldsDisplayedSetting() {
259
+ await (0, test_1.expect)(this.formSettingFieldsDisplayedContainer).toBeVisible();
260
+ const displayDefaultFieldsToggleInput = this.formSettingFieldsDisplayed.locator(this.formToggleSlider);
261
+ await (0, test_1.expect)(displayDefaultFieldsToggleInput).toBeVisible();
262
+ await displayDefaultFieldsToggleInput.click();
263
+ await this.page.waitForTimeout(100); // short pause required here otherwise revealed elements are not found
264
+ const displayFieldsSelect = this.formSettingFieldsDisplayed.locator("select");
265
+ await (0, test_1.expect)(displayFieldsSelect).toBeVisible();
266
+ await displayFieldsSelect.selectOption({ value: '_system_state' });
267
+ const displayFieldsAddButton = this.formSettingFieldsDisplayed.locator("button[id='button']");
268
+ await (0, test_1.expect)(displayFieldsAddButton).toBeVisible();
269
+ await displayFieldsAddButton.click();
270
+ }
271
+ async setFormDataRetentionSetting(recordNumber) {
272
+ await (0, test_1.expect)(this.formSettingDataRetentionContainer).toBeVisible();
273
+ const retainSubmittedRecordsToggleInput = this.formSettingDataRetention.locator(this.formToggleSlider).nth(0);
274
+ await (0, test_1.expect)(retainSubmittedRecordsToggleInput).toBeVisible();
275
+ await retainSubmittedRecordsToggleInput.click();
276
+ await this.page.waitForTimeout(100); // short pause required here otherwise revealed elements are not found
277
+ const retainSubmittedRecordsNumberInput = this.formSettingDataRetention.locator(this.formInputNumber).nth(0);
278
+ await (0, test_1.expect)(retainSubmittedRecordsNumberInput).toBeVisible();
279
+ await retainSubmittedRecordsNumberInput.fill(recordNumber);
280
+ }
281
+ async toggleFieldSetting(settingAlias) {
282
+ const settingFieldLocator = this.page.locator('umb-property-layout[alias="' + settingAlias + '"] #slider');
283
+ await (0, test_1.expect)(settingFieldLocator).toBeVisible();
284
+ await settingFieldLocator.click();
285
+ }
286
+ async applyFieldSettingViaTextInput(settingAlias, settingValue) {
287
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"] input');
288
+ await settingFieldLocator.fill(settingValue);
289
+ }
290
+ async applyFieldSettingViaDropDown(settingAlias, settingValue) {
291
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"] select');
292
+ await settingFieldLocator.selectOption({ value: settingValue });
293
+ }
294
+ async applyFieldSettingViaSlider(settingAlias) {
295
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"] #slider');
296
+ await (0, test_1.expect)(settingFieldLocator).toBeVisible();
297
+ await settingFieldLocator.click();
298
+ }
299
+ async applyFieldFileUploadSettings(settingAlias, allowedProvidedExtensions, allowedCustomExtensions, allowMultiple) {
300
+ const settingFieldLocator = this.page.locator('umb-property-layout[alias="' + settingAlias + '"]');
301
+ for (var i = 0; i < allowedProvidedExtensions.length; i++) {
302
+ const checkBoxLocator = settingFieldLocator.locator('uui-toggle', { hasText: allowedProvidedExtensions[i].toUpperCase() }).locator('#slider');
303
+ await (0, test_1.expect)(checkBoxLocator).toBeVisible();
304
+ await checkBoxLocator.click();
305
+ }
306
+ const addNewExtensionLocator = settingFieldLocator.locator('input[placeholder = "Add new allowed file type"]');
307
+ await (0, test_1.expect)(addNewExtensionLocator).toBeVisible();
308
+ const buttonLocator = settingFieldLocator.locator('form svg');
309
+ await (0, test_1.expect)(buttonLocator).toBeVisible();
310
+ for (var i = 0; i < allowedCustomExtensions.length; i++) {
311
+ await addNewExtensionLocator.fill(allowedCustomExtensions[i]);
312
+ await buttonLocator.click();
313
+ }
314
+ if (allowMultiple) {
315
+ const alias = "allowMultipleFileUploads";
316
+ const multipleUploadLocator = this.page.locator('umb-property-layout[alias="' + alias + '"] #slider');
317
+ await (0, test_1.expect)(multipleUploadLocator).toBeVisible();
318
+ await multipleUploadLocator.click();
319
+ }
320
+ }
321
+ async applyFieldPrevalues(settingAlias, prevalues) {
322
+ const settingFieldLocator = this.page.locator('umb-property-layout[alias="' + settingAlias + '"]');
323
+ for (var i = 0; i < prevalues.length; i++) {
324
+ const valueFieldLocator = settingFieldLocator.locator("input[placeholder = 'New value']");
325
+ await (0, test_1.expect)(valueFieldLocator).toBeVisible();
326
+ await valueFieldLocator.fill(prevalues[i].value);
327
+ const captionFieldLocator = settingFieldLocator.locator("input[placeholder = 'New caption']");
328
+ await (0, test_1.expect)(captionFieldLocator).toBeVisible();
329
+ await captionFieldLocator.fill(prevalues[i].caption);
330
+ const buttonLocator = settingFieldLocator.locator('uui-button[label="add"]');
331
+ await (0, test_1.expect)(buttonLocator).toBeVisible();
332
+ await buttonLocator.click();
333
+ }
334
+ }
335
+ async applyFieldSettingViaTextArea(settingAlias, settingValue) {
336
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"] textarea');
337
+ await settingFieldLocator.fill(settingValue);
338
+ }
339
+ async applyFieldSettingViaRichTextInput(settingAlias, settingValue) {
340
+ const richTextAreaTxt = this.page.locator('umb-property[alias="' + settingAlias + '"] umb-property-editor-ui-tiptap').locator('#editor .tiptap');
341
+ await (0, test_1.expect)(richTextAreaTxt).toBeVisible();
342
+ await richTextAreaTxt.fill(settingValue);
343
+ }
344
+ async applyFieldSettingViaRange(settingAlias, settingValue) {
345
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"]');
346
+ await settingFieldLocator.locator('input[type="range"]').fill(settingValue);
347
+ }
348
+ async applyFieldSettingViaFieldMappingInput(settingAlias, settingValue) {
349
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"]');
350
+ await (0, test_1.expect)(settingFieldLocator).toBeVisible();
351
+ for (let i = 0; i < settingValue.length; i++) {
352
+ const buttonLocator = settingFieldLocator.locator('uui-button[label="add"]');
353
+ await (0, test_1.expect)(buttonLocator).toBeVisible();
354
+ await buttonLocator.click();
355
+ const aliasInputLocator = settingFieldLocator.locator("input[placeholder = 'Alias']").nth(i);
356
+ await (0, test_1.expect)(aliasInputLocator).toBeVisible();
357
+ await aliasInputLocator.fill(settingValue[i].alias);
358
+ const staticValueInputLocator = settingFieldLocator.locator("input[placeholder = 'Static value']").nth(i);
359
+ await (0, test_1.expect)(staticValueInputLocator).toBeVisible();
360
+ await staticValueInputLocator.fill(settingValue[i].staticValue);
361
+ }
362
+ }
363
+ async applyFieldSettingViaDocumentMapper(settingAlias, settingValue) {
364
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"]');
365
+ await (0, test_1.expect)(settingFieldLocator).toBeVisible();
366
+ const selectLocator = settingFieldLocator.locator("forms-document-mapper-property-editor select");
367
+ await selectLocator.selectOption({ value: settingValue.doctype });
368
+ const inputLocator = settingFieldLocator.locator('forms-document-mapper-property-editor input[type = "text"]');
369
+ await (0, test_1.expect)(inputLocator.first()).toBeVisible();
370
+ const inputLocatorCount = await inputLocator.count();
371
+ for (let i = 0; i < inputLocatorCount; i++) {
372
+ await (0, test_1.expect)(inputLocator.nth(i)).toBeVisible();
373
+ await inputLocator.nth(i).fill(settingValue.nameStaticValue);
374
+ }
375
+ }
376
+ async applyFieldSettingViaEmailTemplatePicker(settingAlias, settingValue) {
377
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"]');
378
+ await (0, test_1.expect)(settingFieldLocator).toBeVisible();
379
+ const buttonLocator = settingFieldLocator.locator("#caret-button");
380
+ await buttonLocator.click();
381
+ const templateLocator = this.page.locator("#label-button", { hasText: settingValue });
382
+ await (0, test_1.expect)(templateLocator).toBeVisible();
383
+ await templateLocator.click();
384
+ }
385
+ async applyFieldSettingViaStandardFieldMappingInput(settingAlias, settingValue) {
386
+ const settingFieldLocator = this.page.locator('umb-property[alias="' + settingAlias + '"]');
387
+ await (0, test_1.expect)(settingFieldLocator).toBeVisible();
388
+ for (let i = 0; i < settingValue.length; i++) {
389
+ if (settingValue[i].include) {
390
+ const includeButtonLocator = settingFieldLocator.locator('div[data-umb-standard-field-mapping-include="' + settingValue[i].alias + '"] #slider');
391
+ await includeButtonLocator.click();
392
+ }
393
+ const keyNameButtonLocator = settingFieldLocator.locator('div[data-umb-standard-field-mapping-key-name="' + settingValue[i].alias + '"] input[type="text"]');
394
+ await keyNameButtonLocator.fill(settingValue[0].keyName);
395
+ }
396
+ }
397
+ async setFieldMandatory(message) {
398
+ await (0, test_1.expect)(this.formFieldMandatory).toBeVisible();
399
+ await this.formFieldMandatory.locator("#slider").click();
400
+ await this.page.waitForTimeout(1000);
401
+ const inputLocator = this.formFieldMandatory.locator(this.formInputTxt);
402
+ await (0, test_1.expect)(inputLocator).toBeVisible();
403
+ await inputLocator.fill(message);
404
+ }
405
+ async setFieldValidation(label, message) {
406
+ await (0, test_1.expect)(this.formFieldRegex).toBeVisible();
407
+ const selectLocator = this.formFieldRegex.locator("select");
408
+ await selectLocator.selectOption({ label: label });
409
+ await this.page.waitForTimeout(1000);
410
+ const inputLocator = this.formFieldRegex.locator("input");
411
+ await (0, test_1.expect)(inputLocator).toBeVisible();
412
+ await inputLocator.fill(message);
413
+ }
414
+ async clickFormWorkflowConfigureButton() {
415
+ await this.formWorkflowConfigureBtn.click();
416
+ }
417
+ async clickFormWorkflowEditSubmitButton() {
418
+ await this.formEditWorkflowModal.locator(this.formSubmitButtonModal).click();
419
+ }
420
+ async clickFormWorkflowConfigureSubmitButton() {
421
+ await this.formConfigureWorkflowModal.locator(this.formSubmitButtonModal).click();
422
+ }
423
+ async clickFormWorkflowAddButton() {
424
+ await this.formWorkflowOnSubmitStage.locator(this.formWorkflowAddButtonModal).click({ force: true });
425
+ }
426
+ async selectWorkflowType(workflowType) {
427
+ this.page.locator('umb-ref-item[title="' + workflowType + '"]').click();
428
+ }
429
+ async fillWorkflowName(workflowName) {
430
+ await (0, test_1.expect)(this.formWorkflowNameTxt).toBeVisible();
431
+ await this.formWorkflowNameTxt.fill(workflowName);
432
+ }
433
+ /*
434
+ * Methods for Prevalue Source.
435
+ */
436
+ async clickQuickCreatePrevalueSourceButton() {
437
+ await (0, test_1.expect)(this.formMenuItemForPrevalueSource).toBeVisible();
438
+ await this.formMenuItemForPrevalueSource.hover();
439
+ await this.formMenuItemForPrevalueSource.locator(this.quickCreateNewBtn).click();
440
+ }
441
+ async clickPrevalueSourceTypeButton(type) {
442
+ const button = this.createNewPrevaluesourceModalBtn.locator("#name", { hasText: type });
443
+ await (0, test_1.expect)(button).toBeVisible();
444
+ await button.click();
445
+ }
446
+ async clickExpandPrevalueSourceTreeButton() {
447
+ await this.prevalueSourceExpandBtn.click();
448
+ }
449
+ async goToPrevalueSourceWithName(name) {
450
+ await this.prevalueSourceTree.locator('uui-menu-item[label="' + name + '"]').click();
451
+ }
452
+ async clickDeletePrevalueSourceButton(name) {
453
+ const prevalueSource = await this.prevalueSourceTree.locator('uui-menu-item[label="' + name + '"]');
454
+ await prevalueSource.locator(this.prevalueSourceDeleteBtn).click();
455
+ await this.deleteExactBtn.click();
456
+ }
457
+ async applyCacheOptions(option, timeValue = 0, timeUnit = "") {
458
+ await (0, test_1.expect)(this.prevalueSourceCacheContainer).toBeVisible();
459
+ const optionSelect = this.prevalueSourceCacheContainer.locator('uui-radio[value = "' + option + '"]');
460
+ await (0, test_1.expect)(optionSelect).toBeVisible();
461
+ await optionSelect.click();
462
+ if (option === "time") {
463
+ const numberInput = this.prevalueSourceCacheContainer.locator("input[type='number']");
464
+ await (0, test_1.expect)(numberInput).toBeVisible();
465
+ await numberInput.fill(timeValue.toString());
466
+ const unitSelect = this.prevalueSourceCacheContainer.locator("select");
467
+ await (0, test_1.expect)(unitSelect).toBeVisible();
468
+ await unitSelect.selectOption({ value: timeUnit });
469
+ }
470
+ }
471
+ async applyPrevalueSourceSettingViaNodeSelector(labelText, settingValue) {
472
+ const container = this.page.locator('umb-property[alias="' + labelText + '"]');
473
+ await (0, test_1.expect)(container).toBeVisible();
474
+ const rootNode = container.locator('uui-button[label="Specify root node"]');
475
+ await (0, test_1.expect)(rootNode).toBeVisible();
476
+ await rootNode.click();
477
+ await (0, test_1.expect)(this.prevalueSourceOriginModal).toBeVisible();
478
+ const value = this.prevalueSourceOriginModal.locator('umb-ref-item[name="' + settingValue + '"]');
479
+ await (0, test_1.expect)(value).toBeVisible();
480
+ await value.click();
481
+ }
482
+ async checkPrevalueSourceTypeLabel() {
483
+ await (0, test_1.expect)(this.prevalueSourceTypeLabel).toBeVisible();
484
+ }
485
+ }
486
+ exports.FormsUiHelper = FormsUiHelper;
487
+ //# sourceMappingURL=FormsUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormsUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/FormsUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { UiBaseLocators } from \"./UiBaseLocators\";\nimport { expect, Locator, Page } from \"@playwright/test\"\n\nexport class FormsUiHelper extends UiBaseLocators{\n private readonly formMenuItem: Locator;\n private readonly quickCreateNewBtn: Locator;\n private readonly createNewFormModalBtn: Locator;\n private readonly saveFormBtn: Locator;\n private readonly formNameTxt: Locator;\n private readonly formPageNametxt: Locator;\n private readonly formGroupNameTxt: Locator;\n private readonly formExpandBtn: Locator;\n private readonly formAddNewPageBtn: Locator;\n private readonly formAddNewGroupBtn: Locator;\n private readonly formPage: Locator;\n private readonly formAddQuestionBtn: Locator;\n private readonly formFieldType: Locator;\n private readonly formFieldNameTxt: Locator;\n private readonly formSubmitButtonModal: Locator;\n private readonly formTree: Locator;\n private readonly formActionModal: Locator;\n private readonly formDeleteThreeDotBtn: Locator;\n private readonly formWorkspaceEditor: Locator;\n private readonly formSettingIcon: Locator;\n private readonly formSettingStoreRecordBtn: Locator;\n private readonly formSettingCaptions: Locator;\n private readonly formSettingStyling: Locator;\n private readonly formSettingValidation: Locator;\n private readonly formSettingAutocomplete: Locator;\n private readonly formSettingModeration: Locator;\n private readonly formSettingFieldsDisplayed: Locator;\n private readonly formSettingDataRetention: Locator;\n private readonly formSettingCaptionsLabel: Locator;\n private readonly formSettingStylingLabel: Locator;\n private readonly formSettingValidationLabel: Locator;\n private readonly formSettingAutocompleteLabel: Locator;\n private readonly formSettingModerationLabel: Locator;\n private readonly formSettingFieldsDisplayedLabel: Locator;\n private readonly formSettingDataRetentionLabel: Locator;\n private readonly formWorkflowConfigureBtn: Locator;\n private readonly formWorkflowOnSubmitStage: Locator;\n private readonly formWorkflowAddButtonModal: Locator;\n private readonly formConfigureWorkflowModal: Locator;\n private readonly formEditWorkflowModal: Locator;\n private readonly formEditFieldModal: Locator;\n private readonly formMenuItemForForm: Locator;\n private readonly formInputTxt: Locator;\n private readonly formInputNumber: Locator;\n private readonly formToggleSlider: Locator;\n private readonly formMenuItemForPrevalueSource: Locator;\n private readonly createNewPrevaluesourceModalBtn: Locator;\n private readonly prevalueSourceExpandBtn: Locator;\n private readonly prevalueSourceTree: Locator;\n private readonly prevalueSourceDeleteBtn: Locator;\n private readonly formFieldMandatory: Locator;\n private readonly formFieldRegex: Locator;\n private readonly formWorkflowNameTxt: Locator;\n private readonly prevalueSourceCacheContainer: Locator;\n private readonly prevalueSourceTypeLabel: Locator;\n private readonly formSettingFieldsDisplayedContainer: Locator;\n private readonly formSettingDataRetentionContainer: Locator;\n private readonly formSettingValidationContainer: Locator;\n private readonly formSettingCaptionsContainer: Locator;\n private readonly formSettingStylingContainer: Locator;\n private readonly formSettingAutocompleteContainer: Locator;\n private readonly formSettingModerationContainer: Locator;\n private readonly prevalueSourceOriginModal: Locator;\n\n constructor(page: Page) {\n super(page);\n this.quickCreateNewBtn = page.locator('uui-button[label=\"Create...\"]');\n this.createNewFormModalBtn = page.locator('#menu-item').getByLabel('New Form...');\n this.createNewPrevaluesourceModalBtn = page.locator('umb-ref-item');\n this.saveFormBtn = page.getByLabel('Save', {exact: true});\n this.formNameTxt = page.locator('#nameInput input[aria-label=\"Enter a name...\"]');\n this.formPageNametxt = page.locator('input[type = \"text\"][placeholder = \"Untitled page (optional)\"]');\n this.formGroupNameTxt = page.locator('input[type = \"text\"][placeholder = \"Untitled group (optional)\"]');\n this.formAddNewPageBtn = page.getByLabel('Add new page', {exact: true});\n this.formAddNewGroupBtn = page.getByLabel('Add new group', {exact: true});\n this.formPage = page.locator('forms-form-page');\n this.formAddQuestionBtn = page.getByLabel(\"Add question\", {exact: true});\n this.formEditFieldModal = page.locator(\"form-edit-field-modal\");\n this.formFieldType = page.locator('#btn-item');\n this.formFieldNameTxt = page.locator('#caption input[type=\"text\"][aria-label=\"caption\"]');\n this.formSubmitButtonModal = page.getByLabel('Submit', {exact: true});\n this.formExpandBtn = page.locator('#menu-item button[aria-label=\"Expand child items for Forms\"] svg');\n this.formTree = page.locator('umb-tree[alias=\"Forms.Tree.Forms\"]');\n this.formMenuItem = page.locator('uui-menu-item');\n this.formMenuItemForForm = page.locator('uui-menu-item[label=\"Forms\"]');\n this.formMenuItemForPrevalueSource = page.locator('uui-menu-item[label=\"Prevalue Sources\"]');\n this.formActionModal = page.locator('#action-modal');\n this.formDeleteThreeDotBtn = page.locator('uui-menu-item[label=\"Delete...\"]');\n this.formWorkspaceEditor = page.locator('umb-workspace-editor[alias=\"Forms.Workspace.Form\"]');\n this.formSettingIcon = page.locator('umb-icon[name=\"settings\"]');\n this.formSettingStoreRecordBtn = page.locator('forms-settings-store-records');\n this.formSettingCaptions = page.locator('forms-settings-captions');\n this.formSettingStyling = page.locator('forms-settings-styling');\n this.formSettingValidation = page.locator('forms-settings-validation');\n this.formSettingAutocomplete = page.locator('forms-settings-autocomplete');\n this.formSettingModeration = page.locator('forms-settings-moderation');\n this.formSettingFieldsDisplayed = page.locator('forms-settings-fields-display');\n this.formSettingDataRetention = page.locator('forms-settings-data-retention');\n this.formSettingCaptionsLabel = page.locator('uui-label[title=\"captions\"]');\n this.formSettingStylingLabel = page.locator('uui-label[title=\"styling\"]');\n this.formSettingValidationLabel = page.locator('uui-label[title=\"validation\"]');\n this.formSettingAutocompleteLabel = page.locator('uui-label[title=\"autocomplete\"]');\n this.formSettingModerationLabel = page.locator('uui-label[title=\"manualApproval\"]');\n this.formSettingFieldsDisplayedLabel = page.locator('uui-label[title=\"fieldsDisplayed\"]');\n this.formSettingDataRetentionLabel = page.locator('uui-label[title=\"dataRetention\"]');\n this.formWorkflowConfigureBtn = page.getByLabel('Configure workflow', { exact: true });\n this.formWorkflowOnSubmitStage = page.locator('form-configure-workflow-stage[collectionname=\"onSubmit\"]');\n this.formWorkflowAddButtonModal = page.locator('.stage-block', {hasText: \"Add workflow\"});\n this.formConfigureWorkflowModal = page.locator('form-configure-workflow-modal');\n this.formEditWorkflowModal = page.locator('form-edit-workflow-modal');\n this.formInputTxt = page.locator('input[type = \"text\"]');\n this.formInputNumber = page.locator('input[type = \"number\"]');\n this.formToggleSlider = page.locator('uui-toggle #slider');\n this.prevalueSourceExpandBtn = page.locator('#menu-item button[aria-label=\"Expand child items for Prevalue Sources\"] svg');\n this.prevalueSourceTree = page.locator('umb-tree[alias=\"Forms.Tree.PrevalueSources\"]');\n this.prevalueSourceDeleteBtn = page.locator('uui-button[label=\"Delete...\"]');\n this.prevalueSourceCacheContainer = this.page.locator('umb-property-layout[alias=\"_cachePrevalues\"]');\n this.prevalueSourceTypeLabel = this.page.locator(\"[label = 'Type']\");\n this.formFieldMandatory = this.page.locator('umb-property-layout[alias=\"mandatory\"]');\n this.formFieldRegex = this.page.locator('umb-property-layout[alias=\"regex\"]');\n this.formWorkflowNameTxt = this.page.locator('umb-property-layout[alias=\"name\"] input[type=text]');\n this.formSettingFieldsDisplayedContainer = this.formSettingFieldsDisplayed.locator(this.formSettingFieldsDisplayedLabel);\n this.formSettingDataRetentionContainer = this.formSettingDataRetention.locator(this.formSettingDataRetentionLabel);\n this.formSettingValidationContainer = this.formSettingValidation.locator(this.formSettingValidationLabel);\n this.formSettingCaptionsContainer = this.formSettingCaptions.locator(this.formSettingCaptionsLabel);\n this.formSettingStylingContainer = this.formSettingStyling.locator(this.formSettingStylingLabel);\n this.formSettingAutocompleteContainer = this.formSettingAutocomplete.locator(this.formSettingAutocompleteLabel);\n this.formSettingModerationContainer = this.formSettingModeration.locator(this.formSettingModerationLabel);\n this.prevalueSourceOriginModal = this.page.locator('umb-body-layout[headline=\"Pick origin\"]');\n }\n\n /*\n * Methods for Forms.\n */\n\n async clickQuickCreateFormButton() {\n await this.formMenuItemForForm.hover();\n await this.formMenuItemForForm.locator(this.quickCreateNewBtn).click();\n }\n\n async clickNewFormButton() {\n await expect(this.createNewFormModalBtn).toBeVisible();\n await this.createNewFormModalBtn.click();\n }\n\n async clickSaveFormButton(){\n await this.saveFormBtn.click();\n }\n\n async fillFormName(name: string){\n await expect(this.formNameTxt).toBeVisible();\n await this.formNameTxt.fill(name);\n }\n\n async fillFormPageName(position: number, name: string){\n const nameInput = this.formPageNametxt.nth(position);\n await expect(nameInput).toBeVisible();\n await nameInput.fill(name);\n }\n\n async fillFormGroupName(position: number, name: string){\n const groupInput = this.formGroupNameTxt.nth(position);\n await expect(groupInput).toBeVisible();\n await groupInput.fill(name);\n }\n\n async fillFormFieldName(name: string){\n await this.formEditFieldModal.locator(this.formFieldNameTxt).fill(name);\n }\n\n async clickAddNewPageButton(){\n await this.formAddNewPageBtn.click();\n }\n\n async clickAddNewGroupButton(){\n await this.formAddNewGroupBtn.click();\n }\n\n async clickAddQuestionButton(index: number = 0){\n const button = this.formPage.nth(index).locator(this.formAddQuestionBtn);\n await button.click();\n }\n\n async chooseFormFieldType(type: string){\n await this.formFieldType.filter({hasText: type}).nth(0).click();\n }\n\n async clickExpandFormsTreeButton(){\n await this.formExpandBtn.click();\n }\n\n async doesFormTreeHaveFormName(name: string) {\n await expect(this.formTree).toContainText(name);\n }\n\n async goToFormWithName(name: string) {\n await this.formTree.getByText(name, {exact: true}).click();\n }\n\n async clickFormFieldTypeSubmitModal() {\n await this.formSubmitButtonModal.click();\n }\n\n async clickActionMenuOnFormMenuItem(name: string){\n await this.formMenuItem.locator('[label=\"' + name + '\"] uui-button[label=\"Open actions menu\"]').click();\n }\n\n async clickDeleteFormButton(){\n await this.formActionModal.locator(this.formDeleteThreeDotBtn).click();\n await this.deleteExactBtn.click();\n }\n\n async goToFormSetting(){\n await this.formWorkspaceEditor.locator(this.formSettingIcon).click();\n }\n\n async setFormStoreRecordsSetting(){\n await expect(this.formSettingStoreRecordBtn).toBeVisible();\n const toggle = this.formSettingStoreRecordBtn.locator(this.formToggleSlider);\n await expect(toggle).toBeVisible();\n await toggle.check();\n }\n\n async setFormCaptionsSetting(){\n await expect(this.formSettingCaptionsContainer).toBeVisible();\n for (let i = 0; i < 3; i++) {\n const captionInput = this.formSettingCaptions.locator(this.formInputTxt).nth(i);\n await expect(captionInput).toBeVisible();\n await captionInput.fill(\"Test Caption \" + (i + 1));\n }\n }\n\n async setFormStylingSetting(){\n await expect(this.formSettingStylingContainer).toBeVisible();\n const cssClassInput = this.formSettingStyling.locator(this.formInputTxt);\n await expect(cssClassInput).toBeVisible();\n await cssClassInput.fill(\"custom-css-class\");\n const disableDefaultStylesheetInput = this.formSettingStyling.locator(this.formToggleSlider);\n await expect(disableDefaultStylesheetInput).toBeVisible();\n await disableDefaultStylesheetInput.click();\n }\n\n async setFormValidationSetting(){\n await expect(this.formSettingValidationContainer).toBeVisible();\n const requiredErrorMessageInput = this.formSettingValidation.locator(this.formInputTxt).nth(0);\n await expect(requiredErrorMessageInput).toBeVisible();\n await requiredErrorMessageInput.fill(\"Required error message\");\n const invalidErrorMessageInput = this.formSettingValidation.locator(this.formInputTxt).nth(1);\n await expect(invalidErrorMessageInput).toBeVisible();\n await invalidErrorMessageInput.fill(\"Invalid error message\");\n\n const showValidationSummaryInput = this.formSettingValidation.locator(this.formToggleSlider).nth(0);\n await expect(showValidationSummaryInput).toBeVisible();\n await showValidationSummaryInput.click();\n const hideFieldValidationInput = this.formSettingValidation.locator(this.formToggleSlider).nth(1);\n await expect(hideFieldValidationInput).toBeVisible();\n await hideFieldValidationInput.click();\n\n const markMandatoryFieldRadioInput = this.formSettingValidation.locator(\"uui-radio[value = 'MarkMandatoryFields']\");\n await expect(markMandatoryFieldRadioInput).toBeVisible();\n await markMandatoryFieldRadioInput.click();\n\n const indicatorInput = this.formSettingValidation.locator(this.formInputTxt).nth(2);\n await expect(indicatorInput).toBeVisible();\n await indicatorInput.fill(\"+\");\n }\n\n async setFormAutocompleteSetting(){\n await expect(this.formSettingAutocompleteContainer).toBeVisible();\n const autocompleteAttributeRadioInput = this.formSettingAutocomplete.locator('uui-radio[value = \"On\"]');\n await expect(autocompleteAttributeRadioInput).toBeVisible();\n await autocompleteAttributeRadioInput.click();\n }\n\n async setFormModerationSetting(){\n await expect(this.formSettingModerationContainer).toBeVisible();\n const enablePostModerationAttributeToggleInput = this.formSettingModeration.locator(this.formToggleSlider);\n await expect(enablePostModerationAttributeToggleInput).toBeVisible();\n await enablePostModerationAttributeToggleInput.click();\n }\n\n async setFormFieldsDisplayedSetting(){\n await expect(this.formSettingFieldsDisplayedContainer).toBeVisible();\n const displayDefaultFieldsToggleInput = this.formSettingFieldsDisplayed.locator(this.formToggleSlider);\n await expect(displayDefaultFieldsToggleInput).toBeVisible();\n await displayDefaultFieldsToggleInput.click();\n await this.page.waitForTimeout(100); // short pause required here otherwise revealed elements are not found\n const displayFieldsSelect = this.formSettingFieldsDisplayed.locator(\"select\");\n await expect(displayFieldsSelect).toBeVisible();\n await displayFieldsSelect.selectOption({ value: '_system_state' });\n const displayFieldsAddButton = this.formSettingFieldsDisplayed.locator(\"button[id='button']\");\n await expect(displayFieldsAddButton).toBeVisible();\n await displayFieldsAddButton.click();\n }\n\n async setFormDataRetentionSetting(recordNumber: string){\n await expect(this.formSettingDataRetentionContainer).toBeVisible();\n const retainSubmittedRecordsToggleInput = this.formSettingDataRetention.locator(this.formToggleSlider).nth(0);\n await expect(retainSubmittedRecordsToggleInput).toBeVisible();\n await retainSubmittedRecordsToggleInput.click();\n await this.page.waitForTimeout(100); // short pause required here otherwise revealed elements are not found\n const retainSubmittedRecordsNumberInput = this.formSettingDataRetention.locator(this.formInputNumber).nth(0);\n await expect(retainSubmittedRecordsNumberInput).toBeVisible();\n await retainSubmittedRecordsNumberInput.fill(recordNumber);\n }\n\n async toggleFieldSetting(settingAlias: string) {\n const settingFieldLocator = this.page.locator('umb-property-layout[alias=\"' + settingAlias + '\"] #slider');\n await expect(settingFieldLocator).toBeVisible();\n await settingFieldLocator.click();\n }\n\n async applyFieldSettingViaTextInput(settingAlias: string, settingValue: string) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"] input');\n await settingFieldLocator.fill(settingValue);\n }\n\n async applyFieldSettingViaDropDown(settingAlias: string, settingValue: string) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"] select');\n await settingFieldLocator.selectOption({ value: settingValue });\n }\n\n async applyFieldSettingViaSlider(settingAlias: string) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"] #slider');\n await expect(settingFieldLocator).toBeVisible();\n await settingFieldLocator.click();\n }\n\n async applyFieldFileUploadSettings(settingAlias: string, allowedProvidedExtensions: Array<string>, allowedCustomExtensions: Array<string>, allowMultiple: boolean) {\n const settingFieldLocator = this.page.locator('umb-property-layout[alias=\"' + settingAlias + '\"]');\n for (var i = 0; i < allowedProvidedExtensions.length; i++) {\n const checkBoxLocator = settingFieldLocator.locator('uui-toggle', {hasText: allowedProvidedExtensions[i].toUpperCase()}).locator('#slider');\n await expect(checkBoxLocator).toBeVisible();\n await checkBoxLocator.click();\n }\n \n const addNewExtensionLocator = settingFieldLocator.locator('input[placeholder = \"Add new allowed file type\"]');\n await expect(addNewExtensionLocator).toBeVisible();\n const buttonLocator = settingFieldLocator.locator('form svg');\n await expect(buttonLocator).toBeVisible();\n for (var i = 0; i < allowedCustomExtensions.length; i++) {\n await addNewExtensionLocator.fill(allowedCustomExtensions[i]);\n await buttonLocator.click();\n }\n \n if (allowMultiple) {\n const alias = \"allowMultipleFileUploads\";\n const multipleUploadLocator = this.page.locator('umb-property-layout[alias=\"' + alias + '\"] #slider');\n await expect(multipleUploadLocator).toBeVisible();\n await multipleUploadLocator.click();\n }\n }\n\n async applyFieldPrevalues(settingAlias: string, prevalues: Array<any>) {\n const settingFieldLocator = this.page.locator('umb-property-layout[alias=\"' + settingAlias + '\"]');\n for (var i = 0; i < prevalues.length; i++) {\n const valueFieldLocator = settingFieldLocator.locator(\"input[placeholder = 'New value']\");\n await expect(valueFieldLocator).toBeVisible();\n await valueFieldLocator.fill(prevalues[i].value);\n \n const captionFieldLocator = settingFieldLocator.locator(\"input[placeholder = 'New caption']\");\n await expect(captionFieldLocator).toBeVisible();\n await captionFieldLocator.fill(prevalues[i].caption);\n \n const buttonLocator = settingFieldLocator.locator('uui-button[label=\"add\"]');\n await expect(buttonLocator).toBeVisible();\n await buttonLocator.click();\n }\n }\n\n async applyFieldSettingViaTextArea(settingAlias: string, settingValue: string) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"] textarea');\n await settingFieldLocator.fill(settingValue);\n }\n\n async applyFieldSettingViaRichTextInput(settingAlias: string, settingValue: string) {\n const richTextAreaTxt = this.page.locator('umb-property[alias=\"' + settingAlias + '\"] umb-property-editor-ui-tiptap').locator('#editor .tiptap');\n await expect(richTextAreaTxt).toBeVisible();\n await richTextAreaTxt.fill(settingValue);\n }\n\n async applyFieldSettingViaRange(settingAlias: string, settingValue: string) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"]');\n await settingFieldLocator.locator('input[type=\"range\"]').fill(settingValue);\n }\n\n async applyFieldSettingViaFieldMappingInput(settingAlias: string, settingValue: Array<any>) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"]');\n await expect(settingFieldLocator).toBeVisible();\n \n for (let i = 0; i < settingValue.length; i++) {\n const buttonLocator = settingFieldLocator.locator('uui-button[label=\"add\"]');\n await expect(buttonLocator).toBeVisible();\n await buttonLocator.click();\n \n const aliasInputLocator = settingFieldLocator.locator(\"input[placeholder = 'Alias']\").nth(i);\n await expect(aliasInputLocator).toBeVisible();\n await aliasInputLocator.fill(settingValue[i].alias);\n \n const staticValueInputLocator = settingFieldLocator.locator(\"input[placeholder = 'Static value']\").nth(i);\n await expect(staticValueInputLocator).toBeVisible();\n await staticValueInputLocator.fill(settingValue[i].staticValue);\n }\n }\n\n async applyFieldSettingViaDocumentMapper(settingAlias: string, settingValue: any) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"]');\n await expect(settingFieldLocator).toBeVisible();\n \n const selectLocator = settingFieldLocator.locator(\"forms-document-mapper-property-editor select\");\n await selectLocator.selectOption({ value : settingValue.doctype });\n \n const inputLocator = settingFieldLocator.locator('forms-document-mapper-property-editor input[type = \"text\"]');\n await expect(inputLocator.first()).toBeVisible();\n const inputLocatorCount = await inputLocator.count();\n for (let i = 0; i < inputLocatorCount; i++) {\n await expect(inputLocator.nth(i)).toBeVisible();\n await inputLocator.nth(i).fill(settingValue.nameStaticValue);\n }\n }\n\n async applyFieldSettingViaEmailTemplatePicker(settingAlias: string, settingValue: string) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"]');\n await expect(settingFieldLocator).toBeVisible();\n \n const buttonLocator = settingFieldLocator.locator(\"#caret-button\");\n await buttonLocator.click();\n \n const templateLocator = this.page.locator(\"#label-button\", {hasText: settingValue});\n await expect(templateLocator).toBeVisible();\n await templateLocator.click();\n }\n\n async applyFieldSettingViaStandardFieldMappingInput(settingAlias: string, settingValue: Array<any>) {\n const settingFieldLocator = this.page.locator('umb-property[alias=\"' + settingAlias + '\"]');\n await expect(settingFieldLocator).toBeVisible();\n \n for (let i = 0; i < settingValue.length; i++) {\n if (settingValue[i].include) {\n const includeButtonLocator = settingFieldLocator.locator('div[data-umb-standard-field-mapping-include=\"' + settingValue[i].alias + '\"] #slider');\n await includeButtonLocator.click();\n }\n \n const keyNameButtonLocator = settingFieldLocator.locator('div[data-umb-standard-field-mapping-key-name=\"' + settingValue[i].alias + '\"] input[type=\"text\"]');\n await keyNameButtonLocator.fill(settingValue[0].keyName);\n }\n }\n\n async setFieldMandatory(message: string) {\n await expect(this.formFieldMandatory).toBeVisible();\n await this.formFieldMandatory.locator(\"#slider\").click();\n await this.page.waitForTimeout(1000);\n const inputLocator = this.formFieldMandatory.locator(this.formInputTxt);\n await expect(inputLocator).toBeVisible();\n await inputLocator.fill(message);\n }\n \n async setFieldValidation(label: string, message: string) {\n await expect(this.formFieldRegex).toBeVisible();\n const selectLocator = this.formFieldRegex.locator(\"select\");\n await selectLocator.selectOption({ label: label });\n await this.page.waitForTimeout(1000);\n const inputLocator = this.formFieldRegex.locator(\"input\");\n await expect(inputLocator).toBeVisible();\n await inputLocator.fill(message);\n }\n\n async clickFormWorkflowConfigureButton(){\n await this.formWorkflowConfigureBtn.click();\n }\n\n async clickFormWorkflowEditSubmitButton() {\n await this.formEditWorkflowModal.locator(this.formSubmitButtonModal).click();\n }\n\n async clickFormWorkflowConfigureSubmitButton() {\n await this.formConfigureWorkflowModal.locator(this.formSubmitButtonModal).click();\n }\n\n async clickFormWorkflowAddButton(){\n await this.formWorkflowOnSubmitStage.locator(this.formWorkflowAddButtonModal).click({force: true});\n }\n\n async selectWorkflowType(workflowType: string){\n this.page.locator('umb-ref-item[title=\"' + workflowType + '\"]').click();\n }\n\n async fillWorkflowName(workflowName: string) {\n await expect(this.formWorkflowNameTxt).toBeVisible();\n await this.formWorkflowNameTxt.fill(workflowName);\n }\n\n /*\n * Methods for Prevalue Source.\n */\n\n async clickQuickCreatePrevalueSourceButton() {\n await expect(this.formMenuItemForPrevalueSource).toBeVisible();\n await this.formMenuItemForPrevalueSource.hover();\n await this.formMenuItemForPrevalueSource.locator(this.quickCreateNewBtn).click();\n }\n\n async clickPrevalueSourceTypeButton(type: string) {\n const button = this.createNewPrevaluesourceModalBtn.locator(\"#name\", {hasText: type});\n await expect(button).toBeVisible();\n await button.click();\n }\n\n async clickExpandPrevalueSourceTreeButton(){\n await this.prevalueSourceExpandBtn.click();\n }\n\n async goToPrevalueSourceWithName(name: string) {\n await this.prevalueSourceTree.locator('uui-menu-item[label=\"' + name + '\"]').click();\n }\n\n async clickDeletePrevalueSourceButton(name: string){\n const prevalueSource = await this.prevalueSourceTree.locator('uui-menu-item[label=\"' + name + '\"]');\n await prevalueSource.locator(this.prevalueSourceDeleteBtn).click();\n await this.deleteExactBtn.click();\n }\n\n async applyCacheOptions(option: string, timeValue: number = 0, timeUnit: string = \"\") {\n await expect(this.prevalueSourceCacheContainer).toBeVisible();\n const optionSelect = this.prevalueSourceCacheContainer.locator('uui-radio[value = \"' + option + '\"]');\n await expect(optionSelect).toBeVisible();\n await optionSelect.click();\n \n if (option === \"time\") {\n const numberInput = this.prevalueSourceCacheContainer.locator(\"input[type='number']\");\n await expect(numberInput).toBeVisible();\n await numberInput.fill(timeValue.toString());\n \n const unitSelect = this.prevalueSourceCacheContainer.locator(\"select\");\n await expect(unitSelect).toBeVisible();\n await unitSelect.selectOption({ value: timeUnit });\n }\n }\n\n async applyPrevalueSourceSettingViaNodeSelector(labelText: string, settingValue: string) {\n const container = this.page.locator('umb-property[alias=\"' + labelText + '\"]');\n await expect(container).toBeVisible();\n const rootNode = container.locator('uui-button[label=\"Specify root node\"]');\n await expect(rootNode).toBeVisible();\n await rootNode.click();\n await expect(this.prevalueSourceOriginModal).toBeVisible();\n const value = this.prevalueSourceOriginModal.locator('umb-ref-item[name=\"' + settingValue + '\"]');\n await expect(value).toBeVisible();\n await value.click();\n }\n\n async checkPrevalueSourceTypeLabel(){\n await expect(this.prevalueSourceTypeLabel).toBeVisible();\n }\n}"]}