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
@@ -1,4 +1,6 @@
1
+ import { spawn } from "node:child_process";
1
2
  import ts from "typescript";
3
+ import net from "net";
2
4
  import fs, { watch } from "fs";
3
5
  import path from "path";
4
6
  import puppeteer from "puppeteer-core";
@@ -6,7 +8,7 @@ import ansiC from "ansi-colors";
6
8
  import crypto from "node:crypto";
7
9
  import { ESLint } from "eslint";
8
10
  import tsc from "tsc-prog";
9
- import { lintPather, promptPather, tscPather } from "../utils";
11
+ import { getRunnables, lintPather, promptPather, tscPather, } from "../utils";
10
12
  import { PM_Base } from "./base.js";
11
13
  const eslint = new ESLint();
12
14
  const formatter = await eslint.loadFormatter("./node_modules/testeranto/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs");
@@ -64,41 +66,28 @@ function isValidUrl(string) {
64
66
  return false;
65
67
  }
66
68
  }
69
+ // Wait for file to exist, checks every 2 seconds by default
70
+ function pollForFile(path, timeout = 2000) {
71
+ const intervalObj = setInterval(function () {
72
+ const file = path;
73
+ const fileExists = fs.existsSync(file);
74
+ // console.log("Checking for: ", file);
75
+ // console.log("Exists: ", fileExists);
76
+ if (fileExists) {
77
+ clearInterval(intervalObj);
78
+ }
79
+ }, timeout);
80
+ }
67
81
  export class PM_Main extends PM_Base {
68
82
  constructor(configs, name, mode) {
69
83
  super(configs);
70
84
  this.bigBoard = {};
71
- this.stop = () => {
72
- console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
73
- this.mode = "once";
74
- this.nodeMetafileWatcher.close();
75
- this.webMetafileWatcher.close();
76
- this.checkForShutdown();
77
- };
78
- this.getRunnables = (tests, payload = {
85
+ this.getRunnables = (tests, testName, payload = {
79
86
  nodeEntryPoints: {},
80
87
  webEntryPoints: {},
88
+ importEntryPoints: {},
81
89
  }) => {
82
- return tests.reduce((pt, cv, cndx, cry) => {
83
- if (cv[1] === "node") {
84
- pt.nodeEntryPoints[cv[0]] = path.resolve(`./testeranto/bundles/node/${this.name}/${cv[0]
85
- .split(".")
86
- .slice(0, -1)
87
- .concat("mjs")
88
- .join(".")}`);
89
- }
90
- else if (cv[1] === "web") {
91
- pt.webEntryPoints[cv[0]] = path.resolve(`./testeranto/bundles/web/${this.name}/${cv[0]
92
- .split(".")
93
- .slice(0, -1)
94
- .concat("mjs")
95
- .join(".")}`);
96
- }
97
- if (cv[3].length) {
98
- this.getRunnables(cv[3], payload);
99
- }
100
- return pt;
101
- }, payload);
90
+ return getRunnables(tests, testName, payload);
102
91
  };
103
92
  this.tscCheck = async ({ entrypoint, addableFiles, platform, }) => {
104
93
  console.log(ansiC.green(ansiC.inverse(`tsc < ${entrypoint}`)));
@@ -114,6 +103,7 @@ export class PM_Main extends PM_Base {
114
103
  noEmit: true,
115
104
  },
116
105
  include: addableFiles, //["src/**/*"],
106
+ // exclude: ["node_modules", "../testeranto"],
117
107
  // exclude: ["**/*.test.ts", "**/*.spec.ts"],
118
108
  });
119
109
  const tscPath = tscPather(entrypoint, platform, this.name);
@@ -236,13 +226,13 @@ ${addableFiles
236
226
  this.writeBigBoard();
237
227
  this.checkForShutdown();
238
228
  };
239
- this.launchNode = async (src, dest) => {
240
- console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
229
+ this.launchPure = async (src, dest) => {
230
+ console.log(ansiC.green(ansiC.inverse(`! pure, ${src}`)));
241
231
  this.bddTestIsRunning(src);
242
232
  const reportDest = `testeranto/reports/${this.name}/${src
243
233
  .split(".")
244
234
  .slice(0, -1)
245
- .join(".")}/node`;
235
+ .join(".")}/pure`;
246
236
  if (!fs.existsSync(reportDest)) {
247
237
  fs.mkdirSync(reportDest, { recursive: true });
248
238
  }
@@ -276,7 +266,6 @@ ${addableFiles
276
266
  argz = JSON.stringify({
277
267
  scheduled: true,
278
268
  name: src,
279
- // ports: [3333],
280
269
  ports: portsToUse,
281
270
  fs: destFolder,
282
271
  browserWSEndpoint: this.browser.wsEndpoint(),
@@ -293,6 +282,10 @@ ${addableFiles
293
282
  }
294
283
  const builtfile = dest;
295
284
  const webSideCares = [];
285
+ // fs.writeFileSync(
286
+ // `${reportDest}/stdlog.txt`,
287
+ // "THIS FILE IS AUTO GENERATED. IT IS PURPOSEFULLY LEFT BLANK."
288
+ // );
296
289
  // await Promise.all(
297
290
  // testConfig[3].map(async (sidecar) => {
298
291
  // if (sidecar[1] === "web") {
@@ -313,14 +306,14 @@ ${addableFiles
313
306
  // }
314
307
  // })
315
308
  // );
316
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
309
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
317
310
  return module.default.then((defaultModule) => {
318
311
  defaultModule
319
312
  .receiveTestResourceConfig(argz)
320
- .then(async ({ features, failed }) => {
321
- this.receiveFeatures(features, destFolder, src, "node");
322
- statusMessagePretty(failed, src);
323
- this.bddTestIsNowDone(src, failed);
313
+ .then(async (results) => {
314
+ this.receiveFeatures(results.features, destFolder, src, "pure");
315
+ statusMessagePretty(results.fails, src);
316
+ this.bddTestIsNowDone(src, results.fails);
324
317
  })
325
318
  .catch((e) => {
326
319
  console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
@@ -338,6 +331,163 @@ ${addableFiles
338
331
  }
339
332
  }
340
333
  };
334
+ this.launchNode = async (src, dest) => {
335
+ console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
336
+ this.bddTestIsRunning(src);
337
+ const reportDest = `testeranto/reports/${this.name}/${src
338
+ .split(".")
339
+ .slice(0, -1)
340
+ .join(".")}/node`;
341
+ if (!fs.existsSync(reportDest)) {
342
+ fs.mkdirSync(reportDest, { recursive: true });
343
+ }
344
+ const destFolder = dest.replace(".mjs", "");
345
+ let testResources = "";
346
+ const testConfig = this.configs.tests.find((t) => {
347
+ return t[0] === src;
348
+ });
349
+ if (!testConfig) {
350
+ console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
351
+ process.exit(-1);
352
+ }
353
+ const testConfigResource = testConfig[2];
354
+ let portsToUse = [];
355
+ if (testConfigResource.ports === 0) {
356
+ testResources = JSON.stringify({
357
+ scheduled: true,
358
+ name: src,
359
+ ports: portsToUse,
360
+ fs: reportDest,
361
+ browserWSEndpoint: this.browser.wsEndpoint(),
362
+ });
363
+ }
364
+ else if (testConfigResource.ports > 0) {
365
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
366
+ if (openPorts.length >= testConfigResource.ports) {
367
+ for (let i = 0; i < testConfigResource.ports; i++) {
368
+ portsToUse.push(openPorts[i][0]);
369
+ this.ports[openPorts[i][0]] = false; // port is now closed
370
+ }
371
+ testResources = JSON.stringify({
372
+ scheduled: true,
373
+ name: src,
374
+ ports: portsToUse,
375
+ fs: destFolder,
376
+ browserWSEndpoint: this.browser.wsEndpoint(),
377
+ });
378
+ }
379
+ else {
380
+ this.queue.push(src);
381
+ return;
382
+ }
383
+ }
384
+ else {
385
+ console.error("negative port makes no sense", src);
386
+ process.exit(-1);
387
+ }
388
+ const builtfile = dest;
389
+ // const webSideCares: Page[] = [];
390
+ // await Promise.all(
391
+ // testConfig[3].map(async (sidecar) => {
392
+ // if (sidecar[1] === "web") {
393
+ // const s = await this.launchWebSideCar(
394
+ // sidecar[0],
395
+ // destinationOfRuntime(sidecar[0], "web", this.configs),
396
+ // sidecar
397
+ // );
398
+ // webSideCares.push(s);
399
+ // return s;
400
+ // }
401
+ // if (sidecar[1] === "node") {
402
+ // return this.launchNodeSideCar(
403
+ // sidecar[0],
404
+ // destinationOfRuntime(sidecar[0], "node", this.configs),
405
+ // sidecar
406
+ // );
407
+ // }
408
+ // })
409
+ // );
410
+ // const f = fork(builtfile, [testResources], {
411
+ // silent: true,
412
+ // // detached: true,
413
+ // // stdio: "ignore",
414
+ // });
415
+ let haltReturns = false;
416
+ let buffer = new Buffer("");
417
+ const server = net.createServer((socket) => {
418
+ socket.on("data", (data) => {
419
+ buffer = Buffer.concat([buffer, data]);
420
+ let messages = [];
421
+ for (let b = 0; b < buffer.length + 1; b++) {
422
+ let c = buffer.slice(0, b);
423
+ let d;
424
+ try {
425
+ d = JSON.parse(c.toString());
426
+ messages.push(d);
427
+ buffer = buffer.slice(b, buffer.length + 1);
428
+ b = 0;
429
+ }
430
+ catch (e) {
431
+ // b++;
432
+ }
433
+ }
434
+ messages.forEach(async (payload) => {
435
+ // set up the "node" listeners
436
+ this.mapping().forEach(async ([command, func]) => {
437
+ if (payload[0] === command) {
438
+ const x = payload.slice(1, -1);
439
+ const r = await this[command](...x);
440
+ if (!haltReturns) {
441
+ child.send(JSON.stringify({
442
+ payload: r,
443
+ key: payload[payload.length - 1],
444
+ }));
445
+ }
446
+ }
447
+ });
448
+ });
449
+ });
450
+ });
451
+ const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
452
+ const child = spawn("node", [builtfile, testResources], {
453
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
454
+ // silent: true
455
+ });
456
+ const p = destFolder + "/pipe";
457
+ server.listen(p, () => {
458
+ var _a, _b;
459
+ (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
460
+ oStream.write(`stderr data ${data}`);
461
+ });
462
+ (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
463
+ oStream.write(`stdout data ${data}`);
464
+ });
465
+ child.on("close", (code) => {
466
+ oStream.close();
467
+ server.close();
468
+ if (code === null) {
469
+ this.bddTestIsNowDone(src, -1);
470
+ statusMessagePretty(-1, src);
471
+ }
472
+ else if (code === 0) {
473
+ this.bddTestIsNowDone(src, 0);
474
+ statusMessagePretty(0, src);
475
+ }
476
+ else {
477
+ this.bddTestIsNowDone(src, code);
478
+ statusMessagePretty(code, src);
479
+ }
480
+ // haltReturns = true;
481
+ });
482
+ child.on("exit", (code) => { });
483
+ });
484
+ child.send({ path: p });
485
+ for (let i = 0; i <= portsToUse.length; i++) {
486
+ if (portsToUse[i]) {
487
+ this.ports[portsToUse[i]] = "true"; //port is open again
488
+ }
489
+ }
490
+ };
341
491
  this.launchWebSideCar = async (src, dest, testConfig) => {
342
492
  const d = dest + ".mjs";
343
493
  console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
@@ -465,7 +615,7 @@ ${addableFiles
465
615
  process.exit(-1);
466
616
  }
467
617
  const builtfile = dest + ".mjs";
468
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
618
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
469
619
  return module.default.then((defaultModule) => {
470
620
  // console.log("defaultModule", defaultModule);
471
621
  const s = new defaultModule();
@@ -488,7 +638,7 @@ ${addableFiles
488
638
  }
489
639
  }
490
640
  };
491
- this.launchWeb = (src, dest) => {
641
+ this.launchWeb = async (src, dest) => {
492
642
  console.log(ansiC.green(ansiC.inverse(`! web ${src}`)));
493
643
  this.bddTestIsRunning(src);
494
644
  const reportDest = `testeranto/reports/${this.name}/${src
@@ -498,15 +648,6 @@ ${addableFiles
498
648
  if (!fs.existsSync(reportDest)) {
499
649
  fs.mkdirSync(reportDest, { recursive: true });
500
650
  }
501
- // sidecars.map((sidecar) => {
502
- // if (sidecar[1] === "node") {
503
- // return this.launchNodeSideCar(
504
- // sidecar[0],
505
- // destinationOfRuntime(sidecar[0], "node", this.configs),
506
- // sidecar
507
- // );
508
- // }
509
- // });
510
651
  const destFolder = dest.replace(".mjs", "");
511
652
  const webArgz = JSON.stringify({
512
653
  name: dest,
@@ -525,133 +666,13 @@ ${addableFiles
525
666
  console.log("fail", e)
526
667
  }
527
668
  })`;
528
- const fileStreams2 = [];
529
- const doneFileStream2 = [];
530
- const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
531
- const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
669
+ const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
532
670
  this.browser
533
671
  .newPage()
534
672
  .then((page) => {
535
- page.on("console", (msg) => {
536
- console.log("web > ", msg.args(), msg.text());
537
- });
538
- page.exposeFunction("screencast", async (ssOpts, testName) => {
539
- const p = ssOpts.path;
540
- const dir = path.dirname(p);
541
- fs.mkdirSync(dir, {
542
- recursive: true,
543
- });
544
- if (!files[testName]) {
545
- files[testName] = new Set();
546
- }
547
- files[testName].add(ssOpts.path);
548
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
549
- if (!screenshots[testName]) {
550
- screenshots[testName] = [];
551
- }
552
- screenshots[testName].push(sPromise);
553
- // sPromise.then(())
554
- await sPromise;
555
- return sPromise;
556
- // page.evaluate(`window["screenshot done"]`);
557
- });
558
- page.exposeFunction("customScreenShot", async (ssOpts, testName) => {
559
- const p = ssOpts.path;
560
- const dir = path.dirname(p);
561
- fs.mkdirSync(dir, {
562
- recursive: true,
563
- });
564
- if (!files[testName]) {
565
- files[testName] = new Set();
566
- }
567
- files[testName].add(ssOpts.path);
568
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
569
- if (!screenshots[testName]) {
570
- screenshots[testName] = [];
571
- }
572
- screenshots[testName].push(sPromise);
573
- // sPromise.then(())
574
- await sPromise;
575
- return sPromise;
576
- // page.evaluate(`window["screenshot done"]`);
577
- });
578
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
579
- return globalThis["writeFileSync"](fp, contents, testName);
580
- // const dir = path.dirname(fp);
581
- // fs.mkdirSync(dir, {
582
- // recursive: true,
583
- // });
584
- // const p = new Promise<string>(async (res, rej) => {
585
- // fs.writeFileSync(fp, contents);
586
- // res(fp);
587
- // });
588
- // doneFileStream2.push(p);
589
- // if (!files[testName]) {
590
- // files[testName] = new Set();
591
- // }
592
- // files[testName].add(fp);
593
- // return p;
594
- });
595
- page.exposeFunction("existsSync", (fp, contents) => {
596
- return fs.existsSync(fp);
597
- });
598
- page.exposeFunction("mkdirSync", (fp) => {
599
- if (!fs.existsSync(fp)) {
600
- return fs.mkdirSync(fp, {
601
- recursive: true,
602
- });
603
- }
604
- return false;
605
- });
606
- page.exposeFunction("createWriteStream", (fp, testName) => {
607
- const f = fs.createWriteStream(fp);
608
- if (!files[testName]) {
609
- files[testName] = new Set();
610
- }
611
- files[testName].add(fp);
612
- const p = new Promise((res, rej) => {
613
- res(fp);
614
- });
615
- doneFileStream2.push(p);
616
- f.on("close", async () => {
617
- await p;
618
- });
619
- fileStreams2.push(f);
620
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
621
- });
622
- page.exposeFunction("write", async (uid, contents) => {
623
- return fileStreams2[uid].write(contents);
624
- });
625
- page.exposeFunction("end", async (uid) => {
626
- return fileStreams2[uid].end();
627
- });
628
- page.exposeFunction("page", () => {
629
- return page.mainFrame()._id;
630
- });
631
- page.exposeFunction("click", (sel) => {
632
- return page.click(sel);
633
- });
634
- page.exposeFunction("focusOn", (sel) => {
635
- return page.focus(sel);
636
- });
637
- page.exposeFunction("typeInto", async (value) => await page.keyboard.type(value));
638
- page.exposeFunction("getValue", (selector) => page.$eval(selector, (input) => input.getAttribute("value")));
639
- page.exposeFunction("getAttribute", async (selector, attribute) => {
640
- const attributeValue = await page.$eval(selector, (input) => {
641
- return input.getAttribute(attribute);
642
- });
643
- return attributeValue;
644
- });
645
- page.exposeFunction("isDisabled", async (selector) => {
646
- const attributeValue = await page.$eval(selector, (input) => {
647
- return input.disabled;
648
- });
649
- return attributeValue;
650
- });
651
- page.exposeFunction("$", async (selector) => {
652
- const x = page.$(selector);
653
- const y = await x;
654
- return y;
673
+ // set up the "node" listeners
674
+ this.mapping().forEach(async ([command, func]) => {
675
+ page.exposeFunction(command, func);
655
676
  });
656
677
  return page;
657
678
  })
@@ -666,47 +687,44 @@ ${addableFiles
666
687
  Promise.all(screenshots[src] || []).then(() => {
667
688
  delete screenshots[src];
668
689
  page.close();
669
- stderrStream.close();
670
- stdoutStream.close();
690
+ oStream.close();
671
691
  });
672
692
  };
673
693
  page.on("pageerror", (err) => {
674
694
  console.debug(`Error from ${src}: [${err.name}] `);
675
- stderrStream.write(err.name);
695
+ oStream.write(err.name);
696
+ oStream.write("\n");
676
697
  if (err.cause) {
677
698
  console.debug(`Error from ${src} cause: [${err.cause}] `);
678
- stderrStream.write(err.cause);
699
+ oStream.write(err.cause);
700
+ oStream.write("\n");
679
701
  }
680
702
  if (err.stack) {
681
703
  console.debug(`Error from stack ${src}: [${err.stack}] `);
682
- stderrStream.write(err.stack);
704
+ oStream.write(err.stack);
705
+ oStream.write("\n");
683
706
  }
684
707
  console.debug(`Error from message ${src}: [${err.message}] `);
685
- stderrStream.write(err.message);
708
+ oStream.write(err.message);
709
+ oStream.write("\n");
686
710
  this.bddTestIsNowDone(src, -1);
687
711
  close();
688
712
  });
689
713
  page.on("console", (log) => {
690
- // console.debug(`Log from ${t}: [${log.text()}] `);
691
- // console.debug(`Log from ${t}: [${JSON.stringify(log.location())}] `);
692
- // console.debug(
693
- // `Log from ${t}: [${JSON.stringify(log.stackTrace())}] `
694
- // );
695
- stdoutStream.write(log.text());
696
- stdoutStream.write(JSON.stringify(log.location()));
697
- stdoutStream.write(JSON.stringify(log.stackTrace()));
714
+ oStream.write(log.text());
715
+ oStream.write(JSON.stringify(log.location()));
716
+ oStream.write(JSON.stringify(log.stackTrace()));
717
+ oStream.write("\n");
698
718
  });
699
719
  await page.goto(`file://${`${destFolder}.html`}`, {});
700
720
  await page
701
721
  .evaluate(evaluation)
702
- .then(async ({ failed, features }) => {
722
+ .then(async ({ fails, failed, features }) => {
703
723
  this.receiveFeatures(features, destFolder, src, "web");
704
- // console.log(`${t} completed with ${failed} errors`);
705
- statusMessagePretty(failed, src);
706
- this.bddTestIsNowDone(src, failed);
724
+ statusMessagePretty(fails, src);
725
+ this.bddTestIsNowDone(src, fails);
707
726
  })
708
727
  .catch((e) => {
709
- // console.log(red, `${t} errored with`, e);
710
728
  console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
711
729
  })
712
730
  .finally(() => {
@@ -761,10 +779,7 @@ ${addableFiles
761
779
  return accum;
762
780
  }, Promise.resolve({ files: [], strings: [] }))
763
781
  .then(({ files, strings }) => {
764
- // writeFileAndCreateDir(`${featureDestination}`, JSON.stringify(strings));
765
- fs.writeFileSync(
766
- // `${destFolder}/featurePrompt.txt`,
767
- `testeranto/reports/${this.name}/${srcTest
782
+ fs.writeFileSync(`testeranto/reports/${this.name}/${srcTest
768
783
  .split(".")
769
784
  .slice(0, -1)
770
785
  .join(".")}/${platform}/featurePrompt.txt`, files
@@ -773,7 +788,6 @@ ${addableFiles
773
788
  })
774
789
  .join("\n"));
775
790
  });
776
- // this.writeBigBoard();
777
791
  };
778
792
  this.writeBigBoard = () => {
779
793
  fs.writeFileSync(`./testeranto/reports/${this.name}/summary.json`, JSON.stringify(this.bigBoard, null, 2));
@@ -793,10 +807,43 @@ ${addableFiles
793
807
  this.ports[element] = "true"; // set ports as open
794
808
  });
795
809
  }
810
+ mapping() {
811
+ return [
812
+ ["$", this.$],
813
+ ["click", this.click],
814
+ ["closePage", this.closePage],
815
+ ["createWriteStream", this.createWriteStream],
816
+ ["customclose", this.customclose],
817
+ ["customScreenShot", this.customScreenShot],
818
+ ["end", this.end],
819
+ ["existsSync", this.existsSync],
820
+ ["focusOn", this.focusOn],
821
+ ["getAttribute", this.getAttribute],
822
+ ["getValue", this.getValue],
823
+ ["goto", this.goto],
824
+ ["isDisabled", this.isDisabled],
825
+ ["mkdirSync", this.mkdirSync],
826
+ ["newPage", this.newPage],
827
+ ["page", this.page],
828
+ ["pages", this.pages],
829
+ ["screencast", this.screencast],
830
+ ["screencastStop", this.screencastStop],
831
+ ["typeInto", this.typeInto],
832
+ ["waitForSelector", this.waitForSelector],
833
+ ["write", this.write],
834
+ ["writeFileSync", this.writeFileSync],
835
+ ];
836
+ }
796
837
  async start() {
838
+ // set up the "pure" listeners
839
+ this.mapping().forEach(async ([command, func]) => {
840
+ // page.exposeFunction(command, func);
841
+ globalThis[command] = func;
842
+ });
797
843
  if (!fs.existsSync(`testeranto/reports/${this.name}`)) {
798
844
  fs.mkdirSync(`testeranto/reports/${this.name}`);
799
845
  }
846
+ // await pollForFile();
800
847
  this.browser = (await puppeteer.launch({
801
848
  slowMo: 1,
802
849
  waitForInitialPage: false,
@@ -837,46 +884,66 @@ ${addableFiles
837
884
  // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
838
885
  ],
839
886
  }));
840
- const { nodeEntryPoints, webEntryPoints } = this.getRunnables(this.configs.tests);
841
- Object.entries(nodeEntryPoints).forEach(([k, outputFile]) => {
842
- this.launchNode(k, outputFile);
843
- try {
844
- watch(outputFile, async (e, filename) => {
845
- const hash = await fileHash(outputFile);
846
- if (fileHashes[k] !== hash) {
847
- fileHashes[k] = hash;
848
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
849
- this.launchNode(k, outputFile);
850
- }
851
- });
852
- }
853
- catch (e) {
854
- console.error(e);
855
- }
856
- });
857
- Object.entries(webEntryPoints).forEach(([k, outputFile]) => {
858
- this.launchWeb(k, outputFile);
859
- watch(outputFile, async (e, filename) => {
860
- const hash = await fileHash(outputFile);
861
- if (fileHashes[k] !== hash) {
862
- fileHashes[k] = hash;
863
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
864
- this.launchWeb(k, outputFile);
887
+ const { nodeEntryPoints, webEntryPoints, importEntryPoints } = this.getRunnables(this.configs.tests, this.name);
888
+ [
889
+ [
890
+ nodeEntryPoints,
891
+ this.launchNode,
892
+ "node",
893
+ (w) => {
894
+ this.nodeMetafileWatcher = w;
895
+ },
896
+ ],
897
+ [
898
+ webEntryPoints,
899
+ this.launchWeb,
900
+ "web",
901
+ (w) => {
902
+ this.webMetafileWatcher = w;
903
+ },
904
+ ],
905
+ [
906
+ importEntryPoints,
907
+ this.launchPure,
908
+ "pure",
909
+ (w) => {
910
+ this.importMetafileWatcher = w;
911
+ },
912
+ ],
913
+ ].forEach(async ([eps, launcher, runtime, watcher]) => {
914
+ const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
915
+ await pollForFile(metafile);
916
+ Object.entries(eps).forEach(async ([k, outputFile]) => {
917
+ // await pollForFile(outputFile);
918
+ launcher(k, outputFile);
919
+ try {
920
+ watch(outputFile, async (e, filename) => {
921
+ const hash = await fileHash(outputFile);
922
+ if (fileHashes[k] !== hash) {
923
+ fileHashes[k] = hash;
924
+ console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
925
+ launcher(k, outputFile);
926
+ }
927
+ });
928
+ }
929
+ catch (e) {
930
+ console.error(e);
865
931
  }
866
932
  });
933
+ this.metafileOutputs(runtime);
934
+ watcher(watch(metafile, async (e, filename) => {
935
+ console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (${runtime})`)));
936
+ this.metafileOutputs(runtime);
937
+ }));
867
938
  });
868
- this.metafileOutputs("node");
869
- const w = `./testeranto/bundles/node/${this.name}/metafile.json`;
870
- console.log("w", w);
871
- this.nodeMetafileWatcher = watch(w, async (e, filename) => {
872
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (node)`)));
873
- this.metafileOutputs("node");
874
- });
875
- this.metafileOutputs("web");
876
- this.webMetafileWatcher = watch(`./testeranto/bundles/web/${this.name}/metafile.json`, async (e, filename) => {
877
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (web)`)));
878
- this.metafileOutputs("web");
879
- });
939
+ }
940
+ async stop() {
941
+ console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
942
+ this.mode = "once";
943
+ this.nodeMetafileWatcher.close();
944
+ this.webMetafileWatcher.close();
945
+ this.importMetafileWatcher.close();
946
+ this.checkForShutdown();
880
947
  }
881
948
  async metafileOutputs(platform) {
882
949
  const metafile = JSON.parse(fs