testeranto 0.129.0 → 0.135.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 (403) hide show
  1. package/.aider.chat.history.md +137798 -0
  2. package/.aider.input.history +370 -0
  3. package/.aider.tags.cache.v3/{ec/c0/161c249c35be853cc40cf11f9267.val → 62/f5/8af72140d93c58db2f6aa5bf3f1f.val} +0 -0
  4. package/.aider.tags.cache.v3/8e/ec/2d4659a1589a0187a757ab1cbefa.val +0 -0
  5. package/.aider.tags.cache.v3/{b7/e6/5be87b62aeaf2bc244ff41c1b61a.val → a7/97/6d37fce350ad2d588f36729db0cd.val} +0 -0
  6. package/.aider.tags.cache.v3/{e3/e6/3501625caf5d5eb171f0d248462e.val → ad/3c/10f2ab1397f6d544e613d2a6acaf.val} +0 -0
  7. package/.aider.tags.cache.v3/cache.db +0 -0
  8. package/.aider.tags.cache.v3/d8/b0/a8966fcd65890fd9f70d7afe8141.val +0 -0
  9. package/.aider.tags.cache.v3/dd/5b/0ade824b0841c7c11e9352c5d2ca.val +0 -0
  10. package/README.md +194 -182
  11. package/bundle.js +8 -75
  12. package/dist/common/src/Init.js +6 -1
  13. package/dist/common/src/Node.js +6 -4
  14. package/dist/common/src/NodeSidecar.js +15 -0
  15. package/dist/common/src/PM/PM_WithEslintAndTsc.js +189 -0
  16. package/dist/common/src/PM/__tests__/nodeSidecar.testeranto.js +109 -0
  17. package/dist/common/src/PM/__tests__/pureSidecar.testeranto.js +94 -0
  18. package/dist/common/src/PM/__tests__/webSidecar.testeranto.js +94 -0
  19. package/dist/common/src/PM/base.js +33 -16
  20. package/dist/common/src/PM/main.js +492 -428
  21. package/dist/common/src/PM/node.js +54 -22
  22. package/dist/common/src/PM/nodeSidecar.js +65 -0
  23. package/dist/common/src/PM/pure.js +55 -47
  24. package/dist/common/src/PM/pureSidecar.js +48 -0
  25. package/dist/common/src/PM/sidecar.js +11 -0
  26. package/dist/common/src/PM/web.js +24 -6
  27. package/dist/common/src/PM/webSidecar.js +47 -0
  28. package/dist/common/src/PureSidecar.js +13 -0
  29. package/dist/common/src/SP__Polygon.test.js +10 -0
  30. package/dist/common/src/WebSidecar.js +14 -0
  31. package/dist/common/src/build.js +66 -12
  32. package/dist/common/src/defaultConfig.js +1 -0
  33. package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +27 -0
  34. package/dist/common/src/esbuildConfigs/eslint-formatter-testeranto.js +16 -1
  35. package/dist/common/src/esbuildConfigs/node.js +2 -16
  36. package/dist/common/src/esbuildConfigs/pure.js +12 -12
  37. package/dist/common/src/esbuildConfigs/rebuildPlugin.js +22 -0
  38. package/dist/common/src/esbuildConfigs/web.js +12 -17
  39. package/dist/common/src/lib/Sidecar.js +6 -0
  40. package/dist/common/src/lib/abstractBase.js +13 -6
  41. package/dist/common/src/lib/basebuilder.js +1 -3
  42. package/dist/common/src/lib/classBuilder.js +6 -20
  43. package/dist/common/src/lib/core.js +11 -6
  44. package/dist/common/src/lib/index.js +13 -4
  45. package/dist/common/src/lib/pmProxy.js +1 -1
  46. package/dist/common/src/mothership/index.js +16 -0
  47. package/dist/common/src/mothership/test.js +65 -0
  48. package/dist/common/src/utils/queue.js +36 -0
  49. package/dist/common/src/utils.js +34 -5
  50. package/dist/common/testeranto.config.js +77 -39
  51. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  52. package/dist/module/src/Init.js +6 -1
  53. package/dist/module/src/Node.js +6 -4
  54. package/dist/module/src/NodeSidecar.js +11 -0
  55. package/dist/module/src/PM/PM_WithEslintAndTsc.js +182 -0
  56. package/dist/module/src/PM/__tests__/nodeSidecar.testeranto.js +104 -0
  57. package/dist/module/src/PM/__tests__/pureSidecar.testeranto.js +89 -0
  58. package/dist/module/src/PM/__tests__/webSidecar.testeranto.js +89 -0
  59. package/dist/module/src/PM/base.js +33 -16
  60. package/dist/module/src/PM/main.js +493 -429
  61. package/dist/module/src/PM/node.js +54 -22
  62. package/dist/module/src/PM/nodeSidecar.js +58 -0
  63. package/dist/module/src/PM/pure.js +55 -44
  64. package/dist/module/src/PM/pureSidecar.js +41 -0
  65. package/dist/module/src/PM/sidecar.js +7 -0
  66. package/dist/module/src/PM/web.js +24 -6
  67. package/dist/module/src/PM/webSidecar.js +40 -0
  68. package/dist/module/src/Project.js +154 -75
  69. package/dist/module/src/PureSidecar.js +9 -0
  70. package/dist/module/src/ReportClient.js +132 -97
  71. package/dist/module/src/SP__Polygon.test.js +8 -0
  72. package/dist/module/src/TestReport.js +32 -14
  73. package/dist/module/src/WebSidecar.js +10 -0
  74. package/dist/module/src/build.js +66 -12
  75. package/dist/module/src/defaultConfig.js +1 -0
  76. package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +24 -0
  77. package/dist/module/src/esbuildConfigs/eslint-formatter-testeranto.js +16 -1
  78. package/dist/module/src/esbuildConfigs/node.js +2 -16
  79. package/dist/module/src/esbuildConfigs/pure.js +12 -12
  80. package/dist/module/src/esbuildConfigs/rebuildPlugin.js +17 -0
  81. package/dist/module/src/esbuildConfigs/web.js +12 -17
  82. package/dist/module/src/lib/Sidecar.js +2 -0
  83. package/dist/module/src/lib/abstractBase.js +13 -6
  84. package/dist/module/src/lib/basebuilder.js +1 -3
  85. package/dist/module/src/lib/classBuilder.js +6 -20
  86. package/dist/module/src/lib/core.js +11 -6
  87. package/dist/module/src/lib/index.js +12 -4
  88. package/dist/module/src/lib/pmProxy.js +1 -1
  89. package/dist/module/src/mothership/index.js +11 -0
  90. package/dist/module/src/mothership/test.js +60 -0
  91. package/dist/module/src/utils/queue.js +32 -0
  92. package/dist/module/src/utils.js +34 -5
  93. package/dist/module/testeranto.config.js +77 -36
  94. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  95. package/dist/prebuild/Project.js +3287 -385
  96. package/dist/prebuild/ReportClient.js +0 -24638
  97. package/dist/prebuild/TestReport.js +26 -22
  98. package/dist/prebuild/build.mjs +192 -70
  99. package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +14 -1
  100. package/dist/prebuild/init-docs.mjs +2 -5
  101. package/dist/prebuild/mothership/index.mjs +17 -0
  102. package/dist/prebuild/run.mjs +733 -433
  103. package/dist/types/src/CoreTypes.d.ts +51 -0
  104. package/dist/types/src/Node.d.ts +2 -2
  105. package/dist/types/src/NodeSidecar.d.ts +6 -0
  106. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +23 -0
  107. package/dist/types/src/PM/__tests__/nodeSidecar.testeranto.d.ts +2 -0
  108. package/dist/types/src/PM/__tests__/pureSidecar.testeranto.d.ts +2 -0
  109. package/dist/types/src/PM/__tests__/webSidecar.testeranto.d.ts +2 -0
  110. package/dist/types/src/PM/base.d.ts +6 -5
  111. package/dist/types/src/PM/index.d.ts +6 -4
  112. package/dist/types/src/PM/main.d.ts +23 -26
  113. package/dist/types/src/PM/node.d.ts +8 -6
  114. package/dist/types/src/PM/nodeSidecar.d.ts +13 -0
  115. package/dist/types/src/PM/pure.d.ts +4 -3
  116. package/dist/types/src/PM/pureSidecar.d.ts +11 -0
  117. package/dist/types/src/PM/sidecar.d.ts +8 -0
  118. package/dist/types/src/PM/web.d.ts +18 -8
  119. package/dist/types/src/PM/webSidecar.d.ts +11 -0
  120. package/dist/types/src/PureSidecar.d.ts +8 -0
  121. package/dist/types/src/SP__Polygon.test.d.ts +1 -0
  122. package/dist/types/src/Types.d.ts +80 -58
  123. package/dist/types/src/Web.d.ts +1 -1
  124. package/dist/types/src/WebSidecar.d.ts +8 -0
  125. package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +2 -0
  126. package/dist/types/src/esbuildConfigs/rebuildPlugin.d.ts +6 -0
  127. package/dist/types/src/lib/Sidecar.d.ts +5 -0
  128. package/dist/types/src/lib/abstractBase.d.ts +6 -12
  129. package/dist/types/src/lib/classBuilder.d.ts +7 -1
  130. package/dist/types/src/lib/core.d.ts +8 -2
  131. package/dist/types/src/lib/index.d.ts +10 -4
  132. package/dist/types/src/lib/types.d.ts +12 -2
  133. package/dist/types/src/mothership/index.d.ts +2 -0
  134. package/dist/types/src/mothership/test.d.ts +2 -0
  135. package/dist/types/src/utils/queue.d.ts +11 -0
  136. package/dist/types/src/utils.d.ts +4 -7
  137. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  138. package/docs/index.md +277 -0
  139. package/package.json +23 -104
  140. package/src/CoreTypes.ts +171 -0
  141. package/src/Init.ts +6 -5
  142. package/src/Node.ts +32 -15
  143. package/src/NodeSidecar.ts +22 -0
  144. package/src/PM/PM_WithEslintAndTsc.ts +315 -0
  145. package/src/PM/__tests__/nodeSidecar.testeranto.ts +173 -0
  146. package/src/PM/__tests__/pureSidecar.testeranto.ts +157 -0
  147. package/src/PM/__tests__/webSidecar.testeranto.ts +157 -0
  148. package/src/PM/base.ts +38 -17
  149. package/src/PM/index.ts +10 -4
  150. package/src/PM/main.ts +616 -589
  151. package/src/PM/node.ts +77 -33
  152. package/src/PM/nodeSidecar.ts +73 -0
  153. package/src/PM/pure.ts +68 -58
  154. package/src/PM/pureSidecar.ts +56 -0
  155. package/src/PM/sidecar.ts +48 -0
  156. package/src/PM/web.ts +42 -11
  157. package/src/PM/webSidecar.ts +55 -0
  158. package/src/Project.tsx +312 -109
  159. package/src/Pure.ts +0 -2
  160. package/src/PureSidecar.ts +14 -0
  161. package/src/ReportClient.tsx +164 -170
  162. package/src/SP__Polygon.test.ts +13 -0
  163. package/src/TestReport.tsx +77 -6
  164. package/src/Types.ts +278 -157
  165. package/src/Web.ts +0 -3
  166. package/src/WebSidecar.ts +14 -0
  167. package/src/build.ts +104 -16
  168. package/src/defaultConfig.ts +1 -0
  169. package/src/esbuildConfigs/README.md +46 -0
  170. package/src/esbuildConfigs/consoleDetectorPlugin.ts +29 -0
  171. package/src/esbuildConfigs/eslint-formatter-testeranto.ts +17 -1
  172. package/src/esbuildConfigs/node.ts +2 -18
  173. package/src/esbuildConfigs/pure.ts +19 -14
  174. package/src/esbuildConfigs/rebuildPlugin.ts +23 -0
  175. package/src/esbuildConfigs/web.ts +15 -18
  176. package/src/lib/Sidecar.ts +6 -0
  177. package/src/lib/TEST_ADAPTER_RENAME.md +48 -0
  178. package/src/lib/abstractBase.ts +18 -10
  179. package/src/lib/basebuilder.ts +5 -4
  180. package/src/lib/classBuilder.ts +19 -21
  181. package/src/lib/core.ts +28 -19
  182. package/src/lib/index.ts +38 -18
  183. package/src/lib/pmProxy.ts +3 -1
  184. package/src/lib/types.ts +15 -2
  185. package/src/mothership/index.ts +15 -0
  186. package/src/mothership/test.ts +137 -0
  187. package/src/run.ts +0 -1
  188. package/src/utils/queue.ts +41 -0
  189. package/src/utils.ts +41 -15
  190. package/testeranto/bundles/node/mothership/chunk-PG6KUKNP.mjs +44 -0
  191. package/testeranto/bundles/node/mothership/chunk-V2EQEXU2.mjs +1032 -0
  192. package/testeranto/bundles/node/mothership/metafile.json +389 -0
  193. package/testeranto/bundles/node/mothership/src/PM/__tests__/nodeSidecar.testeranto.mjs +1219 -0
  194. package/testeranto/bundles/node/mothership/src/PM/__tests__/pureSidecar.testeranto.mjs +156 -0
  195. package/testeranto/bundles/node/mothership/src/PM/__tests__/sidecar.testeranto.mjs +1199 -0
  196. package/testeranto/bundles/node/mothership/src/PM/__tests__/webSidecar.testeranto.mjs +156 -0
  197. package/testeranto/bundles/node/mothership/src/mothership/test.mjs +24411 -0
  198. package/testeranto/bundles/pure/mothership/metafile.json +8 -0
  199. package/testeranto/bundles/web/mothership/metafile.json +8 -0
  200. package/testeranto/index.html +4 -4
  201. package/testeranto/reports/mothership/config.json +25 -0
  202. package/testeranto/reports/{redux → mothership}/index.html +8 -8
  203. package/testeranto/reports/mothership/src/PM/__tests__/nodeSidecar.testeranto/node/console_log.txt +0 -0
  204. package/testeranto/reports/mothership/src/PM/__tests__/nodeSidecar.testeranto/node/index.html +20 -0
  205. package/testeranto/reports/mothership/src/PM/__tests__/nodeSidecar.testeranto/node/lint_errors.json +1564 -0
  206. package/testeranto/reports/mothership/src/PM/__tests__/nodeSidecar.testeranto/node/log.txt +0 -0
  207. package/testeranto/reports/mothership/src/PM/__tests__/nodeSidecar.testeranto/node/prompt.txt +22 -0
  208. package/testeranto/reports/mothership/src/PM/__tests__/nodeSidecar.testeranto/node/type_errors.txt +35 -0
  209. package/testeranto/reports/mothership/src/PM/__tests__/pureSidecar.testeranto/node/index.html +20 -0
  210. package/testeranto/reports/mothership/src/PM/__tests__/pureSidecar.testeranto/node/lint_errors.json +80 -0
  211. package/testeranto/reports/mothership/src/PM/__tests__/pureSidecar.testeranto/node/prompt.txt +12 -0
  212. package/testeranto/reports/mothership/src/PM/__tests__/pureSidecar.testeranto/node/type_errors.txt +26 -0
  213. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/bdd_errors.txt +1 -0
  214. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/console_log.txt +0 -0
  215. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/index.html +20 -0
  216. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/lint_errors.json +1564 -0
  217. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/log.txt +0 -0
  218. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/prompt.txt +22 -0
  219. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/tests.json +56 -0
  220. package/testeranto/reports/mothership/src/PM/__tests__/sidecar.testeranto/node/type_errors.txt +29 -0
  221. package/testeranto/reports/mothership/src/PM/__tests__/webSidecar.testeranto/node/index.html +20 -0
  222. package/testeranto/reports/mothership/src/PM/__tests__/webSidecar.testeranto/node/lint_errors.json +80 -0
  223. package/testeranto/reports/mothership/src/PM/__tests__/webSidecar.testeranto/node/prompt.txt +12 -0
  224. package/testeranto/reports/mothership/src/PM/__tests__/webSidecar.testeranto/node/type_errors.txt +26 -0
  225. package/testeranto/reports/mothership/src/mothership/test/node/bdd_errors.txt +1 -0
  226. package/testeranto/reports/mothership/src/mothership/test/node/console_log.txt +4 -0
  227. package/testeranto/reports/mothership/src/mothership/test/node/index.html +20 -0
  228. package/testeranto/reports/mothership/src/mothership/test/node/lint_errors.json +1 -0
  229. package/testeranto/reports/mothership/src/mothership/test/node/log.txt +0 -0
  230. package/testeranto/reports/mothership/src/mothership/test/node/prompt.txt +12 -0
  231. package/testeranto/reports/mothership/src/mothership/test/node/tests.json +24 -0
  232. package/testeranto/reports/mothership/src/mothership/test/node/type_errors.txt +18 -0
  233. package/testeranto/reports/mothership/summary.json +9 -0
  234. package/testeranto.config.ts +82 -44
  235. package/tsc.log +78 -81
  236. package/dist/common/src/SubPackages/react/component/index.js +0 -20
  237. package/dist/common/src/SubPackages/react/component/node.js +0 -10
  238. package/dist/common/src/SubPackages/react/component/pure.js +0 -10
  239. package/dist/common/src/SubPackages/react/component/web.js +0 -10
  240. package/dist/common/src/SubPackages/react/jsx/index.js +0 -64
  241. package/dist/common/src/SubPackages/react/jsx/node.js +0 -10
  242. package/dist/common/src/SubPackages/react/jsx/pure.js +0 -10
  243. package/dist/common/src/SubPackages/react/jsx/web.js +0 -10
  244. package/dist/common/src/SubPackages/react-dom/component/dynamic.js +0 -61
  245. package/dist/common/src/SubPackages/react-dom/component/node.js +0 -10
  246. package/dist/common/src/SubPackages/react-dom/component/pure.js +0 -10
  247. package/dist/common/src/SubPackages/react-dom/component/static.js +0 -26
  248. package/dist/common/src/SubPackages/react-dom/component/web.js +0 -16
  249. package/dist/common/src/SubPackages/react-dom/jsx/dynamic.js +0 -31
  250. package/dist/common/src/SubPackages/react-dom/jsx/node.js +0 -10
  251. package/dist/common/src/SubPackages/react-dom/jsx/pure.js +0 -10
  252. package/dist/common/src/SubPackages/react-dom/jsx/static.js +0 -59
  253. package/dist/common/src/SubPackages/react-dom/jsx/web.js +0 -16
  254. package/dist/common/src/SubPackages/react-test-renderer/MemoExoticComponent/node.js +0 -54
  255. package/dist/common/src/SubPackages/react-test-renderer/component/index.js +0 -15
  256. package/dist/common/src/SubPackages/react-test-renderer/component/interface.js +0 -70
  257. package/dist/common/src/SubPackages/react-test-renderer/component/node.js +0 -8
  258. package/dist/common/src/SubPackages/react-test-renderer/component/pure.js +0 -8
  259. package/dist/common/src/SubPackages/react-test-renderer/component/test/implementation.js +0 -57
  260. package/dist/common/src/SubPackages/react-test-renderer/component/test/node.js +0 -10
  261. package/dist/common/src/SubPackages/react-test-renderer/component/test/pure.js +0 -10
  262. package/dist/common/src/SubPackages/react-test-renderer/component/test/web.js +0 -10
  263. package/dist/common/src/SubPackages/react-test-renderer/component/web.js +0 -8
  264. package/dist/common/src/SubPackages/react-test-renderer/fc/node.js +0 -60
  265. package/dist/common/src/SubPackages/react-test-renderer/fc/web.js +0 -60
  266. package/dist/common/src/SubPackages/react-test-renderer/jsx/index.js +0 -67
  267. package/dist/common/src/SubPackages/react-test-renderer/jsx/node.js +0 -10
  268. package/dist/common/src/SubPackages/react-test-renderer/jsx/pure.js +0 -10
  269. package/dist/common/src/SubPackages/react-test-renderer/jsx/web.js +0 -10
  270. package/dist/common/src/SubPackages/react-test-renderer/jsx-promised/index.js +0 -52
  271. package/dist/common/src/SubPackages/react-test-renderer/jsx-promised/node.js +0 -10
  272. package/dist/common/src/SubPackages/react-test-renderer/jsx-promised/web.js +0 -10
  273. package/dist/common/src/examples/react/component/index.js +0 -33
  274. package/dist/common/src/examples/react/component/test.js +0 -36
  275. package/dist/module/src/SubPackages/react/component/index.js +0 -13
  276. package/dist/module/src/SubPackages/react/component/node.js +0 -5
  277. package/dist/module/src/SubPackages/react/component/pure.js +0 -5
  278. package/dist/module/src/SubPackages/react/component/web.js +0 -5
  279. package/dist/module/src/SubPackages/react/jsx/index.js +0 -58
  280. package/dist/module/src/SubPackages/react/jsx/node.js +0 -5
  281. package/dist/module/src/SubPackages/react/jsx/pure.js +0 -5
  282. package/dist/module/src/SubPackages/react/jsx/web.js +0 -5
  283. package/dist/module/src/SubPackages/react-dom/component/dynamic.js +0 -54
  284. package/dist/module/src/SubPackages/react-dom/component/node.js +0 -5
  285. package/dist/module/src/SubPackages/react-dom/component/pure.js +0 -5
  286. package/dist/module/src/SubPackages/react-dom/component/static.js +0 -22
  287. package/dist/module/src/SubPackages/react-dom/component/web.js +0 -11
  288. package/dist/module/src/SubPackages/react-dom/jsx/dynamic.js +0 -27
  289. package/dist/module/src/SubPackages/react-dom/jsx/node.js +0 -5
  290. package/dist/module/src/SubPackages/react-dom/jsx/pure.js +0 -5
  291. package/dist/module/src/SubPackages/react-dom/jsx/static.js +0 -53
  292. package/dist/module/src/SubPackages/react-dom/jsx/web.js +0 -11
  293. package/dist/module/src/SubPackages/react-test-renderer/MemoExoticComponent/node.js +0 -16
  294. package/dist/module/src/SubPackages/react-test-renderer/component/index.js +0 -14
  295. package/dist/module/src/SubPackages/react-test-renderer/component/interface.js +0 -31
  296. package/dist/module/src/SubPackages/react-test-renderer/component/node.js +0 -3
  297. package/dist/module/src/SubPackages/react-test-renderer/component/pure.js +0 -3
  298. package/dist/module/src/SubPackages/react-test-renderer/component/test/implementation.js +0 -54
  299. package/dist/module/src/SubPackages/react-test-renderer/component/test/node.js +0 -5
  300. package/dist/module/src/SubPackages/react-test-renderer/component/test/pure.js +0 -5
  301. package/dist/module/src/SubPackages/react-test-renderer/component/test/web.js +0 -5
  302. package/dist/module/src/SubPackages/react-test-renderer/component/web.js +0 -3
  303. package/dist/module/src/SubPackages/react-test-renderer/fc/node.js +0 -22
  304. package/dist/module/src/SubPackages/react-test-renderer/fc/web.js +0 -22
  305. package/dist/module/src/SubPackages/react-test-renderer/jsx/index.js +0 -28
  306. package/dist/module/src/SubPackages/react-test-renderer/jsx/node.js +0 -5
  307. package/dist/module/src/SubPackages/react-test-renderer/jsx/pure.js +0 -5
  308. package/dist/module/src/SubPackages/react-test-renderer/jsx/web.js +0 -5
  309. package/dist/module/src/SubPackages/react-test-renderer/jsx-promised/index.js +0 -16
  310. package/dist/module/src/SubPackages/react-test-renderer/jsx-promised/node.js +0 -5
  311. package/dist/module/src/SubPackages/react-test-renderer/jsx-promised/web.js +0 -5
  312. package/dist/module/src/examples/react/component/index.js +0 -26
  313. package/dist/module/src/examples/react/component/test.js +0 -32
  314. package/dist/prebuild/ReportClient.css +0 -11342
  315. package/dist/tsconfig.tsbuildinfo +0 -1
  316. package/dist/types/src/SubPackages/react/component/index.d.ts +0 -4
  317. package/dist/types/src/SubPackages/react/component/node.d.ts +0 -4
  318. package/dist/types/src/SubPackages/react/component/pure.d.ts +0 -4
  319. package/dist/types/src/SubPackages/react/component/web.d.ts +0 -4
  320. package/dist/types/src/SubPackages/react/jsx/index.d.ts +0 -5
  321. package/dist/types/src/SubPackages/react/jsx/node.d.ts +0 -4
  322. package/dist/types/src/SubPackages/react/jsx/pure.d.ts +0 -4
  323. package/dist/types/src/SubPackages/react/jsx/web.d.ts +0 -4
  324. package/dist/types/src/SubPackages/react-dom/component/dynamic.d.ts +0 -20
  325. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +0 -4
  326. package/dist/types/src/SubPackages/react-dom/component/pure.d.ts +0 -4
  327. package/dist/types/src/SubPackages/react-dom/component/static.d.ts +0 -9
  328. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +0 -4
  329. package/dist/types/src/SubPackages/react-dom/jsx/dynamic.d.ts +0 -5
  330. package/dist/types/src/SubPackages/react-dom/jsx/index.d.ts +0 -6
  331. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +0 -4
  332. package/dist/types/src/SubPackages/react-dom/jsx/pure.d.ts +0 -4
  333. package/dist/types/src/SubPackages/react-dom/jsx/static.d.ts +0 -5
  334. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +0 -5
  335. package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -6
  336. package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +0 -5
  337. package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +0 -3
  338. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +0 -4
  339. package/dist/types/src/SubPackages/react-test-renderer/component/pure.d.ts +0 -4
  340. package/dist/types/src/SubPackages/react-test-renderer/component/test/implementation.d.ts +0 -4
  341. package/dist/types/src/SubPackages/react-test-renderer/component/test/node.d.ts +0 -3
  342. package/dist/types/src/SubPackages/react-test-renderer/component/test/pure.d.ts +0 -4
  343. package/dist/types/src/SubPackages/react-test-renderer/component/test/web.d.ts +0 -3
  344. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +0 -4
  345. package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +0 -8
  346. package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +0 -9
  347. package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +0 -11
  348. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +0 -4
  349. package/dist/types/src/SubPackages/react-test-renderer/jsx/pure.d.ts +0 -4
  350. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +0 -4
  351. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/index.d.ts +0 -15
  352. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -5
  353. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -5
  354. package/dist/types/src/examples/react/component/index.d.ts +0 -13
  355. package/dist/types/src/examples/react/component/test.d.ts +0 -17
  356. package/src/SubPackages/react/component/index.ts +0 -28
  357. package/src/SubPackages/react/component/node.ts +0 -17
  358. package/src/SubPackages/react/component/pure.ts +0 -17
  359. package/src/SubPackages/react/component/web.ts +0 -17
  360. package/src/SubPackages/react/jsx/index.ts +0 -75
  361. package/src/SubPackages/react/jsx/node.ts +0 -23
  362. package/src/SubPackages/react/jsx/pure.ts +0 -23
  363. package/src/SubPackages/react/jsx/web.ts +0 -24
  364. package/src/SubPackages/react-dom/component/dynamic.ts +0 -107
  365. package/src/SubPackages/react-dom/component/node.ts +0 -17
  366. package/src/SubPackages/react-dom/component/pure.ts +0 -17
  367. package/src/SubPackages/react-dom/component/static.ts +0 -41
  368. package/src/SubPackages/react-dom/component/web.ts +0 -32
  369. package/src/SubPackages/react-dom/jsx/dynamic.ts +0 -46
  370. package/src/SubPackages/react-dom/jsx/index.ts +0 -6
  371. package/src/SubPackages/react-dom/jsx/node.ts +0 -18
  372. package/src/SubPackages/react-dom/jsx/pure.ts +0 -18
  373. package/src/SubPackages/react-dom/jsx/static.ts +0 -87
  374. package/src/SubPackages/react-dom/jsx/web.ts +0 -26
  375. package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +0 -54
  376. package/src/SubPackages/react-test-renderer/component/index.ts +0 -32
  377. package/src/SubPackages/react-test-renderer/component/interface.ts +0 -43
  378. package/src/SubPackages/react-test-renderer/component/node.ts +0 -18
  379. package/src/SubPackages/react-test-renderer/component/pure.ts +0 -18
  380. package/src/SubPackages/react-test-renderer/component/test/implementation.ts +0 -63
  381. package/src/SubPackages/react-test-renderer/component/test/node.ts +0 -14
  382. package/src/SubPackages/react-test-renderer/component/test/pure.ts +0 -14
  383. package/src/SubPackages/react-test-renderer/component/test/web.ts +0 -14
  384. package/src/SubPackages/react-test-renderer/component/web.ts +0 -18
  385. package/src/SubPackages/react-test-renderer/fc/node.ts +0 -83
  386. package/src/SubPackages/react-test-renderer/fc/web.ts +0 -80
  387. package/src/SubPackages/react-test-renderer/jsx/index.ts +0 -61
  388. package/src/SubPackages/react-test-renderer/jsx/node.ts +0 -31
  389. package/src/SubPackages/react-test-renderer/jsx/pure.ts +0 -31
  390. package/src/SubPackages/react-test-renderer/jsx/web.ts +0 -32
  391. package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +0 -73
  392. package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +0 -36
  393. package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +0 -36
  394. package/src/examples/react/component/index.tsx +0 -35
  395. package/src/examples/react/component/test.ts +0 -83
  396. package/testeranto/bundles/node/redux/metafile.json +0 -559
  397. package/testeranto/bundles/pure/redux/metafile.json +0 -554
  398. package/testeranto/bundles/web/redux/metafile.json +0 -504
  399. package/testeranto/bundles/web/redux/test/web.html +0 -19
  400. package/testeranto/reports/redux/config.json +0 -38
  401. package/testeranto/reports/redux/summary.json +0 -20
  402. /package/dist/common/src/{SubPackages/react-dom/jsx/index.js → CoreTypes.js} +0 -0
  403. /package/dist/module/src/{SubPackages/react-dom/jsx/index.js → CoreTypes.js} +0 -0
@@ -37,20 +37,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.PM_Main = void 0;
40
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
41
+ /* eslint-disable no-async-promise-executor */
42
+ /* eslint-disable @typescript-eslint/no-explicit-any */
43
+ /* eslint-disable @typescript-eslint/no-unused-vars */
40
44
  const node_child_process_1 = require("node:child_process");
41
- const typescript_1 = __importDefault(require("typescript"));
42
45
  const net_1 = __importDefault(require("net"));
43
46
  const fs_1 = __importStar(require("fs"));
44
47
  const path_1 = __importDefault(require("path"));
45
48
  const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
46
49
  const ansi_colors_1 = __importDefault(require("ansi-colors"));
47
50
  const node_crypto_1 = __importDefault(require("node:crypto"));
48
- const eslint_1 = require("eslint");
49
- const tsc_prog_1 = __importDefault(require("tsc-prog"));
50
51
  const utils_1 = require("../utils");
51
- const base_js_1 = require("./base.js");
52
- const eslint = new eslint_1.ESLint();
53
- const formatter = await eslint.loadFormatter("./node_modules/testeranto/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs");
52
+ const queue_js_1 = require("../utils/queue.js");
53
+ const PM_WithEslintAndTsc_js_1 = require("./PM_WithEslintAndTsc.js");
54
54
  const changes = {};
55
55
  const fileHashes = {};
56
56
  const files = {};
@@ -83,7 +83,7 @@ async function writeFileAndCreateDir(filePath, data) {
83
83
  const dirPath = path_1.default.dirname(filePath);
84
84
  try {
85
85
  await fs_1.default.promises.mkdir(dirPath, { recursive: true });
86
- await fs_1.default.appendFileSync(filePath, data);
86
+ await fs_1.default.writeFileSync(filePath, data);
87
87
  }
88
88
  catch (error) {
89
89
  console.error(`Error writing file: ${error}`);
@@ -106,7 +106,7 @@ function isValidUrl(string) {
106
106
  }
107
107
  }
108
108
  // Wait for file to exist, checks every 2 seconds by default
109
- function pollForFile(path, timeout = 2000) {
109
+ async function pollForFile(path, timeout = 2000) {
110
110
  const intervalObj = setInterval(function () {
111
111
  const file = path;
112
112
  const fileExists = fs_1.default.existsSync(file);
@@ -117,153 +117,19 @@ function pollForFile(path, timeout = 2000) {
117
117
  }
118
118
  }, timeout);
119
119
  }
120
- class PM_Main extends base_js_1.PM_Base {
120
+ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
121
121
  constructor(configs, name, mode) {
122
- super(configs);
123
- this.bigBoard = {};
122
+ super(configs, name, mode);
124
123
  this.getRunnables = (tests, testName, payload = {
125
124
  nodeEntryPoints: {},
125
+ nodeEntryPointSidecars: {},
126
126
  webEntryPoints: {},
127
- importEntryPoints: {},
127
+ webEntryPointSidecars: {},
128
+ pureEntryPoints: {},
129
+ pureEntryPointSidecars: {},
128
130
  }) => {
129
131
  return (0, utils_1.getRunnables)(tests, testName, payload);
130
132
  };
131
- this.tscCheck = async ({ entrypoint, addableFiles, platform, }) => {
132
- console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`tsc < ${entrypoint}`)));
133
- this.typeCheckIsRunning(entrypoint);
134
- const program = tsc_prog_1.default.createProgramFromConfig({
135
- basePath: process.cwd(), // always required, used for relative paths
136
- configFilePath: "tsconfig.json", // config to inherit from (optional)
137
- compilerOptions: {
138
- outDir: (0, utils_1.tscPather)(entrypoint, platform, this.name),
139
- // declaration: true,
140
- // skipLibCheck: true,
141
- noEmit: true,
142
- },
143
- include: addableFiles, //["src/**/*"],
144
- // exclude: ["node_modules", "../testeranto"],
145
- // exclude: ["**/*.test.ts", "**/*.spec.ts"],
146
- });
147
- const tscPath = (0, utils_1.tscPather)(entrypoint, platform, this.name);
148
- let allDiagnostics = program.getSemanticDiagnostics();
149
- const results = [];
150
- allDiagnostics.forEach((diagnostic) => {
151
- if (diagnostic.file) {
152
- let { line, character } = typescript_1.default.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
153
- let message = typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
154
- results.push(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
155
- }
156
- else {
157
- results.push(typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
158
- }
159
- });
160
- fs_1.default.writeFileSync(tscPath, results.join("\n"));
161
- this.typeCheckIsNowDone(entrypoint, results.length);
162
- };
163
- this.eslintCheck = async (entrypoint, platform, addableFiles) => {
164
- console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`eslint < ${entrypoint}`)));
165
- this.lintIsRunning(entrypoint);
166
- const results = (await eslint.lintFiles(addableFiles))
167
- .filter((r) => r.messages.length)
168
- .filter((r) => {
169
- return r.messages[0].ruleId !== null;
170
- })
171
- .map((r) => {
172
- delete r.source;
173
- return r;
174
- });
175
- fs_1.default.writeFileSync((0, utils_1.lintPather)(entrypoint, platform, this.name), await formatter.format(results));
176
- this.lintIsNowDone(entrypoint, results.length);
177
- };
178
- this.makePrompt = async (entryPoint, addableFiles, platform) => {
179
- this.bigBoard[entryPoint].prompt = "?";
180
- const promptPath = (0, utils_1.promptPather)(entryPoint, platform, this.name);
181
- const testPaths = path_1.default.join("testeranto", "reports", this.name, platform, entryPoint.split(".").slice(0, -1).join("."), `tests.json`);
182
- const featuresPath = path_1.default.join("testeranto", "reports", this.name, platform, entryPoint.split(".").slice(0, -1).join("."), `featurePrompt.txt`);
183
- fs_1.default.writeFileSync(promptPath, `
184
- ${addableFiles
185
- .map((x) => {
186
- return `/add ${x}`;
187
- })
188
- .join("\n")}
189
-
190
- /read ${(0, utils_1.lintPather)(entryPoint, platform, this.name)}
191
- /read ${(0, utils_1.tscPather)(entryPoint, platform, this.name)}
192
- /read ${testPaths}
193
-
194
- /load ${featuresPath}
195
-
196
- /code Fix the failing tests described in ${testPaths}. Correct any type signature errors described in the files ${(0, utils_1.tscPather)(entryPoint, platform, this.name)}. Implement any method which throws "Function not implemented. Resolve the lint errors described in ${(0, utils_1.lintPather)(entryPoint, platform, this.name)}"
197
- `);
198
- this.bigBoard[entryPoint].prompt = `aider --model deepseek/deepseek-chat --load testeranto/${this.name}/reports/${platform}/${entryPoint
199
- .split(".")
200
- .slice(0, -1)
201
- .join(".")}/prompt.txt`;
202
- this.checkForShutdown();
203
- };
204
- this.checkForShutdown = () => {
205
- this.writeBigBoard();
206
- if (this.mode === "dev")
207
- return;
208
- let inflight = false;
209
- Object.keys(this.bigBoard).forEach((k) => {
210
- if (this.bigBoard[k].prompt === "?") {
211
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 prompt ${k}`)));
212
- inflight = true;
213
- }
214
- });
215
- Object.keys(this.bigBoard).forEach((k) => {
216
- if (this.bigBoard[k].runTimeError === "?") {
217
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 runTimeError ${k}`)));
218
- inflight = true;
219
- }
220
- });
221
- Object.keys(this.bigBoard).forEach((k) => {
222
- if (this.bigBoard[k].staticErrors === "?") {
223
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 staticErrors ${k}`)));
224
- inflight = true;
225
- }
226
- });
227
- Object.keys(this.bigBoard).forEach((k) => {
228
- if (this.bigBoard[k].typeErrors === "?") {
229
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 typeErrors ${k}`)));
230
- inflight = true;
231
- }
232
- });
233
- this.writeBigBoard();
234
- if (!inflight) {
235
- this.browser.disconnect().then(() => {
236
- console.log(ansi_colors_1.default.inverse(`${this.name} has been tested. Goodbye.`));
237
- process.exit();
238
- });
239
- }
240
- };
241
- this.typeCheckIsRunning = (src) => {
242
- this.bigBoard[src].typeErrors = "?";
243
- };
244
- this.typeCheckIsNowDone = (src, failures) => {
245
- this.bigBoard[src].typeErrors = failures;
246
- this.writeBigBoard();
247
- this.checkForShutdown();
248
- };
249
- this.lintIsRunning = (src) => {
250
- this.bigBoard[src].staticErrors = "?";
251
- this.writeBigBoard();
252
- };
253
- this.lintIsNowDone = (src, failures) => {
254
- this.bigBoard[src].staticErrors = failures;
255
- this.writeBigBoard();
256
- this.checkForShutdown();
257
- };
258
- this.bddTestIsRunning = (src) => {
259
- this.bigBoard[src].runTimeError = "?";
260
- this.writeBigBoard();
261
- };
262
- this.bddTestIsNowDone = (src, failures) => {
263
- this.bigBoard[src].runTimeError = failures;
264
- this.writeBigBoard();
265
- this.checkForShutdown();
266
- };
267
133
  this.launchPure = async (src, dest) => {
268
134
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! pure, ${src}`)));
269
135
  this.bddTestIsRunning(src);
@@ -284,7 +150,7 @@ ${addableFiles
284
150
  process.exit(-1);
285
151
  }
286
152
  const testConfigResource = testConfig[2];
287
- let portsToUse = [];
153
+ const portsToUse = [];
288
154
  if (testConfigResource.ports === 0) {
289
155
  argz = JSON.stringify({
290
156
  scheduled: true,
@@ -351,17 +217,18 @@ ${addableFiles
351
217
  defaultModule
352
218
  .receiveTestResourceConfig(argz)
353
219
  .then(async (results) => {
354
- this.receiveFeatures(results.features, destFolder, src, "pure");
220
+ // this.receiveFeatures(results.features, destFolder, src, "pure");
221
+ // this.receiveFeaturesV2(reportDest, src, "pure");
355
222
  statusMessagePretty(results.fails, src);
356
223
  this.bddTestIsNowDone(src, results.fails);
357
224
  })
358
225
  .catch((e) => {
359
- console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e}`)));
226
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchPure - ${src} errored with: ${e}`)));
360
227
  this.bddTestIsNowDone(src, -1);
361
- })
362
- .finally(() => {
363
- webSideCares.forEach((webSideCar) => webSideCar.close());
364
228
  });
229
+ // .finally(() => {
230
+ // // webSideCares.forEach((webSideCar) => webSideCar.close());
231
+ // });
365
232
  })
366
233
  .catch((e) => {
367
234
  console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`)));
@@ -378,10 +245,9 @@ ${addableFiles
378
245
  this.bddTestIsNowDone(src, -1);
379
246
  statusMessagePretty(-1, src);
380
247
  }
381
- // console.log("portsToUse", portsToUse);
382
248
  for (let i = 0; i <= portsToUse.length; i++) {
383
249
  if (portsToUse[i]) {
384
- this.ports[portsToUse[i]] = "true"; //port is open again
250
+ this.ports[portsToUse[i]] = true; //port is open again
385
251
  }
386
252
  }
387
253
  };
@@ -395,7 +261,7 @@ ${addableFiles
395
261
  if (!fs_1.default.existsSync(reportDest)) {
396
262
  fs_1.default.mkdirSync(reportDest, { recursive: true });
397
263
  }
398
- const destFolder = dest.replace(".mjs", "");
264
+ // const destFolder = dest.replace(".mjs", "");
399
265
  let testResources = "";
400
266
  const testConfig = this.configs.tests.find((t) => {
401
267
  return t[0] === src;
@@ -405,15 +271,17 @@ ${addableFiles
405
271
  process.exit(-1);
406
272
  }
407
273
  const testConfigResource = testConfig[2];
408
- let portsToUse = [];
274
+ const portsToUse = [];
409
275
  if (testConfigResource.ports === 0) {
410
- testResources = JSON.stringify({
411
- scheduled: true,
276
+ console.error("portsToUse?!", []);
277
+ const t = {
412
278
  name: src,
413
- ports: portsToUse,
279
+ // ports: portsToUse.map((v) => Number(v)),
280
+ ports: [],
414
281
  fs: reportDest,
415
282
  browserWSEndpoint: this.browser.wsEndpoint(),
416
- });
283
+ };
284
+ testResources = JSON.stringify(t);
417
285
  }
418
286
  else if (testConfigResource.ports > 0) {
419
287
  const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
@@ -422,15 +290,17 @@ ${addableFiles
422
290
  portsToUse.push(openPorts[i][0]);
423
291
  this.ports[openPorts[i][0]] = false; // port is now closed
424
292
  }
293
+ console.error("portsToUse", portsToUse);
425
294
  testResources = JSON.stringify({
426
295
  scheduled: true,
427
296
  name: src,
428
297
  ports: portsToUse,
429
- fs: destFolder,
298
+ fs: reportDest,
430
299
  browserWSEndpoint: this.browser.wsEndpoint(),
431
300
  });
432
301
  }
433
302
  else {
303
+ console.log("Not enough ports! Enqueuing test job...");
434
304
  this.queue.push(src);
435
305
  return;
436
306
  }
@@ -440,44 +310,24 @@ ${addableFiles
440
310
  process.exit(-1);
441
311
  }
442
312
  const builtfile = dest;
443
- // const webSideCares: Page[] = [];
444
- // await Promise.all(
445
- // testConfig[3].map(async (sidecar) => {
446
- // if (sidecar[1] === "web") {
447
- // const s = await this.launchWebSideCar(
448
- // sidecar[0],
449
- // destinationOfRuntime(sidecar[0], "web", this.configs),
450
- // sidecar
451
- // );
452
- // webSideCares.push(s);
453
- // return s;
454
- // }
455
- // if (sidecar[1] === "node") {
456
- // return this.launchNodeSideCar(
457
- // sidecar[0],
458
- // destinationOfRuntime(sidecar[0], "node", this.configs),
459
- // sidecar
460
- // );
461
- // }
462
- // })
463
- // );
464
- // const f = fork(builtfile, [testResources], {
465
- // silent: true,
466
- // // detached: true,
467
- // // stdio: "ignore",
468
- // });
469
313
  let haltReturns = false;
314
+ const ipcfile = "/tmp/tpipe_" + Math.random();
315
+ const child = (0, node_child_process_1.spawn)("node",
316
+ // "node --inspect-brk ",
317
+ [builtfile, testResources, ipcfile], {
318
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
319
+ });
470
320
  let buffer = new Buffer("");
471
321
  const server = net_1.default.createServer((socket) => {
322
+ const queue = new queue_js_1.Queue();
472
323
  socket.on("data", (data) => {
473
324
  buffer = Buffer.concat([buffer, data]);
474
- let messages = [];
475
325
  for (let b = 0; b < buffer.length + 1; b++) {
476
- let c = buffer.slice(0, b);
326
+ const c = buffer.slice(0, b);
477
327
  let d;
478
328
  try {
479
329
  d = JSON.parse(c.toString());
480
- messages.push(d);
330
+ queue.enqueue(d);
481
331
  buffer = buffer.slice(b, buffer.length + 1);
482
332
  b = 0;
483
333
  }
@@ -485,66 +335,43 @@ ${addableFiles
485
335
  // b++;
486
336
  }
487
337
  }
488
- messages.forEach(async (payload) => {
489
- // set up the "node" listeners
490
- this.mapping().forEach(async ([command, func]) => {
491
- if (payload[0] === command) {
492
- const x = payload.slice(1, -1);
493
- const r = await this[command](...x);
494
- if (!haltReturns) {
495
- child.send(JSON.stringify({
496
- payload: r,
497
- key: payload[payload.length - 1],
498
- }));
338
+ while (queue.size() > 0) {
339
+ const message = queue.dequeue();
340
+ if (message) {
341
+ // set up the "node" listeners
342
+ this.mapping().forEach(async ([command, func]) => {
343
+ if (message[0] === command) {
344
+ const x = message.slice(1, -1);
345
+ const r = await this[command](...x);
346
+ if (!haltReturns) {
347
+ child.send(JSON.stringify({
348
+ payload: r,
349
+ key: message[message.length - 1],
350
+ }));
351
+ }
499
352
  }
500
- }
501
- });
502
- });
353
+ });
354
+ }
355
+ }
503
356
  });
504
357
  });
505
358
  const oStream = fs_1.default.createWriteStream(`${reportDest}/console_log.txt`);
506
- const child = (0, node_child_process_1.spawn)("node", [builtfile, testResources, "--trace-warnings"], {
507
- stdio: ["pipe", "pipe", "pipe", "ipc"],
508
- // silent: true
509
- });
510
- const p = destFolder + "/tpipe";
511
- // exec(`lsof`, (ec, out, err) => {
512
- // console.log(ec, out, err);
513
- // });
514
- // if (fs.existsSync(p)) {
515
- // fs.rmSync(p);
516
- // }
517
359
  const errFile = `${reportDest}/error.txt`;
518
360
  if (fs_1.default.existsSync(errFile)) {
519
361
  fs_1.default.rmSync(errFile);
520
362
  }
521
- // server.on("error", (e) => {
522
- // if (e.code === "EADDRINUSE") {
523
- // console.error(e);
524
- // process.exit(-1);
525
- // // console.error("Address in use, retrying...");
526
- // // setTimeout(() => {
527
- // // server.close();
528
- // // server.listen(p);
529
- // // }, 1000);
530
- // }
531
- // });
532
- server.listen(p, () => {
363
+ server.listen(ipcfile, () => {
533
364
  var _a, _b;
534
365
  (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
535
- oStream.write(`stderr data ${data}`);
366
+ oStream.write(`stderr > ${data}`);
536
367
  });
537
368
  (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
538
- oStream.write(`stdout data ${data}`);
369
+ oStream.write(`stdout > ${data}`);
539
370
  });
540
371
  child.on("close", (code) => {
541
- console.log("close");
542
- console.log("deleting", p);
543
- if (fs_1.default.existsSync(p)) {
544
- fs_1.default.rmSync(p);
545
- }
546
372
  oStream.close();
547
373
  server.close();
374
+ // this.receiveFeaturesV2(reportDest, src, "node");
548
375
  if (code === null) {
549
376
  this.bddTestIsNowDone(src, -1);
550
377
  statusMessagePretty(-1, src);
@@ -560,134 +387,276 @@ ${addableFiles
560
387
  haltReturns = true;
561
388
  });
562
389
  child.on("exit", (code) => {
563
- console.log("exit");
564
- console.log("deleting", p);
565
- if (fs_1.default.existsSync(p)) {
566
- fs_1.default.rmSync(p);
567
- }
568
390
  haltReturns = true;
391
+ for (let i = 0; i <= portsToUse.length; i++) {
392
+ if (portsToUse[i]) {
393
+ this.ports[portsToUse[i]] = true; //port is open again
394
+ }
395
+ }
569
396
  });
570
397
  child.on("error", (e) => {
571
398
  console.log("error");
572
- console.log("deleting", p);
573
- if (fs_1.default.existsSync(p)) {
574
- fs_1.default.rmSync(p);
575
- }
576
399
  haltReturns = true;
577
400
  console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e.name}. Check ${errFile}for more info`)));
578
401
  this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
579
402
  this.bddTestIsNowDone(src, -1);
580
403
  statusMessagePretty(-1, src);
581
- // this.bddTestIsNowDone(src, -1);
582
- // statusMessagePretty(-1, src);
583
404
  });
584
405
  });
585
- child.send({ path: p });
586
- for (let i = 0; i <= portsToUse.length; i++) {
587
- if (portsToUse[i]) {
588
- this.ports[portsToUse[i]] = "true"; //port is open again
589
- }
590
- }
591
406
  };
592
- this.launchWebSideCar = async (src, dest, testConfig) => {
593
- const d = dest + ".mjs";
407
+ this.launchWebSideCar = async (
408
+ // src: string,
409
+ // dest: string,
410
+ testConfig) => {
411
+ const src = testConfig[0];
412
+ const dest = src.split(".").slice(0, -1).join(".");
413
+ // const d = dest + ".mjs";
414
+ const destFolder = dest.replace(".mjs", "");
594
415
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchWebSideCar ${src}`)));
595
416
  const fileStreams2 = [];
596
417
  const doneFileStream2 = [];
418
+ const oStream = fs_1.default.createWriteStream(`${destFolder}/console_log.txt`);
597
419
  return new Promise((res, rej) => {
598
420
  this.browser
599
421
  .newPage()
600
- .then((page) => {
601
- // page.on("console", (msg) => {
602
- // console.log("web > ", msg.args(), msg.text());
603
- // // for (let i = 0; i < msg._args.length; ++i)
604
- // // console.log(`${i}: ${msg._args[i]}`);
605
- // });
606
- page.exposeFunction("custom-screenshot", async (ssOpts, testName) => {
607
- const p = ssOpts.path;
608
- const dir = path_1.default.dirname(p);
609
- fs_1.default.mkdirSync(dir, {
610
- recursive: true,
611
- });
612
- files[testName].add(ssOpts.path);
613
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
614
- if (!screenshots[testName]) {
615
- screenshots[testName] = [];
616
- }
617
- screenshots[testName].push(sPromise);
618
- await sPromise;
619
- return sPromise;
422
+ .then(async (page) => {
423
+ this.mapping().forEach(async ([command, func]) => {
424
+ page.exposeFunction(command, func);
620
425
  });
621
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
622
- const dir = path_1.default.dirname(fp);
623
- fs_1.default.mkdirSync(dir, {
624
- recursive: true,
625
- });
626
- const p = new Promise(async (res, rej) => {
627
- fs_1.default.writeFileSync(fp, contents);
628
- res(fp);
426
+ const close = () => {
427
+ if (!files[src]) {
428
+ files[src] = new Set();
429
+ }
430
+ // files[t].add(filepath);
431
+ // fs.writeFileSync(
432
+ // destFolder + "/manifest.json",
433
+ // JSON.stringify(Array.from(files[src]))
434
+ // );
435
+ delete files[src];
436
+ Promise.all(screenshots[src] || []).then(() => {
437
+ delete screenshots[src];
438
+ page.close();
439
+ oStream.close();
629
440
  });
630
- doneFileStream2.push(p);
631
- if (!files[testName]) {
632
- files[testName] = new Set();
441
+ };
442
+ page.on("pageerror", (err) => {
443
+ console.debug(`Error from ${src}: [${err.name}] `);
444
+ oStream.write(err.name);
445
+ oStream.write("\n");
446
+ if (err.cause) {
447
+ console.debug(`Error from ${src} cause: [${err.cause}] `);
448
+ oStream.write(err.cause);
449
+ oStream.write("\n");
633
450
  }
634
- files[testName].add(fp);
635
- return p;
636
- });
637
- page.exposeFunction("existsSync", (fp, contents) => {
638
- return fs_1.default.existsSync(fp);
639
- });
640
- page.exposeFunction("mkdirSync", (fp) => {
641
- if (!fs_1.default.existsSync(fp)) {
642
- return fs_1.default.mkdirSync(fp, {
643
- recursive: true,
644
- });
451
+ if (err.stack) {
452
+ console.debug(`Error from stack ${src}: [${err.stack}] `);
453
+ oStream.write(err.stack);
454
+ oStream.write("\n");
645
455
  }
646
- return false;
456
+ console.debug(`Error from message ${src}: [${err.message}] `);
457
+ oStream.write(err.message);
458
+ oStream.write("\n");
459
+ this.bddTestIsNowDone(src, -1);
460
+ close();
647
461
  });
648
- page.exposeFunction("createWriteStream", (fp, testName) => {
649
- const f = fs_1.default.createWriteStream(fp);
650
- files[testName].add(fp);
651
- const p = new Promise((res, rej) => {
652
- res(fp);
653
- });
654
- doneFileStream2.push(p);
655
- f.on("close", async () => {
656
- await p;
657
- });
658
- fileStreams2.push(f);
659
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
462
+ page.on("console", (log) => {
463
+ oStream.write(log.text());
464
+ oStream.write(JSON.stringify(log.location()));
465
+ oStream.write(JSON.stringify(log.stackTrace()));
466
+ oStream.write("\n");
660
467
  });
661
- page.exposeFunction("write", async (uid, contents) => {
662
- return fileStreams2[uid].write(contents);
468
+ await page.goto(`file://${`${destFolder}.html`}`, {});
469
+ const webArgz = JSON.stringify({
470
+ name: dest,
471
+ ports: [].toString(),
472
+ fs: dest,
473
+ browserWSEndpoint: this.browser.wsEndpoint(),
663
474
  });
664
- page.exposeFunction("end", async (uid) => {
665
- return fileStreams2[uid].end();
475
+ const d = `${dest}?cacheBust=${Date.now()}`;
476
+ const evaluation = `
477
+ import('${d}').then(async (x) => {
478
+
479
+ try {
480
+ return await (await x.default).receiveTestResourceConfig(${webArgz})
481
+ } catch (e) {
482
+ console.log("fail", e.toString())
483
+ }
484
+ })`;
485
+ await page
486
+ .evaluate(evaluation)
487
+ .then(async ({ fails, failed, features }) => {
488
+ // this.receiveFeatures(features, destFolder, src, "web");
489
+ // this.receiveFeaturesV2(reportDest, src, "web");
490
+ statusMessagePretty(fails, src);
491
+ this.bddTestIsNowDone(src, fails);
492
+ })
493
+ .catch((e) => {
494
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchWebSidecar - ${src} errored with: ${e}`)));
495
+ })
496
+ .finally(() => {
497
+ this.bddTestIsNowDone(src, -1);
498
+ close();
666
499
  });
667
500
  return page;
501
+ // return page;
668
502
  })
669
503
  .then(async (page) => {
670
504
  await page.goto(`file://${`${dest}.html`}`, {});
671
505
  /* @ts-ignore:next-line */
672
- res(page);
506
+ res([Math.random(), page]);
673
507
  });
674
508
  });
675
509
  };
676
- this.launchNodeSideCar = async (src, dest, testConfig) => {
510
+ this.launchNodeSideCar = async (sidecar) => {
511
+ const src = sidecar[0];
512
+ const dest = process.cwd() + `/testeranto/bundles/node/${this.name}/${sidecar[0]}`;
677
513
  const d = dest + ".mjs";
678
- console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchNodeSideCar ${src}`)));
514
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchNodeSideCar ${sidecar[0]}`)));
515
+ const destFolder = dest.replace(".ts", "");
516
+ const reportDest = `testeranto/reports/${this.name}/${src
517
+ .split(".")
518
+ .slice(0, -1)
519
+ .join(".")}/node`;
520
+ const argz = {
521
+ name: sidecar[0],
522
+ ports: [],
523
+ fs: destFolder,
524
+ browserWSEndpoint: this.browser.wsEndpoint(),
525
+ };
526
+ const testReq = sidecar[2];
527
+ const portsToUse = [];
528
+ if (testReq.ports === 0) {
529
+ // argz = {
530
+ // name: sidecar[0],
531
+ // ports: portsToUse,
532
+ // fs: destFolder,
533
+ // browserWSEndpoint: this.browser.wsEndpoint(),
534
+ // };
535
+ }
536
+ else if (testReq.ports > 0) {
537
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
538
+ if (openPorts.length >= testReq.ports) {
539
+ for (let i = 0; i < testReq.ports; i++) {
540
+ portsToUse.push(openPorts[i][0]);
541
+ this.ports[openPorts[i][0]] = false; // port is now closed
542
+ }
543
+ console.log("nodeSideCar portsToUse", portsToUse);
544
+ argz.ports = portsToUse;
545
+ const builtfile = destFolder + ".mjs";
546
+ let haltReturns = false;
547
+ let buffer = new Buffer("");
548
+ const server = net_1.default.createServer((socket) => {
549
+ socket.on("data", (data) => {
550
+ buffer = Buffer.concat([buffer, data]);
551
+ const messages = [];
552
+ for (let b = 0; b < buffer.length + 1; b++) {
553
+ const c = buffer.slice(0, b);
554
+ let d;
555
+ try {
556
+ d = JSON.parse(c.toString());
557
+ messages.push(d);
558
+ buffer = buffer.slice(b, buffer.length + 1);
559
+ b = 0;
560
+ }
561
+ catch (e) {
562
+ // b++;
563
+ }
564
+ }
565
+ messages.forEach(async (payload) => {
566
+ this.mapping().forEach(async ([command, func]) => {
567
+ if (payload[0] === command) {
568
+ const x = payload.slice(1, -1);
569
+ const r = await this[command](...x);
570
+ if (!haltReturns) {
571
+ child.send(JSON.stringify({
572
+ payload: r,
573
+ key: payload[payload.length - 1],
574
+ }));
575
+ }
576
+ }
577
+ });
578
+ });
579
+ });
580
+ });
581
+ const oStream = fs_1.default.createWriteStream(`${reportDest}/console_log.txt`);
582
+ const child = (0, node_child_process_1.spawn)("node", [builtfile, JSON.stringify(argz)], {
583
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
584
+ // silent: true
585
+ });
586
+ const p = "/tmp/tpipe" + Math.random();
587
+ const errFile = `${reportDest}/error.txt`;
588
+ server.listen(p, () => {
589
+ var _a, _b;
590
+ (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
591
+ oStream.write(`stderr > ${data}`);
592
+ });
593
+ (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
594
+ oStream.write(`stdout > ${data}`);
595
+ });
596
+ child.on("close", (code) => {
597
+ oStream.close();
598
+ server.close();
599
+ haltReturns = true;
600
+ });
601
+ child.on("exit", (code) => {
602
+ haltReturns = true;
603
+ for (let i = 0; i <= portsToUse.length; i++) {
604
+ if (portsToUse[i]) {
605
+ this.ports[portsToUse[i]] = true; //port is open again
606
+ }
607
+ }
608
+ });
609
+ child.on("error", (e) => {
610
+ if (fs_1.default.existsSync(p)) {
611
+ fs_1.default.rmSync(p);
612
+ }
613
+ haltReturns = true;
614
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchNodeSideCar - ${src} errored with: ${e.name}. Check ${errFile}for more info`)));
615
+ this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
616
+ // this.bddTestIsNowDone(src, -1);
617
+ // statusMessagePretty(-1, src);
618
+ });
619
+ });
620
+ child.send({ path: p });
621
+ const r = Math.random();
622
+ this.nodeSidecars[r] = child;
623
+ return [r, argz];
624
+ }
625
+ else {
626
+ console.log("Not enough open ports!", openPorts, testReq.ports);
627
+ this.queue.push(sidecar[0]);
628
+ return [Math.random(), argz];
629
+ }
630
+ }
631
+ else {
632
+ console.error("negative port makes no sense", sidecar[0]);
633
+ process.exit(-1);
634
+ }
635
+ };
636
+ this.stopPureSideCar = async (uid) => {
637
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`stopPureSideCar ${uid}`)));
638
+ await this.sidecars[uid].shutdown();
639
+ return;
640
+ };
641
+ this.launchPureSideCar = async (sidecar) => {
642
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchPureSideCar ${sidecar[0]}`)));
643
+ const r = Math.random();
644
+ const dest = process.cwd() + `/testeranto/bundles/pure/${this.name}/${sidecar[0]}`;
645
+ const builtfile = dest.split(".").slice(0, -1).concat("mjs").join(".");
679
646
  const destFolder = dest.replace(".mjs", "");
680
- let argz = "";
681
- const testConfigResource = testConfig[2];
682
- let portsToUse = [];
647
+ let argz;
648
+ const z = sidecar[2];
649
+ const testConfigResource = sidecar[2];
650
+ const src = sidecar[0];
651
+ const portsToUse = [];
683
652
  if (testConfigResource.ports === 0) {
684
- argz = JSON.stringify({
685
- scheduled: true,
653
+ argz = {
654
+ // scheduled: true,
686
655
  name: src,
687
656
  ports: portsToUse,
688
657
  fs: destFolder,
689
658
  browserWSEndpoint: this.browser.wsEndpoint(),
690
- });
659
+ };
691
660
  }
692
661
  else if (testConfigResource.ports > 0) {
693
662
  const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
@@ -697,14 +666,14 @@ ${addableFiles
697
666
  portsToUse.push(openPorts[i][0]);
698
667
  this.ports[openPorts[i][0]] = false; // port is now closed
699
668
  }
700
- argz = JSON.stringify({
701
- scheduled: true,
669
+ argz = {
670
+ // scheduled: true,
702
671
  name: src,
703
672
  // ports: [3333],
704
673
  ports: portsToUse,
705
674
  fs: ".",
706
675
  browserWSEndpoint: this.browser.wsEndpoint(),
707
- });
676
+ };
708
677
  }
709
678
  else {
710
679
  this.queue.push(src);
@@ -715,29 +684,17 @@ ${addableFiles
715
684
  console.error("negative port makes no sense", src);
716
685
  process.exit(-1);
717
686
  }
718
- const builtfile = dest + ".mjs";
687
+ // const builtfile = dest + ".mjs";
719
688
  await Promise.resolve(`${`${builtfile}?cacheBust=${Date.now()}`}`).then(s => __importStar(require(s))).then((module) => {
720
- return module.default.then((defaultModule) => {
721
- // console.log("defaultModule", defaultModule);
722
- const s = new defaultModule();
723
- s.receiveTestResourceConfig(argz);
724
- // Object.create(defaultModule);
725
- // defaultModule
726
- // .receiveTestResourceConfig(argz)
727
- // .then((x) => {
728
- // console.log("then", x);
729
- // return x;
730
- // })
731
- // .catch((e) => {
732
- // console.log("catch", e);
733
- // });
734
- });
689
+ this.pureSidecars[r] = module.default;
690
+ this.pureSidecars[r].start(argz);
735
691
  });
736
- for (let i = 0; i <= portsToUse.length; i++) {
737
- if (portsToUse[i]) {
738
- this.ports[portsToUse[i]] = "true"; //port is open again
739
- }
740
- }
692
+ return [r, argz];
693
+ // for (let i = 0; i <= portsToUse.length; i++) {
694
+ // if (portsToUse[i]) {
695
+ // this.ports[portsToUse[i]] = "true"; //port is open again
696
+ // }
697
+ // }
741
698
  };
742
699
  this.launchWeb = async (src, dest) => {
743
700
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! web ${src}`)));
@@ -751,7 +708,7 @@ ${addableFiles
751
708
  }
752
709
  const destFolder = dest.replace(".mjs", "");
753
710
  const webArgz = JSON.stringify({
754
- name: dest,
711
+ name: src,
755
712
  ports: [].toString(),
756
713
  fs: reportDest,
757
714
  browserWSEndpoint: this.browser.wsEndpoint(),
@@ -771,9 +728,20 @@ ${addableFiles
771
728
  this.browser
772
729
  .newPage()
773
730
  .then((page) => {
774
- // set up the "node" listeners
775
731
  this.mapping().forEach(async ([command, func]) => {
776
- page.exposeFunction(command, func);
732
+ if (command === "page") {
733
+ page.exposeFunction(command, (x) => {
734
+ if (x) {
735
+ return func(x);
736
+ }
737
+ else {
738
+ return func(page.mainFrame()._id);
739
+ }
740
+ });
741
+ }
742
+ else {
743
+ return page.exposeFunction(command, func);
744
+ }
777
745
  });
778
746
  return page;
779
747
  })
@@ -783,7 +751,10 @@ ${addableFiles
783
751
  files[src] = new Set();
784
752
  }
785
753
  // files[t].add(filepath);
786
- fs_1.default.writeFileSync(destFolder + "/manifest.json", JSON.stringify(Array.from(files[src])));
754
+ // fs.writeFileSync(
755
+ // destFolder + "/manifest.json",
756
+ // JSON.stringify(Array.from(files[src]))
757
+ // );
787
758
  delete files[src];
788
759
  Promise.all(screenshots[src] || []).then(() => {
789
760
  delete screenshots[src];
@@ -813,48 +784,55 @@ ${addableFiles
813
784
  });
814
785
  page.on("console", (log) => {
815
786
  oStream.write(log.text());
787
+ oStream.write("\n");
816
788
  oStream.write(JSON.stringify(log.location()));
789
+ oStream.write("\n");
817
790
  oStream.write(JSON.stringify(log.stackTrace()));
818
791
  oStream.write("\n");
819
792
  });
820
793
  await page.goto(`file://${`${destFolder}.html`}`, {});
794
+ this.webSidecars[Math.random()] = page.mainFrame()._id;
821
795
  await page
822
796
  .evaluate(evaluation)
823
797
  .then(async ({ fails, failed, features }) => {
824
- this.receiveFeatures(features, destFolder, src, "web");
798
+ // this.receiveFeatures(features, destFolder, src, "web");
799
+ // this.receiveFeaturesV2(reportDest, src, "web");
825
800
  statusMessagePretty(fails, src);
826
801
  this.bddTestIsNowDone(src, fails);
827
802
  })
828
803
  .catch((e) => {
829
- console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e}`)));
804
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchweb - ${src} errored with: ${e}`)));
830
805
  })
831
806
  .finally(() => {
832
807
  this.bddTestIsNowDone(src, -1);
808
+ // process.exit(-1);
833
809
  close();
834
810
  });
835
811
  return page;
836
812
  });
837
813
  };
838
- this.receiveFeatures = (features, destFolder, srcTest, platform) => {
814
+ this.receiveFeaturesV2 = (reportDest, srcTest, platform) => {
839
815
  const featureDestination = path_1.default.resolve(process.cwd(), "reports", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
840
- features
816
+ const testReport = JSON.parse(fs_1.default.readFileSync(`${reportDest}/tests.json`).toString());
817
+ // console.log("mark2", testReport);
818
+ testReport.features
841
819
  .reduce(async (mm, featureStringKey) => {
820
+ // console.log("mark4", featureStringKey);
842
821
  const accum = await mm;
843
822
  const isUrl = isValidUrl(featureStringKey);
844
823
  if (isUrl) {
845
824
  const u = new URL(featureStringKey);
846
825
  if (u.protocol === "file:") {
847
826
  const newPath = `${process.cwd()}/testeranto/features/internal/${path_1.default.relative(process.cwd(), u.pathname)}`;
848
- await fs_1.default.promises.mkdir(path_1.default.dirname(newPath), { recursive: true });
849
- try {
850
- await fs_1.default.unlinkSync(newPath);
851
- // console.log(`Removed existing link at ${newPath}`);
852
- }
853
- catch (error) {
854
- if (error.code !== "ENOENT") {
855
- // throw error;
856
- }
857
- }
827
+ // await fs.promises.mkdir(path.dirname(newPath), { recursive: true });
828
+ // try {
829
+ // await fs.unlinkSync(newPath);
830
+ // // console.log(`Removed existing link at ${newPath}`);
831
+ // } catch (error) {
832
+ // if (error.code !== "ENOENT") {
833
+ // // throw error;
834
+ // }
835
+ // }
858
836
  // fs.symlink(u.pathname, newPath, (err) => {
859
837
  // if (err) {
860
838
  // // console.error("Error creating symlink:", err);
@@ -862,10 +840,10 @@ ${addableFiles
862
840
  // // console.log("Symlink created successfully");
863
841
  // }
864
842
  // });
865
- accum.files.push(newPath);
843
+ accum.files.push(u.pathname);
866
844
  }
867
845
  else if (u.protocol === "http:" || u.protocol === "https:") {
868
- const newPath = `${process.cwd()}/testeranto/features/external${u.hostname}${u.pathname}`;
846
+ const newPath = `${process.cwd()}/testeranto/features/external/${u.hostname}${u.pathname}`;
869
847
  const body = await this.configs.featureIngestor(featureStringKey);
870
848
  writeFileAndCreateDir(newPath, body);
871
849
  accum.files.push(newPath);
@@ -880,6 +858,7 @@ ${addableFiles
880
858
  return accum;
881
859
  }, Promise.resolve({ files: [], strings: [] }))
882
860
  .then(({ files, strings }) => {
861
+ // Markdown files must be referenced in the prompt but string style features are already present in the test.json file
883
862
  fs_1.default.writeFileSync(`testeranto/reports/${this.name}/${srcTest
884
863
  .split(".")
885
864
  .slice(0, -1)
@@ -889,24 +868,68 @@ ${addableFiles
889
868
  })
890
869
  .join("\n"));
891
870
  });
871
+ // const f: Record<string, string> = {};
872
+ testReport.givens.forEach((g) => {
873
+ if (g.failed === true) {
874
+ this.summary[srcTest].failingFeatures[g.key] = g.features;
875
+ }
876
+ });
877
+ // this.summary[srcTest].failingFeatures = f;
878
+ this.writeBigBoard();
892
879
  };
893
- this.writeBigBoard = () => {
894
- fs_1.default.writeFileSync(`./testeranto/reports/${this.name}/summary.json`, JSON.stringify(this.bigBoard, null, 2));
895
- };
896
- this.name = name;
897
- this.mode = mode;
898
880
  this.ports = {};
899
- this.configs.tests.forEach(([t]) => {
900
- this.bigBoard[t] = {
901
- runTimeError: "?",
902
- typeErrors: "?",
903
- staticErrors: "?",
904
- prompt: "?",
905
- };
906
- });
881
+ this.queue = [];
882
+ this.nodeSidecars = {};
883
+ this.webSidecars = {};
884
+ this.pureSidecars = {};
907
885
  this.configs.ports.forEach((element) => {
908
- this.ports[element] = "true"; // set ports as open
886
+ this.ports[element] = true; // set ports as open
887
+ });
888
+ }
889
+ async stopSideCar(uid) {
890
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`stopSideCar ${uid}`)));
891
+ Object.entries(this.pureSidecars).forEach(async ([k, v]) => {
892
+ if (Number(k) === uid) {
893
+ await this.pureSidecars[Number(k)].stop();
894
+ delete this.pureSidecars[Number(k)];
895
+ }
896
+ });
897
+ Object.entries(this.nodeSidecars).forEach(async ([k, v]) => {
898
+ if (Number(k) === uid) {
899
+ await this.nodeSidecars[Number(k)].send("stop");
900
+ delete this.nodeSidecars[Number(k)];
901
+ }
902
+ });
903
+ Object.entries(this.webSidecars).forEach(async ([k, v]) => {
904
+ if (Number(k) === uid) {
905
+ (await this.browser.pages()).forEach(async (p) => {
906
+ if (p.mainFrame()._id === k) {
907
+ await this.webSidecars[Number(k)].close();
908
+ delete this.webSidecars[Number(k)];
909
+ }
910
+ });
911
+ }
909
912
  });
913
+ return;
914
+ }
915
+ async launchSideCar(n, name) {
916
+ const c = this.configs.tests.find(([v, r]) => {
917
+ return v === name;
918
+ });
919
+ const s = c[3][n];
920
+ const r = s[1];
921
+ if (r === "node") {
922
+ return this.launchNodeSideCar(s);
923
+ }
924
+ else if (r === "web") {
925
+ return this.launchWebSideCar(s);
926
+ }
927
+ else if (r === "pure") {
928
+ return this.launchPureSideCar(s);
929
+ }
930
+ else {
931
+ throw `unknown runtime ${r}`;
932
+ }
910
933
  }
911
934
  mapping() {
912
935
  return [
@@ -915,20 +938,23 @@ ${addableFiles
915
938
  ["closePage", this.closePage],
916
939
  ["createWriteStream", this.createWriteStream],
917
940
  ["customclose", this.customclose],
918
- ["customScreenShot", this.customScreenShot],
941
+ ["customScreenShot", this.customScreenShot.bind(this)],
919
942
  ["end", this.end],
920
943
  ["existsSync", this.existsSync],
921
944
  ["focusOn", this.focusOn],
922
945
  ["getAttribute", this.getAttribute],
923
- ["getValue", this.getValue],
924
- ["goto", this.goto],
946
+ ["getInnerHtml", this.getInnerHtml],
947
+ // ["setValue", this.setValue],
948
+ ["goto", this.goto.bind(this)],
925
949
  ["isDisabled", this.isDisabled],
950
+ ["launchSideCar", this.launchSideCar.bind(this)],
926
951
  ["mkdirSync", this.mkdirSync],
927
952
  ["newPage", this.newPage],
928
953
  ["page", this.page],
929
954
  ["pages", this.pages],
930
955
  ["screencast", this.screencast],
931
956
  ["screencastStop", this.screencastStop],
957
+ ["stopSideCar", this.stopSideCar.bind(this)],
932
958
  ["typeInto", this.typeInto],
933
959
  ["waitForSelector", this.waitForSelector],
934
960
  ["write", this.write],
@@ -938,54 +964,57 @@ ${addableFiles
938
964
  async start() {
939
965
  // set up the "pure" listeners
940
966
  this.mapping().forEach(async ([command, func]) => {
941
- // page.exposeFunction(command, func);
942
967
  globalThis[command] = func;
943
968
  });
944
969
  if (!fs_1.default.existsSync(`testeranto/reports/${this.name}`)) {
945
970
  fs_1.default.mkdirSync(`testeranto/reports/${this.name}`);
946
971
  }
947
- // await pollForFile();
948
- this.browser = (await puppeteer_core_1.default.launch({
949
- slowMo: 1,
950
- waitForInitialPage: false,
951
- executablePath:
952
- // process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium",
953
- "/opt/homebrew/bin/chromium",
954
- headless: true,
955
- dumpio: false,
956
- devtools: false,
957
- args: [
958
- "--allow-file-access-from-files",
959
- "--allow-insecure-localhost",
960
- "--allow-running-insecure-content",
961
- "--auto-open-devtools-for-tabs",
962
- "--disable-dev-shm-usage",
963
- "--disable-extensions",
964
- "--disable-gpu",
965
- "--disable-setuid-sandbox",
966
- "--disable-site-isolation-trials",
967
- "--disable-site-isolation-trials",
968
- "--disable-web-security",
969
- "--no-first-run",
970
- "--no-sandbox",
971
- "--no-startup-window",
972
- "--reduce-security-for-testing",
973
- "--remote-allow-origins=*",
974
- `--remote-debugging-port=3234`,
975
- "--unsafely-treat-insecure-origin-as-secure=*",
976
- // "--disable-features=IsolateOrigins,site-per-process",
977
- // "--disable-features=IsolateOrigins",
978
- // "--disk-cache-dir=/dev/null",
979
- // "--disk-cache-size=1",
980
- // "--no-zygote",
981
- // "--remote-allow-origins=ws://localhost:3234",
982
- // "--single-process",
983
- // "--start-maximized",
984
- // "--unsafely-treat-insecure-origin-as-secure",
985
- // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
986
- ],
987
- }));
988
- const { nodeEntryPoints, webEntryPoints, importEntryPoints } = this.getRunnables(this.configs.tests, this.name);
972
+ const executablePath = "/opt/homebrew/bin/chromium";
973
+ try {
974
+ this.browser = await puppeteer_core_1.default.launch({
975
+ slowMo: 1,
976
+ waitForInitialPage: false,
977
+ executablePath,
978
+ headless: true,
979
+ dumpio: false,
980
+ devtools: false,
981
+ args: [
982
+ "--disable-features=site-per-process",
983
+ "--allow-file-access-from-files",
984
+ "--allow-insecure-localhost",
985
+ "--allow-running-insecure-content",
986
+ "--auto-open-devtools-for-tabs",
987
+ "--disable-dev-shm-usage",
988
+ "--disable-extensions",
989
+ "--disable-gpu",
990
+ "--disable-setuid-sandbox",
991
+ "--disable-site-isolation-trials",
992
+ "--disable-web-security",
993
+ "--no-first-run",
994
+ "--no-sandbox",
995
+ "--no-startup-window",
996
+ "--reduce-security-for-testing",
997
+ "--remote-allow-origins=*",
998
+ "--unsafely-treat-insecure-origin-as-secure=*",
999
+ `--remote-debugging-port=3234`,
1000
+ // "--disable-features=IsolateOrigins,site-per-process",
1001
+ // "--disable-features=IsolateOrigins",
1002
+ // "--disk-cache-dir=/dev/null",
1003
+ // "--disk-cache-size=1",
1004
+ // "--no-zygote",
1005
+ // "--remote-allow-origins=ws://localhost:3234",
1006
+ // "--single-process",
1007
+ // "--start-maximized",
1008
+ // "--unsafely-treat-insecure-origin-as-secure",
1009
+ // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
1010
+ ],
1011
+ });
1012
+ }
1013
+ catch (e) {
1014
+ console.error(e);
1015
+ console.error("could not start chrome via puppeter. Check this path: ", executablePath);
1016
+ }
1017
+ const { nodeEntryPoints, webEntryPoints, pureEntryPoints } = this.getRunnables(this.configs.tests, this.name);
989
1018
  [
990
1019
  [
991
1020
  nodeEntryPoints,
@@ -1004,7 +1033,7 @@ ${addableFiles
1004
1033
  },
1005
1034
  ],
1006
1035
  [
1007
- importEntryPoints,
1036
+ pureEntryPoints,
1008
1037
  this.launchPure,
1009
1038
  "pure",
1010
1039
  (w) => {
@@ -1037,6 +1066,35 @@ ${addableFiles
1037
1066
  this.metafileOutputs(runtime);
1038
1067
  }));
1039
1068
  });
1069
+ // Object.keys(this.configs.externalTests).forEach((et) => {
1070
+ // this.launchExternalTest(et, this.configs.externalTests[et]);
1071
+ // });
1072
+ }
1073
+ async launchExternalTest(externalTestName, externalTest) {
1074
+ // fs.mkdirSync(`testeranto/externalTests/${externalTestName}`);
1075
+ // exec(externalTest.exec, (error, stdout, stderr) => {
1076
+ // if (error) {
1077
+ // fs.writeFileSync(
1078
+ // `testeranto/externalTests/${externalTestName}/exitcode.txt`,
1079
+ // `${error.name}\n${error.message}\n${error.code}\n`
1080
+ // );
1081
+ // } else {
1082
+ // fs.writeFileSync(
1083
+ // `testeranto/externalTests/${externalTestName}/exitcode.txt`,
1084
+ // `0`
1085
+ // );
1086
+ // }
1087
+ // fs.writeFileSync(
1088
+ // `testeranto/externalTests/${externalTestName}/stdout.txt`,
1089
+ // stdout
1090
+ // );
1091
+ // fs.writeFileSync(
1092
+ // `testeranto/externalTests/${externalTestName}/stderr.txt`,
1093
+ // stderr
1094
+ // );
1095
+ // // console.log(`externalTest stdout: ${stdout}`);
1096
+ // // console.error(`externalTest stderr: ${stderr}`);
1097
+ // });
1040
1098
  }
1041
1099
  async stop() {
1042
1100
  console.log(ansi_colors_1.default.inverse("Testeranto-Run is shutting down gracefully..."));
@@ -1054,11 +1112,17 @@ ${addableFiles
1054
1112
  return;
1055
1113
  const outputs = metafile.outputs;
1056
1114
  Object.keys(outputs).forEach(async (k) => {
1115
+ const pattern = `testeranto/bundles/${platform}/${this.name}/${this.configs.src}`;
1116
+ if (!k.startsWith(pattern)) {
1117
+ return false;
1118
+ }
1057
1119
  const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
1058
1120
  if (!fs_1.default.existsSync(i))
1059
1121
  return false;
1060
1122
  if (i.startsWith("node_modules"))
1061
1123
  return false;
1124
+ if (i.startsWith("./node_modules"))
1125
+ return false;
1062
1126
  return true;
1063
1127
  });
1064
1128
  const f = `${k.split(".").slice(0, -1).join(".")}/`;