@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.
- package/dist/lib/helpers/BasePage.d.ts +4 -2
- package/dist/lib/helpers/BasePage.js +6 -2
- package/dist/lib/helpers/BasePage.js.map +1 -1
- package/dist/lib/helpers/ConstantHelper.d.ts +1 -0
- package/dist/lib/helpers/ConstantHelper.js +2 -1
- package/dist/lib/helpers/ConstantHelper.js.map +1 -1
- package/dist/lib/helpers/ContentUiHelper.d.ts +13 -0
- package/dist/lib/helpers/ContentUiHelper.js +48 -1
- package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
- package/dist/lib/helpers/DataTypeUiHelper.js +4 -4
- package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/DictionaryUiHelper.js +1 -2
- package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentApiHelper.d.ts +4 -4
- package/dist/lib/helpers/DocumentApiHelper.js +32 -8
- package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentBlueprintUiHelper.js +1 -2
- package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +5 -0
- package/dist/lib/helpers/DocumentTypeApiHelper.js +35 -0
- package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentTypeUiHelper.js +2 -2
- package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/ExamineManagementUiHelper.js +2 -3
- package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -1
- package/dist/lib/helpers/FormsUiHelper.js +1 -2
- package/dist/lib/helpers/FormsUiHelper.js.map +1 -1
- package/dist/lib/helpers/HealthCheckUiHelper.js +4 -4
- package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -1
- package/dist/lib/helpers/LanguageUiHelper.js +1 -2
- package/dist/lib/helpers/LanguageUiHelper.js.map +1 -1
- package/dist/lib/helpers/LogViewerUiHelper.js +2 -2
- package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
- package/dist/lib/helpers/LoginUiHelper.js +1 -2
- package/dist/lib/helpers/LoginUiHelper.js.map +1 -1
- package/dist/lib/helpers/MediaUiHelper.js +2 -2
- package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberGroupUiHelper.js +2 -2
- package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberUiHelper.js +1 -1
- package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
- package/dist/lib/helpers/PackageUiHelper.js +1 -2
- package/dist/lib/helpers/PackageUiHelper.js.map +1 -1
- package/dist/lib/helpers/PartialViewUiHelper.js +1 -2
- package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
- package/dist/lib/helpers/PublishedStatusUiHelper.js +1 -2
- package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -1
- package/dist/lib/helpers/RelationTypeUiHelper.js +1 -2
- package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/ScriptUiHelper.js +1 -2
- package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
- package/dist/lib/helpers/StylesheetUiHelper.js +1 -2
- package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
- package/dist/lib/helpers/TemplateApiHelper.d.ts +2 -0
- package/dist/lib/helpers/TemplateApiHelper.js +36 -0
- package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
- package/dist/lib/helpers/TemplateUiHelper.js +3 -4
- package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
- package/dist/lib/helpers/UiBaseLocators.d.ts +1 -0
- package/dist/lib/helpers/UiBaseLocators.js +23 -16
- package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
- package/dist/lib/helpers/UserGroupUiHelper.js +5 -5
- package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
- package/dist/lib/helpers/UserUiHelper.js +3 -3
- package/dist/lib/helpers/UserUiHelper.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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', {
|
|
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
|
-
|
|
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', {
|
|
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
|
|
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"]}
|
|
@@ -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
|
-
|
|
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
|