@umbraco/playwright-testhelpers 15.0.9 → 15.0.12

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 (54) hide show
  1. package/dist/lib/helpers/ContentUiHelper.d.ts +26 -5
  2. package/dist/lib/helpers/ContentUiHelper.js +118 -14
  3. package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
  4. package/dist/lib/helpers/DataTypeApiHelper.d.ts +9 -3
  5. package/dist/lib/helpers/DataTypeApiHelper.js +71 -4
  6. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  7. package/dist/lib/helpers/DataTypeUiHelper.d.ts +5 -2
  8. package/dist/lib/helpers/DataTypeUiHelper.js +113 -17
  9. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
  10. package/dist/lib/helpers/DictionaryUiHelper.js +2 -1
  11. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
  12. package/dist/lib/helpers/DocumentApiHelper.d.ts +2 -0
  13. package/dist/lib/helpers/DocumentApiHelper.js +58 -0
  14. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  15. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +1 -0
  16. package/dist/lib/helpers/DocumentTypeUiHelper.js +15 -7
  17. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
  18. package/dist/lib/helpers/LanguageUiHelper.js +2 -2
  19. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -1
  20. package/dist/lib/helpers/LogViewerUiHelper.js +1 -0
  21. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
  22. package/dist/lib/helpers/MediaApiHelper.js +15 -5
  23. package/dist/lib/helpers/MediaApiHelper.js.map +1 -1
  24. package/dist/lib/helpers/MediaUiHelper.js +2 -2
  25. package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
  26. package/dist/lib/helpers/MemberUiHelper.js +1 -1
  27. package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
  28. package/dist/lib/helpers/NotificationConstantHelper.js +1 -1
  29. package/dist/lib/helpers/NotificationConstantHelper.js.map +1 -1
  30. package/dist/lib/helpers/PartialViewUiHelper.js +5 -0
  31. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
  32. package/dist/lib/helpers/RedirectManagementApiHelper.d.ts +1 -0
  33. package/dist/lib/helpers/RedirectManagementApiHelper.js +7 -3
  34. package/dist/lib/helpers/RedirectManagementApiHelper.js.map +1 -1
  35. package/dist/lib/helpers/RedirectManagementUiHelper.d.ts +2 -0
  36. package/dist/lib/helpers/RedirectManagementUiHelper.js +5 -0
  37. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -1
  38. package/dist/lib/helpers/StylesheetUiHelper.js +1 -1
  39. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  40. package/dist/lib/helpers/TemplateUiHelper.js +2 -0
  41. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  42. package/dist/lib/helpers/UiBaseLocators.d.ts +9 -0
  43. package/dist/lib/helpers/UiBaseLocators.js +65 -7
  44. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  45. package/dist/lib/helpers/UserApiHelper.d.ts +1 -1
  46. package/dist/lib/helpers/UserApiHelper.js +2 -1
  47. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  48. package/dist/lib/helpers/UserGroupUiHelper.js +17 -3
  49. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
  50. package/dist/lib/helpers/UserUiHelper.d.ts +2 -0
  51. package/dist/lib/helpers/UserUiHelper.js +5 -0
  52. package/dist/lib/helpers/UserUiHelper.js.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +2 -2
@@ -105,11 +105,21 @@ export declare class ContentUiHelper extends UiBaseLocators {
105
105
  private readonly actionsMenu;
106
106
  private readonly linkToDocumentBtn;
107
107
  private readonly linkToMediaBtn;
108
+ private readonly linkToManualBtn;
108
109
  private readonly umbDocumentCollection;
109
110
  private readonly documentTableColumnName;
111
+ private readonly addBlockElementBtn;
112
+ private readonly formValidationMessage;
113
+ private readonly blockName;
114
+ private readonly addBlockSettingsTabBtn;
115
+ private readonly editBlockEntryBtn;
116
+ private readonly deleteBlockEntryBtn;
117
+ private readonly blockGridEntry;
118
+ private readonly blockListEntry;
110
119
  private readonly tipTapPropertyEditor;
111
120
  private readonly tipTapEditor;
112
121
  private readonly uploadedSvgThumbnail;
122
+ private readonly linkPickerModal;
113
123
  constructor(page: Page);
114
124
  enterContentName(name: string): Promise<void>;
115
125
  clickSaveAndPublishButton(): Promise<void>;
@@ -180,9 +190,9 @@ export declare class ContentUiHelper extends UiBaseLocators {
180
190
  removeTagByName(tagName: string): Promise<void>;
181
191
  clickAddMultiURLPickerButton(): Promise<void>;
182
192
  selectLinkByName(linkName: string): Promise<void>;
183
- enterLink(value: string): Promise<void>;
184
- enterAnchorOrQuerystring(value: string): Promise<void>;
185
- enterLinkTitle(value: string): Promise<void>;
193
+ enterLink(value: string, toPress?: boolean): Promise<void>;
194
+ enterAnchorOrQuerystring(value: string, toPress?: boolean): Promise<void>;
195
+ enterLinkTitle(value: string, toPress?: boolean): Promise<void>;
186
196
  removeUrlPickerByName(linkName: string): Promise<void>;
187
197
  clickEditUrlPickerButtonByName(linkName: string): Promise<void>;
188
198
  clickRemoveFilesButton(): Promise<void>;
@@ -254,8 +264,19 @@ export declare class ContentUiHelper extends UiBaseLocators {
254
264
  doesIndexDocumentInTreeContainName(parentName: string, childName: string, index: number): Promise<void>;
255
265
  selectMemberGroup(memberGroupName: string): Promise<void>;
256
266
  isPermissionInActionsMenuVisible(permissionName: string, isVisible?: boolean): Promise<void>;
257
- clickLinkToDocumentButton(): Promise<void>;
258
- clickLinkToMediaButton(): Promise<void>;
267
+ clickDocumentLinkButton(): Promise<void>;
268
+ clickMediaLinkButton(): Promise<void>;
269
+ clickManualLinkButton(): Promise<void>;
270
+ clickAddBlockElementButton(): Promise<void>;
271
+ isAddBlockElementButtonVisible(isVisible?: boolean): Promise<void>;
272
+ isAddBlockElementButtonWithLabelVisible(label: string, isVisible?: boolean): Promise<void>;
273
+ doesFormValidationMessageContainText(text: string): Promise<void>;
274
+ doesBlockElementHaveName(name: string): Promise<void>;
275
+ clickAddBlockSettingsTabButton(): Promise<void>;
276
+ clickEditBlockGridBlockButton(): Promise<void>;
277
+ clickDeleteBlockGridBlockButton(): Promise<void>;
278
+ clickEditBlockListBlockButton(): Promise<void>;
279
+ clickDeleteBlockListBlockButton(): Promise<void>;
259
280
  enterRTETipTapEditor(value: string): Promise<void>;
260
281
  clickTipTapToolbarIconWithTitle(iconTitle: string): Promise<void>;
261
282
  doesUploadedSvgThumbnailHaveSrc(imageSrc: string): Promise<void>;
@@ -108,13 +108,24 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
108
108
  actionsMenu;
109
109
  linkToDocumentBtn;
110
110
  linkToMediaBtn;
111
+ linkToManualBtn;
111
112
  umbDocumentCollection;
112
113
  documentTableColumnName;
114
+ addBlockElementBtn;
115
+ formValidationMessage;
116
+ blockName;
117
+ addBlockSettingsTabBtn;
118
+ editBlockEntryBtn;
119
+ deleteBlockEntryBtn;
120
+ blockGridEntry;
121
+ blockListEntry;
113
122
  tipTapPropertyEditor;
114
123
  tipTapEditor;
115
124
  uploadedSvgThumbnail;
125
+ linkPickerModal;
116
126
  constructor(page) {
117
127
  super(page);
128
+ this.linkPickerModal = page.locator('umb-link-picker-modal');
118
129
  this.contentNameTxt = page.locator('#name-input input');
119
130
  this.saveAndPublishBtn = page.getByLabel('Save And Publish');
120
131
  this.publishBtn = page.getByLabel(/^Publish(\.\.\.)?$/);
@@ -136,9 +147,9 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
136
147
  this.chooseMemberPickerBtn = page.locator('umb-property-editor-ui-member-picker #btn-add');
137
148
  this.numericTxt = page.locator('umb-property-editor-ui-number input');
138
149
  this.addMultiURLPickerBtn = page.locator('umb-property-editor-ui-multi-url-picker #btn-add');
139
- this.linkTxt = page.getByLabel('URL', { exact: true });
150
+ this.linkTxt = page.getByLabel('Enter a URL...', { exact: true });
140
151
  this.anchorQuerystringTxt = page.getByLabel('#value or ?key=value');
141
- this.linkTitleTxt = page.getByLabel('Link title');
152
+ this.linkTitleTxt = this.linkPickerModal.getByLabel('Title');
142
153
  this.tagItems = page.locator('uui-tag');
143
154
  this.removeFilesBtn = page.locator('umb-input-upload-field [label="Remove file(s)"]');
144
155
  this.toggleBtn = page.locator('umb-property-editor-ui-toggle #slider');
@@ -220,10 +231,20 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
220
231
  this.rollbackItem = page.locator('.rollback-item');
221
232
  this.expandChildItemsForContent = page.getByLabel('Expand child items for Content');
222
233
  this.actionsMenu = page.locator('uui-scroll-container');
223
- this.linkToDocumentBtn = page.getByLabel('Link to document');
224
- this.linkToMediaBtn = page.getByLabel('Link to media');
234
+ this.linkToDocumentBtn = this.linkPickerModal.getByLabel('Document', { exact: true });
235
+ this.linkToMediaBtn = this.linkPickerModal.getByLabel('Media', { exact: true });
236
+ this.linkToManualBtn = this.linkPickerModal.getByLabel('Manual', { exact: true });
225
237
  this.umbDocumentCollection = page.locator('umb-document-collection');
226
238
  this.documentTableColumnName = this.listView.locator('umb-document-table-column-name');
239
+ //Block Grid - Block List
240
+ this.addBlockElementBtn = page.locator('uui-button-group uui-button').first();
241
+ this.formValidationMessage = page.locator('#splitViews umb-form-validation-message #messages');
242
+ this.blockName = page.locator('#editor [slot="name"]');
243
+ this.addBlockSettingsTabBtn = page.locator('umb-body-layout').getByRole('tab', { name: 'Settings' });
244
+ this.editBlockEntryBtn = page.locator('[label="edit"] svg');
245
+ this.deleteBlockEntryBtn = page.locator('[label="delete"] svg');
246
+ this.blockGridEntry = page.locator('umb-block-grid-entry');
247
+ this.blockListEntry = page.locator('umb-block-list-entry');
227
248
  // TipTap
228
249
  this.tipTapPropertyEditor = page.locator('umb-property-editor-ui-tiptap');
229
250
  this.tipTapEditor = this.tipTapPropertyEditor.locator('#editor .tiptap');
@@ -262,6 +283,7 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
262
283
  await this.clickActionsMenuForName(name);
263
284
  }
264
285
  async clickCaretButtonForContentName(name) {
286
+ await (0, test_1.expect)(this.menuItemTree.filter({ hasText: name }).last().locator('#caret-button').last()).toBeVisible();
265
287
  await this.menuItemTree.filter({ hasText: name }).last().locator('#caret-button').last().click();
266
288
  }
267
289
  async waitForModalVisible() {
@@ -341,6 +363,7 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
341
363
  await this.clickChooseModalButton();
342
364
  }
343
365
  async isTemplateNameDisabled(templateName) {
366
+ await (0, test_1.expect)(this.sidebarModal.getByLabel(templateName)).toBeVisible();
344
367
  await (0, test_1.expect)(this.sidebarModal.getByLabel(templateName)).toBeDisabled();
345
368
  }
346
369
  // Culture and Hostnames
@@ -348,14 +371,17 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
348
371
  await this.cultureAndHostnamesBtn.click();
349
372
  }
350
373
  async selectCultureLanguageOption(option) {
374
+ await (0, test_1.expect)(this.cultureLanguageDropdownBox).toBeVisible();
351
375
  await this.cultureLanguageDropdownBox.click();
352
- await this.page.getByText(option).click();
376
+ await (0, test_1.expect)(this.page.getByText(option, { exact: true })).toBeVisible();
377
+ await this.page.getByText(option, { exact: true }).click();
353
378
  }
354
379
  async selectDomainLanguageOption(option, index = 0) {
355
380
  await this.domainLanguageDropdownBox.nth(index).click();
356
381
  await this.domainComboBox.nth(index).getByText(option).click();
357
382
  }
358
383
  async clickAddNewDomainButton() {
384
+ await (0, test_1.expect)(this.addNewDomainBtn).toBeVisible();
359
385
  await this.addNewDomainBtn.click();
360
386
  }
361
387
  async enterDomain(value, index = 0) {
@@ -492,17 +518,32 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
492
518
  async selectLinkByName(linkName) {
493
519
  await this.sidebarModal.getByText(linkName, { exact: true }).click();
494
520
  }
495
- async enterLink(value) {
521
+ async enterLink(value, toPress = false) {
496
522
  await this.linkTxt.clear();
497
- await this.linkTxt.fill(value);
523
+ if (toPress) {
524
+ await this.linkTxt.press(value);
525
+ }
526
+ else {
527
+ await this.linkTxt.fill(value);
528
+ }
498
529
  }
499
- async enterAnchorOrQuerystring(value) {
530
+ async enterAnchorOrQuerystring(value, toPress = false) {
500
531
  await this.anchorQuerystringTxt.clear();
501
- await this.anchorQuerystringTxt.fill(value);
532
+ if (toPress) {
533
+ await this.anchorQuerystringTxt.press(value);
534
+ }
535
+ else {
536
+ await this.anchorQuerystringTxt.fill(value);
537
+ }
502
538
  }
503
- async enterLinkTitle(value) {
539
+ async enterLinkTitle(value, toPress = false) {
504
540
  await this.linkTitleTxt.clear();
505
- await this.linkTitleTxt.fill(value);
541
+ if (toPress) {
542
+ await this.linkTitleTxt.press(value);
543
+ }
544
+ else {
545
+ await this.linkTitleTxt.fill(value);
546
+ }
506
547
  }
507
548
  async removeUrlPickerByName(linkName) {
508
549
  await this.page.locator('[name="' + linkName + '"]').getByLabel('Remove').click();
@@ -562,6 +603,7 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
562
603
  return (0, test_1.expect)(this.enterAName).toHaveValue(name);
563
604
  }
564
605
  async doesDocumentTableColumnNameValuesMatch(expectedValues) {
606
+ await (0, test_1.expect)(this.documentListView).toBeVisible();
565
607
  return expectedValues.forEach((text, index) => {
566
608
  (0, test_1.expect)(this.documentTableColumnName.nth(index)).toHaveText(text);
567
609
  });
@@ -737,21 +779,27 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
737
779
  await this.contentTreeRefreshBtn.click({ force: true });
738
780
  }
739
781
  async clickSortChildrenButton() {
782
+ await (0, test_1.expect)(this.sortChildrenBtn).toBeVisible();
740
783
  await this.sortChildrenBtn.click();
741
784
  }
742
785
  async clickRollbackButton() {
786
+ await (0, test_1.expect)(this.rollbackBtn).toBeVisible();
743
787
  await this.rollbackBtn.click();
744
788
  }
745
789
  async clickRollbackContainerButton() {
790
+ await (0, test_1.expect)(this.rollbackContainerBtn).toBeVisible();
746
791
  await this.rollbackContainerBtn.click();
747
792
  }
748
793
  async clickLatestRollBackItem() {
794
+ await (0, test_1.expect)(this.rollbackItem.last()).toBeVisible();
749
795
  await this.rollbackItem.last().click();
750
796
  }
751
797
  async clickPublicAccessButton() {
798
+ await (0, test_1.expect)(this.publicAccessBtn).toBeVisible();
752
799
  await this.publicAccessBtn.click();
753
800
  }
754
801
  async addGroupBasedPublicAccess(memberGroupName, documentName) {
802
+ await (0, test_1.expect)(this.groupBasedProtectionBtn).toBeVisible();
755
803
  await this.groupBasedProtectionBtn.click();
756
804
  await this.nextBtn.click();
757
805
  await this.chooseMemberGroupBtn.click();
@@ -783,12 +831,14 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
783
831
  await this.page.mouse.up();
784
832
  }
785
833
  async clickSortButton() {
834
+ await (0, test_1.expect)(this.sortBtn).toBeVisible();
786
835
  await this.sortBtn.click();
787
836
  }
788
837
  async doesIndexDocumentInTreeContainName(parentName, childName, index) {
789
838
  await (0, test_1.expect)(this.documentTreeItem.locator('[label="' + parentName + '"]').locator('umb-tree-item').nth(index).locator('#label')).toHaveText(childName);
790
839
  }
791
840
  async selectMemberGroup(memberGroupName) {
841
+ await (0, test_1.expect)(this.uuiCheckbox.getByLabel(memberGroupName)).toBeVisible();
792
842
  await this.uuiCheckbox.getByLabel(memberGroupName).click();
793
843
  }
794
844
  async isPermissionInActionsMenuVisible(permissionName, isVisible = true) {
@@ -797,21 +847,75 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
797
847
  exact: true
798
848
  })).toBeVisible({ visible: isVisible });
799
849
  }
800
- async clickLinkToDocumentButton() {
850
+ async clickDocumentLinkButton() {
851
+ await (0, test_1.expect)(this.linkToDocumentBtn).toBeVisible();
801
852
  await this.linkToDocumentBtn.click();
802
853
  }
803
- async clickLinkToMediaButton() {
854
+ async clickMediaLinkButton() {
855
+ await (0, test_1.expect)(this.linkToMediaBtn).toBeVisible();
804
856
  await this.linkToMediaBtn.click();
805
857
  }
858
+ async clickManualLinkButton() {
859
+ await (0, test_1.expect)(this.linkToManualBtn).toBeVisible();
860
+ await this.linkToManualBtn.click();
861
+ }
862
+ // Block Grid - Block List
863
+ async clickAddBlockElementButton() {
864
+ await (0, test_1.expect)(this.addBlockElementBtn).toBeVisible();
865
+ await this.addBlockElementBtn.click();
866
+ }
867
+ async isAddBlockElementButtonVisible(isVisible = true) {
868
+ await (0, test_1.expect)(this.addBlockElementBtn).toBeVisible({ visible: isVisible });
869
+ }
870
+ async isAddBlockElementButtonWithLabelVisible(label, isVisible = true) {
871
+ await (0, test_1.expect)(this.addBlockElementBtn.getByLabel(label)).toBeVisible({ visible: isVisible });
872
+ }
873
+ async doesFormValidationMessageContainText(text) {
874
+ await (0, test_1.expect)(this.formValidationMessage).toContainText(text);
875
+ }
876
+ async doesBlockElementHaveName(name) {
877
+ await (0, test_1.expect)(this.blockName).toContainText(name);
878
+ }
879
+ async clickAddBlockSettingsTabButton() {
880
+ await (0, test_1.expect)(this.addBlockSettingsTabBtn).toBeVisible();
881
+ await this.addBlockSettingsTabBtn.click();
882
+ }
883
+ async clickEditBlockGridBlockButton() {
884
+ await (0, test_1.expect)(this.blockGridEntry).toBeVisible();
885
+ await this.blockGridEntry.hover();
886
+ await (0, test_1.expect)(this.editBlockEntryBtn).toBeVisible();
887
+ await this.editBlockEntryBtn.click();
888
+ }
889
+ async clickDeleteBlockGridBlockButton() {
890
+ await (0, test_1.expect)(this.blockGridEntry).toBeVisible();
891
+ await this.blockGridEntry.hover();
892
+ await (0, test_1.expect)(this.deleteBlockEntryBtn).toBeVisible();
893
+ await this.deleteBlockEntryBtn.click();
894
+ }
895
+ async clickEditBlockListBlockButton() {
896
+ await (0, test_1.expect)(this.blockListEntry).toBeVisible();
897
+ await this.blockListEntry.hover();
898
+ await (0, test_1.expect)(this.editBlockEntryBtn).toBeVisible();
899
+ await this.editBlockEntryBtn.click();
900
+ }
901
+ async clickDeleteBlockListBlockButton() {
902
+ await (0, test_1.expect)(this.blockListEntry).toBeVisible();
903
+ await this.blockListEntry.hover();
904
+ await (0, test_1.expect)(this.deleteBlockEntryBtn).toBeVisible();
905
+ await this.deleteBlockEntryBtn.click();
906
+ }
806
907
  // TipTap
807
908
  async enterRTETipTapEditor(value) {
909
+ await (0, test_1.expect)(this.tipTapEditor).toBeVisible();
808
910
  await this.tipTapEditor.clear();
809
911
  await this.tipTapEditor.fill(value);
810
912
  }
811
913
  async clickTipTapToolbarIconWithTitle(iconTitle) {
812
- await this.tipTapPropertyEditor.getByTitle(iconTitle).locator('svg').click();
914
+ await (0, test_1.expect)(this.tipTapPropertyEditor.getByTitle(iconTitle, { exact: true }).locator('svg')).toBeVisible();
915
+ await this.tipTapPropertyEditor.getByTitle(iconTitle, { exact: true }).locator('svg').click();
813
916
  }
814
917
  async doesUploadedSvgThumbnailHaveSrc(imageSrc) {
918
+ await (0, test_1.expect)(this.uploadedSvgThumbnail).toBeVisible();
815
919
  await (0, test_1.expect)(this.uploadedSvgThumbnail).toHaveAttribute('src', imageSrc);
816
920
  }
817
921
  }