@thinkwise/testwise 0.0.2-alpha.2 → 0.1.63
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/Testwise.ts +5 -1
- package/components/actionbar/Actionbar.ts +126 -18
- package/components/actionbar/ActionbarObjects.ts +46 -41
- package/components/filter/FilterForm.ts +1 -1
- package/components/filter/FindForm.ts +1 -1
- package/components/form/Form.ts +23 -24
- package/components/form/FormObjects.ts +25 -0
- package/components/grid/Grid.ts +88 -12
- package/components/grid/GridObjects.ts +16 -8
- package/components/index.ts +7 -3
- package/components/pop-up/PopUpComponent.ts +5 -1
- package/components/pop-up/{PopUpComponentModels.ts → PopUpComponentObjects.ts} +4 -0
- package/components/tab/BaseTab.ts +42 -0
- package/components/tab/BaseTabObjects.ts +23 -0
- package/components/tab/ComponentTab.ts +35 -0
- package/components/tab/ComponentTabObjects.ts +14 -0
- package/components/tab/DetailTab.ts +20 -0
- package/components/tab/DetailTabObjects.ts +10 -0
- package/components/task/TaskBar.ts +29 -9
- package/components/task/TaskBarObjects.ts +24 -0
- package/components/task/TaskTile.ts +28 -0
- package/components/task/TaskTileObjects.ts +20 -0
- package/controls/LookupDropdown.ts +54 -0
- package/controls/index.ts +1 -0
- package/dist/Testwise.js +4 -2
- package/dist/Testwise.js.map +1 -1
- package/dist/biome.json +52 -0
- package/dist/components/actionbar/Actionbar.d.ts +53 -7
- package/dist/components/actionbar/Actionbar.js +74 -14
- package/dist/components/actionbar/Actionbar.js.map +1 -1
- package/dist/components/actionbar/ActionbarObjects.d.ts +17 -4
- package/dist/components/actionbar/ActionbarObjects.js +35 -24
- package/dist/components/actionbar/ActionbarObjects.js.map +1 -1
- package/dist/components/filter/FilterForm.d.ts +5 -0
- package/dist/components/filter/FilterForm.js +10 -0
- package/dist/components/filter/FilterForm.js.map +1 -0
- package/dist/components/filter/FindForm.d.ts +5 -0
- package/dist/components/filter/FindForm.js +10 -0
- package/dist/components/filter/FindForm.js.map +1 -0
- package/dist/components/form/Form.d.ts +7 -5
- package/dist/components/form/Form.js +17 -25
- package/dist/components/form/Form.js.map +1 -1
- package/dist/components/form/FormObjects.d.ts +9 -0
- package/dist/components/form/FormObjects.js +20 -0
- package/dist/components/form/FormObjects.js.map +1 -0
- package/dist/components/grid/Grid.d.ts +25 -6
- package/dist/components/grid/Grid.js +80 -16
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/GridObjects.d.ts +5 -3
- package/dist/components/grid/GridObjects.js +9 -6
- package/dist/components/grid/GridObjects.js.map +1 -1
- package/dist/components/index.d.ts +7 -3
- package/dist/components/index.js +7 -3
- package/dist/components/index.js.map +1 -1
- package/dist/components/pop-up/PopUpComponent.d.ts +2 -0
- package/dist/components/pop-up/PopUpComponent.js +3 -1
- package/dist/components/pop-up/PopUpComponent.js.map +1 -1
- package/dist/components/pop-up/{PopUpComponentModels.d.ts → PopUpComponentObjects.d.ts} +2 -0
- package/dist/components/pop-up/{PopUpComponentModels.js → PopUpComponentObjects.js} +3 -1
- package/dist/components/pop-up/PopUpComponentObjects.js.map +1 -0
- package/dist/components/tab/BaseTab.d.ts +11 -0
- package/dist/components/tab/BaseTab.js +34 -0
- package/dist/components/tab/BaseTab.js.map +1 -0
- package/dist/components/tab/BaseTabObjects.d.ts +10 -0
- package/dist/components/tab/BaseTabObjects.js +14 -0
- package/dist/components/tab/BaseTabObjects.js.map +1 -0
- package/dist/components/tab/ComponentTab.d.ts +11 -0
- package/dist/components/tab/ComponentTab.js +27 -0
- package/dist/components/tab/ComponentTab.js.map +1 -0
- package/dist/components/tab/ComponentTabObjects.d.ts +7 -0
- package/dist/components/tab/ComponentTabObjects.js +10 -0
- package/dist/components/tab/ComponentTabObjects.js.map +1 -0
- package/dist/components/tab/DetailTab.d.ts +9 -0
- package/dist/components/tab/DetailTab.js +15 -0
- package/dist/components/tab/DetailTab.js.map +1 -0
- package/dist/components/tab/DetailTabObjects.d.ts +5 -0
- package/dist/components/tab/DetailTabObjects.js +7 -0
- package/dist/components/tab/DetailTabObjects.js.map +1 -0
- package/dist/components/task/TaskBar.d.ts +17 -0
- package/dist/components/task/TaskBar.js +23 -0
- package/dist/components/task/TaskBar.js.map +1 -0
- package/dist/components/task/TaskBarObjects.d.ts +17 -0
- package/dist/components/task/TaskBarObjects.js +19 -0
- package/dist/components/task/TaskBarObjects.js.map +1 -0
- package/dist/components/task/TaskTile.d.ts +14 -0
- package/dist/components/task/TaskTile.js +20 -0
- package/dist/components/task/TaskTile.js.map +1 -0
- package/dist/components/task/TaskTileObjects.d.ts +13 -0
- package/dist/components/task/TaskTileObjects.js +15 -0
- package/dist/components/task/TaskTileObjects.js.map +1 -0
- package/dist/config.json +10 -10
- package/dist/controls/LookupDropdown.d.ts +11 -0
- package/dist/controls/LookupDropdown.js +39 -0
- package/dist/controls/LookupDropdown.js.map +1 -0
- package/dist/controls/index.d.ts +1 -0
- package/dist/controls/index.js +2 -0
- package/dist/controls/index.js.map +1 -0
- package/dist/enums/LogLevel.d.ts +2 -3
- package/dist/enums/LogLevel.js +1 -2
- package/dist/enums/LogLevel.js.map +1 -1
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.js +2 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/example-code/TestifyService.js +22 -12
- package/dist/example-code/TestifyService.js.map +1 -1
- package/dist/helpers/Ensure.d.ts +2 -0
- package/dist/helpers/Ensure.js +10 -0
- package/dist/helpers/Ensure.js.map +1 -0
- package/dist/helpers/FlightTracker.d.ts +6 -0
- package/dist/helpers/FlightTracker.js +25 -0
- package/dist/helpers/FlightTracker.js.map +1 -0
- package/dist/helpers/GlobalWaitEventHandler.d.ts +12 -0
- package/dist/helpers/GlobalWaitEventHandler.js +53 -0
- package/dist/helpers/GlobalWaitEventHandler.js.map +1 -0
- package/dist/helpers/LoginHelper.d.ts +3 -2
- package/dist/helpers/LoginHelper.js +20 -4
- package/dist/helpers/LoginHelper.js.map +1 -1
- package/dist/helpers/Poll.d.ts +2 -0
- package/dist/helpers/Poll.js +17 -0
- package/dist/helpers/Poll.js.map +1 -0
- package/dist/helpers/RegexHelper.d.ts +5 -0
- package/dist/helpers/RegexHelper.js +16 -0
- package/dist/helpers/RegexHelper.js.map +1 -0
- package/dist/helpers/UserSimulationHelper.d.ts +1 -1
- package/dist/helpers/UserSimulationHelper.js +10 -6
- package/dist/helpers/UserSimulationHelper.js.map +1 -1
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.js +3 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +8 -12
- package/dist/index.js +9 -13
- package/dist/index.js.map +1 -1
- package/dist/package-lock.json +4087 -0
- package/dist/package.json +57 -0
- package/dist/page-extensions/GoToDeepLink.js +15 -1
- package/dist/page-extensions/GoToDeepLink.js.map +1 -1
- package/dist/page-extensions/LoginFeatures.d.ts +2 -1
- package/dist/page-extensions/LoginFeatures.js +3 -0
- package/dist/page-extensions/LoginFeatures.js.map +1 -1
- package/dist/page-extensions/WaitEventHandler.d.ts +12 -0
- package/dist/page-extensions/WaitEventHandler.js +15 -0
- package/dist/page-extensions/WaitEventHandler.js.map +1 -0
- package/dist/page-extensions/index.d.ts +3 -0
- package/dist/page-extensions/index.js +4 -0
- package/dist/page-extensions/index.js.map +1 -0
- package/dist/page-overrides/ClickOverride.d.ts +1 -0
- package/dist/page-overrides/ClickOverride.js +46 -25
- package/dist/page-overrides/ClickOverride.js.map +1 -1
- package/dist/page-overrides/FillOverride.d.ts +7 -0
- package/dist/page-overrides/FillOverride.js +106 -0
- package/dist/page-overrides/FillOverride.js.map +1 -0
- package/dist/page-overrides/index.d.ts +1 -0
- package/dist/page-overrides/index.js +2 -0
- package/dist/page-overrides/index.js.map +1 -0
- package/dist/scripts/Testwise.template.json +25 -0
- package/dist/services/ConfigBuilder.js +23 -1
- package/dist/services/ConfigBuilder.js.map +1 -1
- package/dist/services/Logger.d.ts +1 -2
- package/dist/services/Logger.js +69 -15
- package/dist/services/Logger.js.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tsconfig.json +20 -0
- package/dist/types/PollTypes.d.ts +6 -0
- package/dist/types/PollTypes.js +2 -0
- package/dist/types/PollTypes.js.map +1 -0
- package/dist/types/Universal.js +2 -0
- package/dist/types/Universal.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/enums/LogLevel.ts +2 -3
- package/enums/index.ts +1 -0
- package/example-code/TestifyService.ts +26 -12
- package/helpers/Ensure.ts +9 -0
- package/helpers/FlightTracker.ts +26 -0
- package/helpers/GlobalWaitEventHandler.ts +66 -0
- package/helpers/LoginHelper.ts +26 -5
- package/helpers/Poll.ts +19 -0
- package/helpers/RegexHelper.ts +17 -0
- package/helpers/UserSimulationHelper.ts +11 -6
- package/helpers/index.ts +2 -0
- package/index.ts +9 -13
- package/package.json +21 -4
- package/page-extensions/GoToDeepLink.ts +17 -1
- package/page-extensions/LoginFeatures.ts +6 -1
- package/page-extensions/WaitEventHandler.ts +26 -0
- package/page-extensions/index.ts +3 -0
- package/page-overrides/ClickOverride.ts +60 -26
- package/page-overrides/FillOverride.ts +133 -0
- package/page-overrides/index.ts +1 -0
- package/promptCredentials.js +41 -30
- package/scripts/Testwise.template.json +7 -1
- package/scripts/add-config.js +2 -2
- package/services/ConfigBuilder.ts +27 -1
- package/services/Logger.ts +73 -15
- package/services/index.ts +1 -0
- package/tsconfig.json +20 -0
- package/types/PollTypes.ts +6 -0
- package/types/index.ts +2 -0
- package/.ci/azure-pipelines.yaml +0 -80
- package/.eslintcache +0 -1
- package/.gitattributes +0 -3
- package/.gitconfig +0 -2
- package/.vscode/settings.json +0 -18
- package/components/tab/Tab.ts +0 -29
- package/components/task/TaskTiles.ts +0 -11
- package/dist/components/pop-up/PopUpComponentModels.js.map +0 -1
- package/dist/enums/ActionbarRegions.d.ts +0 -5
- package/dist/enums/ActionbarRegions.js +0 -7
- package/dist/enums/ActionbarRegions.js.map +0 -1
- package/dist/enums/ButtonEnums.d.ts +0 -24
- package/dist/enums/ButtonEnums.js +0 -29
- package/dist/enums/ButtonEnums.js.map +0 -1
- package/dist/helpers/InflightRequestTracker.d.ts +0 -10
- package/dist/helpers/InflightRequestTracker.js +0 -26
- package/dist/helpers/InflightRequestTracker.js.map +0 -1
- package/dist/types/universal.js +0 -2
- package/dist/types/universal.js.map +0 -1
- package/enums/ActionbarRegions.ts +0 -5
- package/enums/ButtonEnums.ts +0 -28
- package/helpers/InflightRequestTracker.ts +0 -33
- /package/dist/types/{universal.d.ts → Universal.d.ts} +0 -0
- /package/types/{universal.ts → Universal.ts} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseComponentObjects } from '../BaseComponentObjects.js';
|
|
3
|
+
|
|
4
|
+
export class BaseTabObjects extends BaseComponentObjects {
|
|
5
|
+
protected _page: Page;
|
|
6
|
+
|
|
7
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
8
|
+
super(page, context);
|
|
9
|
+
this._page = page;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public tabList = (): Locator => this.context.getByRole('tablist');
|
|
13
|
+
|
|
14
|
+
public tabByTestId = (name: string): Locator =>
|
|
15
|
+
this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}__"]`);
|
|
16
|
+
|
|
17
|
+
// use role for generic index-based selection
|
|
18
|
+
public tabByIndex = (index: number): Locator => this.tabList().getByRole('tab').nth(index);
|
|
19
|
+
|
|
20
|
+
// badge: leave as a CSS anchor on the tab testid
|
|
21
|
+
public badgeByName = (name: string): Locator =>
|
|
22
|
+
this._page.locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}"] [data-testid$="__badge"]`);
|
|
23
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseTab } from './BaseTab.js';
|
|
3
|
+
import { ComponentTabObjects } from './ComponentTabObjects.js';
|
|
4
|
+
|
|
5
|
+
export class ComponentTab extends BaseTab {
|
|
6
|
+
protected _objects: ComponentTabObjects;
|
|
7
|
+
|
|
8
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
9
|
+
super(page, context);
|
|
10
|
+
this._objects = new ComponentTabObjects(page, context);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// --- Component-specific helpers ---
|
|
14
|
+
|
|
15
|
+
// Opens the “List” tab in this tabstrip (default tabindex = -1 for master).
|
|
16
|
+
// If tabindex is left empty, the default is "-1" which is the master/base list tabindex
|
|
17
|
+
public async openListTab(tabindex: string = '-1'): Promise<void> {
|
|
18
|
+
await this._objects.listTab(tabindex).click();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Returns the “List” tab locator (scoped).
|
|
22
|
+
public async getListTab(tabindex: string = '-1'): Promise<Locator> {
|
|
23
|
+
return this._objects.listTab(tabindex);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Opens the “Form” tab in this tabstrip (scoped).
|
|
27
|
+
public async openFormTab(): Promise<void> {
|
|
28
|
+
await this._objects.formTab().click();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Returns the “Form” tab locator (scoped).
|
|
32
|
+
public async getFormTab(): Promise<Locator> {
|
|
33
|
+
return this._objects.formTab();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseTabObjects } from './BaseTabObjects.js';
|
|
3
|
+
|
|
4
|
+
export class ComponentTabObjects extends BaseTabObjects {
|
|
5
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
6
|
+
super(page, context);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Component-specific selectors
|
|
10
|
+
public listTab = (tabindex: string): Locator =>
|
|
11
|
+
this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__list"][tabindex="${tabindex}"]`);
|
|
12
|
+
|
|
13
|
+
public formTab = (): Locator => this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__form"]`);
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseTab } from './BaseTab.js';
|
|
3
|
+
import { DetailTabObjects } from './DetailTabObjects.js';
|
|
4
|
+
|
|
5
|
+
export class DetailTab extends BaseTab {
|
|
6
|
+
protected _objects: DetailTabObjects;
|
|
7
|
+
|
|
8
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
9
|
+
super(page, context);
|
|
10
|
+
this._objects = new DetailTabObjects(page, context);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public async getDetailTabById(name: string): Promise<Locator> {
|
|
14
|
+
return this._objects.tabByTestId(name);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public async getDetailTabByIndex(index: number): Promise<Locator> {
|
|
18
|
+
return this._objects.tabByIndex(index);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseTabObjects } from './BaseTabObjects.js';
|
|
3
|
+
|
|
4
|
+
export class DetailTabObjects extends BaseTabObjects {
|
|
5
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
6
|
+
super(page, context);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// No extra selectors yet — extend here if detail tabs ever get custom ones
|
|
10
|
+
}
|
|
@@ -1,11 +1,31 @@
|
|
|
1
|
-
import type { Locator } from '@playwright/test';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export class TaskBar
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { TaskBarObjects } from './TaskBarObjects.js';
|
|
3
|
+
|
|
4
|
+
export class TaskBar {
|
|
5
|
+
private _taskBarObjects: TaskBarObjects;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @param taskBarContext the taskbar container element (same idea as Grid's context)
|
|
9
|
+
*/
|
|
10
|
+
constructor(page: Page, taskBarContext: Locator | null = null) {
|
|
11
|
+
this._taskBarObjects = new TaskBarObjects(page, taskBarContext);
|
|
10
12
|
}
|
|
13
|
+
|
|
14
|
+
/** returns all task buttons */
|
|
15
|
+
public tasks = (): Locator => this._taskBarObjects.tasks(); // matches Grid's "rows()" noun-style
|
|
16
|
+
|
|
17
|
+
/** returns a task button by its data-testid key */
|
|
18
|
+
public getTaskById = (key: string): Locator => this._taskBarObjects.taskById(key);
|
|
19
|
+
|
|
20
|
+
/** returns a task button by its visible label */
|
|
21
|
+
public getTaskByLabel = (label: string): Locator => this._taskBarObjects.taskByLabel(label);
|
|
22
|
+
|
|
23
|
+
/** light action sugar (keep assertions in tests) */
|
|
24
|
+
public clickById = async (key: string): Promise<void> => {
|
|
25
|
+
await this.getTaskById(key).click();
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
public clickByLabel = async (label: string): Promise<void> => {
|
|
29
|
+
await this.getTaskByLabel(label).click();
|
|
30
|
+
};
|
|
11
31
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseComponentObjects } from '../BaseComponentObjects.js';
|
|
3
|
+
|
|
4
|
+
export class TaskBarObjects extends BaseComponentObjects {
|
|
5
|
+
/**
|
|
6
|
+
* @param page playwright page
|
|
7
|
+
* @param context the taskbar container element itself (e.g. page.getByTestId('task-toolbar-section').nth(0))
|
|
8
|
+
*/
|
|
9
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
10
|
+
super(page, context);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** returns the taskbar container (same as provided context) */
|
|
14
|
+
public container = (): Locator => this.context;
|
|
15
|
+
|
|
16
|
+
/** all task buttons within this taskbar */
|
|
17
|
+
public tasks = (): Locator => this.context.locator('button[data-testid^="toolbar__task__"]');
|
|
18
|
+
|
|
19
|
+
/** task by its data-testid key, e.g. toolbar__task__task-edit-a-category */
|
|
20
|
+
public taskById = (actionKey: string): Locator => this.context.getByTestId(`toolbar__task__${actionKey}`);
|
|
21
|
+
|
|
22
|
+
/** task by accessible label, e.g. "Add new category" */
|
|
23
|
+
public taskByLabel = (label: string): Locator => this.context.getByRole('button', { name: label });
|
|
24
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { TaskTileObjects } from './TaskTileObjects.js';
|
|
3
|
+
|
|
4
|
+
export class TaskTile {
|
|
5
|
+
private _taskTileObjects: TaskTileObjects;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @param taskTileContext the tasktile container element
|
|
9
|
+
*/
|
|
10
|
+
constructor(page: Page, taskTileContext: Locator | null = null) {
|
|
11
|
+
this._taskTileObjects = new TaskTileObjects(page, taskTileContext);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** returns all task tile buttons */
|
|
15
|
+
public tasks = (): Locator => this._taskTileObjects.tasks();
|
|
16
|
+
|
|
17
|
+
public getTaskById = (key: string): Locator => this._taskTileObjects.taskById(key);
|
|
18
|
+
|
|
19
|
+
public getTaskByLabel = (label: string): Locator => this._taskTileObjects.taskByLabel(label);
|
|
20
|
+
|
|
21
|
+
public clickById = async (key: string): Promise<void> => {
|
|
22
|
+
await this.getTaskById(key).click();
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
public clickByLabel = async (label: string): Promise<void> => {
|
|
26
|
+
await this.getTaskByLabel(label).click();
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
import { BaseComponentObjects } from '../BaseComponentObjects.js';
|
|
3
|
+
|
|
4
|
+
export class TaskTileObjects extends BaseComponentObjects {
|
|
5
|
+
constructor(page: Page, context: Locator | null = null) {
|
|
6
|
+
super(page, context);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** returns the taskbar container (same as provided context) */
|
|
10
|
+
public container = (): Locator => this.context;
|
|
11
|
+
|
|
12
|
+
/** all task buttons within this taskbar */
|
|
13
|
+
public tasks = (): Locator => this.context.locator('button[data-testid^="tasktiles"]');
|
|
14
|
+
|
|
15
|
+
/** task by its data-testid key, e.g. tasktiles__task__task-edit-a-category */
|
|
16
|
+
public taskById = (actionKey: string): Locator => this.context.getByTestId(`tasktiles__task__${actionKey}`);
|
|
17
|
+
|
|
18
|
+
/** task by accessible label, e.g. "Add new category" */
|
|
19
|
+
public taskByLabel = (label: string): Locator => this.context.getByRole('button', { name: label });
|
|
20
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: needed flexibility */
|
|
3
|
+
import type { Locator } from '@playwright/test';
|
|
4
|
+
import { escapeRegex } from '../helpers/RegexHelper.js';
|
|
5
|
+
|
|
6
|
+
class LookupDropdown {
|
|
7
|
+
private _locator: Locator;
|
|
8
|
+
|
|
9
|
+
constructor(locator: Locator) {
|
|
10
|
+
this._locator = locator;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async lookupSelect(optionToSelect: string): Promise<void> {
|
|
14
|
+
await Promise.all([this._locator.click(), this._locator.page().waitForResponse('**/list_**')]);
|
|
15
|
+
|
|
16
|
+
await this._locator.fill(optionToSelect);
|
|
17
|
+
await this._locator.page().waitEventHandler.setCanContinue(true);
|
|
18
|
+
|
|
19
|
+
await this.select(optionToSelect);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async selectOption(optionText: string): Promise<void> {
|
|
23
|
+
await this._locator.click();
|
|
24
|
+
await this.select(optionText);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private async select(optionToSelect: string) {
|
|
28
|
+
const optionsToSelectRegex = new RegExp(`^${escapeRegex(optionToSelect)}$`, 'i');
|
|
29
|
+
|
|
30
|
+
await this._locator.page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
|
|
31
|
+
await this._locator
|
|
32
|
+
.page()
|
|
33
|
+
.waitForFunction((el) => document.activeElement === el, await this._locator.elementHandle());
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function createLookupDropdown(locator: Locator): LookupDropdown & Locator {
|
|
38
|
+
const dropdown = new LookupDropdown(locator);
|
|
39
|
+
|
|
40
|
+
return new Proxy(dropdown, {
|
|
41
|
+
get(target, prop, receiver) {
|
|
42
|
+
if (prop in target) {
|
|
43
|
+
return Reflect.get(target, prop, receiver);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const value = (locator as any)[prop];
|
|
47
|
+
|
|
48
|
+
if (typeof value === 'function') {
|
|
49
|
+
return value.bind(locator);
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
}) as LookupDropdown & Locator;
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './LookupDropdown.js';
|
package/dist/Testwise.js
CHANGED
|
@@ -2,13 +2,15 @@ import { test as base } from '@playwright/test';
|
|
|
2
2
|
import { GoToDeepLink } from './page-extensions/GoToDeepLink.js';
|
|
3
3
|
import { LoginFeatures } from './page-extensions/LoginFeatures.js';
|
|
4
4
|
import { UserSimulation } from './page-extensions/UserSimulation.js';
|
|
5
|
+
import { WaitEventHandler } from './page-extensions/WaitEventHandler.js';
|
|
5
6
|
import { ClickOverride } from './page-overrides/ClickOverride.js';
|
|
7
|
+
import { FillOverride } from './page-overrides/FillOverride.js';
|
|
6
8
|
function combineExtensions(baseTest, ...extensions) {
|
|
7
9
|
return extensions.reduce((test, Extension) => new Extension(test).test, baseTest);
|
|
8
10
|
}
|
|
9
11
|
export const test = combineExtensions(base,
|
|
10
12
|
// Override section
|
|
11
|
-
ClickOverride,
|
|
13
|
+
ClickOverride, FillOverride,
|
|
12
14
|
// Extend section
|
|
13
|
-
GoToDeepLink, LoginFeatures, UserSimulation);
|
|
15
|
+
GoToDeepLink, LoginFeatures, UserSimulation, WaitEventHandler);
|
|
14
16
|
//# sourceMappingURL=Testwise.js.map
|
package/dist/Testwise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testwise.js","sourceRoot":"","sources":["../Testwise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"Testwise.js","sourceRoot":"","sources":["../Testwise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,SAAS,iBAAiB,CAAC,QAAc,EAAE,GAAG,UAAkD;IAC9F,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAS,iBAAiB,CACzC,IAAI;AAEJ,mBAAmB;AACnB,aAAa,EACb,YAAY;AAEZ,iBAAiB;AACjB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,CACjB,CAAC"}
|
package/dist/biome.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.1.2/schema.json",
|
|
3
|
+
"vcs": {
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"clientKind": "git",
|
|
6
|
+
"useIgnoreFile": true
|
|
7
|
+
},
|
|
8
|
+
"files": {
|
|
9
|
+
"ignoreUnknown": false
|
|
10
|
+
},
|
|
11
|
+
"formatter": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"indentStyle": "space",
|
|
14
|
+
"indentWidth": 2,
|
|
15
|
+
"lineWidth": 120
|
|
16
|
+
},
|
|
17
|
+
"linter": {
|
|
18
|
+
"enabled": true,
|
|
19
|
+
"rules": {
|
|
20
|
+
"recommended": true,
|
|
21
|
+
"correctness": {
|
|
22
|
+
"noUnusedImports": "warn"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"javascript": {
|
|
27
|
+
"formatter": {
|
|
28
|
+
"quoteStyle": "single",
|
|
29
|
+
"jsxQuoteStyle": "double",
|
|
30
|
+
"quoteProperties": "asNeeded",
|
|
31
|
+
"trailingCommas": "none",
|
|
32
|
+
"semicolons": "always",
|
|
33
|
+
"arrowParentheses": "always",
|
|
34
|
+
"bracketSameLine": false,
|
|
35
|
+
"attributePosition": "auto",
|
|
36
|
+
"bracketSpacing": true
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"json": {
|
|
40
|
+
"formatter": {
|
|
41
|
+
"enabled": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"assist": {
|
|
45
|
+
"enabled": true,
|
|
46
|
+
"actions": {
|
|
47
|
+
"source": {
|
|
48
|
+
"organizeImports": "on"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
|
-
|
|
2
|
+
declare class ActionbarActions {
|
|
3
3
|
private _objects;
|
|
4
|
-
constructor(page: Page,
|
|
5
|
-
/**
|
|
6
|
-
* Opens the Actionbar’s overflow menu and clicks on the 'Export' button inside it.
|
|
7
|
-
*/
|
|
8
|
-
clickExportButton(): Promise<void>;
|
|
4
|
+
constructor(page: Page, context?: Locator | null);
|
|
9
5
|
getAddButton: () => Locator;
|
|
10
6
|
getCancelButton: () => Locator;
|
|
11
7
|
getCopyButton: () => Locator;
|
|
@@ -13,7 +9,6 @@ export declare class Actionbar {
|
|
|
13
9
|
getRefreshButton: () => Locator;
|
|
14
10
|
getSaveButton: () => Locator;
|
|
15
11
|
getUpdateButton: () => Locator;
|
|
16
|
-
getOverflowMenuButton: () => Locator;
|
|
17
12
|
getExportButton: () => Locator;
|
|
18
13
|
getImportButton: () => Locator;
|
|
19
14
|
getExportImmediatelyButton: () => Locator;
|
|
@@ -24,4 +19,55 @@ export declare class Actionbar {
|
|
|
24
19
|
getRestoreSortOrderButton: () => Locator;
|
|
25
20
|
getSortButton: () => Locator;
|
|
26
21
|
getSearchInput: () => Locator;
|
|
22
|
+
getUpScreenTypeButton: () => Locator;
|
|
23
|
+
getUpDetailSettingsButton: () => Locator;
|
|
24
|
+
getUpManagePrefiltersButton: () => Locator;
|
|
25
|
+
getUpGridSettingsButton: () => Locator;
|
|
26
|
+
getCubeSortButton: () => Locator;
|
|
27
|
+
getCubePivotSettingsButton: () => Locator;
|
|
28
|
+
getCubeChartSettingsButton: () => Locator;
|
|
29
|
+
getSaveAsCubeViewButton: () => Locator;
|
|
30
|
+
getDeleteCubeViewButton: () => Locator;
|
|
31
|
+
getCollapseAllButton: () => Locator;
|
|
32
|
+
getExpandAllButton: () => Locator;
|
|
33
|
+
}
|
|
34
|
+
export declare class Actionbar extends ActionbarActions {
|
|
35
|
+
private _actionbarObjects;
|
|
36
|
+
private _overflowMenu;
|
|
37
|
+
constructor(page: Page, actionbarContext?: Locator | null);
|
|
38
|
+
openOverflowMenu: () => Promise<void>;
|
|
39
|
+
overflowMenu: {
|
|
40
|
+
getAddButton: () => Locator;
|
|
41
|
+
getCancelButton: () => Locator;
|
|
42
|
+
getCopyButton: () => Locator;
|
|
43
|
+
getDeleteButton: () => Locator;
|
|
44
|
+
getRefreshButton: () => Locator;
|
|
45
|
+
getSaveButton: () => Locator;
|
|
46
|
+
getUpdateButton: () => Locator;
|
|
47
|
+
getExportButton: () => Locator;
|
|
48
|
+
getImportButton: () => Locator;
|
|
49
|
+
getExportImmediatelyButton: () => Locator;
|
|
50
|
+
getMassUpdateButton: () => Locator;
|
|
51
|
+
getQuickFilterButton: () => Locator;
|
|
52
|
+
getFilterButton: () => Locator;
|
|
53
|
+
getClearAllFiltersButton: () => Locator;
|
|
54
|
+
getRestoreSortOrderButton: () => Locator;
|
|
55
|
+
getSortButton: () => Locator;
|
|
56
|
+
getSearchInput: () => Locator;
|
|
57
|
+
getUpScreenTypeButton: () => Locator;
|
|
58
|
+
getUpDetailSettingsButton: () => Locator;
|
|
59
|
+
getUpManagePrefiltersButton: () => Locator;
|
|
60
|
+
getUpGridSettingsButton: () => Locator;
|
|
61
|
+
getCubeSortButton: () => Locator;
|
|
62
|
+
getCubePivotSettingsButton: () => Locator;
|
|
63
|
+
getCubeChartSettingsButton: () => Locator;
|
|
64
|
+
getSaveAsCubeViewButton: () => Locator;
|
|
65
|
+
getDeleteCubeViewButton: () => Locator;
|
|
66
|
+
getCollapseAllButton: () => Locator;
|
|
67
|
+
getExpandAllButton: () => Locator;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export declare class ActionbarOverflow extends ActionbarActions {
|
|
71
|
+
constructor(page: Page);
|
|
27
72
|
}
|
|
73
|
+
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ActionbarObjects } from './ActionbarObjects.js';
|
|
2
|
-
|
|
3
|
-
constructor(page,
|
|
4
|
-
// CRUD Buttons
|
|
1
|
+
import { ActionbarObjects, ActionbarOverflowableObjects } from './ActionbarObjects.js';
|
|
2
|
+
class ActionbarActions {
|
|
3
|
+
constructor(page, context = null) {
|
|
5
4
|
this.getAddButton = () => this._objects.addButton();
|
|
6
5
|
this.getCancelButton = () => this._objects.cancelButton();
|
|
7
6
|
this.getCopyButton = () => this._objects.copyButton();
|
|
@@ -9,8 +8,6 @@ export class Actionbar {
|
|
|
9
8
|
this.getRefreshButton = () => this._objects.refreshButton();
|
|
10
9
|
this.getSaveButton = () => this._objects.saveButton();
|
|
11
10
|
this.getUpdateButton = () => this._objects.updateButton();
|
|
12
|
-
// Overflow Menu
|
|
13
|
-
this.getOverflowMenuButton = () => this._objects.overflowMenuButton();
|
|
14
11
|
this.getExportButton = () => this._objects.exportButton();
|
|
15
12
|
this.getImportButton = () => this._objects.importButton();
|
|
16
13
|
this.getExportImmediatelyButton = () => this._objects.exportImmediatelyButton();
|
|
@@ -20,16 +17,79 @@ export class Actionbar {
|
|
|
20
17
|
this.getClearAllFiltersButton = () => this._objects.clearAllFiltersButton();
|
|
21
18
|
this.getRestoreSortOrderButton = () => this._objects.restoreSortOrderButton();
|
|
22
19
|
this.getSortButton = () => this._objects.sortButton();
|
|
23
|
-
// Other Elements
|
|
24
20
|
this.getSearchInput = () => this._objects.searchInput();
|
|
25
|
-
this.
|
|
21
|
+
this.getUpScreenTypeButton = () => this._objects.upScreenTypeButton();
|
|
22
|
+
this.getUpDetailSettingsButton = () => this._objects.upDetailSettingsButton();
|
|
23
|
+
this.getUpManagePrefiltersButton = () => this._objects.upManagePrefiltersButton();
|
|
24
|
+
this.getUpGridSettingsButton = () => this._objects.upGridSettingsButton();
|
|
25
|
+
this.getCubeSortButton = () => this._objects.cubeSortButton();
|
|
26
|
+
this.getCubePivotSettingsButton = () => this._objects.cubePivotSettingsButton();
|
|
27
|
+
this.getCubeChartSettingsButton = () => this._objects.cubeChartSettingsButton();
|
|
28
|
+
this.getSaveAsCubeViewButton = () => this._objects.saveAsCubeViewButton();
|
|
29
|
+
this.getDeleteCubeViewButton = () => this._objects.deleteCubeViewButton();
|
|
30
|
+
this.getCollapseAllButton = () => this._objects.collapseAllButton();
|
|
31
|
+
this.getExpandAllButton = () => this._objects.expandAllButton();
|
|
32
|
+
this._objects = new ActionbarOverflowableObjects(page, context);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class Actionbar extends ActionbarActions {
|
|
36
|
+
constructor(page, actionbarContext = null) {
|
|
37
|
+
super(page, actionbarContext);
|
|
38
|
+
this.openOverflowMenu = async () => {
|
|
39
|
+
await this._actionbarObjects.overflowMenuButton().click();
|
|
40
|
+
};
|
|
41
|
+
this.overflowMenu = {
|
|
42
|
+
getAddButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getAddButton()),
|
|
43
|
+
getCancelButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getCancelButton()),
|
|
44
|
+
getCopyButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getCopyButton()),
|
|
45
|
+
getDeleteButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getDeleteButton()),
|
|
46
|
+
getRefreshButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getRefreshButton()),
|
|
47
|
+
getSaveButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getSaveButton()),
|
|
48
|
+
getUpdateButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getUpdateButton()),
|
|
49
|
+
getExportButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getExportButton()),
|
|
50
|
+
getImportButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getImportButton()),
|
|
51
|
+
getExportImmediatelyButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getExportImmediatelyButton()),
|
|
52
|
+
getMassUpdateButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getMassUpdateButton()),
|
|
53
|
+
getQuickFilterButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getQuickFilterButton()),
|
|
54
|
+
getFilterButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getFilterButton()),
|
|
55
|
+
getClearAllFiltersButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getClearAllFiltersButton()),
|
|
56
|
+
getRestoreSortOrderButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getRestoreSortOrderButton()),
|
|
57
|
+
getSortButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getSortButton()),
|
|
58
|
+
getSearchInput: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getSearchInput()),
|
|
59
|
+
getUpScreenTypeButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getUpScreenTypeButton()),
|
|
60
|
+
getUpDetailSettingsButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getUpDetailSettingsButton()),
|
|
61
|
+
getUpManagePrefiltersButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getUpManagePrefiltersButton()),
|
|
62
|
+
getUpGridSettingsButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getUpGridSettingsButton()),
|
|
63
|
+
getCubeSortButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getCubeSortButton()),
|
|
64
|
+
getCubePivotSettingsButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getCubePivotSettingsButton()),
|
|
65
|
+
getCubeChartSettingsButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getCubeChartSettingsButton()),
|
|
66
|
+
getSaveAsCubeViewButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getSaveAsCubeViewButton()),
|
|
67
|
+
getDeleteCubeViewButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getDeleteCubeViewButton()),
|
|
68
|
+
getCollapseAllButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getCollapseAllButton()),
|
|
69
|
+
getExpandAllButton: () => wrapWithOverflowOpen(this, () => this._overflowMenu.getExpandAllButton())
|
|
70
|
+
};
|
|
71
|
+
this._actionbarObjects = new ActionbarObjects(page, actionbarContext);
|
|
72
|
+
this._overflowMenu = new ActionbarOverflow(page);
|
|
26
73
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
await this._objects.overflowMenuButton().click();
|
|
32
|
-
await this._objects.exportButton().click();
|
|
74
|
+
}
|
|
75
|
+
export class ActionbarOverflow extends ActionbarActions {
|
|
76
|
+
constructor(page) {
|
|
77
|
+
super(page, page.getByTestId('actionbar__overflow-menu__context'));
|
|
33
78
|
}
|
|
34
79
|
}
|
|
80
|
+
function wrapWithOverflowOpen(actionBarInstance, getLocatorFn) {
|
|
81
|
+
const locator = getLocatorFn();
|
|
82
|
+
return new Proxy(locator, {
|
|
83
|
+
get(target, prop, receiver) {
|
|
84
|
+
const original = Reflect.get(target, prop, receiver);
|
|
85
|
+
if (typeof original === 'function') {
|
|
86
|
+
return async (...args) => {
|
|
87
|
+
await actionBarInstance.openOverflowMenu();
|
|
88
|
+
return original.apply(target, args);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return original;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
35
95
|
//# sourceMappingURL=Actionbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actionbar.js","sourceRoot":"","sources":["../../../components/actionbar/Actionbar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Actionbar.js","sourceRoot":"","sources":["../../../components/actionbar/Actionbar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { BaseComponentObjects } from '../BaseComponentObjects.js';
|
|
3
|
-
export declare class
|
|
4
|
-
private _page;
|
|
3
|
+
export declare class ActionbarOverflowableObjects extends BaseComponentObjects {
|
|
5
4
|
constructor(page: Page, context?: Locator | null);
|
|
6
5
|
addButton: () => Locator;
|
|
7
6
|
cancelButton: () => Locator;
|
|
@@ -10,7 +9,7 @@ export declare class ActionbarObjects extends BaseComponentObjects {
|
|
|
10
9
|
refreshButton: () => Locator;
|
|
11
10
|
saveButton: () => Locator;
|
|
12
11
|
updateButton: () => Locator;
|
|
13
|
-
|
|
12
|
+
searchInput: () => Locator;
|
|
14
13
|
exportButton: () => Locator;
|
|
15
14
|
importButton: () => Locator;
|
|
16
15
|
exportImmediatelyButton: () => Locator;
|
|
@@ -20,5 +19,19 @@ export declare class ActionbarObjects extends BaseComponentObjects {
|
|
|
20
19
|
clearAllFiltersButton: () => Locator;
|
|
21
20
|
restoreSortOrderButton: () => Locator;
|
|
22
21
|
sortButton: () => Locator;
|
|
23
|
-
|
|
22
|
+
upScreenTypeButton: () => Locator;
|
|
23
|
+
upDetailSettingsButton: () => Locator;
|
|
24
|
+
upManagePrefiltersButton: () => Locator;
|
|
25
|
+
upGridSettingsButton: () => Locator;
|
|
26
|
+
cubeSortButton: () => Locator;
|
|
27
|
+
cubePivotSettingsButton: () => Locator;
|
|
28
|
+
cubeChartSettingsButton: () => Locator;
|
|
29
|
+
saveAsCubeViewButton: () => Locator;
|
|
30
|
+
deleteCubeViewButton: () => Locator;
|
|
31
|
+
collapseAllButton: () => Locator;
|
|
32
|
+
expandAllButton: () => Locator;
|
|
33
|
+
}
|
|
34
|
+
export declare class ActionbarObjects extends ActionbarOverflowableObjects {
|
|
35
|
+
constructor(page: Page, context?: Locator | null);
|
|
36
|
+
overflowMenuButton: () => Locator;
|
|
24
37
|
}
|