@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
@@ -2,6 +2,30 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import dotenv from 'dotenv';
4
4
 
5
+ /**
6
+ * Reads and exposes the consumer project's `Testwise.json` configuration file
7
+ * and any `.env` files found in the project root.
8
+ *
9
+ * **What it does:**
10
+ * - Locates `Testwise.json` relative to `process.env.INIT_CWD` (the directory
11
+ * from which `npm run` was invoked — i.e. the consumer project root).
12
+ * - Parses and applies every `.env` file found in that directory into
13
+ * `process.env` so environment variables are available to all pipeline steps
14
+ * and helpers before they construct.
15
+ * - Exposes a dot-notation `get<T>(key)` accessor to retrieve deeply nested
16
+ * config values without needing to cast or navigate the raw JSON.
17
+ *
18
+ * **How to use it in tests or helpers:**
19
+ * ```ts
20
+ * import { testwiseConfig } from '../services/ConfigBuilder.js';
21
+ *
22
+ * const baseUrl = testwiseConfig().get<string>('application.baseUrl');
23
+ * const timeout = testwiseConfig().get<number>('featureSettings.InflightRequests.waitTimeout');
24
+ * ```
25
+ *
26
+ * The exported `testwiseConfig()` function returns a singleton—the file is
27
+ * only read once per process.
28
+ */
5
29
  class ConfigBuilder {
6
30
  private config: Record<string, unknown> | null = null;
7
31
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /** biome-ignore-all lint/style/noNonNullAssertion: because null is bad */
3
3
  /** biome-ignore-all lint/suspicious/noExplicitAny: because it is necessary */
4
- import axios, { type AxiosInstance } from 'axios';
4
+ import axios, { type AxiosError, type AxiosInstance } from 'axios';
5
5
  import { testwiseConfig } from './ConfigBuilder.js';
6
6
 
7
7
  export class IndiciumApiService {
@@ -23,6 +23,17 @@ export class IndiciumApiService {
23
23
  await this.initPromise;
24
24
  }
25
25
 
26
+ private static extractMessage(error: unknown): string {
27
+ if (axios.isAxiosError(error)) {
28
+ const axiosErr = error as AxiosError;
29
+ const status = axiosErr.response?.status;
30
+ const statusText = axiosErr.response?.statusText;
31
+ const url = axiosErr.config?.url ?? '';
32
+ return status ? `HTTP ${status} ${statusText} — ${url}` : axiosErr.message;
33
+ }
34
+ return error instanceof Error ? error.message : String(error);
35
+ }
36
+
26
37
  private async initialize(): Promise<void> {
27
38
  const config = testwiseConfig();
28
39
  const serviceUrl = config.get<string>('environmentSettings.serviceUrl')?.replace(/\/$/, '');
@@ -66,20 +77,33 @@ export class IndiciumApiService {
66
77
  console.warn(`IndiciumApiService: No GUI Application found for alias: ${targetAlias}`);
67
78
  }
68
79
  } catch (error) {
69
- console.error('IndiciumApiService: Verification failed:', error);
80
+ console.error(`IndiciumApiService: Verification failed: ${IndiciumApiService.extractMessage(error)}`);
70
81
  }
71
82
  }
72
83
 
84
+ /**
85
+ * Returns whether the service successfully connected to and verified the configured
86
+ * GUI application alias. Use this to guard against misconfiguration before making API calls.
87
+ * @returns `true` if the connection was verified; `false` otherwise.
88
+ */
73
89
  public async canConnectToProject(): Promise<boolean> {
74
90
  await this.ensureReady();
75
91
  return this.isVerified;
76
92
  }
77
93
 
94
+ /**
95
+ * Returns the resolved GUI application ID for the configured alias, or `null` if
96
+ * verification failed (e.g. the alias was not found or the service URL is unreachable).
97
+ */
78
98
  public async getVerifiedGuiApplId(): Promise<number | null> {
79
99
  await this.ensureReady();
80
100
  return this.guiApplId;
81
101
  }
82
102
 
103
+ /**
104
+ * Fetches all UI table records (`i_ui_tab`) for the verified GUI application.
105
+ * @returns An array of table objects, or an empty array if not verified or on error.
106
+ */
83
107
  public async getAllTables(): Promise<any[]> {
84
108
  await this.ensureReady();
85
109
  if (!this.isVerified || !this.guiApplId) return [];
@@ -90,11 +114,15 @@ export class IndiciumApiService {
90
114
  );
91
115
  return response.data?.value || [];
92
116
  } catch (error) {
93
- console.error('Failed to fetch tables:', error);
117
+ console.error(`IndiciumApiService: Failed to fetch tables: ${IndiciumApiService.extractMessage(error)}`);
94
118
  return [];
95
119
  }
96
120
  }
97
121
 
122
+ /**
123
+ * Fetches all UI column records (`i_ui_col`) for the verified GUI application.
124
+ * @returns An array of column objects, or an empty array if not verified or on error.
125
+ */
98
126
  public async getAllColumns(): Promise<any[]> {
99
127
  await this.ensureReady();
100
128
  if (!this.isVerified || !this.guiApplId) return [];
@@ -105,11 +133,15 @@ export class IndiciumApiService {
105
133
  );
106
134
  return response.data?.value || [];
107
135
  } catch (error) {
108
- console.error('Failed to fetch columns:', error);
136
+ console.error(`IndiciumApiService: Failed to fetch columns: ${IndiciumApiService.extractMessage(error)}`);
109
137
  return [];
110
138
  }
111
139
  }
112
140
 
141
+ /**
142
+ * Fetches all lookup table relationships (`i_ui_tab_look_up`) for the verified GUI application.
143
+ * @returns An array of lookup objects, or an empty array if not verified or on error.
144
+ */
113
145
  public async getLookups(): Promise<any[]> {
114
146
  await this.ensureReady();
115
147
  if (!this.isVerified || !this.guiApplId) return [];
@@ -120,11 +152,15 @@ export class IndiciumApiService {
120
152
  );
121
153
  return response.data?.value || [];
122
154
  } catch (error) {
123
- console.error('Failed to fetch lookups:', error);
155
+ console.error(`IndiciumApiService: Failed to fetch lookups: ${IndiciumApiService.extractMessage(error)}`);
124
156
  return [];
125
157
  }
126
158
  }
127
159
 
160
+ /**
161
+ * Fetches all screen component records (`i_ui_screen_component`) for the verified GUI application.
162
+ * @returns An array of screen component objects, or an empty array if not verified or on error.
163
+ */
128
164
  public async getScreenComponents(): Promise<any[]> {
129
165
  await this.ensureReady();
130
166
  if (!this.isVerified || !this.guiApplId) return [];
@@ -135,7 +171,9 @@ export class IndiciumApiService {
135
171
  );
136
172
  return response.data?.value || [];
137
173
  } catch (error) {
138
- console.error('Failed to fetch screen components:', error);
174
+ console.error(
175
+ `IndiciumApiService: Failed to fetch screen components: ${IndiciumApiService.extractMessage(error)}`
176
+ );
139
177
  return [];
140
178
  }
141
179
  }
@@ -4,6 +4,33 @@ import { LogLevel } from '../enums/LogLevel.js';
4
4
  import { originalDebug, originalError, originalInfo, originalLog, originalWarn } from '../index.js';
5
5
  import { testwiseConfig } from './ConfigBuilder.js';
6
6
 
7
+ /**
8
+ * Buffered, level-filtered logger that writes timestamped entries to a log
9
+ * file AND (optionally) to the console during test runs.
10
+ *
11
+ * **Configuration** — all settings live under `featureSettings.logger` in
12
+ * `Testwise.json`:
13
+ *
14
+ * | Key | Type | Default | Description |
15
+ * |---|---|---|---|
16
+ * | `logDir` | string | `"logs"` | Directory to write log files into, relative to the consumer project root. |
17
+ * | `logLevel` | `"ERROR"\|"WARN"\|"INFO"\|"DEBUG"\|"ALL"` | `"ALL"` | Minimum severity level to record. |
18
+ * | `logByDay` | boolean | `false` | When `true`, creates a new `test-log-YYYY-MM-DD.log` file each day instead of always writing to `test-log.log`. |
19
+ * | `bufferSizeLimit` | number | `1000` | Number of log lines to buffer in memory before flushing to disk. |
20
+ * | `applyLogLevelToConsoleOutput` | boolean | `false` | When `true`, the log-level filter also suppresses console output (not just file output). |
21
+ *
22
+ * **How to use it:**
23
+ * ```ts
24
+ * import { logger } from '../services/Logger.js';
25
+ *
26
+ * logger.info('Navigating to Employee subject');
27
+ * logger.error('Connection failed', error);
28
+ * ```
29
+ *
30
+ * Entries are written in the format:
31
+ * `[ISO-timestamp] [LEVEL] [file:line:col] message`
32
+ */
33
+
7
34
  const logDir = path.resolve(process.cwd(), testwiseConfig().get<string>('featureSettings.logger.logDir') ?? 'logs');
8
35
  const logLevel =
9
36
  (testwiseConfig().get<string>('featureSettings.logger.logLevel')?.toUpperCase() as LogLevel) ?? LogLevel.ALL;
@@ -173,6 +200,19 @@ function getCallerInfo(): string {
173
200
  return 'unknown origin';
174
201
  }
175
202
 
203
+ /**
204
+ * The singleton logger instance. Import this in any file that needs to write
205
+ * structured log entries during test execution or pipeline runs.
206
+ *
207
+ * All methods accept an optional message string followed by any number of
208
+ * extra values (arrays, objects, errors) that will be appended to the entry.
209
+ *
210
+ * ```ts
211
+ * logger.info('Starting sync pipeline');
212
+ * logger.warn('Subject not found', { subject: name });
213
+ * logger.error('Unexpected failure', err);
214
+ * ```
215
+ */
176
216
  export const logger = {
177
217
  // Order by severity level
178
218
  error: (msg?: string, ...optionalParams: unknown[]): void => log(msg, LogLevel.ERROR, ...optionalParams),
@@ -0,0 +1,130 @@
1
+ ---
2
+ applyTo: "**"
3
+ ---
4
+ # Testwise – GitHub Copilot Instructions
5
+
6
+ ## What Testwise is
7
+
8
+ **Testwise** (`@thinkwise/testwise`) is the end-to-end test automation library for this Thinkwise application. It wraps Playwright with typed components, generated subject artifacts, and helpers that match the exact UI patterns of Thinkwise applications.
9
+
10
+ **Always prefer Testwise over raw Playwright.** Using raw Playwright on a Thinkwise application leads to brittle selectors, automation loops, and high token usage. Testwise components are maintained by Thinkwise and absorb UI changes automatically.
11
+
12
+ ---
13
+
14
+ ## Imports
15
+
16
+ Always import `test` and `expect` from `@thinkwise/testwise`, never from `@playwright/test` directly.
17
+
18
+ ```typescript
19
+ import { test, expect } from '@thinkwise/testwise';
20
+ ```
21
+
22
+ For BDD-style tests:
23
+
24
+ ```typescript
25
+ import { bddTest as test, expect } from '@thinkwise/testwise';
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Subject artifacts
31
+
32
+ Testwise generates typed **subject classes** from the Thinkwise application model. Each class represents one screen and exposes the components on that screen as typed properties. They live in `node_modules/@thinkwise/testwise/test-artifacts/subjects/`.
33
+
34
+ ### Accessing a subject
35
+
36
+ Use the `page.subject` proxy. The property name is the **exact generated class name** (PascalCase), which encodes the subject name and the screen context:
37
+
38
+ ```typescript
39
+ test('example', async ({ page }) => {
40
+ const subject = await page.subject.CustomerOrderMain;
41
+ });
42
+ ```
43
+
44
+ > **Never guess a class name.** Always use the MCP `list_artifacts` tool to get the exact name before writing code.
45
+
46
+ ### Screen contexts
47
+
48
+ | Context | Description |
49
+ |----------|------------------------------------------------|
50
+ | `Main` | Primary screen (list/overview) |
51
+ | `Detail` | Detail tab or sub-form |
52
+ | `Popup` | Modal/dialog pop-up |
53
+ | `Zoom` | Zoom form that opens over the current screen |
54
+
55
+ ---
56
+
57
+ ## MCP workflow — do this before writing any test
58
+
59
+ When `@thinkwise/testwise-mcp` is connected, **call the MCP tools first** to get accurate names and component types. This prevents hallucination and avoids token-expensive correction loops.
60
+
61
+ 1. **`list_subjects`** — see which subjects exist in this application.
62
+ 2. **`list_artifacts(subject, screenContext?)`** — get the exact class name and import path.
63
+ 3. **`get_components(subject, screenContext)`** — get the property names and component types on the subject class.
64
+ 4. Write the test using only the values returned by those tools.
65
+
66
+ ---
67
+
68
+ ## Components
69
+
70
+ Each subject class exposes typed component properties. Use the component methods — never reach for raw Playwright locators when a component method already exists.
71
+
72
+ | Component | Key methods |
73
+ |------------------|-----------------------------------------------------------------------------------------------------|
74
+ | `Grid` | `getRowByIndex(n)`, `getRowByRowId(id)`, `getCellByExactValue(v)`, `getRowsByColValue(col, v)`, `openExcelStyleFilterPopup(col)` |
75
+ | `Form` | Field accessors typed to the screen interface |
76
+ | `ActionBar` | `getAddButton()`, `getSaveButton()`, `getCancelButton()`, `getDeleteButton()`, `getFilterButton()`, `getSearchInput()` |
77
+ | `FilterForm` | Filter field accessors |
78
+ | `Tab` | Tab switching |
79
+ | `TreeView` | Tree node navigation |
80
+ | `CombinedFilter` | Combined filter interactions |
81
+
82
+ ### Example
83
+
84
+ ```typescript
85
+ test('add and save a record', async ({ page }) => {
86
+ const subject = await page.subject.CustomerOrderMain;
87
+
88
+ await subject.actionBar.getAddButton().click();
89
+ await subject.form.customerName.fill('ACME Corp');
90
+ await subject.actionBar.getSaveButton().click();
91
+ });
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Controls
97
+
98
+ For typed input interactions within `Form` components:
99
+
100
+ | Control class | Use case |
101
+ |---------------------|-----------------------------------|
102
+ | `InputFieldControl` | Standard text/number inputs |
103
+ | `LookupDropdown` | Lookup (foreign key) dropdowns |
104
+ | `FormComboBox` | Combo box fields |
105
+ | `DateControl` | Date picker fields |
106
+ | `GridColumnControl` | Column-level controls in a grid |
107
+
108
+ ---
109
+
110
+ ## Helpers and page extensions
111
+
112
+ | API | Purpose |
113
+ |--------------------------|-------------------------------------------------------|
114
+ | `LoginHelper` | Authenticate before tests |
115
+ | `UserSimulationHelper` | Simulate a specific user role/identity |
116
+ | `SubjectNavigator` | Navigate to a subject by menu path |
117
+ | `page.goToDeepLink(...)` | Navigate directly to a Thinkwise deep link |
118
+ | `page.login(...)` | Authenticate via page extension |
119
+ | `FlightTracker` | Wait for all pending network requests to complete |
120
+ | `Ensure` | Assertion helpers with built-in retry |
121
+ | `Poll` | Poll until a condition is met or timeout |
122
+
123
+ ---
124
+
125
+ ## What NOT to do
126
+
127
+ - ❌ Do not `import { test } from '@playwright/test'` — always use `@thinkwise/testwise`.
128
+ - ❌ Do not hardcode locators (`page.locator(...)`) for UI interactions a Testwise component already covers.
129
+ - ❌ Do not guess subject class names — use the MCP `list_artifacts` tool.
130
+ - ❌ Do not use `page.fill()` / `page.click()` directly when a typed component method exists.
@@ -0,0 +1,9 @@
1
+ {
2
+ "servers": {
3
+ "testwise": {
4
+ "type": "stdio",
5
+ "command": "node",
6
+ "args": ["./node_modules/@thinkwise/testwise-mcp/dist/index.js"]
7
+ }
8
+ }
9
+ }