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