testeranto 0.121.1 → 0.125.1

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 (381) hide show
  1. package/.aider.chat.history.md +97001 -0
  2. package/.aider.conf.yml +5 -0
  3. package/.aider.input.history +9 -0
  4. package/.aider.tags.cache.v3/b7/e6/5be87b62aeaf2bc244ff41c1b61a.val +0 -0
  5. package/.aider.tags.cache.v3/cache.db +0 -0
  6. package/.aider.tags.cache.v3/e3/e6/3501625caf5d5eb171f0d248462e.val +0 -0
  7. package/.aider.tags.cache.v3/ec/c0/161c249c35be853cc40cf11f9267.val +0 -0
  8. package/README.md +9 -0
  9. package/dist/common/{Init.js → src/Init.js} +1 -32
  10. package/dist/common/src/Node.js +49 -0
  11. package/dist/common/src/PM/base.js +230 -0
  12. package/dist/common/{PM → src/PM}/main.js +300 -233
  13. package/dist/common/src/PM/node.js +161 -0
  14. package/dist/common/{PM/node.js → src/PM/pure.js} +27 -18
  15. package/dist/common/{PM → src/PM}/web.js +14 -47
  16. package/dist/common/{Node.js → src/Pure.js} +11 -9
  17. package/dist/common/{SubPackages/react/component/web.js → src/SubPackages/react/component/index.js} +5 -4
  18. package/dist/common/src/SubPackages/react/component/node.js +10 -0
  19. package/dist/common/src/SubPackages/react/component/pure.js +10 -0
  20. package/dist/common/{SubPackages/react/jsx → src/SubPackages/react/component}/web.js +2 -2
  21. package/dist/common/src/SubPackages/react/jsx/index.js +64 -0
  22. package/dist/common/src/SubPackages/react/jsx/pure.js +10 -0
  23. package/dist/common/src/SubPackages/react/jsx/web.js +10 -0
  24. package/dist/common/{SubPackages/react-dom/component/web.js → src/SubPackages/react-dom/component/dynamic.js} +8 -14
  25. package/dist/common/src/SubPackages/react-dom/component/node.js +10 -0
  26. package/dist/common/src/SubPackages/react-dom/component/pure.js +10 -0
  27. package/dist/common/src/SubPackages/react-dom/component/static.js +26 -0
  28. package/dist/common/src/SubPackages/react-dom/component/web.js +16 -0
  29. package/dist/common/src/SubPackages/react-dom/jsx/dynamic.js +31 -0
  30. package/dist/common/src/SubPackages/react-dom/jsx/node.js +10 -0
  31. package/dist/common/src/SubPackages/react-dom/jsx/pure.js +10 -0
  32. package/dist/common/src/SubPackages/react-dom/jsx/static.js +59 -0
  33. package/dist/common/src/SubPackages/react-dom/jsx/web.js +16 -0
  34. package/dist/common/src/SubPackages/react-test-renderer/component/index.js +15 -0
  35. package/dist/common/src/SubPackages/react-test-renderer/component/pure.js +8 -0
  36. package/dist/common/src/SubPackages/react-test-renderer/component/test/implementation.js +57 -0
  37. package/dist/common/src/SubPackages/react-test-renderer/component/test/node.js +10 -0
  38. package/dist/common/src/SubPackages/react-test-renderer/component/test/pure.js +10 -0
  39. package/dist/common/src/SubPackages/react-test-renderer/component/test/web.js +10 -0
  40. package/dist/common/src/SubPackages/react-test-renderer/jsx/pure.js +10 -0
  41. package/dist/common/{Web.js → src/Web.js} +1 -4
  42. package/dist/common/{build.js → src/build.js} +37 -57
  43. package/dist/common/{defaultConfig.js → src/defaultConfig.js} +1 -3
  44. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/node.js +5 -4
  45. package/dist/common/src/esbuildConfigs/pure.js +41 -0
  46. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/web.js +5 -2
  47. package/dist/common/src/examples/react/component/index.js +33 -0
  48. package/dist/common/src/examples/react/component/test.js +36 -0
  49. package/dist/common/{lib → src/lib}/abstractBase.js +50 -52
  50. package/dist/common/{lib → src/lib}/basebuilder.js +18 -13
  51. package/dist/common/{lib → src/lib}/core.js +5 -43
  52. package/dist/common/{lib → src/lib}/index.js +1 -1
  53. package/dist/common/{run.js → src/run.js} +5 -5
  54. package/dist/common/{utils.js → src/utils.js} +35 -1
  55. package/dist/common/testeranto.config.js +41 -0
  56. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  57. package/dist/module/{Init.js → src/Init.js} +1 -32
  58. package/dist/module/src/Node.js +42 -0
  59. package/dist/module/src/PM/base.js +223 -0
  60. package/dist/module/{PM → src/PM}/main.js +301 -234
  61. package/dist/module/src/PM/node.js +154 -0
  62. package/dist/module/{PM/node.js → src/PM/pure.js} +25 -16
  63. package/dist/module/{PM → src/PM}/web.js +14 -47
  64. package/dist/module/{Project.js → src/Project.js} +6 -3
  65. package/dist/module/{Node.js → src/Pure.js} +9 -7
  66. package/dist/module/{ReportClient.js → src/ReportClient.js} +1 -1
  67. package/dist/module/{SubPackages/react/component/web.js → src/SubPackages/react/component/index.js} +3 -4
  68. package/dist/module/src/SubPackages/react/component/node.js +5 -0
  69. package/dist/module/src/SubPackages/react/component/pure.js +5 -0
  70. package/dist/module/{SubPackages/react/jsx → src/SubPackages/react/component}/web.js +3 -3
  71. package/dist/module/src/SubPackages/react/jsx/index.js +58 -0
  72. package/dist/module/{SubPackages → src/SubPackages}/react/jsx/node.js +1 -1
  73. package/dist/module/src/SubPackages/react/jsx/pure.js +5 -0
  74. package/dist/module/src/SubPackages/react/jsx/web.js +5 -0
  75. package/dist/module/{SubPackages/react-dom/component/web.js → src/SubPackages/react-dom/component/dynamic.js} +5 -13
  76. package/dist/module/src/SubPackages/react-dom/component/node.js +5 -0
  77. package/dist/module/src/SubPackages/react-dom/component/pure.js +5 -0
  78. package/dist/module/src/SubPackages/react-dom/component/static.js +22 -0
  79. package/dist/module/src/SubPackages/react-dom/component/web.js +11 -0
  80. package/dist/module/{SubPackages/react-dom/jsx/node.js → src/SubPackages/react-dom/jsx/dynamic.js} +3 -7
  81. package/dist/module/src/SubPackages/react-dom/jsx/node.js +5 -0
  82. package/dist/module/src/SubPackages/react-dom/jsx/pure.js +5 -0
  83. package/dist/module/src/SubPackages/react-dom/jsx/static.js +53 -0
  84. package/dist/module/src/SubPackages/react-dom/jsx/web.js +11 -0
  85. package/dist/module/src/SubPackages/react-test-renderer/component/index.js +14 -0
  86. package/dist/module/src/SubPackages/react-test-renderer/component/pure.js +3 -0
  87. package/dist/module/src/SubPackages/react-test-renderer/component/test/implementation.js +54 -0
  88. package/dist/module/src/SubPackages/react-test-renderer/component/test/node.js +5 -0
  89. package/dist/module/src/SubPackages/react-test-renderer/component/test/pure.js +5 -0
  90. package/dist/module/src/SubPackages/react-test-renderer/component/test/web.js +5 -0
  91. package/dist/module/src/SubPackages/react-test-renderer/jsx/pure.js +5 -0
  92. package/dist/module/{TestReport.js → src/TestReport.js} +19 -16
  93. package/dist/module/{Web.js → src/Web.js} +1 -4
  94. package/dist/module/{build.js → src/build.js} +37 -57
  95. package/dist/module/{defaultConfig.js → src/defaultConfig.js} +1 -3
  96. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/node.js +5 -4
  97. package/dist/module/src/esbuildConfigs/pure.js +36 -0
  98. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/web.js +5 -2
  99. package/dist/module/src/examples/react/component/index.js +26 -0
  100. package/dist/module/src/examples/react/component/test.js +32 -0
  101. package/dist/module/{lib → src/lib}/abstractBase.js +50 -52
  102. package/dist/module/{lib → src/lib}/basebuilder.js +18 -13
  103. package/dist/module/{lib → src/lib}/core.js +5 -43
  104. package/dist/module/{lib → src/lib}/index.js +1 -1
  105. package/dist/module/{run.js → src/run.js} +5 -5
  106. package/dist/module/src/utils.js +53 -0
  107. package/dist/module/testeranto.config.js +39 -0
  108. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  109. package/dist/prebuild/Project.js +5 -2
  110. package/dist/prebuild/ReportClient.js +1 -1
  111. package/dist/prebuild/TestReport.js +4 -1
  112. package/dist/prebuild/build.mjs +115 -65
  113. package/dist/prebuild/init-docs.mjs +1 -0
  114. package/dist/prebuild/run.mjs +418 -382
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/dist/types/src/Node.d.ts +9 -0
  117. package/dist/types/src/PM/base.d.ts +34 -0
  118. package/dist/types/{PM → src/PM}/index.d.ts +21 -22
  119. package/dist/types/{PM → src/PM}/main.d.ts +15 -10
  120. package/dist/types/src/PM/node.d.ts +38 -0
  121. package/dist/types/{PM/node.d.ts → src/PM/pure.d.ts} +16 -17
  122. package/dist/types/{PM → src/PM}/web.d.ts +10 -15
  123. package/dist/types/src/Pure.d.ts +9 -0
  124. package/dist/types/src/SubPackages/react/component/index.d.ts +4 -0
  125. package/dist/types/src/SubPackages/react/component/node.d.ts +4 -0
  126. package/dist/types/src/SubPackages/react/component/pure.d.ts +4 -0
  127. package/dist/types/src/SubPackages/react/component/web.d.ts +4 -0
  128. package/dist/types/src/SubPackages/react/jsx/index.d.ts +5 -0
  129. package/dist/types/src/SubPackages/react/jsx/node.d.ts +4 -0
  130. package/dist/types/src/SubPackages/react/jsx/pure.d.ts +4 -0
  131. package/dist/types/src/SubPackages/react/jsx/web.d.ts +4 -0
  132. package/dist/types/src/SubPackages/react-dom/component/dynamic.d.ts +20 -0
  133. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +4 -0
  134. package/dist/types/src/SubPackages/react-dom/component/pure.d.ts +4 -0
  135. package/dist/types/src/SubPackages/react-dom/component/static.d.ts +9 -0
  136. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +4 -0
  137. package/dist/types/src/SubPackages/react-dom/jsx/dynamic.d.ts +5 -0
  138. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +4 -0
  139. package/dist/types/src/SubPackages/react-dom/jsx/pure.d.ts +4 -0
  140. package/dist/types/src/SubPackages/react-dom/jsx/static.d.ts +5 -0
  141. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +5 -0
  142. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.d.ts +1 -1
  143. package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +5 -0
  144. package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +3 -0
  145. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +4 -0
  146. package/dist/types/src/SubPackages/react-test-renderer/component/pure.d.ts +4 -0
  147. package/dist/types/src/SubPackages/react-test-renderer/component/test/implementation.d.ts +4 -0
  148. package/dist/types/src/SubPackages/react-test-renderer/component/test/node.d.ts +3 -0
  149. package/dist/types/src/SubPackages/react-test-renderer/component/test/pure.d.ts +4 -0
  150. package/dist/types/src/SubPackages/react-test-renderer/component/test/web.d.ts +3 -0
  151. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +4 -0
  152. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.d.ts +1 -1
  153. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.d.ts +1 -1
  154. package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +11 -0
  155. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +4 -0
  156. package/dist/types/src/SubPackages/react-test-renderer/jsx/pure.d.ts +4 -0
  157. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +4 -0
  158. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.d.ts +1 -1
  159. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.d.ts +1 -1
  160. package/dist/types/src/Types.d.ts +88 -0
  161. package/dist/types/src/Web.d.ts +9 -0
  162. package/dist/types/src/defaultConfig.d.ts +3 -0
  163. package/dist/types/src/esbuildConfigs/index.d.ts +4 -0
  164. package/dist/types/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.d.ts +2 -1
  165. package/dist/types/src/esbuildConfigs/node.d.ts +4 -0
  166. package/dist/types/src/esbuildConfigs/pure.d.ts +4 -0
  167. package/dist/types/src/esbuildConfigs/web.d.ts +4 -0
  168. package/dist/types/src/examples/react/component/index.d.ts +13 -0
  169. package/dist/types/src/examples/react/component/test.d.ts +17 -0
  170. package/dist/types/{lib → src/lib}/abstractBase.d.ts +35 -30
  171. package/dist/types/{lib → src/lib}/basebuilder.d.ts +7 -8
  172. package/dist/types/src/lib/classBuilder.d.ts +9 -0
  173. package/dist/types/src/lib/core.d.ts +7 -0
  174. package/dist/types/{lib → src/lib}/index.d.ts +14 -36
  175. package/dist/types/src/lib/types.d.ts +15 -0
  176. package/dist/types/src/utils.d.ts +18 -0
  177. package/dist/types/testeranto.config.d.ts +3 -0
  178. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  179. package/eslint.config.mjs +111 -0
  180. package/package.json +32 -8
  181. package/src/Init.ts +1 -39
  182. package/src/Node.ts +42 -46
  183. package/src/PM/base.ts +179 -181
  184. package/src/PM/index.ts +28 -21
  185. package/src/PM/main.ts +359 -318
  186. package/src/PM/node.ts +88 -44
  187. package/src/PM/pure.ts +209 -0
  188. package/src/PM/web.ts +19 -121
  189. package/src/Project.tsx +8 -5
  190. package/src/Pure.ts +69 -0
  191. package/src/ReportClient.tsx +8 -3
  192. package/src/SubPackages/react/component/index.ts +28 -0
  193. package/src/SubPackages/react/component/node.ts +12 -82
  194. package/src/SubPackages/react/component/pure.ts +17 -0
  195. package/src/SubPackages/react/component/web.ts +12 -81
  196. package/src/SubPackages/react/jsx/index.ts +56 -52
  197. package/src/SubPackages/react/jsx/node.ts +12 -29
  198. package/src/SubPackages/react/jsx/pure.ts +23 -0
  199. package/src/SubPackages/react/jsx/web.ts +17 -36
  200. package/src/SubPackages/react-dom/component/dynamic.ts +107 -0
  201. package/src/SubPackages/react-dom/component/node.ts +11 -116
  202. package/src/SubPackages/react-dom/component/pure.ts +17 -0
  203. package/src/SubPackages/react-dom/component/static.ts +41 -0
  204. package/src/SubPackages/react-dom/component/web.ts +7 -113
  205. package/src/SubPackages/react-dom/jsx/dynamic.ts +46 -0
  206. package/src/SubPackages/react-dom/jsx/node.ts +10 -58
  207. package/src/SubPackages/react-dom/jsx/pure.ts +18 -0
  208. package/src/SubPackages/react-dom/jsx/static.ts +87 -0
  209. package/src/SubPackages/react-dom/jsx/web.ts +7 -135
  210. package/src/SubPackages/react-test-renderer/component/index.ts +27 -51
  211. package/src/SubPackages/react-test-renderer/component/interface.ts +7 -5
  212. package/src/SubPackages/react-test-renderer/component/node.ts +7 -25
  213. package/src/SubPackages/react-test-renderer/component/pure.ts +18 -0
  214. package/src/SubPackages/react-test-renderer/component/test/implementation.ts +63 -0
  215. package/src/SubPackages/react-test-renderer/component/test/node.ts +14 -0
  216. package/src/SubPackages/react-test-renderer/component/test/pure.ts +14 -0
  217. package/src/SubPackages/react-test-renderer/component/test/web.ts +14 -0
  218. package/src/SubPackages/react-test-renderer/component/web.ts +7 -23
  219. package/src/SubPackages/react-test-renderer/jsx/index.ts +13 -46
  220. package/src/SubPackages/react-test-renderer/jsx/node.ts +9 -15
  221. package/src/SubPackages/react-test-renderer/jsx/pure.ts +31 -0
  222. package/src/SubPackages/react-test-renderer/jsx/web.ts +9 -14
  223. package/src/TestReport.tsx +7 -4
  224. package/src/Types.ts +114 -140
  225. package/src/Web.ts +13 -48
  226. package/src/build.ts +52 -78
  227. package/src/defaultConfig.ts +3 -5
  228. package/src/esbuildConfigs/index.ts +2 -2
  229. package/src/esbuildConfigs/inputFilesPlugin.ts +2 -1
  230. package/src/esbuildConfigs/node.ts +7 -5
  231. package/src/esbuildConfigs/pure.ts +72 -0
  232. package/src/esbuildConfigs/web.ts +8 -5
  233. package/src/examples/react/component/index.tsx +35 -0
  234. package/src/examples/react/component/test.ts +83 -0
  235. package/src/lib/abstractBase.ts +100 -192
  236. package/src/lib/basebuilder.ts +40 -40
  237. package/src/lib/classBuilder.ts +18 -26
  238. package/src/lib/core.ts +22 -77
  239. package/src/lib/index.ts +31 -66
  240. package/src/lib/types.ts +20 -90
  241. package/src/run.ts +3 -6
  242. package/src/utils.ts +50 -5
  243. package/testeranto/Project.css +11367 -0
  244. package/testeranto/Project.js +24643 -0
  245. package/testeranto/ReportClient.css +11367 -0
  246. package/testeranto/ReportClient.js +24641 -0
  247. package/testeranto/TestReport.css +11367 -0
  248. package/testeranto/TestReport.js +27485 -0
  249. package/testeranto/bundles/node/react/metafile.json +627 -0
  250. package/testeranto/bundles/node/react/src/SubPackages/react-test-renderer/component/test/node.mjs +24687 -0
  251. package/testeranto/bundles/pure/react/metafile.json +8 -0
  252. package/testeranto/bundles/pure/react/src/SubPackages/react-test-renderer/component/test/pure.mjs +24625 -0
  253. package/testeranto/bundles/web/react/metafile.json +8 -0
  254. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.html +19 -0
  255. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.mjs +21290 -0
  256. package/testeranto/index.html +28 -0
  257. package/testeranto/reports/react/config.json +22 -0
  258. package/testeranto/reports/react/index.html +24 -0
  259. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/node/node/console_log.txt +0 -0
  260. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/bdd_errors.txt +1 -0
  261. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/featurePrompt.txt +0 -0
  262. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/lint_errors.json +3381 -0
  263. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/littleBoard.html +20 -0
  264. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/log.txt +40 -0
  265. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/prompt.txt +24 -0
  266. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/tests.json +132 -0
  267. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/type_errors.txt +17 -0
  268. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/bdd_errors.txt +1 -0
  269. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/console_log.txt +1 -0
  270. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/lint_errors.json +2947 -0
  271. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/littleBoard.html +20 -0
  272. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/log.txt +40 -0
  273. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/prompt.txt +23 -0
  274. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/tests.json +132 -0
  275. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/type_errors.txt +18 -0
  276. package/testeranto/reports/react/summary.json +8 -0
  277. package/testeranto.config.ts +45 -0
  278. package/tsc.log +52 -64
  279. package/type-fix.txt +2 -0
  280. package/dist/common/PM/base.js +0 -233
  281. package/dist/common/SubPackages/react/component/node.js +0 -19
  282. package/dist/common/SubPackages/react/jsx/index.js +0 -21
  283. package/dist/common/SubPackages/react-dom/component/node.js +0 -88
  284. package/dist/common/SubPackages/react-dom/jsx/node.js +0 -39
  285. package/dist/common/SubPackages/react-dom/jsx/web.js +0 -128
  286. package/dist/common/SubPackages/react-test-renderer/component/index.js +0 -2
  287. package/dist/module/PM/base.js +0 -226
  288. package/dist/module/SubPackages/react/component/node.js +0 -14
  289. package/dist/module/SubPackages/react/jsx/index.js +0 -15
  290. package/dist/module/SubPackages/react-dom/component/node.js +0 -80
  291. package/dist/module/SubPackages/react-dom/jsx/web.js +0 -90
  292. package/dist/module/SubPackages/react-test-renderer/component/index.js +0 -1
  293. package/dist/module/utils.js +0 -20
  294. package/dist/types/Node.d.ts +0 -12
  295. package/dist/types/PM/base.d.ts +0 -38
  296. package/dist/types/SubPackages/react/component/node.d.ts +0 -7
  297. package/dist/types/SubPackages/react/component/web.d.ts +0 -7
  298. package/dist/types/SubPackages/react/jsx/index.d.ts +0 -12
  299. package/dist/types/SubPackages/react/jsx/node.d.ts +0 -4
  300. package/dist/types/SubPackages/react/jsx/web.d.ts +0 -4
  301. package/dist/types/SubPackages/react-dom/component/node.d.ts +0 -11
  302. package/dist/types/SubPackages/react-dom/component/web.d.ts +0 -20
  303. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +0 -7
  304. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +0 -5
  305. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +0 -13
  306. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +0 -9
  307. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +0 -4
  308. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +0 -4
  309. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +0 -16
  310. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +0 -9
  311. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +0 -9
  312. package/dist/types/Types.d.ts +0 -61
  313. package/dist/types/Web.d.ts +0 -9
  314. package/dist/types/defaultConfig.d.ts +0 -3
  315. package/dist/types/esbuildConfigs/index.d.ts +0 -4
  316. package/dist/types/esbuildConfigs/node.d.ts +0 -4
  317. package/dist/types/esbuildConfigs/web.d.ts +0 -4
  318. package/dist/types/lib/classBuilder.d.ts +0 -7
  319. package/dist/types/lib/core.d.ts +0 -7
  320. package/dist/types/lib/types.d.ts +0 -11
  321. package/dist/types/utils.d.ts +0 -12
  322. /package/dist/common/{PM → src/PM}/index.js +0 -0
  323. /package/dist/common/{ReportServer.js → src/ReportServer.js} +0 -0
  324. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  325. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  326. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  327. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  328. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  329. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  330. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  331. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  332. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  333. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  334. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  335. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  336. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  337. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  338. /package/dist/common/{Types.js → src/Types.js} +0 -0
  339. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.js +0 -0
  340. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.js +0 -0
  341. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/index.js +0 -0
  342. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +0 -0
  343. /package/dist/common/{init-docs.js → src/init-docs.js} +0 -0
  344. /package/dist/common/{lib → src/lib}/classBuilder.js +0 -0
  345. /package/dist/common/{lib → src/lib}/types.js +0 -0
  346. /package/dist/common/{web.html.js → src/web.html.js} +0 -0
  347. /package/dist/module/{Footer.js → src/Footer.js} +0 -0
  348. /package/dist/module/{PM → src/PM}/index.js +0 -0
  349. /package/dist/module/{ReportServer.js → src/ReportServer.js} +0 -0
  350. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  351. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  352. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  353. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  354. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  355. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  356. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  357. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  358. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  359. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  360. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  361. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  362. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  363. /package/dist/module/{Types.js → src/Types.js} +0 -0
  364. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.js +0 -0
  365. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.js +0 -0
  366. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/index.js +0 -0
  367. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +0 -0
  368. /package/dist/module/{init-docs.js → src/init-docs.js} +0 -0
  369. /package/dist/module/{lib → src/lib}/classBuilder.js +0 -0
  370. /package/dist/module/{lib → src/lib}/types.js +0 -0
  371. /package/dist/module/{web.html.js → src/web.html.js} +0 -0
  372. /package/dist/types/{Init.d.ts → src/Init.d.ts} +0 -0
  373. /package/dist/types/{ReportServer.d.ts → src/ReportServer.d.ts} +0 -0
  374. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/index.d.ts +0 -0
  375. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.d.ts +0 -0
  376. /package/dist/types/{build.d.ts → src/build.d.ts} +0 -0
  377. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.d.ts +0 -0
  378. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.d.ts +0 -0
  379. /package/dist/types/{init-docs.d.ts → src/init-docs.d.ts} +0 -0
  380. /package/dist/types/{run.d.ts → src/run.d.ts} +0 -0
  381. /package/dist/types/{web.html.d.ts → src/web.html.d.ts} +0 -0
package/src/PM/main.ts CHANGED
@@ -1,5 +1,7 @@
1
- import ts from "typescript";
1
+ import { spawn } from "node:child_process";
2
2
 
3
+ import ts from "typescript";
4
+ import net from "net";
3
5
  import { Page } from "puppeteer-core/lib/esm/puppeteer";
4
6
  import fs, { watch } from "fs";
5
7
  import path from "path";
@@ -8,13 +10,16 @@ import ansiC from "ansi-colors";
8
10
  import crypto from "node:crypto";
9
11
  import { ESLint } from "eslint";
10
12
  import tsc from "tsc-prog";
13
+
14
+ import { IFinalResults, IRunnables } from "../lib/index.js";
11
15
  import {
12
- IBuiltConfig,
13
- IFinalResults,
14
- IRunnables,
15
- ITestTypes,
16
- } from "../lib/index.js";
17
- import { ISummary, lintPather, promptPather, tscPather } from "../utils";
16
+ getRunnables,
17
+ ISummary,
18
+ lintPather,
19
+ promptPather,
20
+ tscPather,
21
+ } from "../utils";
22
+ import { IBuiltConfig, IRunTime, ITestTypes } from "../Types.js";
18
23
 
19
24
  import { PM_Base } from "./base.js";
20
25
 
@@ -92,6 +97,21 @@ function isValidUrl(string) {
92
97
  }
93
98
  }
94
99
 
100
+ // Wait for file to exist, checks every 2 seconds by default
101
+ function pollForFile(path, timeout = 2000) {
102
+ const intervalObj = setInterval(function () {
103
+ const file = path;
104
+ const fileExists = fs.existsSync(file);
105
+
106
+ // console.log("Checking for: ", file);
107
+ // console.log("Exists: ", fileExists);
108
+
109
+ if (fileExists) {
110
+ clearInterval(intervalObj);
111
+ }
112
+ }, timeout);
113
+ }
114
+
95
115
  export class PM_Main extends PM_Base {
96
116
  name: string;
97
117
  ports: Record<number, boolean>;
@@ -100,6 +120,7 @@ export class PM_Main extends PM_Base {
100
120
  bigBoard: ISummary = {};
101
121
  webMetafileWatcher: fs.FSWatcher;
102
122
  nodeMetafileWatcher: fs.FSWatcher;
123
+ importMetafileWatcher: fs.FSWatcher;
103
124
 
104
125
  constructor(configs: IBuiltConfig, name: string, mode: "once" | "dev") {
105
126
  super(configs);
@@ -122,11 +143,47 @@ export class PM_Main extends PM_Base {
122
143
  });
123
144
  }
124
145
 
125
- async start(): Promise<any> {
146
+ mapping(): [string, (...a) => any][] {
147
+ return [
148
+ ["$", this.$],
149
+ ["click", this.click],
150
+ ["closePage", this.closePage],
151
+ ["createWriteStream", this.createWriteStream],
152
+ ["customclose", this.customclose],
153
+ ["customScreenShot", this.customScreenShot],
154
+ ["end", this.end],
155
+ ["existsSync", this.existsSync],
156
+ ["focusOn", this.focusOn],
157
+ ["getAttribute", this.getAttribute],
158
+ ["getValue", this.getValue],
159
+ ["goto", this.goto],
160
+ ["isDisabled", this.isDisabled],
161
+ ["mkdirSync", this.mkdirSync],
162
+ ["newPage", this.newPage],
163
+ ["page", this.page],
164
+ ["pages", this.pages],
165
+ ["screencast", this.screencast],
166
+ ["screencastStop", this.screencastStop],
167
+ ["typeInto", this.typeInto],
168
+ ["waitForSelector", this.waitForSelector],
169
+ ["write", this.write],
170
+ ["writeFileSync", this.writeFileSync],
171
+ ];
172
+ }
173
+
174
+ async start() {
175
+ // set up the "pure" listeners
176
+ this.mapping().forEach(async ([command, func]) => {
177
+ // page.exposeFunction(command, func);
178
+ globalThis[command] = func;
179
+ });
180
+
126
181
  if (!fs.existsSync(`testeranto/reports/${this.name}`)) {
127
182
  fs.mkdirSync(`testeranto/reports/${this.name}`);
128
183
  }
129
184
 
185
+ // await pollForFile();
186
+
130
187
  this.browser = (await puppeteer.launch({
131
188
  slowMo: 1,
132
189
  waitForInitialPage: false,
@@ -169,103 +226,101 @@ export class PM_Main extends PM_Base {
169
226
  ],
170
227
  })) as any;
171
228
 
172
- const { nodeEntryPoints, webEntryPoints } = this.getRunnables(
173
- this.configs.tests
174
- );
175
-
176
- Object.entries(nodeEntryPoints).forEach(
177
- ([k, outputFile]: [string, string]) => {
178
- this.launchNode(k, outputFile);
179
- try {
180
- watch(outputFile, async (e, filename) => {
181
- const hash = await fileHash(outputFile);
182
- if (fileHashes[k] !== hash) {
183
- fileHashes[k] = hash;
184
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
185
- this.launchNode(k, outputFile);
229
+ const { nodeEntryPoints, webEntryPoints, importEntryPoints } =
230
+ this.getRunnables(this.configs.tests, this.name);
231
+
232
+ [
233
+ [
234
+ nodeEntryPoints,
235
+ this.launchNode,
236
+ "node",
237
+ (w) => {
238
+ this.nodeMetafileWatcher = w;
239
+ },
240
+ ],
241
+ [
242
+ webEntryPoints,
243
+ this.launchWeb,
244
+ "web",
245
+ (w) => {
246
+ this.webMetafileWatcher = w;
247
+ },
248
+ ],
249
+ [
250
+ importEntryPoints,
251
+ this.launchPure,
252
+ "pure",
253
+ (w) => {
254
+ this.importMetafileWatcher = w;
255
+ },
256
+ ],
257
+ ].forEach(
258
+ async ([eps, launcher, runtime, watcher]: [
259
+ Record<string, string>,
260
+ (src: string, dest: string) => Promise<void>,
261
+ IRunTime,
262
+ (f: fs.FSWatcher) => void
263
+ ]) => {
264
+ const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
265
+
266
+ await pollForFile(metafile);
267
+
268
+ Object.entries(eps).forEach(
269
+ async ([k, outputFile]: [string, string]) => {
270
+ // await pollForFile(outputFile);
271
+
272
+ launcher(k, outputFile);
273
+ try {
274
+ watch(outputFile, async (e, filename) => {
275
+ const hash = await fileHash(outputFile);
276
+ if (fileHashes[k] !== hash) {
277
+ fileHashes[k] = hash;
278
+ console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
279
+ launcher(k, outputFile);
280
+ }
281
+ });
282
+ } catch (e) {
283
+ console.error(e);
186
284
  }
187
- });
188
- } catch (e) {
189
- console.error(e);
190
- }
191
- }
192
- );
193
-
194
- Object.entries(webEntryPoints).forEach(
195
- ([k, outputFile]: [string, string]) => {
196
- this.launchWeb(k, outputFile);
197
- watch(outputFile, async (e, filename) => {
198
- const hash = await fileHash(outputFile);
199
- if (fileHashes[k] !== hash) {
200
- fileHashes[k] = hash;
201
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
202
- this.launchWeb(k, outputFile);
203
285
  }
204
- });
205
- }
206
- );
286
+ );
207
287
 
208
- this.metafileOutputs("node");
209
- const w = `./testeranto/bundles/node/${this.name}/metafile.json`;
210
- console.log("w", w);
211
- this.nodeMetafileWatcher = watch(w, async (e, filename) => {
212
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (node)`)));
213
- this.metafileOutputs("node");
214
- });
288
+ this.metafileOutputs(runtime);
215
289
 
216
- this.metafileOutputs("web");
217
- this.webMetafileWatcher = watch(
218
- `./testeranto/bundles/web/${this.name}/metafile.json`,
219
- async (e, filename) => {
220
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (web)`)));
221
- this.metafileOutputs("web");
290
+ watcher(
291
+ watch(metafile, async (e, filename) => {
292
+ console.log(
293
+ ansiC.green(ansiC.inverse(`< ${e} ${filename} (${runtime})`))
294
+ );
295
+ this.metafileOutputs(runtime);
296
+ })
297
+ );
222
298
  }
223
299
  );
224
300
  }
225
301
 
226
- stop = () => {
302
+ async stop() {
227
303
  console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
228
304
  this.mode = "once";
229
305
  this.nodeMetafileWatcher.close();
230
306
  this.webMetafileWatcher.close();
307
+ this.importMetafileWatcher.close();
231
308
  this.checkForShutdown();
232
- };
309
+ }
233
310
 
234
311
  getRunnables = (
235
312
  tests: ITestTypes[],
313
+ testName: string,
236
314
  payload = {
237
315
  nodeEntryPoints: {},
238
316
  webEntryPoints: {},
317
+ importEntryPoints: {},
239
318
  }
240
319
  ): IRunnables => {
241
- return tests.reduce((pt, cv, cndx, cry) => {
242
- if (cv[1] === "node") {
243
- pt.nodeEntryPoints[cv[0]] = path.resolve(
244
- `./testeranto/bundles/node/${this.name}/${cv[0]
245
- .split(".")
246
- .slice(0, -1)
247
- .concat("mjs")
248
- .join(".")}`
249
- );
250
- } else if (cv[1] === "web") {
251
- pt.webEntryPoints[cv[0]] = path.resolve(
252
- `./testeranto/bundles/web/${this.name}/${cv[0]
253
- .split(".")
254
- .slice(0, -1)
255
- .concat("mjs")
256
- .join(".")}`
257
- );
258
- }
259
-
260
- if (cv[3].length) {
261
- this.getRunnables(cv[3], payload);
262
- }
263
-
264
- return pt;
265
- }, payload as IRunnables);
320
+ return getRunnables(tests, testName, payload);
266
321
  };
267
322
 
268
- async metafileOutputs(platform: "web" | "node") {
323
+ async metafileOutputs(platform: IRunTime) {
269
324
  const metafile = JSON.parse(
270
325
  fs
271
326
  .readFileSync(
@@ -316,7 +371,7 @@ export class PM_Main extends PM_Base {
316
371
  addableFiles,
317
372
  platform,
318
373
  }: {
319
- platform: "web" | "node";
374
+ platform: IRunTime;
320
375
  entrypoint: string;
321
376
  addableFiles: string[];
322
377
  }) => {
@@ -334,6 +389,7 @@ export class PM_Main extends PM_Base {
334
389
  noEmit: true,
335
390
  },
336
391
  include: addableFiles, //["src/**/*"],
392
+ // exclude: ["node_modules", "../testeranto"],
337
393
  // exclude: ["**/*.test.ts", "**/*.spec.ts"],
338
394
  });
339
395
  const tscPath = tscPather(entrypoint, platform, this.name);
@@ -370,7 +426,7 @@ export class PM_Main extends PM_Base {
370
426
 
371
427
  eslintCheck = async (
372
428
  entrypoint: string,
373
- platform: "web" | "node",
429
+ platform: IRunTime,
374
430
  addableFiles: string[]
375
431
  ) => {
376
432
  console.log(ansiC.green(ansiC.inverse(`eslint < ${entrypoint}`)));
@@ -396,7 +452,7 @@ export class PM_Main extends PM_Base {
396
452
  makePrompt = async (
397
453
  entryPoint: string,
398
454
  addableFiles: string[],
399
- platform: "web" | "node"
455
+ platform: IRunTime
400
456
  ) => {
401
457
  this.bigBoard[entryPoint].prompt = "?";
402
458
  const promptPath = promptPather(entryPoint, platform, this.name);
@@ -533,14 +589,14 @@ ${addableFiles
533
589
  this.checkForShutdown();
534
590
  };
535
591
 
536
- launchNode = async (src: string, dest: string) => {
537
- console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
592
+ launchPure = async (src: string, dest: string) => {
593
+ console.log(ansiC.green(ansiC.inverse(`! pure, ${src}`)));
538
594
  this.bddTestIsRunning(src);
539
595
 
540
596
  const reportDest = `testeranto/reports/${this.name}/${src
541
597
  .split(".")
542
598
  .slice(0, -1)
543
- .join(".")}/node`;
599
+ .join(".")}/pure`;
544
600
  if (!fs.existsSync(reportDest)) {
545
601
  fs.mkdirSync(reportDest, { recursive: true });
546
602
  }
@@ -583,7 +639,6 @@ ${addableFiles
583
639
  argz = JSON.stringify({
584
640
  scheduled: true,
585
641
  name: src,
586
- // ports: [3333],
587
642
  ports: portsToUse,
588
643
  fs: destFolder,
589
644
  browserWSEndpoint: this.browser.wsEndpoint(),
@@ -601,6 +656,11 @@ ${addableFiles
601
656
 
602
657
  const webSideCares: Page[] = [];
603
658
 
659
+ // fs.writeFileSync(
660
+ // `${reportDest}/stdlog.txt`,
661
+ // "THIS FILE IS AUTO GENERATED. IT IS PURPOSEFULLY LEFT BLANK."
662
+ // );
663
+
604
664
  // await Promise.all(
605
665
  // testConfig[3].map(async (sidecar) => {
606
666
  // if (sidecar[1] === "web") {
@@ -623,16 +683,14 @@ ${addableFiles
623
683
  // })
624
684
  // );
625
685
 
626
- this.server[builtfile] = await import(
627
- `${builtfile}?cacheBust=${Date.now()}`
628
- ).then((module) => {
686
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
629
687
  return module.default.then((defaultModule) => {
630
688
  defaultModule
631
689
  .receiveTestResourceConfig(argz)
632
- .then(async ({ features, failed }: IFinalResults) => {
633
- this.receiveFeatures(features, destFolder, src, "node");
634
- statusMessagePretty(failed, src);
635
- this.bddTestIsNowDone(src, failed);
690
+ .then(async (results: IFinalResults) => {
691
+ this.receiveFeatures(results.features, destFolder, src, "pure");
692
+ statusMessagePretty(results.fails, src);
693
+ this.bddTestIsNowDone(src, results.fails);
636
694
  })
637
695
  .catch((e) => {
638
696
  console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
@@ -652,6 +710,188 @@ ${addableFiles
652
710
  }
653
711
  };
654
712
 
713
+ launchNode = async (src: string, dest: string) => {
714
+ console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
715
+ this.bddTestIsRunning(src);
716
+
717
+ const reportDest = `testeranto/reports/${this.name}/${src
718
+ .split(".")
719
+ .slice(0, -1)
720
+ .join(".")}/node`;
721
+ if (!fs.existsSync(reportDest)) {
722
+ fs.mkdirSync(reportDest, { recursive: true });
723
+ }
724
+
725
+ const destFolder = dest.replace(".mjs", "");
726
+
727
+ let testResources = "";
728
+
729
+ const testConfig = this.configs.tests.find((t) => {
730
+ return t[0] === src;
731
+ });
732
+
733
+ if (!testConfig) {
734
+ console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
735
+ process.exit(-1);
736
+ }
737
+ const testConfigResource = testConfig[2];
738
+
739
+ let portsToUse: string[] = [];
740
+ if (testConfigResource.ports === 0) {
741
+ testResources = JSON.stringify({
742
+ scheduled: true,
743
+ name: src,
744
+ ports: portsToUse,
745
+ fs: reportDest,
746
+ browserWSEndpoint: this.browser.wsEndpoint(),
747
+ });
748
+ } else if (testConfigResource.ports > 0) {
749
+ const openPorts = Object.entries(this.ports).filter(
750
+ ([portnumber, portopen]) => portopen
751
+ );
752
+
753
+ if (openPorts.length >= testConfigResource.ports) {
754
+ for (let i = 0; i < testConfigResource.ports; i++) {
755
+ portsToUse.push(openPorts[i][0]);
756
+
757
+ this.ports[openPorts[i][0]] = false; // port is now closed
758
+ }
759
+
760
+ testResources = JSON.stringify({
761
+ scheduled: true,
762
+ name: src,
763
+ ports: portsToUse,
764
+ fs: destFolder,
765
+ browserWSEndpoint: this.browser.wsEndpoint(),
766
+ });
767
+ } else {
768
+ this.queue.push(src);
769
+ return;
770
+ }
771
+ } else {
772
+ console.error("negative port makes no sense", src);
773
+ process.exit(-1);
774
+ }
775
+
776
+ const builtfile = dest;
777
+
778
+ // const webSideCares: Page[] = [];
779
+
780
+ // await Promise.all(
781
+ // testConfig[3].map(async (sidecar) => {
782
+ // if (sidecar[1] === "web") {
783
+ // const s = await this.launchWebSideCar(
784
+ // sidecar[0],
785
+ // destinationOfRuntime(sidecar[0], "web", this.configs),
786
+ // sidecar
787
+ // );
788
+ // webSideCares.push(s);
789
+ // return s;
790
+ // }
791
+
792
+ // if (sidecar[1] === "node") {
793
+ // return this.launchNodeSideCar(
794
+ // sidecar[0],
795
+ // destinationOfRuntime(sidecar[0], "node", this.configs),
796
+ // sidecar
797
+ // );
798
+ // }
799
+ // })
800
+ // );
801
+
802
+ // const f = fork(builtfile, [testResources], {
803
+ // silent: true,
804
+ // // detached: true,
805
+ // // stdio: "ignore",
806
+ // });
807
+
808
+ let haltReturns = false;
809
+
810
+ let buffer: Buffer<ArrayBufferLike> = new Buffer("");
811
+ const server = net.createServer((socket) => {
812
+ socket.on("data", (data) => {
813
+ buffer = Buffer.concat([buffer, data]);
814
+
815
+ let messages: string[][] = [];
816
+ for (let b = 0; b < buffer.length + 1; b++) {
817
+ let c = buffer.slice(0, b);
818
+ let d;
819
+ try {
820
+ d = JSON.parse(c.toString());
821
+
822
+ messages.push(d);
823
+ buffer = buffer.slice(b, buffer.length + 1);
824
+ b = 0;
825
+ } catch (e) {
826
+ // b++;
827
+ }
828
+ }
829
+
830
+ messages.forEach(async (payload) => {
831
+ // set up the "node" listeners
832
+ this.mapping().forEach(async ([command, func]) => {
833
+ if (payload[0] === command) {
834
+ const x = payload.slice(1, -1);
835
+ const r = await this[command](...x);
836
+
837
+ if (!haltReturns) {
838
+ child.send(
839
+ JSON.stringify({
840
+ payload: r,
841
+ key: payload[payload.length - 1],
842
+ })
843
+ );
844
+ }
845
+ }
846
+ });
847
+ });
848
+ });
849
+ });
850
+
851
+ const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
852
+
853
+ const child = spawn("node", [builtfile, testResources], {
854
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
855
+ // silent: true
856
+ });
857
+
858
+ const p = destFolder + "/pipe";
859
+ server.listen(p, () => {
860
+ child.stderr?.on("data", (data) => {
861
+ oStream.write(`stderr data ${data}`);
862
+ });
863
+ child.stdout?.on("data", (data) => {
864
+ oStream.write(`stdout data ${data}`);
865
+ });
866
+ child.on("close", (code) => {
867
+ oStream.close();
868
+ server.close();
869
+
870
+ if (code === null) {
871
+ this.bddTestIsNowDone(src, -1);
872
+ statusMessagePretty(-1, src);
873
+ } else if (code === 0) {
874
+ this.bddTestIsNowDone(src, 0);
875
+ statusMessagePretty(0, src);
876
+ } else {
877
+ this.bddTestIsNowDone(src, code);
878
+ statusMessagePretty(code, src);
879
+ }
880
+
881
+ // haltReturns = true;
882
+ });
883
+ child.on("exit", (code) => {});
884
+ });
885
+
886
+ child.send({ path: p });
887
+
888
+ for (let i = 0; i <= portsToUse.length; i++) {
889
+ if (portsToUse[i]) {
890
+ this.ports[portsToUse[i]] = "true"; //port is open again
891
+ }
892
+ }
893
+ };
894
+
655
895
  launchWebSideCar = async (
656
896
  src: string,
657
897
  dest: string,
@@ -832,9 +1072,7 @@ ${addableFiles
832
1072
 
833
1073
  const builtfile = dest + ".mjs";
834
1074
 
835
- this.server[builtfile] = await import(
836
- `${builtfile}?cacheBust=${Date.now()}`
837
- ).then((module) => {
1075
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
838
1076
  return module.default.then((defaultModule) => {
839
1077
  // console.log("defaultModule", defaultModule);
840
1078
  const s = new defaultModule();
@@ -860,7 +1098,7 @@ ${addableFiles
860
1098
  }
861
1099
  };
862
1100
 
863
- launchWeb = (src: string, dest: string) => {
1101
+ launchWeb = async (src: string, dest: string) => {
864
1102
  console.log(ansiC.green(ansiC.inverse(`! web ${src}`)));
865
1103
  this.bddTestIsRunning(src);
866
1104
 
@@ -872,16 +1110,6 @@ ${addableFiles
872
1110
  fs.mkdirSync(reportDest, { recursive: true });
873
1111
  }
874
1112
 
875
- // sidecars.map((sidecar) => {
876
- // if (sidecar[1] === "node") {
877
- // return this.launchNodeSideCar(
878
- // sidecar[0],
879
- // destinationOfRuntime(sidecar[0], "node", this.configs),
880
- // sidecar
881
- // );
882
- // }
883
- // });
884
-
885
1113
  const destFolder = dest.replace(".mjs", "");
886
1114
 
887
1115
  const webArgz = JSON.stringify({
@@ -904,193 +1132,14 @@ ${addableFiles
904
1132
  }
905
1133
  })`;
906
1134
 
907
- const fileStreams2: fs.WriteStream[] = [];
908
- const doneFileStream2: Promise<any>[] = [];
909
-
910
- const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
911
- const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
1135
+ const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
912
1136
 
913
1137
  this.browser
914
1138
  .newPage()
915
1139
  .then((page) => {
916
- page.on("console", (msg) => {
917
- console.log("web > ", msg.args(), msg.text());
918
- });
919
-
920
- page.exposeFunction(
921
- "screencast",
922
- async (ssOpts: ScreenshotOptions, testName: string) => {
923
- const p = ssOpts.path as string;
924
- const dir = path.dirname(p);
925
- fs.mkdirSync(dir, {
926
- recursive: true,
927
- });
928
- if (!files[testName]) {
929
- files[testName] = new Set();
930
- }
931
- files[testName].add(ssOpts.path as string);
932
-
933
- const sPromise = page.screenshot({
934
- ...ssOpts,
935
- path: p,
936
- });
937
-
938
- if (!screenshots[testName]) {
939
- screenshots[testName] = [];
940
- }
941
- screenshots[testName].push(sPromise);
942
- // sPromise.then(())
943
- await sPromise;
944
- return sPromise;
945
- // page.evaluate(`window["screenshot done"]`);
946
- }
947
- );
948
-
949
- page.exposeFunction(
950
- "customScreenShot",
951
- async (ssOpts: ScreenshotOptions, testName: string) => {
952
- const p = ssOpts.path as string;
953
- const dir = path.dirname(p);
954
- fs.mkdirSync(dir, {
955
- recursive: true,
956
- });
957
- if (!files[testName]) {
958
- files[testName] = new Set();
959
- }
960
- files[testName].add(ssOpts.path as string);
961
-
962
- const sPromise = page.screenshot({
963
- ...ssOpts,
964
- path: p,
965
- });
966
-
967
- if (!screenshots[testName]) {
968
- screenshots[testName] = [];
969
- }
970
- screenshots[testName].push(sPromise);
971
- // sPromise.then(())
972
- await sPromise;
973
- return sPromise;
974
- // page.evaluate(`window["screenshot done"]`);
975
- }
976
- );
977
-
978
- page.exposeFunction(
979
- "writeFileSync",
980
- (fp: string, contents: string, testName: string) => {
981
- return globalThis["writeFileSync"](fp, contents, testName);
982
- // const dir = path.dirname(fp);
983
-
984
- // fs.mkdirSync(dir, {
985
- // recursive: true,
986
- // });
987
-
988
- // const p = new Promise<string>(async (res, rej) => {
989
- // fs.writeFileSync(fp, contents);
990
- // res(fp);
991
- // });
992
- // doneFileStream2.push(p);
993
-
994
- // if (!files[testName]) {
995
- // files[testName] = new Set();
996
- // }
997
- // files[testName].add(fp);
998
- // return p;
999
- }
1000
- );
1001
-
1002
- page.exposeFunction("existsSync", (fp: string, contents: string) => {
1003
- return fs.existsSync(fp);
1004
- });
1005
-
1006
- page.exposeFunction("mkdirSync", (fp: string) => {
1007
- if (!fs.existsSync(fp)) {
1008
- return fs.mkdirSync(fp, {
1009
- recursive: true,
1010
- });
1011
- }
1012
- return false;
1013
- });
1014
-
1015
- page.exposeFunction(
1016
- "createWriteStream",
1017
- (fp: string, testName: string) => {
1018
- const f = fs.createWriteStream(fp);
1019
-
1020
- if (!files[testName]) {
1021
- files[testName] = new Set();
1022
- }
1023
- files[testName].add(fp);
1024
-
1025
- const p = new Promise<string>((res, rej) => {
1026
- res(fp);
1027
- });
1028
- doneFileStream2.push(p);
1029
- f.on("close", async () => {
1030
- await p;
1031
- });
1032
- fileStreams2.push(f);
1033
- return {
1034
- ...JSON.parse(JSON.stringify(f)),
1035
- uid: fileStreams2.length - 1,
1036
- };
1037
- }
1038
- );
1039
-
1040
- page.exposeFunction("write", async (uid: number, contents: string) => {
1041
- return fileStreams2[uid].write(contents);
1042
- });
1043
-
1044
- page.exposeFunction("end", async (uid: number) => {
1045
- return fileStreams2[uid].end();
1046
- });
1047
-
1048
- page.exposeFunction("page", () => {
1049
- return (page.mainFrame() as unknown as { _id: string })._id;
1050
- });
1051
-
1052
- page.exposeFunction("click", (sel) => {
1053
- return page.click(sel);
1054
- });
1055
-
1056
- page.exposeFunction("focusOn", (sel) => {
1057
- return page.focus(sel);
1058
- });
1059
-
1060
- page.exposeFunction(
1061
- "typeInto",
1062
- async (value) => await page.keyboard.type(value)
1063
- );
1064
-
1065
- page.exposeFunction("getValue", (selector) =>
1066
- page.$eval(selector, (input) => input.getAttribute("value"))
1067
- );
1068
-
1069
- page.exposeFunction(
1070
- "getAttribute",
1071
- async (selector: string, attribute: string) => {
1072
- const attributeValue = await page.$eval(selector, (input) => {
1073
- return input.getAttribute(attribute);
1074
- });
1075
- return attributeValue;
1076
- }
1077
- );
1078
-
1079
- page.exposeFunction("isDisabled", async (selector: string) => {
1080
- const attributeValue = await page.$eval(
1081
- selector,
1082
- (input: HTMLButtonElement) => {
1083
- return input.disabled;
1084
- }
1085
- );
1086
- return attributeValue;
1087
- });
1088
-
1089
- page.exposeFunction("$", async (selector: string) => {
1090
- const x = page.$(selector);
1091
- const y = await x;
1092
-
1093
- return y;
1140
+ // set up the "node" listeners
1141
+ this.mapping().forEach(async ([command, func]) => {
1142
+ page.exposeFunction(command, func);
1094
1143
  });
1095
1144
 
1096
1145
  return page;
@@ -1111,53 +1160,50 @@ ${addableFiles
1111
1160
  Promise.all(screenshots[src] || []).then(() => {
1112
1161
  delete screenshots[src];
1113
1162
  page.close();
1114
- stderrStream.close();
1115
- stdoutStream.close();
1163
+ oStream.close();
1116
1164
  });
1117
1165
  };
1118
1166
 
1119
1167
  page.on("pageerror", (err: Error) => {
1120
1168
  console.debug(`Error from ${src}: [${err.name}] `);
1121
- stderrStream.write(err.name);
1169
+ oStream.write(err.name);
1170
+ oStream.write("\n");
1122
1171
 
1123
1172
  if (err.cause) {
1124
1173
  console.debug(`Error from ${src} cause: [${err.cause}] `);
1125
- stderrStream.write(err.cause);
1174
+ oStream.write(err.cause);
1175
+ oStream.write("\n");
1126
1176
  }
1127
1177
 
1128
1178
  if (err.stack) {
1129
1179
  console.debug(`Error from stack ${src}: [${err.stack}] `);
1130
- stderrStream.write(err.stack);
1180
+ oStream.write(err.stack);
1181
+ oStream.write("\n");
1131
1182
  }
1132
1183
 
1133
1184
  console.debug(`Error from message ${src}: [${err.message}] `);
1134
- stderrStream.write(err.message);
1185
+ oStream.write(err.message);
1186
+ oStream.write("\n");
1135
1187
 
1136
1188
  this.bddTestIsNowDone(src, -1);
1137
1189
  close();
1138
1190
  });
1139
1191
  page.on("console", (log: ConsoleMessage) => {
1140
- // console.debug(`Log from ${t}: [${log.text()}] `);
1141
- // console.debug(`Log from ${t}: [${JSON.stringify(log.location())}] `);
1142
- // console.debug(
1143
- // `Log from ${t}: [${JSON.stringify(log.stackTrace())}] `
1144
- // );
1145
- stdoutStream.write(log.text());
1146
- stdoutStream.write(JSON.stringify(log.location()));
1147
- stdoutStream.write(JSON.stringify(log.stackTrace()));
1192
+ oStream.write(log.text());
1193
+ oStream.write(JSON.stringify(log.location()));
1194
+ oStream.write(JSON.stringify(log.stackTrace()));
1195
+ oStream.write("\n");
1148
1196
  });
1149
1197
  await page.goto(`file://${`${destFolder}.html`}`, {});
1150
1198
 
1151
1199
  await page
1152
1200
  .evaluate(evaluation)
1153
- .then(async ({ failed, features }: IFinalResults) => {
1201
+ .then(async ({ fails, failed, features }: IFinalResults) => {
1154
1202
  this.receiveFeatures(features, destFolder, src, "web");
1155
- // console.log(`${t} completed with ${failed} errors`);
1156
- statusMessagePretty(failed, src);
1157
- this.bddTestIsNowDone(src, failed);
1203
+ statusMessagePretty(fails, src);
1204
+ this.bddTestIsNowDone(src, fails);
1158
1205
  })
1159
1206
  .catch((e) => {
1160
- // console.log(red, `${t} errored with`, e);
1161
1207
  console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
1162
1208
  })
1163
1209
  .finally(() => {
@@ -1173,7 +1219,7 @@ ${addableFiles
1173
1219
  features: string[],
1174
1220
  destFolder: string,
1175
1221
  srcTest: string,
1176
- platform: "node" | "web"
1222
+ platform: IRunTime
1177
1223
  ) => {
1178
1224
  const featureDestination = path.resolve(
1179
1225
  process.cwd(),
@@ -1237,10 +1283,7 @@ ${addableFiles
1237
1283
  }, Promise.resolve({ files: [] as string[], strings: [] as string[] }))
1238
1284
 
1239
1285
  .then(({ files, strings }: { files: string[]; strings: string[] }) => {
1240
- // writeFileAndCreateDir(`${featureDestination}`, JSON.stringify(strings));
1241
-
1242
1286
  fs.writeFileSync(
1243
- // `${destFolder}/featurePrompt.txt`,
1244
1287
  `testeranto/reports/${this.name}/${srcTest
1245
1288
  .split(".")
1246
1289
  .slice(0, -1)
@@ -1252,8 +1295,6 @@ ${addableFiles
1252
1295
  .join("\n")
1253
1296
  );
1254
1297
  });
1255
-
1256
- // this.writeBigBoard();
1257
1298
  };
1258
1299
 
1259
1300
  writeBigBoard = () => {