@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,4 +1,26 @@
1
1
  import type { Locator } from '@playwright/test';
2
+ /**
3
+ * Typed proxy for a single column in a Thinkwise `Grid` component.
4
+ *
5
+ * **How to use:** You never construct this directly. Generated subject
6
+ * component classes expose properties of type `IGridColumnControl` for each
7
+ * column in a grid:
8
+ *
9
+ * ```ts
10
+ * // Get all visible cell values in the column:
11
+ * const names = await subject.grid.employeeNameColumn.getCellValues();
12
+ *
13
+ * // Find a specific cell by its exact text:
14
+ * const cell = subject.grid.employeeNameColumn.getCellByExactValue('Jane Doe');
15
+ * await cell.click();
16
+ *
17
+ * // Filter the grid using the Excel-style filter popup:
18
+ * await subject.grid.statusColumn.filterByColumnValueExcelStyle('Active');
19
+ * ```
20
+ *
21
+ * The returned value is a **Proxy** — it works as both a Playwright `Locator`
22
+ * (pointing at the column header) and a typed column control.
23
+ */
2
24
  export type IGridColumnControl = Locator & IGridColumnControlCore;
3
25
  export type IGridColumnControlCore = {
4
26
  getColumnHeader(): Promise<Locator>;
@@ -7,4 +29,12 @@ export type IGridColumnControlCore = {
7
29
  filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void>;
8
30
  openExcelStyleFilterPopup(): Promise<void>;
9
31
  };
32
+ /**
33
+ * Creates an `IGridColumnControl` proxy for a specific grid column.
34
+ * Normalises the column `id` (replacing `-` with `_`), then returns a proxy that merges
35
+ * `GridColumnControl` interaction methods with the `[col-id="<id>"]` locator.
36
+ * @param gridContext - The parent `Locator` representing the grid element.
37
+ * @param id - The column identifier (hyphens are automatically converted to underscores).
38
+ * @returns A proxy combining `IGridColumnControlCore` methods and `Locator` capabilities.
39
+ */
10
40
  export declare function createGridColumnControl(gridContext: Locator, id: string): IGridColumnControl;
@@ -3,7 +3,7 @@ import { escapeRegex } from '../index.js';
3
3
  import { GridColumnControlObjects } from './GridColumnControlObjects.js';
4
4
  class GridColumnControl {
5
5
  constructor(gridContext, id) {
6
- this._id = id.replace(/-/g, '_');
6
+ this._id = id;
7
7
  this._objects = new GridColumnControlObjects(gridContext, this._id);
8
8
  this._grid = new Grid(gridContext);
9
9
  }
@@ -21,12 +21,21 @@ class GridColumnControl {
21
21
  return await this._grid.getCellValuesByColId(this._id);
22
22
  }
23
23
  async filterByColumnValueExcelStyle(value, deselectAll) {
24
- await this._grid.filterByColumnValueExcelStyle(this._id, value, deselectAll);
24
+ await this._grid.filterByColumnValueExcelStyle(this._objects.columnHeader(), value, deselectAll);
25
25
  }
26
26
  }
27
+ /**
28
+ * Creates an `IGridColumnControl` proxy for a specific grid column.
29
+ * Normalises the column `id` (replacing `-` with `_`), then returns a proxy that merges
30
+ * `GridColumnControl` interaction methods with the `[col-id="<id>"]` locator.
31
+ * @param gridContext - The parent `Locator` representing the grid element.
32
+ * @param id - The column identifier (hyphens are automatically converted to underscores).
33
+ * @returns A proxy combining `IGridColumnControlCore` methods and `Locator` capabilities.
34
+ */
27
35
  export function createGridColumnControl(gridContext, id) {
28
- const columnControl = new GridColumnControl(gridContext, id);
29
- const locator = gridContext.locator(`[col-id="${id}"]`);
36
+ const processedId = id.replace(/-/g, '_');
37
+ const columnControl = new GridColumnControl(gridContext, processedId);
38
+ const locator = gridContext.locator(`[col-id="${processedId}"]`);
30
39
  return new Proxy(columnControl, {
31
40
  get(target, prop, receiver) {
32
41
  if (prop in target) {
@@ -1 +1 @@
1
- {"version":3,"file":"GridColumnControl.js","sourceRoot":"","sources":["../../controls/GridColumnControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAYzE,MAAM,iBAAiB;IAKrB,YAAY,WAAoB,EAAE,EAAU;QAC1C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,yBAAyB;QACpC,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAEM,mBAAmB,CAAC,KAAa;QACtC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,KAAa,EAAE,WAAqB;QAC7E,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC/E,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAoB,EAAE,EAAU;IACtE,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAExD,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE;QAC9B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAkC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"GridColumnControl.js","sourceRoot":"","sources":["../../controls/GridColumnControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAkCzE,MAAM,iBAAiB;IAKrB,YAAY,WAAoB,EAAE,EAAU;QAC1C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,yBAAyB;QACpC,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAEM,mBAAmB,CAAC,KAAa;QACtC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,KAAa,EAAE,WAAqB;QAC7E,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACnG,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAoB,EAAE,EAAU;IACtE,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC;IAEjE,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE;QAC9B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAkC,CAAC;AACtC,CAAC"}
@@ -3,7 +3,7 @@ export class GridColumnControlObjects extends BaseComponentObjects {
3
3
  constructor(gridContext, columnId) {
4
4
  super(gridContext.page(), gridContext);
5
5
  this.column = () => this.context.locator(`[col-id="${this._id}"]`);
6
- this.columnHeader = () => this.column().getByRole('columnheader');
6
+ this.columnHeader = () => this.context.locator(`[col-id="${this._id}"][role="columnheader"]`);
7
7
  this.cellByValue = (value) => this.column().locator('[role="button"]', {
8
8
  hasText: value
9
9
  });
@@ -1 +1 @@
1
- {"version":3,"file":"GridColumnControlObjects.js","sourceRoot":"","sources":["../../controls/GridColumnControlObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAGhE,YAAY,WAAoB,EAAE,QAAgB;QAChD,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QAIlC,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAE9D,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAE7D,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CACrC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACvC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAVH,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;IACtB,CAAC;CAUF"}
1
+ {"version":3,"file":"GridColumnControlObjects.js","sourceRoot":"","sources":["../../controls/GridColumnControlObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAGhE,YAAY,WAAoB,EAAE,QAAgB;QAChD,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QAIlC,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAE9D,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAEzF,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CACrC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACvC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAVH,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;IACtB,CAAC;CAUF"}
@@ -1,5 +1,24 @@
1
1
  /** biome-ignore-all lint/suspicious/noExplicitAny: reason42 */
2
2
  import type { Locator } from '@playwright/test';
3
+ /**
4
+ * Typed proxy for a plain text input field (`control_type: "field"`) on a
5
+ * Thinkwise form screen.
6
+ *
7
+ * **How to use:** You never construct this directly. The generated subject
8
+ * component class exposes properties of type `IInputFieldControl` — one per
9
+ * field on the form. Use those properties in your test:
10
+ *
11
+ * ```ts
12
+ * // Generated subject exposes:
13
+ * // employeeName: IInputFieldControl;
14
+ * await subject.form.employeeName.fill('Jane Doe');
15
+ * const val = await subject.form.employeeName.inputValue();
16
+ * ```
17
+ *
18
+ * The returned value is a **Proxy** — it acts as both a Playwright `Locator`
19
+ * (so you can call `.waitFor()`, `.isVisible()`, etc.) and as a typed control
20
+ * with named interaction methods.
21
+ */
3
22
  export type IInputFieldControl = Locator & ICoreInputFieldControl;
4
23
  export type ICoreInputFieldControl = {
5
24
  getValidationMessage(): Promise<string>;
@@ -11,16 +30,44 @@ export type ICoreInputFieldControl = {
11
30
  inputElement(): Locator;
12
31
  };
13
32
  export declare class InputFieldControl implements ICoreInputFieldControl {
14
- private _formFieldLocator;
15
- private _inputLocator;
16
- private _id;
33
+ private _objects;
17
34
  constructor(context: Locator, id: string);
35
+ /**
36
+ * Waits for the field's validation message element to become visible, then returns its text.
37
+ */
18
38
  getValidationMessage(): Promise<string>;
39
+ /**
40
+ * Fills the input element with the given value.
41
+ * @param value - The string to enter into the field.
42
+ */
19
43
  fill(value: string): Promise<void>;
44
+ /**
45
+ * Clicks the underlying input element.
46
+ */
20
47
  click(): Promise<void>;
48
+ /**
49
+ * Clears the input field by filling it with an empty string.
50
+ */
21
51
  clear(): Promise<void>;
52
+ /**
53
+ * Returns the current string value from the underlying input element.
54
+ */
22
55
  inputValue(): Promise<string>;
56
+ /**
57
+ * Returns the Playwright `Locator` for the underlying `<input>` element of the field.
58
+ */
23
59
  inputElement(): Locator;
60
+ /**
61
+ * Returns the trimmed, whitespace-normalised text content of the field's label element.
62
+ */
24
63
  getLabelText(): Promise<string>;
25
64
  }
65
+ /**
66
+ * Creates an `IInputFieldControl` proxy that merges `InputFieldControl` interaction methods
67
+ * with the underlying Playwright `Locator` for the `form-field__<id>` test ID.
68
+ * Use the returned value as both a typed input control and a regular Playwright locator.
69
+ * @param context - The parent locator to scope the control within.
70
+ * @param id - The field identifier used to locate `[data-testid="form-field__<id>"]`.
71
+ * @returns A proxy combining `ICoreInputFieldControl` methods and `Locator` capabilities.
72
+ */
26
73
  export declare function createInputFieldControl(context: Locator, id: string): IInputFieldControl;
@@ -1,34 +1,63 @@
1
+ import { InputFieldControlObjects } from './InputFieldControlObjects.js';
1
2
  export class InputFieldControl {
2
3
  constructor(context, id) {
3
- this._id = id;
4
- this._formFieldLocator = context.getByTestId(`form-field__${id}`);
5
- this._inputLocator = this._formFieldLocator.locator('input');
4
+ this._objects = new InputFieldControlObjects(context, id);
6
5
  }
6
+ /**
7
+ * Waits for the field's validation message element to become visible, then returns its text.
8
+ */
7
9
  async getValidationMessage() {
8
- await this._formFieldLocator.locator('.TooltipContainer p').waitFor({ state: 'visible' });
9
- return await this._formFieldLocator.locator('.TooltipContainer p').innerText();
10
+ await this._objects.validationMessage().waitFor({ state: 'visible' });
11
+ return await this._objects.validationMessage().innerText();
10
12
  }
13
+ /**
14
+ * Fills the input element with the given value.
15
+ * @param value - The string to enter into the field.
16
+ */
11
17
  async fill(value) {
12
- await this._inputLocator.fill(value);
18
+ await this._objects.fieldInput().fill(value);
13
19
  }
20
+ /**
21
+ * Clicks the underlying input element.
22
+ */
14
23
  async click() {
15
- await this._inputLocator.click();
24
+ await this._objects.fieldInput().click();
16
25
  }
26
+ /**
27
+ * Clears the input field by filling it with an empty string.
28
+ */
17
29
  async clear() {
18
- await this._inputLocator.fill('');
30
+ await this._objects.fieldInput().fill('');
19
31
  }
32
+ /**
33
+ * Returns the current string value from the underlying input element.
34
+ */
20
35
  async inputValue() {
21
- return await this._inputLocator.inputValue();
36
+ return await this._objects.fieldInput().inputValue();
22
37
  }
38
+ /**
39
+ * Returns the Playwright `Locator` for the underlying `<input>` element of the field.
40
+ */
23
41
  inputElement() {
24
- return this._inputLocator;
42
+ return this._objects.fieldInput();
25
43
  }
44
+ /**
45
+ * Returns the trimmed, whitespace-normalised text content of the field's label element.
46
+ */
26
47
  async getLabelText() {
27
- let returnText = (await this._formFieldLocator.getByTestId(`form-field__${this._id}__label`).textContent()) || '';
48
+ let returnText = (await this._objects.fieldLabel().textContent()) || '';
28
49
  returnText = returnText.replace(/\s+/g, ' ').trim();
29
50
  return returnText;
30
51
  }
31
52
  }
53
+ /**
54
+ * Creates an `IInputFieldControl` proxy that merges `InputFieldControl` interaction methods
55
+ * with the underlying Playwright `Locator` for the `form-field__<id>` test ID.
56
+ * Use the returned value as both a typed input control and a regular Playwright locator.
57
+ * @param context - The parent locator to scope the control within.
58
+ * @param id - The field identifier used to locate `[data-testid="form-field__<id>"]`.
59
+ * @returns A proxy combining `ICoreInputFieldControl` methods and `Locator` capabilities.
60
+ */
32
61
  export function createInputFieldControl(context, id) {
33
62
  const inputFieldControl = new InputFieldControl(context, id);
34
63
  const locator = context.getByTestId(`form-field__${id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"InputFieldControl.js","sourceRoot":"","sources":["../../controls/InputFieldControl.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,iBAAiB;IAK5B,YAAY,OAAgB,EAAE,EAAU;QACtC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1F,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC;IACjF,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IAC/C,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAElH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,EAAU;IAClE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEzD,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE;QAClC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAkC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"InputFieldControl.js","sourceRoot":"","sources":["../../controls/InputFieldControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAiCzE,MAAM,OAAO,iBAAiB;IAG5B,YAAY,OAAgB,EAAE,EAAU;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB;QAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY;QACvB,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAExE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,EAAU;IAClE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEzD,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE;QAClC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAkC,CAAC;AACtC,CAAC"}
@@ -1 +1,10 @@
1
- export {};
1
+ import type { Locator } from '@playwright/test';
2
+ export declare class InputFieldControlObjects {
3
+ private _context;
4
+ private _id;
5
+ constructor(context: Locator, id: string);
6
+ formField: () => Locator;
7
+ fieldInput: () => Locator;
8
+ fieldLabel: () => Locator;
9
+ validationMessage: () => Locator;
10
+ }
@@ -1,2 +1,11 @@
1
- export {};
1
+ export class InputFieldControlObjects {
2
+ constructor(context, id) {
3
+ this.formField = () => this._context.getByTestId(`form-field__${this._id}`);
4
+ this.fieldInput = () => this.formField().locator('input');
5
+ this.fieldLabel = () => this.formField().getByTestId(`form-field__${this._id}__label`);
6
+ this.validationMessage = () => this.formField().locator('.TooltipContainer p');
7
+ this._context = context;
8
+ this._id = id;
9
+ }
10
+ }
2
11
  //# sourceMappingURL=InputFieldControlObjects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputFieldControlObjects.js","sourceRoot":"","sources":["../../controls/InputFieldControlObjects.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"InputFieldControlObjects.js","sourceRoot":"","sources":["../../controls/InputFieldControlObjects.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wBAAwB;IAInC,YAAY,OAAgB,EAAE,EAAU;QAKjC,cAAS,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEhF,eAAU,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9D,eAAU,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE3F,sBAAiB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAVxF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;CASF"}
@@ -1,5 +1,26 @@
1
1
  /** biome-ignore-all lint/suspicious/noExplicitAny: needed flexibility */
2
2
  import type { Locator } from '@playwright/test';
3
+ /**
4
+ * Typed proxy for a lookup or dropdown field (`control_type: "lookup"` or
5
+ * `"dropdown"`) on a Thinkwise form screen.
6
+ *
7
+ * **How to use:** You never construct this directly. The generated subject
8
+ * component class exposes properties of type `ILookupDropdown` for each
9
+ * lookup/dropdown on the form:
10
+ *
11
+ * ```ts
12
+ * // Two interaction styles:
13
+ *
14
+ * // 1. Type + pick from the auto-complete list:
15
+ * await subject.form.countryLookup.lookupSelect('Netherlands');
16
+ *
17
+ * // 2. Click to open the dropdown then pick:
18
+ * await subject.form.statusDropdown.selectOption('Active');
19
+ * ```
20
+ *
21
+ * The returned value is a **Proxy** — it works as both a Playwright `Locator`
22
+ * and a typed control with named helper methods.
23
+ */
3
24
  export type ILookupDropdown = Locator & ILookupDropdownCore;
4
25
  export type ILookupDropdownCore = {
5
26
  lookupSelect(optionToSelect: string): Promise<void>;
@@ -10,4 +31,12 @@ export type ILookupDropdownCore = {
10
31
  inputValue(): Promise<string>;
11
32
  clear(): Promise<void>;
12
33
  };
34
+ /**
35
+ * Creates an `ILookupDropdown` proxy that intercepts named `LookupDropdown` methods from
36
+ * the class prototype and falls back to the base `Locator` for everything else, effectively
37
+ * merging the typed dropdown interface with standard Playwright locator capabilities.
38
+ * @param context - The parent locator to scope the control within.
39
+ * @param id - The field identifier used to build the scoped locator.
40
+ * @returns A proxy combining `ILookupDropdownCore` methods and `Locator` capabilities.
41
+ */
13
42
  export declare function createLookupDropdown(context: Locator, id: string): ILookupDropdown;
@@ -1,67 +1,78 @@
1
1
  import { escapeRegex } from '../helpers/RegexHelper.js';
2
+ import { LookupDropdownObjects } from './LookupDropdownObjects.js';
2
3
  class LookupDropdown {
3
4
  constructor(context, id) {
4
- this._id = id;
5
- this._formFieldLocator = context.getByTestId(`form-field__${this._id}`);
6
- this._inputLocator = this._formFieldLocator.locator('input');
5
+ this._objects = new LookupDropdownObjects(context, id);
7
6
  }
8
7
  async getLabelText() {
9
- let returnText = (await this._formFieldLocator.getByTestId(`form-field__${this._id}__label`).textContent()) || '';
8
+ let returnText = (await this._objects.label().textContent()) || '';
10
9
  returnText = returnText.replace(/\s+/g, ' ').trim();
11
10
  return returnText;
12
11
  }
13
12
  async lookupSelect(optionToSelect) {
14
- await this._inputLocator.fill(optionToSelect);
13
+ await this._objects.input().fill(optionToSelect);
15
14
  await this.select(optionToSelect);
16
15
  }
17
16
  async inputValue() {
18
- return await this._inputLocator.inputValue();
17
+ return await this._objects.input().inputValue();
19
18
  }
20
19
  async clear() {
21
- await this._inputLocator.fill('');
20
+ await this._objects.input().fill('');
22
21
  }
23
22
  async selectOption(optionText) {
24
- await this._inputLocator.click();
23
+ await this._objects.input().click();
25
24
  await this.select(optionText);
26
25
  }
27
26
  async getValidationMessage() {
28
- await this._formFieldLocator.locator('.TooltipContainer p').waitFor({ state: 'visible' });
29
- return await this._formFieldLocator.locator('.TooltipContainer p').innerText();
27
+ await this._objects.validationMessage().waitFor({ state: 'visible' });
28
+ return await this._objects.validationMessage().innerText();
30
29
  }
31
30
  async fill(value) {
32
31
  await Promise.all([
33
- this._formFieldLocator
32
+ this._objects
33
+ .input()
34
34
  .page()
35
35
  .waitForResponse((response) => response.url().includes('/list_') && response.request().method() === 'GET'),
36
- this._inputLocator.click()
36
+ this._objects.input().click()
37
37
  ]);
38
38
  await Promise.all([
39
- this._formFieldLocator
39
+ this._objects
40
+ .input()
40
41
  .page()
41
42
  .waitForResponse((response) => response.url().includes('/list_') && response.request().method() === 'GET'),
42
- this._inputLocator.fill(value)
43
+ this._objects.input().fill(value)
43
44
  ]);
44
45
  }
45
46
  async select(optionToSelect) {
46
47
  const optionsToSelectRegex = new RegExp(`^${escapeRegex(optionToSelect)}$`, 'i');
47
- await this._formFieldLocator.page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
48
- await this._formFieldLocator
48
+ await this._objects.input().page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
49
+ await this._objects
50
+ .input()
49
51
  .page()
50
- .waitForFunction((el) => document.activeElement === el, await this._inputLocator.elementHandle());
52
+ .waitForFunction((el) => document.activeElement === el, await this._objects.input().elementHandle());
51
53
  }
52
54
  }
55
+ /**
56
+ * Creates an `ILookupDropdown` proxy that intercepts named `LookupDropdown` methods from
57
+ * the class prototype and falls back to the base `Locator` for everything else, effectively
58
+ * merging the typed dropdown interface with standard Playwright locator capabilities.
59
+ * @param context - The parent locator to scope the control within.
60
+ * @param id - The field identifier used to build the scoped locator.
61
+ * @returns A proxy combining `ILookupDropdownCore` methods and `Locator` capabilities.
62
+ */
53
63
  export function createLookupDropdown(context, id) {
54
64
  const dropdown = new LookupDropdown(context, id);
55
- return new Proxy(dropdown, {
65
+ const customProps = new Set(Object.getOwnPropertyNames(LookupDropdown.prototype).filter((p) => p !== 'constructor'));
66
+ return new Proxy(context, {
56
67
  get(target, prop, receiver) {
57
- if (prop in target) {
58
- return Reflect.get(target, prop, receiver);
68
+ if (customProps.has(prop)) {
69
+ const value = dropdown[prop];
70
+ if (typeof value === 'function') {
71
+ return value.bind(dropdown);
72
+ }
73
+ return value;
59
74
  }
60
- const value = dropdown[prop];
61
- if (typeof value === 'function') {
62
- return value.bind(dropdown);
63
- }
64
- return value;
75
+ return Reflect.get(target, prop, receiver);
65
76
  }
66
77
  });
67
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LookupDropdown.js","sourceRoot":"","sources":["../../controls/LookupDropdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LookupDropdown.js","sourceRoot":"","sources":["../../controls/LookupDropdown.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAmCnE,MAAM,cAAc;IAGlB,YAAY,OAAgB,EAAE,EAAU;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAEnE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,cAAsB;QAC9C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,QAAQ;iBACV,KAAK,EAAE;iBACP,IAAI,EAAE;iBACN,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC;YAC5G,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;SAC9B,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,QAAQ;iBACV,KAAK,EAAE;iBACP,IAAI,EAAE;iBACN,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC;YAC5G,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,cAAsB;QACzC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7G,MAAM,IAAI,CAAC,QAAQ;aAChB,KAAK,EAAE;aACP,IAAI,EAAE;aACN,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IACzG,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,EAAU;IAC/D,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC;IAErH,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAc,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAI,QAAgB,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAA+B,CAAC;AACnC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Locator } from '@playwright/test';
2
+ export declare class LookupDropdownObjects {
3
+ private _id;
4
+ private _context;
5
+ constructor(context: Locator, id: string);
6
+ formField: () => Locator;
7
+ label: () => Locator;
8
+ input: () => Locator;
9
+ validationMessage: () => Locator;
10
+ }
@@ -0,0 +1,11 @@
1
+ export class LookupDropdownObjects {
2
+ constructor(context, id) {
3
+ this.formField = () => this._context.getByTestId(`form-field__${this._id}`);
4
+ this.label = () => this.formField().getByTestId(`form-field__${this._id}__label`);
5
+ this.input = () => this.formField().locator('input');
6
+ this.validationMessage = () => this.formField().locator('.TooltipContainer p');
7
+ this._context = context;
8
+ this._id = id;
9
+ }
10
+ }
11
+ //# sourceMappingURL=LookupDropdownObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LookupDropdownObjects.js","sourceRoot":"","sources":["../../controls/LookupDropdownObjects.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,qBAAqB;IAIhC,YAAY,OAAgB,EAAE,EAAU;QAKjC,cAAS,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEhF,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAEtF,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzD,sBAAiB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAVxF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;CASF"}
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Maps Thinkwise model control type identifiers to their string values.
3
+ *
4
+ * The artifact pipeline reads `control_type` values from the Indicium API
5
+ * (via `IProperty.control_type`) and uses these enum members to decide which
6
+ * Testwise control class to generate for each field or column.
7
+ *
8
+ * | Enum member | Generated control |
9
+ * |---|---|
10
+ * | `Field` | `InputFieldControl` |
11
+ * | `Dropdown` | `LookupDropdown` (drop-down variant) |
12
+ * | `Textarea` | `InputFieldControl` (multi-line) |
13
+ * | `Checkbox` | `InputFieldControl` (checkbox) |
14
+ * | `Lookup` | `LookupDropdown` |
15
+ * | `Column` | `GridColumnControl` |
16
+ * | `ComboBox` | `FormComboBox` |
17
+ * | `DatePicker` | `DateControl` |
18
+ */
1
19
  export declare enum KnownElementTypes {
2
20
  Field = "field",
3
21
  Dropdown = "dropdown",
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Maps Thinkwise model control type identifiers to their string values.
3
+ *
4
+ * The artifact pipeline reads `control_type` values from the Indicium API
5
+ * (via `IProperty.control_type`) and uses these enum members to decide which
6
+ * Testwise control class to generate for each field or column.
7
+ *
8
+ * | Enum member | Generated control |
9
+ * |---|---|
10
+ * | `Field` | `InputFieldControl` |
11
+ * | `Dropdown` | `LookupDropdown` (drop-down variant) |
12
+ * | `Textarea` | `InputFieldControl` (multi-line) |
13
+ * | `Checkbox` | `InputFieldControl` (checkbox) |
14
+ * | `Lookup` | `LookupDropdown` |
15
+ * | `Column` | `GridColumnControl` |
16
+ * | `ComboBox` | `FormComboBox` |
17
+ * | `DatePicker` | `DateControl` |
18
+ */
1
19
  export var KnownElementTypes;
2
20
  (function (KnownElementTypes) {
3
21
  KnownElementTypes["Field"] = "field";
@@ -1 +1 @@
1
- {"version":3,"file":"ElementTypes.js","sourceRoot":"","sources":["../../enums/ElementTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,0CAAqB,CAAA;IACrB,0CAAqB,CAAA;IACrB,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;IACjB,2CAAsB,CAAA;IACtB,+CAA0B,CAAA;AAC5B,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B"}
1
+ {"version":3,"file":"ElementTypes.js","sourceRoot":"","sources":["../../enums/ElementTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,0CAAqB,CAAA;IACrB,0CAAqB,CAAA;IACrB,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;IACjB,2CAAsB,CAAA;IACtB,+CAA0B,CAAA;AAC5B,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Supported file formats for the `ExportComponent` export action.
3
+ * Pass one of these values to `ExportComponent.export(format)` to trigger
4
+ * a grid or list export in the desired format (CSV, XLSX, or XLS).
5
+ *
6
+ * @example
7
+ * await page.components.export.export(ExportFormat.XLSX);
8
+ */
1
9
  export declare enum ExportFormat {
2
10
  CSV = "csv",
3
11
  XLSX = "xlsx",
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Supported file formats for the `ExportComponent` export action.
3
+ * Pass one of these values to `ExportComponent.export(format)` to trigger
4
+ * a grid or list export in the desired format (CSV, XLSX, or XLS).
5
+ *
6
+ * @example
7
+ * await page.components.export.export(ExportFormat.XLSX);
8
+ */
1
9
  export var ExportFormat;
2
10
  (function (ExportFormat) {
3
11
  ExportFormat["CSV"] = "csv";
@@ -1 +1 @@
1
- {"version":3,"file":"ExportFormat.js","sourceRoot":"","sources":["../../enums/ExportFormat.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,6BAAa,CAAA;IACb,2BAAW,CAAA;AACb,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB"}
1
+ {"version":3,"file":"ExportFormat.js","sourceRoot":"","sources":["../../enums/ExportFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,6BAAa,CAAA;IACb,2BAAW,CAAA;AACb,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB"}
@@ -1,7 +1,24 @@
1
+ /**
2
+ * Controls how much output the Testwise `Logger` writes, both to the log file
3
+ * and (optionally) to the console.
4
+ *
5
+ * Levels are cumulative — choosing `WARN` includes `ERROR`; choosing `DEBUG`
6
+ * includes `ERROR`, `WARN`, and `INFO`.
7
+ *
8
+ * Configure via `Testwise.json`:
9
+ * ```json
10
+ * { "featureSettings": { "logger": { "logLevel": "INFO" } } }
11
+ * ```
12
+ */
1
13
  export declare enum LogLevel {
14
+ /** Only critical failures. Use in CI environments where log noise must be minimal. */
2
15
  ERROR = "ERROR",
16
+ /** Errors and recoverable warnings. Good default for most pipelines. */
3
17
  WARN = "WARN",
18
+ /** Errors, warnings, and informational messages about what the test is doing. Recommended for local development. */
4
19
  INFO = "INFO",
20
+ /** Full verbose output including internal state changes. Use when diagnosing hard-to-reproduce failures. */
5
21
  DEBUG = "DEBUG",
22
+ /** Everything. Includes low-level log entries that are normally filtered out. */
6
23
  ALL = "ALL"
7
24
  }
@@ -1,10 +1,26 @@
1
+ /**
2
+ * Controls how much output the Testwise `Logger` writes, both to the log file
3
+ * and (optionally) to the console.
4
+ *
5
+ * Levels are cumulative — choosing `WARN` includes `ERROR`; choosing `DEBUG`
6
+ * includes `ERROR`, `WARN`, and `INFO`.
7
+ *
8
+ * Configure via `Testwise.json`:
9
+ * ```json
10
+ * { "featureSettings": { "logger": { "logLevel": "INFO" } } }
11
+ * ```
12
+ */
1
13
  export var LogLevel;
2
14
  (function (LogLevel) {
3
- // Order by severity
15
+ /** Only critical failures. Use in CI environments where log noise must be minimal. */
4
16
  LogLevel["ERROR"] = "ERROR";
17
+ /** Errors and recoverable warnings. Good default for most pipelines. */
5
18
  LogLevel["WARN"] = "WARN";
19
+ /** Errors, warnings, and informational messages about what the test is doing. Recommended for local development. */
6
20
  LogLevel["INFO"] = "INFO";
21
+ /** Full verbose output including internal state changes. Use when diagnosing hard-to-reproduce failures. */
7
22
  LogLevel["DEBUG"] = "DEBUG";
23
+ /** Everything. Includes low-level log entries that are normally filtered out. */
8
24
  LogLevel["ALL"] = "ALL";
9
25
  })(LogLevel || (LogLevel = {}));
10
26
  //# sourceMappingURL=LogLevel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogLevel.js","sourceRoot":"","sources":["../../enums/LogLevel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,oBAAoB;IACpB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,uBAAW,CAAA;AACb,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
1
+ {"version":3,"file":"LogLevel.js","sourceRoot":"","sources":["../../enums/LogLevel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAN,IAAY,QAWX;AAXD,WAAY,QAAQ;IAClB,sFAAsF;IACtF,2BAAe,CAAA;IACf,wEAAwE;IACxE,yBAAa,CAAA;IACb,oHAAoH;IACpH,yBAAa,CAAA;IACb,4GAA4G;IAC5G,2BAAe,CAAA;IACf,iFAAiF;IACjF,uBAAW,CAAA;AACb,CAAC,EAXW,QAAQ,KAAR,QAAQ,QAWnB"}
@@ -1 +1,2 @@
1
1
  export * from './ExportFormat.js';
2
+ export * from './LogLevel.js';