testeranto 0.200.0 → 0.202.0

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 (376) hide show
  1. package/README.md +26 -1
  2. package/bundle.js +3 -2
  3. package/design-editor/DesignEditor.tsx +40 -241
  4. package/dist/common/design-editor/DesignEditor.js +33 -198
  5. package/dist/common/src/App.js +158 -16
  6. package/dist/common/src/PM/PM_WithBuild.js +135 -0
  7. package/dist/common/src/PM/PM_WithEslintAndTsc.js +79 -67
  8. package/dist/common/src/PM/PM_WithGit.js +517 -0
  9. package/dist/common/src/PM/PM_WithProcesses.js +519 -0
  10. package/dist/common/src/PM/PM_WithWebSocket.js +535 -0
  11. package/dist/common/src/PM/base.js +62 -0
  12. package/dist/common/src/PM/main.js +533 -1676
  13. package/dist/common/src/PM/metafileOutputs.js +78 -0
  14. package/dist/common/src/PM/node.js +0 -6
  15. package/dist/common/src/PM/pure.js +0 -8
  16. package/dist/common/src/PM/types.js +1 -0
  17. package/dist/common/src/PM/utils.js +210 -0
  18. package/dist/common/src/PM/web.js +0 -6
  19. package/dist/common/src/ReportServer.js +0 -10
  20. package/dist/common/src/ReportServerLib.js +0 -140
  21. package/dist/common/src/components/pure/AppFrame.js +68 -56
  22. package/dist/common/src/components/pure/ArtifactTree.js +80 -0
  23. package/dist/common/src/components/pure/BuildLogViewer.js +106 -0
  24. package/dist/common/src/components/pure/DebugEnv.js +30 -0
  25. package/dist/common/src/components/pure/FileTree.js +34 -0
  26. package/dist/common/src/components/pure/FileTreeItem.js +29 -0
  27. package/dist/common/src/components/pure/GitHubLoginButton.js +18 -0
  28. package/dist/common/src/components/pure/GitIntegrationView.js +342 -0
  29. package/dist/common/src/components/pure/ProcessManager.js +1 -0
  30. package/dist/common/src/components/pure/ProcessManagerView.js +73 -74
  31. package/dist/common/src/components/pure/ProjectPageView.js +4 -117
  32. package/dist/common/src/components/pure/Settings.js +121 -0
  33. package/dist/common/src/components/pure/Settings.test.js +34 -0
  34. package/dist/common/src/components/pure/SignIn.js +22 -0
  35. package/dist/common/src/components/pure/SingleProcessView.js +166 -213
  36. package/dist/common/src/components/pure/TestPageView.js +113 -368
  37. package/dist/common/src/components/pure/TestPageView_utils.js +117 -0
  38. package/dist/common/src/components/pure/TestTable.js +33 -0
  39. package/dist/common/src/components/pure/ToastNotification.js +14 -0
  40. package/dist/common/src/components/pure/UserProfile.js +27 -0
  41. package/dist/common/src/components/stateful/AuthCallbackPage.js +51 -0
  42. package/dist/common/src/components/stateful/FeaturesReporter.js +2 -1
  43. package/dist/common/src/components/stateful/FileTree.js +58 -39
  44. package/dist/common/src/components/stateful/GitIntegrationPage.js +12 -0
  45. package/dist/common/src/components/stateful/ProcessManagerPage.js +13 -15
  46. package/dist/common/src/components/stateful/ProjectPage.js +6 -5
  47. package/dist/common/src/components/stateful/ProjectsPage.js +17 -19
  48. package/dist/common/src/components/stateful/SingleProcessPage.js +16 -26
  49. package/dist/common/src/components/stateful/TestPage.js +7 -5
  50. package/dist/common/src/hooks/useGitMode.js +21 -0
  51. package/dist/common/src/lib/BaseSuite.test/mock.js +15 -8
  52. package/dist/common/src/lib/BaseSuite.test/test.js +56 -80
  53. package/dist/common/src/lib/Tiposkripto.js +24 -0
  54. package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  55. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  56. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  57. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  58. package/dist/common/src/lib/pmProxy.test/specification.js +167 -52
  59. package/dist/common/src/services/FileService.js +505 -0
  60. package/dist/common/src/services/GitHubAuthService.js +184 -0
  61. package/dist/common/src/testeranto.js +38 -97
  62. package/dist/common/src/utils/api.js +12 -8
  63. package/dist/common/src/utils/gitTest.js +27 -0
  64. package/dist/common/src/utils.js +23 -13
  65. package/dist/common/testeranto.config.js +21 -17
  66. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  67. package/dist/module/design-editor/DesignEditor.js +33 -199
  68. package/dist/module/src/App.js +121 -15
  69. package/dist/module/src/PM/PM_WithBuild.js +128 -0
  70. package/dist/module/src/PM/PM_WithEslintAndTsc.js +79 -67
  71. package/dist/module/src/PM/PM_WithGit.js +477 -0
  72. package/dist/module/src/PM/PM_WithProcesses.js +479 -0
  73. package/dist/module/src/PM/PM_WithWebSocket.js +528 -0
  74. package/dist/module/src/PM/base.js +62 -0
  75. package/dist/module/src/PM/main.js +533 -1676
  76. package/dist/module/src/PM/metafileOutputs.js +78 -0
  77. package/dist/module/src/PM/node.js +0 -6
  78. package/dist/module/src/PM/pure.js +0 -8
  79. package/dist/module/src/PM/types.js +1 -1
  80. package/dist/module/src/PM/utils.js +196 -0
  81. package/dist/module/src/PM/web.js +0 -6
  82. package/dist/module/src/ReportServer.js +1 -9
  83. package/dist/module/src/ReportServerLib.js +1 -134
  84. package/dist/module/src/components/pure/AppFrame.js +66 -24
  85. package/dist/module/src/components/pure/ArtifactTree.js +80 -0
  86. package/dist/module/src/components/pure/BuildLogViewer.js +99 -0
  87. package/dist/module/src/components/pure/DebugEnv.js +23 -0
  88. package/dist/module/src/components/pure/FileTree.js +27 -0
  89. package/dist/module/src/components/pure/FileTreeItem.js +22 -0
  90. package/dist/module/src/components/pure/GitHubLoginButton.js +11 -0
  91. package/dist/module/src/components/pure/GitIntegrationView.js +305 -0
  92. package/dist/module/src/components/pure/ProcessManager.js +1 -0
  93. package/dist/module/src/components/pure/ProcessManagerView.js +74 -75
  94. package/dist/module/src/components/pure/ProjectPageView.js +5 -118
  95. package/dist/module/src/components/pure/Settings.js +84 -0
  96. package/dist/module/src/components/pure/Settings.test.js +29 -0
  97. package/dist/module/src/components/pure/SignIn.js +15 -0
  98. package/dist/module/src/components/pure/SingleProcessView.js +130 -214
  99. package/dist/module/src/components/pure/TestPageView.js +97 -352
  100. package/dist/module/src/components/pure/TestPageView_utils.js +109 -0
  101. package/dist/module/src/components/pure/TestTable.js +26 -0
  102. package/dist/module/src/components/pure/ToastNotification.js +7 -0
  103. package/dist/module/src/components/pure/UserProfile.js +20 -0
  104. package/dist/module/src/components/stateful/AuthCallbackPage.js +14 -0
  105. package/dist/module/src/components/stateful/FeaturesReporter.js +2 -1
  106. package/dist/module/src/components/stateful/FileTree.js +59 -33
  107. package/dist/module/src/components/stateful/GitIntegrationPage.js +5 -0
  108. package/dist/module/src/components/stateful/ProcessManagerPage.js +13 -15
  109. package/dist/module/src/components/stateful/ProjectPage.js +6 -5
  110. package/dist/module/src/components/stateful/ProjectsPage.js +16 -18
  111. package/dist/module/src/components/stateful/SingleProcessPage.js +16 -26
  112. package/dist/module/src/components/stateful/TestPage.js +8 -6
  113. package/dist/module/src/hooks/useGitMode.js +17 -0
  114. package/dist/module/src/lib/BaseSuite.test/mock.js +15 -8
  115. package/dist/module/src/lib/BaseSuite.test/test.js +56 -80
  116. package/dist/module/src/lib/Tiposkripto.js +24 -0
  117. package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  118. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  119. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  120. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  121. package/dist/module/src/lib/pmProxy.test/specification.js +167 -52
  122. package/dist/module/src/services/FileService.js +468 -0
  123. package/dist/module/src/services/GitHubAuthService.js +180 -0
  124. package/dist/module/src/testeranto.js +38 -97
  125. package/dist/module/src/utils/api.js +10 -7
  126. package/dist/module/src/utils/gitTest.js +23 -0
  127. package/dist/module/src/utils.js +21 -12
  128. package/dist/module/testeranto.config.js +21 -17
  129. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  130. package/dist/prebuild/App.css +94 -121
  131. package/dist/prebuild/App.js +44601 -11225
  132. package/dist/prebuild/testeranto.mjs +4106 -0
  133. package/dist/types/design-editor/DesignEditor.d.ts +1 -18
  134. package/dist/types/src/App.d.ts +18 -0
  135. package/dist/types/src/PM/PM_WithBuild.d.ts +13 -0
  136. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -4
  137. package/dist/types/src/PM/PM_WithGit.d.ts +27 -0
  138. package/dist/types/src/PM/PM_WithProcesses.d.ts +29 -0
  139. package/dist/types/src/PM/PM_WithWebSocket.d.ts +108 -0
  140. package/dist/types/src/PM/base.d.ts +1 -1
  141. package/dist/types/src/PM/index.d.ts +0 -2
  142. package/dist/types/src/PM/main.d.ts +6 -77
  143. package/dist/types/src/PM/metafileOutputs.d.ts +0 -0
  144. package/dist/types/src/PM/node.d.ts +0 -2
  145. package/dist/types/src/PM/pure.d.ts +0 -2
  146. package/dist/types/src/PM/types.d.ts +118 -0
  147. package/dist/types/src/PM/utils.d.ts +35 -0
  148. package/dist/types/src/PM/web.d.ts +0 -2
  149. package/dist/types/src/Pure.d.ts +6 -1
  150. package/dist/types/src/ReportServer.d.ts +0 -1
  151. package/dist/types/src/ReportServerLib.d.ts +0 -1
  152. package/dist/types/src/Types.d.ts +1 -0
  153. package/dist/types/src/components/pure/ArtifactTree.d.ts +0 -0
  154. package/dist/types/src/components/pure/BuildLogViewer.d.ts +7 -0
  155. package/dist/types/src/components/pure/DebugEnv.d.ts +2 -0
  156. package/dist/types/src/components/pure/FileTree.d.ts +6 -0
  157. package/dist/types/src/components/pure/FileTreeItem.d.ts +8 -0
  158. package/dist/types/src/components/pure/GitHubLoginButton.d.ts +8 -0
  159. package/dist/types/src/components/pure/GitIntegrationView.d.ts +1 -0
  160. package/dist/types/src/components/pure/Settings.d.ts +1 -0
  161. package/dist/types/src/components/pure/Settings.test.d.ts +1 -0
  162. package/dist/types/src/components/pure/SignIn.d.ts +1 -0
  163. package/dist/types/src/components/pure/SingleProcessView.d.ts +10 -0
  164. package/dist/types/src/components/pure/TestPageView.d.ts +2 -1
  165. package/dist/types/src/components/pure/TestPageView_utils.d.ts +23 -0
  166. package/dist/types/src/components/pure/TestTable.d.ts +16 -0
  167. package/dist/types/src/components/pure/ToastNotification.d.ts +6 -0
  168. package/dist/types/src/components/pure/UserProfile.d.ts +2 -0
  169. package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +2 -0
  170. package/dist/types/src/components/stateful/FileTree.d.ts +0 -8
  171. package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +1 -0
  172. package/dist/types/src/hooks/useGitMode.d.ts +7 -0
  173. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +2 -2
  174. package/dist/types/src/lib/BaseSuite.test/test.d.ts +4 -3
  175. package/dist/types/src/lib/Tiposkripto.d.ts +2 -0
  176. package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +3 -0
  177. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +5 -0
  178. package/dist/types/src/lib/index.d.ts +6 -0
  179. package/dist/types/src/services/FileService.d.ts +34 -0
  180. package/dist/types/src/services/GitHubAuthService.d.ts +32 -0
  181. package/dist/types/src/utils/api.d.ts +1 -0
  182. package/dist/types/src/utils/gitTest.d.ts +11 -0
  183. package/dist/types/src/utils.d.ts +3 -3
  184. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  185. package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
  186. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +187 -0
  187. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +163 -0
  188. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +85 -0
  189. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +21 -0
  190. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +21 -0
  191. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +554 -0
  192. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +33 -0
  193. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +72 -0
  194. package/example/vendor/modules.txt +5 -0
  195. package/git-integration-plan.md +395 -0
  196. package/package.json +26 -14
  197. package/src/App.tsx +169 -18
  198. package/src/PM/PM_WithBuild.ts +171 -0
  199. package/src/PM/PM_WithEslintAndTsc.ts +109 -86
  200. package/src/PM/PM_WithGit.ts +585 -0
  201. package/src/PM/PM_WithProcesses.ts +639 -0
  202. package/src/PM/PM_WithWebSocket.ts +631 -0
  203. package/src/PM/base.ts +63 -1
  204. package/src/PM/index.ts +8 -5
  205. package/src/PM/main.ts +672 -2050
  206. package/src/PM/metafileOutputs.ts +90 -0
  207. package/src/PM/node.ts +18 -18
  208. package/src/PM/pure.ts +5 -13
  209. package/src/PM/types.ts +145 -0
  210. package/src/PM/utils.ts +256 -0
  211. package/src/PM/web.ts +8 -8
  212. package/src/README.md +122 -0
  213. package/src/ReportServer.ts +0 -12
  214. package/src/ReportServerLib.ts +0 -147
  215. package/src/Types.ts +1 -0
  216. package/src/app.scss +14 -164
  217. package/src/components/pure/AppFrame.tsx +237 -71
  218. package/src/components/pure/ArtifactTree.tsx +82 -0
  219. package/src/components/pure/BuildLogViewer.tsx +168 -0
  220. package/src/components/pure/DebugEnv.tsx +30 -0
  221. package/src/components/pure/FileTree.tsx +58 -0
  222. package/src/components/pure/FileTreeItem.tsx +49 -0
  223. package/src/components/pure/GitHubLoginButton.tsx +31 -0
  224. package/src/components/pure/GitIntegrationView.tsx +443 -0
  225. package/src/components/pure/ProcessManager.tsx +6 -5
  226. package/src/components/pure/ProcessManagerView.tsx +162 -166
  227. package/src/components/pure/ProjectPageView.tsx +6 -224
  228. package/src/components/pure/Settings.test.tsx +34 -0
  229. package/src/components/pure/Settings.tsx +163 -0
  230. package/src/components/pure/SignIn.tsx +33 -0
  231. package/src/components/pure/SingleProcessView.tsx +231 -235
  232. package/src/components/pure/TestPageView.test/specification.ts +1 -0
  233. package/src/components/pure/TestPageView.tsx +317 -826
  234. package/src/components/pure/TestPageView_utils.tsx +285 -0
  235. package/src/components/pure/TestTable.tsx +88 -0
  236. package/src/components/pure/ToastNotification.tsx +19 -0
  237. package/src/components/pure/UserProfile.tsx +44 -0
  238. package/src/components/stateful/AuthCallbackPage.tsx +21 -0
  239. package/src/components/stateful/FeaturesReporter.tsx +3 -1
  240. package/src/components/stateful/FileTree.tsx +58 -58
  241. package/src/components/stateful/GitIntegrationPage.tsx +8 -0
  242. package/src/components/stateful/ProcessManagerPage.tsx +13 -17
  243. package/src/components/stateful/ProjectPage.tsx +6 -5
  244. package/src/components/stateful/ProjectsPage.tsx +17 -19
  245. package/src/components/stateful/SVGEditor/CircleForm.tsx +68 -0
  246. package/src/components/stateful/SVGEditor/GroupForm.tsx +56 -0
  247. package/src/components/stateful/SVGEditor/RectForm.tsx +74 -0
  248. package/src/components/stateful/SVGEditor/SVGAttributeField.tsx +29 -0
  249. package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +73 -0
  250. package/src/components/stateful/SVGEditor/SVGEditorControls.tsx +45 -0
  251. package/src/components/stateful/SVGEditor/SVGElementForm.tsx +45 -0
  252. package/src/components/stateful/SVGEditor/SVGPreview.tsx +225 -0
  253. package/src/components/stateful/SVGEditor/SVGTextEditor.tsx +166 -0
  254. package/src/components/stateful/SVGEditor/SVGTree.tsx +159 -0
  255. package/src/components/stateful/SVGEditor/SVGTypes.ts +36 -0
  256. package/src/components/stateful/SVGEditor/svg.xsd.xml +3038 -0
  257. package/src/components/stateful/SVGEditorPage.tsx +503 -0
  258. package/src/components/stateful/SingleProcessPage.tsx +18 -31
  259. package/src/components/stateful/TestPage.tsx +25 -22
  260. package/src/golingvu/golingvu.go +38 -2
  261. package/src/hooks/useGitMode.ts +20 -0
  262. package/src/lib/BaseSuite.test/mock.ts +16 -10
  263. package/src/lib/BaseSuite.test/test.ts +144 -103
  264. package/src/lib/Tiposkripto.test/MockTiposkripto.ts +178 -14
  265. package/src/lib/Tiposkripto.test/Tiposkripto.adapter.ts +9 -14
  266. package/src/lib/Tiposkripto.test/Tiposkripto.implementation.ts +78 -38
  267. package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +51 -9
  268. package/src/lib/Tiposkripto.test/Tiposkripto.types.ts +5 -0
  269. package/src/lib/Tiposkripto.ts +27 -0
  270. package/src/lib/index.ts +7 -0
  271. package/src/lib/pmProxy.test/specification.ts +168 -166
  272. package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
  273. package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
  274. package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
  275. package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
  276. package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
  277. package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
  278. package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
  279. package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
  280. package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
  281. package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
  282. package/src/services/FileService.ts +542 -0
  283. package/src/services/GitHubAuthService.ts +240 -0
  284. package/src/testeranto.ts +62 -140
  285. package/src/utils/api.ts +15 -13
  286. package/src/utils/gitTest.ts +29 -0
  287. package/src/utils.ts +21 -12
  288. package/testeranto/App.css +94 -121
  289. package/testeranto/App.js +44601 -11225
  290. package/testeranto/bundles/golang/core/Calculator.golingvu.go +53 -0
  291. package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +53 -0
  292. package/testeranto/bundles/node/core/chunk-RIM6RECA.mjs +1170 -0
  293. package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +4321 -0
  294. package/testeranto/bundles/node/core/example/Calculator.test.mjs +503 -0
  295. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +94 -1231
  296. package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +574 -0
  297. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +482 -0
  298. package/testeranto/bundles/pure/core/chunk-XYOCRDEQ.mjs +1080 -0
  299. package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
  300. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +93 -1146
  301. package/testeranto/bundles/python/core/Calculator.pitono.test.py +24 -0
  302. package/testeranto/bundles/python/core/test_example.py +24 -0
  303. package/testeranto/bundles/web/core/MPLUSRounded1c-Black-O75GP5JI.ttf +0 -0
  304. package/testeranto/bundles/web/core/MPLUSRounded1c-Bold-R524Q5BH.ttf +0 -0
  305. package/testeranto/bundles/web/core/MPLUSRounded1c-ExtraBold-C6GRMYVT.ttf +0 -0
  306. package/testeranto/bundles/web/core/MPLUSRounded1c-Light-WKN65Y2C.ttf +0 -0
  307. package/testeranto/bundles/web/core/MPLUSRounded1c-Medium-ZC4DWL7C.ttf +0 -0
  308. package/testeranto/bundles/web/core/MPLUSRounded1c-Regular-DT6EKZ3S.ttf +0 -0
  309. package/testeranto/bundles/web/core/MPLUSRounded1c-Thin-YWDNVG6M.ttf +0 -0
  310. package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +2297 -0
  311. package/testeranto/bundles/web/core/chunk-JMDLMADH.mjs +27996 -0
  312. package/testeranto/bundles/web/core/chunk-LQMU5NCG.mjs +3082 -0
  313. package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +6874 -0
  314. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +164 -0
  315. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +11697 -0
  316. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +336 -0
  317. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +11697 -0
  318. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +517 -0
  319. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +107 -1134
  320. package/testeranto/metafiles/golang/core.json +3 -3
  321. package/testeranto/metafiles/node/core.json +474 -31
  322. package/testeranto/metafiles/pure/core.json +144 -28
  323. package/testeranto/metafiles/python/core.json +11 -0
  324. package/testeranto/metafiles/web/core.json +15829 -45
  325. package/testeranto/reports/core/config.json +40 -0
  326. package/testeranto/reports/core/src/Pure.test/pure/exit.log +0 -0
  327. package/testeranto/reports/core/src/Pure.test/pure/lint_errors.txt +0 -0
  328. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +14 -0
  329. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +73 -0
  330. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log +0 -0
  331. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +91 -0
  332. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +1 -0
  333. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +2 -0
  334. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +68 -0
  335. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
  336. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
  337. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +30 -0
  338. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +1 -0
  339. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +2 -0
  340. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +88 -0
  341. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
  342. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -6
  343. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -11
  344. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +1 -0
  345. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +1 -1
  346. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +35 -38
  347. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -2
  348. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -10
  349. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +40 -38
  350. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +1 -1
  351. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -0
  352. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/lint_errors.txt +0 -0
  353. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +17 -0
  354. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +17 -0
  355. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +55 -0
  356. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +191 -0
  357. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +71 -0
  358. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
  359. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
  360. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
  361. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +17 -0
  362. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +20 -0
  363. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +4 -0
  364. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +49 -0
  365. package/testeranto/reports/core/summary.json +34 -6
  366. package/testeranto.config.ts +26 -20
  367. package/tsc.log +141 -91
  368. package/tsconfig.json +6 -2
  369. package/dist/prebuild/ReportServer.mjs +0 -227
  370. package/dist/prebuild/mothership/index.mjs +0 -22
  371. package/dist/types/design-editor/server.d.ts +0 -1
  372. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +0 -15
  373. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -2
  374. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -25
  375. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -56
  376. /package/testeranto/reports/core/src/{lib/BaseSuite.test/web.test/web → Pure.test/pure}/message.txt +0 -0
@@ -0,0 +1,631 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+ /* eslint-disable no-async-promise-executor */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ /* eslint-disable @typescript-eslint/no-unused-vars */
5
+
6
+ import { ChildProcess, spawn } from "node:child_process";
7
+ import fs from "fs";
8
+ import http from "http";
9
+ import url from "url";
10
+ import mime from "mime-types";
11
+ import { WebSocketServer } from "ws";
12
+
13
+ import { PM_Base } from "./base.js";
14
+ import {
15
+ WebSocketMessage,
16
+ ExecuteCommandMessage,
17
+ GetRunningProcessesMessage,
18
+ GetProcessMessage,
19
+ StdinMessage,
20
+ KillProcessMessage,
21
+ } from "./types.js";
22
+
23
+ export abstract class PM_WithWebSocket extends PM_Base {
24
+ wss: WebSocketServer;
25
+ clients: Set<any> = new Set();
26
+ httpServer: http.Server;
27
+ runningProcesses: Map<string, ChildProcess | Promise<any>> = new Map();
28
+ allProcesses: Map<
29
+ string,
30
+ {
31
+ child?: ChildProcess;
32
+ promise?: Promise<any>;
33
+ status: "running" | "exited" | "error" | "completed";
34
+ exitCode?: number;
35
+ error?: string;
36
+ command: string;
37
+ pid?: number;
38
+ timestamp: string;
39
+ type: "process" | "promise";
40
+ category: "aider" | "bdd-test" | "build-time" | "other";
41
+ testName?: string;
42
+ platform?: "node" | "web" | "pure" | "python" | "golang";
43
+ }
44
+ > = new Map();
45
+ processLogs: Map<string, string[]> = new Map();
46
+
47
+ constructor(configs: any) {
48
+ super(configs);
49
+
50
+ // Create HTTP server
51
+ this.httpServer = http.createServer(this.requestHandler.bind(this));
52
+
53
+ // Start WebSocket server attached to the HTTP server
54
+ this.wss = new WebSocketServer({ server: this.httpServer });
55
+
56
+ this.wss.on("connection", (ws) => {
57
+ this.clients.add(ws);
58
+ console.log("Client connected");
59
+
60
+ ws.on("message", (data) => {
61
+ try {
62
+ const message: WebSocketMessage = JSON.parse(data.toString());
63
+ if (message.type === "executeCommand") {
64
+ const executeMessage = message as ExecuteCommandMessage;
65
+ // Validate the command starts with 'aider'
66
+ if (message.command && message.command.trim().startsWith("aider")) {
67
+ console.log(`Executing command: ${message.command}`);
68
+ // Execute the command
69
+ const processId = Date.now().toString();
70
+ const child = spawn(message.command, {
71
+ shell: true,
72
+ cwd: process.cwd(),
73
+ });
74
+
75
+ // Track the process in both maps
76
+ this.runningProcesses.set(processId, child);
77
+ this.allProcesses.set(processId, {
78
+ child,
79
+ status: "running",
80
+ command: message.command,
81
+ pid: child.pid,
82
+ timestamp: new Date().toISOString(),
83
+ type: "process",
84
+ category: "aider",
85
+ });
86
+
87
+ // Initialize logs for this process
88
+ this.processLogs.set(processId, []);
89
+
90
+ // Broadcast process started
91
+ this.broadcast({
92
+ type: "processStarted",
93
+ processId,
94
+ command: message.command,
95
+ timestamp: new Date().toISOString(),
96
+ logs: [],
97
+ });
98
+
99
+ // Capture stdout and stderr
100
+ child.stdout?.on("data", (data) => {
101
+ const logData = data.toString();
102
+ // Add to stored logs
103
+ const logs = this.processLogs.get(processId) || [];
104
+ logs.push(logData);
105
+ this.processLogs.set(processId, logs);
106
+
107
+ this.broadcast({
108
+ type: "processStdout",
109
+ processId,
110
+ data: logData,
111
+ timestamp: new Date().toISOString(),
112
+ });
113
+ });
114
+
115
+ child.stderr?.on("data", (data) => {
116
+ const logData = data.toString();
117
+ // Add to stored logs
118
+ const logs = this.processLogs.get(processId) || [];
119
+ logs.push(logData);
120
+ this.processLogs.set(processId, logs);
121
+
122
+ this.broadcast({
123
+ type: "processStderr",
124
+ processId,
125
+ data: logData,
126
+ timestamp: new Date().toISOString(),
127
+ });
128
+ });
129
+
130
+ child.on("error", (error) => {
131
+ console.error(`Failed to execute command: ${error}`);
132
+ this.runningProcesses.delete(processId);
133
+ // Update the process status to error
134
+ const processInfo = this.allProcesses.get(processId);
135
+ if (processInfo) {
136
+ this.allProcesses.set(processId, {
137
+ ...processInfo,
138
+ status: "error",
139
+ error: error.message,
140
+ });
141
+ }
142
+ this.broadcast({
143
+ type: "processError",
144
+ processId,
145
+ error: error.message,
146
+ timestamp: new Date().toISOString(),
147
+ });
148
+ });
149
+
150
+ child.on("exit", (code) => {
151
+ console.log(`Command exited with code ${code}`);
152
+ // Remove from running processes but keep in allProcesses
153
+ this.runningProcesses.delete(processId);
154
+ // Update the process status to exited
155
+ const processInfo = this.allProcesses.get(processId);
156
+ if (processInfo) {
157
+ this.allProcesses.set(processId, {
158
+ ...processInfo,
159
+ status: "exited",
160
+ exitCode: code,
161
+ });
162
+ }
163
+ this.broadcast({
164
+ type: "processExited",
165
+ processId,
166
+ exitCode: code,
167
+ timestamp: new Date().toISOString(),
168
+ });
169
+ });
170
+ } else {
171
+ console.error('Invalid command: must start with "aider"');
172
+ }
173
+ } else if (message.type === "getRunningProcesses") {
174
+ const getRunningMessage = message as GetRunningProcessesMessage;
175
+ // Send list of all processes (both running and completed) with their full logs
176
+ const processes = Array.from(this.allProcesses.entries()).map(
177
+ ([id, procInfo]) => ({
178
+ processId: id,
179
+ command: procInfo.command,
180
+ pid: procInfo.pid,
181
+ status: procInfo.status,
182
+ exitCode: procInfo.exitCode,
183
+ error: procInfo.error,
184
+ timestamp: procInfo.timestamp,
185
+ category: procInfo.category,
186
+ testName: procInfo.testName,
187
+ platform: procInfo.platform,
188
+ logs: this.processLogs.get(id) || [],
189
+ })
190
+ );
191
+ ws.send(
192
+ JSON.stringify({
193
+ type: "runningProcesses",
194
+ processes,
195
+ })
196
+ );
197
+ } else if (message.type === "getProcess") {
198
+ const getProcessMessage = message as GetProcessMessage;
199
+ // Send specific process with full logs
200
+ const processId = message.processId;
201
+ const procInfo = this.allProcesses.get(processId);
202
+ if (procInfo) {
203
+ ws.send(
204
+ JSON.stringify({
205
+ type: "processData",
206
+ processId,
207
+ command: procInfo.command,
208
+ pid: procInfo.pid,
209
+ status: procInfo.status,
210
+ exitCode: procInfo.exitCode,
211
+ error: procInfo.error,
212
+ timestamp: procInfo.timestamp,
213
+ category: procInfo.category,
214
+ testName: procInfo.testName,
215
+ platform: procInfo.platform,
216
+ logs: this.processLogs.get(processId) || [],
217
+ })
218
+ );
219
+ }
220
+ } else if (message.type === "stdin") {
221
+ const stdinMessage = message as StdinMessage;
222
+ // Handle stdin input for a process
223
+ const processId = message.processId;
224
+ const data = message.data;
225
+ console.log("Received stdin for process", processId, ":", data);
226
+ const childProcess = this.runningProcesses.get(processId);
227
+
228
+ if (childProcess && childProcess.stdin) {
229
+ console.log("Writing to process stdin");
230
+ childProcess.stdin.write(data);
231
+ } else {
232
+ console.log(
233
+ "Cannot write to stdin - process not found or no stdin:",
234
+ {
235
+ processExists: !!childProcess,
236
+ stdinExists: childProcess?.stdin ? true : false,
237
+ }
238
+ );
239
+ }
240
+ } else if (message.type === "killProcess") {
241
+ const killProcessMessage = message as KillProcessMessage;
242
+ // Handle killing a process
243
+ const processId = message.processId;
244
+ console.log("Received killProcess for process", processId);
245
+ const childProcess = this.runningProcesses.get(processId);
246
+
247
+ if (childProcess) {
248
+ console.log("Killing process");
249
+ childProcess.kill("SIGTERM");
250
+ // The process exit handler will update the status and broadcast the change
251
+ } else {
252
+ console.log("Cannot kill process - process not found:", {
253
+ processExists: !!childProcess,
254
+ });
255
+ }
256
+ }
257
+ } catch (error) {
258
+ console.error("Error handling WebSocket message:", error);
259
+ }
260
+ });
261
+
262
+ ws.on("close", () => {
263
+ this.clients.delete(ws);
264
+ console.log("Client disconnected");
265
+ });
266
+
267
+ ws.on("error", (error) => {
268
+ console.error("WebSocket error:", error);
269
+ this.clients.delete(ws);
270
+ });
271
+ });
272
+
273
+ // Start HTTP server
274
+ const httpPort = Number(process.env.HTTP_PORT) || 3000;
275
+ this.httpServer.listen(httpPort, () => {
276
+ console.log(`HTTP server running on http://localhost:${httpPort}`);
277
+ });
278
+ }
279
+
280
+ requestHandler(req: http.IncomingMessage, res: http.ServerResponse) {
281
+ // Parse the URL
282
+ const parsedUrl = url.parse(req.url || "/");
283
+ const pathname = parsedUrl.pathname || "/";
284
+
285
+ // Handle health check endpoint
286
+ if (pathname === "/health") {
287
+ res.writeHead(200, { "Content-Type": "application/json" });
288
+ res.end(
289
+ JSON.stringify({ status: "ok", timestamp: new Date().toISOString() })
290
+ );
291
+ return;
292
+ }
293
+
294
+ // Handle root path
295
+ let processedPathname = pathname;
296
+ if (processedPathname === "/") {
297
+ processedPathname = "/index.html";
298
+ }
299
+
300
+ // Remove leading slash
301
+ let filePath = processedPathname.substring(1);
302
+
303
+ // Determine which directory to serve from
304
+ if (filePath.startsWith("reports/")) {
305
+ // Serve from reports directory
306
+ filePath = `testeranto/${filePath}`;
307
+ } else if (filePath.startsWith("metafiles/")) {
308
+ // Serve from metafiles directory
309
+ filePath = `testeranto/${filePath}`;
310
+ } else if (filePath === "projects.json") {
311
+ // Serve projects.json
312
+ filePath = `testeranto/${filePath}`;
313
+ } else {
314
+ // For frontend assets, try multiple possible locations
315
+ // First, try the dist directory
316
+ const possiblePaths = [
317
+ `dist/${filePath}`,
318
+ `testeranto/dist/${filePath}`,
319
+ `../dist/${filePath}`,
320
+ `./${filePath}`,
321
+ ];
322
+
323
+ // Find the first existing file
324
+ let foundPath = null;
325
+ for (const possiblePath of possiblePaths) {
326
+ if (fs.existsSync(possiblePath)) {
327
+ foundPath = possiblePath;
328
+ break;
329
+ }
330
+ }
331
+
332
+ if (foundPath) {
333
+ filePath = foundPath;
334
+ } else {
335
+ // If no file found, serve index.html for SPA routing
336
+ const indexPath = this.findIndexHtml();
337
+ if (indexPath) {
338
+ fs.readFile(indexPath, (err, data) => {
339
+ if (err) {
340
+ res.writeHead(404, { "Content-Type": "text/plain" });
341
+ res.end("404 Not Found");
342
+ return;
343
+ }
344
+ res.writeHead(200, { "Content-Type": "text/html" });
345
+ res.end(data);
346
+ });
347
+ return;
348
+ } else {
349
+ res.writeHead(404, { "Content-Type": "text/plain" });
350
+ res.end("404 Not Found");
351
+ return;
352
+ }
353
+ }
354
+ }
355
+
356
+ // Check if file exists
357
+ fs.exists(filePath, (exists) => {
358
+ if (!exists) {
359
+ // For SPA routing, serve index.html if the path looks like a route
360
+ if (!processedPathname.includes(".") && processedPathname !== "/") {
361
+ const indexPath = this.findIndexHtml();
362
+ if (indexPath) {
363
+ fs.readFile(indexPath, (err, data) => {
364
+ if (err) {
365
+ res.writeHead(404, { "Content-Type": "text/plain" });
366
+ res.end("404 Not Found");
367
+ return;
368
+ }
369
+ res.writeHead(200, { "Content-Type": "text/html" });
370
+ res.end(data);
371
+ });
372
+ return;
373
+ } else {
374
+ // Serve a simple message if index.html is not found
375
+ res.writeHead(200, { "Content-Type": "text/html" });
376
+ res.end(`
377
+ <html>
378
+ <body>
379
+ <h1>Testeranto is running</h1>
380
+ <p>Frontend files are not built yet. Run 'npm run build' to build the frontend.</p>
381
+ </body>
382
+ </html>
383
+ `);
384
+ return;
385
+ }
386
+ }
387
+ res.writeHead(404, { "Content-Type": "text/plain" });
388
+ res.end("404 Not Found");
389
+ return;
390
+ }
391
+
392
+ // Read and serve the file
393
+ fs.readFile(filePath, (err, data) => {
394
+ if (err) {
395
+ res.writeHead(500, { "Content-Type": "text/plain" });
396
+ res.end("500 Internal Server Error");
397
+ return;
398
+ }
399
+
400
+ // For HTML files, inject the configuration
401
+ if (filePath.endsWith(".html")) {
402
+ let content = data.toString();
403
+ // Inject the configuration script before the closing </body> tag
404
+ if (content.includes("</body>")) {
405
+ const configScript = `
406
+ <script>
407
+ window.testerantoConfig = ${JSON.stringify({
408
+ githubOAuth: {
409
+ clientId: process.env.GITHUB_CLIENT_ID || "",
410
+ },
411
+ serverOrigin:
412
+ process.env.SERVER_ORIGIN || "http://localhost:3000",
413
+ })};
414
+ </script>
415
+ `;
416
+ content = content.replace("</body>", `${configScript}</body>`);
417
+ }
418
+ res.writeHead(200, { "Content-Type": "text/html" });
419
+ res.end(content);
420
+ } else {
421
+ // Get MIME type for other files
422
+ const mimeType = mime.lookup(filePath) || "application/octet-stream";
423
+ res.writeHead(200, { "Content-Type": mimeType });
424
+ res.end(data);
425
+ }
426
+ });
427
+ });
428
+ }
429
+
430
+ findIndexHtml(): string | null {
431
+ const possiblePaths = [
432
+ "dist/index.html",
433
+ "testeranto/dist/index.html",
434
+ "../dist/index.html",
435
+ "./index.html",
436
+ ];
437
+
438
+ for (const path of possiblePaths) {
439
+ if (fs.existsSync(path)) {
440
+ return path;
441
+ }
442
+ }
443
+ return null;
444
+ }
445
+
446
+ // Add a method to track promise-based processes
447
+ addPromiseProcess(
448
+ processId: string,
449
+ promise: Promise<any>,
450
+ command: string,
451
+ category: "aider" | "bdd-test" | "build-time" | "other" = "other",
452
+ testName?: string,
453
+ platform?: "node" | "web" | "pure" | "python" | "golang",
454
+ onResolve?: (result: any) => void,
455
+ onReject?: (error: any) => void
456
+ ) {
457
+ // Track the promise in both maps
458
+ this.runningProcesses.set(processId, promise);
459
+ this.allProcesses.set(processId, {
460
+ promise,
461
+ status: "running",
462
+ command,
463
+ timestamp: new Date().toISOString(),
464
+ type: "promise",
465
+ category,
466
+ testName,
467
+ platform,
468
+ });
469
+
470
+ // Initialize logs for this process
471
+ this.processLogs.set(processId, []);
472
+
473
+ // Add log entry for process start
474
+ const startMessage = `Starting: ${command}`;
475
+ const logs = this.processLogs.get(processId) || [];
476
+ logs.push(startMessage);
477
+ this.processLogs.set(processId, logs);
478
+
479
+ // Broadcast process started
480
+ this.broadcast({
481
+ type: "processStarted",
482
+ processId,
483
+ command,
484
+ timestamp: new Date().toISOString(),
485
+ logs: [startMessage],
486
+ });
487
+
488
+ // Handle promise resolution
489
+ promise
490
+ .then((result) => {
491
+ this.runningProcesses.delete(processId);
492
+ // Update the process status to completed
493
+ const processInfo = this.allProcesses.get(processId);
494
+ if (processInfo) {
495
+ this.allProcesses.set(processId, {
496
+ ...processInfo,
497
+ status: "completed",
498
+ exitCode: 0,
499
+ });
500
+ }
501
+
502
+ // Add log entry for process completion
503
+ const successMessage = `Completed successfully with result: ${JSON.stringify(
504
+ result
505
+ )}`;
506
+ const currentLogs = this.processLogs.get(processId) || [];
507
+ currentLogs.push(successMessage);
508
+ this.processLogs.set(processId, currentLogs);
509
+
510
+ this.broadcast({
511
+ type: "processExited",
512
+ processId,
513
+ exitCode: 0,
514
+ timestamp: new Date().toISOString(),
515
+ logs: [successMessage],
516
+ });
517
+ if (onResolve) onResolve(result);
518
+ })
519
+ .catch((error) => {
520
+ this.runningProcesses.delete(processId);
521
+ // Update the process status to error
522
+ const processInfo = this.allProcesses.get(processId);
523
+ if (processInfo) {
524
+ this.allProcesses.set(processId, {
525
+ ...processInfo,
526
+ status: "error",
527
+ error: error.message,
528
+ });
529
+ }
530
+
531
+ // Add log entry for process error
532
+ const errorMessage = `Failed with error: ${error.message}`;
533
+ const currentLogs = this.processLogs.get(processId) || [];
534
+ currentLogs.push(errorMessage);
535
+ this.processLogs.set(processId, currentLogs);
536
+
537
+ this.broadcast({
538
+ type: "processError",
539
+ processId,
540
+ error: error.message,
541
+ timestamp: new Date().toISOString(),
542
+ logs: [errorMessage],
543
+ });
544
+ if (onReject) onReject(error);
545
+ });
546
+
547
+ return processId;
548
+ }
549
+
550
+ broadcast(message: any) {
551
+ const data =
552
+ typeof message === "string" ? message : JSON.stringify(message);
553
+ this.clients.forEach((client) => {
554
+ if (client.readyState === 1) {
555
+ // WebSocket.OPEN
556
+ client.send(data);
557
+ }
558
+ });
559
+ }
560
+
561
+ // Helper methods to get processes by category
562
+ getProcessesByCategory(
563
+ category: "aider" | "bdd-test" | "build-time" | "other"
564
+ ) {
565
+ return Array.from(this.allProcesses.entries())
566
+ .filter(([id, procInfo]) => procInfo.category === category)
567
+ .map(([id, procInfo]) => ({
568
+ processId: id,
569
+ command: procInfo.command,
570
+ pid: procInfo.pid,
571
+ status: procInfo.status,
572
+ exitCode: procInfo.exitCode,
573
+ error: procInfo.error,
574
+ timestamp: procInfo.timestamp,
575
+ category: procInfo.category,
576
+ testName: procInfo.testName,
577
+ platform: procInfo.platform,
578
+ logs: this.processLogs.get(id) || [],
579
+ }));
580
+ }
581
+
582
+ getBDDTestProcesses() {
583
+ return this.getProcessesByCategory("bdd-test");
584
+ }
585
+
586
+ getBuildTimeProcesses() {
587
+ return this.getProcessesByCategory("build-time");
588
+ }
589
+
590
+ getAiderProcesses() {
591
+ return this.getProcessesByCategory("aider");
592
+ }
593
+
594
+ getProcessesByTestName(testName: string) {
595
+ return Array.from(this.allProcesses.entries())
596
+ .filter(([id, procInfo]) => procInfo.testName === testName)
597
+ .map(([id, procInfo]) => ({
598
+ processId: id,
599
+ command: procInfo.command,
600
+ pid: procInfo.pid,
601
+ status: procInfo.status,
602
+ exitCode: procInfo.exitCode,
603
+ error: procInfo.error,
604
+ timestamp: procInfo.timestamp,
605
+ category: procInfo.category,
606
+ testName: procInfo.testName,
607
+ platform: procInfo.platform,
608
+ logs: this.processLogs.get(id) || [],
609
+ }));
610
+ }
611
+
612
+ getProcessesByPlatform(
613
+ platform: "node" | "web" | "pure" | "pitono" | "golang"
614
+ ) {
615
+ return Array.from(this.allProcesses.entries())
616
+ .filter(([id, procInfo]) => procInfo.platform === platform)
617
+ .map(([id, procInfo]) => ({
618
+ processId: id,
619
+ command: procInfo.command,
620
+ pid: procInfo.pid,
621
+ status: procInfo.status,
622
+ exitCode: procInfo.exitCode,
623
+ error: procInfo.error,
624
+ timestamp: procInfo.timestamp,
625
+ category: procInfo.category,
626
+ testName: procInfo.testName,
627
+ platform: procInfo.platform,
628
+ logs: this.processLogs.get(id) || [],
629
+ }));
630
+ }
631
+ }
package/src/PM/base.ts CHANGED
@@ -29,8 +29,70 @@ export abstract class PM_Base {
29
29
  this.configs = configs;
30
30
  }
31
31
 
32
- abstract launchSideCar(n: number, testName: string, projectName: string);
32
+ mapping(): [string, (...a) => any][] {
33
+ return [
34
+ ["$", this.$],
35
+ ["click", this.click],
36
+ ["closePage", this.closePage],
37
+ ["createWriteStream", this.createWriteStream],
38
+ ["customclose", this.customclose],
39
+ ["customScreenShot", this.customScreenShot.bind(this)],
40
+ ["end", this.end],
41
+ ["existsSync", this.existsSync],
42
+ ["focusOn", this.focusOn],
43
+ ["getAttribute", this.getAttribute],
44
+ ["getInnerHtml", this.getInnerHtml],
45
+ // ["setValue", this.setValue],
46
+ ["goto", this.goto.bind(this)],
47
+ ["isDisabled", this.isDisabled],
48
+ // ["launchSideCar", this.launchSideCar.bind(this)],
49
+ ["mkdirSync", this.mkdirSync],
50
+ ["newPage", this.newPage],
51
+ ["page", this.page],
52
+ ["pages", this.pages],
53
+ ["screencast", this.screencast],
54
+ ["screencastStop", this.screencastStop],
55
+ // ["stopSideCar", this.stopSideCar.bind(this)],
56
+ ["typeInto", this.typeInto],
57
+ ["waitForSelector", this.waitForSelector],
58
+ ["write", this.write],
59
+ ["writeFileSync", this.writeFileSync],
60
+ ];
61
+ }
62
+
63
+ // keep this forever. do not delete
64
+ // mapping(): [string, (...a) => any][] {
65
+ // return [
66
+ // ["$", (...args) => this.$(...args)],
67
+ // ["click", (...args) => this.click(...args)],
68
+ // ["closePage", (...args) => this.closePage(...args)],
69
+ // ["createWriteStream", (...args) => this.createWriteStream(...args)],
70
+ // ["customclose", (...args) => this.customclose(...args)],
71
+ // ["customScreenShot", (...args) => this.customScreenShot(...args)],
72
+ // ["end", (...args) => this.end(...args)],
73
+ // ["existsSync", (...args) => this.existsSync(...args)],
74
+ // ["focusOn", (...args) => this.focusOn(...args)],
75
+ // ["getAttribute", (...args) => this.getAttribute(...args)],
76
+ // ["getInnerHtml", (...args) => this.getInnerHtml(...args)],
77
+ // // ["setValue", (...args) => this.setValue(...args)],
78
+ // ["goto", (...args) => this.goto(...args)],
79
+ // ["isDisabled", (...args) => this.isDisabled(...args)],
80
+ // // ["launchSideCar", (...args) => this.launchSideCar(...args)],
81
+ // ["mkdirSync", (...args) => this.mkdirSync(...args)],
82
+ // ["newPage", (...args) => this.newPage(...args)],
83
+ // ["page", (...args) => this.page(...args)],
84
+ // ["pages", (...args) => this.pages(...args)],
85
+ // ["screencast", (...args) => this.screencast(...args)],
86
+ // ["screencastStop", (...args) => this.screencastStop(...args)],
87
+ // // ["stopSideCar", (...args) => this.stopSideCar(...args)],
88
+ // ["typeInto", (...args) => this.typeInto(...args)],
89
+ // ["waitForSelector", (...args) => this.waitForSelector(...args)],
90
+ // ["write", (...args) => this.write(...args)],
91
+ // ["writeFileSync", (...args) => this.writeFileSync(...args)],
92
+ // ];
93
+ // }
33
94
 
95
+ // abstract launchSideCar(n: number, testName: string, projectName: string);
34
96
  customclose() {
35
97
  throw new Error("customclose not implemented.");
36
98
  }