testeranto 0.200.1 → 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 (373) hide show
  1. package/README.md +26 -1
  2. package/design-editor/DesignEditor.tsx +40 -241
  3. package/dist/common/design-editor/DesignEditor.js +33 -198
  4. package/dist/common/src/App.js +158 -16
  5. package/dist/common/src/PM/PM_WithBuild.js +135 -0
  6. package/dist/common/src/PM/PM_WithEslintAndTsc.js +79 -67
  7. package/dist/common/src/PM/PM_WithGit.js +517 -0
  8. package/dist/common/src/PM/PM_WithProcesses.js +519 -0
  9. package/dist/common/src/PM/PM_WithWebSocket.js +535 -0
  10. package/dist/common/src/PM/base.js +62 -0
  11. package/dist/common/src/PM/main.js +533 -1676
  12. package/dist/common/src/PM/metafileOutputs.js +78 -0
  13. package/dist/common/src/PM/node.js +0 -6
  14. package/dist/common/src/PM/pure.js +0 -8
  15. package/dist/common/src/PM/types.js +1 -0
  16. package/dist/common/src/PM/utils.js +210 -0
  17. package/dist/common/src/PM/web.js +0 -6
  18. package/dist/common/src/ReportServer.js +0 -10
  19. package/dist/common/src/ReportServerLib.js +0 -140
  20. package/dist/common/src/components/pure/AppFrame.js +68 -56
  21. package/dist/common/src/components/pure/ArtifactTree.js +80 -0
  22. package/dist/common/src/components/pure/BuildLogViewer.js +106 -0
  23. package/dist/common/src/components/pure/DebugEnv.js +30 -0
  24. package/dist/common/src/components/pure/FileTree.js +34 -0
  25. package/dist/common/src/components/pure/FileTreeItem.js +29 -0
  26. package/dist/common/src/components/pure/GitHubLoginButton.js +18 -0
  27. package/dist/common/src/components/pure/GitIntegrationView.js +342 -0
  28. package/dist/common/src/components/pure/ProcessManager.js +1 -0
  29. package/dist/common/src/components/pure/ProcessManagerView.js +73 -74
  30. package/dist/common/src/components/pure/ProjectPageView.js +4 -117
  31. package/dist/common/src/components/pure/Settings.js +121 -0
  32. package/dist/common/src/components/pure/Settings.test.js +34 -0
  33. package/dist/common/src/components/pure/SignIn.js +22 -0
  34. package/dist/common/src/components/pure/SingleProcessView.js +166 -213
  35. package/dist/common/src/components/pure/TestPageView.js +113 -368
  36. package/dist/common/src/components/pure/TestPageView_utils.js +117 -0
  37. package/dist/common/src/components/pure/TestTable.js +33 -0
  38. package/dist/common/src/components/pure/ToastNotification.js +14 -0
  39. package/dist/common/src/components/pure/UserProfile.js +27 -0
  40. package/dist/common/src/components/stateful/AuthCallbackPage.js +51 -0
  41. package/dist/common/src/components/stateful/FeaturesReporter.js +2 -1
  42. package/dist/common/src/components/stateful/FileTree.js +58 -39
  43. package/dist/common/src/components/stateful/GitIntegrationPage.js +12 -0
  44. package/dist/common/src/components/stateful/ProcessManagerPage.js +13 -15
  45. package/dist/common/src/components/stateful/ProjectPage.js +6 -5
  46. package/dist/common/src/components/stateful/ProjectsPage.js +17 -19
  47. package/dist/common/src/components/stateful/SingleProcessPage.js +16 -26
  48. package/dist/common/src/components/stateful/TestPage.js +7 -5
  49. package/dist/common/src/hooks/useGitMode.js +21 -0
  50. package/dist/common/src/lib/BaseSuite.test/mock.js +15 -8
  51. package/dist/common/src/lib/BaseSuite.test/test.js +56 -80
  52. package/dist/common/src/lib/Tiposkripto.js +24 -0
  53. package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  54. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  55. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  56. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  57. package/dist/common/src/lib/pmProxy.test/specification.js +167 -52
  58. package/dist/common/src/services/FileService.js +505 -0
  59. package/dist/common/src/services/GitHubAuthService.js +184 -0
  60. package/dist/common/src/testeranto.js +38 -97
  61. package/dist/common/src/utils/api.js +12 -8
  62. package/dist/common/src/utils/gitTest.js +27 -0
  63. package/dist/common/src/utils.js +23 -13
  64. package/dist/common/testeranto.config.js +21 -17
  65. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  66. package/dist/module/design-editor/DesignEditor.js +33 -199
  67. package/dist/module/src/App.js +121 -15
  68. package/dist/module/src/PM/PM_WithBuild.js +128 -0
  69. package/dist/module/src/PM/PM_WithEslintAndTsc.js +79 -67
  70. package/dist/module/src/PM/PM_WithGit.js +477 -0
  71. package/dist/module/src/PM/PM_WithProcesses.js +479 -0
  72. package/dist/module/src/PM/PM_WithWebSocket.js +528 -0
  73. package/dist/module/src/PM/base.js +62 -0
  74. package/dist/module/src/PM/main.js +533 -1676
  75. package/dist/module/src/PM/metafileOutputs.js +78 -0
  76. package/dist/module/src/PM/node.js +0 -6
  77. package/dist/module/src/PM/pure.js +0 -8
  78. package/dist/module/src/PM/types.js +1 -1
  79. package/dist/module/src/PM/utils.js +196 -0
  80. package/dist/module/src/PM/web.js +0 -6
  81. package/dist/module/src/ReportServer.js +1 -9
  82. package/dist/module/src/ReportServerLib.js +1 -134
  83. package/dist/module/src/components/pure/AppFrame.js +66 -24
  84. package/dist/module/src/components/pure/ArtifactTree.js +80 -0
  85. package/dist/module/src/components/pure/BuildLogViewer.js +99 -0
  86. package/dist/module/src/components/pure/DebugEnv.js +23 -0
  87. package/dist/module/src/components/pure/FileTree.js +27 -0
  88. package/dist/module/src/components/pure/FileTreeItem.js +22 -0
  89. package/dist/module/src/components/pure/GitHubLoginButton.js +11 -0
  90. package/dist/module/src/components/pure/GitIntegrationView.js +305 -0
  91. package/dist/module/src/components/pure/ProcessManager.js +1 -0
  92. package/dist/module/src/components/pure/ProcessManagerView.js +74 -75
  93. package/dist/module/src/components/pure/ProjectPageView.js +5 -118
  94. package/dist/module/src/components/pure/Settings.js +84 -0
  95. package/dist/module/src/components/pure/Settings.test.js +29 -0
  96. package/dist/module/src/components/pure/SignIn.js +15 -0
  97. package/dist/module/src/components/pure/SingleProcessView.js +130 -214
  98. package/dist/module/src/components/pure/TestPageView.js +97 -352
  99. package/dist/module/src/components/pure/TestPageView_utils.js +109 -0
  100. package/dist/module/src/components/pure/TestTable.js +26 -0
  101. package/dist/module/src/components/pure/ToastNotification.js +7 -0
  102. package/dist/module/src/components/pure/UserProfile.js +20 -0
  103. package/dist/module/src/components/stateful/AuthCallbackPage.js +14 -0
  104. package/dist/module/src/components/stateful/FeaturesReporter.js +2 -1
  105. package/dist/module/src/components/stateful/FileTree.js +59 -33
  106. package/dist/module/src/components/stateful/GitIntegrationPage.js +5 -0
  107. package/dist/module/src/components/stateful/ProcessManagerPage.js +13 -15
  108. package/dist/module/src/components/stateful/ProjectPage.js +6 -5
  109. package/dist/module/src/components/stateful/ProjectsPage.js +16 -18
  110. package/dist/module/src/components/stateful/SingleProcessPage.js +16 -26
  111. package/dist/module/src/components/stateful/TestPage.js +8 -6
  112. package/dist/module/src/hooks/useGitMode.js +17 -0
  113. package/dist/module/src/lib/BaseSuite.test/mock.js +15 -8
  114. package/dist/module/src/lib/BaseSuite.test/test.js +56 -80
  115. package/dist/module/src/lib/Tiposkripto.js +24 -0
  116. package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  117. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  118. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  119. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  120. package/dist/module/src/lib/pmProxy.test/specification.js +167 -52
  121. package/dist/module/src/services/FileService.js +468 -0
  122. package/dist/module/src/services/GitHubAuthService.js +180 -0
  123. package/dist/module/src/testeranto.js +38 -97
  124. package/dist/module/src/utils/api.js +10 -7
  125. package/dist/module/src/utils/gitTest.js +23 -0
  126. package/dist/module/src/utils.js +21 -12
  127. package/dist/module/testeranto.config.js +21 -17
  128. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  129. package/dist/prebuild/App.css +94 -121
  130. package/dist/prebuild/App.js +44601 -11225
  131. package/dist/prebuild/testeranto.mjs +3113 -2256
  132. package/dist/types/design-editor/DesignEditor.d.ts +1 -18
  133. package/dist/types/src/App.d.ts +18 -0
  134. package/dist/types/src/PM/PM_WithBuild.d.ts +13 -0
  135. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -4
  136. package/dist/types/src/PM/PM_WithGit.d.ts +27 -0
  137. package/dist/types/src/PM/PM_WithProcesses.d.ts +29 -0
  138. package/dist/types/src/PM/PM_WithWebSocket.d.ts +108 -0
  139. package/dist/types/src/PM/base.d.ts +1 -1
  140. package/dist/types/src/PM/index.d.ts +0 -2
  141. package/dist/types/src/PM/main.d.ts +6 -77
  142. package/dist/types/src/PM/metafileOutputs.d.ts +0 -0
  143. package/dist/types/src/PM/node.d.ts +0 -2
  144. package/dist/types/src/PM/pure.d.ts +0 -2
  145. package/dist/types/src/PM/types.d.ts +118 -0
  146. package/dist/types/src/PM/utils.d.ts +35 -0
  147. package/dist/types/src/PM/web.d.ts +0 -2
  148. package/dist/types/src/Pure.d.ts +6 -1
  149. package/dist/types/src/ReportServer.d.ts +0 -1
  150. package/dist/types/src/ReportServerLib.d.ts +0 -1
  151. package/dist/types/src/Types.d.ts +1 -0
  152. package/dist/types/src/components/pure/ArtifactTree.d.ts +0 -0
  153. package/dist/types/src/components/pure/BuildLogViewer.d.ts +7 -0
  154. package/dist/types/src/components/pure/DebugEnv.d.ts +2 -0
  155. package/dist/types/src/components/pure/FileTree.d.ts +6 -0
  156. package/dist/types/src/components/pure/FileTreeItem.d.ts +8 -0
  157. package/dist/types/src/components/pure/GitHubLoginButton.d.ts +8 -0
  158. package/dist/types/src/components/pure/GitIntegrationView.d.ts +1 -0
  159. package/dist/types/src/components/pure/Settings.d.ts +1 -0
  160. package/dist/types/src/components/pure/Settings.test.d.ts +1 -0
  161. package/dist/types/src/components/pure/SignIn.d.ts +1 -0
  162. package/dist/types/src/components/pure/SingleProcessView.d.ts +10 -0
  163. package/dist/types/src/components/pure/TestPageView.d.ts +2 -1
  164. package/dist/types/src/components/pure/TestPageView_utils.d.ts +23 -0
  165. package/dist/types/src/components/pure/TestTable.d.ts +16 -0
  166. package/dist/types/src/components/pure/ToastNotification.d.ts +6 -0
  167. package/dist/types/src/components/pure/UserProfile.d.ts +2 -0
  168. package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +2 -0
  169. package/dist/types/src/components/stateful/FileTree.d.ts +0 -8
  170. package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +1 -0
  171. package/dist/types/src/hooks/useGitMode.d.ts +7 -0
  172. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +2 -2
  173. package/dist/types/src/lib/BaseSuite.test/test.d.ts +4 -3
  174. package/dist/types/src/lib/Tiposkripto.d.ts +2 -0
  175. package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +3 -0
  176. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +5 -0
  177. package/dist/types/src/lib/index.d.ts +6 -0
  178. package/dist/types/src/services/FileService.d.ts +34 -0
  179. package/dist/types/src/services/GitHubAuthService.d.ts +32 -0
  180. package/dist/types/src/utils/api.d.ts +1 -0
  181. package/dist/types/src/utils/gitTest.d.ts +11 -0
  182. package/dist/types/src/utils.d.ts +3 -3
  183. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  184. package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
  185. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +187 -0
  186. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +163 -0
  187. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +85 -0
  188. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +21 -0
  189. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +21 -0
  190. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +554 -0
  191. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +33 -0
  192. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +72 -0
  193. package/example/vendor/modules.txt +5 -0
  194. package/git-integration-plan.md +395 -0
  195. package/package.json +26 -14
  196. package/src/App.tsx +169 -18
  197. package/src/PM/PM_WithBuild.ts +171 -0
  198. package/src/PM/PM_WithEslintAndTsc.ts +109 -86
  199. package/src/PM/PM_WithGit.ts +585 -0
  200. package/src/PM/PM_WithProcesses.ts +639 -0
  201. package/src/PM/PM_WithWebSocket.ts +631 -0
  202. package/src/PM/base.ts +63 -1
  203. package/src/PM/index.ts +8 -5
  204. package/src/PM/main.ts +672 -2050
  205. package/src/PM/metafileOutputs.ts +90 -0
  206. package/src/PM/node.ts +18 -18
  207. package/src/PM/pure.ts +5 -13
  208. package/src/PM/types.ts +145 -0
  209. package/src/PM/utils.ts +256 -0
  210. package/src/PM/web.ts +8 -8
  211. package/src/README.md +122 -0
  212. package/src/ReportServer.ts +0 -12
  213. package/src/ReportServerLib.ts +0 -147
  214. package/src/Types.ts +1 -0
  215. package/src/app.scss +14 -164
  216. package/src/components/pure/AppFrame.tsx +237 -71
  217. package/src/components/pure/ArtifactTree.tsx +82 -0
  218. package/src/components/pure/BuildLogViewer.tsx +168 -0
  219. package/src/components/pure/DebugEnv.tsx +30 -0
  220. package/src/components/pure/FileTree.tsx +58 -0
  221. package/src/components/pure/FileTreeItem.tsx +49 -0
  222. package/src/components/pure/GitHubLoginButton.tsx +31 -0
  223. package/src/components/pure/GitIntegrationView.tsx +443 -0
  224. package/src/components/pure/ProcessManager.tsx +6 -5
  225. package/src/components/pure/ProcessManagerView.tsx +162 -166
  226. package/src/components/pure/ProjectPageView.tsx +6 -224
  227. package/src/components/pure/Settings.test.tsx +34 -0
  228. package/src/components/pure/Settings.tsx +163 -0
  229. package/src/components/pure/SignIn.tsx +33 -0
  230. package/src/components/pure/SingleProcessView.tsx +231 -235
  231. package/src/components/pure/TestPageView.test/specification.ts +1 -0
  232. package/src/components/pure/TestPageView.tsx +317 -826
  233. package/src/components/pure/TestPageView_utils.tsx +285 -0
  234. package/src/components/pure/TestTable.tsx +88 -0
  235. package/src/components/pure/ToastNotification.tsx +19 -0
  236. package/src/components/pure/UserProfile.tsx +44 -0
  237. package/src/components/stateful/AuthCallbackPage.tsx +21 -0
  238. package/src/components/stateful/FeaturesReporter.tsx +3 -1
  239. package/src/components/stateful/FileTree.tsx +58 -58
  240. package/src/components/stateful/GitIntegrationPage.tsx +8 -0
  241. package/src/components/stateful/ProcessManagerPage.tsx +13 -17
  242. package/src/components/stateful/ProjectPage.tsx +6 -5
  243. package/src/components/stateful/ProjectsPage.tsx +17 -19
  244. package/src/components/stateful/SVGEditor/CircleForm.tsx +68 -0
  245. package/src/components/stateful/SVGEditor/GroupForm.tsx +56 -0
  246. package/src/components/stateful/SVGEditor/RectForm.tsx +74 -0
  247. package/src/components/stateful/SVGEditor/SVGAttributeField.tsx +29 -0
  248. package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +73 -0
  249. package/src/components/stateful/SVGEditor/SVGEditorControls.tsx +45 -0
  250. package/src/components/stateful/SVGEditor/SVGElementForm.tsx +45 -0
  251. package/src/components/stateful/SVGEditor/SVGPreview.tsx +225 -0
  252. package/src/components/stateful/SVGEditor/SVGTextEditor.tsx +166 -0
  253. package/src/components/stateful/SVGEditor/SVGTree.tsx +159 -0
  254. package/src/components/stateful/SVGEditor/SVGTypes.ts +36 -0
  255. package/src/components/stateful/SVGEditor/svg.xsd.xml +3038 -0
  256. package/src/components/stateful/SVGEditorPage.tsx +503 -0
  257. package/src/components/stateful/SingleProcessPage.tsx +18 -31
  258. package/src/components/stateful/TestPage.tsx +25 -22
  259. package/src/golingvu/golingvu.go +38 -2
  260. package/src/hooks/useGitMode.ts +20 -0
  261. package/src/lib/BaseSuite.test/mock.ts +16 -10
  262. package/src/lib/BaseSuite.test/test.ts +144 -103
  263. package/src/lib/Tiposkripto.test/MockTiposkripto.ts +178 -14
  264. package/src/lib/Tiposkripto.test/Tiposkripto.adapter.ts +9 -14
  265. package/src/lib/Tiposkripto.test/Tiposkripto.implementation.ts +78 -38
  266. package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +51 -9
  267. package/src/lib/Tiposkripto.test/Tiposkripto.types.ts +5 -0
  268. package/src/lib/Tiposkripto.ts +27 -0
  269. package/src/lib/index.ts +7 -0
  270. package/src/lib/pmProxy.test/specification.ts +168 -166
  271. package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
  272. package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
  273. package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
  274. package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
  275. package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
  276. package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
  277. package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
  278. package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
  279. package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
  280. package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
  281. package/src/services/FileService.ts +542 -0
  282. package/src/services/GitHubAuthService.ts +240 -0
  283. package/src/testeranto.ts +62 -140
  284. package/src/utils/api.ts +15 -13
  285. package/src/utils/gitTest.ts +29 -0
  286. package/src/utils.ts +21 -12
  287. package/testeranto/App.css +94 -121
  288. package/testeranto/App.js +44601 -11225
  289. package/testeranto/bundles/golang/core/Calculator.golingvu.go +53 -0
  290. package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +53 -0
  291. package/testeranto/bundles/node/core/chunk-RIM6RECA.mjs +1170 -0
  292. package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +4321 -0
  293. package/testeranto/bundles/node/core/example/Calculator.test.mjs +503 -0
  294. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +94 -1231
  295. package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +574 -0
  296. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +482 -0
  297. package/testeranto/bundles/pure/core/chunk-XYOCRDEQ.mjs +1080 -0
  298. package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
  299. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +93 -1146
  300. package/testeranto/bundles/python/core/Calculator.pitono.test.py +24 -0
  301. package/testeranto/bundles/python/core/test_example.py +24 -0
  302. package/testeranto/bundles/web/core/MPLUSRounded1c-Black-O75GP5JI.ttf +0 -0
  303. package/testeranto/bundles/web/core/MPLUSRounded1c-Bold-R524Q5BH.ttf +0 -0
  304. package/testeranto/bundles/web/core/MPLUSRounded1c-ExtraBold-C6GRMYVT.ttf +0 -0
  305. package/testeranto/bundles/web/core/MPLUSRounded1c-Light-WKN65Y2C.ttf +0 -0
  306. package/testeranto/bundles/web/core/MPLUSRounded1c-Medium-ZC4DWL7C.ttf +0 -0
  307. package/testeranto/bundles/web/core/MPLUSRounded1c-Regular-DT6EKZ3S.ttf +0 -0
  308. package/testeranto/bundles/web/core/MPLUSRounded1c-Thin-YWDNVG6M.ttf +0 -0
  309. package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +2297 -0
  310. package/testeranto/bundles/web/core/chunk-JMDLMADH.mjs +27996 -0
  311. package/testeranto/bundles/web/core/chunk-LQMU5NCG.mjs +3082 -0
  312. package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +6874 -0
  313. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +164 -0
  314. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +11697 -0
  315. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +336 -0
  316. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +11697 -0
  317. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +517 -0
  318. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +107 -1134
  319. package/testeranto/metafiles/golang/core.json +3 -3
  320. package/testeranto/metafiles/node/core.json +474 -31
  321. package/testeranto/metafiles/pure/core.json +144 -28
  322. package/testeranto/metafiles/python/core.json +11 -0
  323. package/testeranto/metafiles/web/core.json +15829 -45
  324. package/testeranto/reports/core/config.json +40 -0
  325. package/testeranto/reports/core/src/Pure.test/pure/exit.log +0 -0
  326. package/testeranto/reports/core/src/Pure.test/pure/lint_errors.txt +0 -0
  327. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +14 -0
  328. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +73 -0
  329. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log +0 -0
  330. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +91 -0
  331. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +1 -0
  332. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +2 -0
  333. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +68 -0
  334. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
  335. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
  336. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +30 -0
  337. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +1 -0
  338. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +2 -0
  339. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +88 -0
  340. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
  341. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -6
  342. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -11
  343. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +1 -0
  344. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +1 -1
  345. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +35 -38
  346. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -2
  347. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -10
  348. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +40 -38
  349. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +1 -1
  350. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -0
  351. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/lint_errors.txt +0 -0
  352. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +17 -0
  353. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +17 -0
  354. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +55 -0
  355. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +191 -0
  356. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +71 -0
  357. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
  358. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
  359. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
  360. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +17 -0
  361. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +20 -0
  362. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +4 -0
  363. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +49 -0
  364. package/testeranto/reports/core/summary.json +34 -6
  365. package/testeranto.config.ts +26 -20
  366. package/tsc.log +141 -91
  367. package/tsconfig.json +6 -2
  368. package/dist/types/design-editor/server.d.ts +0 -1
  369. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +0 -15
  370. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -2
  371. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -25
  372. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -56
  373. /package/testeranto/reports/core/src/{lib/BaseSuite.test/web.test/web → Pure.test/pure}/message.txt +0 -0
@@ -0,0 +1,639 @@
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 fs, { watch } from "fs";
7
+ import path from "path";
8
+ import puppeteer, { executablePath } from "puppeteer-core";
9
+ import ansiC from "ansi-colors";
10
+
11
+ import { getRunnables } from "../utils";
12
+ import { IBuiltConfig, IRunTime } from "../Types.js";
13
+
14
+ import {
15
+ fileHash,
16
+ createLogStreams,
17
+ isValidUrl,
18
+ pollForFile,
19
+ writeFileAndCreateDir,
20
+ puppeteerConfigs,
21
+ filesHash,
22
+ IOutputs,
23
+ } from "./utils.js";
24
+
25
+ import { PM_WithGit } from "./PM_WithGit.js";
26
+
27
+ const fileHashes = {};
28
+ const changes: Record<string, string> = {};
29
+
30
+ export abstract class PM_WithProcesses extends PM_WithGit {
31
+ webMetafileWatcher: fs.FSWatcher;
32
+ nodeMetafileWatcher: fs.FSWatcher;
33
+ importMetafileWatcher: fs.FSWatcher;
34
+ pitonoMetafileWatcher: fs.FSWatcher;
35
+
36
+ ports: Record<number, string>;
37
+ queue: string[];
38
+ logStreams: Record<string, ReturnType<typeof createLogStreams>> = {};
39
+ launchers: Record<string, () => void>;
40
+
41
+ abstract launchNode(src: string, dest: string);
42
+ abstract launchWeb(src: string, dest: string);
43
+ abstract launchPure(src: string, dest: string);
44
+ abstract launchPython(src: string, dest: string);
45
+ abstract launchGolang(src: string, dest: string);
46
+
47
+ constructor(configs: IBuiltConfig, name: string, mode: "once" | "dev") {
48
+ super(configs, name, mode);
49
+
50
+ this.launchers = {};
51
+ this.ports = {};
52
+ this.queue = [];
53
+
54
+ this.configs.ports.forEach((element) => {
55
+ this.ports[element] = ""; // set ports as open
56
+ });
57
+ }
58
+
59
+ async metafileOutputs(platform: IRunTime) {
60
+ let metafilePath: string;
61
+ if (platform === "python") {
62
+ metafilePath = `./testeranto/metafiles/python/core.json`;
63
+ } else {
64
+ metafilePath = `./testeranto/metafiles/${platform}/${this.name}.json`;
65
+ }
66
+
67
+ // Check if the file exists
68
+ if (!fs.existsSync(metafilePath)) {
69
+ if (platform === "python") {
70
+ console.log(
71
+ ansiC.yellow(
72
+ ansiC.inverse(`Pitono metafile not found yet: ${metafilePath}`)
73
+ )
74
+ );
75
+ }
76
+ return;
77
+ }
78
+
79
+ let metafile;
80
+ try {
81
+ const fileContent = fs.readFileSync(metafilePath).toString();
82
+ const parsedData = JSON.parse(fileContent);
83
+ // Handle different metafile structures
84
+ if (platform === "python") {
85
+ // Pitono metafile might be the entire content or have a different structure
86
+ metafile = parsedData.metafile || parsedData;
87
+ } else {
88
+ metafile = parsedData.metafile;
89
+ }
90
+ if (!metafile) {
91
+ console.log(
92
+ ansiC.yellow(ansiC.inverse(`No metafile found in ${metafilePath}`))
93
+ );
94
+ return;
95
+ }
96
+ } catch (error) {
97
+ console.error(`Error reading metafile at ${metafilePath}:`, error);
98
+ return;
99
+ }
100
+
101
+ const outputs: IOutputs | undefined = metafile.outputs;
102
+
103
+ // Check if outputs exists and is an object
104
+ if (!outputs || typeof outputs !== 'object') {
105
+ console.log(
106
+ ansiC.yellow(ansiC.inverse(`No outputs found in metafile at ${metafilePath}`))
107
+ );
108
+ return;
109
+ }
110
+
111
+ Object.keys(outputs).forEach(async (k) => {
112
+ const pattern = `testeranto/bundles/${platform}/${this.name}/${this.configs.src}`;
113
+ if (!k.startsWith(pattern)) {
114
+ return;
115
+ }
116
+
117
+ const output = outputs[k];
118
+ // Check if the output entry exists and has inputs
119
+ if (!output || !output.inputs) {
120
+ return;
121
+ }
122
+
123
+ const addableFiles = Object.keys(output.inputs).filter((i) => {
124
+ if (!fs.existsSync(i)) return false;
125
+ if (i.startsWith("node_modules")) return false;
126
+ if (i.startsWith("./node_modules")) return false;
127
+
128
+ return true;
129
+ });
130
+
131
+ const f = `${k.split(".").slice(0, -1).join(".")}/`;
132
+
133
+ if (!fs.existsSync(f)) {
134
+ fs.mkdirSync(f, { recursive: true });
135
+ }
136
+
137
+ const entrypoint = output.entryPoint;
138
+
139
+ if (entrypoint) {
140
+ const changeDigest = await filesHash(addableFiles);
141
+
142
+ if (changeDigest === changes[entrypoint]) {
143
+ // skip
144
+ } else {
145
+ changes[entrypoint] = changeDigest;
146
+ this.tscCheck({
147
+ platform,
148
+ addableFiles,
149
+ entrypoint: entrypoint,
150
+ });
151
+ this.eslintCheck(entrypoint, platform, addableFiles);
152
+ this.makePrompt(entrypoint, addableFiles, platform);
153
+ }
154
+ }
155
+ });
156
+ }
157
+
158
+ async start() {
159
+ // Wait for build processes to complete first
160
+ try {
161
+ await this.startBuildProcesses();
162
+ this.onBuildDone();
163
+ } catch (error) {
164
+ console.error("Build processes failed:", error);
165
+ return;
166
+ }
167
+
168
+ // Continue with the rest of the setup after builds are done
169
+ this.mapping().forEach(async ([command, func]) => {
170
+ globalThis[command] = func;
171
+ });
172
+
173
+ if (!fs.existsSync(`testeranto/reports/${this.name}`)) {
174
+ fs.mkdirSync(`testeranto/reports/${this.name}`);
175
+ }
176
+
177
+ try {
178
+ this.browser = await puppeteer.launch(puppeteerConfigs);
179
+ } catch (e) {
180
+ console.error(e);
181
+ console.error(
182
+ "could not start chrome via puppeter. Check this path: ",
183
+ executablePath
184
+ );
185
+ }
186
+
187
+ const {
188
+ nodeEntryPoints,
189
+ webEntryPoints,
190
+ pureEntryPoints,
191
+ pythonEntryPoints,
192
+ golangEntryPoints,
193
+ } = getRunnables(this.configs.tests, this.name);
194
+
195
+ [
196
+ [
197
+ nodeEntryPoints,
198
+ this.launchNode,
199
+ "node",
200
+ (w) => {
201
+ this.nodeMetafileWatcher = w;
202
+ },
203
+ ],
204
+ [
205
+ webEntryPoints,
206
+ this.launchWeb,
207
+ "web",
208
+ (w) => {
209
+ this.webMetafileWatcher = w;
210
+ },
211
+ ],
212
+ [
213
+ pureEntryPoints,
214
+ this.launchPure,
215
+ "pure",
216
+ (w) => {
217
+ this.importMetafileWatcher = w;
218
+ },
219
+ ],
220
+ [
221
+ pythonEntryPoints,
222
+ this.launchPython,
223
+ "python",
224
+ (w) => {
225
+ this.pitonoMetafileWatcher = w;
226
+ },
227
+ ],
228
+ [
229
+ golangEntryPoints,
230
+ this.launchGolang,
231
+ "golang",
232
+ (w) => {
233
+ // You might want to handle golang metafile watching here
234
+ },
235
+ ],
236
+ ].forEach(
237
+ async ([eps, launcher, runtime, watcher]: [
238
+ Record<string, string>,
239
+ (src: string, dest: string) => Promise<void>,
240
+ IRunTime,
241
+ (f: fs.FSWatcher) => void
242
+ ]) => {
243
+ let metafile: string;
244
+ if (runtime === "python") {
245
+ metafile = `./testeranto/metafiles/python/core.json`;
246
+
247
+ const metafileDir = path.dirname(metafile);
248
+ if (!fs.existsSync(metafileDir)) {
249
+ fs.mkdirSync(metafileDir, { recursive: true });
250
+ }
251
+ } else {
252
+ metafile = `./testeranto/metafiles/${runtime}/${this.name}.json`;
253
+ }
254
+
255
+ // Only poll for file if it's not a pitono runtime
256
+ if (runtime !== "python") {
257
+ await pollForFile(metafile);
258
+ }
259
+
260
+ Object.entries(eps).forEach(
261
+ async ([inputFile, outputFile]: [string, string]) => {
262
+ this.launchers[inputFile] = () => launcher(inputFile, outputFile);
263
+ this.launchers[inputFile]();
264
+
265
+ try {
266
+ // Check if the file exists before watching
267
+ if (fs.existsSync(outputFile)) {
268
+ watch(outputFile, async (e, filename) => {
269
+ const hash = await fileHash(outputFile);
270
+ if (fileHashes[inputFile] !== hash) {
271
+ fileHashes[inputFile] = hash;
272
+ console.log(
273
+ ansiC.yellow(ansiC.inverse(`< ${e} ${filename}`))
274
+ );
275
+ this.launchers[inputFile]();
276
+ }
277
+ });
278
+ } else {
279
+ console.log(
280
+ ansiC.yellow(
281
+ ansiC.inverse(
282
+ `File not found, skipping watch: ${outputFile}`
283
+ )
284
+ )
285
+ );
286
+ }
287
+ } catch (e) {
288
+ console.error(e);
289
+ }
290
+ }
291
+ );
292
+
293
+ this.metafileOutputs(runtime);
294
+
295
+ // For pitono, we need to wait for the file to be created
296
+ if (runtime === "python") {
297
+ // Use polling to wait for the file to exist
298
+ const checkFileExists = () => {
299
+ if (fs.existsSync(metafile)) {
300
+ console.log(
301
+ ansiC.green(ansiC.inverse(`Pitono metafile found: ${metafile}`))
302
+ );
303
+ // Set up the watcher once the file exists
304
+ watcher(
305
+ watch(metafile, async (e, filename) => {
306
+ console.log(
307
+ ansiC.yellow(
308
+ ansiC.inverse(`< ${e} ${filename} (${runtime})`)
309
+ )
310
+ );
311
+ this.metafileOutputs(runtime);
312
+ })
313
+ );
314
+ // Read the metafile immediately
315
+ this.metafileOutputs(runtime);
316
+ } else {
317
+ // Check again after a delay
318
+ setTimeout(checkFileExists, 1000);
319
+ }
320
+ };
321
+ // Start checking for the file
322
+ checkFileExists();
323
+ } else {
324
+ // For other runtimes, only set up watcher if the file exists
325
+ if (fs.existsSync(metafile)) {
326
+ watcher(
327
+ watch(metafile, async (e, filename) => {
328
+ console.log(
329
+ ansiC.yellow(ansiC.inverse(`< ${e} ${filename} (${runtime})`))
330
+ );
331
+ this.metafileOutputs(runtime);
332
+ })
333
+ );
334
+ }
335
+ }
336
+ }
337
+ );
338
+ }
339
+
340
+ async stop() {
341
+ console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
342
+ this.mode = "once";
343
+ this.nodeMetafileWatcher.close();
344
+ this.webMetafileWatcher.close();
345
+ this.importMetafileWatcher.close();
346
+ if (this.pitonoMetafileWatcher) {
347
+ this.pitonoMetafileWatcher.close();
348
+ }
349
+
350
+ if (this.gitWatcher) {
351
+ this.gitWatcher.close();
352
+ }
353
+
354
+ if (this.gitWatchTimeout) {
355
+ clearTimeout(this.gitWatchTimeout);
356
+ }
357
+
358
+ Object.values(this.logStreams || {}).forEach((logs) => logs.closeAll());
359
+
360
+ if (this.wss) {
361
+ this.wss.close(() => {
362
+ console.log("WebSocket server closed");
363
+ });
364
+ }
365
+
366
+ this.clients.forEach((client) => {
367
+ client.terminate();
368
+ });
369
+ this.clients.clear();
370
+
371
+ if (this.httpServer) {
372
+ this.httpServer.close(() => {
373
+ console.log("HTTP server closed");
374
+ });
375
+ }
376
+ this.checkForShutdown();
377
+ }
378
+
379
+ receiveFeaturesV2 = (
380
+ reportDest: string,
381
+ srcTest: string,
382
+ platform: IRunTime
383
+ ) => {
384
+ const featureDestination = path.resolve(
385
+ process.cwd(),
386
+ "reports",
387
+ "features",
388
+ "strings",
389
+ srcTest.split(".").slice(0, -1).join(".") + ".features.txt"
390
+ );
391
+
392
+ const testReportPath = `${reportDest}/tests.json`;
393
+ if (!fs.existsSync(testReportPath)) {
394
+ console.error(`tests.json not found at: ${testReportPath}`);
395
+ return;
396
+ }
397
+
398
+ const testReport = JSON.parse(fs.readFileSync(testReportPath, "utf8"));
399
+
400
+ // Add full path information to each test
401
+ if (testReport.tests) {
402
+ testReport.tests.forEach((test) => {
403
+ // Add the full path to each test
404
+ test.fullPath = path.resolve(process.cwd(), srcTest);
405
+ });
406
+ }
407
+
408
+ // Add full path to the report itself
409
+ testReport.fullPath = path.resolve(process.cwd(), srcTest);
410
+
411
+ // Write the modified report back
412
+ fs.writeFileSync(testReportPath, JSON.stringify(testReport, null, 2));
413
+
414
+ testReport.features
415
+ .reduce(async (mm, featureStringKey) => {
416
+ const accum = await mm;
417
+
418
+ const isUrl = isValidUrl(featureStringKey);
419
+
420
+ if (isUrl) {
421
+ const u = new URL(featureStringKey);
422
+
423
+ if (u.protocol === "file:") {
424
+ const newPath = `${process.cwd()}/testeranto/features/internal/${path.relative(
425
+ process.cwd(),
426
+ u.pathname
427
+ )}`;
428
+
429
+ accum.files.push(u.pathname);
430
+ } else if (u.protocol === "http:" || u.protocol === "https:") {
431
+ const newPath = `${process.cwd()}/testeranto/features/external/${
432
+ u.hostname
433
+ }${u.pathname}`;
434
+
435
+ const body = await this.configs.featureIngestor(featureStringKey);
436
+
437
+ writeFileAndCreateDir(newPath, body);
438
+ accum.files.push(newPath);
439
+ }
440
+ } else {
441
+ await fs.promises.mkdir(path.dirname(featureDestination), {
442
+ recursive: true,
443
+ });
444
+
445
+ accum.strings.push(featureStringKey);
446
+ }
447
+
448
+ return accum;
449
+ }, Promise.resolve({ files: [] as string[], strings: [] as string[] }))
450
+
451
+ .then(({ files, strings }: { files: string[]; strings: string[] }) => {
452
+ // Markdown files must be referenced in the prompt but string style features are already present in the tests.json file
453
+
454
+ fs.writeFileSync(
455
+ `testeranto/reports/${this.name}/${srcTest
456
+ .split(".")
457
+ .slice(0, -1)
458
+ .join(".")}/${platform}/featurePrompt.txt`,
459
+ files
460
+ .map((f) => {
461
+ return `/read ${f}`;
462
+ })
463
+ .join("\n")
464
+ );
465
+ });
466
+
467
+ testReport.givens.forEach((g) => {
468
+ if (g.failed === true) {
469
+ this.summary[srcTest].failingFeatures[g.key] = g.features;
470
+ }
471
+ });
472
+
473
+ this.writeBigBoard();
474
+ };
475
+
476
+ findIndexHtml(): string | null {
477
+ const possiblePaths = [
478
+ "dist/index.html",
479
+ "testeranto/dist/index.html",
480
+ "../dist/index.html",
481
+ "./index.html",
482
+ ];
483
+
484
+ for (const path of possiblePaths) {
485
+ if (fs.existsSync(path)) {
486
+ return path;
487
+ }
488
+ }
489
+ return null;
490
+ }
491
+
492
+ addToQueue(src: string, runtime: IRunTime) {
493
+ // Add the test to the queue
494
+ this.queue.push(src);
495
+ console.log(
496
+ ansiC.green(
497
+ ansiC.inverse(`Added ${src} (${runtime}) to the processing queue`)
498
+ )
499
+ );
500
+ // Try to process the queue
501
+ this.checkQueue();
502
+ }
503
+
504
+ checkQueue() {
505
+ const x = this.queue.pop();
506
+ if (!x) {
507
+ ansiC.inverse(`The following queue is empty`);
508
+ return;
509
+ }
510
+ const test = this.configs.tests.find((t) => t[0] === x);
511
+ if (!test) throw `test is undefined ${x}`;
512
+
513
+ // Get the appropriate launcher based on the runtime type
514
+ const runtime = test[1];
515
+
516
+ // Get the destination path from the runnables
517
+ const runnables = getRunnables(this.configs.tests, this.name);
518
+ let dest: string;
519
+
520
+ switch (runtime) {
521
+ case "node":
522
+ dest = runnables.nodeEntryPoints[x];
523
+ if (dest) {
524
+ this.launchNode(x, dest);
525
+ } else {
526
+ console.error(`No destination found for node test: ${x}`);
527
+ }
528
+ break;
529
+ case "web":
530
+ dest = runnables.webEntryPoints[x];
531
+ if (dest) {
532
+ this.launchWeb(x, dest);
533
+ } else {
534
+ console.error(`No destination found for web test: ${x}`);
535
+ }
536
+ break;
537
+ case "pure":
538
+ dest = runnables.pureEntryPoints[x];
539
+ if (dest) {
540
+ this.launchPure(x, dest);
541
+ } else {
542
+ console.error(`No destination found for pure test: ${x}`);
543
+ }
544
+ break;
545
+ case "python":
546
+ dest = runnables.pythonEntryPoints[x];
547
+ if (dest) {
548
+ this.launchPython(x, dest);
549
+ } else {
550
+ console.error(`No destination found for python test: ${x}`);
551
+ }
552
+ break;
553
+ case "golang":
554
+ dest = runnables.golangEntryPoints[x];
555
+ if (dest) {
556
+ this.launchGolang(x, dest);
557
+ } else {
558
+ console.error(`No destination found for golang test: ${x}`);
559
+ }
560
+ break;
561
+ default:
562
+ console.error(`Unknown runtime: ${runtime} for test ${x}`);
563
+ break;
564
+ }
565
+ }
566
+
567
+ onBuildDone(): void {
568
+ console.log("Build processes completed");
569
+ // The builds are done, which means the files are ready to be watched
570
+ // This matches the original behavior where builds completed before PM_Main started
571
+
572
+ // Start Git watcher for development mode
573
+ this.startGitWatcher();
574
+ }
575
+
576
+ checkForShutdown = () => {
577
+ this.checkQueue();
578
+
579
+ console.log(
580
+ ansiC.inverse(
581
+ `The following jobs are awaiting resources: ${JSON.stringify(
582
+ this.queue
583
+ )}`
584
+ )
585
+ );
586
+ console.log(
587
+ ansiC.inverse(`The status of ports: ${JSON.stringify(this.ports)}`)
588
+ );
589
+
590
+ this.writeBigBoard();
591
+
592
+ if (this.mode === "dev") return;
593
+
594
+ let inflight = false;
595
+
596
+ Object.keys(this.summary).forEach((k) => {
597
+ if (this.summary[k].prompt === "?") {
598
+ console.log(ansiC.blue(ansiC.inverse(`🕕 prompt ${k}`)));
599
+ inflight = true;
600
+ }
601
+ });
602
+
603
+ Object.keys(this.summary).forEach((k) => {
604
+ if (this.summary[k].runTimeErrors === "?") {
605
+ console.log(ansiC.blue(ansiC.inverse(`🕕 runTimeError ${k}`)));
606
+ inflight = true;
607
+ }
608
+ });
609
+
610
+ Object.keys(this.summary).forEach((k) => {
611
+ if (this.summary[k].staticErrors === "?") {
612
+ console.log(ansiC.blue(ansiC.inverse(`🕕 staticErrors ${k}`)));
613
+ inflight = true;
614
+ }
615
+ });
616
+
617
+ Object.keys(this.summary).forEach((k) => {
618
+ if (this.summary[k].typeErrors === "?") {
619
+ console.log(ansiC.blue(ansiC.inverse(`🕕 typeErrors ${k}`)));
620
+ inflight = true;
621
+ }
622
+ });
623
+
624
+ this.writeBigBoard();
625
+
626
+ if (!inflight) {
627
+ if (this.browser) {
628
+ if (this.browser) {
629
+ this.browser.disconnect().then(() => {
630
+ console.log(
631
+ ansiC.inverse(`${this.name} has been tested. Goodbye.`)
632
+ );
633
+ process.exit();
634
+ });
635
+ }
636
+ }
637
+ }
638
+ };
639
+ }