@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.
Files changed (225) hide show
  1. package/Testwise.ts +5 -1
  2. package/components/actionbar/Actionbar.ts +126 -18
  3. package/components/actionbar/ActionbarObjects.ts +46 -41
  4. package/components/filter/FilterForm.ts +1 -1
  5. package/components/filter/FindForm.ts +1 -1
  6. package/components/form/Form.ts +23 -24
  7. package/components/form/FormObjects.ts +25 -0
  8. package/components/grid/Grid.ts +88 -12
  9. package/components/grid/GridObjects.ts +16 -8
  10. package/components/index.ts +7 -3
  11. package/components/pop-up/PopUpComponent.ts +5 -1
  12. package/components/pop-up/{PopUpComponentModels.ts → PopUpComponentObjects.ts} +4 -0
  13. package/components/tab/BaseTab.ts +42 -0
  14. package/components/tab/BaseTabObjects.ts +23 -0
  15. package/components/tab/ComponentTab.ts +35 -0
  16. package/components/tab/ComponentTabObjects.ts +14 -0
  17. package/components/tab/DetailTab.ts +20 -0
  18. package/components/tab/DetailTabObjects.ts +10 -0
  19. package/components/task/TaskBar.ts +29 -9
  20. package/components/task/TaskBarObjects.ts +24 -0
  21. package/components/task/TaskTile.ts +28 -0
  22. package/components/task/TaskTileObjects.ts +20 -0
  23. package/controls/LookupDropdown.ts +54 -0
  24. package/controls/index.ts +1 -0
  25. package/dist/Testwise.js +4 -2
  26. package/dist/Testwise.js.map +1 -1
  27. package/dist/biome.json +52 -0
  28. package/dist/components/actionbar/Actionbar.d.ts +53 -7
  29. package/dist/components/actionbar/Actionbar.js +74 -14
  30. package/dist/components/actionbar/Actionbar.js.map +1 -1
  31. package/dist/components/actionbar/ActionbarObjects.d.ts +17 -4
  32. package/dist/components/actionbar/ActionbarObjects.js +35 -24
  33. package/dist/components/actionbar/ActionbarObjects.js.map +1 -1
  34. package/dist/components/filter/FilterForm.d.ts +5 -0
  35. package/dist/components/filter/FilterForm.js +10 -0
  36. package/dist/components/filter/FilterForm.js.map +1 -0
  37. package/dist/components/filter/FindForm.d.ts +5 -0
  38. package/dist/components/filter/FindForm.js +10 -0
  39. package/dist/components/filter/FindForm.js.map +1 -0
  40. package/dist/components/form/Form.d.ts +7 -5
  41. package/dist/components/form/Form.js +17 -25
  42. package/dist/components/form/Form.js.map +1 -1
  43. package/dist/components/form/FormObjects.d.ts +9 -0
  44. package/dist/components/form/FormObjects.js +20 -0
  45. package/dist/components/form/FormObjects.js.map +1 -0
  46. package/dist/components/grid/Grid.d.ts +25 -6
  47. package/dist/components/grid/Grid.js +80 -16
  48. package/dist/components/grid/Grid.js.map +1 -1
  49. package/dist/components/grid/GridObjects.d.ts +5 -3
  50. package/dist/components/grid/GridObjects.js +9 -6
  51. package/dist/components/grid/GridObjects.js.map +1 -1
  52. package/dist/components/index.d.ts +7 -3
  53. package/dist/components/index.js +7 -3
  54. package/dist/components/index.js.map +1 -1
  55. package/dist/components/pop-up/PopUpComponent.d.ts +2 -0
  56. package/dist/components/pop-up/PopUpComponent.js +3 -1
  57. package/dist/components/pop-up/PopUpComponent.js.map +1 -1
  58. package/dist/components/pop-up/{PopUpComponentModels.d.ts → PopUpComponentObjects.d.ts} +2 -0
  59. package/dist/components/pop-up/{PopUpComponentModels.js → PopUpComponentObjects.js} +3 -1
  60. package/dist/components/pop-up/PopUpComponentObjects.js.map +1 -0
  61. package/dist/components/tab/BaseTab.d.ts +11 -0
  62. package/dist/components/tab/BaseTab.js +34 -0
  63. package/dist/components/tab/BaseTab.js.map +1 -0
  64. package/dist/components/tab/BaseTabObjects.d.ts +10 -0
  65. package/dist/components/tab/BaseTabObjects.js +14 -0
  66. package/dist/components/tab/BaseTabObjects.js.map +1 -0
  67. package/dist/components/tab/ComponentTab.d.ts +11 -0
  68. package/dist/components/tab/ComponentTab.js +27 -0
  69. package/dist/components/tab/ComponentTab.js.map +1 -0
  70. package/dist/components/tab/ComponentTabObjects.d.ts +7 -0
  71. package/dist/components/tab/ComponentTabObjects.js +10 -0
  72. package/dist/components/tab/ComponentTabObjects.js.map +1 -0
  73. package/dist/components/tab/DetailTab.d.ts +9 -0
  74. package/dist/components/tab/DetailTab.js +15 -0
  75. package/dist/components/tab/DetailTab.js.map +1 -0
  76. package/dist/components/tab/DetailTabObjects.d.ts +5 -0
  77. package/dist/components/tab/DetailTabObjects.js +7 -0
  78. package/dist/components/tab/DetailTabObjects.js.map +1 -0
  79. package/dist/components/task/TaskBar.d.ts +17 -0
  80. package/dist/components/task/TaskBar.js +23 -0
  81. package/dist/components/task/TaskBar.js.map +1 -0
  82. package/dist/components/task/TaskBarObjects.d.ts +17 -0
  83. package/dist/components/task/TaskBarObjects.js +19 -0
  84. package/dist/components/task/TaskBarObjects.js.map +1 -0
  85. package/dist/components/task/TaskTile.d.ts +14 -0
  86. package/dist/components/task/TaskTile.js +20 -0
  87. package/dist/components/task/TaskTile.js.map +1 -0
  88. package/dist/components/task/TaskTileObjects.d.ts +13 -0
  89. package/dist/components/task/TaskTileObjects.js +15 -0
  90. package/dist/components/task/TaskTileObjects.js.map +1 -0
  91. package/dist/config.json +10 -10
  92. package/dist/controls/LookupDropdown.d.ts +11 -0
  93. package/dist/controls/LookupDropdown.js +39 -0
  94. package/dist/controls/LookupDropdown.js.map +1 -0
  95. package/dist/controls/index.d.ts +1 -0
  96. package/dist/controls/index.js +2 -0
  97. package/dist/controls/index.js.map +1 -0
  98. package/dist/enums/LogLevel.d.ts +2 -3
  99. package/dist/enums/LogLevel.js +1 -2
  100. package/dist/enums/LogLevel.js.map +1 -1
  101. package/dist/enums/index.d.ts +1 -0
  102. package/dist/enums/index.js +2 -0
  103. package/dist/enums/index.js.map +1 -0
  104. package/dist/example-code/TestifyService.js +22 -12
  105. package/dist/example-code/TestifyService.js.map +1 -1
  106. package/dist/helpers/Ensure.d.ts +2 -0
  107. package/dist/helpers/Ensure.js +10 -0
  108. package/dist/helpers/Ensure.js.map +1 -0
  109. package/dist/helpers/FlightTracker.d.ts +6 -0
  110. package/dist/helpers/FlightTracker.js +25 -0
  111. package/dist/helpers/FlightTracker.js.map +1 -0
  112. package/dist/helpers/GlobalWaitEventHandler.d.ts +12 -0
  113. package/dist/helpers/GlobalWaitEventHandler.js +53 -0
  114. package/dist/helpers/GlobalWaitEventHandler.js.map +1 -0
  115. package/dist/helpers/LoginHelper.d.ts +3 -2
  116. package/dist/helpers/LoginHelper.js +20 -4
  117. package/dist/helpers/LoginHelper.js.map +1 -1
  118. package/dist/helpers/Poll.d.ts +2 -0
  119. package/dist/helpers/Poll.js +17 -0
  120. package/dist/helpers/Poll.js.map +1 -0
  121. package/dist/helpers/RegexHelper.d.ts +5 -0
  122. package/dist/helpers/RegexHelper.js +16 -0
  123. package/dist/helpers/RegexHelper.js.map +1 -0
  124. package/dist/helpers/UserSimulationHelper.d.ts +1 -1
  125. package/dist/helpers/UserSimulationHelper.js +10 -6
  126. package/dist/helpers/UserSimulationHelper.js.map +1 -1
  127. package/dist/helpers/index.d.ts +2 -0
  128. package/dist/helpers/index.js +3 -0
  129. package/dist/helpers/index.js.map +1 -0
  130. package/dist/index.d.ts +8 -12
  131. package/dist/index.js +9 -13
  132. package/dist/index.js.map +1 -1
  133. package/dist/package-lock.json +4087 -0
  134. package/dist/package.json +57 -0
  135. package/dist/page-extensions/GoToDeepLink.js +15 -1
  136. package/dist/page-extensions/GoToDeepLink.js.map +1 -1
  137. package/dist/page-extensions/LoginFeatures.d.ts +2 -1
  138. package/dist/page-extensions/LoginFeatures.js +3 -0
  139. package/dist/page-extensions/LoginFeatures.js.map +1 -1
  140. package/dist/page-extensions/WaitEventHandler.d.ts +12 -0
  141. package/dist/page-extensions/WaitEventHandler.js +15 -0
  142. package/dist/page-extensions/WaitEventHandler.js.map +1 -0
  143. package/dist/page-extensions/index.d.ts +3 -0
  144. package/dist/page-extensions/index.js +4 -0
  145. package/dist/page-extensions/index.js.map +1 -0
  146. package/dist/page-overrides/ClickOverride.d.ts +1 -0
  147. package/dist/page-overrides/ClickOverride.js +46 -25
  148. package/dist/page-overrides/ClickOverride.js.map +1 -1
  149. package/dist/page-overrides/FillOverride.d.ts +7 -0
  150. package/dist/page-overrides/FillOverride.js +106 -0
  151. package/dist/page-overrides/FillOverride.js.map +1 -0
  152. package/dist/page-overrides/index.d.ts +1 -0
  153. package/dist/page-overrides/index.js +2 -0
  154. package/dist/page-overrides/index.js.map +1 -0
  155. package/dist/scripts/Testwise.template.json +25 -0
  156. package/dist/services/ConfigBuilder.js +23 -1
  157. package/dist/services/ConfigBuilder.js.map +1 -1
  158. package/dist/services/Logger.d.ts +1 -2
  159. package/dist/services/Logger.js +69 -15
  160. package/dist/services/Logger.js.map +1 -1
  161. package/dist/services/index.d.ts +1 -0
  162. package/dist/services/index.js +2 -0
  163. package/dist/services/index.js.map +1 -0
  164. package/dist/tsconfig.json +20 -0
  165. package/dist/types/PollTypes.d.ts +6 -0
  166. package/dist/types/PollTypes.js +2 -0
  167. package/dist/types/PollTypes.js.map +1 -0
  168. package/dist/types/Universal.js +2 -0
  169. package/dist/types/Universal.js.map +1 -0
  170. package/dist/types/index.d.ts +2 -0
  171. package/dist/types/index.js +3 -0
  172. package/dist/types/index.js.map +1 -0
  173. package/enums/LogLevel.ts +2 -3
  174. package/enums/index.ts +1 -0
  175. package/example-code/TestifyService.ts +26 -12
  176. package/helpers/Ensure.ts +9 -0
  177. package/helpers/FlightTracker.ts +26 -0
  178. package/helpers/GlobalWaitEventHandler.ts +66 -0
  179. package/helpers/LoginHelper.ts +26 -5
  180. package/helpers/Poll.ts +19 -0
  181. package/helpers/RegexHelper.ts +17 -0
  182. package/helpers/UserSimulationHelper.ts +11 -6
  183. package/helpers/index.ts +2 -0
  184. package/index.ts +9 -13
  185. package/package.json +21 -4
  186. package/page-extensions/GoToDeepLink.ts +17 -1
  187. package/page-extensions/LoginFeatures.ts +6 -1
  188. package/page-extensions/WaitEventHandler.ts +26 -0
  189. package/page-extensions/index.ts +3 -0
  190. package/page-overrides/ClickOverride.ts +60 -26
  191. package/page-overrides/FillOverride.ts +133 -0
  192. package/page-overrides/index.ts +1 -0
  193. package/promptCredentials.js +41 -30
  194. package/scripts/Testwise.template.json +7 -1
  195. package/scripts/add-config.js +2 -2
  196. package/services/ConfigBuilder.ts +27 -1
  197. package/services/Logger.ts +73 -15
  198. package/services/index.ts +1 -0
  199. package/tsconfig.json +20 -0
  200. package/types/PollTypes.ts +6 -0
  201. package/types/index.ts +2 -0
  202. package/.ci/azure-pipelines.yaml +0 -80
  203. package/.eslintcache +0 -1
  204. package/.gitattributes +0 -3
  205. package/.gitconfig +0 -2
  206. package/.vscode/settings.json +0 -18
  207. package/components/tab/Tab.ts +0 -29
  208. package/components/task/TaskTiles.ts +0 -11
  209. package/dist/components/pop-up/PopUpComponentModels.js.map +0 -1
  210. package/dist/enums/ActionbarRegions.d.ts +0 -5
  211. package/dist/enums/ActionbarRegions.js +0 -7
  212. package/dist/enums/ActionbarRegions.js.map +0 -1
  213. package/dist/enums/ButtonEnums.d.ts +0 -24
  214. package/dist/enums/ButtonEnums.js +0 -29
  215. package/dist/enums/ButtonEnums.js.map +0 -1
  216. package/dist/helpers/InflightRequestTracker.d.ts +0 -10
  217. package/dist/helpers/InflightRequestTracker.js +0 -26
  218. package/dist/helpers/InflightRequestTracker.js.map +0 -1
  219. package/dist/types/universal.js +0 -2
  220. package/dist/types/universal.js.map +0 -1
  221. package/enums/ActionbarRegions.ts +0 -5
  222. package/enums/ButtonEnums.ts +0 -28
  223. package/helpers/InflightRequestTracker.ts +0 -33
  224. /package/dist/types/{universal.d.ts → Universal.d.ts} +0 -0
  225. /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 { BaseComponent } from '../BaseComponent';
3
-
4
- export class TaskBar extends BaseComponent {
5
- public async getLocator(context?: Locator): Promise<Locator> {
6
- if (context) {
7
- return context.getByTestId(this.id);
8
- }
9
- return this.page.getByTestId(this.id);
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
@@ -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;AAGlE,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;AAEb,iBAAiB;AACjB,YAAY,EACZ,aAAa,EACb,cAAc,CACf,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"}
@@ -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
- export declare class Actionbar {
2
+ declare class ActionbarActions {
3
3
  private _objects;
4
- constructor(page: Page, actionbarContext?: Locator | null);
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
- export class Actionbar {
3
- constructor(page, actionbarContext = null) {
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._objects = new ActionbarObjects(page, actionbarContext);
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
- * Opens the Actionbar’s overflow menu and clicks on the 'Export' button inside it.
29
- */
30
- async clickExportButton() {
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;AAEzD,MAAM,OAAO,SAAS;IAGpB,YAAY,IAAU,EAAE,mBAAmC,IAAI;QAY/D,eAAe;QACR,iBAAY,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAExD,oBAAe,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE9D,kBAAa,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE1D,oBAAe,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE9D,qBAAgB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAEhE,kBAAa,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE1D,oBAAe,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAErE,gBAAgB;QACT,0BAAqB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE1E,oBAAe,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE9D,oBAAe,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE9D,+BAA0B,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAEpF,wBAAmB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAEtE,yBAAoB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAExE,oBAAe,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE9D,6BAAwB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAEhF,8BAAyB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAElF,kBAAa,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAEjE,iBAAiB;QACV,mBAAc,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAhDjE,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;CAwCF"}
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 ActionbarObjects extends BaseComponentObjects {
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
- overflowMenuButton: () => Locator;
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
- searchInput: () => Locator;
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
  }