@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,11 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseTabObjects } from './BaseTabObjects.js';
3
+ export declare class BaseTab {
4
+ protected _objects: BaseTabObjects;
5
+ constructor(page: Page, context?: Locator | null);
6
+ openById(name: string): Promise<void>;
7
+ openByIndex(index: number): Promise<void>;
8
+ getTabById(name: string): Promise<Locator>;
9
+ getTabByIndex(index: number): Promise<Locator>;
10
+ getBadgeCount(name: string): Promise<number>;
11
+ }
@@ -0,0 +1,34 @@
1
+ import { BaseTabObjects } from './BaseTabObjects.js';
2
+ export class BaseTab {
3
+ constructor(page, context = null) {
4
+ this._objects = new BaseTabObjects(page, context);
5
+ }
6
+ // --- Common actions ---
7
+ // Clicks a tab by its tabstrip test id prefix (e.g., "form", "users", "list").
8
+ // Uses the role="tab" element with data-testid^="tabstrip__tab__{name}".
9
+ async openById(name) {
10
+ await this._objects.tabByTestId(name).click();
11
+ }
12
+ // Clicks a tab by index within the scoped tablist context.
13
+ async openByIndex(index) {
14
+ await this._objects.tabByIndex(index).click();
15
+ }
16
+ // --- Useful getters ---
17
+ async getTabById(name) {
18
+ return this._objects.tabByTestId(name);
19
+ }
20
+ async getTabByIndex(index) {
21
+ return this._objects.tabByIndex(index);
22
+ }
23
+ // Reads the badge value on a tab. Non-visible/invalid → 0.
24
+ async getBadgeCount(name) {
25
+ const badge = this._objects.badgeByName(name);
26
+ const visible = await badge.isVisible().catch(() => false);
27
+ if (!visible)
28
+ return 0;
29
+ const txt = (await badge.textContent())?.trim() ?? '0';
30
+ const n = Number.parseInt(txt, 10);
31
+ return Number.isNaN(n) ? 0 : n;
32
+ }
33
+ }
34
+ //# sourceMappingURL=BaseTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTab.js","sourceRoot":"","sources":["../../../components/tab/BaseTab.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,OAAO;IAGlB,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,yBAAyB;IAEzB,+EAA+E;IAC/E,yEAAyE;IAClE,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,2DAA2D;IACpD,KAAK,CAAC,WAAW,CAAC,KAAa;QACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,yBAAyB;IAClB,KAAK,CAAC,UAAU,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,2DAA2D;IACpD,KAAK,CAAC,aAAa,CAAC,IAAY;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;QACvD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseComponentObjects } from '../BaseComponentObjects.js';
3
+ export declare class BaseTabObjects extends BaseComponentObjects {
4
+ protected _page: Page;
5
+ constructor(page: Page, context?: Locator | null);
6
+ tabList: () => Locator;
7
+ tabByTestId: (name: string) => Locator;
8
+ tabByIndex: (index: number) => Locator;
9
+ badgeByName: (name: string) => Locator;
10
+ }
@@ -0,0 +1,14 @@
1
+ import { BaseComponentObjects } from '../BaseComponentObjects.js';
2
+ export class BaseTabObjects extends BaseComponentObjects {
3
+ constructor(page, context = null) {
4
+ super(page, context);
5
+ this.tabList = () => this.context.getByRole('tablist');
6
+ this.tabByTestId = (name) => this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}__"]`);
7
+ // use role for generic index-based selection
8
+ this.tabByIndex = (index) => this.tabList().getByRole('tab').nth(index);
9
+ // badge: leave as a CSS anchor on the tab testid
10
+ this.badgeByName = (name) => this._page.locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}"] [data-testid$="__badge"]`);
11
+ this._page = page;
12
+ }
13
+ }
14
+ //# sourceMappingURL=BaseTabObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTabObjects.js","sourceRoot":"","sources":["../../../components/tab/BaseTabObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,cAAe,SAAQ,oBAAoB;IAGtD,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAIhB,YAAO,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE3D,gBAAW,GAAG,CAAC,IAAY,EAAW,EAAE,CAC7C,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,6CAA6C,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEhG,6CAA6C;QACtC,eAAU,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3F,iDAAiD;QAC1C,gBAAW,GAAG,CAAC,IAAY,EAAW,EAAE,CAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,6CAA6C,IAAI,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC;QAbjH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;CAaF"}
@@ -0,0 +1,11 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseTab } from './BaseTab.js';
3
+ import { ComponentTabObjects } from './ComponentTabObjects.js';
4
+ export declare class ComponentTab extends BaseTab {
5
+ protected _objects: ComponentTabObjects;
6
+ constructor(page: Page, context?: Locator | null);
7
+ openListTab(tabindex?: string): Promise<void>;
8
+ getListTab(tabindex?: string): Promise<Locator>;
9
+ openFormTab(): Promise<void>;
10
+ getFormTab(): Promise<Locator>;
11
+ }
@@ -0,0 +1,27 @@
1
+ import { BaseTab } from './BaseTab.js';
2
+ import { ComponentTabObjects } from './ComponentTabObjects.js';
3
+ export class ComponentTab extends BaseTab {
4
+ constructor(page, context = null) {
5
+ super(page, context);
6
+ this._objects = new ComponentTabObjects(page, context);
7
+ }
8
+ // --- Component-specific helpers ---
9
+ // Opens the “List” tab in this tabstrip (default tabindex = -1 for master).
10
+ // If tabindex is left empty, the default is "-1" which is the master/base list tabindex
11
+ async openListTab(tabindex = '-1') {
12
+ await this._objects.listTab(tabindex).click();
13
+ }
14
+ // Returns the “List” tab locator (scoped).
15
+ async getListTab(tabindex = '-1') {
16
+ return this._objects.listTab(tabindex);
17
+ }
18
+ // Opens the “Form” tab in this tabstrip (scoped).
19
+ async openFormTab() {
20
+ await this._objects.formTab().click();
21
+ }
22
+ // Returns the “Form” tab locator (scoped).
23
+ async getFormTab() {
24
+ return this._objects.formTab();
25
+ }
26
+ }
27
+ //# sourceMappingURL=ComponentTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentTab.js","sourceRoot":"","sources":["../../../components/tab/ComponentTab.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,YAAa,SAAQ,OAAO;IAGvC,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,qCAAqC;IAErC,4EAA4E;IAC5E,wFAAwF;IACjF,KAAK,CAAC,WAAW,CAAC,WAAmB,IAAI;QAC9C,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,2CAA2C;IACpC,KAAK,CAAC,UAAU,CAAC,WAAmB,IAAI;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,kDAAkD;IAC3C,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,2CAA2C;IACpC,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseTabObjects } from './BaseTabObjects.js';
3
+ export declare class ComponentTabObjects extends BaseTabObjects {
4
+ constructor(page: Page, context?: Locator | null);
5
+ listTab: (tabindex: string) => Locator;
6
+ formTab: () => Locator;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { BaseTabObjects } from './BaseTabObjects.js';
2
+ export class ComponentTabObjects extends BaseTabObjects {
3
+ constructor(page, context = null) {
4
+ super(page, context);
5
+ // Component-specific selectors
6
+ this.listTab = (tabindex) => this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__list"][tabindex="${tabindex}"]`);
7
+ this.formTab = () => this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__form"]`);
8
+ }
9
+ }
10
+ //# sourceMappingURL=ComponentTabObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentTabObjects.js","sourceRoot":"","sources":["../../../components/tab/ComponentTabObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGvB,+BAA+B;QACxB,YAAO,GAAG,CAAC,QAAgB,EAAW,EAAE,CAC7C,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,8DAA8D,QAAQ,IAAI,CAAC,CAAC;QAE9F,YAAO,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;IAN3G,CAAC;CAOF"}
@@ -0,0 +1,9 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseTab } from './BaseTab.js';
3
+ import { DetailTabObjects } from './DetailTabObjects.js';
4
+ export declare class DetailTab extends BaseTab {
5
+ protected _objects: DetailTabObjects;
6
+ constructor(page: Page, context?: Locator | null);
7
+ getDetailTabById(name: string): Promise<Locator>;
8
+ getDetailTabByIndex(index: number): Promise<Locator>;
9
+ }
@@ -0,0 +1,15 @@
1
+ import { BaseTab } from './BaseTab.js';
2
+ import { DetailTabObjects } from './DetailTabObjects.js';
3
+ export class DetailTab extends BaseTab {
4
+ constructor(page, context = null) {
5
+ super(page, context);
6
+ this._objects = new DetailTabObjects(page, context);
7
+ }
8
+ async getDetailTabById(name) {
9
+ return this._objects.tabByTestId(name);
10
+ }
11
+ async getDetailTabByIndex(index) {
12
+ return this._objects.tabByIndex(index);
13
+ }
14
+ }
15
+ //# sourceMappingURL=DetailTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailTab.js","sourceRoot":"","sources":["../../../components/tab/DetailTab.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,OAAO,SAAU,SAAQ,OAAO;IAGpC,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,KAAa;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseTabObjects } from './BaseTabObjects.js';
3
+ export declare class DetailTabObjects extends BaseTabObjects {
4
+ constructor(page: Page, context?: Locator | null);
5
+ }
@@ -0,0 +1,7 @@
1
+ import { BaseTabObjects } from './BaseTabObjects.js';
2
+ export class DetailTabObjects extends BaseTabObjects {
3
+ constructor(page, context = null) {
4
+ super(page, context);
5
+ }
6
+ }
7
+ //# sourceMappingURL=DetailTabObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailTabObjects.js","sourceRoot":"","sources":["../../../components/tab/DetailTabObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAClD,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CAGF"}
@@ -0,0 +1,17 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ export declare class TaskBar {
3
+ private _taskBarObjects;
4
+ /**
5
+ * @param taskBarContext the taskbar container element (same idea as Grid's context)
6
+ */
7
+ constructor(page: Page, taskBarContext?: Locator | null);
8
+ /** returns all task buttons */
9
+ tasks: () => Locator;
10
+ /** returns a task button by its data-testid key */
11
+ getTaskById: (key: string) => Locator;
12
+ /** returns a task button by its visible label */
13
+ getTaskByLabel: (label: string) => Locator;
14
+ /** light action sugar (keep assertions in tests) */
15
+ clickById: (key: string) => Promise<void>;
16
+ clickByLabel: (label: string) => Promise<void>;
17
+ }
@@ -0,0 +1,23 @@
1
+ import { TaskBarObjects } from './TaskBarObjects.js';
2
+ export class TaskBar {
3
+ /**
4
+ * @param taskBarContext the taskbar container element (same idea as Grid's context)
5
+ */
6
+ constructor(page, taskBarContext = null) {
7
+ /** returns all task buttons */
8
+ this.tasks = () => this._taskBarObjects.tasks(); // matches Grid's "rows()" noun-style
9
+ /** returns a task button by its data-testid key */
10
+ this.getTaskById = (key) => this._taskBarObjects.taskById(key);
11
+ /** returns a task button by its visible label */
12
+ this.getTaskByLabel = (label) => this._taskBarObjects.taskByLabel(label);
13
+ /** light action sugar (keep assertions in tests) */
14
+ this.clickById = async (key) => {
15
+ await this.getTaskById(key).click();
16
+ };
17
+ this.clickByLabel = async (label) => {
18
+ await this.getTaskByLabel(label).click();
19
+ };
20
+ this._taskBarObjects = new TaskBarObjects(page, taskBarContext);
21
+ }
22
+ }
23
+ //# sourceMappingURL=TaskBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskBar.js","sourceRoot":"","sources":["../../../components/task/TaskBar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,OAAO;IAGlB;;OAEG;IACH,YAAY,IAAU,EAAE,iBAAiC,IAAI;QAI7D,+BAA+B;QACxB,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,qCAAqC;QAEjG,mDAAmD;QAC5C,gBAAW,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElF,iDAAiD;QAC1C,mBAAc,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE5F,oDAAoD;QAC7C,cAAS,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;YACtD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC,CAAC;QAEK,iBAAY,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;YAC3D,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC;QAnBA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC;CAmBF"}
@@ -0,0 +1,17 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseComponentObjects } from '../BaseComponentObjects.js';
3
+ export declare class TaskBarObjects extends BaseComponentObjects {
4
+ /**
5
+ * @param page playwright page
6
+ * @param context the taskbar container element itself (e.g. page.getByTestId('task-toolbar-section').nth(0))
7
+ */
8
+ constructor(page: Page, context?: Locator | null);
9
+ /** returns the taskbar container (same as provided context) */
10
+ container: () => Locator;
11
+ /** all task buttons within this taskbar */
12
+ tasks: () => Locator;
13
+ /** task by its data-testid key, e.g. toolbar__task__task-edit-a-category */
14
+ taskById: (actionKey: string) => Locator;
15
+ /** task by accessible label, e.g. "Add new category" */
16
+ taskByLabel: (label: string) => Locator;
17
+ }
@@ -0,0 +1,19 @@
1
+ import { BaseComponentObjects } from '../BaseComponentObjects.js';
2
+ export class TaskBarObjects extends BaseComponentObjects {
3
+ /**
4
+ * @param page playwright page
5
+ * @param context the taskbar container element itself (e.g. page.getByTestId('task-toolbar-section').nth(0))
6
+ */
7
+ constructor(page, context = null) {
8
+ super(page, context);
9
+ /** returns the taskbar container (same as provided context) */
10
+ this.container = () => this.context;
11
+ /** all task buttons within this taskbar */
12
+ this.tasks = () => this.context.locator('button[data-testid^="toolbar__task__"]');
13
+ /** task by its data-testid key, e.g. toolbar__task__task-edit-a-category */
14
+ this.taskById = (actionKey) => this.context.getByTestId(`toolbar__task__${actionKey}`);
15
+ /** task by accessible label, e.g. "Add new category" */
16
+ this.taskByLabel = (label) => this.context.getByRole('button', { name: label });
17
+ }
18
+ }
19
+ //# sourceMappingURL=TaskBarObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskBarObjects.js","sourceRoot":"","sources":["../../../components/task/TaskBarObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,cAAe,SAAQ,oBAAoB;IACtD;;;OAGG;IACH,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGvB,+DAA+D;QACxD,cAAS,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAE/C,2CAA2C;QACpC,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAE7F,4EAA4E;QACrE,aAAQ,GAAG,CAAC,SAAiB,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAE1G,wDAAwD;QACjD,gBAAW,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAZnG,CAAC;CAaF"}
@@ -0,0 +1,14 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ export declare class TaskTile {
3
+ private _taskTileObjects;
4
+ /**
5
+ * @param taskTileContext the tasktile container element
6
+ */
7
+ constructor(page: Page, taskTileContext?: Locator | null);
8
+ /** returns all task tile buttons */
9
+ tasks: () => Locator;
10
+ getTaskById: (key: string) => Locator;
11
+ getTaskByLabel: (label: string) => Locator;
12
+ clickById: (key: string) => Promise<void>;
13
+ clickByLabel: (label: string) => Promise<void>;
14
+ }
@@ -0,0 +1,20 @@
1
+ import { TaskTileObjects } from './TaskTileObjects.js';
2
+ export class TaskTile {
3
+ /**
4
+ * @param taskTileContext the tasktile container element
5
+ */
6
+ constructor(page, taskTileContext = null) {
7
+ /** returns all task tile buttons */
8
+ this.tasks = () => this._taskTileObjects.tasks();
9
+ this.getTaskById = (key) => this._taskTileObjects.taskById(key);
10
+ this.getTaskByLabel = (label) => this._taskTileObjects.taskByLabel(label);
11
+ this.clickById = async (key) => {
12
+ await this.getTaskById(key).click();
13
+ };
14
+ this.clickByLabel = async (label) => {
15
+ await this.getTaskByLabel(label).click();
16
+ };
17
+ this._taskTileObjects = new TaskTileObjects(page, taskTileContext);
18
+ }
19
+ }
20
+ //# sourceMappingURL=TaskTile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskTile.js","sourceRoot":"","sources":["../../../components/task/TaskTile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,QAAQ;IAGnB;;OAEG;IACH,YAAY,IAAU,EAAE,kBAAkC,IAAI;QAI9D,oCAAoC;QAC7B,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAErD,gBAAW,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5E,mBAAc,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEtF,cAAS,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;YACtD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC,CAAC;QAEK,iBAAY,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;YAC3D,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC;QAhBA,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC;CAgBF"}
@@ -0,0 +1,13 @@
1
+ import type { Locator, Page } from '@playwright/test';
2
+ import { BaseComponentObjects } from '../BaseComponentObjects.js';
3
+ export declare class TaskTileObjects extends BaseComponentObjects {
4
+ constructor(page: Page, context?: Locator | null);
5
+ /** returns the taskbar container (same as provided context) */
6
+ container: () => Locator;
7
+ /** all task buttons within this taskbar */
8
+ tasks: () => Locator;
9
+ /** task by its data-testid key, e.g. tasktiles__task__task-edit-a-category */
10
+ taskById: (actionKey: string) => Locator;
11
+ /** task by accessible label, e.g. "Add new category" */
12
+ taskByLabel: (label: string) => Locator;
13
+ }
@@ -0,0 +1,15 @@
1
+ import { BaseComponentObjects } from '../BaseComponentObjects.js';
2
+ export class TaskTileObjects extends BaseComponentObjects {
3
+ constructor(page, context = null) {
4
+ super(page, context);
5
+ /** returns the taskbar container (same as provided context) */
6
+ this.container = () => this.context;
7
+ /** all task buttons within this taskbar */
8
+ this.tasks = () => this.context.locator('button[data-testid^="tasktiles"]');
9
+ /** task by its data-testid key, e.g. tasktiles__task__task-edit-a-category */
10
+ this.taskById = (actionKey) => this.context.getByTestId(`tasktiles__task__${actionKey}`);
11
+ /** task by accessible label, e.g. "Add new category" */
12
+ this.taskByLabel = (label) => this.context.getByRole('button', { name: label });
13
+ }
14
+ }
15
+ //# sourceMappingURL=TaskTileObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskTileObjects.js","sourceRoot":"","sources":["../../../components/task/TaskTileObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,eAAgB,SAAQ,oBAAoB;IACvD,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGvB,+DAA+D;QACxD,cAAS,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAE/C,2CAA2C;QACpC,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAEvF,8EAA8E;QACvE,aAAQ,GAAG,CAAC,SAAiB,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QAE5G,wDAAwD;QACjD,gBAAW,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAZnG,CAAC;CAaF"}
package/dist/config.json CHANGED
@@ -1,10 +1,10 @@
1
- {
2
- "defaultApplication": "",
3
- "defaultPlatform": 3,
4
- "loginOptionsDisabled": false,
5
- "loginOptionsHidden": false,
6
- "installNotificationDisabled": true,
7
- "installNotificationExpirationInDays": 30,
8
- "useServiceWorker": false,
9
- "useFormFieldBackgroundColor": true
10
- }
1
+ {
2
+ "defaultApplication": "",
3
+ "defaultPlatform": 3,
4
+ "loginOptionsDisabled": false,
5
+ "loginOptionsHidden": false,
6
+ "installNotificationDisabled": true,
7
+ "installNotificationExpirationInDays": 30,
8
+ "useServiceWorker": false,
9
+ "useFormFieldBackgroundColor": true
10
+ }
@@ -0,0 +1,11 @@
1
+ /** biome-ignore-all lint/suspicious/noExplicitAny: needed flexibility */
2
+ import type { Locator } from '@playwright/test';
3
+ declare class LookupDropdown {
4
+ private _locator;
5
+ constructor(locator: Locator);
6
+ lookupSelect(optionToSelect: string): Promise<void>;
7
+ selectOption(optionText: string): Promise<void>;
8
+ private select;
9
+ }
10
+ export declare function createLookupDropdown(locator: Locator): LookupDropdown & Locator;
11
+ export {};
@@ -0,0 +1,39 @@
1
+ import { escapeRegex } from '../helpers/RegexHelper.js';
2
+ class LookupDropdown {
3
+ constructor(locator) {
4
+ this._locator = locator;
5
+ }
6
+ async lookupSelect(optionToSelect) {
7
+ await Promise.all([this._locator.click(), this._locator.page().waitForResponse('**/list_**')]);
8
+ await this._locator.fill(optionToSelect);
9
+ await this._locator.page().waitEventHandler.setCanContinue(true);
10
+ await this.select(optionToSelect);
11
+ }
12
+ async selectOption(optionText) {
13
+ await this._locator.click();
14
+ await this.select(optionText);
15
+ }
16
+ async select(optionToSelect) {
17
+ const optionsToSelectRegex = new RegExp(`^${escapeRegex(optionToSelect)}$`, 'i');
18
+ await this._locator.page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
19
+ await this._locator
20
+ .page()
21
+ .waitForFunction((el) => document.activeElement === el, await this._locator.elementHandle());
22
+ }
23
+ }
24
+ export function createLookupDropdown(locator) {
25
+ const dropdown = new LookupDropdown(locator);
26
+ return new Proxy(dropdown, {
27
+ get(target, prop, receiver) {
28
+ if (prop in target) {
29
+ return Reflect.get(target, prop, receiver);
30
+ }
31
+ const value = locator[prop];
32
+ if (typeof value === 'function') {
33
+ return value.bind(locator);
34
+ }
35
+ return value;
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=LookupDropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LookupDropdown.js","sourceRoot":"","sources":["../../controls/LookupDropdown.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,cAAc;IAGlB,YAAY,OAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,cAAsB;QACvC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE/F,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEjE,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,cAAsB;QACzC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QACrG,MAAM,IAAI,CAAC,QAAQ;aAChB,IAAI,EAAE;aACN,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IACjG,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAE7C,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QACzB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAA6B,CAAC;AACjC,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './LookupDropdown.js';
@@ -0,0 +1,2 @@
1
+ export * from './LookupDropdown.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  export declare enum LogLevel {
2
- FATAL = "FATAL",
3
2
  ERROR = "ERROR",
4
3
  WARN = "WARN",
5
4
  INFO = "INFO",
6
- STEP = "STEP",
7
- DEBUG = "DEBUG"
5
+ DEBUG = "DEBUG",
6
+ ALL = "ALL"
8
7
  }
@@ -1,11 +1,10 @@
1
1
  export var LogLevel;
2
2
  (function (LogLevel) {
3
3
  // Order by severity
4
- LogLevel["FATAL"] = "FATAL";
5
4
  LogLevel["ERROR"] = "ERROR";
6
5
  LogLevel["WARN"] = "WARN";
7
6
  LogLevel["INFO"] = "INFO";
8
- LogLevel["STEP"] = "STEP";
9
7
  LogLevel["DEBUG"] = "DEBUG";
8
+ LogLevel["ALL"] = "ALL";
10
9
  })(LogLevel || (LogLevel = {}));
11
10
  //# sourceMappingURL=LogLevel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogLevel.js","sourceRoot":"","sources":["../../enums/LogLevel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,oBAAoB;IACpB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;AACjB,CAAC,EARW,QAAQ,KAAR,QAAQ,QAQnB"}
1
+ {"version":3,"file":"LogLevel.js","sourceRoot":"","sources":["../../enums/LogLevel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,oBAAoB;IACpB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,uBAAW,CAAA;AACb,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
@@ -0,0 +1 @@
1
+ export * from './ExportFormat.js';
@@ -0,0 +1,2 @@
1
+ export * from './ExportFormat.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -6,7 +6,7 @@ export class TestifyService {
6
6
  this.testRunId = '';
7
7
  this.token = `Bearer ${process.env.TESTIFY_TOKEN}`;
8
8
  this.projectId = process.env.TESTIFY_PROJECT_ID || '';
9
- // biome-ignore lint/style/noNonNullAssertion: <explanation>
9
+ // biome-ignore lint/style/noNonNullAssertion: Acceptable technical debt
10
10
  this.baseUrl = process.env.TESTIFY_BASE_URL.replace(/\/$/, '');
11
11
  this.axiosInstance = axios.create({
12
12
  baseURL: this.baseUrl,
@@ -33,10 +33,13 @@ export class TestifyService {
33
33
  async getTestRunId(testRunName) {
34
34
  try {
35
35
  const url = `/api/v1/TestRun?projectId=${this.projectId}`;
36
- const response = await this.axiosInstance.get(url, { headers: this.headers('text/plain') });
36
+ const response = await this.axiosInstance.get(url, {
37
+ headers: this.headers('text/plain')
38
+ });
37
39
  const testRunList = response.data;
38
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
39
- const found = testRunList.find((tr) => tr.name?.toLowerCase() === testRunName.toLowerCase());
40
+ const found = testRunList.find(
41
+ // biome-ignore lint/suspicious/noExplicitAny: Acceptable technical debt
42
+ (tr) => tr.name?.toLowerCase() === testRunName.toLowerCase());
40
43
  return found?.id?.toString() ?? '';
41
44
  }
42
45
  catch (err) {
@@ -57,7 +60,9 @@ export class TestifyService {
57
60
  async getProjectName() {
58
61
  try {
59
62
  const url = `/api/v1/Project/${this.projectId}`;
60
- const response = await this.axiosInstance.get(url, { headers: this.headers('text/plain') });
63
+ const response = await this.axiosInstance.get(url, {
64
+ headers: this.headers('text/plain')
65
+ });
61
66
  const project = response.data;
62
67
  return project.name;
63
68
  }
@@ -103,10 +108,13 @@ export class TestifyService {
103
108
  async getTestResultId(testCaseId) {
104
109
  try {
105
110
  const url = `/api/v1/Result?testRunId=${this.testRunId}`;
106
- const response = await this.axiosInstance.get(url, { headers: this.headers('text/plain') });
111
+ const response = await this.axiosInstance.get(url, {
112
+ headers: this.headers('text/plain')
113
+ });
107
114
  const results = response.data;
108
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
109
- const found = results.find((r) => r.testCaseId?.toString() === testCaseId);
115
+ const found = results.find(
116
+ // biome-ignore lint/suspicious/noExplicitAny: Acceptable technical debt
117
+ (r) => r.testCaseId?.toString() === testCaseId);
110
118
  return found?.id?.toString() ?? '';
111
119
  }
112
120
  catch (err) {
@@ -117,7 +125,7 @@ export class TestifyService {
117
125
  async getTestCaseId(testCaseName) {
118
126
  try {
119
127
  const testCases = await this.getTestCases();
120
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
128
+ // biome-ignore lint/suspicious/noExplicitAny: Acceptable technical debt
121
129
  const found = testCases.find((tc) => tc.name === testCaseName);
122
130
  return found?.id?.toString() ?? '';
123
131
  }
@@ -145,7 +153,7 @@ export class TestifyService {
145
153
  console.error('createTestCase failed:', err);
146
154
  }
147
155
  }
148
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
156
+ // biome-ignore lint/suspicious/noExplicitAny: Acceptable technical debt
149
157
  testCaseExists(testCases, testName) {
150
158
  try {
151
159
  return testCases.some((tc) => tc.name?.toLowerCase() === testName.toLowerCase());
@@ -155,11 +163,13 @@ export class TestifyService {
155
163
  return false;
156
164
  }
157
165
  }
158
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
166
+ // biome-ignore lint/suspicious/noExplicitAny: Acceptable technical debt
159
167
  async getTestCases() {
160
168
  try {
161
169
  const url = `/api/v1/TestCase?projectId=${this.projectId}`;
162
- const response = await this.axiosInstance.get(url, { headers: this.headers('text/plain') });
170
+ const response = await this.axiosInstance.get(url, {
171
+ headers: this.headers('text/plain')
172
+ });
163
173
  return response.data;
164
174
  }
165
175
  catch (err) {