testeranto 0.202.0 → 0.203.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 (773) hide show
  1. package/README.md +23 -0
  2. package/UX/chache/index.md +11 -0
  3. package/dist/prebuild/App.css +78 -0
  4. package/dist/prebuild/App.js +4828 -2814
  5. package/dist/prebuild/testeranto.mjs +2650 -1037
  6. package/example/Calculator.go +63 -0
  7. package/example/Calculator.golingvu.adapter.go +81 -0
  8. package/example/Calculator.golingvu.go +67 -0
  9. package/example/Calculator.golingvu.implementation.go +95 -0
  10. package/example/Calculator.golingvu.specification.go +68 -0
  11. package/example/Calculator.pitono.adapter.py +68 -0
  12. package/example/Calculator.pitono.implementation.py +30 -0
  13. package/example/Calculator.pitono.specification.py +154 -0
  14. package/example/Calculator.pitono.test.py +47 -0
  15. package/example/Calculator.py +93 -0
  16. package/example/Calculator.test.adapter.ts +86 -0
  17. package/example/Calculator.test.implementation.ts +82 -0
  18. package/example/Calculator.test.specification.ts +213 -0
  19. package/example/Calculator.test.ts +13 -0
  20. package/example/Calculator.test.types.ts +50 -0
  21. package/example/Calculator.ts +130 -0
  22. package/example/README.md +1 -0
  23. package/example/base_suite_test.go +51 -0
  24. package/example/cmd/main.go +16 -0
  25. package/example/go.mod +9 -0
  26. package/example/main +0 -0
  27. package/example/test_example.py +143 -74
  28. package/{testeranto → example/testeranto}/bundles/golang/core/Calculator.golingvu.go +1 -1
  29. package/example/testeranto/metafiles/golang/core.json +198 -0
  30. package/go.mod +3 -1
  31. package/golingvu.tmp.txt +68 -0
  32. package/log.txt +85 -0
  33. package/package.json +50 -41
  34. package/scripts/build-example.ts +245 -0
  35. package/src/App.tsx +94 -44
  36. package/src/Helpo.tsx +89 -0
  37. package/src/PM/PM_WithBuild.ts +32 -20
  38. package/src/PM/PM_WithGit.ts +60 -13
  39. package/src/PM/PM_WithHelpo.ts +341 -0
  40. package/src/PM/PM_WithProcesses.ts +484 -223
  41. package/src/PM/PM_WithWebSocket.ts +210 -2
  42. package/src/PM/golingvuBuild.ts +56 -0
  43. package/src/PM/main.ts +570 -438
  44. package/src/PM/pitonoBuild.ts +56 -0
  45. package/src/PM/utils.ts +7 -1
  46. package/src/app.scss +102 -0
  47. package/src/components/pure/AppFrame.tsx +259 -149
  48. package/src/components/pure/GitIntegrationView.tsx +527 -238
  49. package/src/components/pure/HelpoChatDrawer.tsx +222 -0
  50. package/src/components/pure/MagicRobotModal.tsx +136 -0
  51. package/src/components/pure/ProcessDetails.tsx +99 -0
  52. package/src/components/pure/ProcessInput.tsx +67 -0
  53. package/src/components/pure/ProcessList.tsx +89 -0
  54. package/src/components/pure/ProcessLogs.tsx +54 -0
  55. package/src/components/pure/ProcessManager.tsx +37 -46
  56. package/src/components/pure/ProcessManagerView.tsx +42 -367
  57. package/src/components/pure/ProcessManagerViewTypes.ts +10 -0
  58. package/src/components/pure/ProcessSidebar.tsx +88 -0
  59. package/src/components/pure/ProcessTerminal.tsx +51 -0
  60. package/src/components/pure/SingleProcessView.tsx +140 -231
  61. package/src/components/pure/TerminalInput.tsx +73 -0
  62. package/src/components/pure/TerminalLogs.tsx +80 -0
  63. package/src/components/pure/TestPageView.tsx +21 -116
  64. package/src/components/pure/TestPageView_utils.tsx +2 -0
  65. package/src/components/stateful/DratoPage.tsx +457 -0
  66. package/src/components/stateful/GenericXMLEditor/AttributeEditor.tsx +87 -0
  67. package/src/components/stateful/GenericXMLEditor/Drawer.tsx +174 -0
  68. package/src/components/stateful/GenericXMLEditor/GenericPreview.tsx +160 -0
  69. package/src/components/stateful/GenericXMLEditor/GenericTextEditor.tsx +104 -0
  70. package/src/components/stateful/GenericXMLEditor/GenericTree.tsx +104 -0
  71. package/src/components/stateful/GenericXMLEditorPage.tsx +346 -0
  72. package/src/components/stateful/GitIntegrationPage.tsx +258 -3
  73. package/src/components/stateful/GrafeoPage.tsx +563 -0
  74. package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +26 -8
  75. package/src/components/stateful/SVGEditor/SVGPreview.tsx +4 -2
  76. package/src/components/stateful/SVGEditorPage.tsx +195 -181
  77. package/src/components/stateful/SingleProcessPage.tsx +133 -131
  78. package/src/components/stateful/SkriboPage.tsx +765 -0
  79. package/src/components/stateful/TestPage.tsx +3 -2
  80. package/src/esbuildConfigs/node.ts +1 -1
  81. package/src/example/go.mod +9 -0
  82. package/src/example/main.go +61 -0
  83. package/src/golingvu/PM/golang_test.go +103 -0
  84. package/src/golingvu/README.md +186 -2
  85. package/src/golingvu/base_given.go +89 -2
  86. package/src/golingvu/base_suite.go +48 -2
  87. package/src/golingvu/go.mod +6 -0
  88. package/src/golingvu/golingvu.go +703 -29
  89. package/src/golingvu/types.go +0 -14
  90. package/src/helpo/directives.md +5 -0
  91. package/src/helpo/prompt.txt +38 -0
  92. package/src/hooks/useTerminalWebSocket.ts +49 -0
  93. package/src/lib/BaseGiven.ts +126 -28
  94. package/src/lib/BaseSuite.test/test.ts +97 -180
  95. package/src/lib/BaseSuite.ts +52 -10
  96. package/src/lib/BaseThen.ts +34 -38
  97. package/src/lib/BaseWhen.ts +9 -2
  98. package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +9 -8
  99. package/src/lib/Tiposkripto.ts +41 -11
  100. package/src/lib/pmProxy.ts +55 -18
  101. package/src/pitono/PM/python.py +165 -0
  102. package/src/pitono/Pitono.py +298 -0
  103. package/src/pitono/PitonoTest.py +25 -0
  104. package/src/pitono/README.md +21 -0
  105. package/src/pitono/__init__.py +6 -0
  106. package/{pitono → src/pitono}/base_given.py +42 -20
  107. package/{pitono → src/pitono}/base_suite.py +55 -2
  108. package/{pitono → src/pitono}/base_then.py +15 -1
  109. package/{pitono → src/pitono}/base_when.py +15 -1
  110. package/{pitono → src/pitono}/pitono.egg-info/PKG-INFO +25 -0
  111. package/{pitono → src/pitono}/pitono.egg-info/SOURCES.txt +1 -0
  112. package/src/pitono/types.py +87 -0
  113. package/src/services/FileService.ts +146 -11
  114. package/src/testeranto.ts +115 -149
  115. package/src/utils/golingvuMetafile.ts +822 -118
  116. package/src/utils/golingvuWatcher.ts +285 -0
  117. package/src/utils/logFiles.ts +10 -2
  118. package/src/utils/makePrompt.ts +12 -1
  119. package/src/utils/pitonoMetafile.ts +326 -54
  120. package/src/utils/pitonoWatcher.ts +157 -0
  121. package/testeranto/App.css +78 -0
  122. package/testeranto/App.js +4828 -2814
  123. package/testeranto/bundles/node/core/{chunk-RIM6RECA.mjs → chunk-MJTSYIAQ.mjs} +179 -250
  124. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +110 -62
  125. package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +135 -137
  126. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +4317 -4
  127. package/testeranto/bundles/pure/core/{chunk-XYOCRDEQ.mjs → chunk-6HR24P27.mjs} +96 -173
  128. package/testeranto/bundles/pure/core/src/Pure.test.mjs +1 -1
  129. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +110 -62
  130. package/testeranto/bundles/web/core/{chunk-JMDLMADH.mjs → chunk-AZZHJNSU.mjs} +2473 -191
  131. package/testeranto/bundles/web/core/{chunk-LQMU5NCG.mjs → chunk-ME6I6FJZ.mjs} +96 -173
  132. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.html +15 -0
  133. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +3 -5
  134. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +0 -78
  135. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.html +15 -0
  136. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +6476 -69
  137. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +15 -0
  138. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +110 -62
  139. package/testeranto/helpo_chat_history.json +1 -0
  140. package/testeranto/metafiles/golang/core.json +42 -47
  141. package/testeranto/metafiles/node/core.json +263 -247
  142. package/testeranto/metafiles/pure/core.json +23 -38
  143. package/testeranto/metafiles/python/core.json +85 -9
  144. package/testeranto/metafiles/web/core.json +966 -460
  145. package/testeranto/reports/core/config.json +30 -6
  146. package/testeranto/reports/core/example/Calculator.golingvu/golang/exit.log +1 -0
  147. package/testeranto/reports/core/example/Calculator.golingvu/golang/stderr.log +2 -0
  148. package/testeranto/reports/core/example/Calculator.golingvu/golang/stdout.log +1 -0
  149. package/testeranto/reports/core/example/Calculator.pitono.test/python/exit.log +1 -0
  150. package/testeranto/reports/core/example/Calculator.pitono.test/python/stderr.log +11 -0
  151. package/testeranto/reports/core/example/Calculator.pitono.test/python/stdout.log +1 -0
  152. package/testeranto/reports/core/example/Calculator.test/node/exit.log +1 -0
  153. package/testeranto/reports/core/example/Calculator.test/node/lint_errors.txt +2 -0
  154. package/testeranto/reports/core/example/Calculator.test/node/message.txt +16 -0
  155. package/testeranto/reports/core/example/Calculator.test/node/prompt.txt +13 -0
  156. package/testeranto/reports/core/example/Calculator.test/node/stderr.log +33 -0
  157. package/testeranto/reports/core/example/Calculator.test/node/stdout.log +1076 -0
  158. package/testeranto/reports/core/example/Calculator.test/node/tests.json +1109 -0
  159. package/testeranto/reports/core/example/Calculator.test/node/type_errors.txt +34 -0
  160. package/testeranto/reports/core/example/test_example/python/exit.log +1 -0
  161. package/testeranto/reports/core/example/test_example/python/stderr.log +24 -0
  162. package/testeranto/reports/core/src/Pure.test/pure/message.txt +1 -2
  163. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +4 -5
  164. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +16 -3
  165. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +0 -91
  166. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +0 -1
  167. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +0 -2
  168. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/message.txt +17 -0
  169. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/prompt.txt +26 -0
  170. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/type_errors.txt +69 -0
  171. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/lint_errors.txt +16 -0
  172. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/message.txt +17 -0
  173. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/prompt.txt +27 -0
  174. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/type_errors.txt +42 -0
  175. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +0 -30
  176. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +0 -1
  177. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +0 -2
  178. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +30 -0
  179. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/message.txt +17 -0
  180. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/prompt.txt +30 -0
  181. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +58 -0
  182. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/exit.log +1 -1
  183. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +9 -1
  184. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stderr.log +1 -0
  185. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +4 -1
  186. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +98 -7
  187. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +44 -28
  188. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/message.txt +1 -2
  189. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +4 -6
  190. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +44 -28
  191. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/error.log +0 -1
  192. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/exit.log +0 -1
  193. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/message.txt +17 -0
  194. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +25 -0
  195. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +69 -0
  196. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -1
  197. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +1 -2
  198. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +4 -8
  199. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +68 -35
  200. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +336 -6
  201. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/tests.json +166 -0
  202. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +20 -13
  203. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -1
  204. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +9 -1
  205. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +0 -20
  206. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +1 -3
  207. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/tests.json +31 -0
  208. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +16 -3
  209. package/testeranto/reports/core/summary.json +46 -19
  210. package/testeranto.config.ts +18 -30
  211. package/dist/cjs-shim.js +0 -12
  212. package/dist/common/design-editor/DesignEditor.js +0 -77
  213. package/dist/common/design-editor/index.js +0 -18
  214. package/dist/common/design-editor/server.js +0 -98
  215. package/dist/common/design-editor/types.js +0 -2
  216. package/dist/common/package.json +0 -3
  217. package/dist/common/src/App.js +0 -219
  218. package/dist/common/src/CoreTypes.js +0 -2
  219. package/dist/common/src/Init.js +0 -48
  220. package/dist/common/src/Node.js +0 -40
  221. package/dist/common/src/NodeSidecar.js +0 -15
  222. package/dist/common/src/PM/PM_WithBuild.js +0 -135
  223. package/dist/common/src/PM/PM_WithEslintAndTsc.js +0 -204
  224. package/dist/common/src/PM/PM_WithGit.js +0 -517
  225. package/dist/common/src/PM/PM_WithProcesses.js +0 -519
  226. package/dist/common/src/PM/PM_WithWebSocket.js +0 -535
  227. package/dist/common/src/PM/__tests__/nodeSidecar.testeranto.js +0 -108
  228. package/dist/common/src/PM/__tests__/pureSidecar.testeranto.js +0 -93
  229. package/dist/common/src/PM/__tests__/webSidecar.testeranto.js +0 -93
  230. package/dist/common/src/PM/base.js +0 -319
  231. package/dist/common/src/PM/index.js +0 -6
  232. package/dist/common/src/PM/main.js +0 -672
  233. package/dist/common/src/PM/metafileOutputs.js +0 -78
  234. package/dist/common/src/PM/node.js +0 -179
  235. package/dist/common/src/PM/nodeSidecar.js +0 -65
  236. package/dist/common/src/PM/pitonoRunner.js +0 -54
  237. package/dist/common/src/PM/pure.js +0 -103
  238. package/dist/common/src/PM/pureSidecar.js +0 -48
  239. package/dist/common/src/PM/sidecar.js +0 -11
  240. package/dist/common/src/PM/types.js +0 -2
  241. package/dist/common/src/PM/utils.js +0 -210
  242. package/dist/common/src/PM/web.js +0 -106
  243. package/dist/common/src/PM/webSidecar.js +0 -47
  244. package/dist/common/src/Pure.js +0 -52
  245. package/dist/common/src/Pure.test.js +0 -180
  246. package/dist/common/src/PureSidecar.js +0 -13
  247. package/dist/common/src/ReportServer.js +0 -1
  248. package/dist/common/src/ReportServer.test.ts/index.js +0 -78
  249. package/dist/common/src/ReportServerLib.js +0 -1
  250. package/dist/common/src/Types.js +0 -2
  251. package/dist/common/src/Web.js +0 -61
  252. package/dist/common/src/WebSidecar.js +0 -14
  253. package/dist/common/src/components/DesignEditorPage.js +0 -205
  254. package/dist/common/src/components/SunriseAnimation.js +0 -291
  255. package/dist/common/src/components/SunriseAnimation.test/implementation.js +0 -1
  256. package/dist/common/src/components/SunriseAnimation.test/index.js +0 -1
  257. package/dist/common/src/components/SunriseAnimation.test/interface.js +0 -68
  258. package/dist/common/src/components/SunriseAnimation.test/specification.js +0 -1
  259. package/dist/common/src/components/SunriseAnimation.test/types.js +0 -2
  260. package/dist/common/src/components/TestStatusBadge.js +0 -35
  261. package/dist/common/src/components/pure/AppFrame.js +0 -81
  262. package/dist/common/src/components/pure/AppFrame.test/implementation.js +0 -63
  263. package/dist/common/src/components/pure/AppFrame.test/index.js +0 -14
  264. package/dist/common/src/components/pure/AppFrame.test/specification.js +0 -25
  265. package/dist/common/src/components/pure/AppFrame.test/types.js +0 -3
  266. package/dist/common/src/components/pure/ArtifactTree.js +0 -80
  267. package/dist/common/src/components/pure/BuildLogViewer.js +0 -106
  268. package/dist/common/src/components/pure/DebugEnv.js +0 -30
  269. package/dist/common/src/components/pure/FeaturesReporterView.js +0 -23
  270. package/dist/common/src/components/pure/FeaturesReporterView.test/implementation.js +0 -84
  271. package/dist/common/src/components/pure/FeaturesReporterView.test/index.js +0 -14
  272. package/dist/common/src/components/pure/FeaturesReporterView.test/specification.js +0 -27
  273. package/dist/common/src/components/pure/FeaturesReporterView.test/types.js +0 -2
  274. package/dist/common/src/components/pure/FileTree.js +0 -34
  275. package/dist/common/src/components/pure/FileTreeItem.js +0 -29
  276. package/dist/common/src/components/pure/GitHubLoginButton.js +0 -18
  277. package/dist/common/src/components/pure/GitIntegrationView.js +0 -342
  278. package/dist/common/src/components/pure/ModalContent.js +0 -86
  279. package/dist/common/src/components/pure/ModalContent.test/implementation.js +0 -35
  280. package/dist/common/src/components/pure/ModalContent.test/index.js +0 -58
  281. package/dist/common/src/components/pure/ModalContent.test/specification.js +0 -19
  282. package/dist/common/src/components/pure/ModalContent.test/types.js +0 -4
  283. package/dist/common/src/components/pure/NavBar.js +0 -44
  284. package/dist/common/src/components/pure/ProcessManager.js +0 -113
  285. package/dist/common/src/components/pure/ProcessManagerView.js +0 -236
  286. package/dist/common/src/components/pure/ProjectPageView.js +0 -68
  287. package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +0 -184
  288. package/dist/common/src/components/pure/ProjectPageView.test/index.js +0 -14
  289. package/dist/common/src/components/pure/ProjectPageView.test/specification.js +0 -32
  290. package/dist/common/src/components/pure/ProjectPageView.test/types.js +0 -4
  291. package/dist/common/src/components/pure/ProjectsPageView.js +0 -72
  292. package/dist/common/src/components/pure/Settings.js +0 -121
  293. package/dist/common/src/components/pure/Settings.test.js +0 -34
  294. package/dist/common/src/components/pure/SettingsButton.js +0 -13
  295. package/dist/common/src/components/pure/SignIn.js +0 -22
  296. package/dist/common/src/components/pure/SingleProcessView.js +0 -167
  297. package/dist/common/src/components/pure/TestPageView.js +0 -373
  298. package/dist/common/src/components/pure/TestPageView.test/implementation.js +0 -157
  299. package/dist/common/src/components/pure/TestPageView.test/index.js +0 -15
  300. package/dist/common/src/components/pure/TestPageView.test/specification.js +0 -26
  301. package/dist/common/src/components/pure/TestPageView.test/types.js +0 -4
  302. package/dist/common/src/components/pure/TestPageView_utils.js +0 -117
  303. package/dist/common/src/components/pure/TestTable.js +0 -33
  304. package/dist/common/src/components/pure/ThemeCard.js +0 -15
  305. package/dist/common/src/components/pure/ToastNotification.js +0 -14
  306. package/dist/common/src/components/pure/UserProfile.js +0 -27
  307. package/dist/common/src/components/stateful/AuthCallbackPage.js +0 -51
  308. package/dist/common/src/components/stateful/FeaturesReporter.js +0 -60
  309. package/dist/common/src/components/stateful/FileTree.js +0 -59
  310. package/dist/common/src/components/stateful/GitIntegrationPage.js +0 -12
  311. package/dist/common/src/components/stateful/ProcessManagerPage.js +0 -110
  312. package/dist/common/src/components/stateful/ProjectPage.js +0 -102
  313. package/dist/common/src/components/stateful/ProjectsPage.js +0 -116
  314. package/dist/common/src/components/stateful/SettingsPage.js +0 -72
  315. package/dist/common/src/components/stateful/SingleProcessPage.js +0 -137
  316. package/dist/common/src/components/stateful/TestPage.js +0 -270
  317. package/dist/common/src/components/stateful/TextEditorPage.js +0 -154
  318. package/dist/common/src/defaultConfig.js +0 -19
  319. package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +0 -38
  320. package/dist/common/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -21
  321. package/dist/common/src/esbuildConfigs/featuresPlugin.js +0 -39
  322. package/dist/common/src/esbuildConfigs/index.js +0 -21
  323. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -30
  324. package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -24
  325. package/dist/common/src/esbuildConfigs/node.js +0 -24
  326. package/dist/common/src/esbuildConfigs/pure.js +0 -42
  327. package/dist/common/src/esbuildConfigs/rebuildPlugin.js +0 -19
  328. package/dist/common/src/esbuildConfigs/web.js +0 -48
  329. package/dist/common/src/hooks/useGitMode.js +0 -21
  330. package/dist/common/src/init-docs.js +0 -9
  331. package/dist/common/src/lib/BaseGiven.js +0 -99
  332. package/dist/common/src/lib/BaseSuite.js +0 -91
  333. package/dist/common/src/lib/BaseSuite.test/mock.js +0 -68
  334. package/dist/common/src/lib/BaseSuite.test/node.test.js +0 -10
  335. package/dist/common/src/lib/BaseSuite.test/pure.test.js +0 -10
  336. package/dist/common/src/lib/BaseSuite.test/test.js +0 -229
  337. package/dist/common/src/lib/BaseSuite.test/web.test.js +0 -10
  338. package/dist/common/src/lib/BaseThen.js +0 -64
  339. package/dist/common/src/lib/BaseWhen.js +0 -45
  340. package/dist/common/src/lib/Sidecar.js +0 -7
  341. package/dist/common/src/lib/Tiposkripto.js +0 -173
  342. package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +0 -180
  343. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +0 -29
  344. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +0 -213
  345. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.js +0 -11
  346. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +0 -50
  347. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.types.js +0 -2
  348. package/dist/common/src/lib/abstractBase.test/MockGiven.js +0 -24
  349. package/dist/common/src/lib/abstractBase.test/MockThen.js +0 -16
  350. package/dist/common/src/lib/abstractBase.test/MockWhen.js +0 -20
  351. package/dist/common/src/lib/abstractBase.test/adapter.js +0 -24
  352. package/dist/common/src/lib/abstractBase.test/implementation.js +0 -38
  353. package/dist/common/src/lib/abstractBase.test/index.js +0 -18
  354. package/dist/common/src/lib/abstractBase.test/specification.js +0 -19
  355. package/dist/common/src/lib/abstractBase.test/types.js +0 -2
  356. package/dist/common/src/lib/index.js +0 -31
  357. package/dist/common/src/lib/pmProxy.js +0 -293
  358. package/dist/common/src/lib/pmProxy.test/adapter.js +0 -54
  359. package/dist/common/src/lib/pmProxy.test/implementation.js +0 -137
  360. package/dist/common/src/lib/pmProxy.test/index.js +0 -15
  361. package/dist/common/src/lib/pmProxy.test/mockPM.js +0 -34
  362. package/dist/common/src/lib/pmProxy.test/mockPMBase.js +0 -131
  363. package/dist/common/src/lib/pmProxy.test/specification.js +0 -179
  364. package/dist/common/src/lib/pmProxy.test/types.js +0 -2
  365. package/dist/common/src/lib/types.js +0 -3
  366. package/dist/common/src/mothership/index.js +0 -21
  367. package/dist/common/src/mothership/test.js +0 -83
  368. package/dist/common/src/run.js +0 -49
  369. package/dist/common/src/services/FileService.js +0 -505
  370. package/dist/common/src/services/GitHubAuthService.js +0 -184
  371. package/dist/common/src/testeranto.js +0 -224
  372. package/dist/common/src/types/features.js +0 -34
  373. package/dist/common/src/utils/api.js +0 -93
  374. package/dist/common/src/utils/buildTemplates.js +0 -37
  375. package/dist/common/src/utils/featureUtils.js +0 -29
  376. package/dist/common/src/utils/gitTest.js +0 -27
  377. package/dist/common/src/utils/golingvuMetafile.js +0 -116
  378. package/dist/common/src/utils/logFiles.js +0 -52
  379. package/dist/common/src/utils/makePrompt.js +0 -116
  380. package/dist/common/src/utils/pitonoMetafile.js +0 -67
  381. package/dist/common/src/utils/queue.js +0 -36
  382. package/dist/common/src/utils.js +0 -143
  383. package/dist/common/src/web.html.js +0 -18
  384. package/dist/common/testeranto.config.js +0 -102
  385. package/dist/common/tsconfig.common.tsbuildinfo +0 -1
  386. package/dist/module/design-editor/DesignEditor.js +0 -40
  387. package/dist/module/design-editor/index.js +0 -2
  388. package/dist/module/design-editor/server.js +0 -92
  389. package/dist/module/design-editor/types.js +0 -1
  390. package/dist/module/package.json +0 -3
  391. package/dist/module/src/App.js +0 -176
  392. package/dist/module/src/CoreTypes.js +0 -1
  393. package/dist/module/src/Init.js +0 -43
  394. package/dist/module/src/Node.js +0 -33
  395. package/dist/module/src/NodeSidecar.js +0 -11
  396. package/dist/module/src/PM/PM_WithBuild.js +0 -128
  397. package/dist/module/src/PM/PM_WithEslintAndTsc.js +0 -197
  398. package/dist/module/src/PM/PM_WithGit.js +0 -477
  399. package/dist/module/src/PM/PM_WithProcesses.js +0 -479
  400. package/dist/module/src/PM/PM_WithWebSocket.js +0 -528
  401. package/dist/module/src/PM/__tests__/nodeSidecar.testeranto.js +0 -103
  402. package/dist/module/src/PM/__tests__/pureSidecar.testeranto.js +0 -88
  403. package/dist/module/src/PM/__tests__/webSidecar.testeranto.js +0 -88
  404. package/dist/module/src/PM/base.js +0 -312
  405. package/dist/module/src/PM/index.js +0 -2
  406. package/dist/module/src/PM/main.js +0 -632
  407. package/dist/module/src/PM/metafileOutputs.js +0 -78
  408. package/dist/module/src/PM/node.js +0 -172
  409. package/dist/module/src/PM/nodeSidecar.js +0 -58
  410. package/dist/module/src/PM/pitonoRunner.js +0 -47
  411. package/dist/module/src/PM/pure.js +0 -99
  412. package/dist/module/src/PM/pureSidecar.js +0 -41
  413. package/dist/module/src/PM/sidecar.js +0 -7
  414. package/dist/module/src/PM/types.js +0 -1
  415. package/dist/module/src/PM/utils.js +0 -196
  416. package/dist/module/src/PM/web.js +0 -102
  417. package/dist/module/src/PM/webSidecar.js +0 -40
  418. package/dist/module/src/Pure.js +0 -45
  419. package/dist/module/src/Pure.test.js +0 -175
  420. package/dist/module/src/PureSidecar.js +0 -9
  421. package/dist/module/src/ReportServer.js +0 -1
  422. package/dist/module/src/ReportServer.test.ts/index.js +0 -73
  423. package/dist/module/src/ReportServerLib.js +0 -1
  424. package/dist/module/src/Types.js +0 -1
  425. package/dist/module/src/Web.js +0 -54
  426. package/dist/module/src/WebSidecar.js +0 -10
  427. package/dist/module/src/components/DesignEditorPage.js +0 -168
  428. package/dist/module/src/components/SunriseAnimation.js +0 -256
  429. package/dist/module/src/components/SunriseAnimation.test/implementation.js +0 -1
  430. package/dist/module/src/components/SunriseAnimation.test/index.js +0 -1
  431. package/dist/module/src/components/SunriseAnimation.test/interface.js +0 -32
  432. package/dist/module/src/components/SunriseAnimation.test/specification.js +0 -1
  433. package/dist/module/src/components/SunriseAnimation.test/types.js +0 -1
  434. package/dist/module/src/components/TestStatusBadge.js +0 -28
  435. package/dist/module/src/components/pure/AppFrame.js +0 -74
  436. package/dist/module/src/components/pure/AppFrame.test/implementation.js +0 -57
  437. package/dist/module/src/components/pure/AppFrame.test/index.js +0 -9
  438. package/dist/module/src/components/pure/AppFrame.test/specification.js +0 -21
  439. package/dist/module/src/components/pure/AppFrame.test/types.js +0 -2
  440. package/dist/module/src/components/pure/ArtifactTree.js +0 -80
  441. package/dist/module/src/components/pure/BuildLogViewer.js +0 -99
  442. package/dist/module/src/components/pure/DebugEnv.js +0 -23
  443. package/dist/module/src/components/pure/FeaturesReporterView.js +0 -16
  444. package/dist/module/src/components/pure/FeaturesReporterView.test/implementation.js +0 -81
  445. package/dist/module/src/components/pure/FeaturesReporterView.test/index.js +0 -9
  446. package/dist/module/src/components/pure/FeaturesReporterView.test/specification.js +0 -23
  447. package/dist/module/src/components/pure/FeaturesReporterView.test/types.js +0 -1
  448. package/dist/module/src/components/pure/FileTree.js +0 -27
  449. package/dist/module/src/components/pure/FileTreeItem.js +0 -22
  450. package/dist/module/src/components/pure/GitHubLoginButton.js +0 -11
  451. package/dist/module/src/components/pure/GitIntegrationView.js +0 -305
  452. package/dist/module/src/components/pure/ModalContent.js +0 -79
  453. package/dist/module/src/components/pure/ModalContent.test/implementation.js +0 -32
  454. package/dist/module/src/components/pure/ModalContent.test/index.js +0 -53
  455. package/dist/module/src/components/pure/ModalContent.test/specification.js +0 -15
  456. package/dist/module/src/components/pure/ModalContent.test/types.js +0 -3
  457. package/dist/module/src/components/pure/NavBar.js +0 -37
  458. package/dist/module/src/components/pure/ProcessManager.js +0 -76
  459. package/dist/module/src/components/pure/ProcessManagerView.js +0 -199
  460. package/dist/module/src/components/pure/ProjectPageView.js +0 -61
  461. package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +0 -181
  462. package/dist/module/src/components/pure/ProjectPageView.test/index.js +0 -9
  463. package/dist/module/src/components/pure/ProjectPageView.test/specification.js +0 -28
  464. package/dist/module/src/components/pure/ProjectPageView.test/types.js +0 -3
  465. package/dist/module/src/components/pure/ProjectsPageView.js +0 -65
  466. package/dist/module/src/components/pure/Settings.js +0 -84
  467. package/dist/module/src/components/pure/Settings.test.js +0 -29
  468. package/dist/module/src/components/pure/SettingsButton.js +0 -6
  469. package/dist/module/src/components/pure/SignIn.js +0 -15
  470. package/dist/module/src/components/pure/SingleProcessView.js +0 -130
  471. package/dist/module/src/components/pure/TestPageView.js +0 -336
  472. package/dist/module/src/components/pure/TestPageView.test/implementation.js +0 -121
  473. package/dist/module/src/components/pure/TestPageView.test/index.js +0 -10
  474. package/dist/module/src/components/pure/TestPageView.test/specification.js +0 -22
  475. package/dist/module/src/components/pure/TestPageView.test/types.js +0 -3
  476. package/dist/module/src/components/pure/TestPageView_utils.js +0 -109
  477. package/dist/module/src/components/pure/TestTable.js +0 -26
  478. package/dist/module/src/components/pure/ThemeCard.js +0 -8
  479. package/dist/module/src/components/pure/ToastNotification.js +0 -7
  480. package/dist/module/src/components/pure/UserProfile.js +0 -20
  481. package/dist/module/src/components/stateful/AuthCallbackPage.js +0 -14
  482. package/dist/module/src/components/stateful/FeaturesReporter.js +0 -23
  483. package/dist/module/src/components/stateful/FileTree.js +0 -59
  484. package/dist/module/src/components/stateful/GitIntegrationPage.js +0 -5
  485. package/dist/module/src/components/stateful/ProcessManagerPage.js +0 -73
  486. package/dist/module/src/components/stateful/ProjectPage.js +0 -65
  487. package/dist/module/src/components/stateful/ProjectsPage.js +0 -79
  488. package/dist/module/src/components/stateful/SettingsPage.js +0 -35
  489. package/dist/module/src/components/stateful/SingleProcessPage.js +0 -100
  490. package/dist/module/src/components/stateful/TestPage.js +0 -233
  491. package/dist/module/src/components/stateful/TextEditorPage.js +0 -117
  492. package/dist/module/src/defaultConfig.js +0 -17
  493. package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +0 -32
  494. package/dist/module/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -18
  495. package/dist/module/src/esbuildConfigs/featuresPlugin.js +0 -34
  496. package/dist/module/src/esbuildConfigs/index.js +0 -19
  497. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -25
  498. package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -21
  499. package/dist/module/src/esbuildConfigs/node.js +0 -19
  500. package/dist/module/src/esbuildConfigs/pure.js +0 -37
  501. package/dist/module/src/esbuildConfigs/rebuildPlugin.js +0 -14
  502. package/dist/module/src/esbuildConfigs/web.js +0 -43
  503. package/dist/module/src/hooks/useGitMode.js +0 -17
  504. package/dist/module/src/init-docs.js +0 -4
  505. package/dist/module/src/lib/BaseGiven.js +0 -95
  506. package/dist/module/src/lib/BaseSuite.js +0 -87
  507. package/dist/module/src/lib/BaseSuite.test/mock.js +0 -61
  508. package/dist/module/src/lib/BaseSuite.test/node.test.js +0 -5
  509. package/dist/module/src/lib/BaseSuite.test/pure.test.js +0 -5
  510. package/dist/module/src/lib/BaseSuite.test/test.js +0 -225
  511. package/dist/module/src/lib/BaseSuite.test/web.test.js +0 -5
  512. package/dist/module/src/lib/BaseThen.js +0 -60
  513. package/dist/module/src/lib/BaseWhen.js +0 -41
  514. package/dist/module/src/lib/Sidecar.js +0 -3
  515. package/dist/module/src/lib/Tiposkripto.js +0 -170
  516. package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +0 -173
  517. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +0 -26
  518. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +0 -210
  519. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.js +0 -6
  520. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +0 -46
  521. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.types.js +0 -1
  522. package/dist/module/src/lib/abstractBase.test/MockGiven.js +0 -20
  523. package/dist/module/src/lib/abstractBase.test/MockThen.js +0 -12
  524. package/dist/module/src/lib/abstractBase.test/MockWhen.js +0 -16
  525. package/dist/module/src/lib/abstractBase.test/adapter.js +0 -21
  526. package/dist/module/src/lib/abstractBase.test/implementation.js +0 -35
  527. package/dist/module/src/lib/abstractBase.test/index.js +0 -13
  528. package/dist/module/src/lib/abstractBase.test/specification.js +0 -15
  529. package/dist/module/src/lib/abstractBase.test/types.js +0 -1
  530. package/dist/module/src/lib/index.js +0 -26
  531. package/dist/module/src/lib/pmProxy.js +0 -284
  532. package/dist/module/src/lib/pmProxy.test/adapter.js +0 -51
  533. package/dist/module/src/lib/pmProxy.test/implementation.js +0 -134
  534. package/dist/module/src/lib/pmProxy.test/index.js +0 -10
  535. package/dist/module/src/lib/pmProxy.test/mockPM.js +0 -30
  536. package/dist/module/src/lib/pmProxy.test/mockPMBase.js +0 -127
  537. package/dist/module/src/lib/pmProxy.test/specification.js +0 -175
  538. package/dist/module/src/lib/pmProxy.test/types.js +0 -1
  539. package/dist/module/src/lib/types.js +0 -2
  540. package/dist/module/src/mothership/index.js +0 -16
  541. package/dist/module/src/mothership/test.js +0 -78
  542. package/dist/module/src/run.js +0 -49
  543. package/dist/module/src/services/FileService.js +0 -468
  544. package/dist/module/src/services/GitHubAuthService.js +0 -180
  545. package/dist/module/src/testeranto.js +0 -186
  546. package/dist/module/src/types/features.js +0 -31
  547. package/dist/module/src/utils/api.js +0 -87
  548. package/dist/module/src/utils/buildTemplates.js +0 -33
  549. package/dist/module/src/utils/featureUtils.js +0 -24
  550. package/dist/module/src/utils/gitTest.js +0 -23
  551. package/dist/module/src/utils/golingvuMetafile.js +0 -109
  552. package/dist/module/src/utils/logFiles.js +0 -47
  553. package/dist/module/src/utils/makePrompt.js +0 -109
  554. package/dist/module/src/utils/pitonoMetafile.js +0 -60
  555. package/dist/module/src/utils/queue.js +0 -32
  556. package/dist/module/src/utils.js +0 -130
  557. package/dist/module/src/web.html.js +0 -16
  558. package/dist/module/testeranto.config.js +0 -100
  559. package/dist/module/tsconfig.module.tsbuildinfo +0 -1
  560. package/dist/types/design-editor/DesignEditor.d.ts +0 -1
  561. package/dist/types/src/App.d.ts +0 -19
  562. package/dist/types/src/CoreTypes.d.ts +0 -52
  563. package/dist/types/src/Init.d.ts +0 -2
  564. package/dist/types/src/Node.d.ts +0 -9
  565. package/dist/types/src/NodeSidecar.d.ts +0 -6
  566. package/dist/types/src/PM/PM_WithBuild.d.ts +0 -13
  567. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +0 -22
  568. package/dist/types/src/PM/PM_WithGit.d.ts +0 -27
  569. package/dist/types/src/PM/PM_WithProcesses.d.ts +0 -29
  570. package/dist/types/src/PM/PM_WithWebSocket.d.ts +0 -108
  571. package/dist/types/src/PM/__tests__/nodeSidecar.testeranto.d.ts +0 -2
  572. package/dist/types/src/PM/__tests__/pureSidecar.testeranto.d.ts +0 -2
  573. package/dist/types/src/PM/__tests__/webSidecar.testeranto.d.ts +0 -2
  574. package/dist/types/src/PM/base.d.ts +0 -35
  575. package/dist/types/src/PM/index.d.ts +0 -35
  576. package/dist/types/src/PM/main.d.ts +0 -8
  577. package/dist/types/src/PM/node.d.ts +0 -38
  578. package/dist/types/src/PM/nodeSidecar.d.ts +0 -13
  579. package/dist/types/src/PM/pitonoRunner.d.ts +0 -7
  580. package/dist/types/src/PM/pure.d.ts +0 -41
  581. package/dist/types/src/PM/pureSidecar.d.ts +0 -11
  582. package/dist/types/src/PM/sidecar.d.ts +0 -8
  583. package/dist/types/src/PM/types.d.ts +0 -118
  584. package/dist/types/src/PM/utils.d.ts +0 -35
  585. package/dist/types/src/PM/web.d.ts +0 -41
  586. package/dist/types/src/PM/webSidecar.d.ts +0 -11
  587. package/dist/types/src/Pure.d.ts +0 -14
  588. package/dist/types/src/Pure.test.d.ts +0 -2
  589. package/dist/types/src/PureSidecar.d.ts +0 -8
  590. package/dist/types/src/ReportServer.test.ts/index.d.ts +0 -2
  591. package/dist/types/src/Types.d.ts +0 -119
  592. package/dist/types/src/Web.d.ts +0 -9
  593. package/dist/types/src/WebSidecar.d.ts +0 -8
  594. package/dist/types/src/components/DesignEditorPage.d.ts +0 -1
  595. package/dist/types/src/components/SunriseAnimation.d.ts +0 -5
  596. package/dist/types/src/components/SunriseAnimation.test/interface.d.ts +0 -11
  597. package/dist/types/src/components/SunriseAnimation.test/types.d.ts +0 -39
  598. package/dist/types/src/components/TestStatusBadge.d.ts +0 -15
  599. package/dist/types/src/components/pure/AppFrame.d.ts +0 -11
  600. package/dist/types/src/components/pure/AppFrame.test/implementation.d.ts +0 -3
  601. package/dist/types/src/components/pure/AppFrame.test/index.d.ts +0 -3
  602. package/dist/types/src/components/pure/AppFrame.test/specification.d.ts +0 -3
  603. package/dist/types/src/components/pure/AppFrame.test/types.d.ts +0 -33
  604. package/dist/types/src/components/pure/BuildLogViewer.d.ts +0 -7
  605. package/dist/types/src/components/pure/DebugEnv.d.ts +0 -2
  606. package/dist/types/src/components/pure/FeaturesReporterView.d.ts +0 -7
  607. package/dist/types/src/components/pure/FeaturesReporterView.test/implementation.d.ts +0 -3
  608. package/dist/types/src/components/pure/FeaturesReporterView.test/index.d.ts +0 -2
  609. package/dist/types/src/components/pure/FeaturesReporterView.test/specification.d.ts +0 -3
  610. package/dist/types/src/components/pure/FeaturesReporterView.test/types.d.ts +0 -54
  611. package/dist/types/src/components/pure/FileTree.d.ts +0 -6
  612. package/dist/types/src/components/pure/FileTreeItem.d.ts +0 -8
  613. package/dist/types/src/components/pure/GitHubLoginButton.d.ts +0 -8
  614. package/dist/types/src/components/pure/GitIntegrationView.d.ts +0 -1
  615. package/dist/types/src/components/pure/ModalContent.d.ts +0 -7
  616. package/dist/types/src/components/pure/ModalContent.test/implementation.d.ts +0 -3
  617. package/dist/types/src/components/pure/ModalContent.test/index.d.ts +0 -2
  618. package/dist/types/src/components/pure/ModalContent.test/specification.d.ts +0 -3
  619. package/dist/types/src/components/pure/ModalContent.test/types.d.ts +0 -45
  620. package/dist/types/src/components/pure/NavBar.d.ts +0 -23
  621. package/dist/types/src/components/pure/ProcessManager.d.ts +0 -8
  622. package/dist/types/src/components/pure/ProcessManagerView.d.ts +0 -20
  623. package/dist/types/src/components/pure/ProjectPageView.d.ts +0 -14
  624. package/dist/types/src/components/pure/ProjectPageView.test/implementation.d.ts +0 -3
  625. package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +0 -2
  626. package/dist/types/src/components/pure/ProjectPageView.test/specification.d.ts +0 -3
  627. package/dist/types/src/components/pure/ProjectPageView.test/types.d.ts +0 -57
  628. package/dist/types/src/components/pure/ProjectsPageView.d.ts +0 -29
  629. package/dist/types/src/components/pure/Settings.d.ts +0 -1
  630. package/dist/types/src/components/pure/Settings.test.d.ts +0 -1
  631. package/dist/types/src/components/pure/SettingsButton.d.ts +0 -2
  632. package/dist/types/src/components/pure/SignIn.d.ts +0 -1
  633. package/dist/types/src/components/pure/SingleProcessView.d.ts +0 -10
  634. package/dist/types/src/components/pure/TestPageView.d.ts +0 -16
  635. package/dist/types/src/components/pure/TestPageView.test/implementation.d.ts +0 -12
  636. package/dist/types/src/components/pure/TestPageView.test/index.d.ts +0 -3
  637. package/dist/types/src/components/pure/TestPageView.test/specification.d.ts +0 -11
  638. package/dist/types/src/components/pure/TestPageView.test/types.d.ts +0 -65
  639. package/dist/types/src/components/pure/TestPageView_utils.d.ts +0 -23
  640. package/dist/types/src/components/pure/TestTable.d.ts +0 -16
  641. package/dist/types/src/components/pure/ThemeCard.d.ts +0 -9
  642. package/dist/types/src/components/pure/ToastNotification.d.ts +0 -6
  643. package/dist/types/src/components/pure/UserProfile.d.ts +0 -2
  644. package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +0 -2
  645. package/dist/types/src/components/stateful/FeaturesReporter.d.ts +0 -2
  646. package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +0 -1
  647. package/dist/types/src/components/stateful/ProcessManagerPage.d.ts +0 -2
  648. package/dist/types/src/components/stateful/ProjectPage.d.ts +0 -1
  649. package/dist/types/src/components/stateful/ProjectsPage.d.ts +0 -1
  650. package/dist/types/src/components/stateful/SettingsPage.d.ts +0 -2
  651. package/dist/types/src/components/stateful/SingleProcessPage.d.ts +0 -2
  652. package/dist/types/src/components/stateful/TestPage.d.ts +0 -1
  653. package/dist/types/src/components/stateful/TextEditorPage.d.ts +0 -1
  654. package/dist/types/src/defaultConfig.d.ts +0 -3
  655. package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +0 -2
  656. package/dist/types/src/esbuildConfigs/eslint-formatter-testeranto.d.ts +0 -2
  657. package/dist/types/src/esbuildConfigs/featuresPlugin.d.ts +0 -5
  658. package/dist/types/src/esbuildConfigs/index.d.ts +0 -4
  659. package/dist/types/src/esbuildConfigs/inputFilesPlugin.d.ts +0 -7
  660. package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +0 -2
  661. package/dist/types/src/esbuildConfigs/node.d.ts +0 -4
  662. package/dist/types/src/esbuildConfigs/pure.d.ts +0 -4
  663. package/dist/types/src/esbuildConfigs/rebuildPlugin.d.ts +0 -6
  664. package/dist/types/src/esbuildConfigs/web.d.ts +0 -4
  665. package/dist/types/src/hooks/useGitMode.d.ts +0 -7
  666. package/dist/types/src/init-docs.d.ts +0 -1
  667. package/dist/types/src/lib/BaseGiven.d.ts +0 -44
  668. package/dist/types/src/lib/BaseSuite.d.ts +0 -46
  669. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +0 -21
  670. package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +0 -2
  671. package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +0 -2
  672. package/dist/types/src/lib/BaseSuite.test/test.d.ts +0 -37
  673. package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +0 -2
  674. package/dist/types/src/lib/BaseThen.d.ts +0 -27
  675. package/dist/types/src/lib/BaseWhen.d.ts +0 -27
  676. package/dist/types/src/lib/Sidecar.d.ts +0 -5
  677. package/dist/types/src/lib/Tiposkripto.d.ts +0 -37
  678. package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +0 -18
  679. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.adapter.d.ts +0 -3
  680. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.d.ts +0 -2
  681. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.implementation.d.ts +0 -3
  682. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.specification.d.ts +0 -3
  683. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +0 -58
  684. package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +0 -9
  685. package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +0 -6
  686. package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +0 -6
  687. package/dist/types/src/lib/abstractBase.test/adapter.d.ts +0 -3
  688. package/dist/types/src/lib/abstractBase.test/implementation.d.ts +0 -3
  689. package/dist/types/src/lib/abstractBase.test/index.d.ts +0 -2
  690. package/dist/types/src/lib/abstractBase.test/specification.d.ts +0 -3
  691. package/dist/types/src/lib/abstractBase.test/types.d.ts +0 -39
  692. package/dist/types/src/lib/index.d.ts +0 -73
  693. package/dist/types/src/lib/pmProxy.d.ts +0 -12
  694. package/dist/types/src/lib/pmProxy.test/adapter.d.ts +0 -3
  695. package/dist/types/src/lib/pmProxy.test/implementation.d.ts +0 -3
  696. package/dist/types/src/lib/pmProxy.test/index.d.ts +0 -6
  697. package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +0 -10
  698. package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +0 -40
  699. package/dist/types/src/lib/pmProxy.test/specification.d.ts +0 -3
  700. package/dist/types/src/lib/pmProxy.test/types.d.ts +0 -42
  701. package/dist/types/src/lib/types.d.ts +0 -24
  702. package/dist/types/src/mothership/index.d.ts +0 -2
  703. package/dist/types/src/mothership/test.d.ts +0 -2
  704. package/dist/types/src/services/FileService.d.ts +0 -34
  705. package/dist/types/src/services/GitHubAuthService.d.ts +0 -32
  706. package/dist/types/src/testeranto.d.ts +0 -1
  707. package/dist/types/src/types/features.d.ts +0 -7
  708. package/dist/types/src/utils/api.d.ts +0 -10
  709. package/dist/types/src/utils/buildTemplates.d.ts +0 -1
  710. package/dist/types/src/utils/featureUtils.d.ts +0 -6
  711. package/dist/types/src/utils/gitTest.d.ts +0 -11
  712. package/dist/types/src/utils/golingvuMetafile.d.ts +0 -19
  713. package/dist/types/src/utils/logFiles.d.ts +0 -75
  714. package/dist/types/src/utils/makePrompt.d.ts +0 -2
  715. package/dist/types/src/utils/pitonoMetafile.d.ts +0 -7
  716. package/dist/types/src/utils/queue.d.ts +0 -11
  717. package/dist/types/src/utils.d.ts +0 -20
  718. package/dist/types/src/web.html.d.ts +0 -2
  719. package/dist/types/tsconfig.types.tsbuildinfo +0 -1
  720. package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
  721. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +0 -187
  722. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +0 -163
  723. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +0 -85
  724. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +0 -21
  725. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +0 -21
  726. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +0 -554
  727. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +0 -33
  728. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +0 -72
  729. package/example/vendor/modules.txt +0 -5
  730. package/pitono/__init__.py +0 -54
  731. package/pitono/types.py +0 -78
  732. package/src/PM/metafileOutputs.ts +0 -90
  733. package/src/golingvu/base_suite_test.go +0 -197
  734. package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
  735. package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
  736. package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
  737. package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
  738. package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
  739. package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
  740. package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
  741. package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
  742. package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
  743. package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
  744. package/src/templates/frontpage.html +0 -340
  745. package/src/templates/frontpage.md +0 -79
  746. package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +0 -53
  747. package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +0 -4321
  748. package/testeranto/bundles/node/core/example/Calculator.test.mjs +0 -503
  749. package/testeranto/bundles/python/core/Calculator.pitono.test.py +0 -24
  750. package/testeranto/bundles/python/core/test_example.py +0 -24
  751. package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +0 -2297
  752. package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +0 -6874
  753. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +0 -11697
  754. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +0 -336
  755. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +0 -68
  756. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +0 -88
  757. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +0 -29
  758. /package/{pitono → src/pitono}/core_generator.py +0 -0
  759. /package/{pitono → src/pitono}/pitono.egg-info/dependency_links.txt +0 -0
  760. /package/{pitono → src/pitono}/pitono.egg-info/entry_points.txt +0 -0
  761. /package/{pitono → src/pitono}/pitono.egg-info/top_level.txt +0 -0
  762. /package/{pitono → src/pitono}/pyproject.toml +0 -0
  763. /package/{pitono → src/pitono}/setup.py +0 -0
  764. /package/{pitono → src/pitono}/simple_adapter.py +0 -0
  765. /package/{dist/types/src/PM/metafileOutputs.d.ts → testeranto/helpo_chat_message.txt} +0 -0
  766. /package/{dist/types/src/ReportServer.d.ts → testeranto/reports/core/example/test_example/python/stdout.log} +0 -0
  767. /package/{dist/types/src/ReportServerLib.d.ts → testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/lint_errors.txt} +0 -0
  768. /package/{dist/types/src/components/SunriseAnimation.test/implementation.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/debug.log} +0 -0
  769. /package/{dist/types/src/components/SunriseAnimation.test/index.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/error.log} +0 -0
  770. /package/{dist/types/src/components/SunriseAnimation.test/specification.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/exit.log} +0 -0
  771. /package/{dist/types/src/components/pure/ArtifactTree.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/info.log} +0 -0
  772. /package/{dist/types/src/components/stateful/FileTree.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/warn.log} +0 -0
  773. /package/{dist/types/src/run.d.ts → testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt} +0 -0
package/src/PM/main.ts CHANGED
@@ -10,18 +10,189 @@ import fs from "fs";
10
10
  import { ConsoleMessage } from "puppeteer-core";
11
11
  import ansiC from "ansi-colors";
12
12
 
13
- import { IFinalResults, ITTestResourceConfiguration } from "../lib/index.js";
13
+ import {
14
+ IFinalResults,
15
+ ITTestResourceConfiguration,
16
+ IRunTime,
17
+ } from "../lib/index.js";
14
18
  import { webEvaluator } from "../utils";
15
19
  import { Queue } from "../utils/queue.js";
16
20
 
17
21
  import { createLogStreams, statusMessagePretty } from "./utils.js";
18
- import { PM_WithProcesses } from "./PM_WithProcesses.js";
22
+ import { PM_WithHelpo } from "./PM_WithHelpo.js";
23
+ import path from "node:path";
19
24
 
20
25
  const files: Record<string, Set<string>> = {};
21
26
  const screenshots: Record<string, Promise<Uint8Array>[]> = {};
22
27
 
23
- export class PM_Main extends PM_WithProcesses {
28
+ export class PM_Main extends PM_WithHelpo {
29
+ private async setupTestEnvironment(
30
+ src: string,
31
+ runtime: IRunTime
32
+ ): Promise<{
33
+ reportDest: string;
34
+ testConfig: any;
35
+ testConfigResource: any;
36
+ portsToUse: string[];
37
+ testResources: string;
38
+ }> {
39
+ this.bddTestIsRunning(src);
40
+
41
+ const reportDest = `testeranto/reports/${this.name}/${src
42
+ .split(".")
43
+ .slice(0, -1)
44
+ .join(".")}/${runtime}`;
45
+
46
+ if (!fs.existsSync(reportDest)) {
47
+ fs.mkdirSync(reportDest, { recursive: true });
48
+ }
49
+
50
+ const testConfig = this.configs.tests.find((t) => t[0] === src);
51
+ if (!testConfig) {
52
+ console.log(
53
+ ansiC.inverse(`missing test config! Exiting ungracefully for '${src}'`)
54
+ );
55
+ process.exit(-1);
56
+ }
57
+
58
+ const testConfigResource = testConfig[2];
59
+ const portsToUse: string[] = [];
60
+ let testResources = "";
61
+
62
+ if (testConfigResource.ports === 0) {
63
+ testResources = JSON.stringify({
64
+ name: src,
65
+ ports: [],
66
+ fs: reportDest,
67
+ browserWSEndpoint: this.browser.wsEndpoint(),
68
+ });
69
+ } else if (testConfigResource.ports > 0) {
70
+ const openPorts = Object.entries(this.ports).filter(
71
+ ([, status]) => status === ""
72
+ );
73
+
74
+ if (openPorts.length >= testConfigResource.ports) {
75
+ for (let i = 0; i < testConfigResource.ports; i++) {
76
+ portsToUse.push(openPorts[i][0]);
77
+ this.ports[openPorts[i][0]] = src;
78
+ }
79
+
80
+ testResources = JSON.stringify({
81
+ scheduled: true,
82
+ name: src,
83
+ ports: portsToUse,
84
+ fs: reportDest,
85
+ browserWSEndpoint: this.browser.wsEndpoint(),
86
+ });
87
+ } else {
88
+ console.log(
89
+ ansiC.red(
90
+ `${runtime}: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again when a port is available`
91
+ )
92
+ );
93
+ this.queue.push(src);
94
+ throw new Error("No ports available");
95
+ }
96
+ } else {
97
+ console.error("negative port makes no sense", src);
98
+ process.exit(-1);
99
+ }
100
+
101
+ return {
102
+ reportDest,
103
+ testConfig,
104
+ testConfigResource,
105
+ portsToUse,
106
+ testResources,
107
+ };
108
+ }
109
+
110
+ private cleanupPorts(portsToUse: string[]) {
111
+ portsToUse.forEach((port) => {
112
+ this.ports[port] = "";
113
+ });
114
+ }
115
+
116
+ private createIpcServer(
117
+ onData: (data: Buffer) => void,
118
+ ipcfile: string
119
+ ): Promise<net.Server> {
120
+ return new Promise((resolve, reject) => {
121
+ const server = net.createServer((socket) => {
122
+ socket.on("data", onData);
123
+ });
124
+
125
+ server.listen(ipcfile, (err) => {
126
+ if (err) reject(err);
127
+ else resolve(server);
128
+ });
129
+
130
+ server.on("error", reject);
131
+ });
132
+ }
133
+
134
+ private handleChildProcess(
135
+ child: ChildProcess,
136
+ logs: LogStreams,
137
+ reportDest: string,
138
+ src: string,
139
+ runtime: IRunTime
140
+ ): Promise<void> {
141
+ return new Promise((resolve, reject) => {
142
+ child.stdout?.on("data", (data) => {
143
+ logs.stdout?.write(data);
144
+ });
145
+
146
+ child.stderr?.on("data", (data) => {
147
+ logs.stderr?.write(data);
148
+ });
149
+
150
+ child.on("close", (code) => {
151
+ const exitCode = code === null ? -1 : code;
152
+ if (exitCode < 0) {
153
+ logs.writeExitCode(
154
+ exitCode,
155
+ new Error("Process crashed or was terminated")
156
+ );
157
+ } else {
158
+ logs.writeExitCode(exitCode);
159
+ }
160
+ logs.closeAll();
161
+
162
+ if (exitCode === 0) {
163
+ this.bddTestIsNowDone(src, 0);
164
+ statusMessagePretty(0, src, runtime);
165
+ resolve();
166
+ } else {
167
+ console.log(
168
+ ansiColors.red(
169
+ `${runtime} ! ${src} failed to execute. Check ${reportDest}/stderr.log for more info`
170
+ )
171
+ );
172
+ this.bddTestIsNowDone(src, exitCode);
173
+ statusMessagePretty(exitCode, src, runtime);
174
+ reject(new Error(`Process exited with code ${exitCode}`));
175
+ }
176
+ });
177
+
178
+ child.on("error", (e) => {
179
+ console.log(
180
+ ansiC.red(
181
+ ansiC.inverse(
182
+ `${src} errored with: ${e.name}. Check error logs for more info`
183
+ )
184
+ )
185
+ );
186
+ this.bddTestIsNowDone(src, -1);
187
+ statusMessagePretty(-1, src, runtime);
188
+ reject(e);
189
+ });
190
+ });
191
+ }
192
+
24
193
  launchPure = async (src: string, dest: string) => {
194
+ console.log(ansiC.green(ansiC.inverse(`pure < ${src}`)));
195
+
25
196
  const processId = `pure-${src}-${Date.now()}`;
26
197
  const command = `pure test: ${src}`;
27
198
 
@@ -102,6 +273,8 @@ export class PM_Main extends PM_WithProcesses {
102
273
  return defaultModule
103
274
  .receiveTestResourceConfig(argz)
104
275
  .then(async (results: IFinalResults) => {
276
+ // Ensure the test results are properly processed
277
+ // The receiveTestResourceConfig should handle creating tests.json
105
278
  statusMessagePretty(results.fails, src, "pure");
106
279
  this.bddTestIsNowDone(src, results.fails);
107
280
  return results.fails;
@@ -114,6 +287,24 @@ export class PM_Main extends PM_WithProcesses {
114
287
  )
115
288
  );
116
289
 
290
+ // Create a minimal tests.json even on failure
291
+ const testsJsonPath = `${reportDest}/tests.json`;
292
+ if (!fs.existsSync(testsJsonPath)) {
293
+ fs.writeFileSync(
294
+ testsJsonPath,
295
+ JSON.stringify(
296
+ {
297
+ tests: [],
298
+ features: [],
299
+ givens: [],
300
+ fullPath: src,
301
+ },
302
+ null,
303
+ 2
304
+ )
305
+ );
306
+ }
307
+
117
308
  logs.exit.write(e2.stack);
118
309
  logs.exit.write(-1);
119
310
  this.bddTestIsNowDone(src, -1);
@@ -122,6 +313,24 @@ export class PM_Main extends PM_WithProcesses {
122
313
  });
123
314
  });
124
315
  } catch (e3) {
316
+ // Create a minimal tests.json even on uncaught errors
317
+ const testsJsonPath = `${reportDest}/tests.json`;
318
+ if (!fs.existsSync(testsJsonPath)) {
319
+ fs.writeFileSync(
320
+ testsJsonPath,
321
+ JSON.stringify(
322
+ {
323
+ tests: [],
324
+ features: [],
325
+ givens: [],
326
+ fullPath: src,
327
+ },
328
+ null,
329
+ 2
330
+ )
331
+ );
332
+ }
333
+
125
334
  logs.writeExitCode(-1, e3);
126
335
  console.log(
127
336
  ansiC.red(
@@ -137,6 +346,9 @@ export class PM_Main extends PM_WithProcesses {
137
346
  statusMessagePretty(-1, src, "pure");
138
347
  throw e3;
139
348
  } finally {
349
+ // Generate prompt files for Pure tests
350
+ await this.generatePromptFiles(reportDest, src);
351
+
140
352
  for (let i = 0; i <= portsToUse.length; i++) {
141
353
  if (portsToUse[i]) {
142
354
  this.ports[portsToUse[i]] = ""; // port is open again
@@ -157,211 +369,84 @@ export class PM_Main extends PM_WithProcesses {
157
369
  };
158
370
 
159
371
  launchNode = async (src: string, dest: string) => {
372
+ console.log(ansiC.green(ansiC.inverse(`node < ${src}`)));
373
+
160
374
  const processId = `node-${src}-${Date.now()}`;
161
375
  const command = `node test: ${src}`;
162
376
 
163
- // Create the promise
164
377
  const nodePromise = (async () => {
165
- this.bddTestIsRunning(src);
166
-
167
- const reportDest = `testeranto/reports/${this.name}/${src
168
- .split(".")
169
- .slice(0, -1)
170
- .join(".")}/node`;
171
-
172
- if (!fs.existsSync(reportDest)) {
173
- fs.mkdirSync(reportDest, { recursive: true });
174
- }
175
-
176
- let testResources = "";
177
-
178
- const testConfig = this.configs.tests.find((t) => {
179
- return t[0] === src;
180
- });
181
-
182
- if (!testConfig) {
183
- console.log(
184
- ansiC.inverse(
185
- `missing test config! Exiting ungracefully for '${src}'`
186
- )
187
- );
188
- process.exit(-1);
189
- }
190
-
191
- const testConfigResource = testConfig[2];
192
-
193
- const portsToUse: string[] = [];
194
-
195
- if (testConfigResource.ports === 0) {
196
- const t: ITTestResourceConfiguration = {
197
- name: src,
198
- ports: [],
199
- fs: reportDest,
200
- browserWSEndpoint: this.browser.wsEndpoint(),
201
- };
202
-
203
- testResources = JSON.stringify(t);
204
- } else if (testConfigResource.ports > 0) {
205
- const openPorts: [string, string][] = Object.entries(this.ports).filter(
206
- ([portnumber, portopen]) => portopen === ""
207
- );
208
-
209
- if (openPorts.length >= testConfigResource.ports) {
210
- for (let i = 0; i < testConfigResource.ports; i++) {
211
- portsToUse.push(openPorts[i][0]);
212
-
213
- this.ports[openPorts[i][0]] = src; // port is now claimed
214
- }
215
-
216
- testResources = JSON.stringify({
217
- scheduled: true,
218
- name: src,
219
- ports: portsToUse,
220
- fs: reportDest,
221
- browserWSEndpoint: this.browser.wsEndpoint(),
222
- });
223
- } else {
224
- console.log(
225
- ansiC.red(
226
- `node: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again run a port is available`
227
- )
228
- );
229
- this.queue.push(src);
230
- return [Math.random(), testResources];
231
- }
232
- } else {
233
- console.error("negative port makes no sense", src);
234
- process.exit(-1);
235
- }
236
-
237
- const builtfile = dest;
238
-
239
- let haltReturns = false;
240
-
241
- const ipcfile = "/tmp/tpipe_" + Math.random();
242
- const child = spawn("node", [builtfile, testResources, ipcfile], {
243
- stdio: ["pipe", "pipe", "pipe", "ipc"],
244
- });
378
+ try {
379
+ const { reportDest, testResources, portsToUse } =
380
+ await this.setupTestEnvironment(src, "node");
245
381
 
246
- let buffer: Buffer<ArrayBufferLike> = new Buffer("");
382
+ const builtfile = dest;
383
+ const ipcfile = "/tmp/tpipe_" + Math.random();
384
+ const logs = createLogStreams(reportDest, "node");
247
385
 
248
- const server = net.createServer((socket) => {
386
+ let buffer = Buffer.from("");
249
387
  const queue = new Queue<string[]>();
250
388
 
251
- socket.on("data", (data) => {
389
+ const onData = (data: Buffer) => {
252
390
  buffer = Buffer.concat([buffer, data]);
253
391
 
392
+ // Process complete JSON messages
254
393
  for (let b = 0; b < buffer.length + 1; b++) {
255
394
  const c = buffer.slice(0, b);
256
- let d;
257
395
  try {
258
- d = JSON.parse(c.toString());
259
-
396
+ const d = JSON.parse(c.toString());
260
397
  queue.enqueue(d);
261
- buffer = buffer.slice(b, buffer.length + 1);
398
+ buffer = buffer.slice(b);
262
399
  b = 0;
263
400
  } catch (e) {
264
- // b++;
401
+ // Continue processing
265
402
  }
266
403
  }
267
404
 
405
+ // Process messages
268
406
  while (queue.size() > 0) {
269
407
  const message = queue.dequeue();
270
-
271
408
  if (message) {
272
- // set up the "node" listeners
273
409
  this.mapping().forEach(async ([command, func]) => {
274
410
  if (message[0] === command) {
275
- const x = message.slice(1, -1);
276
- const r = await this[command](...x);
277
-
278
- if (!haltReturns) {
411
+ const args = message.slice(1, -1);
412
+ try {
413
+ const result = await (this as any)[command](...args);
279
414
  child.send(
280
415
  JSON.stringify({
281
- payload: r,
416
+ payload: result,
282
417
  key: message[message.length - 1],
283
418
  })
284
419
  );
420
+ } catch (error) {
421
+ console.error(`Error handling command ${command}:`, error);
285
422
  }
286
423
  }
287
424
  });
288
425
  }
289
426
  }
290
- });
291
- });
292
-
293
- const logs = createLogStreams(reportDest, "node");
294
-
295
- return new Promise<void>((resolve, reject) => {
296
- server.listen(ipcfile, () => {
297
- child.stdout?.on("data", (data) => {
298
- logs.stdout?.write(data);
299
- });
300
-
301
- child.stderr?.on("data", (data) => {
302
- logs.stderr?.write(data);
303
- });
304
-
305
- child.on("close", (code) => {
306
- const exitCode = code === null ? -1 : code;
307
- if (exitCode < 0) {
308
- logs.writeExitCode(
309
- exitCode,
310
- new Error("Process crashed or was terminated")
311
- );
312
- } else {
313
- logs.writeExitCode(exitCode);
314
- }
315
- logs.closeAll();
316
- server.close();
427
+ };
317
428
 
318
- if (exitCode === 255) {
319
- console.log(
320
- ansiColors.red(
321
- `node ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/stderr.log for more info`
322
- )
323
- );
324
- this.bddTestIsNowDone(src, -1);
325
- statusMessagePretty(-1, src, "node");
326
- reject(new Error(`Process exited with code ${exitCode}`));
327
- } else if (exitCode === 0) {
328
- this.bddTestIsNowDone(src, 0);
329
- statusMessagePretty(0, src, "node");
330
- resolve();
331
- } else {
332
- this.bddTestIsNowDone(src, exitCode);
333
- statusMessagePretty(exitCode, src, "node");
334
- reject(new Error(`Process exited with code ${exitCode}`));
335
- }
429
+ const server = await this.createIpcServer(onData, ipcfile);
430
+ const child = spawn("node", [builtfile, testResources, ipcfile], {
431
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
432
+ });
336
433
 
337
- haltReturns = true;
338
- });
434
+ try {
435
+ await this.handleChildProcess(child, logs, reportDest, src, "node");
339
436
 
340
- child.on("error", (e) => {
341
- console.log("error");
342
- haltReturns = true;
343
- console.log(
344
- ansiC.red(
345
- ansiC.inverse(
346
- `${src} errored with: ${e.name}. Check error logs for more info`
347
- )
348
- )
349
- );
350
- this.bddTestIsNowDone(src, -1);
351
- statusMessagePretty(-1, src, "node");
352
- reject(e);
353
- });
354
- });
355
- }).finally(() => {
356
- for (let i = 0; i <= portsToUse.length; i++) {
357
- if (portsToUse[i]) {
358
- this.ports[portsToUse[i]] = ""; //port is open again
359
- }
437
+ // Generate prompt files for Node tests
438
+ await this.generatePromptFiles(reportDest, src);
439
+ } finally {
440
+ server.close();
441
+ this.cleanupPorts(portsToUse);
360
442
  }
361
- });
443
+ } catch (error) {
444
+ if (error.message !== "No ports available") {
445
+ throw error;
446
+ }
447
+ }
362
448
  })();
363
449
 
364
- // Add to process manager
365
450
  this.addPromiseProcess(
366
451
  processId,
367
452
  nodePromise,
@@ -373,6 +458,8 @@ export class PM_Main extends PM_WithProcesses {
373
458
  };
374
459
 
375
460
  launchWeb = async (src: string, dest: string) => {
461
+ console.log(ansiC.green(ansiC.inverse(`web < ${src}`)));
462
+
376
463
  const processId = `web-${src}-${Date.now()}`;
377
464
  const command = `web test: ${src}`;
378
465
 
@@ -491,10 +578,31 @@ export class PM_Main extends PM_WithProcesses {
491
578
  )
492
579
  )
493
580
  );
581
+
582
+ // Create a minimal tests.json even on failure
583
+ const testsJsonPath = `${reportDest}/tests.json`;
584
+ if (!fs.existsSync(testsJsonPath)) {
585
+ fs.writeFileSync(
586
+ testsJsonPath,
587
+ JSON.stringify(
588
+ {
589
+ tests: [],
590
+ features: [],
591
+ givens: [],
592
+ fullPath: src,
593
+ },
594
+ null,
595
+ 2
596
+ )
597
+ );
598
+ }
599
+
494
600
  this.bddTestIsNowDone(src, -1);
495
601
  reject(e);
496
602
  })
497
- .finally(() => {
603
+ .finally(async () => {
604
+ // Generate prompt files for Web tests
605
+ await this.generatePromptFiles(reportDest, src);
498
606
  close();
499
607
  });
500
608
  })
@@ -516,138 +624,87 @@ export class PM_Main extends PM_WithProcesses {
516
624
  };
517
625
 
518
626
  launchPython = async (src: string, dest: string) => {
627
+ console.log(ansiC.green(ansiC.inverse(`python < ${src}`)));
628
+
519
629
  const processId = `python-${src}-${Date.now()}`;
520
630
  const command = `python test: ${src}`;
521
631
 
522
632
  const pythonPromise = (async () => {
523
- this.bddTestIsRunning(src);
524
-
525
- const reportDest = `testeranto/reports/${this.name}/${src
526
- .split(".")
527
- .slice(0, -1)
528
- .join(".")}/python`;
529
-
530
- if (!fs.existsSync(reportDest)) {
531
- fs.mkdirSync(reportDest, { recursive: true });
532
- }
533
-
534
- let testResources = "";
633
+ try {
634
+ const { reportDest, testResources, portsToUse } =
635
+ await this.setupTestEnvironment(src, "python");
535
636
 
536
- const testConfig = this.configs.tests.find((t) => t[0] === src);
537
- if (!testConfig) {
538
- console.log(
539
- ansiColors.inverse(
540
- `missing test config! Exiting ungracefully for '${src}'`
541
- )
542
- );
543
- process.exit(-1);
544
- }
637
+ const logs = createLogStreams(reportDest, "python");
545
638
 
546
- const testConfigResource = testConfig[2];
547
- const portsToUse: string[] = [];
639
+ // Determine Python command
640
+ const venvPython = `./venv/bin/python3`;
641
+ const pythonCommand = fs.existsSync(venvPython)
642
+ ? venvPython
643
+ : "python3";
548
644
 
549
- if (testConfigResource.ports === 0) {
550
- testResources = JSON.stringify({
551
- scheduled: true,
552
- name: src,
553
- ports: portsToUse,
554
- fs: reportDest,
555
- browserWSEndpoint: this.browser.wsEndpoint(),
645
+ const ipcfile = "/tmp/tpipe_python_" + Math.random();
646
+ const child = spawn(pythonCommand, [src, testResources, ipcfile], {
647
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
556
648
  });
557
- } else if (testConfigResource.ports > 0) {
558
- const openPorts = Object.entries(this.ports).filter(
559
- ([, status]) => status === ""
560
- );
561
649
 
562
- if (openPorts.length >= testConfigResource.ports) {
563
- for (let i = 0; i < testConfigResource.ports; i++) {
564
- portsToUse.push(openPorts[i][0]);
565
- this.ports[openPorts[i][0]] = src;
566
- }
567
-
568
- testResources = JSON.stringify({
569
- scheduled: true,
570
- name: src,
571
- ports: portsToUse,
572
- fs: reportDest,
573
- browserWSEndpoint: this.browser.wsEndpoint(),
574
- });
575
- } else {
576
- console.log(
577
- ansiColors.red(
578
- `python: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again when a port is available`
579
- )
580
- );
581
- this.queue.push(src);
582
- return;
583
- }
584
- } else {
585
- console.error("negative port makes no sense", src);
586
- process.exit(-1);
587
- }
650
+ // IPC server setup is similar to Node
651
+ let buffer = Buffer.from("");
652
+ const queue = new Queue<string[]>();
588
653
 
589
- const logs = createLogStreams(reportDest, "python");
654
+ const onData = (data: Buffer) => {
655
+ buffer = Buffer.concat([buffer, data]);
590
656
 
591
- // For Python, we'll just run the script directly and pass test resources as an argument
592
- // Python tests need to handle their own IPC if needed
593
- const child = spawn("python3", [src, testResources], {
594
- stdio: ["pipe", "pipe", "pipe"],
595
- });
657
+ for (let b = 0; b < buffer.length + 1; b++) {
658
+ const c = buffer.slice(0, b);
659
+ try {
660
+ const d = JSON.parse(c.toString());
661
+ queue.enqueue(d);
662
+ buffer = buffer.slice(b);
663
+ b = 0;
664
+ } catch (e) {
665
+ // Continue processing
666
+ }
667
+ }
596
668
 
597
- return new Promise<void>((resolve, reject) => {
598
- child.stdout?.on("data", (data) => {
599
- logs.stdout?.write(data);
600
- });
669
+ while (queue.size() > 0) {
670
+ const message = queue.dequeue();
671
+ if (message) {
672
+ this.mapping().forEach(async ([command, func]) => {
673
+ if (message[0] === command) {
674
+ const args = message.slice(1, -1);
675
+ try {
676
+ const result = await (this as any)[command](...args);
677
+ child.send(
678
+ JSON.stringify({
679
+ payload: result,
680
+ key: message[message.length - 1],
681
+ })
682
+ );
683
+ } catch (error) {
684
+ console.error(`Error handling command ${command}:`, error);
685
+ }
686
+ }
687
+ });
688
+ }
689
+ }
690
+ };
601
691
 
602
- child.stderr?.on("data", (data) => {
603
- logs.stderr?.write(data);
604
- });
692
+ const server = await this.createIpcServer(onData, ipcfile);
605
693
 
606
- child.on("close", (code) => {
607
- const exitCode = code === null ? -1 : code;
608
- if (exitCode < 0) {
609
- logs.writeExitCode(
610
- exitCode,
611
- new Error("Process crashed or was terminated")
612
- );
613
- } else {
614
- logs.writeExitCode(exitCode);
615
- }
616
- logs.closeAll();
617
-
618
- if (exitCode === 0) {
619
- this.bddTestIsNowDone(src, 0);
620
- statusMessagePretty(0, src, "python");
621
- resolve();
622
- } else {
623
- console.log(
624
- ansiColors.red(
625
- `python ! ${src} failed to execute. Check ${reportDest}/stderr.log for more info`
626
- )
627
- );
628
- this.bddTestIsNowDone(src, exitCode);
629
- statusMessagePretty(exitCode, src, "python");
630
- reject(new Error(`Process exited with code ${exitCode}`));
631
- }
632
- });
694
+ try {
695
+ await this.handleChildProcess(child, logs, reportDest, src, "python");
633
696
 
634
- child.on("error", (e) => {
635
- console.log(
636
- ansiColors.red(
637
- ansiColors.inverse(
638
- `python: ${src} errored with: ${e.name}. Check error logs for more info`
639
- )
640
- )
641
- );
642
- this.bddTestIsNowDone(src, -1);
643
- statusMessagePretty(-1, src, "python");
644
- reject(e);
645
- });
646
- }).finally(() => {
647
- portsToUse.forEach(port => {
648
- this.ports[port] = "";
649
- });
650
- });
697
+ // Generate prompt files for Python tests
698
+ await this.generatePromptFiles(reportDest, src);
699
+ } finally {
700
+ server.close();
701
+ this.cleanupPorts(portsToUse);
702
+ }
703
+ } catch (error) {
704
+ if (error.message !== "No ports available") {
705
+ throw error;
706
+ }
707
+ }
651
708
  })();
652
709
 
653
710
  this.addPromiseProcess(
@@ -661,180 +718,124 @@ export class PM_Main extends PM_WithProcesses {
661
718
  };
662
719
 
663
720
  launchGolang = async (src: string, dest: string) => {
721
+ console.log(ansiC.green(ansiC.inverse(`goland < ${src}`)));
722
+
664
723
  const processId = `golang-${src}-${Date.now()}`;
665
724
  const command = `golang test: ${src}`;
666
725
 
667
726
  const golangPromise = (async () => {
668
- this.bddTestIsRunning(src);
669
-
670
- const reportDest = `testeranto/reports/${this.name}/${src
671
- .split(".")
672
- .slice(0, -1)
673
- .join(".")}/golang`;
727
+ try {
728
+ const { reportDest, testResources, portsToUse } =
729
+ await this.setupTestEnvironment(src, "golang");
674
730
 
675
- if (!fs.existsSync(reportDest)) {
676
- fs.mkdirSync(reportDest, { recursive: true });
677
- }
731
+ const logs = createLogStreams(reportDest, "golang");
678
732
 
679
- let testResources = "";
733
+ // Create IPC file path
734
+ const ipcfile =
735
+ "/tmp/tpipe_golang_" + Math.random().toString(36).substring(2);
680
736
 
681
- const testConfig = this.configs.tests.find((t) => t[0] === src);
682
- if (!testConfig) {
683
- console.log(
684
- ansiColors.inverse(
685
- `golang: missing test config! Exiting ungracefully for '${src}'`
686
- )
687
- );
688
- process.exit(-1);
689
- }
690
-
691
- const testConfigResource = testConfig[2];
692
- const portsToUse: string[] = [];
737
+ let buffer = Buffer.from("");
738
+ const queue = new Queue<string[]>();
693
739
 
694
- if (testConfigResource.ports === 0) {
695
- testResources = JSON.stringify({
696
- scheduled: true,
697
- name: src,
698
- ports: portsToUse,
699
- fs: reportDest,
700
- browserWSEndpoint: this.browser.wsEndpoint(),
701
- });
702
- } else if (testConfigResource.ports > 0) {
703
- const openPorts = Object.entries(this.ports).filter(
704
- ([, status]) => status === ""
705
- );
740
+ const onData = (data: Buffer) => {
741
+ buffer = Buffer.concat([buffer, data]);
706
742
 
707
- if (openPorts.length >= testConfigResource.ports) {
708
- for (let i = 0; i < testConfigResource.ports; i++) {
709
- portsToUse.push(openPorts[i][0]);
710
- this.ports[openPorts[i][0]] = src;
743
+ // Process complete JSON messages
744
+ for (let b = 0; b < buffer.length + 1; b++) {
745
+ const c = buffer.slice(0, b);
746
+ try {
747
+ const d = JSON.parse(c.toString());
748
+ queue.enqueue(d);
749
+ buffer = buffer.slice(b);
750
+ b = 0;
751
+ } catch (e) {
752
+ // Continue processing
753
+ }
711
754
  }
712
755
 
713
- testResources = JSON.stringify({
714
- scheduled: true,
715
- name: src,
716
- ports: portsToUse,
717
- fs: reportDest,
718
- browserWSEndpoint: this.browser.wsEndpoint(),
719
- });
720
- } else {
721
- console.log(
722
- ansiColors.red(
723
- `golang: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again when a port is available`
724
- )
725
- );
726
- this.queue.push(src);
727
- return;
728
- }
729
- } else {
730
- console.error("negative port makes no sense", src);
731
- process.exit(-1);
732
- }
733
-
734
- // Compile the Go test first
735
- const buildDir = path.dirname(dest);
736
- const binaryName = path.basename(dest, '.go');
737
- const binaryPath = path.join(buildDir, binaryName);
738
-
739
- const logs = createLogStreams(reportDest, "golang");
756
+ // Process messages
757
+ while (queue.size() > 0) {
758
+ const message = queue.dequeue();
759
+ if (message) {
760
+ this.mapping().forEach(async ([command, func]) => {
761
+ if (message[0] === command) {
762
+ const args = message.slice(1, -1);
763
+ try {
764
+ const result = await (this as any)[command](...args);
765
+ // Send response back through IPC
766
+ // This would need to be implemented based on your IPC protocol
767
+ } catch (error) {
768
+ console.error(`Error handling command ${command}:`, error);
769
+ }
770
+ }
771
+ });
772
+ }
773
+ }
774
+ };
740
775
 
741
- // First, compile the Go program
742
- const compileProcess = spawn("go", ["build", "-o", binaryPath, dest]);
743
-
744
- return new Promise<void>((resolve, reject) => {
745
- compileProcess.stdout?.on("data", (data) => {
746
- logs.stdout?.write(data);
747
- });
776
+ // Create IPC server like in launchNode
777
+ const server = await this.createIpcServer(onData, ipcfile);
748
778
 
749
- compileProcess.stderr?.on("data", (data) => {
750
- logs.stderr?.write(data);
751
- });
779
+ // For Go tests, we need to run from the directory containing the go.mod file
780
+ // Find the nearest go.mod file by walking up the directory tree
781
+ let currentDir = path.dirname(src);
782
+ let goModDir = null;
752
783
 
753
- compileProcess.on("close", (compileCode) => {
754
- if (compileCode !== 0) {
755
- console.log(
756
- ansiColors.red(
757
- `golang ! ${src} failed to compile. Check ${reportDest}/stderr.log for more info`
758
- )
759
- );
760
- this.bddTestIsNowDone(src, compileCode || -1);
761
- statusMessagePretty(compileCode || -1, src, "golang");
762
- reject(new Error(`Compilation failed with code ${compileCode}`));
763
- return;
784
+ while (currentDir !== path.parse(currentDir).root) {
785
+ if (fs.existsSync(path.join(currentDir, "go.mod"))) {
786
+ goModDir = currentDir;
787
+ break;
764
788
  }
789
+ currentDir = path.dirname(currentDir);
790
+ }
765
791
 
766
- // Now run the compiled binary
767
- const child = spawn(binaryPath, [testResources], {
768
- stdio: ["pipe", "pipe", "pipe"],
769
- });
792
+ if (!goModDir) {
793
+ console.error(`Could not find go.mod file for test ${src}`);
794
+ // Try running from the test file's directory as a fallback
795
+ goModDir = path.dirname(src);
796
+ console.error(`Falling back to: ${goModDir}`);
797
+ }
770
798
 
771
- child.stdout?.on("data", (data) => {
772
- logs.stdout?.write(data);
773
- });
799
+ // Get the relative path to the test file from the go.mod directory
800
+ const relativeTestPath = path.relative(goModDir, src);
774
801
 
775
- child.stderr?.on("data", (data) => {
776
- logs.stderr?.write(data);
777
- });
802
+ // Run go test from the directory containing go.mod
803
+ const child = spawn(
804
+ "go",
805
+ ["test", "-v", "-json", "./" + path.dirname(relativeTestPath)],
806
+ {
807
+ stdio: ["pipe", "pipe", "pipe"],
808
+ env: {
809
+ ...process.env,
810
+ TEST_RESOURCES: testResources,
811
+ IPC_FILE: ipcfile,
812
+ GO111MODULE: "on",
813
+ },
814
+ cwd: goModDir,
815
+ }
816
+ );
778
817
 
779
- child.on("close", (code) => {
780
- const exitCode = code === null ? -1 : code;
781
- if (exitCode < 0) {
782
- logs.writeExitCode(
783
- exitCode,
784
- new Error("Process crashed or was terminated")
785
- );
786
- } else {
787
- logs.writeExitCode(exitCode);
788
- }
789
- logs.closeAll();
818
+ await this.handleChildProcess(child, logs, reportDest, src, "golang");
790
819
 
791
- if (exitCode === 0) {
792
- this.bddTestIsNowDone(src, 0);
793
- statusMessagePretty(0, src, "golang");
794
- resolve();
795
- } else {
796
- console.log(
797
- ansiColors.red(
798
- `golang ! ${src} failed to execute. Check ${reportDest}/stderr.log for more info`
799
- )
800
- );
801
- this.bddTestIsNowDone(src, exitCode);
802
- statusMessagePretty(exitCode, src, "golang");
803
- reject(new Error(`Process exited with code ${exitCode}`));
804
- }
805
- });
820
+ // Generate prompt files for Golang tests
821
+ await this.generatePromptFiles(reportDest, src);
806
822
 
807
- child.on("error", (e) => {
808
- console.log(
809
- ansiColors.red(
810
- ansiColors.inverse(
811
- `golang: ${src} errored with: ${e.name}. Check error logs for more info`
812
- )
813
- )
814
- );
815
- this.bddTestIsNowDone(src, -1);
816
- statusMessagePretty(-1, src, "golang");
817
- reject(e);
818
- });
819
- });
823
+ // Ensure tests.json exists by parsing the go test JSON output
824
+ await this.processGoTestOutput(reportDest, src);
820
825
 
821
- compileProcess.on("error", (e) => {
822
- console.log(
823
- ansiColors.red(
824
- ansiColors.inverse(
825
- `golang: ${src} compilation errored with: ${e.name}. Check error logs for more info`
826
- )
827
- )
828
- );
829
- this.bddTestIsNowDone(src, -1);
830
- statusMessagePretty(-1, src, "golang");
831
- reject(e);
832
- });
833
- }).finally(() => {
834
- portsToUse.forEach(port => {
835
- this.ports[port] = "";
836
- });
837
- });
826
+ // Clean up
827
+ server.close();
828
+ try {
829
+ fs.unlinkSync(ipcfile);
830
+ } catch (e) {
831
+ // Ignore errors during cleanup
832
+ }
833
+ this.cleanupPorts(portsToUse);
834
+ } catch (error) {
835
+ if (error.message !== "No ports available") {
836
+ throw error;
837
+ }
838
+ }
838
839
  })();
839
840
 
840
841
  this.addPromiseProcess(
@@ -846,4 +847,135 @@ export class PM_Main extends PM_WithProcesses {
846
847
  "golang"
847
848
  );
848
849
  };
850
+
851
+ private async processGoTestOutput(
852
+ reportDest: string,
853
+ src: string
854
+ ): Promise<void> {
855
+ const testsJsonPath = `${reportDest}/tests.json`;
856
+
857
+ // Parse the stdout.log to extract test results from JSON output
858
+ const stdoutPath = `${reportDest}/stdout.log`;
859
+ if (fs.existsSync(stdoutPath)) {
860
+ try {
861
+ const stdoutContent = fs.readFileSync(stdoutPath, "utf-8");
862
+ const lines = stdoutContent.split("\n").filter((line) => line.trim());
863
+
864
+ const testResults = {
865
+ tests: [],
866
+ features: [],
867
+ givens: [],
868
+ fullPath: path.resolve(process.cwd(), src),
869
+ };
870
+
871
+ // Parse each JSON line from go test output
872
+ for (const line of lines) {
873
+ try {
874
+ const event = JSON.parse(line);
875
+ if (event.Action === "pass" || event.Action === "fail") {
876
+ testResults.tests.push({
877
+ name: event.Test || event.Package,
878
+ status: event.Action === "pass" ? "passed" : "failed",
879
+ time: event.Elapsed ? `${event.Elapsed}s` : "0s",
880
+ });
881
+ }
882
+ } catch (e) {
883
+ // Skip non-JSON lines
884
+ }
885
+ }
886
+
887
+ fs.writeFileSync(testsJsonPath, JSON.stringify(testResults, null, 2));
888
+ return;
889
+ } catch (error) {
890
+ console.error("Error processing go test output:", error);
891
+ }
892
+ }
893
+
894
+ // Fallback: create a basic tests.json if processing fails
895
+ const basicTestResult = {
896
+ tests: [],
897
+ features: [],
898
+ givens: [],
899
+ fullPath: path.resolve(process.cwd(), src),
900
+ };
901
+ fs.writeFileSync(testsJsonPath, JSON.stringify(basicTestResult, null, 2));
902
+ }
903
+
904
+ private async generatePromptFiles(
905
+ reportDest: string,
906
+ src: string
907
+ ): Promise<void> {
908
+ try {
909
+ // Ensure the report directory exists
910
+ if (!fs.existsSync(reportDest)) {
911
+ fs.mkdirSync(reportDest, { recursive: true });
912
+ }
913
+
914
+ // Create message.txt
915
+ const messagePath = `${reportDest}/message.txt`;
916
+ const messageContent = `There are 3 types of test reports.
917
+ 1) bdd (highest priority)
918
+ 2) type checker
919
+ 3) static analysis (lowest priority)
920
+
921
+ "tests.json" is the detailed result of the bdd tests.
922
+ if these files do not exist, then something has gone badly wrong and needs to be addressed.
923
+
924
+ "type_errors.txt" is the result of the type checker.
925
+ if this file does not exist, then type check passed without errors;
926
+
927
+ "lint_errors.txt" is the result of the static analysis.
928
+ if this file does not exist, then static analysis passed without errors;
929
+
930
+ BDD failures are the highest priority. Focus on passing BDD tests before addressing other concerns.
931
+ Do not add error throwing/catching to the tests themselves.`;
932
+
933
+ fs.writeFileSync(messagePath, messageContent);
934
+
935
+ // Create prompt.txt
936
+ const promptPath = `${reportDest}/prompt.txt`;
937
+
938
+ const promptContent = `/read node_modules/testeranto/docs/index.md
939
+ /read node_modules/testeranto/docs/style.md
940
+ /read node_modules/testeranto/docs/testing.ai.txt
941
+ /read node_modules/testeranto/src/CoreTypes.ts
942
+
943
+ /read ${reportDest}/tests.json
944
+ /read ${reportDest}/type_errors.txt
945
+ /read ${reportDest}/lint_errors.txt
946
+
947
+ /read ${reportDest}/stdout.log
948
+ /read ${reportDest}/stderr.log
949
+ /read ${reportDest}/exit.log
950
+ /read ${reportDest}/message.txt`;
951
+
952
+ fs.writeFileSync(promptPath, promptContent);
953
+ } catch (error) {
954
+ console.error(`Failed to generate prompt files for ${src}:`, error);
955
+ }
956
+ }
957
+
958
+ private getGolangSourceFiles(src: string): string[] {
959
+ // Get all .go files in the same directory as the test
960
+ const testDir = path.dirname(src);
961
+ const files: string[] = [];
962
+
963
+ try {
964
+ const dirContents = fs.readdirSync(testDir);
965
+ dirContents.forEach((file) => {
966
+ if (file.endsWith(".go")) {
967
+ files.push(path.join(testDir, file));
968
+ }
969
+ });
970
+ } catch (error) {
971
+ console.error(`Error reading directory ${testDir}:`, error);
972
+ }
973
+
974
+ // Always include the main test file
975
+ if (!files.includes(src)) {
976
+ files.push(src);
977
+ }
978
+
979
+ return files;
980
+ }
849
981
  }