@thinkwise/testwise 0.2.20 → 0.2.62

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 (230) hide show
  1. package/Testwise.ts +2 -0
  2. package/artifact-builder/SelectorBuilder.ts +2 -2
  3. package/artifact-builder/SubjectComponentGenerator.ts +21 -12
  4. package/artifact-builder/SubjectGenerator.ts +24 -8
  5. package/components/action-bar/ActionBar.ts +7 -7
  6. package/components/action-bar/CustomActionBar.ts +0 -5
  7. package/components/cardlist/Cardlist.ts +3 -3
  8. package/components/chart/Chart.ts +3 -3
  9. package/components/combined-filter/CombinedFilter.ts +3 -3
  10. package/components/cube-view-bar/CubeViewBar.ts +3 -3
  11. package/components/filter/ExcelStyleFilterPopup.ts +29 -0
  12. package/components/filter/ExcelStyleFilterPopupObjects.ts +20 -0
  13. package/components/filter/FilterForm.ts +3 -3
  14. package/components/filter/FilterPopup.ts +187 -0
  15. package/components/filter/FilterPopupObjects.ts +63 -0
  16. package/components/filter/ManagePrefilterPopup.ts +44 -0
  17. package/components/filter/ManagePrefilterPopupObjects.ts +28 -0
  18. package/components/form/Form.ts +3 -3
  19. package/components/grid/Grid.ts +15 -119
  20. package/components/grid/GridObjects.ts +0 -4
  21. package/components/index.ts +4 -0
  22. package/components/maps/Maps.ts +3 -3
  23. package/components/menu/ListBarMenuComponent.ts +11 -0
  24. package/components/menu/ListBarMenuComponentObjects.ts +6 -0
  25. package/components/pivot-grid/PivotGrid.ts +3 -3
  26. package/components/pivot-grid/PivotGridFieldList.ts +3 -3
  27. package/components/pop-up/AllRowsPopUp.ts +29 -0
  28. package/components/pop-up/AllRowsPopUpObjects.ts +22 -0
  29. package/components/prefilter-list/PrefilterList.ts +3 -3
  30. package/components/preview/Preview.ts +3 -3
  31. package/components/report-bar/ReportBar.ts +3 -3
  32. package/components/report-tiles/ReportTiles.ts +3 -3
  33. package/components/scheduler/Scheduler.ts +3 -3
  34. package/components/splitter/Splitter.ts +3 -3
  35. package/components/tab/BaseTab.ts +3 -3
  36. package/components/tab/DetailTabPage.ts +4 -4
  37. package/components/tab/Tab.ts +4 -4
  38. package/components/task/TaskBar.ts +3 -3
  39. package/components/task/TaskTiles.ts +3 -3
  40. package/components/topbar/TopBar.ts +2 -0
  41. package/components/tree-view/TreeView.ts +3 -3
  42. package/controls/DateControl.ts +6 -6
  43. package/controls/DateControlObjects.ts +0 -0
  44. package/controls/FormComboBox.ts +7 -7
  45. package/controls/FormComboBoxObjects.ts +0 -0
  46. package/controls/GridColumnControl.ts +68 -0
  47. package/controls/GridColumnControlObjects.ts +20 -0
  48. package/controls/InputFieldControl.ts +6 -6
  49. package/controls/InputFieldControlObjects.ts +0 -0
  50. package/controls/LookupDropdown.ts +58 -16
  51. package/controls/index.ts +1 -0
  52. package/dist/Testwise.d.ts +1 -0
  53. package/dist/Testwise.js +1 -0
  54. package/dist/Testwise.js.map +1 -1
  55. package/dist/artifact-builder/SelectorBuilder.d.ts +1 -1
  56. package/dist/artifact-builder/SelectorBuilder.js +2 -2
  57. package/dist/artifact-builder/SelectorBuilder.js.map +1 -1
  58. package/dist/artifact-builder/SubjectComponentGenerator.js +18 -12
  59. package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
  60. package/dist/artifact-builder/SubjectGenerator.d.ts +1 -0
  61. package/dist/artifact-builder/SubjectGenerator.js +20 -8
  62. package/dist/artifact-builder/SubjectGenerator.js.map +1 -1
  63. package/dist/components/action-bar/ActionBar.d.ts +2 -2
  64. package/dist/components/action-bar/ActionBar.js +7 -7
  65. package/dist/components/action-bar/ActionBar.js.map +1 -1
  66. package/dist/components/action-bar/CustomActionBar.d.ts +0 -2
  67. package/dist/components/action-bar/CustomActionBar.js +0 -3
  68. package/dist/components/action-bar/CustomActionBar.js.map +1 -1
  69. package/dist/components/cardlist/Cardlist.d.ts +2 -2
  70. package/dist/components/cardlist/Cardlist.js +2 -2
  71. package/dist/components/cardlist/Cardlist.js.map +1 -1
  72. package/dist/components/chart/Chart.d.ts +2 -2
  73. package/dist/components/chart/Chart.js +2 -2
  74. package/dist/components/chart/Chart.js.map +1 -1
  75. package/dist/components/combined-filter/CombinedFilter.d.ts +2 -2
  76. package/dist/components/combined-filter/CombinedFilter.js +2 -2
  77. package/dist/components/combined-filter/CombinedFilter.js.map +1 -1
  78. package/dist/components/cube-view-bar/CubeViewBar.d.ts +2 -2
  79. package/dist/components/cube-view-bar/CubeViewBar.js +2 -2
  80. package/dist/components/cube-view-bar/CubeViewBar.js.map +1 -1
  81. package/dist/components/filter/ExcelStyleFilterPopup.d.ts +9 -0
  82. package/dist/components/filter/ExcelStyleFilterPopup.js +22 -0
  83. package/dist/components/filter/ExcelStyleFilterPopup.js.map +1 -0
  84. package/dist/components/filter/ExcelStyleFilterPopupObjects.d.ts +9 -0
  85. package/dist/components/filter/ExcelStyleFilterPopupObjects.js +13 -0
  86. package/dist/components/filter/ExcelStyleFilterPopupObjects.js.map +1 -0
  87. package/dist/components/filter/FilterForm.d.ts +2 -2
  88. package/dist/components/filter/FilterForm.js +2 -2
  89. package/dist/components/filter/FilterForm.js.map +1 -1
  90. package/dist/components/filter/FilterPopup.d.ts +41 -0
  91. package/dist/components/filter/FilterPopup.js +126 -0
  92. package/dist/components/filter/FilterPopup.js.map +1 -0
  93. package/dist/components/filter/FilterPopupObjects.d.ts +29 -0
  94. package/dist/components/filter/FilterPopupObjects.js +30 -0
  95. package/dist/components/filter/FilterPopupObjects.js.map +1 -0
  96. package/dist/components/filter/ManagePrefilterPopup.d.ts +14 -0
  97. package/dist/components/filter/ManagePrefilterPopup.js +33 -0
  98. package/dist/components/filter/ManagePrefilterPopup.js.map +1 -0
  99. package/dist/components/filter/ManagePrefilterPopupObjects.d.ts +11 -0
  100. package/dist/components/filter/ManagePrefilterPopupObjects.js +19 -0
  101. package/dist/components/filter/ManagePrefilterPopupObjects.js.map +1 -0
  102. package/dist/components/form/Form.d.ts +2 -2
  103. package/dist/components/form/Form.js +2 -2
  104. package/dist/components/form/Form.js.map +1 -1
  105. package/dist/components/grid/Grid.d.ts +4 -36
  106. package/dist/components/grid/Grid.js +14 -102
  107. package/dist/components/grid/Grid.js.map +1 -1
  108. package/dist/components/grid/GridObjects.d.ts +0 -2
  109. package/dist/components/grid/GridObjects.js +0 -2
  110. package/dist/components/grid/GridObjects.js.map +1 -1
  111. package/dist/components/index.d.ts +4 -0
  112. package/dist/components/index.js +4 -0
  113. package/dist/components/index.js.map +1 -1
  114. package/dist/components/maps/Maps.d.ts +2 -2
  115. package/dist/components/maps/Maps.js +2 -2
  116. package/dist/components/maps/Maps.js.map +1 -1
  117. package/dist/components/menu/ListBarMenuComponent.d.ts +6 -0
  118. package/dist/components/menu/ListBarMenuComponent.js +10 -0
  119. package/dist/components/menu/ListBarMenuComponent.js.map +1 -1
  120. package/dist/components/menu/ListBarMenuComponentObjects.d.ts +2 -0
  121. package/dist/components/menu/ListBarMenuComponentObjects.js +2 -0
  122. package/dist/components/menu/ListBarMenuComponentObjects.js.map +1 -1
  123. package/dist/components/pivot-grid/PivotGrid.d.ts +2 -2
  124. package/dist/components/pivot-grid/PivotGrid.js +2 -2
  125. package/dist/components/pivot-grid/PivotGrid.js.map +1 -1
  126. package/dist/components/pivot-grid/PivotGridFieldList.d.ts +2 -2
  127. package/dist/components/pivot-grid/PivotGridFieldList.js +2 -2
  128. package/dist/components/pivot-grid/PivotGridFieldList.js.map +1 -1
  129. package/dist/components/pop-up/AllRowsPopUp.d.ts +12 -0
  130. package/dist/components/pop-up/AllRowsPopUp.js +19 -0
  131. package/dist/components/pop-up/AllRowsPopUp.js.map +1 -0
  132. package/dist/components/pop-up/AllRowsPopUpObjects.d.ts +11 -0
  133. package/dist/components/pop-up/AllRowsPopUpObjects.js +13 -0
  134. package/dist/components/pop-up/AllRowsPopUpObjects.js.map +1 -0
  135. package/dist/components/prefilter-list/PrefilterList.d.ts +2 -2
  136. package/dist/components/prefilter-list/PrefilterList.js +2 -2
  137. package/dist/components/prefilter-list/PrefilterList.js.map +1 -1
  138. package/dist/components/preview/Preview.d.ts +2 -2
  139. package/dist/components/preview/Preview.js +2 -2
  140. package/dist/components/preview/Preview.js.map +1 -1
  141. package/dist/components/report-bar/ReportBar.d.ts +2 -2
  142. package/dist/components/report-bar/ReportBar.js +2 -2
  143. package/dist/components/report-bar/ReportBar.js.map +1 -1
  144. package/dist/components/report-tiles/ReportTiles.d.ts +2 -2
  145. package/dist/components/report-tiles/ReportTiles.js +2 -2
  146. package/dist/components/report-tiles/ReportTiles.js.map +1 -1
  147. package/dist/components/scheduler/Scheduler.d.ts +2 -2
  148. package/dist/components/scheduler/Scheduler.js +2 -2
  149. package/dist/components/scheduler/Scheduler.js.map +1 -1
  150. package/dist/components/splitter/Splitter.d.ts +2 -2
  151. package/dist/components/splitter/Splitter.js +2 -2
  152. package/dist/components/splitter/Splitter.js.map +1 -1
  153. package/dist/components/tab/BaseTab.d.ts +2 -2
  154. package/dist/components/tab/BaseTab.js +2 -2
  155. package/dist/components/tab/BaseTab.js.map +1 -1
  156. package/dist/components/tab/DetailTabPage.d.ts +2 -2
  157. package/dist/components/tab/DetailTabPage.js +3 -3
  158. package/dist/components/tab/DetailTabPage.js.map +1 -1
  159. package/dist/components/tab/Tab.d.ts +2 -2
  160. package/dist/components/tab/Tab.js +3 -3
  161. package/dist/components/tab/Tab.js.map +1 -1
  162. package/dist/components/task/TaskBar.d.ts +2 -2
  163. package/dist/components/task/TaskBar.js +2 -2
  164. package/dist/components/task/TaskBar.js.map +1 -1
  165. package/dist/components/task/TaskTiles.d.ts +2 -2
  166. package/dist/components/task/TaskTiles.js +2 -2
  167. package/dist/components/task/TaskTiles.js.map +1 -1
  168. package/dist/components/topbar/TopBar.d.ts +1 -0
  169. package/dist/components/topbar/TopBar.js +1 -0
  170. package/dist/components/topbar/TopBar.js.map +1 -1
  171. package/dist/components/tree-view/TreeView.d.ts +2 -2
  172. package/dist/components/tree-view/TreeView.js +2 -2
  173. package/dist/components/tree-view/TreeView.js.map +1 -1
  174. package/dist/controls/DateControl.d.ts +3 -3
  175. package/dist/controls/DateControl.js +5 -5
  176. package/dist/controls/DateControl.js.map +1 -1
  177. package/dist/controls/DateControlObjects.d.ts +1 -0
  178. package/dist/controls/DateControlObjects.js +2 -0
  179. package/dist/controls/DateControlObjects.js.map +1 -0
  180. package/dist/controls/FormComboBox.d.ts +2 -2
  181. package/dist/controls/FormComboBox.js +6 -6
  182. package/dist/controls/FormComboBox.js.map +1 -1
  183. package/dist/controls/FormComboBoxObjects.d.ts +1 -0
  184. package/dist/controls/FormComboBoxObjects.js +2 -0
  185. package/dist/controls/FormComboBoxObjects.js.map +1 -0
  186. package/dist/controls/GridColumnControl.d.ts +10 -0
  187. package/dist/controls/GridColumnControl.js +43 -0
  188. package/dist/controls/GridColumnControl.js.map +1 -0
  189. package/dist/controls/GridColumnControlObjects.d.ts +9 -0
  190. package/dist/controls/GridColumnControlObjects.js +13 -0
  191. package/dist/controls/GridColumnControlObjects.js.map +1 -0
  192. package/dist/controls/InputFieldControl.d.ts +3 -3
  193. package/dist/controls/InputFieldControl.js +5 -5
  194. package/dist/controls/InputFieldControl.js.map +1 -1
  195. package/dist/controls/InputFieldControlObjects.d.ts +1 -0
  196. package/dist/controls/InputFieldControlObjects.js +2 -0
  197. package/dist/controls/InputFieldControlObjects.js.map +1 -0
  198. package/dist/controls/LookupDropdown.d.ts +6 -1
  199. package/dist/controls/LookupDropdown.js +42 -13
  200. package/dist/controls/LookupDropdown.js.map +1 -1
  201. package/dist/controls/index.d.ts +1 -0
  202. package/dist/controls/index.js +1 -0
  203. package/dist/controls/index.js.map +1 -1
  204. package/dist/enums/ElementTypes.d.ts +1 -1
  205. package/dist/enums/ElementTypes.js +1 -1
  206. package/dist/enums/ElementTypes.js.map +1 -1
  207. package/dist/helpers/FlightTracker.d.ts +7 -0
  208. package/dist/helpers/FlightTracker.js +63 -11
  209. package/dist/helpers/FlightTracker.js.map +1 -1
  210. package/dist/helpers/LoginHelper.d.ts +11 -3
  211. package/dist/helpers/LoginHelper.js +59 -13
  212. package/dist/helpers/LoginHelper.js.map +1 -1
  213. package/dist/index.d.ts +1 -1
  214. package/dist/index.js +1 -1
  215. package/dist/index.js.map +1 -1
  216. package/dist/page-extensions/GlobalComponents.d.ts +2 -1
  217. package/dist/page-extensions/GlobalComponents.js +2 -1
  218. package/dist/page-extensions/GlobalComponents.js.map +1 -1
  219. package/dist/page-overrides/ClickOverride.d.ts +1 -0
  220. package/dist/page-overrides/ClickOverride.js +57 -46
  221. package/dist/page-overrides/ClickOverride.js.map +1 -1
  222. package/dist/types/Universal.d.ts +1 -0
  223. package/enums/ElementTypes.ts +1 -1
  224. package/helpers/FlightTracker.ts +71 -11
  225. package/helpers/LoginHelper.ts +79 -21
  226. package/index.ts +1 -1
  227. package/package.json +6 -5
  228. package/page-extensions/GlobalComponents.ts +3 -0
  229. package/page-overrides/ClickOverride.ts +69 -64
  230. package/types/Universal.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* biome-ignore-all lint/suspicious/noExplicitAny: reason42 */
3
- import type { Locator, Page } from '@playwright/test';
3
+ import type { Locator } from '@playwright/test';
4
4
 
5
5
  export type IDateControl = Locator & IDateControlCore;
6
6
 
@@ -15,8 +15,8 @@ export class DateControl implements IDateControlCore {
15
15
  private _dateFieldLocator: Locator;
16
16
  private _inputLocator: Locator;
17
17
 
18
- constructor(page: Page, id: string) {
19
- this._dateFieldLocator = page.getByTestId(`form-field__${id}`);
18
+ constructor(context: Locator, id: string) {
19
+ this._dateFieldLocator = context.getByTestId(`form-field__${id}`);
20
20
  this._inputLocator = this._dateFieldLocator.locator('input');
21
21
  }
22
22
 
@@ -47,9 +47,9 @@ export class DateControl implements IDateControlCore {
47
47
  }
48
48
  }
49
49
 
50
- export function createDateControl(page: Page, id: string): IDateControl {
51
- const inputFieldControl = new DateControl(page, id);
52
- const locator = page.getByTestId(`form-field__${id}`);
50
+ export function createDateControl(context: Locator, id: string): IDateControl {
51
+ const inputFieldControl = new DateControl(context, id);
52
+ const locator = context.getByTestId(`form-field__${id}`);
53
53
 
54
54
  return new Proxy(inputFieldControl, {
55
55
  get(target, prop, receiver) {
File without changes
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* biome-ignore-all lint/suspicious/noExplicitAny: Reason42 */
3
- import type { Locator, Page } from '@playwright/test';
3
+ import type { Locator } from '@playwright/test';
4
4
 
5
5
  export type IFormComboBox = Locator & IFormComboBoxCore;
6
6
 
@@ -16,10 +16,10 @@ class FormComboBox implements IFormComboBoxCore {
16
16
  private _autoCompleteMenu: Locator;
17
17
  private _id: string;
18
18
 
19
- constructor(page: Page, id: string) {
19
+ constructor(context: Locator, id: string) {
20
20
  this._id = id;
21
- this._formFieldLocator = page.getByTestId(`form-field__${id}`);
22
- this._autoCompleteMenu = page.getByTestId(`form-field__${id}__select__options-list`);
21
+ this._formFieldLocator = context.getByTestId(`form-field__${id}`);
22
+ this._autoCompleteMenu = context.getByTestId(`form-field__${id}__select__options-list`);
23
23
  }
24
24
 
25
25
  async selectOption(optionText: string): Promise<void> {
@@ -53,9 +53,9 @@ class FormComboBox implements IFormComboBoxCore {
53
53
  }
54
54
  }
55
55
 
56
- export function createFormComboBox(page: Page, id: string): IFormComboBox {
57
- const comboBox = new FormComboBox(page, id);
58
- const locator = page.getByTestId(`form-field__${id}`);
56
+ export function createFormComboBox(context: Locator, id: string): IFormComboBox {
57
+ const comboBox = new FormComboBox(context, id);
58
+ const locator = context.getByTestId(`form-field__${id}`);
59
59
 
60
60
  return new Proxy(comboBox, {
61
61
  get(target, prop, receiver) {
File without changes
@@ -0,0 +1,68 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* biome-ignore-all lint/suspicious/noExplicitAny: Reason42 */
3
+ import type { Locator } from '@playwright/test';
4
+ import { Grid } from '../components/grid/Grid.js';
5
+ import { escapeRegex } from '../index.js';
6
+ import { GridColumnControlObjects } from './GridColumnControlObjects.js';
7
+
8
+ export type IGridColumnControl = Locator & IGridColumnControlCore;
9
+
10
+ export type IGridColumnControlCore = {
11
+ getColumnHeader(): Promise<Locator>;
12
+ getCellByExactValue(value: string): Locator;
13
+ getCellValues(): Promise<string[]>;
14
+ filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void>;
15
+ openExcelStyleFilterPopup(): Promise<void>;
16
+ };
17
+
18
+ class GridColumnControl implements IGridColumnControlCore {
19
+ private _grid: Grid;
20
+ private _id: string;
21
+ private _objects: GridColumnControlObjects;
22
+
23
+ constructor(gridContext: Locator, id: string) {
24
+ this._id = id.replace(/-/g, '_');
25
+ this._objects = new GridColumnControlObjects(gridContext, this._id);
26
+ this._grid = new Grid(gridContext);
27
+ }
28
+
29
+ public async openExcelStyleFilterPopup(): Promise<void> {
30
+ await this._grid.openExcelStyleFilterPopup(this._id);
31
+ }
32
+
33
+ public async getColumnHeader(): Promise<Locator> {
34
+ return await this._objects.columnHeader();
35
+ }
36
+
37
+ public getCellByExactValue(value: string): Locator {
38
+ const valueToFindRegex = new RegExp(`^${escapeRegex(value)}$`);
39
+ return this._objects.cellByValue(valueToFindRegex);
40
+ }
41
+
42
+ public async getCellValues(): Promise<string[]> {
43
+ return await this._grid.getCellValuesByColId(this._id);
44
+ }
45
+
46
+ public async filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void> {
47
+ await this._grid.filterByColumnValueExcelStyle(this._id, value, deselectAll);
48
+ }
49
+ }
50
+
51
+ export function createGridColumnControl(gridContext: Locator, id: string): IGridColumnControl {
52
+ const columnControl = new GridColumnControl(gridContext, id);
53
+ const locator = gridContext.locator(`[col-id="${id}"]`);
54
+
55
+ return new Proxy(columnControl, {
56
+ get(target, prop, receiver) {
57
+ if (prop in target) {
58
+ return Reflect.get(target, prop, receiver);
59
+ }
60
+
61
+ const value = (locator as any)[prop];
62
+ if (typeof value === 'function') {
63
+ return value.bind(locator);
64
+ }
65
+ return value;
66
+ }
67
+ }) as unknown as IGridColumnControl;
68
+ }
@@ -0,0 +1,20 @@
1
+ import type { Locator } from '@playwright/test';
2
+ import { BaseComponentObjects } from '../components/BaseComponentObjects.js';
3
+
4
+ export class GridColumnControlObjects extends BaseComponentObjects {
5
+ private _id: string;
6
+
7
+ constructor(gridContext: Locator, columnId: string) {
8
+ super(gridContext.page(), gridContext);
9
+ this._id = columnId;
10
+ }
11
+
12
+ public column = () => this.context.locator(`[col-id="${this._id}"]`);
13
+
14
+ public columnHeader = () => this.column().getByRole('columnheader');
15
+
16
+ public cellByValue = (value: RegExp) =>
17
+ this.column().locator('[role="button"]', {
18
+ hasText: value
19
+ });
20
+ }
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /** biome-ignore-all lint/suspicious/noExplicitAny: reason42 */
3
- import type { Locator, Page } from '@playwright/test';
3
+ import type { Locator } from '@playwright/test';
4
4
 
5
5
  export type IInputFieldControl = Locator & ICoreInputFieldControl;
6
6
 
@@ -19,9 +19,9 @@ export class InputFieldControl implements ICoreInputFieldControl {
19
19
  private _inputLocator: Locator;
20
20
  private _id: string;
21
21
 
22
- constructor(page: Page, id: string) {
22
+ constructor(context: Locator, id: string) {
23
23
  this._id = id;
24
- this._formFieldLocator = page.getByTestId(`form-field__${id}`);
24
+ this._formFieldLocator = context.getByTestId(`form-field__${id}`);
25
25
  this._inputLocator = this._formFieldLocator.locator('input');
26
26
  }
27
27
 
@@ -59,9 +59,9 @@ export class InputFieldControl implements ICoreInputFieldControl {
59
59
  }
60
60
  }
61
61
 
62
- export function createInputFieldControl(page: Page, id: string): IInputFieldControl {
63
- const inputFieldControl = new InputFieldControl(page, id);
64
- const locator = page.getByTestId(`form-field__${id}`);
62
+ export function createInputFieldControl(context: Locator, id: string): IInputFieldControl {
63
+ const inputFieldControl = new InputFieldControl(context, id);
64
+ const locator = context.getByTestId(`form-field__${id}`);
65
65
 
66
66
  return new Proxy(inputFieldControl, {
67
67
  get(target, prop, receiver) {
File without changes
@@ -8,41 +8,83 @@ export type ILookupDropdown = Locator & ILookupDropdownCore;
8
8
  export type ILookupDropdownCore = {
9
9
  lookupSelect(optionToSelect: string): Promise<void>;
10
10
  selectOption(optionText: string): Promise<void>;
11
+ fill(value: string): Promise<void>;
12
+ getValidationMessage(): Promise<string>;
13
+ getLabelText(): Promise<string>;
14
+ inputValue(): Promise<string>;
15
+ clear(): Promise<void>;
11
16
  };
12
17
 
13
18
  class LookupDropdown implements ILookupDropdownCore {
14
- private _locator: Locator;
19
+ private _id: string;
20
+ private _formFieldLocator: Locator;
21
+ private _inputLocator: Locator;
15
22
 
16
- constructor(locator: Locator) {
17
- this._locator = locator;
23
+ constructor(context: Locator, id: string) {
24
+ this._id = id;
25
+ this._formFieldLocator = context.getByTestId(`form-field__${this._id}`);
26
+ this._inputLocator = this._formFieldLocator.locator('input');
18
27
  }
19
28
 
20
- async lookupSelect(optionToSelect: string): Promise<void> {
21
- await Promise.all([this._locator.click(), this._locator.page().waitForResponse('**/list_**')]);
29
+ public async getLabelText(): Promise<string> {
30
+ let returnText = (await this._formFieldLocator.getByTestId(`form-field__${this._id}__label`).textContent()) || '';
22
31
 
23
- await this._locator.fill(optionToSelect);
24
- await this._locator.page().waitEventHandler.setCanContinue(true);
32
+ returnText = returnText.replace(/\s+/g, ' ').trim();
25
33
 
34
+ return returnText;
35
+ }
36
+
37
+ public async lookupSelect(optionToSelect: string): Promise<void> {
38
+ await this._inputLocator.fill(optionToSelect);
26
39
  await this.select(optionToSelect);
27
40
  }
28
41
 
29
- async selectOption(optionText: string): Promise<void> {
30
- await this._locator.click();
42
+ public async inputValue(): Promise<string> {
43
+ return await this._inputLocator.inputValue();
44
+ }
45
+
46
+ public async clear(): Promise<void> {
47
+ await this._inputLocator.fill('');
48
+ }
49
+
50
+ public async selectOption(optionText: string): Promise<void> {
51
+ await this._inputLocator.click();
31
52
  await this.select(optionText);
32
53
  }
33
54
 
55
+ public async getValidationMessage(): Promise<string> {
56
+ await this._formFieldLocator.locator('.TooltipContainer p').waitFor({ state: 'visible' });
57
+ return await this._formFieldLocator.locator('.TooltipContainer p').innerText();
58
+ }
59
+
60
+ public async fill(value: string): Promise<void> {
61
+ await Promise.all([
62
+ this._formFieldLocator
63
+ .page()
64
+ .waitForResponse((response) => response.url().includes('/list_') && response.request().method() === 'GET'),
65
+ this._inputLocator.click()
66
+ ]);
67
+
68
+ await Promise.all([
69
+ this._formFieldLocator
70
+ .page()
71
+ .waitForResponse((response) => response.url().includes('/list_') && response.request().method() === 'GET'),
72
+ this._inputLocator.fill(value)
73
+ ]);
74
+ }
75
+
34
76
  private async select(optionToSelect: string) {
35
77
  const optionsToSelectRegex = new RegExp(`^${escapeRegex(optionToSelect)}$`, 'i');
36
78
 
37
- await this._locator.page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
38
- await this._locator
79
+ await this._formFieldLocator.page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
80
+ await this._formFieldLocator
39
81
  .page()
40
- .waitForFunction((el) => document.activeElement === el, await this._locator.elementHandle());
82
+ .waitForFunction((el) => document.activeElement === el, await this._inputLocator.elementHandle());
41
83
  }
42
84
  }
43
85
 
44
- export function createLookupDropdown(locator: Locator): ILookupDropdown {
45
- const dropdown = new LookupDropdown(locator);
86
+ export function createLookupDropdown(context: Locator, id: string): ILookupDropdown {
87
+ const dropdown = new LookupDropdown(context, id);
46
88
 
47
89
  return new Proxy(dropdown, {
48
90
  get(target, prop, receiver) {
@@ -50,10 +92,10 @@ export function createLookupDropdown(locator: Locator): ILookupDropdown {
50
92
  return Reflect.get(target, prop, receiver);
51
93
  }
52
94
 
53
- const value = (locator as any)[prop];
95
+ const value = (dropdown as any)[prop];
54
96
 
55
97
  if (typeof value === 'function') {
56
- return value.bind(locator);
98
+ return value.bind(dropdown);
57
99
  }
58
100
  return value;
59
101
  }
package/controls/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './DateControl.js';
2
2
  export * from './FormComboBox.js';
3
+ export * from './GridColumnControl.js';
3
4
  export * from './InputFieldControl.js';
4
5
  export * from './LookupDropdown.js';
@@ -1,3 +1,4 @@
1
1
  import type { Test } from './types/Test.js';
2
+ export * from '@playwright/test';
2
3
  export declare const test: Test;
3
4
  export declare const bddTest: Test;
package/dist/Testwise.js CHANGED
@@ -5,6 +5,7 @@ import { SubjectRegistry } from './page-extensions/SubjectRegistry.js';
5
5
  import { WaitEventHandler } from './page-extensions/WaitEventHandler.js';
6
6
  import { ClickOverride } from './page-overrides/ClickOverride.js';
7
7
  import { FillOverride } from './page-overrides/FillOverride.js';
8
+ export * from '@playwright/test';
8
9
  function combineExtensions(baseTest, ...extensions) {
9
10
  return extensions.reduce((test, Extension) => new Extension(test).test, baseTest);
10
11
  }
@@ -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,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,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,UAAU,GAAG;IACjB,mBAAmB;IACnB,aAAa;IACb,YAAY;IAEZ,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAS,iBAAiB,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,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,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,cAAc,kBAAkB,CAAC;AAEjC,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,UAAU,GAAG;IACjB,mBAAmB;IACnB,aAAa;IACb,YAAY;IAEZ,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAS,iBAAiB,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC"}
@@ -7,7 +7,7 @@ export declare class SelectorBuilder {
7
7
  private getDefaultPrefix;
8
8
  private getDefaultSuffix;
9
9
  getElementId(property: string, componentName: SubjectComponents): string;
10
- getPageLocatorString(property: string, componentName: SubjectComponents): string;
10
+ getLocatorString(property: string, componentName: SubjectComponents): string;
11
11
  private getLocatorType;
12
12
  getPageContext(subject: ISubject): string;
13
13
  }
@@ -45,14 +45,14 @@ export class SelectorBuilder {
45
45
  getElementId(property, componentName) {
46
46
  return this._namingHandler.getIdFromElementName(property, componentName, this._namingHandler.getElementTypeFromElementName(property));
47
47
  }
48
- getPageLocatorString(property, componentName) {
48
+ getLocatorString(property, componentName) {
49
49
  let elementId = this.getElementId(property, componentName);
50
50
  if (componentName === 'Grid')
51
51
  elementId = elementId.replace(/-/g, '_');
52
52
  const selectorPrefix = this.getDefaultPrefix(componentName);
53
53
  const defaultSuffix = this.getDefaultSuffix(componentName);
54
54
  const selectorSuffix = this.determineSelectorSuffix(property, componentName) || defaultSuffix;
55
- return `page.${this.getLocatorType(componentName)}('${selectorPrefix}${elementId}${selectorSuffix}')`;
55
+ return `this._context.${this.getLocatorType(componentName)}('${selectorPrefix}${elementId}${selectorSuffix}')`;
56
56
  }
57
57
  getLocatorType(componentName) {
58
58
  if (componentName === 'Form') {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectorBuilder.js","sourceRoot":"","sources":["../../artifact-builder/SelectorBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectorBuilder.js","sourceRoot":"","sources":["../../artifact-builder/SelectorBuilder.ts"],"names":[],"mappings":"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"}
@@ -85,9 +85,12 @@ export class SubjectComponentGenerator {
85
85
  }
86
86
  const classBody = componentName === 'Grid'
87
87
  ? `\nexport class ${mainInterface}Component extends ${componentName} implements ${mainInterface} {\n\n` +
88
- ` constructor(page: Page, context: Locator | null = null) {\n super(page, context);\n }\n\n${gridGetters}}\n`
89
- : `\nexport class ${mainInterface}Component extends ${componentName} implements ${mainInterface} {\n${propertyDeclarations}\n\n` +
90
- ` constructor(page: Page, context: Locator | null = null) {\n super(page, context);\n${assignments}\n }\n}\n`;
88
+ ` private _context: Locator;\n\n` +
89
+ ` constructor(context: Locator) {\n super(context);\n this._context = context;\n }\n\n${gridGetters}}\n`
90
+ : `\nexport class ${mainInterface}Component extends ${componentName} implements ${mainInterface} {\n\n` +
91
+ ` private _context: Locator;\n` +
92
+ `${propertyDeclarations}\n\n` +
93
+ ` constructor(context: Locator) {\n super(context);\n this._context = context;\n${assignments}\n }\n}\n`;
91
94
  componentFile.content += classBody;
92
95
  }
93
96
  const subjectMatch = componentDirPath.match(/subjects[/](\w+)[/]/);
@@ -107,7 +110,7 @@ export class SubjectComponentGenerator {
107
110
  transformGridInterface(componentFile) {
108
111
  const interfaceRegex = /export interface \w+ extends Grid \{([\s\S]*?)\}/g;
109
112
  componentFile.content = componentFile.content.replace(interfaceRegex, (match, body) => {
110
- const transformedBody = body.replace(/(\w+)\s*:\s*Locator(?:\[\])?;/g, 'readonly $1: Promise<Locator[]>;');
113
+ const transformedBody = body.replace(/(\w+)\s*:\s*Locator(?:\[\])?;/g, 'readonly $1: IGridColumnControl;');
111
114
  return match.replace(body, transformedBody);
112
115
  });
113
116
  }
@@ -115,8 +118,8 @@ export class SubjectComponentGenerator {
115
118
  return propertyLines
116
119
  .map((line) => {
117
120
  const property = line.replace('readonly', '').split(':')[0].trim();
118
- const pageLocatorString = this._selectorBuilder.getPageLocatorString(property, componentName);
119
- return ` get ${property}(): Promise<Locator[]> {\n return this.${pageLocatorString}.all();\n }\n`;
121
+ const columnId = this._selectorBuilder.getElementId(property, componentName);
122
+ return ` public get ${property}(): IGridColumnControl {\n return createGridColumnControl(this._context, '${columnId}');\n }\n`;
120
123
  })
121
124
  .join('\n');
122
125
  }
@@ -132,16 +135,16 @@ export class SubjectComponentGenerator {
132
135
  return propertyLines
133
136
  .map((line) => {
134
137
  const property = line.split(':')[0].replace(/\?$/, '').trim();
135
- const pageLocatorString = this._selectorBuilder.getPageLocatorString(property, componentName);
138
+ const pageLocatorString = this._selectorBuilder.getLocatorString(property, componentName);
136
139
  if (componentName === 'Form') {
137
140
  if (property.endsWith('Lookup'))
138
- return ` this.${property} = createLookupDropdown(${pageLocatorString});`;
141
+ return ` this.${property} = createLookupDropdown(this._context, '${this._selectorBuilder.getElementId(property, componentName)}');`;
139
142
  if (property.endsWith('DatePicker'))
140
- return ` this.${property} = createDateControl(page, '${this._selectorBuilder.getElementId(property, componentName)}');`;
143
+ return ` this.${property} = createDateControl(this._context, '${this._selectorBuilder.getElementId(property, componentName)}');`;
141
144
  if (property.endsWith('ComboBox'))
142
- return ` this.${property} = createFormComboBox(page, '${this._selectorBuilder.getElementId(property, componentName)}');`;
145
+ return ` this.${property} = createFormComboBox(this._context, '${this._selectorBuilder.getElementId(property, componentName)}');`;
143
146
  if (property.endsWith('Field'))
144
- return ` this.${property} = createInputFieldControl(page, '${this._selectorBuilder.getElementId(property, componentName)}');`;
147
+ return ` this.${property} = createInputFieldControl(this._context, '${this._selectorBuilder.getElementId(property, componentName)}');`;
145
148
  }
146
149
  return ` this.${property} = ${pageLocatorString};`;
147
150
  })
@@ -220,7 +223,10 @@ export class SubjectComponentGenerator {
220
223
  }
221
224
  addComponentImports(componentFile, componentName) {
222
225
  // biome-ignore lint/style/useTemplate: reason 42
223
- componentFile.content = `import type { Locator, Page } from '@playwright/test';\n\n` + componentFile.content;
226
+ componentFile.content = `import type { Locator } from '@playwright/test';\n\n` + componentFile.content;
227
+ if (componentName === 'Grid') {
228
+ componentFile.content = `import { createGridColumnControl, type IGridColumnControl } from '../../../../controls/GridColumnControl.js';\n${componentFile.content}`;
229
+ }
224
230
  componentFile.content = `import { ${componentName} } from '../../../../components/index.js';\n${componentFile.content}`;
225
231
  }
226
232
  removeLocatorInterface(componentFile) {
@@ -1 +1 @@
1
- {"version":3,"file":"SubjectComponentGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SubjectComponentGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubjectComponentGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SubjectComponentGenerator.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare class SubjectGenerator {
11
11
  private getAllSubjectFolders;
12
12
  private indexGeneratedSubjects;
13
13
  private createSubjectClass;
14
+ private addGoToMethod;
14
15
  private getAllComponentsFromInterface;
15
16
  private generateComponentContextLocatorString;
16
17
  private verifyDirectoryExists;
@@ -66,10 +66,17 @@ export class SubjectGenerator {
66
66
  this.addClassExport(subjectClass, screenInterfaceName);
67
67
  this.addComponentDeclarations(subjectClass, componentDictionary, subjectFolderName);
68
68
  this.addConstructor(subjectClass, componentDictionary, subjectFolderName, subject);
69
+ this.addGoToMethod(subjectClass, subject);
69
70
  this.addSubjectClassLineEndings(subjectClass);
70
71
  this.verifyDirectoryExists(subjectFolderPath);
71
72
  fs.writeFileSync(path.join(subjectFolderPath, `${subjectClass.name}.ts`), subjectClass.content, 'utf-8');
72
73
  }
74
+ addGoToMethod(subjectClass, subject) {
75
+ let url = `subject=${subject.subject}`;
76
+ if (subject.variant !== '')
77
+ url = `${url}/subjectVariant=${subject.variant}`;
78
+ subjectClass.content += `\n public async goTo() {\n await this._subjectPage.goToDeepLink(\`${url}\`);\n await this._subjectPage.waitForLoadState('networkidle');\n }\n`;
79
+ }
73
80
  getAllComponentsFromInterface(screenFileContent, screenInterfaceName, subject) {
74
81
  let componentDictionary = [];
75
82
  const interfaceMatches = screenFileContent.match(new RegExp(`export interface ${screenInterfaceName} {([\\s\\S]*?)}`));
@@ -180,6 +187,7 @@ export class SubjectGenerator {
180
187
  const componentType = `${subjectFolderName}${component.type}`;
181
188
  subjectClass.content += ` ${propertyName}: ${componentType};\n`;
182
189
  });
190
+ subjectClass.content += ` private _subjectPage: Page;\n`;
183
191
  }
184
192
  addConstructor(subjectClass, componentDictionary, subjectFolderName, subject) {
185
193
  const rootContextSelector = this._selectorBuilder.getPageContext(subject);
@@ -189,20 +197,22 @@ export class SubjectGenerator {
189
197
  if (!screenComponents.includes(component.type))
190
198
  return;
191
199
  if (coreComponents.includes(component.type)) {
192
- subjectClass.content += ` this.${propertyName} = ${this.getComponentInitializer(component)};\n`;
200
+ const componentId = this._namingHandler.toPascalCase(propertyName);
201
+ subjectClass.content += ` this.${propertyName} = ${this.getComponentInitializer(component, componentId)};\n`;
193
202
  return;
194
203
  }
195
204
  const componentName = component.type;
196
- subjectClass.content += ` this.${propertyName} = new ${subjectFolderName}${componentName}Component(page, ${component.context});\n`;
205
+ subjectClass.content += ` this.${propertyName} = new ${subjectFolderName}${componentName}Component(${component.context});\n`;
197
206
  });
207
+ subjectClass.content += ` this._subjectPage = this.context.page();\n`;
208
+ subjectClass.content += ` }\n`;
198
209
  }
199
- getComponentInitializer(component) {
210
+ getComponentInitializer(component, componentId) {
200
211
  const componentNamePascal = this._namingHandler.toPascalCase(component.type);
201
212
  switch (component.type) {
202
213
  case 'Cardlist':
203
214
  case 'TaskTiles':
204
215
  case 'PrefilterList':
205
- case 'TaskBar':
206
216
  case 'Chart':
207
217
  case 'CubeViewBar':
208
218
  case 'PivotGrid':
@@ -211,7 +221,7 @@ export class SubjectGenerator {
211
221
  case 'ReportBar':
212
222
  case 'ReportTiles':
213
223
  case 'Preview':
214
- return `new ${component.type}(page, this.context.locator('.${component.type}.${componentNamePascal}'))`;
224
+ return `new ${component.type}(this.context.locator('.${component.type}.${componentNamePascal}'))`;
215
225
  case 'CombinedFilter':
216
226
  case 'CustomActionBar':
217
227
  case 'ActionBar':
@@ -220,15 +230,17 @@ export class SubjectGenerator {
220
230
  case 'Tab':
221
231
  case 'FilterForm':
222
232
  case 'Scheduler':
223
- return `new ${component.type}(page, ${component.context})`;
233
+ return `new ${component.type}(${component.context})`;
224
234
  case 'TreeView':
225
- return `new ${component.type}(page, this.context.locator('.Tree.${componentNamePascal}'))`;
235
+ return `new ${component.type}(this.context.locator('.Tree.${componentNamePascal}'))`;
236
+ case 'TaskBar':
237
+ return `new ${component.type}(this.context.locator('.ActionBar.${componentId}'))`;
226
238
  default:
227
239
  throw new Error(`Unknown core component type: ${component.type}`);
228
240
  }
229
241
  }
230
242
  addSubjectClassLineEndings(subjectClass) {
231
- subjectClass.content += ` }\n}\n`;
243
+ subjectClass.content += `}\n`;
232
244
  }
233
245
  }
234
246
  SubjectGenerator.SUBJECTS_RELATIVE_PATH = 'test-artifacts/subjects';