@umbraco/playwright-testhelpers 17.1.0-beta.3 → 17.1.0-beta.5

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 (69) hide show
  1. package/dist/lib/helpers/BasePage.d.ts +4 -2
  2. package/dist/lib/helpers/BasePage.js +7 -3
  3. package/dist/lib/helpers/BasePage.js.map +1 -1
  4. package/dist/lib/helpers/ConstantHelper.d.ts +1 -0
  5. package/dist/lib/helpers/ConstantHelper.js +2 -1
  6. package/dist/lib/helpers/ConstantHelper.js.map +1 -1
  7. package/dist/lib/helpers/ContentUiHelper.d.ts +13 -0
  8. package/dist/lib/helpers/ContentUiHelper.js +49 -2
  9. package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
  10. package/dist/lib/helpers/DataTypeUiHelper.js +4 -4
  11. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
  12. package/dist/lib/helpers/DictionaryUiHelper.js +1 -2
  13. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
  14. package/dist/lib/helpers/DocumentApiHelper.d.ts +4 -4
  15. package/dist/lib/helpers/DocumentApiHelper.js +32 -8
  16. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  17. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +1 -2
  18. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -1
  19. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +5 -0
  20. package/dist/lib/helpers/DocumentTypeApiHelper.js +35 -0
  21. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -1
  22. package/dist/lib/helpers/DocumentTypeUiHelper.js +2 -2
  23. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
  24. package/dist/lib/helpers/ExamineManagementUiHelper.js +2 -3
  25. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -1
  26. package/dist/lib/helpers/FormsUiHelper.js +1 -2
  27. package/dist/lib/helpers/FormsUiHelper.js.map +1 -1
  28. package/dist/lib/helpers/HealthCheckUiHelper.js +4 -4
  29. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -1
  30. package/dist/lib/helpers/LanguageUiHelper.js +1 -2
  31. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -1
  32. package/dist/lib/helpers/LogViewerUiHelper.js +2 -2
  33. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
  34. package/dist/lib/helpers/LoginUiHelper.js +1 -2
  35. package/dist/lib/helpers/LoginUiHelper.js.map +1 -1
  36. package/dist/lib/helpers/MediaUiHelper.js +2 -2
  37. package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
  38. package/dist/lib/helpers/MemberGroupUiHelper.js +2 -2
  39. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -1
  40. package/dist/lib/helpers/MemberUiHelper.js +1 -1
  41. package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
  42. package/dist/lib/helpers/PackageUiHelper.js +1 -2
  43. package/dist/lib/helpers/PackageUiHelper.js.map +1 -1
  44. package/dist/lib/helpers/PartialViewUiHelper.js +1 -2
  45. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
  46. package/dist/lib/helpers/ProfilingUiHelper.js +1 -1
  47. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -1
  48. package/dist/lib/helpers/PublishedStatusUiHelper.js +1 -2
  49. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -1
  50. package/dist/lib/helpers/RelationTypeUiHelper.js +1 -2
  51. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -1
  52. package/dist/lib/helpers/ScriptUiHelper.js +1 -2
  53. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
  54. package/dist/lib/helpers/StylesheetUiHelper.js +1 -2
  55. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  56. package/dist/lib/helpers/TemplateApiHelper.d.ts +2 -0
  57. package/dist/lib/helpers/TemplateApiHelper.js +36 -0
  58. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  59. package/dist/lib/helpers/TemplateUiHelper.js +3 -4
  60. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  61. package/dist/lib/helpers/UiBaseLocators.d.ts +1 -0
  62. package/dist/lib/helpers/UiBaseLocators.js +25 -17
  63. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  64. package/dist/lib/helpers/UserGroupUiHelper.js +5 -5
  65. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
  66. package/dist/lib/helpers/UserUiHelper.js +3 -3
  67. package/dist/lib/helpers/UserUiHelper.js.map +1 -1
  68. package/dist/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +1 -1
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemplateUiHelper = void 0;
4
- const test_1 = require("@playwright/test");
5
4
  const UiBaseLocators_1 = require("./UiBaseLocators");
6
5
  const ConstantHelper_1 = require("./ConstantHelper");
7
6
  class TemplateUiHelper extends UiBaseLocators_1.UiBaseLocators {
@@ -65,7 +64,7 @@ class TemplateUiHelper extends UiBaseLocators_1.UiBaseLocators {
65
64
  await this.enterMonacoEditorValue(templateContent);
66
65
  }
67
66
  async isMasterTemplateNameVisible(templateName, isVisible = true) {
68
- await (0, test_1.expect)(this.page.getByLabel(`Master template: ${templateName}`)).toBeVisible({ visible: isVisible });
67
+ await this.isVisible(this.page.getByLabel(`Master template: ${templateName}`), isVisible);
69
68
  }
70
69
  async clickRemoveMasterTemplateButton() {
71
70
  await this.click(this.removeMasterTemplateBtn);
@@ -81,7 +80,7 @@ class TemplateUiHelper extends UiBaseLocators_1.UiBaseLocators {
81
80
  await this.clickSubmitButton();
82
81
  }
83
82
  async isTemplateTreeItemVisible(templateName, isVisible = true) {
84
- return (0, test_1.expect)(this.templateTree.getByText(templateName, { exact: true })).toBeVisible({ visible: isVisible });
83
+ await this.isVisible(this.templateTree.getByText(templateName, { exact: true }), isVisible);
85
84
  }
86
85
  async reloadTemplateTree() {
87
86
  await this.reloadTree('Templates');
@@ -90,7 +89,7 @@ class TemplateUiHelper extends UiBaseLocators_1.UiBaseLocators {
90
89
  if (toReload) {
91
90
  await this.reloadTemplateTree();
92
91
  }
93
- return (0, test_1.expect)(this.templateTree.getByText(templateName, { exact: true })).toBeVisible({ visible: isVisible });
92
+ await this.isVisible(this.templateTree.getByText(templateName, { exact: true }), isVisible);
94
93
  }
95
94
  }
96
95
  exports.TemplateUiHelper = TemplateUiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/TemplateUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\nimport {ConstantHelper} from \"./ConstantHelper\";\n\nexport class TemplateUiHelper extends UiBaseLocators {\n private readonly changeMasterTemplateBtn: Locator;\n private readonly sectionsBtn: Locator;\n private readonly removeMasterTemplateBtn: Locator;\n private readonly sectionNameTxt: Locator;\n private readonly templateTree: Locator;\n\n constructor(page: Page) {\n super(page);\n this.changeMasterTemplateBtn = page.locator('#master-template-button');\n this.sectionsBtn = page.locator('#sections-button', {hasText: 'Sections'});\n this.removeMasterTemplateBtn = page.locator('[name=\"icon-delete\"] svg');\n this.sectionNameTxt = page.getByLabel('Section Name');\n this.templateTree = page.locator('umb-tree[alias=\"Umb.Tree.Template\"]');\n }\n\n async clickActionsMenuForTemplate(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForTemplate('Templates');\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName('Templates');\n }\n\n async waitForTemplateToBeCreated() {\n await this.waitForLoadState();\n }\n\n async waitForTemplateToBeDeleted() {\n await this.waitForLoadState();\n }\n\n async waitForTemplateToBeRenamed() {\n await this.waitForLoadState();\n }\n\n async goToTemplate(templateName: string, childTemplateName: string = '') {\n await this.goToSection(ConstantHelper.sections.settings);\n await this.reloadTemplateTree();\n if (childTemplateName === '') {\n await this.click(this.page.getByLabel(templateName, {exact: true}));\n await this.hasValue(this.enterAName, templateName);\n } else {\n await this.openCaretButtonForName(templateName);\n await this.click(this.page.getByLabel(childTemplateName, {exact: true}));\n await this.hasValue(this.enterAName, childTemplateName);\n }\n await this.page.waitForTimeout(ConstantHelper.wait.medium);\n }\n\n async clickSectionsButton() {\n await this.click(this.sectionsBtn);\n }\n\n async clickChangeMasterTemplateButton() {\n await this.click(this.changeMasterTemplateBtn);\n }\n\n async enterTemplateName(templateName: string) {\n await this.enterText(this.enterAName, templateName);\n }\n\n async enterTemplateContent(templateContent: string) {\n // We need this wait, to be sure that the template content is loaded.\n await this.page.waitForTimeout(ConstantHelper.wait.minimal);\n await this.enterMonacoEditorValue(templateContent);\n }\n\n async isMasterTemplateNameVisible(templateName: string, isVisible: boolean = true) {\n await expect(this.page.getByLabel(`Master template: ${templateName}`)).toBeVisible({visible: isVisible});\n }\n\n async clickRemoveMasterTemplateButton() {\n await this.click(this.removeMasterTemplateBtn);\n }\n\n async insertSection(sectionType: string, sectionName: string = '') {\n await this.clickSectionsButton();\n await this.waitForVisible(this.submitBtn);\n await this.click(this.page.locator(`[label=\"${sectionType}\"]`));\n if (sectionName !== '') {\n await this.waitForVisible(this.sectionNameTxt);\n await this.sectionNameTxt.fill(sectionName);\n }\n await this.clickSubmitButton();\n }\n\n async isTemplateTreeItemVisible(templateName: string, isVisible: boolean = true) {\n return expect(this.templateTree.getByText(templateName, {exact: true})).toBeVisible({visible: isVisible});\n }\n\n async reloadTemplateTree() {\n await this.reloadTree('Templates');\n }\n\n async isTemplateRootTreeItemVisible(templateName: string, isVisible: boolean = true, toReload: boolean = true) {\n if (toReload) {\n await this.reloadTemplateTree();\n }\n return expect(this.templateTree.getByText(templateName, {exact: true})).toBeVisible({visible: isVisible});\n }\n}"]}
1
+ {"version":3,"file":"TemplateUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/TemplateUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\nimport {ConstantHelper} from \"./ConstantHelper\";\n\nexport class TemplateUiHelper extends UiBaseLocators {\n private readonly changeMasterTemplateBtn: Locator;\n private readonly sectionsBtn: Locator;\n private readonly removeMasterTemplateBtn: Locator;\n private readonly sectionNameTxt: Locator;\n private readonly templateTree: Locator;\n\n constructor(page: Page) {\n super(page);\n this.changeMasterTemplateBtn = page.locator('#master-template-button');\n this.sectionsBtn = page.locator('#sections-button', {hasText: 'Sections'});\n this.removeMasterTemplateBtn = page.locator('[name=\"icon-delete\"] svg');\n this.sectionNameTxt = page.getByLabel('Section Name');\n this.templateTree = page.locator('umb-tree[alias=\"Umb.Tree.Template\"]');\n }\n\n async clickActionsMenuForTemplate(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForTemplate('Templates');\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName('Templates');\n }\n\n async waitForTemplateToBeCreated() {\n await this.waitForLoadState();\n }\n\n async waitForTemplateToBeDeleted() {\n await this.waitForLoadState();\n }\n\n async waitForTemplateToBeRenamed() {\n await this.waitForLoadState();\n }\n\n async goToTemplate(templateName: string, childTemplateName: string = '') {\n await this.goToSection(ConstantHelper.sections.settings);\n await this.reloadTemplateTree();\n if (childTemplateName === '') {\n await this.click(this.page.getByLabel(templateName, {exact: true}));\n await this.hasValue(this.enterAName, templateName);\n } else {\n await this.openCaretButtonForName(templateName);\n await this.click(this.page.getByLabel(childTemplateName, {exact: true}));\n await this.hasValue(this.enterAName, childTemplateName);\n }\n await this.page.waitForTimeout(ConstantHelper.wait.medium);\n }\n\n async clickSectionsButton() {\n await this.click(this.sectionsBtn);\n }\n\n async clickChangeMasterTemplateButton() {\n await this.click(this.changeMasterTemplateBtn);\n }\n\n async enterTemplateName(templateName: string) {\n await this.enterText(this.enterAName, templateName);\n }\n\n async enterTemplateContent(templateContent: string) {\n // We need this wait, to be sure that the template content is loaded.\n await this.page.waitForTimeout(ConstantHelper.wait.minimal);\n await this.enterMonacoEditorValue(templateContent);\n }\n\n async isMasterTemplateNameVisible(templateName: string, isVisible: boolean = true) {\n await this.isVisible(this.page.getByLabel(`Master template: ${templateName}`), isVisible);\n }\n\n async clickRemoveMasterTemplateButton() {\n await this.click(this.removeMasterTemplateBtn);\n }\n\n async insertSection(sectionType: string, sectionName: string = '') {\n await this.clickSectionsButton();\n await this.waitForVisible(this.submitBtn);\n await this.click(this.page.locator(`[label=\"${sectionType}\"]`));\n if (sectionName !== '') {\n await this.waitForVisible(this.sectionNameTxt);\n await this.sectionNameTxt.fill(sectionName);\n }\n await this.clickSubmitButton();\n }\n\n async isTemplateTreeItemVisible(templateName: string, isVisible: boolean = true) {\n await this.isVisible(this.templateTree.getByText(templateName, {exact: true}), isVisible);\n }\n\n async reloadTemplateTree() {\n await this.reloadTree('Templates');\n }\n\n async isTemplateRootTreeItemVisible(templateName: string, isVisible: boolean = true, toReload: boolean = true) {\n if (toReload) {\n await this.reloadTemplateTree();\n }\n await this.isVisible(this.templateTree.getByText(templateName, {exact: true}), isVisible);\n }\n}"]}
@@ -374,4 +374,5 @@ export declare class UiBaseLocators extends BasePage {
374
374
  isTextWithExactNameVisible(name: string, isVisible?: boolean): Promise<void>;
375
375
  isTextWithMessageVisible(message: string, isVisible?: boolean): Promise<void>;
376
376
  getTextLocatorWithName(name: string): Locator;
377
+ doesPropertyWithNameContainValidationMessage(propertyName: string, validationMessage: string, isContained?: boolean): Promise<void>;
377
378
  }
@@ -403,14 +403,14 @@ class UiBaseLocators extends BasePage_1.BasePage {
403
403
  }
404
404
  async clickActionsMenuForName(name) {
405
405
  const menuItem = this.getMenuItemByLabel(name);
406
- await this.page.waitForTimeout(ConstantHelper_1.ConstantHelper.wait.medium);
407
- await menuItem.locator('#menu-item').first().hover({ force: true });
408
- await this.click(menuItem.locator('#action-modal').first(), { force: true });
406
+ const menuItemFirstLocator = menuItem.locator('#menu-item').first();
407
+ const actionModalLocator = menuItem.locator('#action-modal').first();
408
+ await this.hoverAndClick(menuItemFirstLocator, actionModalLocator, { force: true, timeout: ConstantHelper_1.ConstantHelper.wait.medium });
409
409
  }
410
410
  async isActionsMenuForNameVisible(name, isVisible = true) {
411
411
  const menuItem = this.getMenuItemByLabel(name);
412
412
  await this.click(menuItem);
413
- await (0, test_1.expect)(menuItem.locator('#action-modal').first()).toBeVisible({ visible: isVisible });
413
+ await this.isVisible(menuItem.locator('#action-modal').first(), isVisible);
414
414
  }
415
415
  // Caret Button Methods
416
416
  async clickCaretButtonForName(name) {
@@ -418,7 +418,8 @@ class UiBaseLocators extends BasePage_1.BasePage {
418
418
  await this.click(this.getMenuItemByLabel(name).locator('#caret-button').first());
419
419
  }
420
420
  async isCaretButtonWithNameVisible(name, isVisible = true) {
421
- await (0, test_1.expect)(this.getMenuItemByLabel(name).locator('#caret-button').first()).toBeVisible({ visible: isVisible });
421
+ const caretButton = this.getMenuItemByLabel(name).locator('#caret-button').first();
422
+ await this.isVisible(caretButton, isVisible);
422
423
  }
423
424
  async clickCaretButton() {
424
425
  await this.click(this.caretBtn);
@@ -431,6 +432,7 @@ class UiBaseLocators extends BasePage_1.BasePage {
431
432
  else {
432
433
  menuItem = this.getMenuItemByLabel(name);
433
434
  }
435
+ await this.waitForVisible(menuItem, ConstantHelper_1.ConstantHelper.timeout.long);
434
436
  const isCaretButtonOpen = await menuItem.getAttribute('show-children');
435
437
  if (isCaretButtonOpen === null) {
436
438
  await this.clickCaretButtonForName(name);
@@ -598,7 +600,7 @@ class UiBaseLocators extends BasePage_1.BasePage {
598
600
  const regex = new RegExp(`^workspace-action:.*Save$`);
599
601
  const saveButtonLocator = this.page.getByTestId(regex);
600
602
  const saveBtn = this.workspaceAction.filter({ has: saveButtonLocator });
601
- await (0, test_1.expect)(saveBtn.locator(this.successState)).toBeVisible({ visible: isVisible, timeout: ConstantHelper_1.ConstantHelper.timeout.long });
603
+ await this.isVisible(saveBtn.locator(this.successState), isVisible, ConstantHelper_1.ConstantHelper.timeout.long);
602
604
  }
603
605
  async isSuccessButtonWithTextVisible(text) {
604
606
  return await this.isVisible(this.successState.filter({ hasText: text }));
@@ -611,26 +613,23 @@ class UiBaseLocators extends BasePage_1.BasePage {
611
613
  }
612
614
  // Notification Methods
613
615
  async isSuccessNotificationVisible(isVisible = true) {
614
- return await (0, test_1.expect)(this.successNotification.first()).toBeVisible({ visible: isVisible, timeout: ConstantHelper_1.ConstantHelper.timeout.long });
616
+ return await this.isVisible(this.successNotification.first(), isVisible, ConstantHelper_1.ConstantHelper.timeout.long);
615
617
  }
616
618
  async doesSuccessNotificationsHaveCount(count) {
617
619
  await this.hasCount(this.successNotification, count);
618
620
  }
619
621
  async doesSuccessNotificationHaveText(text, isVisible = true, deleteNotification = false, timeout = 5000) {
620
- const response = await (0, test_1.expect)(this.successNotification.filter({ hasText: text })).toBeVisible({
621
- visible: isVisible,
622
- timeout: timeout
623
- });
622
+ const response = await this.isVisible(this.successNotification.filter({ hasText: text }), isVisible, timeout);
624
623
  if (deleteNotification) {
625
624
  await this.click(this.successNotification.filter({ hasText: text }).getByLabel('close'), { force: true });
626
625
  }
627
626
  return response;
628
627
  }
629
628
  async isErrorNotificationVisible(isVisible = true) {
630
- return await (0, test_1.expect)(this.errorNotification.first()).toBeVisible({ visible: isVisible });
629
+ return await this.isVisible(this.errorNotification.first(), isVisible);
631
630
  }
632
631
  async doesErrorNotificationHaveText(text, isVisible = true, deleteNotification = false) {
633
- const response = await (0, test_1.expect)(this.errorNotification.filter({ hasText: text })).toBeVisible({ visible: isVisible });
632
+ const response = await this.isVisible(this.errorNotification.filter({ hasText: text }), isVisible);
634
633
  if (deleteNotification) {
635
634
  await this.click(this.errorNotification.filter({ hasText: text }).locator('svg'));
636
635
  }
@@ -644,7 +643,7 @@ class UiBaseLocators extends BasePage_1.BasePage {
644
643
  await this.click(this.createModalBtn);
645
644
  }
646
645
  async clickModalMenuItemWithName(name) {
647
- await this.click(this.openedModal.locator(`uui-menu-item[label="${name}"]`));
646
+ await this.click(this.openedModal.locator(`uui-menu-item[label="${name}"]`), { timeout: ConstantHelper_1.ConstantHelper.timeout.long });
648
647
  }
649
648
  async isModalMenuItemWithNameDisabled(name) {
650
649
  await this.hasAttribute(this.sidebarModal.locator(`uui-menu-item[label="${name}"]`), 'disabled', '');
@@ -661,7 +660,7 @@ class UiBaseLocators extends BasePage_1.BasePage {
661
660
  async goToSection(sectionName, checkSections = true, skipReload = false) {
662
661
  if (checkSections) {
663
662
  for (let section in ConstantHelper_1.ConstantHelper.sections) {
664
- await (0, test_1.expect)(this.sectionLinks.getByRole('tab', { name: ConstantHelper_1.ConstantHelper.sections[section] })).toBeVisible({ timeout: ConstantHelper_1.ConstantHelper.timeout.navigation });
663
+ await this.isVisible(this.sectionLinks.getByRole('tab', { name: ConstantHelper_1.ConstantHelper.sections[section] }), true, ConstantHelper_1.ConstantHelper.timeout.navigation);
665
664
  }
666
665
  }
667
666
  const alreadySelected = await this.sectionLinks.locator('[active]').getByText(sectionName).isVisible();
@@ -1249,14 +1248,23 @@ class UiBaseLocators extends BasePage_1.BasePage {
1249
1248
  }
1250
1249
  // Text Visibility Methods
1251
1250
  async isTextWithExactNameVisible(name, isVisible = true) {
1252
- return (0, test_1.expect)(this.page.getByText(name, { exact: true })).toBeVisible({ visible: isVisible });
1251
+ return await this.isVisible(this.page.getByText(name, { exact: true }), isVisible);
1253
1252
  }
1254
1253
  async isTextWithMessageVisible(message, isVisible = true) {
1255
- return await (0, test_1.expect)(this.page.getByText(message)).toBeVisible({ visible: isVisible });
1254
+ return await this.isVisible(this.page.getByText(message), isVisible);
1256
1255
  }
1257
1256
  getTextLocatorWithName(name) {
1258
1257
  return this.page.getByText(name, { exact: true });
1259
1258
  }
1259
+ async doesPropertyWithNameContainValidationMessage(propertyName, validationMessage, isContained = true) {
1260
+ const validationMessageLocator = this.page.locator('umb-property-layout[label="' + propertyName + '"]').locator(this.validationMessage);
1261
+ if (!isContained) {
1262
+ await (0, test_1.expect)(validationMessageLocator).not.toContainText(validationMessage);
1263
+ }
1264
+ else {
1265
+ await (0, test_1.expect)(validationMessageLocator).toContainText(validationMessage);
1266
+ }
1267
+ }
1260
1268
  }
1261
1269
  exports.UiBaseLocators = UiBaseLocators;
1262
1270
  //# sourceMappingURL=UiBaseLocators.js.map