testeranto 0.121.1 → 0.125.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +28 -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
@@ -5,7 +5,9 @@ import ansiC2 from "ansi-colors";
5
5
  import readline from "readline";
6
6
 
7
7
  // src/PM/main.ts
8
+ import { spawn } from "node:child_process";
8
9
  import ts from "typescript";
10
+ import net from "net";
9
11
  import fs2, { watch } from "fs";
10
12
  import path3 from "path";
11
13
  import puppeteer from "puppeteer-core";
@@ -46,164 +48,131 @@ var promptPather = (entryPoint, platform, projectName) => {
46
48
  `prompt.txt`
47
49
  );
48
50
  };
51
+ var getRunnables = (tests, projectName, payload = {
52
+ nodeEntryPoints: {},
53
+ webEntryPoints: {},
54
+ importEntryPoints: {}
55
+ }) => {
56
+ return tests.reduce((pt, cv, cndx, cry) => {
57
+ if (cv[1] === "node") {
58
+ pt.nodeEntryPoints[cv[0]] = path.resolve(
59
+ `./testeranto/bundles/node/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
60
+ );
61
+ } else if (cv[1] === "web") {
62
+ pt.webEntryPoints[cv[0]] = path.resolve(
63
+ `./testeranto/bundles/web/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
64
+ );
65
+ } else if (cv[1] === "pure") {
66
+ pt.importEntryPoints[cv[0]] = path.resolve(
67
+ `./testeranto/bundles/pure/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
68
+ );
69
+ }
70
+ return pt;
71
+ }, payload);
72
+ };
49
73
 
50
74
  // src/PM/base.ts
51
75
  import fs from "fs";
52
76
  import path2 from "path";
53
-
54
- // src/PM/index.ts
55
- var PM = class {
56
- };
57
-
58
- // src/PM/base.ts
59
77
  var fileStreams3 = [];
60
78
  var fPaths = [];
61
79
  var files = {};
62
80
  var recorders = {};
63
81
  var screenshots = {};
64
- var PM_Base = class extends PM {
82
+ var PM_Base = class {
65
83
  constructor(configs) {
66
- super();
67
- this.server = {};
68
84
  this.configs = configs;
69
- globalThis["waitForSelector"] = async (pageKey, sel) => {
70
- const page = (await this.browser.pages()).find(
71
- /* @ts-ignore:next-line */
72
- (p) => p.mainFrame()._id === pageKey
73
- );
74
- await page?.waitForSelector(sel);
75
- };
76
- globalThis["screencastStop"] = async (path4) => {
77
- return recorders[path4].stop();
78
- };
79
- globalThis["closePage"] = async (pageKey) => {
80
- const page = (await this.browser.pages()).find(
81
- /* @ts-ignore:next-line */
82
- (p) => p.mainFrame()._id === pageKey
83
- );
84
- return page.close();
85
- };
86
- globalThis["goto"] = async (pageKey, url) => {
87
- const page = (await this.browser.pages()).find(
88
- /* @ts-ignore:next-line */
89
- (p) => p.mainFrame()._id === pageKey
90
- );
91
- await page?.goto(url);
92
- return;
93
- };
94
- globalThis["newPage"] = () => {
95
- return this.browser.newPage();
96
- };
97
- globalThis["pages"] = () => {
98
- return this.browser.pages();
99
- };
100
- globalThis["mkdirSync"] = (fp) => {
101
- if (!fs.existsSync(fp)) {
102
- return fs.mkdirSync(fp, {
103
- recursive: true
104
- });
105
- }
106
- return false;
107
- };
108
- globalThis["writeFileSync"] = (filepath, contents, testName2) => {
109
- fs.mkdirSync(path2.dirname(filepath), {
110
- recursive: true
111
- });
112
- if (!files[testName2]) {
113
- files[testName2] = /* @__PURE__ */ new Set();
114
- }
115
- files[testName2].add(filepath);
116
- return fs.writeFileSync(filepath, contents);
117
- };
118
- globalThis["createWriteStream"] = (filepath, testName2) => {
119
- const f = fs.createWriteStream(filepath);
120
- fileStreams3.push(f);
121
- if (!files[testName2]) {
122
- files[testName2] = /* @__PURE__ */ new Set();
123
- }
124
- files[testName2].add(filepath);
125
- return {
126
- ...JSON.parse(JSON.stringify(f)),
127
- uid: fileStreams3.length - 1
128
- };
129
- };
130
- globalThis["write"] = (uid, contents) => {
131
- fileStreams3[uid].write(contents);
132
- };
133
- globalThis["end"] = (uid) => {
134
- fileStreams3[uid].end();
135
- };
136
- globalThis["customScreenShot"] = async (opts, pageKey, testName2) => {
137
- const page = (await this.browser.pages()).find(
138
- /* @ts-ignore:next-line */
139
- (p2) => p2.mainFrame()._id === pageKey
140
- );
141
- const p = opts.path;
142
- const dir = path2.dirname(p);
143
- fs.mkdirSync(dir, {
144
- recursive: true
145
- });
146
- if (!files[opts.path]) {
147
- files[opts.path] = /* @__PURE__ */ new Set();
148
- }
149
- files[opts.path].add(opts.path);
150
- const sPromise = page.screenshot({
151
- ...opts,
152
- path: p
153
- });
154
- if (!screenshots[opts.path]) {
155
- screenshots[opts.path] = [];
156
- }
157
- screenshots[opts.path].push(sPromise);
158
- await sPromise;
159
- return sPromise;
160
- };
161
- globalThis["screencast"] = async (opts, pageKey) => {
162
- const page = (await this.browser.pages()).find(
163
- /* @ts-ignore:next-line */
164
- (p2) => p2.mainFrame()._id === pageKey
165
- );
166
- const p = opts.path;
167
- const dir = path2.dirname(p);
168
- fs.mkdirSync(dir, {
169
- recursive: true
170
- });
171
- const recorder = await page?.screencast({
172
- ...opts,
173
- /* @ts-ignore:next-line */
174
- path: p
175
- });
176
- recorders[opts.path] = recorder;
177
- return opts.path;
178
- };
179
85
  }
180
86
  customclose() {
181
87
  throw new Error("Method not implemented.");
182
88
  }
183
89
  waitForSelector(p, s) {
184
- throw new Error("Method not implemented.");
90
+ return new Promise((res) => {
91
+ this.doInPage(p, async (page) => {
92
+ const x = page.$(s);
93
+ const y = await x;
94
+ res(y !== null);
95
+ });
96
+ });
185
97
  }
186
98
  closePage(p) {
187
- throw new Error("Method not implemented.");
99
+ return new Promise((res) => {
100
+ this.doInPage(p, async (page) => {
101
+ page.close();
102
+ res({});
103
+ });
104
+ });
188
105
  }
189
106
  newPage() {
190
- throw new Error("Method not implemented.");
107
+ return this.browser.newPage();
191
108
  }
192
109
  goto(p, url) {
193
- throw new Error("Method not implemented.");
110
+ return new Promise((res) => {
111
+ this.doInPage(p, async (page) => {
112
+ await page?.goto(url);
113
+ res({});
114
+ });
115
+ });
194
116
  }
195
- $(selector) {
196
- throw new Error("Method not implemented.");
117
+ $(selector, p) {
118
+ return new Promise((res) => {
119
+ this.doInPage(p, async (page) => {
120
+ const x = page.$(selector);
121
+ const y = await x;
122
+ res(y !== null);
123
+ });
124
+ });
197
125
  }
198
- screencast(opts) {
199
- throw new Error("Method not implemented.");
126
+ async pages() {
127
+ return (await this.browser.pages()).map((p) => {
128
+ return p.mainFrame()._id;
129
+ });
200
130
  }
201
- /* @ts-ignore:next-line */
202
- customScreenShot(opts, cdpPage) {
203
- throw new Error("Method not implemented.");
131
+ async screencast(ssOpts, testName2, page) {
132
+ const p = ssOpts.path;
133
+ const dir = path2.dirname(p);
134
+ fs.mkdirSync(dir, {
135
+ recursive: true
136
+ });
137
+ if (!files[testName2]) {
138
+ files[testName2] = /* @__PURE__ */ new Set();
139
+ }
140
+ files[testName2].add(ssOpts.path);
141
+ const sPromise = page.screenshot({
142
+ ...ssOpts,
143
+ path: p
144
+ });
145
+ if (!screenshots[testName2]) {
146
+ screenshots[testName2] = [];
147
+ }
148
+ screenshots[testName2].push(sPromise);
149
+ await sPromise;
150
+ return sPromise;
204
151
  }
205
- end(accessObject) {
206
- throw new Error("Method not implemented.");
152
+ async customScreenShot(ssOpts, testName2, page) {
153
+ const p = ssOpts.path;
154
+ const dir = path2.dirname(p);
155
+ fs.mkdirSync(dir, {
156
+ recursive: true
157
+ });
158
+ if (!files[testName2]) {
159
+ files[testName2] = /* @__PURE__ */ new Set();
160
+ }
161
+ files[testName2].add(ssOpts.path);
162
+ const sPromise = page.screenshot({
163
+ ...ssOpts,
164
+ path: p
165
+ });
166
+ if (!screenshots[testName2]) {
167
+ screenshots[testName2] = [];
168
+ }
169
+ screenshots[testName2].push(sPromise);
170
+ await sPromise;
171
+ return sPromise;
172
+ }
173
+ async end(uid) {
174
+ await fileStreams3[uid].end();
175
+ return true;
207
176
  }
208
177
  existsSync(destFolder) {
209
178
  return fs.existsSync(destFolder);
@@ -216,11 +185,29 @@ var PM_Base = class extends PM {
216
185
  }
217
186
  return false;
218
187
  }
219
- writeFileSync(fp, contents) {
220
- fs.writeFileSync(fp, contents);
188
+ async writeFileSync(filepath, contents, testName2) {
189
+ return new Promise(async (res) => {
190
+ fs.mkdirSync(path2.dirname(filepath), {
191
+ recursive: true
192
+ });
193
+ if (!files[testName2]) {
194
+ files[testName2] = /* @__PURE__ */ new Set();
195
+ }
196
+ files[testName2].add(filepath);
197
+ await fs.writeFileSync(filepath, contents);
198
+ res(true);
199
+ });
221
200
  }
222
- createWriteStream(filepath) {
223
- return fs.createWriteStream(filepath);
201
+ async createWriteStream(filepath, testName2) {
202
+ return new Promise((res) => {
203
+ const f = fs.createWriteStream(filepath);
204
+ fileStreams3.push(f);
205
+ if (!files[testName2]) {
206
+ files[testName2] = /* @__PURE__ */ new Set();
207
+ }
208
+ files[testName2].add(filepath);
209
+ res(fileStreams3.length - 1);
210
+ });
224
211
  }
225
212
  testArtiFactoryfileWriter(tLog, callback) {
226
213
  return (fPath, value) => {
@@ -267,32 +254,54 @@ var PM_Base = class extends PM {
267
254
  );
268
255
  };
269
256
  }
270
- write(accessObject, contents) {
271
- throw new Error("Method not implemented.");
257
+ async write(uid, contents) {
258
+ return new Promise((res) => {
259
+ const x = fileStreams3[uid].write(contents);
260
+ res(x);
261
+ });
272
262
  }
273
263
  page() {
274
264
  throw new Error("Method not implemented.");
275
265
  }
276
- click(selector) {
277
- throw new Error("Method not implemented.");
266
+ click(selector, page) {
267
+ return page.click(selector);
278
268
  }
279
- focusOn(selector) {
280
- throw new Error("Method not implemented.");
269
+ async focusOn(selector, p) {
270
+ this.doInPage(p, (page) => {
271
+ return page.focus(selector);
272
+ });
281
273
  }
282
- typeInto(value) {
283
- throw new Error("Method not implemented.");
274
+ async typeInto(value, p) {
275
+ this.doInPage(p, (page) => {
276
+ return page.keyboard.type(value);
277
+ });
284
278
  }
285
- getValue(value) {
286
- throw new Error("Method not implemented.");
279
+ getValue(value, p) {
280
+ this.doInPage(p, (page) => {
281
+ return page.keyboard.type(value);
282
+ });
287
283
  }
288
- getAttribute(selector, attribute) {
289
- throw new Error("Method not implemented.");
284
+ getAttribute(selector, attribute, p) {
285
+ this.doInPage(p, (page) => {
286
+ return page.$eval(selector, (input) => input.getAttribute("value"));
287
+ });
290
288
  }
291
- isDisabled(selector) {
292
- throw new Error("Method not implemented.");
289
+ isDisabled(selector, p) {
290
+ this.doInPage(p, async (page) => {
291
+ return await page.$eval(selector, (input) => {
292
+ return input.disabled;
293
+ });
294
+ });
293
295
  }
294
296
  screencastStop(s) {
295
- throw new Error("Method not implemented.");
297
+ return recorders[s].stop();
298
+ }
299
+ async doInPage(p, cb) {
300
+ (await this.browser.pages()).forEach((page) => {
301
+ if (page.mainFrame()._id === p) {
302
+ return cb(page);
303
+ }
304
+ });
296
305
  }
297
306
  };
298
307
 
@@ -354,36 +363,25 @@ function isValidUrl(string) {
354
363
  return false;
355
364
  }
356
365
  }
366
+ function pollForFile(path4, timeout = 2e3) {
367
+ const intervalObj = setInterval(function() {
368
+ const file = path4;
369
+ const fileExists = fs2.existsSync(file);
370
+ if (fileExists) {
371
+ clearInterval(intervalObj);
372
+ }
373
+ }, timeout);
374
+ }
357
375
  var PM_Main = class extends PM_Base {
358
376
  constructor(configs, name, mode2) {
359
377
  super(configs);
360
378
  this.bigBoard = {};
361
- this.stop = () => {
362
- console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
363
- this.mode = "once";
364
- this.nodeMetafileWatcher.close();
365
- this.webMetafileWatcher.close();
366
- this.checkForShutdown();
367
- };
368
- this.getRunnables = (tests, payload = {
379
+ this.getRunnables = (tests, testName2, payload = {
369
380
  nodeEntryPoints: {},
370
- webEntryPoints: {}
381
+ webEntryPoints: {},
382
+ importEntryPoints: {}
371
383
  }) => {
372
- return tests.reduce((pt, cv, cndx, cry) => {
373
- if (cv[1] === "node") {
374
- pt.nodeEntryPoints[cv[0]] = path3.resolve(
375
- `./testeranto/bundles/node/${this.name}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
376
- );
377
- } else if (cv[1] === "web") {
378
- pt.webEntryPoints[cv[0]] = path3.resolve(
379
- `./testeranto/bundles/web/${this.name}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
380
- );
381
- }
382
- if (cv[3].length) {
383
- this.getRunnables(cv[3], payload);
384
- }
385
- return pt;
386
- }, payload);
384
+ return getRunnables(tests, testName2, payload);
387
385
  };
388
386
  this.tscCheck = async ({
389
387
  entrypoint,
@@ -406,6 +404,7 @@ var PM_Main = class extends PM_Base {
406
404
  },
407
405
  include: addableFiles
408
406
  //["src/**/*"],
407
+ // exclude: ["node_modules", "../testeranto"],
409
408
  // exclude: ["**/*.test.ts", "**/*.spec.ts"],
410
409
  });
411
410
  const tscPath = tscPather(entrypoint, platform, this.name);
@@ -557,10 +556,10 @@ ${addableFiles.map((x) => {
557
556
  this.writeBigBoard();
558
557
  this.checkForShutdown();
559
558
  };
560
- this.launchNode = async (src, dest) => {
561
- console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
559
+ this.launchPure = async (src, dest) => {
560
+ console.log(ansiC.green(ansiC.inverse(`! pure, ${src}`)));
562
561
  this.bddTestIsRunning(src);
563
- const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/node`;
562
+ const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/pure`;
564
563
  if (!fs2.existsSync(reportDest)) {
565
564
  fs2.mkdirSync(reportDest, { recursive: true });
566
565
  }
@@ -595,7 +594,6 @@ ${addableFiles.map((x) => {
595
594
  argz = JSON.stringify({
596
595
  scheduled: true,
597
596
  name: src,
598
- // ports: [3333],
599
597
  ports: portsToUse,
600
598
  fs: destFolder,
601
599
  browserWSEndpoint: this.browser.wsEndpoint()
@@ -610,12 +608,12 @@ ${addableFiles.map((x) => {
610
608
  }
611
609
  const builtfile = dest;
612
610
  const webSideCares = [];
613
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
611
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
614
612
  return module.default.then((defaultModule) => {
615
- defaultModule.receiveTestResourceConfig(argz).then(async ({ features, failed }) => {
616
- this.receiveFeatures(features, destFolder, src, "node");
617
- statusMessagePretty(failed, src);
618
- this.bddTestIsNowDone(src, failed);
613
+ defaultModule.receiveTestResourceConfig(argz).then(async (results) => {
614
+ this.receiveFeatures(results.features, destFolder, src, "pure");
615
+ statusMessagePretty(results.fails, src);
616
+ this.bddTestIsNowDone(src, results.fails);
619
617
  }).catch((e) => {
620
618
  console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
621
619
  this.bddTestIsNowDone(src, -1);
@@ -630,6 +628,129 @@ ${addableFiles.map((x) => {
630
628
  }
631
629
  }
632
630
  };
631
+ this.launchNode = async (src, dest) => {
632
+ console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
633
+ this.bddTestIsRunning(src);
634
+ const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/node`;
635
+ if (!fs2.existsSync(reportDest)) {
636
+ fs2.mkdirSync(reportDest, { recursive: true });
637
+ }
638
+ const destFolder = dest.replace(".mjs", "");
639
+ let testResources = "";
640
+ const testConfig = this.configs.tests.find((t) => {
641
+ return t[0] === src;
642
+ });
643
+ if (!testConfig) {
644
+ console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
645
+ process.exit(-1);
646
+ }
647
+ const testConfigResource = testConfig[2];
648
+ let portsToUse = [];
649
+ if (testConfigResource.ports === 0) {
650
+ testResources = JSON.stringify({
651
+ scheduled: true,
652
+ name: src,
653
+ ports: portsToUse,
654
+ fs: reportDest,
655
+ browserWSEndpoint: this.browser.wsEndpoint()
656
+ });
657
+ } else if (testConfigResource.ports > 0) {
658
+ const openPorts = Object.entries(this.ports).filter(
659
+ ([portnumber, portopen]) => portopen
660
+ );
661
+ if (openPorts.length >= testConfigResource.ports) {
662
+ for (let i = 0; i < testConfigResource.ports; i++) {
663
+ portsToUse.push(openPorts[i][0]);
664
+ this.ports[openPorts[i][0]] = false;
665
+ }
666
+ testResources = JSON.stringify({
667
+ scheduled: true,
668
+ name: src,
669
+ ports: portsToUse,
670
+ fs: destFolder,
671
+ browserWSEndpoint: this.browser.wsEndpoint()
672
+ });
673
+ } else {
674
+ this.queue.push(src);
675
+ return;
676
+ }
677
+ } else {
678
+ console.error("negative port makes no sense", src);
679
+ process.exit(-1);
680
+ }
681
+ const builtfile = dest;
682
+ let haltReturns = false;
683
+ let buffer = new Buffer("");
684
+ const server = net.createServer((socket) => {
685
+ socket.on("data", (data) => {
686
+ buffer = Buffer.concat([buffer, data]);
687
+ let messages = [];
688
+ for (let b = 0; b < buffer.length + 1; b++) {
689
+ let c = buffer.slice(0, b);
690
+ let d;
691
+ try {
692
+ d = JSON.parse(c.toString());
693
+ messages.push(d);
694
+ buffer = buffer.slice(b, buffer.length + 1);
695
+ b = 0;
696
+ } catch (e) {
697
+ }
698
+ }
699
+ messages.forEach(async (payload) => {
700
+ this.mapping().forEach(async ([command, func]) => {
701
+ if (payload[0] === command) {
702
+ const x = payload.slice(1, -1);
703
+ const r = await this[command](...x);
704
+ if (!haltReturns) {
705
+ child.send(
706
+ JSON.stringify({
707
+ payload: r,
708
+ key: payload[payload.length - 1]
709
+ })
710
+ );
711
+ }
712
+ }
713
+ });
714
+ });
715
+ });
716
+ });
717
+ const oStream = fs2.createWriteStream(`${reportDest}/console_log.txt`);
718
+ const child = spawn("node", [builtfile, testResources], {
719
+ stdio: ["pipe", "pipe", "pipe", "ipc"]
720
+ // silent: true
721
+ });
722
+ const p = destFolder + "/pipe";
723
+ server.listen(p, () => {
724
+ child.stderr?.on("data", (data) => {
725
+ oStream.write(`stderr data ${data}`);
726
+ });
727
+ child.stdout?.on("data", (data) => {
728
+ oStream.write(`stdout data ${data}`);
729
+ });
730
+ child.on("close", (code) => {
731
+ oStream.close();
732
+ server.close();
733
+ if (code === null) {
734
+ this.bddTestIsNowDone(src, -1);
735
+ statusMessagePretty(-1, src);
736
+ } else if (code === 0) {
737
+ this.bddTestIsNowDone(src, 0);
738
+ statusMessagePretty(0, src);
739
+ } else {
740
+ this.bddTestIsNowDone(src, code);
741
+ statusMessagePretty(code, src);
742
+ }
743
+ });
744
+ child.on("exit", (code) => {
745
+ });
746
+ });
747
+ child.send({ path: p });
748
+ for (let i = 0; i <= portsToUse.length; i++) {
749
+ if (portsToUse[i]) {
750
+ this.ports[portsToUse[i]] = "true";
751
+ }
752
+ }
753
+ };
633
754
  this.launchWebSideCar = async (src, dest, testConfig) => {
634
755
  const d = dest + ".mjs";
635
756
  console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
@@ -764,7 +885,7 @@ ${addableFiles.map((x) => {
764
885
  process.exit(-1);
765
886
  }
766
887
  const builtfile = dest + ".mjs";
767
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
888
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
768
889
  return module.default.then((defaultModule) => {
769
890
  const s = new defaultModule();
770
891
  s.receiveTestResourceConfig(argz);
@@ -776,7 +897,7 @@ ${addableFiles.map((x) => {
776
897
  }
777
898
  }
778
899
  };
779
- this.launchWeb = (src, dest) => {
900
+ this.launchWeb = async (src, dest) => {
780
901
  console.log(ansiC.green(ansiC.inverse(`! web ${src}`)));
781
902
  this.bddTestIsRunning(src);
782
903
  const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/web`;
@@ -801,146 +922,10 @@ ${addableFiles.map((x) => {
801
922
  console.log("fail", e)
802
923
  }
803
924
  })`;
804
- const fileStreams2 = [];
805
- const doneFileStream2 = [];
806
- const stdoutStream = fs2.createWriteStream(`${destFolder}/stdout.log`);
807
- const stderrStream = fs2.createWriteStream(`${destFolder}/stderr.log`);
925
+ const oStream = fs2.createWriteStream(`${reportDest}/console_log.txt`);
808
926
  this.browser.newPage().then((page) => {
809
- page.on("console", (msg) => {
810
- console.log("web > ", msg.args(), msg.text());
811
- });
812
- page.exposeFunction(
813
- "screencast",
814
- async (ssOpts, testName2) => {
815
- const p = ssOpts.path;
816
- const dir = path3.dirname(p);
817
- fs2.mkdirSync(dir, {
818
- recursive: true
819
- });
820
- if (!files2[testName2]) {
821
- files2[testName2] = /* @__PURE__ */ new Set();
822
- }
823
- files2[testName2].add(ssOpts.path);
824
- const sPromise = page.screenshot({
825
- ...ssOpts,
826
- path: p
827
- });
828
- if (!screenshots2[testName2]) {
829
- screenshots2[testName2] = [];
830
- }
831
- screenshots2[testName2].push(sPromise);
832
- await sPromise;
833
- return sPromise;
834
- }
835
- );
836
- page.exposeFunction(
837
- "customScreenShot",
838
- async (ssOpts, testName2) => {
839
- const p = ssOpts.path;
840
- const dir = path3.dirname(p);
841
- fs2.mkdirSync(dir, {
842
- recursive: true
843
- });
844
- if (!files2[testName2]) {
845
- files2[testName2] = /* @__PURE__ */ new Set();
846
- }
847
- files2[testName2].add(ssOpts.path);
848
- const sPromise = page.screenshot({
849
- ...ssOpts,
850
- path: p
851
- });
852
- if (!screenshots2[testName2]) {
853
- screenshots2[testName2] = [];
854
- }
855
- screenshots2[testName2].push(sPromise);
856
- await sPromise;
857
- return sPromise;
858
- }
859
- );
860
- page.exposeFunction(
861
- "writeFileSync",
862
- (fp, contents, testName2) => {
863
- return globalThis["writeFileSync"](fp, contents, testName2);
864
- }
865
- );
866
- page.exposeFunction("existsSync", (fp, contents) => {
867
- return fs2.existsSync(fp);
868
- });
869
- page.exposeFunction("mkdirSync", (fp) => {
870
- if (!fs2.existsSync(fp)) {
871
- return fs2.mkdirSync(fp, {
872
- recursive: true
873
- });
874
- }
875
- return false;
876
- });
877
- page.exposeFunction(
878
- "createWriteStream",
879
- (fp, testName2) => {
880
- const f = fs2.createWriteStream(fp);
881
- if (!files2[testName2]) {
882
- files2[testName2] = /* @__PURE__ */ new Set();
883
- }
884
- files2[testName2].add(fp);
885
- const p = new Promise((res, rej) => {
886
- res(fp);
887
- });
888
- doneFileStream2.push(p);
889
- f.on("close", async () => {
890
- await p;
891
- });
892
- fileStreams2.push(f);
893
- return {
894
- ...JSON.parse(JSON.stringify(f)),
895
- uid: fileStreams2.length - 1
896
- };
897
- }
898
- );
899
- page.exposeFunction("write", async (uid, contents) => {
900
- return fileStreams2[uid].write(contents);
901
- });
902
- page.exposeFunction("end", async (uid) => {
903
- return fileStreams2[uid].end();
904
- });
905
- page.exposeFunction("page", () => {
906
- return page.mainFrame()._id;
907
- });
908
- page.exposeFunction("click", (sel) => {
909
- return page.click(sel);
910
- });
911
- page.exposeFunction("focusOn", (sel) => {
912
- return page.focus(sel);
913
- });
914
- page.exposeFunction(
915
- "typeInto",
916
- async (value) => await page.keyboard.type(value)
917
- );
918
- page.exposeFunction(
919
- "getValue",
920
- (selector) => page.$eval(selector, (input) => input.getAttribute("value"))
921
- );
922
- page.exposeFunction(
923
- "getAttribute",
924
- async (selector, attribute) => {
925
- const attributeValue = await page.$eval(selector, (input) => {
926
- return input.getAttribute(attribute);
927
- });
928
- return attributeValue;
929
- }
930
- );
931
- page.exposeFunction("isDisabled", async (selector) => {
932
- const attributeValue = await page.$eval(
933
- selector,
934
- (input) => {
935
- return input.disabled;
936
- }
937
- );
938
- return attributeValue;
939
- });
940
- page.exposeFunction("$", async (selector) => {
941
- const x = page.$(selector);
942
- const y = await x;
943
- return y;
927
+ this.mapping().forEach(async ([command, func]) => {
928
+ page.exposeFunction(command, func);
944
929
  });
945
930
  return page;
946
931
  }).then(async (page) => {
@@ -956,36 +941,40 @@ ${addableFiles.map((x) => {
956
941
  Promise.all(screenshots2[src] || []).then(() => {
957
942
  delete screenshots2[src];
958
943
  page.close();
959
- stderrStream.close();
960
- stdoutStream.close();
944
+ oStream.close();
961
945
  });
962
946
  };
963
947
  page.on("pageerror", (err) => {
964
948
  console.debug(`Error from ${src}: [${err.name}] `);
965
- stderrStream.write(err.name);
949
+ oStream.write(err.name);
950
+ oStream.write("\n");
966
951
  if (err.cause) {
967
952
  console.debug(`Error from ${src} cause: [${err.cause}] `);
968
- stderrStream.write(err.cause);
953
+ oStream.write(err.cause);
954
+ oStream.write("\n");
969
955
  }
970
956
  if (err.stack) {
971
957
  console.debug(`Error from stack ${src}: [${err.stack}] `);
972
- stderrStream.write(err.stack);
958
+ oStream.write(err.stack);
959
+ oStream.write("\n");
973
960
  }
974
961
  console.debug(`Error from message ${src}: [${err.message}] `);
975
- stderrStream.write(err.message);
962
+ oStream.write(err.message);
963
+ oStream.write("\n");
976
964
  this.bddTestIsNowDone(src, -1);
977
965
  close();
978
966
  });
979
967
  page.on("console", (log) => {
980
- stdoutStream.write(log.text());
981
- stdoutStream.write(JSON.stringify(log.location()));
982
- stdoutStream.write(JSON.stringify(log.stackTrace()));
968
+ oStream.write(log.text());
969
+ oStream.write(JSON.stringify(log.location()));
970
+ oStream.write(JSON.stringify(log.stackTrace()));
971
+ oStream.write("\n");
983
972
  });
984
973
  await page.goto(`file://${`${destFolder}.html`}`, {});
985
- await page.evaluate(evaluation).then(async ({ failed, features }) => {
974
+ await page.evaluate(evaluation).then(async ({ fails, failed, features }) => {
986
975
  this.receiveFeatures(features, destFolder, src, "web");
987
- statusMessagePretty(failed, src);
988
- this.bddTestIsNowDone(src, failed);
976
+ statusMessagePretty(fails, src);
977
+ this.bddTestIsNowDone(src, fails);
989
978
  }).catch((e) => {
990
979
  console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
991
980
  }).finally(() => {
@@ -1036,7 +1025,6 @@ ${addableFiles.map((x) => {
1036
1025
  return accum;
1037
1026
  }, Promise.resolve({ files: [], strings: [] })).then(({ files: files3, strings }) => {
1038
1027
  fs2.writeFileSync(
1039
- // `${destFolder}/featurePrompt.txt`,
1040
1028
  `testeranto/reports/${this.name}/${srcTest.split(".").slice(0, -1).join(".")}/${platform}/featurePrompt.txt`,
1041
1029
  files3.map((f) => {
1042
1030
  return `/read ${f}`;
@@ -1065,7 +1053,37 @@ ${addableFiles.map((x) => {
1065
1053
  this.ports[element] = "true";
1066
1054
  });
1067
1055
  }
1056
+ mapping() {
1057
+ return [
1058
+ ["$", this.$],
1059
+ ["click", this.click],
1060
+ ["closePage", this.closePage],
1061
+ ["createWriteStream", this.createWriteStream],
1062
+ ["customclose", this.customclose],
1063
+ ["customScreenShot", this.customScreenShot],
1064
+ ["end", this.end],
1065
+ ["existsSync", this.existsSync],
1066
+ ["focusOn", this.focusOn],
1067
+ ["getAttribute", this.getAttribute],
1068
+ ["getValue", this.getValue],
1069
+ ["goto", this.goto],
1070
+ ["isDisabled", this.isDisabled],
1071
+ ["mkdirSync", this.mkdirSync],
1072
+ ["newPage", this.newPage],
1073
+ ["page", this.page],
1074
+ ["pages", this.pages],
1075
+ ["screencast", this.screencast],
1076
+ ["screencastStop", this.screencastStop],
1077
+ ["typeInto", this.typeInto],
1078
+ ["waitForSelector", this.waitForSelector],
1079
+ ["write", this.write],
1080
+ ["writeFileSync", this.writeFileSync]
1081
+ ];
1082
+ }
1068
1083
  async start() {
1084
+ this.mapping().forEach(async ([command, func]) => {
1085
+ globalThis[command] = func;
1086
+ });
1069
1087
  if (!fs2.existsSync(`testeranto/reports/${this.name}`)) {
1070
1088
  fs2.mkdirSync(`testeranto/reports/${this.name}`);
1071
1089
  }
@@ -1110,55 +1128,73 @@ ${addableFiles.map((x) => {
1110
1128
  // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
1111
1129
  ]
1112
1130
  });
1113
- const { nodeEntryPoints, webEntryPoints } = this.getRunnables(
1114
- this.configs.tests
1115
- );
1116
- Object.entries(nodeEntryPoints).forEach(
1117
- ([k, outputFile]) => {
1118
- this.launchNode(k, outputFile);
1119
- try {
1120
- watch(outputFile, async (e, filename) => {
1121
- const hash = await fileHash(outputFile);
1122
- if (fileHashes[k] !== hash) {
1123
- fileHashes[k] = hash;
1124
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
1125
- this.launchNode(k, outputFile);
1126
- }
1127
- });
1128
- } catch (e) {
1129
- console.error(e);
1131
+ const { nodeEntryPoints, webEntryPoints, importEntryPoints } = this.getRunnables(this.configs.tests, this.name);
1132
+ [
1133
+ [
1134
+ nodeEntryPoints,
1135
+ this.launchNode,
1136
+ "node",
1137
+ (w) => {
1138
+ this.nodeMetafileWatcher = w;
1130
1139
  }
1131
- }
1132
- );
1133
- Object.entries(webEntryPoints).forEach(
1134
- ([k, outputFile]) => {
1135
- this.launchWeb(k, outputFile);
1136
- watch(outputFile, async (e, filename) => {
1137
- const hash = await fileHash(outputFile);
1138
- if (fileHashes[k] !== hash) {
1139
- fileHashes[k] = hash;
1140
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
1141
- this.launchWeb(k, outputFile);
1140
+ ],
1141
+ [
1142
+ webEntryPoints,
1143
+ this.launchWeb,
1144
+ "web",
1145
+ (w) => {
1146
+ this.webMetafileWatcher = w;
1147
+ }
1148
+ ],
1149
+ [
1150
+ importEntryPoints,
1151
+ this.launchPure,
1152
+ "pure",
1153
+ (w) => {
1154
+ this.importMetafileWatcher = w;
1155
+ }
1156
+ ]
1157
+ ].forEach(
1158
+ async ([eps, launcher, runtime, watcher]) => {
1159
+ const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
1160
+ await pollForFile(metafile);
1161
+ Object.entries(eps).forEach(
1162
+ async ([k, outputFile]) => {
1163
+ launcher(k, outputFile);
1164
+ try {
1165
+ watch(outputFile, async (e, filename) => {
1166
+ const hash = await fileHash(outputFile);
1167
+ if (fileHashes[k] !== hash) {
1168
+ fileHashes[k] = hash;
1169
+ console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
1170
+ launcher(k, outputFile);
1171
+ }
1172
+ });
1173
+ } catch (e) {
1174
+ console.error(e);
1175
+ }
1142
1176
  }
1143
- });
1144
- }
1145
- );
1146
- this.metafileOutputs("node");
1147
- const w = `./testeranto/bundles/node/${this.name}/metafile.json`;
1148
- console.log("w", w);
1149
- this.nodeMetafileWatcher = watch(w, async (e, filename) => {
1150
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (node)`)));
1151
- this.metafileOutputs("node");
1152
- });
1153
- this.metafileOutputs("web");
1154
- this.webMetafileWatcher = watch(
1155
- `./testeranto/bundles/web/${this.name}/metafile.json`,
1156
- async (e, filename) => {
1157
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (web)`)));
1158
- this.metafileOutputs("web");
1177
+ );
1178
+ this.metafileOutputs(runtime);
1179
+ watcher(
1180
+ watch(metafile, async (e, filename) => {
1181
+ console.log(
1182
+ ansiC.green(ansiC.inverse(`< ${e} ${filename} (${runtime})`))
1183
+ );
1184
+ this.metafileOutputs(runtime);
1185
+ })
1186
+ );
1159
1187
  }
1160
1188
  );
1161
1189
  }
1190
+ async stop() {
1191
+ console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
1192
+ this.mode = "once";
1193
+ this.nodeMetafileWatcher.close();
1194
+ this.webMetafileWatcher.close();
1195
+ this.importMetafileWatcher.close();
1196
+ this.checkForShutdown();
1197
+ }
1162
1198
  async metafileOutputs(platform) {
1163
1199
  const metafile = JSON.parse(
1164
1200
  fs2.readFileSync(