@thinkwise/testwise 0.2.62 → 0.2.99

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 (458) hide show
  1. package/Testwise.ts +35 -0
  2. package/artifact-builder/ArtifactManager.ts +25 -2
  3. package/artifact-builder/ComponentClassModelBuilder.ts +148 -0
  4. package/artifact-builder/InterfaceGenerator.ts +31 -33
  5. package/artifact-builder/ModelDataBuilder.ts +18 -20
  6. package/artifact-builder/ModelDataRefiner.ts +23 -3
  7. package/artifact-builder/SchemaGenerator.ts +45 -35
  8. package/artifact-builder/ScreenInterfaceRefiner.ts +25 -10
  9. package/artifact-builder/SelectorBuilder.ts +30 -24
  10. package/artifact-builder/SubjectClassModelBuilder.ts +209 -0
  11. package/artifact-builder/SubjectComponentGenerator.ts +67 -246
  12. package/artifact-builder/SubjectGenerator.ts +117 -230
  13. package/artifact-builder/SubjectRegistration.ts +41 -32
  14. package/artifact-builder/TsFileModel.ts +94 -0
  15. package/artifact-builder/TsFileSerializer.ts +247 -0
  16. package/artifact-builder/helpers/DataRetriever.ts +64 -27
  17. package/artifact-builder/helpers/NamingHandler.ts +23 -78
  18. package/artifact-builder/helpers/PipelinePaths.ts +123 -0
  19. package/artifact-builder/helpers/Stopwatch.ts +10 -0
  20. package/artifact-builder/helpers/index.ts +1 -0
  21. package/artifact-builder/index.ts +4 -0
  22. package/components/BaseComponentObjects.ts +17 -0
  23. package/components/action-bar/ActionBar.ts +35 -47
  24. package/components/action-bar/ActionBarObjects.ts +2 -0
  25. package/components/action-bar/CustomActionBar.ts +6 -0
  26. package/components/cardlist/Cardlist.ts +6 -0
  27. package/components/chart/Chart.ts +6 -0
  28. package/components/combined-filter/CombinedFilter.ts +9 -0
  29. package/components/cube-view-bar/CubeViewBar.ts +6 -0
  30. package/components/export/ExportComponent.ts +12 -0
  31. package/components/filter/ExcelStyleFilterPopup.ts +83 -10
  32. package/components/filter/ExcelStyleFilterPopupObjects.ts +29 -3
  33. package/components/filter/FilterForm.ts +10 -0
  34. package/components/filter/FilterPopup.ts +30 -9
  35. package/components/filter/FilterPopupObjects.ts +10 -3
  36. package/components/filter/FindForm.ts +7 -0
  37. package/components/filter/ManagePrefilterPopup.ts +11 -0
  38. package/components/form/Form.ts +16 -0
  39. package/components/grid/Grid.ts +50 -14
  40. package/components/grid/GridObjects.ts +0 -15
  41. package/components/maps/Maps.ts +6 -0
  42. package/components/menu/ListBarMenuComponent.ts +10 -0
  43. package/components/pivot-grid/PivotGrid.ts +6 -0
  44. package/components/pivot-grid/PivotGridFieldList.ts +7 -0
  45. package/components/pop-up/AllRowsPopUp.ts +12 -0
  46. package/components/pop-up/PopUpComponent.ts +11 -0
  47. package/components/prefilter-list/PrefilterList.ts +9 -0
  48. package/components/preview/Preview.ts +6 -0
  49. package/components/report-bar/ReportBar.ts +6 -0
  50. package/components/report-tiles/ReportTiles.ts +6 -0
  51. package/components/scheduler/Scheduler.ts +6 -0
  52. package/components/snackbar/SnackBar.ts +12 -0
  53. package/components/splitter/Splitter.ts +6 -0
  54. package/components/tab/BaseTab.ts +5 -0
  55. package/components/tab/DetailTabPage.ts +11 -0
  56. package/components/tab/Tab.ts +10 -0
  57. package/components/task/TaskBar.ts +13 -3
  58. package/components/task/TaskTiles.ts +12 -3
  59. package/components/topbar/TopBar.ts +10 -0
  60. package/components/tree-view/TreeView.ts +9 -0
  61. package/controls/DateControl.ts +47 -9
  62. package/controls/DateControlObjects.ts +15 -0
  63. package/controls/FormComboBox.ts +43 -26
  64. package/controls/FormComboBoxObjects.ts +27 -0
  65. package/controls/GridColumnControl.ts +35 -4
  66. package/controls/GridColumnControlObjects.ts +1 -1
  67. package/controls/InputFieldControl.ts +61 -15
  68. package/controls/InputFieldControlObjects.ts +19 -0
  69. package/controls/LookupDropdown.ts +59 -31
  70. package/controls/LookupDropdownObjects.ts +19 -0
  71. package/dist/Testwise.js +35 -0
  72. package/dist/Testwise.js.map +1 -1
  73. package/dist/artifact-builder/ArtifactManager.d.ts +18 -1
  74. package/dist/artifact-builder/ArtifactManager.js +24 -2
  75. package/dist/artifact-builder/ArtifactManager.js.map +1 -1
  76. package/dist/artifact-builder/ComponentClassModelBuilder.d.ts +22 -0
  77. package/dist/artifact-builder/ComponentClassModelBuilder.js +115 -0
  78. package/dist/artifact-builder/ComponentClassModelBuilder.js.map +1 -0
  79. package/dist/artifact-builder/InterfaceGenerator.d.ts +15 -6
  80. package/dist/artifact-builder/InterfaceGenerator.js +27 -26
  81. package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
  82. package/dist/artifact-builder/ModelDataBuilder.d.ts +7 -0
  83. package/dist/artifact-builder/ModelDataBuilder.js +13 -5
  84. package/dist/artifact-builder/ModelDataBuilder.js.map +1 -1
  85. package/dist/artifact-builder/ModelDataRefiner.d.ts +18 -1
  86. package/dist/artifact-builder/ModelDataRefiner.js +18 -3
  87. package/dist/artifact-builder/ModelDataRefiner.js.map +1 -1
  88. package/dist/artifact-builder/SchemaGenerator.d.ts +21 -5
  89. package/dist/artifact-builder/SchemaGenerator.js +38 -26
  90. package/dist/artifact-builder/SchemaGenerator.js.map +1 -1
  91. package/dist/artifact-builder/ScreenInterfaceRefiner.d.ts +18 -1
  92. package/dist/artifact-builder/ScreenInterfaceRefiner.js +23 -9
  93. package/dist/artifact-builder/ScreenInterfaceRefiner.js.map +1 -1
  94. package/dist/artifact-builder/SelectorBuilder.d.ts +18 -5
  95. package/dist/artifact-builder/SelectorBuilder.js +29 -14
  96. package/dist/artifact-builder/SelectorBuilder.js.map +1 -1
  97. package/dist/artifact-builder/SubjectClassModelBuilder.d.ts +38 -0
  98. package/dist/artifact-builder/SubjectClassModelBuilder.js +158 -0
  99. package/dist/artifact-builder/SubjectClassModelBuilder.js.map +1 -0
  100. package/dist/artifact-builder/SubjectComponentGenerator.d.ts +25 -14
  101. package/dist/artifact-builder/SubjectComponentGenerator.js +65 -189
  102. package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
  103. package/dist/artifact-builder/SubjectGenerator.d.ts +32 -13
  104. package/dist/artifact-builder/SubjectGenerator.js +81 -165
  105. package/dist/artifact-builder/SubjectGenerator.js.map +1 -1
  106. package/dist/artifact-builder/SubjectRegistration.d.ts +22 -8
  107. package/dist/artifact-builder/SubjectRegistration.js +29 -14
  108. package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
  109. package/dist/artifact-builder/TsFileModel.d.ts +86 -0
  110. package/dist/artifact-builder/TsFileModel.js +2 -0
  111. package/dist/artifact-builder/TsFileModel.js.map +1 -0
  112. package/dist/artifact-builder/TsFileSerializer.d.ts +19 -0
  113. package/dist/artifact-builder/TsFileSerializer.js +225 -0
  114. package/dist/artifact-builder/TsFileSerializer.js.map +1 -0
  115. package/dist/artifact-builder/helpers/DataRetriever.d.ts +22 -3
  116. package/dist/artifact-builder/helpers/DataRetriever.js +56 -26
  117. package/dist/artifact-builder/helpers/DataRetriever.js.map +1 -1
  118. package/dist/artifact-builder/helpers/NamingHandler.d.ts +18 -6
  119. package/dist/artifact-builder/helpers/NamingHandler.js +20 -61
  120. package/dist/artifact-builder/helpers/NamingHandler.js.map +1 -1
  121. package/dist/artifact-builder/helpers/PipelinePaths.d.ts +52 -0
  122. package/dist/artifact-builder/helpers/PipelinePaths.js +99 -0
  123. package/dist/artifact-builder/helpers/PipelinePaths.js.map +1 -0
  124. package/dist/artifact-builder/helpers/Stopwatch.d.ts +10 -0
  125. package/dist/artifact-builder/helpers/Stopwatch.js +10 -0
  126. package/dist/artifact-builder/helpers/Stopwatch.js.map +1 -1
  127. package/dist/artifact-builder/helpers/index.d.ts +1 -0
  128. package/dist/artifact-builder/helpers/index.js +1 -0
  129. package/dist/artifact-builder/helpers/index.js.map +1 -1
  130. package/dist/artifact-builder/index.d.ts +4 -0
  131. package/dist/artifact-builder/index.js +4 -0
  132. package/dist/artifact-builder/index.js.map +1 -1
  133. package/dist/components/BaseComponentObjects.d.ts +17 -0
  134. package/dist/components/BaseComponentObjects.js +17 -0
  135. package/dist/components/BaseComponentObjects.js.map +1 -1
  136. package/dist/components/action-bar/ActionBar.d.ts +21 -24
  137. package/dist/components/action-bar/ActionBar.js +31 -24
  138. package/dist/components/action-bar/ActionBar.js.map +1 -1
  139. package/dist/components/action-bar/ActionBarObjects.d.ts +1 -0
  140. package/dist/components/action-bar/ActionBarObjects.js +1 -0
  141. package/dist/components/action-bar/ActionBarObjects.js.map +1 -1
  142. package/dist/components/action-bar/CustomActionBar.d.ts +6 -0
  143. package/dist/components/action-bar/CustomActionBar.js +6 -0
  144. package/dist/components/action-bar/CustomActionBar.js.map +1 -1
  145. package/dist/components/cardlist/Cardlist.d.ts +6 -0
  146. package/dist/components/cardlist/Cardlist.js +6 -0
  147. package/dist/components/cardlist/Cardlist.js.map +1 -1
  148. package/dist/components/chart/Chart.d.ts +6 -0
  149. package/dist/components/chart/Chart.js +6 -0
  150. package/dist/components/chart/Chart.js.map +1 -1
  151. package/dist/components/combined-filter/CombinedFilter.d.ts +9 -0
  152. package/dist/components/combined-filter/CombinedFilter.js +9 -0
  153. package/dist/components/combined-filter/CombinedFilter.js.map +1 -1
  154. package/dist/components/cube-view-bar/CubeViewBar.d.ts +6 -0
  155. package/dist/components/cube-view-bar/CubeViewBar.js +6 -0
  156. package/dist/components/cube-view-bar/CubeViewBar.js.map +1 -1
  157. package/dist/components/export/ExportComponent.d.ts +12 -0
  158. package/dist/components/export/ExportComponent.js +12 -0
  159. package/dist/components/export/ExportComponent.js.map +1 -1
  160. package/dist/components/filter/ExcelStyleFilterPopup.d.ts +25 -2
  161. package/dist/components/filter/ExcelStyleFilterPopup.js +60 -6
  162. package/dist/components/filter/ExcelStyleFilterPopup.js.map +1 -1
  163. package/dist/components/filter/ExcelStyleFilterPopupObjects.d.ts +8 -1
  164. package/dist/components/filter/ExcelStyleFilterPopupObjects.js +15 -2
  165. package/dist/components/filter/ExcelStyleFilterPopupObjects.js.map +1 -1
  166. package/dist/components/filter/FilterForm.d.ts +10 -0
  167. package/dist/components/filter/FilterForm.js +10 -0
  168. package/dist/components/filter/FilterForm.js.map +1 -1
  169. package/dist/components/filter/FilterPopup.d.ts +22 -4
  170. package/dist/components/filter/FilterPopup.js +17 -9
  171. package/dist/components/filter/FilterPopup.js.map +1 -1
  172. package/dist/components/filter/FilterPopupObjects.d.ts +5 -2
  173. package/dist/components/filter/FilterPopupObjects.js +5 -2
  174. package/dist/components/filter/FilterPopupObjects.js.map +1 -1
  175. package/dist/components/filter/FindForm.d.ts +7 -0
  176. package/dist/components/filter/FindForm.js +7 -0
  177. package/dist/components/filter/FindForm.js.map +1 -1
  178. package/dist/components/filter/ManagePrefilterPopup.d.ts +11 -0
  179. package/dist/components/filter/ManagePrefilterPopup.js +11 -0
  180. package/dist/components/filter/ManagePrefilterPopup.js.map +1 -1
  181. package/dist/components/form/Form.d.ts +16 -0
  182. package/dist/components/form/Form.js +16 -0
  183. package/dist/components/form/Form.js.map +1 -1
  184. package/dist/components/grid/Grid.d.ts +20 -1
  185. package/dist/components/grid/Grid.js +35 -25
  186. package/dist/components/grid/Grid.js.map +1 -1
  187. package/dist/components/grid/GridObjects.d.ts +0 -4
  188. package/dist/components/grid/GridObjects.js +0 -6
  189. package/dist/components/grid/GridObjects.js.map +1 -1
  190. package/dist/components/maps/Maps.d.ts +6 -0
  191. package/dist/components/maps/Maps.js +6 -0
  192. package/dist/components/maps/Maps.js.map +1 -1
  193. package/dist/components/menu/ListBarMenuComponent.d.ts +10 -0
  194. package/dist/components/menu/ListBarMenuComponent.js +10 -0
  195. package/dist/components/menu/ListBarMenuComponent.js.map +1 -1
  196. package/dist/components/pivot-grid/PivotGrid.d.ts +6 -0
  197. package/dist/components/pivot-grid/PivotGrid.js +6 -0
  198. package/dist/components/pivot-grid/PivotGrid.js.map +1 -1
  199. package/dist/components/pivot-grid/PivotGridFieldList.d.ts +7 -0
  200. package/dist/components/pivot-grid/PivotGridFieldList.js +7 -0
  201. package/dist/components/pivot-grid/PivotGridFieldList.js.map +1 -1
  202. package/dist/components/pop-up/AllRowsPopUp.d.ts +12 -0
  203. package/dist/components/pop-up/AllRowsPopUp.js +12 -0
  204. package/dist/components/pop-up/AllRowsPopUp.js.map +1 -1
  205. package/dist/components/pop-up/PopUpComponent.d.ts +11 -0
  206. package/dist/components/pop-up/PopUpComponent.js +11 -0
  207. package/dist/components/pop-up/PopUpComponent.js.map +1 -1
  208. package/dist/components/prefilter-list/PrefilterList.d.ts +9 -0
  209. package/dist/components/prefilter-list/PrefilterList.js +9 -0
  210. package/dist/components/prefilter-list/PrefilterList.js.map +1 -1
  211. package/dist/components/preview/Preview.d.ts +6 -0
  212. package/dist/components/preview/Preview.js +6 -0
  213. package/dist/components/preview/Preview.js.map +1 -1
  214. package/dist/components/report-bar/ReportBar.d.ts +6 -0
  215. package/dist/components/report-bar/ReportBar.js +6 -0
  216. package/dist/components/report-bar/ReportBar.js.map +1 -1
  217. package/dist/components/report-tiles/ReportTiles.d.ts +6 -0
  218. package/dist/components/report-tiles/ReportTiles.js +6 -0
  219. package/dist/components/report-tiles/ReportTiles.js.map +1 -1
  220. package/dist/components/scheduler/Scheduler.d.ts +6 -0
  221. package/dist/components/scheduler/Scheduler.js +6 -0
  222. package/dist/components/scheduler/Scheduler.js.map +1 -1
  223. package/dist/components/snackbar/SnackBar.d.ts +12 -0
  224. package/dist/components/snackbar/SnackBar.js +12 -0
  225. package/dist/components/snackbar/SnackBar.js.map +1 -1
  226. package/dist/components/splitter/Splitter.d.ts +6 -0
  227. package/dist/components/splitter/Splitter.js +6 -0
  228. package/dist/components/splitter/Splitter.js.map +1 -1
  229. package/dist/components/tab/BaseTab.d.ts +5 -0
  230. package/dist/components/tab/BaseTab.js +5 -0
  231. package/dist/components/tab/BaseTab.js.map +1 -1
  232. package/dist/components/tab/DetailTabPage.d.ts +11 -0
  233. package/dist/components/tab/DetailTabPage.js +11 -0
  234. package/dist/components/tab/DetailTabPage.js.map +1 -1
  235. package/dist/components/tab/Tab.d.ts +10 -0
  236. package/dist/components/tab/Tab.js +10 -0
  237. package/dist/components/tab/Tab.js.map +1 -1
  238. package/dist/components/task/TaskBar.d.ts +12 -2
  239. package/dist/components/task/TaskBar.js +13 -3
  240. package/dist/components/task/TaskBar.js.map +1 -1
  241. package/dist/components/task/TaskTiles.d.ts +11 -2
  242. package/dist/components/task/TaskTiles.js +12 -3
  243. package/dist/components/task/TaskTiles.js.map +1 -1
  244. package/dist/components/topbar/TopBar.d.ts +10 -0
  245. package/dist/components/topbar/TopBar.js +10 -0
  246. package/dist/components/topbar/TopBar.js.map +1 -1
  247. package/dist/components/tree-view/TreeView.d.ts +9 -0
  248. package/dist/components/tree-view/TreeView.js +9 -0
  249. package/dist/components/tree-view/TreeView.js.map +1 -1
  250. package/dist/controls/DateControl.d.ts +40 -2
  251. package/dist/controls/DateControl.js +24 -7
  252. package/dist/controls/DateControl.js.map +1 -1
  253. package/dist/controls/DateControlObjects.d.ts +8 -1
  254. package/dist/controls/DateControlObjects.js +8 -1
  255. package/dist/controls/DateControlObjects.js.map +1 -1
  256. package/dist/controls/FormComboBox.d.ts +30 -0
  257. package/dist/controls/FormComboBox.js +19 -16
  258. package/dist/controls/FormComboBox.js.map +1 -1
  259. package/dist/controls/FormComboBoxObjects.d.ts +12 -1
  260. package/dist/controls/FormComboBoxObjects.js +15 -1
  261. package/dist/controls/FormComboBoxObjects.js.map +1 -1
  262. package/dist/controls/GridColumnControl.d.ts +30 -0
  263. package/dist/controls/GridColumnControl.js +13 -4
  264. package/dist/controls/GridColumnControl.js.map +1 -1
  265. package/dist/controls/GridColumnControlObjects.js +1 -1
  266. package/dist/controls/GridColumnControlObjects.js.map +1 -1
  267. package/dist/controls/InputFieldControl.d.ts +50 -3
  268. package/dist/controls/InputFieldControl.js +40 -11
  269. package/dist/controls/InputFieldControl.js.map +1 -1
  270. package/dist/controls/InputFieldControlObjects.d.ts +10 -1
  271. package/dist/controls/InputFieldControlObjects.js +10 -1
  272. package/dist/controls/InputFieldControlObjects.js.map +1 -1
  273. package/dist/controls/LookupDropdown.d.ts +29 -0
  274. package/dist/controls/LookupDropdown.js +36 -25
  275. package/dist/controls/LookupDropdown.js.map +1 -1
  276. package/dist/controls/LookupDropdownObjects.d.ts +10 -0
  277. package/dist/controls/LookupDropdownObjects.js +11 -0
  278. package/dist/controls/LookupDropdownObjects.js.map +1 -0
  279. package/dist/enums/ElementTypes.d.ts +18 -0
  280. package/dist/enums/ElementTypes.js +18 -0
  281. package/dist/enums/ElementTypes.js.map +1 -1
  282. package/dist/enums/ExportFormat.d.ts +8 -0
  283. package/dist/enums/ExportFormat.js +8 -0
  284. package/dist/enums/ExportFormat.js.map +1 -1
  285. package/dist/enums/LogLevel.d.ts +17 -0
  286. package/dist/enums/LogLevel.js +17 -1
  287. package/dist/enums/LogLevel.js.map +1 -1
  288. package/dist/enums/index.d.ts +1 -0
  289. package/dist/enums/index.js +1 -0
  290. package/dist/enums/index.js.map +1 -1
  291. package/dist/helpers/ConfigChecker.d.ts +13 -0
  292. package/dist/helpers/ConfigChecker.js +13 -0
  293. package/dist/helpers/ConfigChecker.js.map +1 -1
  294. package/dist/helpers/Ensure.d.ts +13 -0
  295. package/dist/helpers/Ensure.js +13 -0
  296. package/dist/helpers/Ensure.js.map +1 -1
  297. package/dist/helpers/FlightTracker.d.ts +13 -3
  298. package/dist/helpers/FlightTracker.js +103 -17
  299. package/dist/helpers/FlightTracker.js.map +1 -1
  300. package/dist/helpers/GlobalWaitEventHandler.d.ts +13 -0
  301. package/dist/helpers/GlobalWaitEventHandler.js +13 -0
  302. package/dist/helpers/GlobalWaitEventHandler.js.map +1 -1
  303. package/dist/helpers/LoginHelper.d.ts +35 -1
  304. package/dist/helpers/LoginHelper.js +46 -11
  305. package/dist/helpers/LoginHelper.js.map +1 -1
  306. package/dist/helpers/PathResolver.d.ts +22 -0
  307. package/dist/helpers/PathResolver.js +22 -0
  308. package/dist/helpers/PathResolver.js.map +1 -1
  309. package/dist/helpers/Poll.d.ts +13 -1
  310. package/dist/helpers/Poll.js +12 -0
  311. package/dist/helpers/Poll.js.map +1 -1
  312. package/dist/helpers/RegexHelper.d.ts +15 -0
  313. package/dist/helpers/RegexHelper.js +15 -3
  314. package/dist/helpers/RegexHelper.js.map +1 -1
  315. package/dist/helpers/SubjectNavigator.d.ts +26 -0
  316. package/dist/helpers/SubjectNavigator.js +51 -0
  317. package/dist/helpers/SubjectNavigator.js.map +1 -0
  318. package/dist/helpers/UserSimulationHelper.d.ts +14 -0
  319. package/dist/helpers/UserSimulationHelper.js +14 -0
  320. package/dist/helpers/UserSimulationHelper.js.map +1 -1
  321. package/dist/helpers/index.d.ts +1 -0
  322. package/dist/helpers/index.js +1 -0
  323. package/dist/helpers/index.js.map +1 -1
  324. package/dist/index.d.ts +6 -20
  325. package/dist/index.js +1 -0
  326. package/dist/index.js.map +1 -1
  327. package/dist/interfaces/IComponentObjects.d.ts +12 -0
  328. package/dist/interfaces/IComponentSchemaMeta.d.ts +15 -0
  329. package/dist/interfaces/IComponentSchemaMeta.js +2 -0
  330. package/dist/interfaces/IComponentSchemaMeta.js.map +1 -0
  331. package/dist/interfaces/IProperty.d.ts +13 -0
  332. package/dist/interfaces/IRegisteredSubjects.d.ts +12 -0
  333. package/dist/interfaces/ISeedSubjectDraft.d.ts +16 -0
  334. package/dist/interfaces/ISeedSubjectDraft.js +2 -0
  335. package/dist/interfaces/ISeedSubjectDraft.js.map +1 -0
  336. package/dist/interfaces/ISubject.d.ts +13 -0
  337. package/dist/interfaces/ISubjectDetail.d.ts +11 -0
  338. package/dist/interfaces/ISubjectDetail.js +2 -0
  339. package/dist/interfaces/ISubjectDetail.js.map +1 -0
  340. package/dist/mcp/ArtifactResolver.d.ts +152 -0
  341. package/dist/mcp/ArtifactResolver.js +232 -0
  342. package/dist/mcp/ArtifactResolver.js.map +1 -0
  343. package/dist/mcp/index.d.ts +2 -0
  344. package/dist/mcp/index.js +2 -0
  345. package/dist/mcp/index.js.map +1 -0
  346. package/dist/page-extensions/GlobalComponents.d.ts +30 -0
  347. package/dist/page-extensions/GlobalComponents.js +30 -0
  348. package/dist/page-extensions/GlobalComponents.js.map +1 -1
  349. package/dist/page-extensions/GoToDeepLink.d.ts +9 -0
  350. package/dist/page-extensions/GoToDeepLink.js +9 -0
  351. package/dist/page-extensions/GoToDeepLink.js.map +1 -1
  352. package/dist/page-extensions/LoginFeatures.d.ts +8 -0
  353. package/dist/page-extensions/LoginFeatures.js +8 -0
  354. package/dist/page-extensions/LoginFeatures.js.map +1 -1
  355. package/dist/page-extensions/SubjectRegistry.d.ts +31 -0
  356. package/dist/page-extensions/SubjectRegistry.js +31 -0
  357. package/dist/page-extensions/SubjectRegistry.js.map +1 -1
  358. package/dist/page-extensions/UserSimulation.d.ts +21 -0
  359. package/dist/page-extensions/UserSimulation.js +21 -0
  360. package/dist/page-extensions/UserSimulation.js.map +1 -1
  361. package/dist/page-extensions/WaitEventHandler.d.ts +20 -0
  362. package/dist/page-extensions/WaitEventHandler.js +20 -0
  363. package/dist/page-extensions/WaitEventHandler.js.map +1 -1
  364. package/dist/page-overrides/ClickOverride.d.ts +23 -2
  365. package/dist/page-overrides/ClickOverride.js +34 -50
  366. package/dist/page-overrides/ClickOverride.js.map +1 -1
  367. package/dist/page-overrides/FillOverride.d.ts +23 -0
  368. package/dist/page-overrides/FillOverride.js +46 -66
  369. package/dist/page-overrides/FillOverride.js.map +1 -1
  370. package/dist/services/ConfigBuilder.d.ts +24 -0
  371. package/dist/services/ConfigBuilder.js +24 -0
  372. package/dist/services/ConfigBuilder.js.map +1 -1
  373. package/dist/services/IndiciumApi.service.d.ts +26 -0
  374. package/dist/services/IndiciumApi.service.js +40 -5
  375. package/dist/services/IndiciumApi.service.js.map +1 -1
  376. package/dist/services/Logger.d.ts +13 -0
  377. package/dist/services/Logger.js +39 -0
  378. package/dist/services/Logger.js.map +1 -1
  379. package/dist/types/Components.d.ts +18 -1
  380. package/dist/types/Components.js +0 -1
  381. package/dist/types/Components.js.map +1 -1
  382. package/dist/types/LocatorType.d.ts +5 -0
  383. package/dist/types/LocatorType.js +2 -0
  384. package/dist/types/LocatorType.js.map +1 -0
  385. package/dist/types/PollTypes.d.ts +8 -0
  386. package/dist/types/Test.d.ts +18 -0
  387. package/dist/types/Universal.d.ts +12 -0
  388. package/dist/types/index.d.ts +2 -0
  389. package/dist/types/index.js +2 -0
  390. package/dist/types/index.js.map +1 -1
  391. package/enums/ElementTypes.ts +18 -0
  392. package/enums/ExportFormat.ts +8 -0
  393. package/enums/LogLevel.ts +17 -1
  394. package/enums/index.ts +1 -0
  395. package/helpers/ConfigChecker.ts +13 -0
  396. package/helpers/Ensure.ts +13 -0
  397. package/helpers/FlightTracker.ts +109 -20
  398. package/helpers/GlobalWaitEventHandler.ts +13 -0
  399. package/helpers/LoginHelper.ts +49 -12
  400. package/helpers/PathResolver.ts +22 -0
  401. package/helpers/Poll.ts +13 -1
  402. package/helpers/RegexHelper.ts +15 -3
  403. package/helpers/SubjectNavigator.ts +57 -0
  404. package/helpers/UserSimulationHelper.ts +14 -0
  405. package/helpers/index.ts +1 -0
  406. package/index.ts +1 -0
  407. package/interfaces/IComponentObjects.ts +12 -0
  408. package/interfaces/IComponentSchemaMeta.ts +17 -0
  409. package/interfaces/IProperty.ts +13 -0
  410. package/interfaces/IRegisteredSubjects.ts +12 -0
  411. package/interfaces/ISeedSubjectDraft.ts +17 -0
  412. package/interfaces/ISubject.ts +13 -0
  413. package/interfaces/ISubjectDetail.ts +12 -0
  414. package/mcp/ArtifactResolver.ts +296 -0
  415. package/mcp/index.ts +2 -0
  416. package/package.json +20 -8
  417. package/page-extensions/GlobalComponents.ts +30 -0
  418. package/page-extensions/GoToDeepLink.ts +9 -0
  419. package/page-extensions/LoginFeatures.ts +8 -0
  420. package/page-extensions/SubjectRegistry.ts +32 -0
  421. package/page-extensions/UserSimulation.ts +21 -0
  422. package/page-extensions/WaitEventHandler.ts +20 -0
  423. package/page-overrides/ClickOverride.ts +36 -55
  424. package/page-overrides/FillOverride.ts +59 -73
  425. package/promptCredentials.js +1 -1
  426. package/scripts/Testwise.template.json +1 -1
  427. package/scripts/diagram.js +2267 -0
  428. package/scripts/main.js +84 -63
  429. package/scripts/postinstall.js +55 -42
  430. package/scripts/setup.js +91 -37
  431. package/scripts/sync.js +767 -748
  432. package/services/ConfigBuilder.ts +24 -0
  433. package/services/IndiciumApi.service.ts +44 -6
  434. package/services/Logger.ts +40 -0
  435. package/templates/copilot-instructions.md +130 -0
  436. package/templates/mcp.json +9 -0
  437. package/templates/testwise-test-expert.agent.md +453 -0
  438. package/tests/tsconfig.json +12 -0
  439. package/tsconfig.json +6 -2
  440. package/types/Components.ts +17 -2
  441. package/types/LocatorType.ts +5 -0
  442. package/types/PollTypes.ts +8 -0
  443. package/types/Test.ts +18 -0
  444. package/types/Universal.ts +12 -0
  445. package/types/index.ts +2 -0
  446. package/dist/interfaces/IStoredTestResults.d.ts +0 -5
  447. package/dist/interfaces/IStoredTestResults.js +0 -2
  448. package/dist/interfaces/IStoredTestResults.js.map +0 -1
  449. package/dist/templates/test-artifacts/SubjectPageBase.d.ts +0 -5
  450. package/dist/templates/test-artifacts/SubjectPageBase.js +0 -6
  451. package/dist/templates/test-artifacts/SubjectPageBase.js.map +0 -1
  452. package/dist/templates/test-artifacts/screens/index.d.ts +0 -1
  453. package/dist/templates/test-artifacts/screens/index.js +0 -2
  454. package/dist/templates/test-artifacts/screens/index.js.map +0 -1
  455. package/dist/templates/test-artifacts/subjects/index.d.ts +0 -1
  456. package/dist/templates/test-artifacts/subjects/index.js +0 -2
  457. package/dist/templates/test-artifacts/subjects/index.js.map +0 -1
  458. package/interfaces/IStoredTestResults.ts +0 -6
@@ -1,5 +1,22 @@
1
1
  import { GlobalWaitEventHandler } from '../helpers/GlobalWaitEventHandler.js';
2
+ /**
3
+ * Playwright fixture layer that attaches a `GlobalWaitEventHandler` instance
4
+ * to `page.waitEventHandler` before each test.
5
+ *
6
+ * Use `page.waitEventHandler` when you need to block test execution until a
7
+ * specific URL pattern has been responded to — for example, waiting for a
8
+ * background data-load endpoint before asserting on results.
9
+ *
10
+ * @example
11
+ * await page.waitEventHandler.waitForUrl('/api/employees/load');
12
+ * await expect(subject.grid.rows()).toHaveCount(10);
13
+ */
2
14
  export class WaitEventHandler {
15
+ /**
16
+ * Extends the Playwright `Test` fixture to attach a `GlobalWaitEventHandler` instance
17
+ * to `page.waitEventHandler` before each test.
18
+ * @param test - The Playwright `Test` fixture to extend.
19
+ */
3
20
  constructor(test) {
4
21
  this._test = test.extend({
5
22
  page: async ({ page }, use) => {
@@ -8,6 +25,9 @@ export class WaitEventHandler {
8
25
  }
9
26
  });
10
27
  }
28
+ /**
29
+ * Returns the extended `Test` fixture with `page.waitEventHandler` wired up.
30
+ */
11
31
  get test() {
12
32
  return this._test;
13
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WaitEventHandler.js","sourceRoot":"","sources":["../../page-extensions/WaitEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAS9E,MAAM,OAAO,gBAAgB;IAG3B,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;gBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"WaitEventHandler.js","sourceRoot":"","sources":["../../page-extensions/WaitEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAS9E;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAgB;IAG3B;;;;OAIG;IACH,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;gBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -1,8 +1,29 @@
1
1
  import type { Test } from '../types/Test.js';
2
+ /**
3
+ * Playwright fixture layer that wraps every Locator `click()` call to wait
4
+ * for in-flight XHR requests to settle before returning control to the test.
5
+ *
6
+ * **Why this exists:** The Thinkwise application fires XHR calls immediately
7
+ * after a click (save, navigation, data load). Without this override a test
8
+ * that clicks a button and then immediately reads a value races against the
9
+ * server response. `ClickOverride` uses `FlightTracker` under the hood to
10
+ * block until all relevant requests finish.
11
+ *
12
+ * **How to disable** (if a specific test must opt out):
13
+ * Set `featureSettings.InflightRequests.waitForRequestsToComplete: false` in
14
+ * `Testwise.json` — but this is rarely needed.
15
+ */
2
16
  export declare class ClickOverride {
3
17
  private _test;
4
- private _page;
5
- private flightTracker;
18
+ /**
19
+ * Extends the Playwright `Test` fixture to wrap every locator's `click` method with
20
+ * in-flight XHR tracking via `FlightTracker`, waiting for all relevant requests to
21
+ * settle after each click. Behaviour is configurable via `featureSettings.InflightRequests`.
22
+ * @param test - The Playwright `Test` fixture to extend.
23
+ */
6
24
  constructor(test: Test);
25
+ /**
26
+ * Returns the extended `Test` fixture with the click override active.
27
+ */
7
28
  get test(): Test;
8
29
  }
@@ -1,65 +1,46 @@
1
1
  import { FlightTracker } from '../helpers/FlightTracker.js';
2
2
  import { testwiseConfig } from '../services/ConfigBuilder.js';
3
3
  const waitForRequestsToComplete = testwiseConfig().get('featureSettings.InflightRequests.waitForRequestsToComplete') ?? true;
4
- const continueOnError = testwiseConfig().get('featureSettings.InflightRequests.continueOnError') ?? true;
4
+ /**
5
+ * Playwright fixture layer that wraps every Locator `click()` call to wait
6
+ * for in-flight XHR requests to settle before returning control to the test.
7
+ *
8
+ * **Why this exists:** The Thinkwise application fires XHR calls immediately
9
+ * after a click (save, navigation, data load). Without this override a test
10
+ * that clicks a button and then immediately reads a value races against the
11
+ * server response. `ClickOverride` uses `FlightTracker` under the hood to
12
+ * block until all relevant requests finish.
13
+ *
14
+ * **How to disable** (if a specific test must opt out):
15
+ * Set `featureSettings.InflightRequests.waitForRequestsToComplete: false` in
16
+ * `Testwise.json` — but this is rarely needed.
17
+ */
5
18
  export class ClickOverride {
19
+ /**
20
+ * Extends the Playwright `Test` fixture to wrap every locator's `click` method with
21
+ * in-flight XHR tracking via `FlightTracker`, waiting for all relevant requests to
22
+ * settle after each click. Behaviour is configurable via `featureSettings.InflightRequests`.
23
+ * @param test - The Playwright `Test` fixture to extend.
24
+ */
6
25
  constructor(test) {
7
- this._page = null;
8
- this.flightTracker = new FlightTracker();
9
26
  this._test = test.extend({
10
27
  page: async ({ page }, use) => {
11
- this._page = page;
12
- const isTrackable = (url, resourceType) => {
13
- const lowerUrl = url.toLowerCase();
14
- return (resourceType === 'xhr' &&
15
- !lowerUrl.includes('/detect_change(') &&
16
- !lowerUrl.includes('/set_gui_start_use_log_session') &&
17
- !lowerUrl.includes('download_icon') &&
18
- !lowerUrl.includes('download_list_bar_grp_icon') &&
19
- !lowerUrl.includes('/badge()'));
20
- };
28
+ const flightTracker = new FlightTracker();
29
+ page.on('request', (request) => {
30
+ flightTracker.handleRequestStarted(request.url(), request.resourceType());
31
+ });
32
+ page.on('response', (response) => {
33
+ flightTracker.handleRequestFinished(response.request().url());
34
+ });
35
+ page.on('requestfailed', (request) => {
36
+ flightTracker.handleRequestFailed(request.url());
37
+ });
21
38
  const overrideClickMethod = (locator) => {
22
39
  const originalClickMethod = locator.click.bind(locator);
23
- page.on('request', (request) => {
24
- if (isTrackable(request.url(), request.resourceType())) {
25
- this.flightTracker.requestsInFlight++;
26
- }
27
- });
28
- page.on('response', (response) => {
29
- if (isTrackable(response.request().url(), response.request().resourceType())) {
30
- if (this.flightTracker.requestsInFlight > 0) {
31
- this.flightTracker.requestsInFlight--;
32
- }
33
- if (this.flightTracker.requestsInFlight === 0) {
34
- this.flightTracker.eventEmitter.emit('idle');
35
- }
36
- }
37
- });
38
40
  locator.click = async (options) => {
39
41
  await originalClickMethod(options);
40
42
  if (waitForRequestsToComplete) {
41
- try {
42
- await this.flightTracker.waitToContinue();
43
- }
44
- catch (error) {
45
- console.warn('Exception while waiting for inflight requests to finish:', error);
46
- if (this._page) {
47
- const inflightRequests = await this._page.evaluate(() => {
48
- return performance
49
- .getEntriesByType('resource')
50
- .filter((entry) => {
51
- const res = entry;
52
- return (res.initiatorType === 'xmlhttprequest' &&
53
- !res.name.includes('/detect_change(') &&
54
- !res.name.includes('/set_gui_start_use_log_session'));
55
- })
56
- .map((entry) => entry.name);
57
- });
58
- console.debug('Current inflight XHR requests:', inflightRequests);
59
- }
60
- if (!continueOnError)
61
- throw error;
62
- }
43
+ await flightTracker.waitToContinue();
63
44
  }
64
45
  return;
65
46
  };
@@ -98,6 +79,9 @@ export class ClickOverride {
98
79
  }
99
80
  });
100
81
  }
82
+ /**
83
+ * Returns the extended `Test` fixture with the click override active.
84
+ */
101
85
  get test() {
102
86
  return this._test;
103
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClickOverride.js","sourceRoot":"","sources":["../../page-overrides/ClickOverride.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClickOverride.js","sourceRoot":"","sources":["../../page-overrides/ClickOverride.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,30 @@
1
1
  import type { Test } from '../types/Test.js';
2
+ /**
3
+ * Playwright fixture layer that wraps every Locator `fill()` call to wait
4
+ * for in-flight XHR requests to settle before returning control to the test.
5
+ *
6
+ * **Why this exists:** After filling a lookup or auto-complete field the
7
+ * Thinkwise application fires XHR calls to search/resolve the typed value.
8
+ * Without this override, subsequent assertions or interactions race against
9
+ * those server responses. `FillOverride` uses `FlightTracker` to block until
10
+ * all relevant requests on the watchlist finish.
11
+ *
12
+ * The `featureSettings.InflightRequests.paths` list in `Testwise.json`
13
+ * controls which API endpoints are watched during fill operations.
14
+ */
2
15
  export declare class FillOverride {
3
16
  private _test;
4
17
  private flightTracker;
18
+ /**
19
+ * Extends the Playwright `Test` fixture to wrap every locator's `fill` method:
20
+ * waits for watched in-flight requests to settle, fills the element, and — for
21
+ * qualifying form fields — triggers a `/staged` response wait and blurs the element
22
+ * if the value changed. Watchlist and behaviour are configurable via `featureSettings`.
23
+ * @param test - The Playwright `Test` fixture to extend.
24
+ */
5
25
  constructor(test: Test);
26
+ /**
27
+ * Returns the extended `Test` fixture with the fill override active.
28
+ */
6
29
  get test(): Test;
7
30
  }
@@ -2,7 +2,37 @@ import { FlightTracker } from '../helpers/FlightTracker.js';
2
2
  import { testwiseConfig } from '../services/ConfigBuilder.js';
3
3
  const requestWatchlist = testwiseConfig().get('featureSettings.InflightRequests.paths') ?? [];
4
4
  const waitForRequestsToComplete = testwiseConfig().get('featureSettings.InflightRequests.waitForRequestsToComplete') ?? true;
5
+ const locatorMethods = [
6
+ 'locator',
7
+ 'getByText',
8
+ 'getByTestId',
9
+ 'getByAltText',
10
+ 'getByLabel',
11
+ 'getByRole',
12
+ 'getByPlaceholder',
13
+ 'getByTitle'
14
+ ];
15
+ /**
16
+ * Playwright fixture layer that wraps every Locator `fill()` call to wait
17
+ * for in-flight XHR requests to settle before returning control to the test.
18
+ *
19
+ * **Why this exists:** After filling a lookup or auto-complete field the
20
+ * Thinkwise application fires XHR calls to search/resolve the typed value.
21
+ * Without this override, subsequent assertions or interactions race against
22
+ * those server responses. `FillOverride` uses `FlightTracker` to block until
23
+ * all relevant requests on the watchlist finish.
24
+ *
25
+ * The `featureSettings.InflightRequests.paths` list in `Testwise.json`
26
+ * controls which API endpoints are watched during fill operations.
27
+ */
5
28
  export class FillOverride {
29
+ /**
30
+ * Extends the Playwright `Test` fixture to wrap every locator's `fill` method:
31
+ * waits for watched in-flight requests to settle, fills the element, and — for
32
+ * qualifying form fields — triggers a `/staged` response wait and blurs the element
33
+ * if the value changed. Watchlist and behaviour are configurable via `featureSettings`.
34
+ * @param test - The Playwright `Test` fixture to extend.
35
+ */
6
36
  constructor(test) {
7
37
  this.flightTracker = new FlightTracker();
8
38
  this._test = test.extend({
@@ -26,80 +56,30 @@ export class FillOverride {
26
56
  });
27
57
  }
28
58
  const overrideFillMethod = (locator) => {
29
- const originalFillMethod = locator.fill.bind(locator);
59
+ const originalFill = locator.fill.bind(locator);
30
60
  locator.fill = async (value, options) => {
31
- try {
32
- if (waitForRequestsToComplete)
33
- await this.flightTracker.waitToContinue();
34
- }
35
- catch (e) {
36
- console.warn('Exception:', e);
37
- this.flightTracker.requestsInFlight = 0;
38
- }
39
- const currentValue = await locator.inputValue();
40
- const valueIsDifferent = currentValue !== value;
41
- const formFieldTestIdPrefix = 'form-field__';
42
- const isQualifyingFormField = await locator.evaluate((el, formFieldTestIdPrefix) => {
43
- const elementTestId = el.getAttribute('data-testid');
44
- const parentWithFormSectionTestId = el.closest('[data-testid^="form-section__"]');
45
- if (elementTestId) {
46
- return elementTestId.includes(formFieldTestIdPrefix) && parentWithFormSectionTestId !== null;
47
- }
48
- return false;
49
- }, formFieldTestIdPrefix);
50
- if (valueIsDifferent && isQualifyingFormField) {
51
- await page.waitEventHandler.waitForCanContinue();
52
- page.waitEventHandler.waitForResponse('/staged');
53
- }
54
- await originalFillMethod(value, options);
55
- if (isQualifyingFormField) {
56
- await locator.evaluate((el) => {
57
- const ariaExpanded = el.getAttribute('aria-expanded');
58
- if (!ariaExpanded)
59
- el.blur();
60
- });
61
- }
61
+ if (waitForRequestsToComplete)
62
+ await this.flightTracker.waitToContinue();
63
+ await page.waitEventHandler.waitForCanContinue();
64
+ await originalFill(value, options);
62
65
  };
63
- const originalLocatorMethod = locator.locator.bind(locator);
64
- locator.locator = (...args) => overrideFillMethod(originalLocatorMethod(...args));
65
- const originalGetByTextMethod = locator.getByText.bind(locator);
66
- locator.getByText = (...args) => overrideFillMethod(originalGetByTextMethod(...args));
67
- const originalGetByTestIdMethod = locator.getByTestId.bind(locator);
68
- locator.getByTestId = (...args) => overrideFillMethod(originalGetByTestIdMethod(...args));
69
- const originalGetByAltTextMethod = locator.getByAltText.bind(locator);
70
- locator.getByAltText = (...args) => overrideFillMethod(originalGetByAltTextMethod(...args));
71
- const originalGetByLabelMethod = locator.getByLabel.bind(locator);
72
- locator.getByLabel = (...args) => overrideFillMethod(originalGetByLabelMethod(...args));
73
- const originalGetByRoleMethod = locator.getByRole.bind(locator);
74
- locator.getByRole = (...args) => overrideFillMethod(originalGetByRoleMethod(...args));
75
- const originalGetByPlaceholderMethod = locator.getByPlaceholder.bind(locator);
76
- locator.getByPlaceholder = (...args) => overrideFillMethod(originalGetByPlaceholderMethod(...args));
77
- const originalGetByTitleMethod = locator.getByTitle.bind(locator);
78
- locator.getByTitle = (...args) => overrideFillMethod(originalGetByTitleMethod(...args));
66
+ for (const method of locatorMethods) {
67
+ const original = locator[method].bind(locator);
68
+ locator[method] = (...args) => overrideFillMethod(original(...args));
69
+ }
79
70
  return locator;
80
71
  };
81
- // Override the locator method on the page object
82
- const originalLocator = page.locator.bind(page);
83
- page.locator = (...args) => overrideFillMethod(originalLocator(...args));
84
- const originalGetByTestId = page.getByTestId.bind(page);
85
- const originalGetByAltText = page.getByAltText.bind(page);
86
- const originalGetByLabel = page.getByLabel.bind(page);
87
- const originalGetByRole = page.getByRole.bind(page);
88
- const originalGetByPlaceholder = page.getByPlaceholder.bind(page);
89
- const originalGetByText = page.getByText.bind(page);
90
- const originalGetByTitle = page.getByTitle.bind(page);
91
- // Override other top-level methods as before
92
- page.getByTestId = (...args) => overrideFillMethod(originalGetByTestId(...args));
93
- page.getByAltText = (...args) => overrideFillMethod(originalGetByAltText(...args));
94
- page.getByLabel = (...args) => overrideFillMethod(originalGetByLabel(...args));
95
- page.getByRole = (...args) => overrideFillMethod(originalGetByRole(...args));
96
- page.getByPlaceholder = (...args) => overrideFillMethod(originalGetByPlaceholder(...args));
97
- page.getByText = (...args) => overrideFillMethod(originalGetByText(...args));
98
- page.getByTitle = (...args) => overrideFillMethod(originalGetByTitle(...args));
72
+ for (const method of locatorMethods) {
73
+ const original = page[method].bind(page);
74
+ page[method] = (...args) => overrideFillMethod(original(...args));
75
+ }
99
76
  await use(page);
100
77
  }
101
78
  });
102
79
  }
80
+ /**
81
+ * Returns the extended `Test` fixture with the fill override active.
82
+ */
103
83
  get test() {
104
84
  return this._test;
105
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FillOverride.js","sourceRoot":"","sources":["../../page-overrides/FillOverride.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FillOverride.js","sourceRoot":"","sources":["../../page-overrides/FillOverride.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,27 @@
1
+ /**
2
+ * Reads and exposes the consumer project's `Testwise.json` configuration file
3
+ * and any `.env` files found in the project root.
4
+ *
5
+ * **What it does:**
6
+ * - Locates `Testwise.json` relative to `process.env.INIT_CWD` (the directory
7
+ * from which `npm run` was invoked — i.e. the consumer project root).
8
+ * - Parses and applies every `.env` file found in that directory into
9
+ * `process.env` so environment variables are available to all pipeline steps
10
+ * and helpers before they construct.
11
+ * - Exposes a dot-notation `get<T>(key)` accessor to retrieve deeply nested
12
+ * config values without needing to cast or navigate the raw JSON.
13
+ *
14
+ * **How to use it in tests or helpers:**
15
+ * ```ts
16
+ * import { testwiseConfig } from '../services/ConfigBuilder.js';
17
+ *
18
+ * const baseUrl = testwiseConfig().get<string>('application.baseUrl');
19
+ * const timeout = testwiseConfig().get<number>('featureSettings.InflightRequests.waitTimeout');
20
+ * ```
21
+ *
22
+ * The exported `testwiseConfig()` function returns a singleton—the file is
23
+ * only read once per process.
24
+ */
1
25
  declare class ConfigBuilder {
2
26
  private config;
3
27
  constructor();
@@ -1,6 +1,30 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import dotenv from 'dotenv';
4
+ /**
5
+ * Reads and exposes the consumer project's `Testwise.json` configuration file
6
+ * and any `.env` files found in the project root.
7
+ *
8
+ * **What it does:**
9
+ * - Locates `Testwise.json` relative to `process.env.INIT_CWD` (the directory
10
+ * from which `npm run` was invoked — i.e. the consumer project root).
11
+ * - Parses and applies every `.env` file found in that directory into
12
+ * `process.env` so environment variables are available to all pipeline steps
13
+ * and helpers before they construct.
14
+ * - Exposes a dot-notation `get<T>(key)` accessor to retrieve deeply nested
15
+ * config values without needing to cast or navigate the raw JSON.
16
+ *
17
+ * **How to use it in tests or helpers:**
18
+ * ```ts
19
+ * import { testwiseConfig } from '../services/ConfigBuilder.js';
20
+ *
21
+ * const baseUrl = testwiseConfig().get<string>('application.baseUrl');
22
+ * const timeout = testwiseConfig().get<number>('featureSettings.InflightRequests.waitTimeout');
23
+ * ```
24
+ *
25
+ * The exported `testwiseConfig()` function returns a singleton—the file is
26
+ * only read once per process.
27
+ */
4
28
  class ConfigBuilder {
5
29
  constructor() {
6
30
  this.config = null;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigBuilder.js","sourceRoot":"","sources":["../../services/ConfigBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigBuilder.js","sourceRoot":"","sources":["../../services/ConfigBuilder.ts"],"names":[],"mappings":"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"}
@@ -10,13 +10,39 @@ export declare class IndiciumApiService {
10
10
  * before any API calls are made.
11
11
  */
12
12
  private ensureReady;
13
+ private static extractMessage;
13
14
  private initialize;
14
15
  private verifyConnection;
16
+ /**
17
+ * Returns whether the service successfully connected to and verified the configured
18
+ * GUI application alias. Use this to guard against misconfiguration before making API calls.
19
+ * @returns `true` if the connection was verified; `false` otherwise.
20
+ */
15
21
  canConnectToProject(): Promise<boolean>;
22
+ /**
23
+ * Returns the resolved GUI application ID for the configured alias, or `null` if
24
+ * verification failed (e.g. the alias was not found or the service URL is unreachable).
25
+ */
16
26
  getVerifiedGuiApplId(): Promise<number | null>;
27
+ /**
28
+ * Fetches all UI table records (`i_ui_tab`) for the verified GUI application.
29
+ * @returns An array of table objects, or an empty array if not verified or on error.
30
+ */
17
31
  getAllTables(): Promise<any[]>;
32
+ /**
33
+ * Fetches all UI column records (`i_ui_col`) for the verified GUI application.
34
+ * @returns An array of column objects, or an empty array if not verified or on error.
35
+ */
18
36
  getAllColumns(): Promise<any[]>;
37
+ /**
38
+ * Fetches all lookup table relationships (`i_ui_tab_look_up`) for the verified GUI application.
39
+ * @returns An array of lookup objects, or an empty array if not verified or on error.
40
+ */
19
41
  getLookups(): Promise<any[]>;
42
+ /**
43
+ * Fetches all screen component records (`i_ui_screen_component`) for the verified GUI application.
44
+ * @returns An array of screen component objects, or an empty array if not verified or on error.
45
+ */
20
46
  getScreenComponents(): Promise<any[]>;
21
47
  /**
22
48
  * Returns the verified GUI Application ID.
@@ -18,6 +18,16 @@ export class IndiciumApiService {
18
18
  async ensureReady() {
19
19
  await this.initPromise;
20
20
  }
21
+ static extractMessage(error) {
22
+ if (axios.isAxiosError(error)) {
23
+ const axiosErr = error;
24
+ const status = axiosErr.response?.status;
25
+ const statusText = axiosErr.response?.statusText;
26
+ const url = axiosErr.config?.url ?? '';
27
+ return status ? `HTTP ${status} ${statusText} — ${url}` : axiosErr.message;
28
+ }
29
+ return error instanceof Error ? error.message : String(error);
30
+ }
21
31
  async initialize() {
22
32
  const config = testwiseConfig();
23
33
  const serviceUrl = config.get('environmentSettings.serviceUrl')?.replace(/\/$/, '');
@@ -55,17 +65,30 @@ export class IndiciumApiService {
55
65
  }
56
66
  }
57
67
  catch (error) {
58
- console.error('IndiciumApiService: Verification failed:', error);
68
+ console.error(`IndiciumApiService: Verification failed: ${IndiciumApiService.extractMessage(error)}`);
59
69
  }
60
70
  }
71
+ /**
72
+ * Returns whether the service successfully connected to and verified the configured
73
+ * GUI application alias. Use this to guard against misconfiguration before making API calls.
74
+ * @returns `true` if the connection was verified; `false` otherwise.
75
+ */
61
76
  async canConnectToProject() {
62
77
  await this.ensureReady();
63
78
  return this.isVerified;
64
79
  }
80
+ /**
81
+ * Returns the resolved GUI application ID for the configured alias, or `null` if
82
+ * verification failed (e.g. the alias was not found or the service URL is unreachable).
83
+ */
65
84
  async getVerifiedGuiApplId() {
66
85
  await this.ensureReady();
67
86
  return this.guiApplId;
68
87
  }
88
+ /**
89
+ * Fetches all UI table records (`i_ui_tab`) for the verified GUI application.
90
+ * @returns An array of table objects, or an empty array if not verified or on error.
91
+ */
69
92
  async getAllTables() {
70
93
  await this.ensureReady();
71
94
  if (!this.isVerified || !this.guiApplId)
@@ -75,10 +98,14 @@ export class IndiciumApiService {
75
98
  return response.data?.value || [];
76
99
  }
77
100
  catch (error) {
78
- console.error('Failed to fetch tables:', error);
101
+ console.error(`IndiciumApiService: Failed to fetch tables: ${IndiciumApiService.extractMessage(error)}`);
79
102
  return [];
80
103
  }
81
104
  }
105
+ /**
106
+ * Fetches all UI column records (`i_ui_col`) for the verified GUI application.
107
+ * @returns An array of column objects, or an empty array if not verified or on error.
108
+ */
82
109
  async getAllColumns() {
83
110
  await this.ensureReady();
84
111
  if (!this.isVerified || !this.guiApplId)
@@ -88,10 +115,14 @@ export class IndiciumApiService {
88
115
  return response.data?.value || [];
89
116
  }
90
117
  catch (error) {
91
- console.error('Failed to fetch columns:', error);
118
+ console.error(`IndiciumApiService: Failed to fetch columns: ${IndiciumApiService.extractMessage(error)}`);
92
119
  return [];
93
120
  }
94
121
  }
122
+ /**
123
+ * Fetches all lookup table relationships (`i_ui_tab_look_up`) for the verified GUI application.
124
+ * @returns An array of lookup objects, or an empty array if not verified or on error.
125
+ */
95
126
  async getLookups() {
96
127
  await this.ensureReady();
97
128
  if (!this.isVerified || !this.guiApplId)
@@ -101,10 +132,14 @@ export class IndiciumApiService {
101
132
  return response.data?.value || [];
102
133
  }
103
134
  catch (error) {
104
- console.error('Failed to fetch lookups:', error);
135
+ console.error(`IndiciumApiService: Failed to fetch lookups: ${IndiciumApiService.extractMessage(error)}`);
105
136
  return [];
106
137
  }
107
138
  }
139
+ /**
140
+ * Fetches all screen component records (`i_ui_screen_component`) for the verified GUI application.
141
+ * @returns An array of screen component objects, or an empty array if not verified or on error.
142
+ */
108
143
  async getScreenComponents() {
109
144
  await this.ensureReady();
110
145
  if (!this.isVerified || !this.guiApplId)
@@ -114,7 +149,7 @@ export class IndiciumApiService {
114
149
  return response.data?.value || [];
115
150
  }
116
151
  catch (error) {
117
- console.error('Failed to fetch screen components:', error);
152
+ console.error(`IndiciumApiService: Failed to fetch screen components: ${IndiciumApiService.extractMessage(error)}`);
118
153
  return [];
119
154
  }
120
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IndiciumApi.service.js","sourceRoot":"","sources":["../../services/IndiciumApi.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IndiciumApi.service.js","sourceRoot":"","sources":["../../services/IndiciumApi.service.ts"],"names":[],"mappings":"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"}