@umbraco/playwright-testhelpers 17.1.0-beta.4 → 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 (67) hide show
  1. package/dist/lib/helpers/BasePage.d.ts +4 -2
  2. package/dist/lib/helpers/BasePage.js +6 -2
  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 +48 -1
  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/PublishedStatusUiHelper.js +1 -2
  47. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -1
  48. package/dist/lib/helpers/RelationTypeUiHelper.js +1 -2
  49. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -1
  50. package/dist/lib/helpers/ScriptUiHelper.js +1 -2
  51. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
  52. package/dist/lib/helpers/StylesheetUiHelper.js +1 -2
  53. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  54. package/dist/lib/helpers/TemplateApiHelper.d.ts +2 -0
  55. package/dist/lib/helpers/TemplateApiHelper.js +36 -0
  56. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  57. package/dist/lib/helpers/TemplateUiHelper.js +3 -4
  58. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  59. package/dist/lib/helpers/UiBaseLocators.d.ts +1 -0
  60. package/dist/lib/helpers/UiBaseLocators.js +23 -16
  61. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  62. package/dist/lib/helpers/UserGroupUiHelper.js +5 -5
  63. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
  64. package/dist/lib/helpers/UserUiHelper.js +3 -3
  65. package/dist/lib/helpers/UserUiHelper.js.map +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +1 -1
@@ -13,7 +13,7 @@ import { Locator, Page } from "@playwright/test";
13
13
  *
14
14
  * constructor(page: Page) {
15
15
  * super(page);
16
- * this.submitBtn = page.getByRole('button', { name: 'Submit' });
16
+ * this.submitBtn = page.getByRole('button', {name: 'Submit'});
17
17
  * }
18
18
  *
19
19
  * async submit() {
@@ -57,7 +57,7 @@ export declare class BasePage {
57
57
  * Use when standard click doesn't work due to overlapping elements.
58
58
  * @param locator - The element to click
59
59
  */
60
- forceClick(locator: Locator): Promise<void>;
60
+ javascriptClick(locator: Locator): Promise<void>;
61
61
  /**
62
62
  * Enters text into an input field after clearing it.
63
63
  * Verifies element visibility before interaction.
@@ -79,12 +79,14 @@ export declare class BasePage {
79
79
  */
80
80
  typeText(locator: Locator, text: string, options?: {
81
81
  clearFirst?: boolean;
82
+ verify?: boolean;
82
83
  delay?: number;
83
84
  timeout?: number;
84
85
  }): Promise<void>;
85
86
  /**
86
87
  * Clears an input field.
87
88
  * @param locator - The input element to clear
89
+ * @param options - Optional configuration
88
90
  */
89
91
  clearText(locator: Locator, options?: {
90
92
  timeout?: number;
@@ -16,7 +16,7 @@ const test_1 = require("@playwright/test");
16
16
  *
17
17
  * constructor(page: Page) {
18
18
  * super(page);
19
- * this.submitBtn = page.getByRole('button', { name: 'Submit' });
19
+ * this.submitBtn = page.getByRole('button', {name: 'Submit'});
20
20
  * }
21
21
  *
22
22
  * async submit() {
@@ -62,7 +62,7 @@ class BasePage {
62
62
  * Use when standard click doesn't work due to overlapping elements.
63
63
  * @param locator - The element to click
64
64
  */
65
- async forceClick(locator) {
65
+ async javascriptClick(locator) {
66
66
  await locator.evaluate((el) => el.click());
67
67
  }
68
68
  /**
@@ -95,10 +95,14 @@ class BasePage {
95
95
  await locator.clear();
96
96
  }
97
97
  await locator.pressSequentially(text, { delay: options?.delay ?? 50 });
98
+ if (options?.verify) {
99
+ await (0, test_1.expect)(locator).toHaveValue(text);
100
+ }
98
101
  }
99
102
  /**
100
103
  * Clears an input field.
101
104
  * @param locator - The input element to clear
105
+ * @param options - Optional configuration
102
106
  */
103
107
  async clearText(locator, options) {
104
108
  await (0, test_1.expect)(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });
@@ -1 +1 @@
1
- {"version":3,"file":"BasePage.js","sourceRoot":"","sources":["../../../lib/helpers/BasePage.ts"],"names":[],"mappings":"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","sourcesContent":["import {expect, Locator, Page} from \"@playwright/test\";\n\n/**\n * Base page class providing common UI interaction methods.\n * All methods follow best practices for reliability:\n * - click: Always checks element visibility before clicking\n * - enterText: Always clears before filling text\n * - select: Waits for element visibility before selecting\n *\n * @example\n * ```typescript\n * class MyPage extends BasePage {\n * readonly submitBtn: Locator;\n *\n * constructor(page: Page) {\n * super(page);\n * this.submitBtn = page.getByRole('button', { name: 'Submit' });\n * }\n *\n * async submit() {\n * await this.click(this.submitBtn);\n * }\n * }\n * ```\n */\nexport class BasePage {\n readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n\n /**\n * Clicks an element after verifying it is visible.\n * @param locator - The element to click\n * @param options - Optional click configuration\n */\n async click(locator: Locator, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 7000 });\n await locator.click({ force: options?.force });\n }\n\n /**\n * Double-clicks an element after verifying it is visible.\n * @param locator - The element to double-click\n * @param options - Optional configuration\n */\n async doubleClick(locator: Locator, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.dblclick({ force: options?.force });\n }\n\n /**\n * Right-clicks an element after verifying it is visible.\n * @param locator - The element to right-click\n * @param options - Optional configuration\n */\n async rightClick(locator: Locator, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.click({ button: 'right', force: options?.force });\n }\n\n /**\n * Clicks an element using JavaScript (bypasses actionability checks).\n * Use when standard click doesn't work due to overlapping elements.\n * @param locator - The element to click\n */\n async forceClick(locator: Locator): Promise<void> {\n await locator.evaluate((el: HTMLElement) => el.click());\n }\n\n /**\n * Enters text into an input field after clearing it.\n * Verifies element visibility before interaction.\n * @param locator - The input element\n * @param text - The text to enter\n * @param options - Optional configuration\n */\n async enterText(\n locator: Locator,\n text: string,\n options?: { clearFirst?: boolean; verify?: boolean; timeout?: number }\n ): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n if (options?.clearFirst !== false) {\n await locator.clear();\n }\n await locator.fill(text);\n if (options?.verify) {\n await expect(locator).toHaveValue(text);\n }\n }\n\n /**\n * Types text character by character (simulates real typing).\n * Useful when fill() doesn't trigger necessary events.\n * @param locator - The input element\n * @param text - The text to type\n * @param options - Optional configuration\n */\n async typeText(\n locator: Locator,\n text: string,\n options?: { clearFirst?: boolean; delay?: number; timeout?: number }\n ): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n if (options?.clearFirst !== false) {\n await locator.clear();\n }\n await locator.pressSequentially(text, { delay: options?.delay ?? 50 });\n }\n\n /**\n * Clears an input field.\n * @param locator - The input element to clear\n */\n async clearText(locator: Locator, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.clear();\n }\n\n /**\n * Presses a keyboard key while focused on an element.\n * @param locator - The element to focus\n * @param key - The key to press (e.g., 'Enter', 'Tab', 'Escape')\n */\n async pressKey(locator: Locator, key: string, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.press(key);\n }\n\n /**\n * Selects an option from a dropdown by value.\n * @param locator - The select element\n * @param value - The option value to select\n */\n async selectByValue(locator: Locator, value: string, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.selectOption({ value });\n }\n\n /**\n * Selects an option from a dropdown by visible text.\n * @param locator - The select element\n * @param text - The option text to select\n */\n async selectByText(locator: Locator, text: string, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.selectOption({ label: text });\n }\n\n /**\n * Selects an option from a dropdown by index.\n * @param locator - The select element\n * @param index - The option index to select (0-based)\n */\n async selectByIndex(locator: Locator, index: number, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.selectOption({ index });\n }\n\n /**\n * Selects multiple options from a multi-select dropdown.\n * @param locator - The select element\n * @param values - Array of option values to select\n */\n async selectMultiple(locator: Locator, values: string[], options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.selectOption(values);\n }\n\n /**\n * Checks a checkbox if it's not already checked.\n * @param locator - The checkbox element\n */\n async check(locator: Locator, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.check({ force: options?.force });\n }\n\n /**\n * Unchecks a checkbox if it's currently checked.\n * @param locator - The checkbox element\n */\n async uncheck(locator: Locator, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.uncheck({ force: options?.force });\n }\n\n /**\n * Sets a checkbox to a specific state.\n * @param locator - The checkbox element\n * @param checked - Whether the checkbox should be checked\n */\n async setChecked(locator: Locator, checked: boolean, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.setChecked(checked, { force: options?.force });\n }\n\n /**\n * Hovers over an element.\n * @param locator - The element to hover over\n */\n async hover(locator: Locator, options?: { force?: boolean; timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.hover({ force: options?.force });\n }\n\n /**\n * Focuses on an element.\n * @param locator - The element to focus\n */\n async focus(locator: Locator, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.focus();\n }\n\n /**\n * Hovers over one element and clicks another (for menus that appear on hover).\n * @param hoverLocator - The element to hover over\n * @param clickLocator - The element to click after hover\n */\n async hoverAndClick(\n hoverLocator: Locator,\n clickLocator: Locator,\n options?: { force?: boolean; timeout?: number }\n ): Promise<void> {\n await expect(hoverLocator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await hoverLocator.hover();\n await expect(clickLocator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await clickLocator.click({ force: options?.force });\n }\n\n /**\n * Waits for an element to be visible.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForVisible(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeVisible({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be hidden.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForHidden(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeHidden({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be attached to the DOM.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForAttached(locator: Locator, timeout?: number): Promise<void> {\n await locator.waitFor({ state: 'attached', timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be detached from the DOM.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForDetached(locator: Locator, timeout?: number): Promise<void> {\n await locator.waitFor({ state: 'detached', timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for the page to finish loading (network idle).\n */\n async waitForPageLoad(): Promise<void> {\n await this.page.waitForLoadState('networkidle');\n }\n\n /**\n * Waits for the DOM to be fully loaded.\n */\n async waitForDOMContentLoaded(): Promise<void> {\n await this.page.waitForLoadState('domcontentloaded');\n }\n\n /**\n * Waits for all network requests to complete.\n */\n async waitForLoadState(): Promise<void> {\n await this.page.waitForLoadState();\n }\n\n /**\n * Waits for an element to be enabled.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForEnabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEnabled({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be disabled.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForDisabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeDisabled({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to contain specific text.\n * @param locator - The element to wait for\n * @param text - The text to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForText(locator: Locator, text: string, timeout?: number): Promise<void> {\n await expect(locator).toContainText(text, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an input to have a specific value.\n * @param locator - The input element to wait for\n * @param value - The value to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForValue(locator: Locator, value: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveValue(value, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to have a specific attribute value.\n * @param locator - The element to wait for\n * @param name - The attribute name\n * @param value - The expected attribute value\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForAttribute(locator: Locator, name: string, value: string | RegExp, timeout?: number): Promise<void> {\n await expect(locator).toHaveAttribute(name, value, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to have a specific CSS class.\n * @param locator - The element to wait for\n * @param className - The CSS class to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForClass(locator: Locator, className: string | RegExp, timeout?: number): Promise<void> {\n await expect(locator).toHaveClass(className, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be editable.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForEditable(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEditable({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be checked.\n * @param locator - The checkbox/radio element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForChecked(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeChecked({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be unchecked.\n * @param locator - The checkbox/radio element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForUnchecked(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).not.toBeChecked({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for a specific URL or URL pattern.\n * @param url - The URL string or regex pattern to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForURL(url: string | RegExp, timeout?: number): Promise<void> {\n await this.page.waitForURL(url, { timeout: timeout ?? 30000 });\n }\n\n /**\n * Waits for a navigation to complete.\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForNavigation(timeout?: number): Promise<void> {\n await this.page.waitForLoadState('load', { timeout: timeout ?? 30000 });\n }\n\n /**\n * Waits for a specific time (use sparingly, prefer explicit waits).\n * @param milliseconds - Time to wait in milliseconds\n */\n async waitForTimeout(milliseconds: number): Promise<void> {\n await this.page.waitForTimeout(milliseconds);\n }\n\n /**\n * Waits for a network request to a specific URL.\n * @param urlOrPredicate - URL string, regex, or predicate function\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForRequest(urlOrPredicate: string | RegExp | ((request: any) => boolean), timeout?: number): Promise<any> {\n return await this.page.waitForRequest(urlOrPredicate, { timeout: timeout ?? 30000 });\n }\n\n /**\n * Waits for a network response from a specific URL.\n * @param urlOrPredicate - URL string, regex, or predicate function\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForResponse(urlOrPredicate: string | RegExp | ((response: any) => boolean), timeout?: number): Promise<any> {\n return await this.page.waitForResponse(urlOrPredicate, { timeout: timeout ?? 30000 });\n }\n\n /**\n * Waits for an element to be focused.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForFocused(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeFocused({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for an element to be empty (no text content).\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForEmpty(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEmpty({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Waits for a function to return true.\n * @param predicate - Function that returns a boolean or Promise<boolean>\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForFunction(predicate: () => boolean | Promise<boolean>, timeout?: number): Promise<void> {\n await this.page.waitForFunction(predicate, { timeout: timeout ?? 30000 });\n }\n\n /**\n * Waits for an element to have a specific CSS property value.\n * @param locator - The element to wait for\n * @param property - The CSS property name\n * @param value - The expected CSS property value\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForCSS(locator: Locator, property: string, value: string | RegExp, timeout?: number): Promise<void> {\n await expect(locator).toHaveCSS(property, value, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an element is visible.\n * @param locator - The element to check\n * @param isVisible - Whether the element should be visible (default: true)\n */\n async isVisible(locator: Locator, isVisible: boolean = true, timeout?: number): Promise<void> {\n await expect(locator).toBeVisible({ visible: isVisible, timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an element is enabled.\n * @param locator - The element to check\n */\n async isEnabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEnabled({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an element is disabled.\n * @param locator - The element to check\n */\n async isDisabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeDisabled({ timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an element contains specific text.\n * @param locator - The element to check\n * @param text - The text to look for\n */\n async containsText(locator: Locator, text: string, timeout?: number): Promise<void> {\n await expect(locator).toContainText(text, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an element has specific text.\n * @param locator - The element to check\n * @param text - The exact text expected\n */\n async hasText(locator: Locator, text: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveText(text, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an input has a specific value.\n * @param locator - The input element to check\n * @param value - The expected value\n */\n async hasValue(locator: Locator, value: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveValue(value, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that an element has a specific attribute value.\n * @param locator - The element to check\n * @param name - The attribute name\n * @param value - The expected attribute value\n */\n async hasAttribute(locator: Locator, name: string, value: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveAttribute(name, value, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Asserts that a specific number of elements exist.\n * @param locator - The locator to count\n * @param count - The expected count\n */\n async hasCount(locator: Locator, count: number, timeout?: number): Promise<void> {\n await expect(locator).toHaveCount(count, { timeout: timeout ?? 5000 });\n }\n\n /**\n * Gets the text content of an element.\n * @param locator - The element to get text from\n * @returns The text content\n */\n async getText(locator: Locator, options?: { timeout?: number }): Promise<string> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n return await locator.textContent() ?? '';\n }\n\n /**\n * Gets the value of an input element.\n * @param locator - The input element\n * @returns The input value\n */\n async getValue(locator: Locator, options?: { timeout?: number }): Promise<string> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n return await locator.inputValue();\n }\n\n /**\n * Gets an attribute value from an element.\n * @param locator - The element\n * @param attributeName - The attribute name\n * @returns The attribute value or null\n */\n async getAttribute(locator: Locator, attributeName: string, options?: { timeout?: number }): Promise<string | null> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n return await locator.getAttribute(attributeName);\n }\n\n /**\n * Checks if an element is currently visible.\n * @param locator - The element to check\n * @returns True if visible, false otherwise\n */\n async checkIsVisible(locator: Locator): Promise<boolean> {\n return await locator.isVisible();\n }\n\n /**\n * Checks if a checkbox is checked.\n * @param locator - The checkbox element\n * @returns True if checked, false otherwise\n */\n async isChecked(locator: Locator): Promise<boolean> {\n return await locator.isChecked();\n }\n\n /**\n * Scrolls an element into view.\n * @param locator - The element to scroll to\n */\n async scrollIntoView(locator: Locator, options?: { timeout?: number }): Promise<void> {\n await expect(locator).toBeVisible({ timeout: options?.timeout ?? 5000 });\n await locator.scrollIntoViewIfNeeded();\n }\n\n /**\n * Sets files on a file input element.\n * @param locator - The file input element\n * @param filePath - Path to the file(s) to set\n */\n async setInputFiles(locator: Locator, filePath: string | string[]): Promise<void> {\n await locator.setInputFiles(filePath);\n }\n\n /**\n * Clears files from a file input.\n * @param locator - The file input element\n */\n async clearInputFiles(locator: Locator): Promise<void> {\n await locator.setInputFiles([]);\n }\n\n /**\n * Drags an element and drops it on another element.\n * @param source - The element to drag\n * @param target - The element to drop on\n */\n async dragTo(\n source: Locator,\n target: Locator,\n options?: { sourcePosition?: { x: number; y: number }; targetPosition?: { x: number; y: number } }\n ): Promise<void> {\n await source.dragTo(target, options);\n }\n\n}\n"]}
1
+ {"version":3,"file":"BasePage.js","sourceRoot":"","sources":["../../../lib/helpers/BasePage.ts"],"names":[],"mappings":"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","sourcesContent":["import {expect, Locator, Page} from \"@playwright/test\";\n\n/**\n * Base page class providing common UI interaction methods.\n * All methods follow best practices for reliability:\n * - click: Always checks element visibility before clicking\n * - enterText: Always clears before filling text\n * - select: Waits for element visibility before selecting\n *\n * @example\n * ```typescript\n * class MyPage extends BasePage {\n * readonly submitBtn: Locator;\n *\n * constructor(page: Page) {\n * super(page);\n * this.submitBtn = page.getByRole('button', {name: 'Submit'});\n * }\n *\n * async submit() {\n * await this.click(this.submitBtn);\n * }\n * }\n * ```\n */\nexport class BasePage {\n readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n\n /**\n * Clicks an element after verifying it is visible.\n * @param locator - The element to click\n * @param options - Optional click configuration\n */\n async click(locator: Locator, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 7000});\n await locator.click({force: options?.force});\n }\n\n /**\n * Double-clicks an element after verifying it is visible.\n * @param locator - The element to double-click\n * @param options - Optional configuration\n */\n async doubleClick(locator: Locator, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.dblclick({force: options?.force});\n }\n\n /**\n * Right-clicks an element after verifying it is visible.\n * @param locator - The element to right-click\n * @param options - Optional configuration\n */\n async rightClick(locator: Locator, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.click({button: 'right', force: options?.force});\n }\n\n /**\n * Clicks an element using JavaScript (bypasses actionability checks).\n * Use when standard click doesn't work due to overlapping elements.\n * @param locator - The element to click\n */\n async javascriptClick(locator: Locator): Promise<void> {\n await locator.evaluate((el: HTMLElement) => el.click());\n }\n\n /**\n * Enters text into an input field after clearing it.\n * Verifies element visibility before interaction.\n * @param locator - The input element\n * @param text - The text to enter\n * @param options - Optional configuration\n */\n async enterText(\n locator: Locator,\n text: string,\n options?: {clearFirst?: boolean; verify?: boolean; timeout?: number}\n ): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n if (options?.clearFirst !== false) {\n await locator.clear();\n }\n await locator.fill(text);\n if (options?.verify) {\n await expect(locator).toHaveValue(text);\n }\n }\n\n /**\n * Types text character by character (simulates real typing).\n * Useful when fill() doesn't trigger necessary events.\n * @param locator - The input element\n * @param text - The text to type\n * @param options - Optional configuration\n */\n async typeText(\n locator: Locator,\n text: string,\n options?: {clearFirst?: boolean; verify?: boolean; delay?: number; timeout?: number}\n ): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n if (options?.clearFirst !== false) {\n await locator.clear();\n }\n await locator.pressSequentially(text, {delay: options?.delay ?? 50});\n if (options?.verify) {\n await expect(locator).toHaveValue(text);\n }\n }\n\n /**\n * Clears an input field.\n * @param locator - The input element to clear\n * @param options - Optional configuration\n */\n async clearText(locator: Locator, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.clear();\n }\n\n /**\n * Presses a keyboard key while focused on an element.\n * @param locator - The element to focus\n * @param key - The key to press (e.g., 'Enter', 'Tab', 'Escape')\n */\n async pressKey(locator: Locator, key: string, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.press(key);\n }\n\n /**\n * Selects an option from a dropdown by value.\n * @param locator - The select element\n * @param value - The option value to select\n */\n async selectByValue(locator: Locator, value: string, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.selectOption({value});\n }\n\n /**\n * Selects an option from a dropdown by visible text.\n * @param locator - The select element\n * @param text - The option text to select\n */\n async selectByText(locator: Locator, text: string, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.selectOption({label: text});\n }\n\n /**\n * Selects an option from a dropdown by index.\n * @param locator - The select element\n * @param index - The option index to select (0-based)\n */\n async selectByIndex(locator: Locator, index: number, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.selectOption({index});\n }\n\n /**\n * Selects multiple options from a multi-select dropdown.\n * @param locator - The select element\n * @param values - Array of option values to select\n */\n async selectMultiple(locator: Locator, values: string[], options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.selectOption(values);\n }\n\n /**\n * Checks a checkbox if it's not already checked.\n * @param locator - The checkbox element\n */\n async check(locator: Locator, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.check({force: options?.force});\n }\n\n /**\n * Unchecks a checkbox if it's currently checked.\n * @param locator - The checkbox element\n */\n async uncheck(locator: Locator, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.uncheck({force: options?.force});\n }\n\n /**\n * Sets a checkbox to a specific state.\n * @param locator - The checkbox element\n * @param checked - Whether the checkbox should be checked\n */\n async setChecked(locator: Locator, checked: boolean, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.setChecked(checked, {force: options?.force});\n }\n\n /**\n * Hovers over an element.\n * @param locator - The element to hover over\n */\n async hover(locator: Locator, options?: {force?: boolean; timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.hover({force: options?.force});\n }\n\n /**\n * Focuses on an element.\n * @param locator - The element to focus\n */\n async focus(locator: Locator, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.focus();\n }\n\n /**\n * Hovers over one element and clicks another (for menus that appear on hover).\n * @param hoverLocator - The element to hover over\n * @param clickLocator - The element to click after hover\n */\n async hoverAndClick(\n hoverLocator: Locator,\n clickLocator: Locator,\n options?: {force?: boolean; timeout?: number}\n ): Promise<void> {\n await expect(hoverLocator).toBeVisible({timeout: options?.timeout ?? 5000});\n await hoverLocator.hover();\n await expect(clickLocator).toBeVisible({timeout: options?.timeout ?? 5000});\n await clickLocator.click({force: options?.force});\n }\n\n /**\n * Waits for an element to be visible.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForVisible(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeVisible({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be hidden.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForHidden(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeHidden({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be attached to the DOM.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForAttached(locator: Locator, timeout?: number): Promise<void> {\n await locator.waitFor({state: 'attached', timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be detached from the DOM.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForDetached(locator: Locator, timeout?: number): Promise<void> {\n await locator.waitFor({state: 'detached', timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for the page to finish loading (network idle).\n */\n async waitForPageLoad(): Promise<void> {\n await this.page.waitForLoadState('networkidle');\n }\n\n /**\n * Waits for the DOM to be fully loaded.\n */\n async waitForDOMContentLoaded(): Promise<void> {\n await this.page.waitForLoadState('domcontentloaded');\n }\n\n /**\n * Waits for all network requests to complete.\n */\n async waitForLoadState(): Promise<void> {\n await this.page.waitForLoadState();\n }\n\n /**\n * Waits for an element to be enabled.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForEnabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEnabled({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be disabled.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForDisabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeDisabled({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to contain specific text.\n * @param locator - The element to wait for\n * @param text - The text to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForText(locator: Locator, text: string, timeout?: number): Promise<void> {\n await expect(locator).toContainText(text, {timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an input to have a specific value.\n * @param locator - The input element to wait for\n * @param value - The value to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForValue(locator: Locator, value: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveValue(value, {timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to have a specific attribute value.\n * @param locator - The element to wait for\n * @param name - The attribute name\n * @param value - The expected attribute value\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForAttribute(locator: Locator, name: string, value: string | RegExp, timeout?: number): Promise<void> {\n await expect(locator).toHaveAttribute(name, value, {timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to have a specific CSS class.\n * @param locator - The element to wait for\n * @param className - The CSS class to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForClass(locator: Locator, className: string | RegExp, timeout?: number): Promise<void> {\n await expect(locator).toHaveClass(className, {timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be editable.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForEditable(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEditable({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be checked.\n * @param locator - The checkbox/radio element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForChecked(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeChecked({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be unchecked.\n * @param locator - The checkbox/radio element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForUnchecked(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).not.toBeChecked({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for a specific URL or URL pattern.\n * @param url - The URL string or regex pattern to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForURL(url: string | RegExp, timeout?: number): Promise<void> {\n await this.page.waitForURL(url, {timeout: timeout ?? 30000});\n }\n\n /**\n * Waits for a navigation to complete.\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForNavigation(timeout?: number): Promise<void> {\n await this.page.waitForLoadState('load', {timeout: timeout ?? 30000});\n }\n\n /**\n * Waits for a specific time (use sparingly, prefer explicit waits).\n * @param milliseconds - Time to wait in milliseconds\n */\n async waitForTimeout(milliseconds: number): Promise<void> {\n await this.page.waitForTimeout(milliseconds);\n }\n\n /**\n * Waits for a network request to a specific URL.\n * @param urlOrPredicate - URL string, regex, or predicate function\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForRequest(urlOrPredicate: string | RegExp | ((request: any) => boolean), timeout?: number): Promise<any> {\n return await this.page.waitForRequest(urlOrPredicate, {timeout: timeout ?? 30000});\n }\n\n /**\n * Waits for a network response from a specific URL.\n * @param urlOrPredicate - URL string, regex, or predicate function\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForResponse(urlOrPredicate: string | RegExp | ((response: any) => boolean), timeout?: number): Promise<any> {\n return await this.page.waitForResponse(urlOrPredicate, {timeout: timeout ?? 30000});\n }\n\n /**\n * Waits for an element to be focused.\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForFocused(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeFocused({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for an element to be empty (no text content).\n * @param locator - The element to wait for\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForEmpty(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEmpty({timeout: timeout ?? 5000});\n }\n\n /**\n * Waits for a function to return true.\n * @param predicate - Function that returns a boolean or Promise<boolean>\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForFunction(predicate: () => boolean | Promise<boolean>, timeout?: number): Promise<void> {\n await this.page.waitForFunction(predicate, {timeout: timeout ?? 30000});\n }\n\n /**\n * Waits for an element to have a specific CSS property value.\n * @param locator - The element to wait for\n * @param property - The CSS property name\n * @param value - The expected CSS property value\n * @param timeout - Maximum time to wait in milliseconds\n */\n async waitForCSS(locator: Locator, property: string, value: string | RegExp, timeout?: number): Promise<void> {\n await expect(locator).toHaveCSS(property, value, {timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an element is visible.\n * @param locator - The element to check\n * @param isVisible - Whether the element should be visible (default: true)\n */\n async isVisible(locator: Locator, isVisible: boolean = true, timeout?: number): Promise<void> {\n await expect(locator).toBeVisible({visible: isVisible, timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an element is enabled.\n * @param locator - The element to check\n */\n async isEnabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeEnabled({timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an element is disabled.\n * @param locator - The element to check\n */\n async isDisabled(locator: Locator, timeout?: number): Promise<void> {\n await expect(locator).toBeDisabled({timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an element contains specific text.\n * @param locator - The element to check\n * @param text - The text to look for\n */\n async containsText(locator: Locator, text: string, timeout?: number): Promise<void> {\n await expect(locator).toContainText(text, {timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an element has specific text.\n * @param locator - The element to check\n * @param text - The exact text expected\n */\n async hasText(locator: Locator, text: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveText(text, {timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an input has a specific value.\n * @param locator - The input element to check\n * @param value - The expected value\n */\n async hasValue(locator: Locator, value: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveValue(value, {timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that an element has a specific attribute value.\n * @param locator - The element to check\n * @param name - The attribute name\n * @param value - The expected attribute value\n */\n async hasAttribute(locator: Locator, name: string, value: string, timeout?: number): Promise<void> {\n await expect(locator).toHaveAttribute(name, value, {timeout: timeout ?? 5000});\n }\n\n /**\n * Asserts that a specific number of elements exist.\n * @param locator - The locator to count\n * @param count - The expected count\n */\n async hasCount(locator: Locator, count: number, timeout?: number): Promise<void> {\n await expect(locator).toHaveCount(count, {timeout: timeout ?? 5000});\n }\n\n /**\n * Gets the text content of an element.\n * @param locator - The element to get text from\n * @returns The text content\n */\n async getText(locator: Locator, options?: {timeout?: number}): Promise<string> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n return await locator.textContent() ?? '';\n }\n\n /**\n * Gets the value of an input element.\n * @param locator - The input element\n * @returns The input value\n */\n async getValue(locator: Locator, options?: {timeout?: number}): Promise<string> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n return await locator.inputValue();\n }\n\n /**\n * Gets an attribute value from an element.\n * @param locator - The element\n * @param attributeName - The attribute name\n * @returns The attribute value or null\n */\n async getAttribute(locator: Locator, attributeName: string, options?: {timeout?: number}): Promise<string | null> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n return await locator.getAttribute(attributeName);\n }\n\n /**\n * Checks if an element is currently visible.\n * @param locator - The element to check\n * @returns True if visible, false otherwise\n */\n async checkIsVisible(locator: Locator): Promise<boolean> {\n return await locator.isVisible();\n }\n\n /**\n * Checks if a checkbox is checked.\n * @param locator - The checkbox element\n * @returns True if checked, false otherwise\n */\n async isChecked(locator: Locator): Promise<boolean> {\n return await locator.isChecked();\n }\n\n /**\n * Scrolls an element into view.\n * @param locator - The element to scroll to\n */\n async scrollIntoView(locator: Locator, options?: {timeout?: number}): Promise<void> {\n await expect(locator).toBeVisible({timeout: options?.timeout ?? 5000});\n await locator.scrollIntoViewIfNeeded();\n }\n\n /**\n * Sets files on a file input element.\n * @param locator - The file input element\n * @param filePath - Path to the file(s) to set\n */\n async setInputFiles(locator: Locator, filePath: string | string[]): Promise<void> {\n await locator.setInputFiles(filePath);\n }\n\n /**\n * Clears files from a file input.\n * @param locator - The file input element\n */\n async clearInputFiles(locator: Locator): Promise<void> {\n await locator.setInputFiles([]);\n }\n\n /**\n * Drags an element and drops it on another element.\n * @param source - The element to drag\n * @param target - The element to drop on\n */\n async dragTo(\n source: Locator,\n target: Locator,\n options?: {sourcePosition?: {x: number; y: number}; targetPosition?: {x: number; y: number}}\n ): Promise<void> {\n await source.dragTo(target, options);\n }\n\n}\n"]}
@@ -37,6 +37,7 @@ export declare class ConstantHelper {
37
37
  emptyValue: string;
38
38
  nullValue: string;
39
39
  invalidEmail: string;
40
+ emptyManualLinkPicker: string;
40
41
  };
41
42
  static readonly inputTypes: {
42
43
  general: string;
@@ -39,7 +39,8 @@ class ConstantHelper {
39
39
  unsupportInvariantContentItemWithVariantBlocks: 'One or more Block Types of this Block Editor is using a Element-Type that is configured to Vary By Culture or Vary By Segment. This is not supported on a Content item that does not vary by Culture or Segment.',
40
40
  emptyValue: 'Value cannot be empty',
41
41
  nullValue: 'Value cannot be null',
42
- invalidEmail: 'Invalid email'
42
+ invalidEmail: 'Invalid email',
43
+ emptyManualLinkPicker: 'Please enter an URL or Anchor.'
43
44
  };
44
45
  static inputTypes = {
45
46
  general: 'input',
@@ -1 +1 @@
1
- {"version":3,"file":"ConstantHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ConstantHelper.ts"],"names":[],"mappings":"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","sourcesContent":["export class ConstantHelper {\n\n public static readonly timeout = {\n short: 1000,\n medium: 5000,\n long: 10000,\n veryLong: 20000,\n navigation: 30000,\n pageLoad: 60000\n }\n\n public static readonly wait = {\n minimal: 100,\n short: 500,\n medium: 1000,\n long: 2000,\n animation: 300,\n debounce: 400,\n networkIdle: 5000\n }\n\n public static readonly sections = {\n content: \"Content\",\n media: \"Media\",\n settings: \"Settings\",\n packages: \"Packages\",\n members: \"Members\",\n dictionary: \"Translation\",\n users: \"Users\"\n }\n\n public static readonly testUserCredentials = {\n name: 'Test User',\n email: 'verySecureEmail@123.test',\n password: 'verySecurePassword123'\n }\n\n public static readonly validationMessages = {\n emptyLinkPicker: 'This field is required',\n invalidValue: 'Value is invalid, it does not match the correct pattern',\n unsupportInvariantContentItemWithVariantBlocks: 'One or more Block Types of this Block Editor is using a Element-Type that is configured to Vary By Culture or Vary By Segment. This is not supported on a Content item that does not vary by Culture or Segment.',\n emptyValue: 'Value cannot be empty',\n nullValue: 'Value cannot be null',\n invalidEmail: 'Invalid email'\n }\n\n public static readonly inputTypes = {\n general: 'input',\n tipTap: 'umb-input-tiptap'\n }\n\n public static readonly access = {\n denied: 'Access denied'\n }\n \n public static readonly approvedColorSettings = {\n 0: ['Include labels?', 'Displays colored field and a label for each color in the color picker, rather than just a colored field.'],\n 1: ['Colors', 'Add, remove or sort colors (and labels).'],\n }\n\n public static readonly checkboxListSettings = {\n 0: ['Add option', 'Add, remove or sort options for the list.']\n }\n\n public static readonly contentPickerSettings = {\n 0: ['Ignore user start nodes', 'Selecting this option allows a user to choose nodes that they normally dont have access to.'],\n 1: ['Start node', '']\n }\n\n public static readonly datePickerSettings = {\n 0: ['Date format', 'If left empty then the format is YYYY-MM-DD'],\n //1: ['Offset time', \"When enabled the time displayed will be offset with the server's timezone, this is useful for scenarios like scheduled publishing when an editor is in a different timezone than the hosted server\"]\n }\n\n public static readonly dropdownSettings = {\n 0: ['Enable multiple choice', ''],\n 1: ['Add options', '']\n }\n\n public static readonly imageCropperSettings = {\n 0: ['Crop options', ''],\n }\n\n public static readonly mediaPickerSettings = {\n 0: ['Accepted types', 'Limit to specific types'],\n 1: ['Pick multiple items', 'Outputs a IEnumerable'],\n 2: ['Amount', 'Set a required range of medias'],\n 3: ['Start node', ''],\n 4: ['Enable Focal Point', ''],\n 5: ['Image Crops', 'Local crops, stored on document'],\n 6: ['Ignore User Start Nodes', 'Selecting this option allows a user to choose nodes that they normally dont have access to.'],\n }\n\n public static readonly labelSettings = {\n 0: ['Value type', 'The type of value to store'],\n 1: ['Label template', 'Enter a template for the label.'],\n }\n\n public static readonly listViewSettings = {\n 0: ['Columns Displayed', 'The properties that will be displayed for each column.'],\n 1: ['Layouts', 'The properties that will be displayed for each column.'],\n 2: ['Order By', 'The default sort order for the Collection.'],\n 3: ['Order Direction', ''],\n 4: ['Page Size', 'Number of items per page.'],\n 5: ['Workspace View icon', \"The icon for the Collection's Workspace View.\"],\n 6: ['Workspace View name', \"The name of the Collection's Workspace View (default if empty: Child Items).\"],\n 7: ['Show Content Workspace View First', \"Enable this to show the Content Workspace View by default instead of the Collection's.\"],\n }\n\n public static readonly multiURLPickerSettings = {\n 0: ['Minimum number of items', ''],\n 1: ['Maximum number of items', ''],\n 2: ['Ignore user start nodes', 'Selecting this option allows a user to choose nodes that they normally dont have access to.'],\n 3: ['Overlay Size', 'Select the width of the overlay.'],\n 4: ['Hide anchor/query string input', 'Selecting this hides the anchor/query string input field in the link picker overlay.'],\n }\n\n public static readonly numericSettings = {\n 0: ['Minimum', 'Enter the minimum amount of number to be entered'],\n 1: ['Maximum', 'Enter the maximum amount of number to be entered'],\n 2: ['Step size', 'Enter the intervals amount between each step of number to be entered']\n }\n\n public static readonly radioboxSettings = {\n 0: ['Add option', 'Add, remove or sort options for the list.'],\n }\n\n public static readonly tagsSettings = {\n 0: ['Tag group', ''],\n 1: ['Storage Type', 'Select whether to store the tags in cache as JSON (default) or CSV format. Notice that CSV does not support commas in the tag value.']\n }\n\n public static readonly textareaSettings = {\n 0: ['Maximum allowed characters', 'If empty - no character limit'],\n 1: ['Number of rows', 'If empty or zero, the textarea is set to auto-height']\n }\n\n public static readonly textstringSettings = {\n 0: ['Maximum allowed characters', 'If empty, 512 character limit'],\n }\n\n public static readonly trueFalseSettings = {\n 0: ['Preset value', ''],\n 1: ['Show on/off labels', ''],\n 2: ['Label On', 'Displays text when enabled.'],\n 3: ['Label Off', 'Displays text when disabled.'],\n 4: ['Screen Reader Label', ''],\n }\n\n public static readonly uploadSettings = {\n 0: ['Accepted file extensions', ''],\n }\n\n public static readonly tipTapSettings = {\n 0: ['Capabilities', 'Choose which Tiptap extensions to enable.\\nOnce enabled, the related actions will be available for the toolbar and statusbar.'],\n 1: ['Toolbar', 'Design the available actions.\\nDrag and drop the available actions onto the toolbar.'],\n 2: ['Statusbar', 'Design the available statuses.\\nDrag and drop the available actions onto the statusbar areas.'],\n 3: ['Stylesheets', 'Pick the stylesheets whose editor styles should be available when editing.'],\n 4: ['Dimensions', 'Sets the fixed width and height of the editor. This excludes the toolbar and statusbar heights.'],\n 5: ['Maximum size for inserted images', 'Maximum width or height - enter 0 to disable resizing.'],\n 6: ['Overlay size', 'Select the width of the overlay (link picker).'],\n 7: ['Available Blocks', 'Define the available blocks.'],\n 8: ['Image Upload Folder', 'Choose the upload location of pasted images.'],\n 9: ['Ignore User Start Nodes', ''],\n }\n\n public static readonly tinyMCESettings = {\n 0: ['Toolbar', 'Pick the toolbar options that should be available when editing'],\n 1: ['Stylesheets', 'Pick the stylesheets whose editor styles should be available when editing'],\n 2: ['Dimensions', 'Set the editor dimensions'],\n 3: ['Maximum size for inserted images', 'Maximum width or height - enter 0 to disable resizing.'],\n 4: ['Mode', 'Select the mode for the editor'],\n 5: ['Available Blocks', 'Define the available blocks.'],\n 6: ['Overlay size', 'Select the width of the overlay (link picker).'],\n 7: ['Hide Label', ''],\n 8: ['Image Upload Folder', 'Choose the upload location of pasted images.'],\n 9: ['Ignore User Start Nodes', ''],\n }\n\n public static readonly userGroupAssignAccessSettings = {\n 0: ['Sections', 'Add sections to give users access'],\n 1: ['Languages', 'Limit the languages users have access to edit'],\n 2: ['Select content start node', 'Limit the content tree to a specific start node'],\n 3: ['Select media start node', 'Limit the media library to a specific start node']\n }\n\n public static readonly userGroupDefaultPermissionsSettings = {\n 0: ['General', ''],\n 1: ['Structure', ''],\n 2: ['Administration', ''],\n 3: ['Granular permissions', 'Assign permissions to specific documents'],\n }\n\n public static readonly userGroupGranularPermissionsSettings = {\n 0: ['General', ''],\n 1: ['Granular permissions', 'Assign permissions to Document property values'],\n }\n\n public static readonly userGroupPermissionsSettings = {\n 0: ['Read', 'Allow access to read a Document', 'Umb.Document.Read'],\n 1: ['Create Document Blueprint', 'Allow access to create a Document Blueprint', 'Umb.Document.CreateBlueprint'],\n 2: ['Delete', 'Allow access to delete a Document', 'Umb.Document.Delete'],\n 3: ['Create', 'Allow access to create a Document', 'Umb.Document.Create'],\n 4: ['Notifications', 'Allow access to setup notifications for Documents', 'Umb.Document.Notifications'],\n 5: ['Publish', 'Allow access to publish a Document', 'Umb.Document.Publish'],\n 6: ['Unpublish', 'Allow access to unpublish a Document', 'Umb.Document.Unpublish'],\n 7: ['Update', 'Allow access to save a Document', 'Umb.Document.Update'],\n 8: ['Duplicate', 'Allow access to copy a Document', 'Umb.Document.Duplicate'],\n 9: ['Move to', 'Allow access to move a Document', 'Umb.Document.Move'],\n 10: ['Sort children', 'Allow access to change the sort order for Documents', 'Umb.Document.Sort'],\n 11: ['Culture and Hostnames', 'Allow access to assign culture and hostnames', 'Umb.Document.CultureAndHostnames'],\n 12: ['Public Access', 'Allow access to set and change access restrictions for a Document', 'Umb.Document.PublicAccess'],\n 13: ['Rollback', 'Allow access to roll back a Document to a previous state', 'Umb.Document.Rollback']\n }\n\n public static readonly userGroupSectionsSettings = {\n 0: ['Content', 'Umb.Section.Content'],\n 1: ['Forms', 'Umb.Section.Forms'],\n 2: ['Media', 'Umb.Section.Media'],\n 3: ['Members', 'Umb.Section.Members'],\n 4: ['Packages', 'Umb.Section.Packages'],\n 5: ['Settings', 'Umb.Section.Settings'],\n 6: ['Translation', 'Umb.Section.Translation'],\n 7: ['Users', 'Umb.Section.Users'],\n }\n\n public static readonly trashDeleteDialogMessage = {\n referenceHeadline: 'The following items depend on this',\n bulkReferenceHeadline: 'The following items are used by other content.'\n }\n\n public static readonly webhookEvents = [\n {\n \"eventName\": \"Content Deleted\",\n \"eventType\": \"Content\",\n \"alias\": \"Umbraco.ContentDelete\"\n },\n {\n \"eventName\": \"Content Published\",\n \"eventType\": \"Content\",\n \"alias\": \"Umbraco.ContentPublish\"\n },\n {\n \"eventName\": \"Content Unpublished\",\n \"eventType\": \"Content\",\n \"alias\": \"Umbraco.ContentUnpublish\"\n },\n {\n \"eventName\": \"Media Deleted\",\n \"eventType\": \"Media\",\n \"alias\": \"Umbraco.MediaDelete\"\n },\n {\n \"eventName\": \"Media Saved\",\n \"eventType\": \"Media\",\n \"alias\": \"Umbraco.MediaSave\"\n }\n ]\n\n public static readonly dateTimeWithTimeZonePickerSetting = {\n 0: ['Time format', ''],\n 1: ['Time zones', 'Select the time zones that the editor should be able to pick from.']\n }\n}"]}
1
+ {"version":3,"file":"ConstantHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ConstantHelper.ts"],"names":[],"mappings":"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","sourcesContent":["export class ConstantHelper {\n\n public static readonly timeout = {\n short: 1000,\n medium: 5000,\n long: 10000,\n veryLong: 20000,\n navigation: 30000,\n pageLoad: 60000\n }\n\n public static readonly wait = {\n minimal: 100,\n short: 500,\n medium: 1000,\n long: 2000,\n animation: 300,\n debounce: 400,\n networkIdle: 5000\n }\n\n public static readonly sections = {\n content: \"Content\",\n media: \"Media\",\n settings: \"Settings\",\n packages: \"Packages\",\n members: \"Members\",\n dictionary: \"Translation\",\n users: \"Users\"\n }\n\n public static readonly testUserCredentials = {\n name: 'Test User',\n email: 'verySecureEmail@123.test',\n password: 'verySecurePassword123'\n }\n\n public static readonly validationMessages = {\n emptyLinkPicker: 'This field is required',\n invalidValue: 'Value is invalid, it does not match the correct pattern',\n unsupportInvariantContentItemWithVariantBlocks: 'One or more Block Types of this Block Editor is using a Element-Type that is configured to Vary By Culture or Vary By Segment. This is not supported on a Content item that does not vary by Culture or Segment.',\n emptyValue: 'Value cannot be empty',\n nullValue: 'Value cannot be null',\n invalidEmail: 'Invalid email',\n emptyManualLinkPicker: 'Please enter an URL or Anchor.'\n }\n\n public static readonly inputTypes = {\n general: 'input',\n tipTap: 'umb-input-tiptap'\n }\n\n public static readonly access = {\n denied: 'Access denied'\n }\n \n public static readonly approvedColorSettings = {\n 0: ['Include labels?', 'Displays colored field and a label for each color in the color picker, rather than just a colored field.'],\n 1: ['Colors', 'Add, remove or sort colors (and labels).'],\n }\n\n public static readonly checkboxListSettings = {\n 0: ['Add option', 'Add, remove or sort options for the list.']\n }\n\n public static readonly contentPickerSettings = {\n 0: ['Ignore user start nodes', 'Selecting this option allows a user to choose nodes that they normally dont have access to.'],\n 1: ['Start node', '']\n }\n\n public static readonly datePickerSettings = {\n 0: ['Date format', 'If left empty then the format is YYYY-MM-DD'],\n //1: ['Offset time', \"When enabled the time displayed will be offset with the server's timezone, this is useful for scenarios like scheduled publishing when an editor is in a different timezone than the hosted server\"]\n }\n\n public static readonly dropdownSettings = {\n 0: ['Enable multiple choice', ''],\n 1: ['Add options', '']\n }\n\n public static readonly imageCropperSettings = {\n 0: ['Crop options', ''],\n }\n\n public static readonly mediaPickerSettings = {\n 0: ['Accepted types', 'Limit to specific types'],\n 1: ['Pick multiple items', 'Outputs a IEnumerable'],\n 2: ['Amount', 'Set a required range of medias'],\n 3: ['Start node', ''],\n 4: ['Enable Focal Point', ''],\n 5: ['Image Crops', 'Local crops, stored on document'],\n 6: ['Ignore User Start Nodes', 'Selecting this option allows a user to choose nodes that they normally dont have access to.'],\n }\n\n public static readonly labelSettings = {\n 0: ['Value type', 'The type of value to store'],\n 1: ['Label template', 'Enter a template for the label.'],\n }\n\n public static readonly listViewSettings = {\n 0: ['Columns Displayed', 'The properties that will be displayed for each column.'],\n 1: ['Layouts', 'The properties that will be displayed for each column.'],\n 2: ['Order By', 'The default sort order for the Collection.'],\n 3: ['Order Direction', ''],\n 4: ['Page Size', 'Number of items per page.'],\n 5: ['Workspace View icon', \"The icon for the Collection's Workspace View.\"],\n 6: ['Workspace View name', \"The name of the Collection's Workspace View (default if empty: Child Items).\"],\n 7: ['Show Content Workspace View First', \"Enable this to show the Content Workspace View by default instead of the Collection's.\"],\n }\n\n public static readonly multiURLPickerSettings = {\n 0: ['Minimum number of items', ''],\n 1: ['Maximum number of items', ''],\n 2: ['Ignore user start nodes', 'Selecting this option allows a user to choose nodes that they normally dont have access to.'],\n 3: ['Overlay Size', 'Select the width of the overlay.'],\n 4: ['Hide anchor/query string input', 'Selecting this hides the anchor/query string input field in the link picker overlay.'],\n }\n\n public static readonly numericSettings = {\n 0: ['Minimum', 'Enter the minimum amount of number to be entered'],\n 1: ['Maximum', 'Enter the maximum amount of number to be entered'],\n 2: ['Step size', 'Enter the intervals amount between each step of number to be entered']\n }\n\n public static readonly radioboxSettings = {\n 0: ['Add option', 'Add, remove or sort options for the list.'],\n }\n\n public static readonly tagsSettings = {\n 0: ['Tag group', ''],\n 1: ['Storage Type', 'Select whether to store the tags in cache as JSON (default) or CSV format. Notice that CSV does not support commas in the tag value.']\n }\n\n public static readonly textareaSettings = {\n 0: ['Maximum allowed characters', 'If empty - no character limit'],\n 1: ['Number of rows', 'If empty or zero, the textarea is set to auto-height']\n }\n\n public static readonly textstringSettings = {\n 0: ['Maximum allowed characters', 'If empty, 512 character limit'],\n }\n\n public static readonly trueFalseSettings = {\n 0: ['Preset value', ''],\n 1: ['Show on/off labels', ''],\n 2: ['Label On', 'Displays text when enabled.'],\n 3: ['Label Off', 'Displays text when disabled.'],\n 4: ['Screen Reader Label', ''],\n }\n\n public static readonly uploadSettings = {\n 0: ['Accepted file extensions', ''],\n }\n\n public static readonly tipTapSettings = {\n 0: ['Capabilities', 'Choose which Tiptap extensions to enable.\\nOnce enabled, the related actions will be available for the toolbar and statusbar.'],\n 1: ['Toolbar', 'Design the available actions.\\nDrag and drop the available actions onto the toolbar.'],\n 2: ['Statusbar', 'Design the available statuses.\\nDrag and drop the available actions onto the statusbar areas.'],\n 3: ['Stylesheets', 'Pick the stylesheets whose editor styles should be available when editing.'],\n 4: ['Dimensions', 'Sets the fixed width and height of the editor. This excludes the toolbar and statusbar heights.'],\n 5: ['Maximum size for inserted images', 'Maximum width or height - enter 0 to disable resizing.'],\n 6: ['Overlay size', 'Select the width of the overlay (link picker).'],\n 7: ['Available Blocks', 'Define the available blocks.'],\n 8: ['Image Upload Folder', 'Choose the upload location of pasted images.'],\n 9: ['Ignore User Start Nodes', ''],\n }\n\n public static readonly tinyMCESettings = {\n 0: ['Toolbar', 'Pick the toolbar options that should be available when editing'],\n 1: ['Stylesheets', 'Pick the stylesheets whose editor styles should be available when editing'],\n 2: ['Dimensions', 'Set the editor dimensions'],\n 3: ['Maximum size for inserted images', 'Maximum width or height - enter 0 to disable resizing.'],\n 4: ['Mode', 'Select the mode for the editor'],\n 5: ['Available Blocks', 'Define the available blocks.'],\n 6: ['Overlay size', 'Select the width of the overlay (link picker).'],\n 7: ['Hide Label', ''],\n 8: ['Image Upload Folder', 'Choose the upload location of pasted images.'],\n 9: ['Ignore User Start Nodes', ''],\n }\n\n public static readonly userGroupAssignAccessSettings = {\n 0: ['Sections', 'Add sections to give users access'],\n 1: ['Languages', 'Limit the languages users have access to edit'],\n 2: ['Select content start node', 'Limit the content tree to a specific start node'],\n 3: ['Select media start node', 'Limit the media library to a specific start node']\n }\n\n public static readonly userGroupDefaultPermissionsSettings = {\n 0: ['General', ''],\n 1: ['Structure', ''],\n 2: ['Administration', ''],\n 3: ['Granular permissions', 'Assign permissions to specific documents'],\n }\n\n public static readonly userGroupGranularPermissionsSettings = {\n 0: ['General', ''],\n 1: ['Granular permissions', 'Assign permissions to Document property values'],\n }\n\n public static readonly userGroupPermissionsSettings = {\n 0: ['Read', 'Allow access to read a Document', 'Umb.Document.Read'],\n 1: ['Create Document Blueprint', 'Allow access to create a Document Blueprint', 'Umb.Document.CreateBlueprint'],\n 2: ['Delete', 'Allow access to delete a Document', 'Umb.Document.Delete'],\n 3: ['Create', 'Allow access to create a Document', 'Umb.Document.Create'],\n 4: ['Notifications', 'Allow access to setup notifications for Documents', 'Umb.Document.Notifications'],\n 5: ['Publish', 'Allow access to publish a Document', 'Umb.Document.Publish'],\n 6: ['Unpublish', 'Allow access to unpublish a Document', 'Umb.Document.Unpublish'],\n 7: ['Update', 'Allow access to save a Document', 'Umb.Document.Update'],\n 8: ['Duplicate', 'Allow access to copy a Document', 'Umb.Document.Duplicate'],\n 9: ['Move to', 'Allow access to move a Document', 'Umb.Document.Move'],\n 10: ['Sort children', 'Allow access to change the sort order for Documents', 'Umb.Document.Sort'],\n 11: ['Culture and Hostnames', 'Allow access to assign culture and hostnames', 'Umb.Document.CultureAndHostnames'],\n 12: ['Public Access', 'Allow access to set and change access restrictions for a Document', 'Umb.Document.PublicAccess'],\n 13: ['Rollback', 'Allow access to roll back a Document to a previous state', 'Umb.Document.Rollback']\n }\n\n public static readonly userGroupSectionsSettings = {\n 0: ['Content', 'Umb.Section.Content'],\n 1: ['Forms', 'Umb.Section.Forms'],\n 2: ['Media', 'Umb.Section.Media'],\n 3: ['Members', 'Umb.Section.Members'],\n 4: ['Packages', 'Umb.Section.Packages'],\n 5: ['Settings', 'Umb.Section.Settings'],\n 6: ['Translation', 'Umb.Section.Translation'],\n 7: ['Users', 'Umb.Section.Users'],\n }\n\n public static readonly trashDeleteDialogMessage = {\n referenceHeadline: 'The following items depend on this',\n bulkReferenceHeadline: 'The following items are used by other content.'\n }\n\n public static readonly webhookEvents = [\n {\n \"eventName\": \"Content Deleted\",\n \"eventType\": \"Content\",\n \"alias\": \"Umbraco.ContentDelete\"\n },\n {\n \"eventName\": \"Content Published\",\n \"eventType\": \"Content\",\n \"alias\": \"Umbraco.ContentPublish\"\n },\n {\n \"eventName\": \"Content Unpublished\",\n \"eventType\": \"Content\",\n \"alias\": \"Umbraco.ContentUnpublish\"\n },\n {\n \"eventName\": \"Media Deleted\",\n \"eventType\": \"Media\",\n \"alias\": \"Umbraco.MediaDelete\"\n },\n {\n \"eventName\": \"Media Saved\",\n \"eventType\": \"Media\",\n \"alias\": \"Umbraco.MediaSave\"\n }\n ]\n\n public static readonly dateTimeWithTimeZonePickerSetting = {\n 0: ['Time format', ''],\n 1: ['Time zones', 'Select the time zones that the editor should be able to pick from.']\n }\n}"]}
@@ -176,6 +176,10 @@ export declare class ContentUiHelper extends UiBaseLocators {
176
176
  private readonly languageToggle;
177
177
  private readonly contentVariantDropdown;
178
178
  private readonly blockProperty;
179
+ private readonly linkPickerAddBtn;
180
+ private readonly linkPickerCloseBtn;
181
+ private readonly linkPickerTargetToggle;
182
+ private readonly confirmToResetBtn;
179
183
  constructor(page: Page);
180
184
  enterContentName(name: string): Promise<void>;
181
185
  clickSaveAndPublishButton(): Promise<void>;
@@ -354,6 +358,8 @@ export declare class ContentUiHelper extends UiBaseLocators {
354
358
  clickActionsMenuForProperty(groupName: string, propertyName: string): Promise<void>;
355
359
  clickAddBlockGridElementWithName(elementTypeName: string): Promise<void>;
356
360
  clickEditBlockListEntryWithName(blockListElementName: string): Promise<void>;
361
+ clickEditBlockGridEntryWithName(blockGridElementName: string): Promise<void>;
362
+ goToRTEBlockWithName(groupName: string, propertyName: string, blockName: string, index?: number): Promise<void>;
357
363
  clickSelectBlockElementWithName(elementTypeName: string): Promise<void>;
358
364
  clickSelectBlockElementInAreaWithName(elementTypeName: string): Promise<void>;
359
365
  clickBlockElementWithName(elementTypeName: string): Promise<void>;
@@ -461,4 +467,11 @@ export declare class ContentUiHelper extends UiBaseLocators {
461
467
  isInlineBlockPropertyVisibleForBlockWithName(blockName: string, propertyName: string, isVisible?: boolean, index?: number): Promise<void>;
462
468
  enterInlineBlockPropertyValue(propertyName: string, value: string, index?: number): Promise<void>;
463
469
  doesInlineBlockPropertyHaveValue(propertyName: string, value: string, index?: number): Promise<void>;
470
+ removeNotFoundContentPickerWithId(contentPickerId?: string): Promise<void>;
471
+ isLinkPickerAddButtonEnabled(): Promise<void>;
472
+ isLinkPickerAddButtonDisabled(): Promise<void>;
473
+ clickLinkPickerCloseButton(): Promise<void>;
474
+ clickLinkPickerAddButton(): Promise<void>;
475
+ clickLinkPickerTargetToggle(): Promise<void>;
476
+ clickConfirmToResetButton(): Promise<void>;
464
477
  }
@@ -180,6 +180,10 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
180
180
  languageToggle;
181
181
  contentVariantDropdown;
182
182
  blockProperty;
183
+ linkPickerAddBtn;
184
+ linkPickerCloseBtn;
185
+ linkPickerTargetToggle;
186
+ confirmToResetBtn;
183
187
  constructor(page) {
184
188
  super(page);
185
189
  this.saveContentBtn = page.getByTestId('workspace-action:Umb.WorkspaceAction.Document.Save');
@@ -368,6 +372,11 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
368
372
  this.languageToggle = page.getByTestId('input:entity-name').locator('#toggle');
369
373
  this.contentVariantDropdown = page.locator('umb-document-workspace-split-view-variant-selector uui-popover-container #dropdown');
370
374
  this.blockProperty = page.locator('umb-block-workspace-view-edit-property');
375
+ // Multi URL Picker
376
+ this.linkPickerAddBtn = this.linkPickerModal.getByRole('button', { name: 'Add', exact: true });
377
+ this.linkPickerCloseBtn = this.linkPickerModal.getByRole('button', { name: 'Close', exact: true });
378
+ this.linkPickerTargetToggle = this.linkPickerModal.locator('[label="Opens the link in a new window or tab"]').locator('#toggle');
379
+ this.confirmToResetBtn = page.locator('#confirm').getByLabel('Reset', { exact: true });
371
380
  }
372
381
  async enterContentName(name) {
373
382
  await this.enterText(this.contentNameTxt, name, { verify: true });
@@ -1052,6 +1061,16 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
1052
1061
  async clickEditBlockListEntryWithName(blockListElementName) {
1053
1062
  await this.click(this.blockListEntry.filter({ hasText: blockListElementName }).getByLabel('edit'), { force: true });
1054
1063
  }
1064
+ async clickEditBlockGridEntryWithName(blockGridElementName) {
1065
+ const blockGridElementLocator = this.blockGridEntry.filter({ hasText: blockGridElementName });
1066
+ const blockGridEditButton = blockGridElementLocator.getByLabel('edit');
1067
+ await this.hoverAndClick(blockGridElementLocator, blockGridEditButton, { force: true });
1068
+ }
1069
+ async goToRTEBlockWithName(groupName, propertyName, blockName, index = 0) {
1070
+ const rteProperty = this.workspaceEditTab.filter({ hasText: groupName }).locator(this.workspaceEditProperties).filter({ hasText: propertyName });
1071
+ const rteBlockLocator = rteProperty.locator(this.rteBlock).filter({ hasText: blockName }).nth(index);
1072
+ await this.click(rteBlockLocator);
1073
+ }
1055
1074
  async clickSelectBlockElementWithName(elementTypeName) {
1056
1075
  await this.click(this.page.getByRole('button', { name: elementTypeName, exact: true }));
1057
1076
  }
@@ -1391,7 +1410,8 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
1391
1410
  await this.isVisible(this.documentTableColumnName.filter({ hasText: contentName }), isVisible);
1392
1411
  }
1393
1412
  async selectDocumentBlueprintWithName(blueprintName) {
1394
- await this.click(this.documentCreateOptionsModal.locator('uui-menu-item', { hasText: blueprintName }));
1413
+ const blueprintLocator = this.documentCreateOptionsModal.locator('uui-menu-item', { hasText: blueprintName });
1414
+ await this.click(blueprintLocator);
1395
1415
  }
1396
1416
  async doesDocumentModalHaveText(text) {
1397
1417
  await this.containsText(this.documentCreateOptionsModal, text);
@@ -1410,6 +1430,7 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
1410
1430
  await this.clickChooseButton();
1411
1431
  await this.click(this.collectionMenu.locator('umb-collection-menu-item', { hasText: name }));
1412
1432
  await this.clickChooseContainerButton();
1433
+ await this.page.waitForTimeout(500);
1413
1434
  }
1414
1435
  async chooseTreeMenuItemWithName(name, parentNames = []) {
1415
1436
  await this.clickChooseButton();
@@ -1418,6 +1439,7 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
1418
1439
  }
1419
1440
  await this.click(this.container.getByLabel(name));
1420
1441
  await this.clickChooseContainerButton();
1442
+ await this.page.waitForTimeout(500);
1421
1443
  }
1422
1444
  async isChooseButtonVisible(isVisible = true) {
1423
1445
  await this.isVisible(this.chooseBtn, isVisible);
@@ -1471,6 +1493,31 @@ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
1471
1493
  const propertyLocator = this.blockListEntry.nth(index).locator(this.blockProperty).filter({ hasText: propertyName }).locator('input');
1472
1494
  await this.hasValue(propertyLocator, value);
1473
1495
  }
1496
+ async removeNotFoundContentPickerWithId(contentPickerId) {
1497
+ const hasText = contentPickerId ? contentPickerId : 'Not found';
1498
+ const contentPickerLocator = this.entityItem.filter({ hasText: hasText });
1499
+ const removeButton = contentPickerLocator.getByLabel('Remove');
1500
+ await this.hoverAndClick(contentPickerLocator, removeButton);
1501
+ await this.clickConfirmRemoveButton();
1502
+ }
1503
+ async isLinkPickerAddButtonEnabled() {
1504
+ await (0, test_1.expect)(this.linkPickerAddBtn).toBeEnabled();
1505
+ }
1506
+ async isLinkPickerAddButtonDisabled() {
1507
+ await (0, test_1.expect)(this.linkPickerAddBtn).toBeDisabled();
1508
+ }
1509
+ async clickLinkPickerCloseButton() {
1510
+ await this.click(this.linkPickerCloseBtn);
1511
+ }
1512
+ async clickLinkPickerAddButton() {
1513
+ await this.click(this.linkPickerAddBtn);
1514
+ }
1515
+ async clickLinkPickerTargetToggle() {
1516
+ await this.click(this.linkPickerTargetToggle);
1517
+ }
1518
+ async clickConfirmToResetButton() {
1519
+ await this.click(this.confirmToResetBtn);
1520
+ }
1474
1521
  }
1475
1522
  exports.ContentUiHelper = ContentUiHelper;
1476
1523
  //# sourceMappingURL=ContentUiHelper.js.map