testeranto 0.129.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 +333 -34
  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 +484 -425
  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 +485 -426
  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 +693 -412
  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 +608 -582
  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
@@ -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,22 @@ ${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", [builtfile, testResources, ipcfile], {
316
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
317
+ });
470
318
  let buffer = new Buffer("");
471
319
  const server = net_1.default.createServer((socket) => {
320
+ const queue = new queue_js_1.Queue();
472
321
  socket.on("data", (data) => {
473
322
  buffer = Buffer.concat([buffer, data]);
474
- let messages = [];
475
323
  for (let b = 0; b < buffer.length + 1; b++) {
476
- let c = buffer.slice(0, b);
324
+ const c = buffer.slice(0, b);
477
325
  let d;
478
326
  try {
479
327
  d = JSON.parse(c.toString());
480
- messages.push(d);
328
+ queue.enqueue(d);
481
329
  buffer = buffer.slice(b, buffer.length + 1);
482
330
  b = 0;
483
331
  }
@@ -485,66 +333,44 @@ ${addableFiles
485
333
  // b++;
486
334
  }
487
335
  }
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
- }));
336
+ while (queue.size() > 0) {
337
+ const message = queue.dequeue();
338
+ if (message) {
339
+ // set up the "node" listeners
340
+ this.mapping().forEach(async ([command, func]) => {
341
+ if (message[0] === command) {
342
+ const x = message.slice(1, -1);
343
+ const r = await this[command](...x);
344
+ if (!haltReturns) {
345
+ child.send(JSON.stringify({
346
+ payload: r,
347
+ key: message[message.length - 1],
348
+ }));
349
+ }
499
350
  }
500
- }
501
- });
502
- });
351
+ });
352
+ }
353
+ }
503
354
  });
504
355
  });
505
356
  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
357
  const errFile = `${reportDest}/error.txt`;
518
358
  if (fs_1.default.existsSync(errFile)) {
519
359
  fs_1.default.rmSync(errFile);
520
360
  }
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, () => {
361
+ server.listen(ipcfile, () => {
533
362
  var _a, _b;
534
363
  (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
535
- oStream.write(`stderr data ${data}`);
364
+ oStream.write(`stderr > ${data}`);
536
365
  });
537
366
  (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
538
- oStream.write(`stdout data ${data}`);
367
+ oStream.write(`stdout > ${data}`);
539
368
  });
540
369
  child.on("close", (code) => {
541
370
  console.log("close");
542
- console.log("deleting", p);
543
- if (fs_1.default.existsSync(p)) {
544
- fs_1.default.rmSync(p);
545
- }
546
371
  oStream.close();
547
372
  server.close();
373
+ // this.receiveFeaturesV2(reportDest, src, "node");
548
374
  if (code === null) {
549
375
  this.bddTestIsNowDone(src, -1);
550
376
  statusMessagePretty(-1, src);
@@ -561,133 +387,274 @@ ${addableFiles
561
387
  });
562
388
  child.on("exit", (code) => {
563
389
  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
+ }
396
+ console.log("exitthis.ports", this.ports);
569
397
  });
570
398
  child.on("error", (e) => {
571
399
  console.log("error");
572
- console.log("deleting", p);
573
- if (fs_1.default.existsSync(p)) {
574
- fs_1.default.rmSync(p);
575
- }
576
400
  haltReturns = true;
577
401
  console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e.name}. Check ${errFile}for more info`)));
578
402
  this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
579
403
  this.bddTestIsNowDone(src, -1);
580
404
  statusMessagePretty(-1, src);
581
- // this.bddTestIsNowDone(src, -1);
582
- // statusMessagePretty(-1, src);
583
405
  });
584
406
  });
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
407
  };
592
- this.launchWebSideCar = async (src, dest, testConfig) => {
593
- const d = dest + ".mjs";
408
+ this.launchWebSideCar = async (
409
+ // src: string,
410
+ // dest: string,
411
+ testConfig) => {
412
+ const src = testConfig[0];
413
+ const dest = src.split(".").slice(0, -1).join(".");
414
+ // const d = dest + ".mjs";
415
+ const destFolder = dest.replace(".mjs", "");
594
416
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchWebSideCar ${src}`)));
595
417
  const fileStreams2 = [];
596
418
  const doneFileStream2 = [];
419
+ const oStream = fs_1.default.createWriteStream(`${destFolder}/console_log.txt`);
597
420
  return new Promise((res, rej) => {
598
421
  this.browser
599
422
  .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;
423
+ .then(async (page) => {
424
+ this.mapping().forEach(async ([command, func]) => {
425
+ page.exposeFunction(command, func);
620
426
  });
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);
427
+ const close = () => {
428
+ if (!files[src]) {
429
+ files[src] = new Set();
430
+ }
431
+ // files[t].add(filepath);
432
+ fs_1.default.writeFileSync(destFolder + "/manifest.json", JSON.stringify(Array.from(files[src])));
433
+ delete files[src];
434
+ Promise.all(screenshots[src] || []).then(() => {
435
+ delete screenshots[src];
436
+ page.close();
437
+ oStream.close();
629
438
  });
630
- doneFileStream2.push(p);
631
- if (!files[testName]) {
632
- files[testName] = new Set();
439
+ };
440
+ page.on("pageerror", (err) => {
441
+ console.debug(`Error from ${src}: [${err.name}] `);
442
+ oStream.write(err.name);
443
+ oStream.write("\n");
444
+ if (err.cause) {
445
+ console.debug(`Error from ${src} cause: [${err.cause}] `);
446
+ oStream.write(err.cause);
447
+ oStream.write("\n");
633
448
  }
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
- });
449
+ if (err.stack) {
450
+ console.debug(`Error from stack ${src}: [${err.stack}] `);
451
+ oStream.write(err.stack);
452
+ oStream.write("\n");
645
453
  }
646
- return false;
454
+ console.debug(`Error from message ${src}: [${err.message}] `);
455
+ oStream.write(err.message);
456
+ oStream.write("\n");
457
+ this.bddTestIsNowDone(src, -1);
458
+ close();
647
459
  });
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 });
460
+ page.on("console", (log) => {
461
+ oStream.write(log.text());
462
+ oStream.write(JSON.stringify(log.location()));
463
+ oStream.write(JSON.stringify(log.stackTrace()));
464
+ oStream.write("\n");
660
465
  });
661
- page.exposeFunction("write", async (uid, contents) => {
662
- return fileStreams2[uid].write(contents);
466
+ await page.goto(`file://${`${destFolder}.html`}`, {});
467
+ const webArgz = JSON.stringify({
468
+ name: dest,
469
+ ports: [].toString(),
470
+ fs: dest,
471
+ browserWSEndpoint: this.browser.wsEndpoint(),
663
472
  });
664
- page.exposeFunction("end", async (uid) => {
665
- return fileStreams2[uid].end();
473
+ const d = `${dest}?cacheBust=${Date.now()}`;
474
+ const evaluation = `
475
+ import('${d}').then(async (x) => {
476
+
477
+ try {
478
+ return await (await x.default).receiveTestResourceConfig(${webArgz})
479
+ } catch (e) {
480
+ console.log("fail", e.toString())
481
+ }
482
+ })`;
483
+ await page
484
+ .evaluate(evaluation)
485
+ .then(async ({ fails, failed, features }) => {
486
+ // this.receiveFeatures(features, destFolder, src, "web");
487
+ // this.receiveFeaturesV2(reportDest, src, "web");
488
+ statusMessagePretty(fails, src);
489
+ this.bddTestIsNowDone(src, fails);
490
+ })
491
+ .catch((e) => {
492
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchWebSidecar - ${src} errored with: ${e}`)));
493
+ })
494
+ .finally(() => {
495
+ this.bddTestIsNowDone(src, -1);
496
+ close();
666
497
  });
667
498
  return page;
499
+ // return page;
668
500
  })
669
501
  .then(async (page) => {
670
502
  await page.goto(`file://${`${dest}.html`}`, {});
671
503
  /* @ts-ignore:next-line */
672
- res(page);
504
+ res([Math.random(), page]);
673
505
  });
674
506
  });
675
507
  };
676
- this.launchNodeSideCar = async (src, dest, testConfig) => {
508
+ this.launchNodeSideCar = async (sidecar) => {
509
+ const src = sidecar[0];
510
+ const dest = process.cwd() + `/testeranto/bundles/node/${this.name}/${sidecar[0]}`;
677
511
  const d = dest + ".mjs";
678
- console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchNodeSideCar ${src}`)));
512
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchNodeSideCar ${sidecar[0]}`)));
513
+ const destFolder = dest.replace(".ts", "");
514
+ const reportDest = `testeranto/reports/${this.name}/${src
515
+ .split(".")
516
+ .slice(0, -1)
517
+ .join(".")}/node`;
518
+ const argz = {
519
+ name: sidecar[0],
520
+ ports: [],
521
+ fs: destFolder,
522
+ browserWSEndpoint: this.browser.wsEndpoint(),
523
+ };
524
+ const testReq = sidecar[2];
525
+ const portsToUse = [];
526
+ if (testReq.ports === 0) {
527
+ // argz = {
528
+ // name: sidecar[0],
529
+ // ports: portsToUse,
530
+ // fs: destFolder,
531
+ // browserWSEndpoint: this.browser.wsEndpoint(),
532
+ // };
533
+ }
534
+ else if (testReq.ports > 0) {
535
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
536
+ if (openPorts.length >= testReq.ports) {
537
+ for (let i = 0; i < testReq.ports; i++) {
538
+ portsToUse.push(openPorts[i][0]);
539
+ this.ports[openPorts[i][0]] = false; // port is now closed
540
+ }
541
+ console.log("nodeSideCar portsToUse", portsToUse);
542
+ argz.ports = portsToUse;
543
+ const builtfile = destFolder + ".mjs";
544
+ let haltReturns = false;
545
+ let buffer = new Buffer("");
546
+ const server = net_1.default.createServer((socket) => {
547
+ socket.on("data", (data) => {
548
+ buffer = Buffer.concat([buffer, data]);
549
+ const messages = [];
550
+ for (let b = 0; b < buffer.length + 1; b++) {
551
+ const c = buffer.slice(0, b);
552
+ let d;
553
+ try {
554
+ d = JSON.parse(c.toString());
555
+ messages.push(d);
556
+ buffer = buffer.slice(b, buffer.length + 1);
557
+ b = 0;
558
+ }
559
+ catch (e) {
560
+ // b++;
561
+ }
562
+ }
563
+ messages.forEach(async (payload) => {
564
+ this.mapping().forEach(async ([command, func]) => {
565
+ if (payload[0] === command) {
566
+ const x = payload.slice(1, -1);
567
+ const r = await this[command](...x);
568
+ if (!haltReturns) {
569
+ child.send(JSON.stringify({
570
+ payload: r,
571
+ key: payload[payload.length - 1],
572
+ }));
573
+ }
574
+ }
575
+ });
576
+ });
577
+ });
578
+ });
579
+ const oStream = fs_1.default.createWriteStream(`${reportDest}/console_log.txt`);
580
+ const child = (0, node_child_process_1.spawn)("node", [builtfile, JSON.stringify(argz)], {
581
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
582
+ // silent: true
583
+ });
584
+ const p = "/tmp/tpipe" + Math.random();
585
+ const errFile = `${reportDest}/error.txt`;
586
+ server.listen(p, () => {
587
+ var _a, _b;
588
+ (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
589
+ oStream.write(`stderr > ${data}`);
590
+ });
591
+ (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
592
+ oStream.write(`stdout > ${data}`);
593
+ });
594
+ child.on("close", (code) => {
595
+ oStream.close();
596
+ server.close();
597
+ haltReturns = true;
598
+ });
599
+ child.on("exit", (code) => {
600
+ haltReturns = true;
601
+ for (let i = 0; i <= portsToUse.length; i++) {
602
+ if (portsToUse[i]) {
603
+ this.ports[portsToUse[i]] = true; //port is open again
604
+ }
605
+ }
606
+ });
607
+ child.on("error", (e) => {
608
+ if (fs_1.default.existsSync(p)) {
609
+ fs_1.default.rmSync(p);
610
+ }
611
+ haltReturns = true;
612
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchNodeSideCar - ${src} errored with: ${e.name}. Check ${errFile}for more info`)));
613
+ this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
614
+ // this.bddTestIsNowDone(src, -1);
615
+ // statusMessagePretty(-1, src);
616
+ });
617
+ });
618
+ child.send({ path: p });
619
+ const r = Math.random();
620
+ this.nodeSidecars[r] = child;
621
+ return [r, argz];
622
+ }
623
+ else {
624
+ console.log("Not enough open ports!", openPorts, testReq.ports);
625
+ this.queue.push(sidecar[0]);
626
+ return [Math.random(), argz];
627
+ }
628
+ }
629
+ else {
630
+ console.error("negative port makes no sense", sidecar[0]);
631
+ process.exit(-1);
632
+ }
633
+ };
634
+ this.stopPureSideCar = async (uid) => {
635
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`stopPureSideCar ${uid}`)));
636
+ await this.sidecars[uid].shutdown();
637
+ return;
638
+ };
639
+ this.launchPureSideCar = async (sidecar) => {
640
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchPureSideCar ${sidecar[0]}`)));
641
+ const r = Math.random();
642
+ const dest = process.cwd() + `/testeranto/bundles/pure/${this.name}/${sidecar[0]}`;
643
+ const builtfile = dest.split(".").slice(0, -1).concat("mjs").join(".");
679
644
  const destFolder = dest.replace(".mjs", "");
680
- let argz = "";
681
- const testConfigResource = testConfig[2];
682
- let portsToUse = [];
645
+ let argz;
646
+ const z = sidecar[2];
647
+ const testConfigResource = sidecar[2];
648
+ const src = sidecar[0];
649
+ const portsToUse = [];
683
650
  if (testConfigResource.ports === 0) {
684
- argz = JSON.stringify({
685
- scheduled: true,
651
+ argz = {
652
+ // scheduled: true,
686
653
  name: src,
687
654
  ports: portsToUse,
688
655
  fs: destFolder,
689
656
  browserWSEndpoint: this.browser.wsEndpoint(),
690
- });
657
+ };
691
658
  }
692
659
  else if (testConfigResource.ports > 0) {
693
660
  const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
@@ -697,14 +664,14 @@ ${addableFiles
697
664
  portsToUse.push(openPorts[i][0]);
698
665
  this.ports[openPorts[i][0]] = false; // port is now closed
699
666
  }
700
- argz = JSON.stringify({
701
- scheduled: true,
667
+ argz = {
668
+ // scheduled: true,
702
669
  name: src,
703
670
  // ports: [3333],
704
671
  ports: portsToUse,
705
672
  fs: ".",
706
673
  browserWSEndpoint: this.browser.wsEndpoint(),
707
- });
674
+ };
708
675
  }
709
676
  else {
710
677
  this.queue.push(src);
@@ -715,29 +682,17 @@ ${addableFiles
715
682
  console.error("negative port makes no sense", src);
716
683
  process.exit(-1);
717
684
  }
718
- const builtfile = dest + ".mjs";
685
+ // const builtfile = dest + ".mjs";
719
686
  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
- });
687
+ this.pureSidecars[r] = module.default;
688
+ this.pureSidecars[r].start(argz);
735
689
  });
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
- }
690
+ return [r, argz];
691
+ // for (let i = 0; i <= portsToUse.length; i++) {
692
+ // if (portsToUse[i]) {
693
+ // this.ports[portsToUse[i]] = "true"; //port is open again
694
+ // }
695
+ // }
741
696
  };
742
697
  this.launchWeb = async (src, dest) => {
743
698
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! web ${src}`)));
@@ -751,7 +706,7 @@ ${addableFiles
751
706
  }
752
707
  const destFolder = dest.replace(".mjs", "");
753
708
  const webArgz = JSON.stringify({
754
- name: dest,
709
+ name: src,
755
710
  ports: [].toString(),
756
711
  fs: reportDest,
757
712
  browserWSEndpoint: this.browser.wsEndpoint(),
@@ -771,9 +726,20 @@ ${addableFiles
771
726
  this.browser
772
727
  .newPage()
773
728
  .then((page) => {
774
- // set up the "node" listeners
775
729
  this.mapping().forEach(async ([command, func]) => {
776
- page.exposeFunction(command, func);
730
+ if (command === "page") {
731
+ page.exposeFunction(command, (x) => {
732
+ if (x) {
733
+ return func(x);
734
+ }
735
+ else {
736
+ return func(page.mainFrame()._id);
737
+ }
738
+ });
739
+ }
740
+ else {
741
+ return page.exposeFunction(command, func);
742
+ }
777
743
  });
778
744
  return page;
779
745
  })
@@ -813,48 +779,55 @@ ${addableFiles
813
779
  });
814
780
  page.on("console", (log) => {
815
781
  oStream.write(log.text());
782
+ oStream.write("\n");
816
783
  oStream.write(JSON.stringify(log.location()));
784
+ oStream.write("\n");
817
785
  oStream.write(JSON.stringify(log.stackTrace()));
818
786
  oStream.write("\n");
819
787
  });
820
788
  await page.goto(`file://${`${destFolder}.html`}`, {});
789
+ this.webSidecars[Math.random()] = page.mainFrame()._id;
821
790
  await page
822
791
  .evaluate(evaluation)
823
792
  .then(async ({ fails, failed, features }) => {
824
- this.receiveFeatures(features, destFolder, src, "web");
793
+ // this.receiveFeatures(features, destFolder, src, "web");
794
+ // this.receiveFeaturesV2(reportDest, src, "web");
825
795
  statusMessagePretty(fails, src);
826
796
  this.bddTestIsNowDone(src, fails);
827
797
  })
828
798
  .catch((e) => {
829
- console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e}`)));
799
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`launchweb - ${src} errored with: ${e}`)));
830
800
  })
831
801
  .finally(() => {
832
802
  this.bddTestIsNowDone(src, -1);
803
+ // process.exit(-1);
833
804
  close();
834
805
  });
835
806
  return page;
836
807
  });
837
808
  };
838
- this.receiveFeatures = (features, destFolder, srcTest, platform) => {
809
+ this.receiveFeaturesV2 = (reportDest, srcTest, platform) => {
839
810
  const featureDestination = path_1.default.resolve(process.cwd(), "reports", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
840
- features
811
+ const testReport = JSON.parse(fs_1.default.readFileSync(`${reportDest}/tests.json`).toString());
812
+ // console.log("mark2", testReport);
813
+ testReport.features
841
814
  .reduce(async (mm, featureStringKey) => {
815
+ // console.log("mark4", featureStringKey);
842
816
  const accum = await mm;
843
817
  const isUrl = isValidUrl(featureStringKey);
844
818
  if (isUrl) {
845
819
  const u = new URL(featureStringKey);
846
820
  if (u.protocol === "file:") {
847
821
  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
- }
822
+ // await fs.promises.mkdir(path.dirname(newPath), { recursive: true });
823
+ // try {
824
+ // await fs.unlinkSync(newPath);
825
+ // // console.log(`Removed existing link at ${newPath}`);
826
+ // } catch (error) {
827
+ // if (error.code !== "ENOENT") {
828
+ // // throw error;
829
+ // }
830
+ // }
858
831
  // fs.symlink(u.pathname, newPath, (err) => {
859
832
  // if (err) {
860
833
  // // console.error("Error creating symlink:", err);
@@ -862,10 +835,10 @@ ${addableFiles
862
835
  // // console.log("Symlink created successfully");
863
836
  // }
864
837
  // });
865
- accum.files.push(newPath);
838
+ accum.files.push(u.pathname);
866
839
  }
867
840
  else if (u.protocol === "http:" || u.protocol === "https:") {
868
- const newPath = `${process.cwd()}/testeranto/features/external${u.hostname}${u.pathname}`;
841
+ const newPath = `${process.cwd()}/testeranto/features/external/${u.hostname}${u.pathname}`;
869
842
  const body = await this.configs.featureIngestor(featureStringKey);
870
843
  writeFileAndCreateDir(newPath, body);
871
844
  accum.files.push(newPath);
@@ -880,6 +853,7 @@ ${addableFiles
880
853
  return accum;
881
854
  }, Promise.resolve({ files: [], strings: [] }))
882
855
  .then(({ files, strings }) => {
856
+ // Markdown files must be referenced in the prompt but string style features are already present in the test.json file
883
857
  fs_1.default.writeFileSync(`testeranto/reports/${this.name}/${srcTest
884
858
  .split(".")
885
859
  .slice(0, -1)
@@ -889,24 +863,68 @@ ${addableFiles
889
863
  })
890
864
  .join("\n"));
891
865
  });
866
+ // const f: Record<string, string> = {};
867
+ testReport.givens.forEach((g) => {
868
+ if (g.failed === true) {
869
+ this.summary[srcTest].failingFeatures[g.key] = g.features;
870
+ }
871
+ });
872
+ // this.summary[srcTest].failingFeatures = f;
873
+ this.writeBigBoard();
892
874
  };
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
875
  this.ports = {};
899
- this.configs.tests.forEach(([t]) => {
900
- this.bigBoard[t] = {
901
- runTimeError: "?",
902
- typeErrors: "?",
903
- staticErrors: "?",
904
- prompt: "?",
905
- };
906
- });
876
+ this.queue = [];
877
+ this.nodeSidecars = {};
878
+ this.webSidecars = {};
879
+ this.pureSidecars = {};
907
880
  this.configs.ports.forEach((element) => {
908
- this.ports[element] = "true"; // set ports as open
881
+ this.ports[element] = true; // set ports as open
882
+ });
883
+ }
884
+ async stopSideCar(uid) {
885
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`stopSideCar ${uid}`)));
886
+ Object.entries(this.pureSidecars).forEach(async ([k, v]) => {
887
+ if (Number(k) === uid) {
888
+ await this.pureSidecars[Number(k)].stop();
889
+ delete this.pureSidecars[Number(k)];
890
+ }
891
+ });
892
+ Object.entries(this.nodeSidecars).forEach(async ([k, v]) => {
893
+ if (Number(k) === uid) {
894
+ await this.nodeSidecars[Number(k)].send("stop");
895
+ delete this.nodeSidecars[Number(k)];
896
+ }
897
+ });
898
+ Object.entries(this.webSidecars).forEach(async ([k, v]) => {
899
+ if (Number(k) === uid) {
900
+ (await this.browser.pages()).forEach(async (p) => {
901
+ if (p.mainFrame()._id === k) {
902
+ await this.webSidecars[Number(k)].close();
903
+ delete this.webSidecars[Number(k)];
904
+ }
905
+ });
906
+ }
909
907
  });
908
+ return;
909
+ }
910
+ async launchSideCar(n, name) {
911
+ const c = this.configs.tests.find(([v, r]) => {
912
+ return v === name;
913
+ });
914
+ const s = c[3][n];
915
+ const r = s[1];
916
+ if (r === "node") {
917
+ return this.launchNodeSideCar(s);
918
+ }
919
+ else if (r === "web") {
920
+ return this.launchWebSideCar(s);
921
+ }
922
+ else if (r === "pure") {
923
+ return this.launchPureSideCar(s);
924
+ }
925
+ else {
926
+ throw `unknown runtime ${r}`;
927
+ }
910
928
  }
911
929
  mapping() {
912
930
  return [
@@ -915,20 +933,23 @@ ${addableFiles
915
933
  ["closePage", this.closePage],
916
934
  ["createWriteStream", this.createWriteStream],
917
935
  ["customclose", this.customclose],
918
- ["customScreenShot", this.customScreenShot],
936
+ ["customScreenShot", this.customScreenShot.bind(this)],
919
937
  ["end", this.end],
920
938
  ["existsSync", this.existsSync],
921
939
  ["focusOn", this.focusOn],
922
940
  ["getAttribute", this.getAttribute],
923
- ["getValue", this.getValue],
924
- ["goto", this.goto],
941
+ ["getInnerHtml", this.getInnerHtml],
942
+ // ["setValue", this.setValue],
943
+ ["goto", this.goto.bind(this)],
925
944
  ["isDisabled", this.isDisabled],
945
+ ["launchSideCar", this.launchSideCar.bind(this)],
926
946
  ["mkdirSync", this.mkdirSync],
927
947
  ["newPage", this.newPage],
928
948
  ["page", this.page],
929
949
  ["pages", this.pages],
930
950
  ["screencast", this.screencast],
931
951
  ["screencastStop", this.screencastStop],
952
+ ["stopSideCar", this.stopSideCar.bind(this)],
932
953
  ["typeInto", this.typeInto],
933
954
  ["waitForSelector", this.waitForSelector],
934
955
  ["write", this.write],
@@ -938,54 +959,57 @@ ${addableFiles
938
959
  async start() {
939
960
  // set up the "pure" listeners
940
961
  this.mapping().forEach(async ([command, func]) => {
941
- // page.exposeFunction(command, func);
942
962
  globalThis[command] = func;
943
963
  });
944
964
  if (!fs_1.default.existsSync(`testeranto/reports/${this.name}`)) {
945
965
  fs_1.default.mkdirSync(`testeranto/reports/${this.name}`);
946
966
  }
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);
967
+ const executablePath = "/opt/homebrew/bin/chromium";
968
+ try {
969
+ this.browser = await puppeteer_core_1.default.launch({
970
+ slowMo: 1,
971
+ waitForInitialPage: false,
972
+ executablePath,
973
+ headless: false,
974
+ dumpio: false,
975
+ devtools: false,
976
+ args: [
977
+ "--disable-features=site-per-process",
978
+ "--allow-file-access-from-files",
979
+ "--allow-insecure-localhost",
980
+ "--allow-running-insecure-content",
981
+ "--auto-open-devtools-for-tabs",
982
+ "--disable-dev-shm-usage",
983
+ "--disable-extensions",
984
+ "--disable-gpu",
985
+ "--disable-setuid-sandbox",
986
+ "--disable-site-isolation-trials",
987
+ "--disable-web-security",
988
+ "--no-first-run",
989
+ "--no-sandbox",
990
+ "--no-startup-window",
991
+ "--reduce-security-for-testing",
992
+ "--remote-allow-origins=*",
993
+ "--unsafely-treat-insecure-origin-as-secure=*",
994
+ `--remote-debugging-port=3234`,
995
+ // "--disable-features=IsolateOrigins,site-per-process",
996
+ // "--disable-features=IsolateOrigins",
997
+ // "--disk-cache-dir=/dev/null",
998
+ // "--disk-cache-size=1",
999
+ // "--no-zygote",
1000
+ // "--remote-allow-origins=ws://localhost:3234",
1001
+ // "--single-process",
1002
+ // "--start-maximized",
1003
+ // "--unsafely-treat-insecure-origin-as-secure",
1004
+ // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
1005
+ ],
1006
+ });
1007
+ }
1008
+ catch (e) {
1009
+ console.error(e);
1010
+ console.error("could not start chrome via puppeter. Check this path: ", executablePath);
1011
+ }
1012
+ const { nodeEntryPoints, webEntryPoints, pureEntryPoints } = this.getRunnables(this.configs.tests, this.name);
989
1013
  [
990
1014
  [
991
1015
  nodeEntryPoints,
@@ -1004,7 +1028,7 @@ ${addableFiles
1004
1028
  },
1005
1029
  ],
1006
1030
  [
1007
- importEntryPoints,
1031
+ pureEntryPoints,
1008
1032
  this.launchPure,
1009
1033
  "pure",
1010
1034
  (w) => {
@@ -1037,6 +1061,35 @@ ${addableFiles
1037
1061
  this.metafileOutputs(runtime);
1038
1062
  }));
1039
1063
  });
1064
+ // Object.keys(this.configs.externalTests).forEach((et) => {
1065
+ // this.launchExternalTest(et, this.configs.externalTests[et]);
1066
+ // });
1067
+ }
1068
+ async launchExternalTest(externalTestName, externalTest) {
1069
+ // fs.mkdirSync(`testeranto/externalTests/${externalTestName}`);
1070
+ // exec(externalTest.exec, (error, stdout, stderr) => {
1071
+ // if (error) {
1072
+ // fs.writeFileSync(
1073
+ // `testeranto/externalTests/${externalTestName}/exitcode.txt`,
1074
+ // `${error.name}\n${error.message}\n${error.code}\n`
1075
+ // );
1076
+ // } else {
1077
+ // fs.writeFileSync(
1078
+ // `testeranto/externalTests/${externalTestName}/exitcode.txt`,
1079
+ // `0`
1080
+ // );
1081
+ // }
1082
+ // fs.writeFileSync(
1083
+ // `testeranto/externalTests/${externalTestName}/stdout.txt`,
1084
+ // stdout
1085
+ // );
1086
+ // fs.writeFileSync(
1087
+ // `testeranto/externalTests/${externalTestName}/stderr.txt`,
1088
+ // stderr
1089
+ // );
1090
+ // // console.log(`externalTest stdout: ${stdout}`);
1091
+ // // console.error(`externalTest stderr: ${stderr}`);
1092
+ // });
1040
1093
  }
1041
1094
  async stop() {
1042
1095
  console.log(ansi_colors_1.default.inverse("Testeranto-Run is shutting down gracefully..."));
@@ -1054,11 +1107,17 @@ ${addableFiles
1054
1107
  return;
1055
1108
  const outputs = metafile.outputs;
1056
1109
  Object.keys(outputs).forEach(async (k) => {
1110
+ const pattern = `testeranto/bundles/${platform}/${this.name}/${this.configs.src}`;
1111
+ if (!k.startsWith(pattern)) {
1112
+ return false;
1113
+ }
1057
1114
  const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
1058
1115
  if (!fs_1.default.existsSync(i))
1059
1116
  return false;
1060
1117
  if (i.startsWith("node_modules"))
1061
1118
  return false;
1119
+ if (i.startsWith("./node_modules"))
1120
+ return false;
1062
1121
  return true;
1063
1122
  });
1064
1123
  const f = `${k.split(".").slice(0, -1).join(".")}/`;