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
@@ -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 = {};
@@ -73,7 +73,7 @@ async function fileHash(filePath, algorithm = "md5") {
73
73
  }
74
74
  const statusMessagePretty = (failures, test) => {
75
75
  if (failures === 0) {
76
- console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`> ${test} completed successfully`)));
76
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`> ${test} completed successfully?!?`)));
77
77
  }
78
78
  else {
79
79
  console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`> ${test} failed ${failures} times`)));
@@ -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,63 +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 child = spawn(
511
- // "node",
512
- // ["inspect", builtfile, testResources, "--trace-warnings"],
513
- // {
514
- // stdio: ["pipe", "pipe", "pipe", "ipc"],
515
- // env: {
516
- // // NODE_INSPECT_RESUME_ON_START: "1",
517
- // },
518
- // // silent: true
519
- // }
520
- // );
521
- // console.log(
522
- // "spawning",
523
- // "node",
524
- // ["inspect", builtfile, testResources, "--trace-warnings"],
525
- // {
526
- // NODE_INSPECT_RESUME_ON_START: "1",
527
- // }
528
- // );
529
- const p = destFolder + "/pipe";
530
357
  const errFile = `${reportDest}/error.txt`;
531
358
  if (fs_1.default.existsSync(errFile)) {
532
359
  fs_1.default.rmSync(errFile);
533
360
  }
534
- server.listen(p, () => {
361
+ server.listen(ipcfile, () => {
535
362
  var _a, _b;
536
363
  (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
537
- oStream.write(`stderr data ${data}`);
364
+ oStream.write(`stderr > ${data}`);
538
365
  });
539
366
  (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
540
- oStream.write(`stdout data ${data}`);
367
+ oStream.write(`stdout > ${data}`);
541
368
  });
542
369
  child.on("close", (code) => {
370
+ console.log("close");
543
371
  oStream.close();
544
372
  server.close();
373
+ // this.receiveFeaturesV2(reportDest, src, "node");
545
374
  if (code === null) {
546
375
  this.bddTestIsNowDone(src, -1);
547
376
  statusMessagePretty(-1, src);
@@ -554,133 +383,278 @@ ${addableFiles
554
383
  this.bddTestIsNowDone(src, code);
555
384
  statusMessagePretty(code, src);
556
385
  }
557
- if (fs_1.default.existsSync(p)) {
558
- fs_1.default.rmSync(p);
559
- }
560
386
  haltReturns = true;
561
387
  });
562
388
  child.on("exit", (code) => {
389
+ console.log("exit");
563
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);
564
397
  });
565
398
  child.on("error", (e) => {
399
+ console.log("error");
566
400
  haltReturns = true;
567
- if (fs_1.default.existsSync(p)) {
568
- fs_1.default.rmSync(p);
569
- }
570
401
  console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e.name}. Check ${errFile}for more info`)));
571
402
  this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
572
403
  this.bddTestIsNowDone(src, -1);
573
404
  statusMessagePretty(-1, src);
574
- // this.bddTestIsNowDone(src, -1);
575
- // statusMessagePretty(-1, src);
576
405
  });
577
406
  });
578
- child.send({ path: p });
579
- for (let i = 0; i <= portsToUse.length; i++) {
580
- if (portsToUse[i]) {
581
- this.ports[portsToUse[i]] = "true"; //port is open again
582
- }
583
- }
584
407
  };
585
- this.launchWebSideCar = async (src, dest, testConfig) => {
586
- 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", "");
587
416
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchWebSideCar ${src}`)));
588
417
  const fileStreams2 = [];
589
418
  const doneFileStream2 = [];
419
+ const oStream = fs_1.default.createWriteStream(`${destFolder}/console_log.txt`);
590
420
  return new Promise((res, rej) => {
591
421
  this.browser
592
422
  .newPage()
593
- .then((page) => {
594
- // page.on("console", (msg) => {
595
- // console.log("web > ", msg.args(), msg.text());
596
- // // for (let i = 0; i < msg._args.length; ++i)
597
- // // console.log(`${i}: ${msg._args[i]}`);
598
- // });
599
- page.exposeFunction("custom-screenshot", async (ssOpts, testName) => {
600
- const p = ssOpts.path;
601
- const dir = path_1.default.dirname(p);
602
- fs_1.default.mkdirSync(dir, {
603
- recursive: true,
604
- });
605
- files[testName].add(ssOpts.path);
606
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
607
- if (!screenshots[testName]) {
608
- screenshots[testName] = [];
609
- }
610
- screenshots[testName].push(sPromise);
611
- await sPromise;
612
- return sPromise;
423
+ .then(async (page) => {
424
+ this.mapping().forEach(async ([command, func]) => {
425
+ page.exposeFunction(command, func);
613
426
  });
614
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
615
- const dir = path_1.default.dirname(fp);
616
- fs_1.default.mkdirSync(dir, {
617
- recursive: true,
618
- });
619
- const p = new Promise(async (res, rej) => {
620
- fs_1.default.writeFileSync(fp, contents);
621
- 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();
622
438
  });
623
- doneFileStream2.push(p);
624
- if (!files[testName]) {
625
- 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");
626
448
  }
627
- files[testName].add(fp);
628
- return p;
629
- });
630
- page.exposeFunction("existsSync", (fp, contents) => {
631
- return fs_1.default.existsSync(fp);
632
- });
633
- page.exposeFunction("mkdirSync", (fp) => {
634
- if (!fs_1.default.existsSync(fp)) {
635
- return fs_1.default.mkdirSync(fp, {
636
- recursive: true,
637
- });
449
+ if (err.stack) {
450
+ console.debug(`Error from stack ${src}: [${err.stack}] `);
451
+ oStream.write(err.stack);
452
+ oStream.write("\n");
638
453
  }
639
- 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();
640
459
  });
641
- page.exposeFunction("createWriteStream", (fp, testName) => {
642
- const f = fs_1.default.createWriteStream(fp);
643
- files[testName].add(fp);
644
- const p = new Promise((res, rej) => {
645
- res(fp);
646
- });
647
- doneFileStream2.push(p);
648
- f.on("close", async () => {
649
- await p;
650
- });
651
- fileStreams2.push(f);
652
- 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");
653
465
  });
654
- page.exposeFunction("write", async (uid, contents) => {
655
- 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(),
656
472
  });
657
- page.exposeFunction("end", async (uid) => {
658
- 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();
659
497
  });
660
498
  return page;
499
+ // return page;
661
500
  })
662
501
  .then(async (page) => {
663
502
  await page.goto(`file://${`${dest}.html`}`, {});
664
503
  /* @ts-ignore:next-line */
665
- res(page);
504
+ res([Math.random(), page]);
666
505
  });
667
506
  });
668
507
  };
669
- 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]}`;
670
511
  const d = dest + ".mjs";
671
- 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(".");
672
644
  const destFolder = dest.replace(".mjs", "");
673
- let argz = "";
674
- const testConfigResource = testConfig[2];
675
- let portsToUse = [];
645
+ let argz;
646
+ const z = sidecar[2];
647
+ const testConfigResource = sidecar[2];
648
+ const src = sidecar[0];
649
+ const portsToUse = [];
676
650
  if (testConfigResource.ports === 0) {
677
- argz = JSON.stringify({
678
- scheduled: true,
651
+ argz = {
652
+ // scheduled: true,
679
653
  name: src,
680
654
  ports: portsToUse,
681
655
  fs: destFolder,
682
656
  browserWSEndpoint: this.browser.wsEndpoint(),
683
- });
657
+ };
684
658
  }
685
659
  else if (testConfigResource.ports > 0) {
686
660
  const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
@@ -690,14 +664,14 @@ ${addableFiles
690
664
  portsToUse.push(openPorts[i][0]);
691
665
  this.ports[openPorts[i][0]] = false; // port is now closed
692
666
  }
693
- argz = JSON.stringify({
694
- scheduled: true,
667
+ argz = {
668
+ // scheduled: true,
695
669
  name: src,
696
670
  // ports: [3333],
697
671
  ports: portsToUse,
698
672
  fs: ".",
699
673
  browserWSEndpoint: this.browser.wsEndpoint(),
700
- });
674
+ };
701
675
  }
702
676
  else {
703
677
  this.queue.push(src);
@@ -708,29 +682,17 @@ ${addableFiles
708
682
  console.error("negative port makes no sense", src);
709
683
  process.exit(-1);
710
684
  }
711
- const builtfile = dest + ".mjs";
685
+ // const builtfile = dest + ".mjs";
712
686
  await Promise.resolve(`${`${builtfile}?cacheBust=${Date.now()}`}`).then(s => __importStar(require(s))).then((module) => {
713
- return module.default.then((defaultModule) => {
714
- // console.log("defaultModule", defaultModule);
715
- const s = new defaultModule();
716
- s.receiveTestResourceConfig(argz);
717
- // Object.create(defaultModule);
718
- // defaultModule
719
- // .receiveTestResourceConfig(argz)
720
- // .then((x) => {
721
- // console.log("then", x);
722
- // return x;
723
- // })
724
- // .catch((e) => {
725
- // console.log("catch", e);
726
- // });
727
- });
687
+ this.pureSidecars[r] = module.default;
688
+ this.pureSidecars[r].start(argz);
728
689
  });
729
- for (let i = 0; i <= portsToUse.length; i++) {
730
- if (portsToUse[i]) {
731
- this.ports[portsToUse[i]] = "true"; //port is open again
732
- }
733
- }
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
+ // }
734
696
  };
735
697
  this.launchWeb = async (src, dest) => {
736
698
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! web ${src}`)));
@@ -744,7 +706,7 @@ ${addableFiles
744
706
  }
745
707
  const destFolder = dest.replace(".mjs", "");
746
708
  const webArgz = JSON.stringify({
747
- name: dest,
709
+ name: src,
748
710
  ports: [].toString(),
749
711
  fs: reportDest,
750
712
  browserWSEndpoint: this.browser.wsEndpoint(),
@@ -764,9 +726,20 @@ ${addableFiles
764
726
  this.browser
765
727
  .newPage()
766
728
  .then((page) => {
767
- // set up the "node" listeners
768
729
  this.mapping().forEach(async ([command, func]) => {
769
- 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
+ }
770
743
  });
771
744
  return page;
772
745
  })
@@ -806,48 +779,55 @@ ${addableFiles
806
779
  });
807
780
  page.on("console", (log) => {
808
781
  oStream.write(log.text());
782
+ oStream.write("\n");
809
783
  oStream.write(JSON.stringify(log.location()));
784
+ oStream.write("\n");
810
785
  oStream.write(JSON.stringify(log.stackTrace()));
811
786
  oStream.write("\n");
812
787
  });
813
788
  await page.goto(`file://${`${destFolder}.html`}`, {});
789
+ this.webSidecars[Math.random()] = page.mainFrame()._id;
814
790
  await page
815
791
  .evaluate(evaluation)
816
792
  .then(async ({ fails, failed, features }) => {
817
- this.receiveFeatures(features, destFolder, src, "web");
793
+ // this.receiveFeatures(features, destFolder, src, "web");
794
+ // this.receiveFeaturesV2(reportDest, src, "web");
818
795
  statusMessagePretty(fails, src);
819
796
  this.bddTestIsNowDone(src, fails);
820
797
  })
821
798
  .catch((e) => {
822
- 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}`)));
823
800
  })
824
801
  .finally(() => {
825
802
  this.bddTestIsNowDone(src, -1);
803
+ // process.exit(-1);
826
804
  close();
827
805
  });
828
806
  return page;
829
807
  });
830
808
  };
831
- this.receiveFeatures = (features, destFolder, srcTest, platform) => {
809
+ this.receiveFeaturesV2 = (reportDest, srcTest, platform) => {
832
810
  const featureDestination = path_1.default.resolve(process.cwd(), "reports", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
833
- features
811
+ const testReport = JSON.parse(fs_1.default.readFileSync(`${reportDest}/tests.json`).toString());
812
+ // console.log("mark2", testReport);
813
+ testReport.features
834
814
  .reduce(async (mm, featureStringKey) => {
815
+ // console.log("mark4", featureStringKey);
835
816
  const accum = await mm;
836
817
  const isUrl = isValidUrl(featureStringKey);
837
818
  if (isUrl) {
838
819
  const u = new URL(featureStringKey);
839
820
  if (u.protocol === "file:") {
840
821
  const newPath = `${process.cwd()}/testeranto/features/internal/${path_1.default.relative(process.cwd(), u.pathname)}`;
841
- await fs_1.default.promises.mkdir(path_1.default.dirname(newPath), { recursive: true });
842
- try {
843
- await fs_1.default.unlinkSync(newPath);
844
- // console.log(`Removed existing link at ${newPath}`);
845
- }
846
- catch (error) {
847
- if (error.code !== "ENOENT") {
848
- // throw error;
849
- }
850
- }
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
+ // }
851
831
  // fs.symlink(u.pathname, newPath, (err) => {
852
832
  // if (err) {
853
833
  // // console.error("Error creating symlink:", err);
@@ -855,10 +835,10 @@ ${addableFiles
855
835
  // // console.log("Symlink created successfully");
856
836
  // }
857
837
  // });
858
- accum.files.push(newPath);
838
+ accum.files.push(u.pathname);
859
839
  }
860
840
  else if (u.protocol === "http:" || u.protocol === "https:") {
861
- const newPath = `${process.cwd()}/testeranto/features/external${u.hostname}${u.pathname}`;
841
+ const newPath = `${process.cwd()}/testeranto/features/external/${u.hostname}${u.pathname}`;
862
842
  const body = await this.configs.featureIngestor(featureStringKey);
863
843
  writeFileAndCreateDir(newPath, body);
864
844
  accum.files.push(newPath);
@@ -873,6 +853,7 @@ ${addableFiles
873
853
  return accum;
874
854
  }, Promise.resolve({ files: [], strings: [] }))
875
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
876
857
  fs_1.default.writeFileSync(`testeranto/reports/${this.name}/${srcTest
877
858
  .split(".")
878
859
  .slice(0, -1)
@@ -882,24 +863,68 @@ ${addableFiles
882
863
  })
883
864
  .join("\n"));
884
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();
885
874
  };
886
- this.writeBigBoard = () => {
887
- fs_1.default.writeFileSync(`./testeranto/reports/${this.name}/summary.json`, JSON.stringify(this.bigBoard, null, 2));
888
- };
889
- this.name = name;
890
- this.mode = mode;
891
875
  this.ports = {};
892
- this.configs.tests.forEach(([t]) => {
893
- this.bigBoard[t] = {
894
- runTimeError: "?",
895
- typeErrors: "?",
896
- staticErrors: "?",
897
- prompt: "?",
898
- };
899
- });
876
+ this.queue = [];
877
+ this.nodeSidecars = {};
878
+ this.webSidecars = {};
879
+ this.pureSidecars = {};
900
880
  this.configs.ports.forEach((element) => {
901
- 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
+ }
902
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
+ }
903
928
  }
904
929
  mapping() {
905
930
  return [
@@ -908,20 +933,23 @@ ${addableFiles
908
933
  ["closePage", this.closePage],
909
934
  ["createWriteStream", this.createWriteStream],
910
935
  ["customclose", this.customclose],
911
- ["customScreenShot", this.customScreenShot],
936
+ ["customScreenShot", this.customScreenShot.bind(this)],
912
937
  ["end", this.end],
913
938
  ["existsSync", this.existsSync],
914
939
  ["focusOn", this.focusOn],
915
940
  ["getAttribute", this.getAttribute],
916
- ["getValue", this.getValue],
917
- ["goto", this.goto],
941
+ ["getInnerHtml", this.getInnerHtml],
942
+ // ["setValue", this.setValue],
943
+ ["goto", this.goto.bind(this)],
918
944
  ["isDisabled", this.isDisabled],
945
+ ["launchSideCar", this.launchSideCar.bind(this)],
919
946
  ["mkdirSync", this.mkdirSync],
920
947
  ["newPage", this.newPage],
921
948
  ["page", this.page],
922
949
  ["pages", this.pages],
923
950
  ["screencast", this.screencast],
924
951
  ["screencastStop", this.screencastStop],
952
+ ["stopSideCar", this.stopSideCar.bind(this)],
925
953
  ["typeInto", this.typeInto],
926
954
  ["waitForSelector", this.waitForSelector],
927
955
  ["write", this.write],
@@ -931,54 +959,57 @@ ${addableFiles
931
959
  async start() {
932
960
  // set up the "pure" listeners
933
961
  this.mapping().forEach(async ([command, func]) => {
934
- // page.exposeFunction(command, func);
935
962
  globalThis[command] = func;
936
963
  });
937
964
  if (!fs_1.default.existsSync(`testeranto/reports/${this.name}`)) {
938
965
  fs_1.default.mkdirSync(`testeranto/reports/${this.name}`);
939
966
  }
940
- // await pollForFile();
941
- this.browser = (await puppeteer_core_1.default.launch({
942
- slowMo: 1,
943
- waitForInitialPage: false,
944
- executablePath:
945
- // process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium",
946
- "/opt/homebrew/bin/chromium",
947
- headless: true,
948
- dumpio: false,
949
- devtools: false,
950
- args: [
951
- "--allow-file-access-from-files",
952
- "--allow-insecure-localhost",
953
- "--allow-running-insecure-content",
954
- "--auto-open-devtools-for-tabs",
955
- "--disable-dev-shm-usage",
956
- "--disable-extensions",
957
- "--disable-gpu",
958
- "--disable-setuid-sandbox",
959
- "--disable-site-isolation-trials",
960
- "--disable-site-isolation-trials",
961
- "--disable-web-security",
962
- "--no-first-run",
963
- "--no-sandbox",
964
- "--no-startup-window",
965
- "--reduce-security-for-testing",
966
- "--remote-allow-origins=*",
967
- `--remote-debugging-port=3234`,
968
- "--unsafely-treat-insecure-origin-as-secure=*",
969
- // "--disable-features=IsolateOrigins,site-per-process",
970
- // "--disable-features=IsolateOrigins",
971
- // "--disk-cache-dir=/dev/null",
972
- // "--disk-cache-size=1",
973
- // "--no-zygote",
974
- // "--remote-allow-origins=ws://localhost:3234",
975
- // "--single-process",
976
- // "--start-maximized",
977
- // "--unsafely-treat-insecure-origin-as-secure",
978
- // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
979
- ],
980
- }));
981
- 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);
982
1013
  [
983
1014
  [
984
1015
  nodeEntryPoints,
@@ -997,7 +1028,7 @@ ${addableFiles
997
1028
  },
998
1029
  ],
999
1030
  [
1000
- importEntryPoints,
1031
+ pureEntryPoints,
1001
1032
  this.launchPure,
1002
1033
  "pure",
1003
1034
  (w) => {
@@ -1030,6 +1061,35 @@ ${addableFiles
1030
1061
  this.metafileOutputs(runtime);
1031
1062
  }));
1032
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
+ // });
1033
1093
  }
1034
1094
  async stop() {
1035
1095
  console.log(ansi_colors_1.default.inverse("Testeranto-Run is shutting down gracefully..."));
@@ -1047,11 +1107,17 @@ ${addableFiles
1047
1107
  return;
1048
1108
  const outputs = metafile.outputs;
1049
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
+ }
1050
1114
  const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
1051
1115
  if (!fs_1.default.existsSync(i))
1052
1116
  return false;
1053
1117
  if (i.startsWith("node_modules"))
1054
1118
  return false;
1119
+ if (i.startsWith("./node_modules"))
1120
+ return false;
1055
1121
  return true;
1056
1122
  });
1057
1123
  const f = `${k.split(".").slice(0, -1).join(".")}/`;