testeranto 0.114.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 (396) 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 +15 -1
  9. package/bundle.js +1 -1
  10. package/dist/common/src/Init.js +31 -0
  11. package/dist/common/src/Node.js +49 -0
  12. package/dist/common/src/PM/base.js +230 -0
  13. package/dist/common/src/PM/main.js +1026 -0
  14. package/dist/common/src/PM/node.js +161 -0
  15. package/dist/common/{PM/node.js → src/PM/pure.js} +27 -18
  16. package/dist/common/{PM → src/PM}/web.js +14 -47
  17. package/dist/common/{Node.js → src/Pure.js} +11 -9
  18. package/dist/common/{SubPackages/react/component/web.js → src/SubPackages/react/component/index.js} +5 -4
  19. package/dist/common/src/SubPackages/react/component/node.js +10 -0
  20. package/dist/common/src/SubPackages/react/component/pure.js +10 -0
  21. package/dist/common/{SubPackages/react/jsx → src/SubPackages/react/component}/web.js +2 -2
  22. package/dist/common/src/SubPackages/react/jsx/index.js +64 -0
  23. package/dist/common/src/SubPackages/react/jsx/pure.js +10 -0
  24. package/dist/common/src/SubPackages/react/jsx/web.js +10 -0
  25. package/dist/common/{SubPackages/react-dom/component/web.js → src/SubPackages/react-dom/component/dynamic.js} +8 -14
  26. package/dist/common/src/SubPackages/react-dom/component/node.js +10 -0
  27. package/dist/common/src/SubPackages/react-dom/component/pure.js +10 -0
  28. package/dist/common/src/SubPackages/react-dom/component/static.js +26 -0
  29. package/dist/common/src/SubPackages/react-dom/component/web.js +16 -0
  30. package/dist/common/src/SubPackages/react-dom/jsx/dynamic.js +31 -0
  31. package/dist/common/src/SubPackages/react-dom/jsx/node.js +10 -0
  32. package/dist/common/src/SubPackages/react-dom/jsx/pure.js +10 -0
  33. package/dist/common/src/SubPackages/react-dom/jsx/static.js +59 -0
  34. package/dist/common/src/SubPackages/react-dom/jsx/web.js +16 -0
  35. package/dist/common/src/SubPackages/react-test-renderer/component/index.js +15 -0
  36. package/dist/common/src/SubPackages/react-test-renderer/component/pure.js +8 -0
  37. package/dist/common/src/SubPackages/react-test-renderer/component/test/implementation.js +57 -0
  38. package/dist/common/src/SubPackages/react-test-renderer/component/test/node.js +10 -0
  39. package/dist/common/src/SubPackages/react-test-renderer/component/test/pure.js +10 -0
  40. package/dist/common/src/SubPackages/react-test-renderer/component/test/web.js +10 -0
  41. package/dist/common/src/SubPackages/react-test-renderer/jsx/pure.js +10 -0
  42. package/dist/common/{Web.js → src/Web.js} +1 -4
  43. package/dist/common/src/build.js +223 -0
  44. package/dist/common/{defaultConfig.js → src/defaultConfig.js} +1 -3
  45. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/index.js +1 -1
  46. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +7 -3
  47. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/node.js +7 -4
  48. package/dist/common/src/esbuildConfigs/pure.js +41 -0
  49. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/web.js +8 -5
  50. package/dist/common/src/examples/react/component/index.js +33 -0
  51. package/dist/common/src/examples/react/component/test.js +36 -0
  52. package/dist/common/src/init-docs.js +9 -0
  53. package/dist/common/{lib → src/lib}/abstractBase.js +99 -95
  54. package/dist/common/{lib → src/lib}/basebuilder.js +24 -20
  55. package/dist/common/{lib → src/lib}/classBuilder.js +8 -5
  56. package/dist/common/{lib → src/lib}/core.js +10 -60
  57. package/dist/common/{lib → src/lib}/index.js +7 -2
  58. package/dist/common/{run.js → src/run.js} +12 -4
  59. package/dist/common/src/utils.js +65 -0
  60. package/dist/common/testeranto.config.js +41 -0
  61. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  62. package/dist/module/src/Init.js +26 -0
  63. package/dist/module/src/Node.js +42 -0
  64. package/dist/module/src/PM/base.js +223 -0
  65. package/dist/module/src/PM/main.js +986 -0
  66. package/dist/module/src/PM/node.js +154 -0
  67. package/dist/module/{PM/node.js → src/PM/pure.js} +25 -16
  68. package/dist/module/{PM → src/PM}/web.js +14 -47
  69. package/dist/module/src/Project.js +120 -0
  70. package/dist/module/{Node.js → src/Pure.js} +9 -7
  71. package/dist/module/{ReportClient.js → src/ReportClient.js} +1 -1
  72. package/dist/module/{SubPackages/react/component/web.js → src/SubPackages/react/component/index.js} +3 -4
  73. package/dist/module/src/SubPackages/react/component/node.js +5 -0
  74. package/dist/module/src/SubPackages/react/component/pure.js +5 -0
  75. package/dist/module/{SubPackages/react/jsx → src/SubPackages/react/component}/web.js +3 -3
  76. package/dist/module/src/SubPackages/react/jsx/index.js +58 -0
  77. package/dist/module/{SubPackages → src/SubPackages}/react/jsx/node.js +1 -1
  78. package/dist/module/src/SubPackages/react/jsx/pure.js +5 -0
  79. package/dist/module/src/SubPackages/react/jsx/web.js +5 -0
  80. package/dist/module/{SubPackages/react-dom/component/web.js → src/SubPackages/react-dom/component/dynamic.js} +5 -13
  81. package/dist/module/src/SubPackages/react-dom/component/node.js +5 -0
  82. package/dist/module/src/SubPackages/react-dom/component/pure.js +5 -0
  83. package/dist/module/src/SubPackages/react-dom/component/static.js +22 -0
  84. package/dist/module/src/SubPackages/react-dom/component/web.js +11 -0
  85. package/dist/module/{SubPackages/react-dom/jsx/node.js → src/SubPackages/react-dom/jsx/dynamic.js} +3 -7
  86. package/dist/module/src/SubPackages/react-dom/jsx/node.js +5 -0
  87. package/dist/module/src/SubPackages/react-dom/jsx/pure.js +5 -0
  88. package/dist/module/src/SubPackages/react-dom/jsx/static.js +53 -0
  89. package/dist/module/src/SubPackages/react-dom/jsx/web.js +11 -0
  90. package/dist/module/src/SubPackages/react-test-renderer/component/index.js +14 -0
  91. package/dist/module/src/SubPackages/react-test-renderer/component/pure.js +3 -0
  92. package/dist/module/src/SubPackages/react-test-renderer/component/test/implementation.js +54 -0
  93. package/dist/module/src/SubPackages/react-test-renderer/component/test/node.js +5 -0
  94. package/dist/module/src/SubPackages/react-test-renderer/component/test/pure.js +5 -0
  95. package/dist/module/src/SubPackages/react-test-renderer/component/test/web.js +5 -0
  96. package/dist/module/src/SubPackages/react-test-renderer/jsx/pure.js +5 -0
  97. package/dist/module/{TestReport.js → src/TestReport.js} +26 -14
  98. package/dist/module/{Web.js → src/Web.js} +1 -4
  99. package/dist/module/src/build.js +185 -0
  100. package/dist/module/{defaultConfig.js → src/defaultConfig.js} +1 -3
  101. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/index.js +1 -1
  102. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +7 -3
  103. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/node.js +7 -4
  104. package/dist/module/src/esbuildConfigs/pure.js +36 -0
  105. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/web.js +8 -5
  106. package/dist/module/src/examples/react/component/index.js +26 -0
  107. package/dist/module/src/examples/react/component/test.js +32 -0
  108. package/dist/module/src/init-docs.js +4 -0
  109. package/dist/module/{lib → src/lib}/abstractBase.js +99 -95
  110. package/dist/module/{lib → src/lib}/basebuilder.js +24 -20
  111. package/dist/module/{lib → src/lib}/classBuilder.js +8 -5
  112. package/dist/module/{lib → src/lib}/core.js +10 -60
  113. package/dist/module/{lib → src/lib}/index.js +7 -2
  114. package/dist/module/{run.js → src/run.js} +12 -4
  115. package/dist/module/src/utils.js +53 -0
  116. package/dist/module/testeranto.config.js +39 -0
  117. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  118. package/dist/prebuild/Project.css +11367 -0
  119. package/dist/prebuild/Project.js +24643 -0
  120. package/dist/prebuild/ReportClient.js +1 -1
  121. package/dist/prebuild/TestReport.js +13 -12
  122. package/dist/prebuild/build.mjs +217 -106
  123. package/dist/prebuild/init-docs.mjs +29 -83
  124. package/dist/prebuild/run.mjs +803 -686
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/dist/types/src/Init.d.ts +2 -0
  127. package/dist/types/src/Node.d.ts +9 -0
  128. package/dist/types/src/PM/base.d.ts +34 -0
  129. package/dist/types/{PM → src/PM}/index.d.ts +21 -22
  130. package/dist/types/src/PM/main.d.ts +47 -0
  131. package/dist/types/src/PM/node.d.ts +38 -0
  132. package/dist/types/{PM/node.d.ts → src/PM/pure.d.ts} +16 -17
  133. package/dist/types/{PM → src/PM}/web.d.ts +10 -15
  134. package/dist/types/src/Pure.d.ts +9 -0
  135. package/dist/types/src/SubPackages/react/component/index.d.ts +4 -0
  136. package/dist/types/src/SubPackages/react/component/node.d.ts +4 -0
  137. package/dist/types/src/SubPackages/react/component/pure.d.ts +4 -0
  138. package/dist/types/src/SubPackages/react/component/web.d.ts +4 -0
  139. package/dist/types/src/SubPackages/react/jsx/index.d.ts +5 -0
  140. package/dist/types/src/SubPackages/react/jsx/node.d.ts +4 -0
  141. package/dist/types/src/SubPackages/react/jsx/pure.d.ts +4 -0
  142. package/dist/types/src/SubPackages/react/jsx/web.d.ts +4 -0
  143. package/dist/types/src/SubPackages/react-dom/component/dynamic.d.ts +20 -0
  144. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +4 -0
  145. package/dist/types/src/SubPackages/react-dom/component/pure.d.ts +4 -0
  146. package/dist/types/src/SubPackages/react-dom/component/static.d.ts +9 -0
  147. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +4 -0
  148. package/dist/types/src/SubPackages/react-dom/jsx/dynamic.d.ts +5 -0
  149. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +4 -0
  150. package/dist/types/src/SubPackages/react-dom/jsx/pure.d.ts +4 -0
  151. package/dist/types/src/SubPackages/react-dom/jsx/static.d.ts +5 -0
  152. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +5 -0
  153. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.d.ts +1 -1
  154. package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +5 -0
  155. package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +3 -0
  156. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +4 -0
  157. package/dist/types/src/SubPackages/react-test-renderer/component/pure.d.ts +4 -0
  158. package/dist/types/src/SubPackages/react-test-renderer/component/test/implementation.d.ts +4 -0
  159. package/dist/types/src/SubPackages/react-test-renderer/component/test/node.d.ts +3 -0
  160. package/dist/types/src/SubPackages/react-test-renderer/component/test/pure.d.ts +4 -0
  161. package/dist/types/src/SubPackages/react-test-renderer/component/test/web.d.ts +3 -0
  162. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +4 -0
  163. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.d.ts +1 -1
  164. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.d.ts +1 -1
  165. package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +11 -0
  166. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +4 -0
  167. package/dist/types/src/SubPackages/react-test-renderer/jsx/pure.d.ts +4 -0
  168. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +4 -0
  169. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.d.ts +1 -1
  170. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.d.ts +1 -1
  171. package/dist/types/src/Types.d.ts +88 -0
  172. package/dist/types/src/Web.d.ts +9 -0
  173. package/dist/types/src/defaultConfig.d.ts +3 -0
  174. package/dist/types/src/esbuildConfigs/index.d.ts +4 -0
  175. package/dist/types/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.d.ts +2 -1
  176. package/dist/types/src/esbuildConfigs/node.d.ts +4 -0
  177. package/dist/types/src/esbuildConfigs/pure.d.ts +4 -0
  178. package/dist/types/src/esbuildConfigs/web.d.ts +4 -0
  179. package/dist/types/src/examples/react/component/index.d.ts +13 -0
  180. package/dist/types/src/examples/react/component/test.d.ts +17 -0
  181. package/dist/types/{lib → src/lib}/abstractBase.d.ts +47 -34
  182. package/dist/types/{lib → src/lib}/basebuilder.d.ts +7 -9
  183. package/dist/types/src/lib/classBuilder.d.ts +9 -0
  184. package/dist/types/src/lib/core.d.ts +7 -0
  185. package/dist/types/{lib → src/lib}/index.d.ts +14 -36
  186. package/dist/types/src/lib/types.d.ts +15 -0
  187. package/dist/types/src/utils.d.ts +18 -0
  188. package/dist/types/testeranto.config.d.ts +3 -0
  189. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  190. package/eslint.config.mjs +111 -0
  191. package/package.json +33 -12
  192. package/src/Init.ts +29 -75
  193. package/src/Node.ts +42 -46
  194. package/src/PM/base.ts +299 -0
  195. package/src/PM/index.ts +28 -21
  196. package/src/PM/main.ts +569 -819
  197. package/src/PM/node.ts +88 -44
  198. package/src/PM/pure.ts +209 -0
  199. package/src/PM/web.ts +19 -121
  200. package/src/Project.tsx +200 -0
  201. package/src/Pure.ts +69 -0
  202. package/src/ReportClient.tsx +8 -3
  203. package/src/SubPackages/react/component/index.ts +28 -0
  204. package/src/SubPackages/react/component/node.ts +12 -82
  205. package/src/SubPackages/react/component/pure.ts +17 -0
  206. package/src/SubPackages/react/component/web.ts +12 -81
  207. package/src/SubPackages/react/jsx/index.ts +56 -52
  208. package/src/SubPackages/react/jsx/node.ts +12 -29
  209. package/src/SubPackages/react/jsx/pure.ts +23 -0
  210. package/src/SubPackages/react/jsx/web.ts +17 -36
  211. package/src/SubPackages/react-dom/component/dynamic.ts +107 -0
  212. package/src/SubPackages/react-dom/component/node.ts +11 -116
  213. package/src/SubPackages/react-dom/component/pure.ts +17 -0
  214. package/src/SubPackages/react-dom/component/static.ts +41 -0
  215. package/src/SubPackages/react-dom/component/web.ts +7 -113
  216. package/src/SubPackages/react-dom/jsx/dynamic.ts +46 -0
  217. package/src/SubPackages/react-dom/jsx/node.ts +10 -58
  218. package/src/SubPackages/react-dom/jsx/pure.ts +18 -0
  219. package/src/SubPackages/react-dom/jsx/static.ts +87 -0
  220. package/src/SubPackages/react-dom/jsx/web.ts +7 -135
  221. package/src/SubPackages/react-test-renderer/component/index.ts +27 -51
  222. package/src/SubPackages/react-test-renderer/component/interface.ts +7 -5
  223. package/src/SubPackages/react-test-renderer/component/node.ts +7 -25
  224. package/src/SubPackages/react-test-renderer/component/pure.ts +18 -0
  225. package/src/SubPackages/react-test-renderer/component/test/implementation.ts +63 -0
  226. package/src/SubPackages/react-test-renderer/component/test/node.ts +14 -0
  227. package/src/SubPackages/react-test-renderer/component/test/pure.ts +14 -0
  228. package/src/SubPackages/react-test-renderer/component/test/web.ts +14 -0
  229. package/src/SubPackages/react-test-renderer/component/web.ts +7 -23
  230. package/src/SubPackages/react-test-renderer/jsx/index.ts +13 -46
  231. package/src/SubPackages/react-test-renderer/jsx/node.ts +9 -15
  232. package/src/SubPackages/react-test-renderer/jsx/pure.ts +31 -0
  233. package/src/SubPackages/react-test-renderer/jsx/web.ts +9 -14
  234. package/src/TestReport.tsx +37 -19
  235. package/src/Types.ts +114 -140
  236. package/src/Web.ts +13 -48
  237. package/src/build.ts +153 -143
  238. package/src/defaultConfig.ts +3 -5
  239. package/src/esbuildConfigs/index.ts +3 -3
  240. package/src/esbuildConfigs/inputFilesPlugin.ts +9 -7
  241. package/src/esbuildConfigs/node.ts +10 -6
  242. package/src/esbuildConfigs/pure.ts +72 -0
  243. package/src/esbuildConfigs/web.ts +11 -7
  244. package/src/examples/react/component/index.tsx +35 -0
  245. package/src/examples/react/component/test.ts +83 -0
  246. package/src/init-docs.ts +2 -15
  247. package/src/lib/abstractBase.ts +188 -260
  248. package/src/lib/basebuilder.ts +47 -48
  249. package/src/lib/classBuilder.ts +28 -35
  250. package/src/lib/core.ts +35 -102
  251. package/src/lib/index.ts +37 -65
  252. package/src/lib/types.ts +23 -98
  253. package/src/run.ts +18 -5
  254. package/src/utils.ts +73 -40
  255. package/testeranto/Project.css +11367 -0
  256. package/testeranto/Project.js +24643 -0
  257. package/testeranto/ReportClient.css +11367 -0
  258. package/testeranto/ReportClient.js +24641 -0
  259. package/testeranto/TestReport.css +11367 -0
  260. package/testeranto/TestReport.js +27485 -0
  261. package/testeranto/bundles/node/react/metafile.json +627 -0
  262. package/testeranto/bundles/node/react/src/SubPackages/react-test-renderer/component/test/node.mjs +24687 -0
  263. package/testeranto/bundles/pure/react/metafile.json +8 -0
  264. package/testeranto/bundles/pure/react/src/SubPackages/react-test-renderer/component/test/pure.mjs +24625 -0
  265. package/testeranto/bundles/web/react/metafile.json +8 -0
  266. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.html +19 -0
  267. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.mjs +21290 -0
  268. package/testeranto/index.html +28 -0
  269. package/testeranto/reports/react/config.json +22 -0
  270. package/testeranto/reports/react/index.html +24 -0
  271. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/node/node/console_log.txt +0 -0
  272. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/bdd_errors.txt +1 -0
  273. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/featurePrompt.txt +0 -0
  274. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/lint_errors.json +3381 -0
  275. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/littleBoard.html +20 -0
  276. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/log.txt +40 -0
  277. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/prompt.txt +24 -0
  278. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/tests.json +132 -0
  279. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/type_errors.txt +17 -0
  280. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/bdd_errors.txt +1 -0
  281. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/console_log.txt +1 -0
  282. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/lint_errors.json +2947 -0
  283. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/littleBoard.html +20 -0
  284. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/log.txt +40 -0
  285. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/prompt.txt +23 -0
  286. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/tests.json +132 -0
  287. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/type_errors.txt +18 -0
  288. package/testeranto/reports/react/summary.json +8 -0
  289. package/testeranto.config.ts +45 -0
  290. package/tsc.log +53 -76
  291. package/type-fix.txt +2 -0
  292. package/dist/common/Init.js +0 -68
  293. package/dist/common/PM/main.js +0 -1176
  294. package/dist/common/SubPackages/react/component/node.js +0 -19
  295. package/dist/common/SubPackages/react/jsx/index.js +0 -21
  296. package/dist/common/SubPackages/react-dom/component/node.js +0 -88
  297. package/dist/common/SubPackages/react-dom/jsx/node.js +0 -39
  298. package/dist/common/SubPackages/react-dom/jsx/web.js +0 -128
  299. package/dist/common/SubPackages/react-test-renderer/component/index.js +0 -2
  300. package/dist/common/build.js +0 -222
  301. package/dist/common/init-docs.js +0 -53
  302. package/dist/common/puppeteerConfiger.js +0 -24
  303. package/dist/common/utils.js +0 -43
  304. package/dist/module/Init.js +0 -63
  305. package/dist/module/PM/main.js +0 -1136
  306. package/dist/module/SubPackages/react/component/node.js +0 -14
  307. package/dist/module/SubPackages/react/jsx/index.js +0 -15
  308. package/dist/module/SubPackages/react-dom/component/node.js +0 -80
  309. package/dist/module/SubPackages/react-dom/jsx/web.js +0 -90
  310. package/dist/module/SubPackages/react-test-renderer/component/index.js +0 -1
  311. package/dist/module/build.js +0 -184
  312. package/dist/module/init-docs.js +0 -15
  313. package/dist/module/puppeteerConfiger.js +0 -19
  314. package/dist/module/utils.js +0 -29
  315. package/dist/types/Init.d.ts +0 -2
  316. package/dist/types/Node.d.ts +0 -12
  317. package/dist/types/PM/main.d.ts +0 -66
  318. package/dist/types/SubPackages/react/component/node.d.ts +0 -7
  319. package/dist/types/SubPackages/react/component/web.d.ts +0 -7
  320. package/dist/types/SubPackages/react/jsx/index.d.ts +0 -12
  321. package/dist/types/SubPackages/react/jsx/node.d.ts +0 -4
  322. package/dist/types/SubPackages/react/jsx/web.d.ts +0 -4
  323. package/dist/types/SubPackages/react-dom/component/node.d.ts +0 -11
  324. package/dist/types/SubPackages/react-dom/component/web.d.ts +0 -20
  325. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +0 -7
  326. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +0 -5
  327. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +0 -13
  328. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +0 -9
  329. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +0 -4
  330. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +0 -4
  331. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +0 -16
  332. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +0 -9
  333. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +0 -9
  334. package/dist/types/Types.d.ts +0 -61
  335. package/dist/types/Web.d.ts +0 -9
  336. package/dist/types/defaultConfig.d.ts +0 -3
  337. package/dist/types/esbuildConfigs/index.d.ts +0 -4
  338. package/dist/types/esbuildConfigs/node.d.ts +0 -4
  339. package/dist/types/esbuildConfigs/web.d.ts +0 -4
  340. package/dist/types/lib/classBuilder.d.ts +0 -7
  341. package/dist/types/lib/core.d.ts +0 -7
  342. package/dist/types/lib/types.d.ts +0 -14
  343. package/dist/types/puppeteerConfiger.d.ts +0 -4
  344. package/dist/types/utils.d.ts +0 -15
  345. package/src/puppeteerConfiger.ts +0 -26
  346. /package/dist/common/{PM → src/PM}/index.js +0 -0
  347. /package/dist/common/{ReportServer.js → src/ReportServer.js} +0 -0
  348. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  349. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  350. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  351. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  352. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  353. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  354. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  355. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  356. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  357. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  358. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  359. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  360. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  361. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  362. /package/dist/common/{Types.js → src/Types.js} +0 -0
  363. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.js +0 -0
  364. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.js +0 -0
  365. /package/dist/common/{lib → src/lib}/types.js +0 -0
  366. /package/dist/common/{web.html.js → src/web.html.js} +0 -0
  367. /package/dist/module/{Footer.js → src/Footer.js} +0 -0
  368. /package/dist/module/{PM → src/PM}/index.js +0 -0
  369. /package/dist/module/{ReportServer.js → src/ReportServer.js} +0 -0
  370. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  371. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  372. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  373. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  374. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  375. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  376. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  377. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  378. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  379. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  380. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  381. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  382. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  383. /package/dist/module/{Types.js → src/Types.js} +0 -0
  384. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.js +0 -0
  385. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.js +0 -0
  386. /package/dist/module/{lib → src/lib}/types.js +0 -0
  387. /package/dist/module/{web.html.js → src/web.html.js} +0 -0
  388. /package/dist/types/{ReportServer.d.ts → src/ReportServer.d.ts} +0 -0
  389. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/index.d.ts +0 -0
  390. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.d.ts +0 -0
  391. /package/dist/types/{build.d.ts → src/build.d.ts} +0 -0
  392. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.d.ts +0 -0
  393. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.d.ts +0 -0
  394. /package/dist/types/{init-docs.d.ts → src/init-docs.d.ts} +0 -0
  395. /package/dist/types/{run.d.ts → src/run.d.ts} +0 -0
  396. /package/dist/types/{web.html.d.ts → src/web.html.d.ts} +0 -0
@@ -1,1136 +0,0 @@
1
- import ts from "typescript";
2
- import fs, { watch } from "fs";
3
- import path from "path";
4
- import puppeteer from "puppeteer-core";
5
- import ansiC from "ansi-colors";
6
- import crypto from "node:crypto";
7
- import { ESLint } from "eslint";
8
- import tsc from "tsc-prog";
9
- import { lintPather, tscPather } from "../utils";
10
- import { PM } from "./index.js";
11
- const eslint = new ESLint();
12
- const formatter = await eslint.loadFormatter("./node_modules/testeranto/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs");
13
- const changes = {};
14
- const fileHashes = {};
15
- const fileStreams3 = [];
16
- const fPaths = [];
17
- const files = {};
18
- const recorders = {};
19
- const screenshots = {};
20
- async function fileHash(filePath, algorithm = "md5") {
21
- return new Promise((resolve, reject) => {
22
- const hash = crypto.createHash(algorithm);
23
- const fileStream = fs.createReadStream(filePath);
24
- fileStream.on("data", (data) => {
25
- hash.update(data);
26
- });
27
- fileStream.on("end", () => {
28
- const fileHash = hash.digest("hex");
29
- resolve(fileHash);
30
- });
31
- fileStream.on("error", (error) => {
32
- reject(`Error reading file: ${error.message}`);
33
- });
34
- });
35
- }
36
- const getRunnables = (tests, payload = {
37
- nodeEntryPoints: {},
38
- webEntryPoints: {},
39
- }) => {
40
- return tests.reduce((pt, cv, cndx, cry) => {
41
- if (cv[1] === "node") {
42
- pt.nodeEntryPoints[cv[0]] = path.resolve(`./docs/node/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`);
43
- }
44
- else if (cv[1] === "web") {
45
- pt.webEntryPoints[cv[0]] = path.resolve(`./docs/web/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`);
46
- }
47
- if (cv[3].length) {
48
- getRunnables(cv[3], payload);
49
- }
50
- return pt;
51
- }, payload);
52
- };
53
- const statusMessagePretty = (failures, test) => {
54
- if (failures === 0) {
55
- console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
56
- }
57
- else {
58
- console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
59
- }
60
- };
61
- async function writeFileAndCreateDir(filePath, data) {
62
- const dirPath = path.dirname(filePath);
63
- try {
64
- await fs.promises.mkdir(dirPath, { recursive: true });
65
- await fs.appendFileSync(filePath, data);
66
- }
67
- catch (error) {
68
- console.error(`Error writing file: ${error}`);
69
- }
70
- }
71
- const filesHash = async (files, algorithm = "md5") => {
72
- return new Promise((resolve, reject) => {
73
- resolve(files.reduce(async (mm, f) => {
74
- return (await mm) + (await fileHash(f));
75
- }, Promise.resolve("")));
76
- });
77
- };
78
- function isValidUrl(string) {
79
- try {
80
- new URL(string);
81
- return true;
82
- }
83
- catch (err) {
84
- return false;
85
- }
86
- }
87
- export class PM_Main extends PM {
88
- constructor(configs) {
89
- super();
90
- this.shutdownMode = false;
91
- this.bigBoard = {};
92
- this.stop = () => {
93
- console.log(ansiC.inverse("Testeranto-Run is shutting down gracefully..."));
94
- this.mode = "PROD";
95
- this.nodeMetafileWatcher.close();
96
- this.webMetafileWatcher.close();
97
- this.checkForShutdown();
98
- };
99
- this.tscCheck = async ({ entrypoint, addableFiles, platform, }) => {
100
- console.log(ansiC.green(ansiC.inverse(`tsc < ${entrypoint}`)));
101
- this.bigBoard[entrypoint].typeErrors = "?";
102
- const program = tsc.createProgramFromConfig({
103
- basePath: process.cwd(), // always required, used for relative paths
104
- configFilePath: "tsconfig.json", // config to inherit from (optional)
105
- compilerOptions: {
106
- rootDir: "src",
107
- outDir: tscPather(entrypoint, platform),
108
- // declaration: true,
109
- // skipLibCheck: true,
110
- noEmit: true,
111
- },
112
- include: addableFiles, //["src/**/*"],
113
- // exclude: ["**/*.test.ts", "**/*.spec.ts"],
114
- });
115
- const tscPath = tscPather(entrypoint, platform);
116
- let allDiagnostics = program.getSemanticDiagnostics();
117
- const d = [];
118
- allDiagnostics.forEach((diagnostic) => {
119
- if (diagnostic.file) {
120
- let { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
121
- let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
122
- d.push(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
123
- }
124
- else {
125
- d.push(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
126
- }
127
- });
128
- fs.writeFileSync(tscPath, d.join("\n"));
129
- this.bigBoard[entrypoint].typeErrors = d.length;
130
- if (this.shutdownMode) {
131
- this.checkForShutdown();
132
- }
133
- // fs.writeFileSync(
134
- // tscExitCodePather(entrypoint, platform),
135
- // d.length.toString()
136
- // );
137
- };
138
- this.eslintCheck = async (entrypoint, platform, addableFiles) => {
139
- this.bigBoard[entrypoint].staticErrors = "?";
140
- console.log(ansiC.green(ansiC.inverse(`eslint < ${entrypoint}`)));
141
- const results = (await eslint.lintFiles(addableFiles))
142
- .filter((r) => r.messages.length)
143
- .filter((r) => {
144
- return r.messages[0].ruleId !== null;
145
- })
146
- .map((r) => {
147
- delete r.source;
148
- return r;
149
- });
150
- fs.writeFileSync(lintPather(entrypoint, platform), await formatter.format(results));
151
- this.bigBoard[entrypoint].staticErrors = results.length;
152
- if (this.shutdownMode) {
153
- this.checkForShutdown();
154
- }
155
- // fs.writeFileSync(
156
- // lintExitCodePather(entrypoint, platform),
157
- // results.length.toString()
158
- // );
159
- };
160
- this.makePrompt = async (entryPoint, addableFiles, platform) => {
161
- this.bigBoard[entryPoint].prompt = "?";
162
- const promptPath = path.join("./docs/", platform, entryPoint.split(".").slice(0, -1).join("."), `prompt.txt`);
163
- const testPaths = path.join("./docs/", platform, entryPoint.split(".").slice(0, -1).join("."), `tests.json`);
164
- const featuresPath = path.join("./docs/", platform, entryPoint.split(".").slice(0, -1).join("."), `featurePrompt.txt`);
165
- fs.writeFileSync(promptPath, `
166
- ${addableFiles
167
- .map((x) => {
168
- return `/add ${x}`;
169
- })
170
- .join("\n")}
171
-
172
- /read ${lintPather(entryPoint, platform)}
173
- /read ${tscPather(entryPoint, platform)}
174
- /read ${testPaths}
175
-
176
- /load ${featuresPath}
177
-
178
- /code Fix the failing tests described in ${testPaths}. Correct any type signature errors described in the files ${tscPather(entryPoint, platform)}. Implement any method which throws "Function not implemented. Resolve the lint errors described in ${lintPather(entryPoint, platform)}"
179
- `);
180
- this.bigBoard[entryPoint].prompt = `aider --model deepseek/deepseek-chat --load docs/${platform}/${entryPoint
181
- .split(".")
182
- .slice(0, -1)
183
- .join(".")}/prompt.txt`;
184
- if (this.shutdownMode) {
185
- this.checkForShutdown();
186
- }
187
- };
188
- this.checkForShutdown = () => {
189
- const anyRunning = Object.values(this.bigBoard).filter((x) => x.prompt === "?").length +
190
- Object.values(this.bigBoard).filter((x) => x.runTimeError === "?")
191
- .length +
192
- Object.values(this.bigBoard).filter((x) => x.staticErrors === "?")
193
- .length +
194
- Object.values(this.bigBoard).filter((x) => x.typeErrors === "?")
195
- .length >
196
- 0;
197
- if (anyRunning) {
198
- console.log(ansiC.inverse("Shutting down. Please wait"));
199
- }
200
- else {
201
- this.browser.disconnect().then(() => {
202
- fs.writeFileSync("docs/summary.json", JSON.stringify(this.bigBoard, null, 2));
203
- console.log(ansiC.inverse("Goodbye"));
204
- process.exit();
205
- });
206
- }
207
- };
208
- this.testIsNowRunning = (src) => {
209
- this.bigBoard[src].status = "running";
210
- };
211
- this.testIsNowDone = (src) => {
212
- this.bigBoard[src].status = "waiting";
213
- if (this.shutdownMode) {
214
- this.checkForShutdown();
215
- }
216
- };
217
- this.launchNode = async (src, dest) => {
218
- // console.log(ansiC.yellow(`! node, ${src}`));
219
- console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
220
- this.testIsNowRunning(src);
221
- const destFolder = dest.replace(".mjs", "");
222
- let argz = "";
223
- const testConfig = this.configs.tests.find((t) => {
224
- return t[0] === src;
225
- });
226
- if (!testConfig) {
227
- console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
228
- process.exit(-1);
229
- }
230
- const testConfigResource = testConfig[2];
231
- let portsToUse = [];
232
- if (testConfigResource.ports === 0) {
233
- argz = JSON.stringify({
234
- scheduled: true,
235
- name: src,
236
- ports: portsToUse,
237
- fs: destFolder,
238
- browserWSEndpoint: this.browser.wsEndpoint(),
239
- });
240
- }
241
- else if (testConfigResource.ports > 0) {
242
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
243
- if (openPorts.length >= testConfigResource.ports) {
244
- for (let i = 0; i < testConfigResource.ports; i++) {
245
- portsToUse.push(openPorts[i][0]);
246
- this.ports[openPorts[i][0]] = false; // port is now closed
247
- }
248
- argz = JSON.stringify({
249
- scheduled: true,
250
- name: src,
251
- // ports: [3333],
252
- ports: portsToUse,
253
- fs: destFolder,
254
- browserWSEndpoint: this.browser.wsEndpoint(),
255
- });
256
- }
257
- else {
258
- this.queue.push(src);
259
- return;
260
- }
261
- }
262
- else {
263
- console.error("negative port makes no sense", src);
264
- process.exit(-1);
265
- }
266
- const builtfile = dest;
267
- const webSideCares = [];
268
- // await Promise.all(
269
- // testConfig[3].map(async (sidecar) => {
270
- // if (sidecar[1] === "web") {
271
- // const s = await this.launchWebSideCar(
272
- // sidecar[0],
273
- // destinationOfRuntime(sidecar[0], "web", this.configs),
274
- // sidecar
275
- // );
276
- // webSideCares.push(s);
277
- // return s;
278
- // }
279
- // if (sidecar[1] === "node") {
280
- // return this.launchNodeSideCar(
281
- // sidecar[0],
282
- // destinationOfRuntime(sidecar[0], "node", this.configs),
283
- // sidecar
284
- // );
285
- // }
286
- // })
287
- // );
288
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
289
- return module.default.then((defaultModule) => {
290
- defaultModule
291
- .receiveTestResourceConfig(argz)
292
- .then(async ({ features, failed }) => {
293
- this.receiveFeatures(features, destFolder, src);
294
- // console.log(`${src} completed with ${failed} errors`);
295
- statusMessagePretty(failed, src);
296
- this.receiveExitCode(src, failed);
297
- })
298
- .catch((e) => {
299
- console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
300
- // console.log(reset, `${src} errored with`, e);
301
- })
302
- .finally(() => {
303
- webSideCares.forEach((webSideCar) => webSideCar.close());
304
- this.testIsNowDone(src);
305
- });
306
- });
307
- });
308
- // console.log("portsToUse", portsToUse);
309
- for (let i = 0; i <= portsToUse.length; i++) {
310
- if (portsToUse[i]) {
311
- this.ports[portsToUse[i]] = "true"; //port is open again
312
- }
313
- }
314
- };
315
- this.launchWebSideCar = async (src, dest, testConfig) => {
316
- const d = dest + ".mjs";
317
- console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
318
- const fileStreams2 = [];
319
- const doneFileStream2 = [];
320
- return new Promise((res, rej) => {
321
- this.browser
322
- .newPage()
323
- .then((page) => {
324
- // page.on("console", (msg) => {
325
- // console.log("web > ", msg.args(), msg.text());
326
- // // for (let i = 0; i < msg._args.length; ++i)
327
- // // console.log(`${i}: ${msg._args[i]}`);
328
- // });
329
- page.exposeFunction("custom-screenshot", async (ssOpts, testName) => {
330
- // console.log("main.ts browser custom-screenshot", testName);
331
- const p = ssOpts.path;
332
- const dir = path.dirname(p);
333
- fs.mkdirSync(dir, {
334
- recursive: true,
335
- });
336
- files[testName].add(ssOpts.path);
337
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
338
- if (!screenshots[testName]) {
339
- screenshots[testName] = [];
340
- }
341
- screenshots[testName].push(sPromise);
342
- // sPromise.then(())
343
- await sPromise;
344
- return sPromise;
345
- // page.evaluate(`window["screenshot done"]`);
346
- });
347
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
348
- const dir = path.dirname(fp);
349
- fs.mkdirSync(dir, {
350
- recursive: true,
351
- });
352
- const p = new Promise(async (res, rej) => {
353
- fs.writeFileSync(fp, contents);
354
- res(fp);
355
- });
356
- doneFileStream2.push(p);
357
- if (!files[testName]) {
358
- files[testName] = new Set();
359
- }
360
- files[testName].add(fp);
361
- return p;
362
- });
363
- page.exposeFunction("existsSync", (fp, contents) => {
364
- return fs.existsSync(fp);
365
- });
366
- page.exposeFunction("mkdirSync", (fp) => {
367
- if (!fs.existsSync(fp)) {
368
- return fs.mkdirSync(fp, {
369
- recursive: true,
370
- });
371
- }
372
- return false;
373
- });
374
- page.exposeFunction("createWriteStream", (fp, testName) => {
375
- const f = fs.createWriteStream(fp);
376
- // if (!files[testName]) {
377
- // files[testName] = new Set();
378
- // }
379
- files[testName].add(fp);
380
- const p = new Promise((res, rej) => {
381
- res(fp);
382
- });
383
- doneFileStream2.push(p);
384
- f.on("close", async () => {
385
- await p;
386
- });
387
- fileStreams2.push(f);
388
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
389
- });
390
- page.exposeFunction("write", async (uid, contents) => {
391
- return fileStreams2[uid].write(contents);
392
- });
393
- page.exposeFunction("end", async (uid) => {
394
- return fileStreams2[uid].end();
395
- });
396
- // page.exposeFunction("customclose", (p: string, testName: string) => {
397
- // fs.writeFileSync(
398
- // p + "/manifest.json",
399
- // JSON.stringify(Array.from(files[testName]))
400
- // );
401
- // delete files[testName];
402
- // Promise.all(screenshots[testName] || []).then(() => {
403
- // delete screenshots[testName];
404
- // // page.close();
405
- // });
406
- // });
407
- return page;
408
- })
409
- .then(async (page) => {
410
- await page.goto(`file://${`${dest}.html`}`, {});
411
- res(page);
412
- });
413
- });
414
- };
415
- this.launchNodeSideCar = async (src, dest, testConfig) => {
416
- const d = dest + ".mjs";
417
- console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
418
- const destFolder = dest.replace(".mjs", "");
419
- let argz = "";
420
- const testConfigResource = testConfig[2];
421
- let portsToUse = [];
422
- if (testConfigResource.ports === 0) {
423
- argz = JSON.stringify({
424
- scheduled: true,
425
- name: src,
426
- ports: portsToUse,
427
- fs: destFolder,
428
- browserWSEndpoint: this.browser.wsEndpoint(),
429
- });
430
- }
431
- else if (testConfigResource.ports > 0) {
432
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
433
- // console.log("openPorts", openPorts);
434
- if (openPorts.length >= testConfigResource.ports) {
435
- for (let i = 0; i < testConfigResource.ports; i++) {
436
- portsToUse.push(openPorts[i][0]);
437
- this.ports[openPorts[i][0]] = false; // port is now closed
438
- }
439
- argz = JSON.stringify({
440
- scheduled: true,
441
- name: src,
442
- // ports: [3333],
443
- ports: portsToUse,
444
- fs: ".",
445
- browserWSEndpoint: this.browser.wsEndpoint(),
446
- });
447
- }
448
- else {
449
- this.queue.push(src);
450
- return;
451
- }
452
- }
453
- else {
454
- console.error("negative port makes no sense", src);
455
- process.exit(-1);
456
- }
457
- const builtfile = dest + ".mjs";
458
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
459
- return module.default.then((defaultModule) => {
460
- // console.log("defaultModule", defaultModule);
461
- const s = new defaultModule();
462
- s.receiveTestResourceConfig(argz);
463
- // Object.create(defaultModule);
464
- // defaultModule
465
- // .receiveTestResourceConfig(argz)
466
- // .then((x) => {
467
- // console.log("then", x);
468
- // return x;
469
- // })
470
- // .catch((e) => {
471
- // console.log("catch", e);
472
- // });
473
- });
474
- });
475
- for (let i = 0; i <= portsToUse.length; i++) {
476
- if (portsToUse[i]) {
477
- this.ports[portsToUse[i]] = "true"; //port is open again
478
- }
479
- }
480
- };
481
- this.launchWeb = (t, dest) => {
482
- // console.log(green, "! web", t);
483
- console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
484
- this.testIsNowRunning(t);
485
- // sidecars.map((sidecar) => {
486
- // if (sidecar[1] === "node") {
487
- // return this.launchNodeSideCar(
488
- // sidecar[0],
489
- // destinationOfRuntime(sidecar[0], "node", this.configs),
490
- // sidecar
491
- // );
492
- // }
493
- // });
494
- const destFolder = dest.replace(".mjs", "");
495
- const webArgz = JSON.stringify({
496
- name: dest,
497
- ports: [].toString(),
498
- fs: destFolder,
499
- browserWSEndpoint: this.browser.wsEndpoint(),
500
- });
501
- const d = `${dest}?cacheBust=${Date.now()}`;
502
- const evaluation = `
503
-
504
- import('${d}').then(async (x) => {
505
-
506
- try {
507
- return await (await x.default).receiveTestResourceConfig(${webArgz})
508
- } catch (e) {
509
- console.log("fail", e)
510
- }
511
- })`;
512
- const fileStreams2 = [];
513
- const doneFileStream2 = [];
514
- const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
515
- const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
516
- this.browser
517
- .newPage()
518
- .then((page) => {
519
- // page.on("console", (msg) => {
520
- // // console.log("web > ", msg.args(), msg.text());
521
- // });
522
- page.exposeFunction("screencast", async (ssOpts, testName) => {
523
- const p = ssOpts.path;
524
- const dir = path.dirname(p);
525
- fs.mkdirSync(dir, {
526
- recursive: true,
527
- });
528
- if (!files[testName]) {
529
- files[testName] = new Set();
530
- }
531
- files[testName].add(ssOpts.path);
532
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
533
- if (!screenshots[testName]) {
534
- screenshots[testName] = [];
535
- }
536
- screenshots[testName].push(sPromise);
537
- // sPromise.then(())
538
- await sPromise;
539
- return sPromise;
540
- // page.evaluate(`window["screenshot done"]`);
541
- });
542
- page.exposeFunction("customScreenShot", async (ssOpts, testName) => {
543
- const p = ssOpts.path;
544
- const dir = path.dirname(p);
545
- fs.mkdirSync(dir, {
546
- recursive: true,
547
- });
548
- if (!files[testName]) {
549
- files[testName] = new Set();
550
- }
551
- files[testName].add(ssOpts.path);
552
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
553
- if (!screenshots[testName]) {
554
- screenshots[testName] = [];
555
- }
556
- screenshots[testName].push(sPromise);
557
- // sPromise.then(())
558
- await sPromise;
559
- return sPromise;
560
- // page.evaluate(`window["screenshot done"]`);
561
- });
562
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
563
- return globalThis["writeFileSync"](fp, contents, testName);
564
- // const dir = path.dirname(fp);
565
- // fs.mkdirSync(dir, {
566
- // recursive: true,
567
- // });
568
- // const p = new Promise<string>(async (res, rej) => {
569
- // fs.writeFileSync(fp, contents);
570
- // res(fp);
571
- // });
572
- // doneFileStream2.push(p);
573
- // if (!files[testName]) {
574
- // files[testName] = new Set();
575
- // }
576
- // files[testName].add(fp);
577
- // return p;
578
- });
579
- page.exposeFunction("existsSync", (fp, contents) => {
580
- return fs.existsSync(fp);
581
- });
582
- page.exposeFunction("mkdirSync", (fp) => {
583
- if (!fs.existsSync(fp)) {
584
- return fs.mkdirSync(fp, {
585
- recursive: true,
586
- });
587
- }
588
- return false;
589
- });
590
- page.exposeFunction("createWriteStream", (fp, testName) => {
591
- const f = fs.createWriteStream(fp);
592
- if (!files[testName]) {
593
- files[testName] = new Set();
594
- }
595
- files[testName].add(fp);
596
- const p = new Promise((res, rej) => {
597
- res(fp);
598
- });
599
- doneFileStream2.push(p);
600
- f.on("close", async () => {
601
- await p;
602
- });
603
- fileStreams2.push(f);
604
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
605
- });
606
- page.exposeFunction("write", async (uid, contents) => {
607
- return fileStreams2[uid].write(contents);
608
- });
609
- page.exposeFunction("end", async (uid) => {
610
- return fileStreams2[uid].end();
611
- });
612
- // page.exposeFunction("customclose", (p: string, testName: string) => {
613
- // // console.log("closing", p);
614
- // console.log("\t GOODBYE customclose");
615
- // fs.writeFileSync(
616
- // p + "/manifest.json",
617
- // JSON.stringify(Array.from(files[testName]))
618
- // );
619
- // delete files[testName];
620
- // // console.log("screenshots[testName]", screenshots[testName]);
621
- // Promise.all(screenshots[testName] || []).then(() => {
622
- // delete screenshots[testName];
623
- // });
624
- // // globalThis["writeFileSync"](
625
- // // p + "/manifest.json",
626
- // // // files.entries()
627
- // // JSON.stringify(Array.from(files[testName]))
628
- // // );
629
- // // console.log("closing doneFileStream2", doneFileStream2);
630
- // // console.log("closing doneFileStream2", doneFileStream2);
631
- // // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
632
- // // page.close();
633
- // // });
634
- // // Promise.all(screenshots).then(() => {
635
- // // page.close();
636
- // // });
637
- // // setTimeout(() => {
638
- // // console.log("Delayed for 1 second.");
639
- // // page.close();
640
- // // }, 5000);
641
- // // return page.close();
642
- // });
643
- page.exposeFunction("page", () => {
644
- return page.mainFrame()._id;
645
- });
646
- page.exposeFunction("click", (sel) => {
647
- return page.click(sel);
648
- });
649
- page.exposeFunction("focusOn", (sel) => {
650
- return page.focus(sel);
651
- });
652
- page.exposeFunction("typeInto", async (value) => await page.keyboard.type(value));
653
- page.exposeFunction("getValue", (selector) => page.$eval(selector, (input) => input.getAttribute("value")));
654
- page.exposeFunction("getAttribute", async (selector, attribute) => {
655
- const attributeValue = await page.$eval(selector, (input) => {
656
- return input.getAttribute(attribute);
657
- });
658
- return attributeValue;
659
- });
660
- page.exposeFunction("isDisabled", async (selector) => {
661
- const attributeValue = await page.$eval(selector, (input) => {
662
- return input.disabled;
663
- });
664
- return attributeValue;
665
- });
666
- page.exposeFunction("$", async (selector) => {
667
- const x = page.$(selector);
668
- const y = await x;
669
- return y;
670
- });
671
- return page;
672
- })
673
- .then(async (page) => {
674
- const close = () => {
675
- if (!files[t]) {
676
- files[t] = new Set();
677
- }
678
- // files[t].add(filepath);
679
- fs.writeFileSync(destFolder + "/manifest.json", JSON.stringify(Array.from(files[t])));
680
- delete files[t];
681
- Promise.all(screenshots[t] || []).then(() => {
682
- delete screenshots[t];
683
- page.close();
684
- this.testIsNowDone(t);
685
- stderrStream.close();
686
- stdoutStream.close();
687
- });
688
- };
689
- page.on("pageerror", (err) => {
690
- console.debug(`Error from ${t}: [${err.name}] `);
691
- stderrStream.write(err.name);
692
- if (err.cause) {
693
- console.debug(`Error from ${t} cause: [${err.cause}] `);
694
- stderrStream.write(err.cause);
695
- }
696
- if (err.stack) {
697
- console.debug(`Error from stack ${t}: [${err.stack}] `);
698
- stderrStream.write(err.stack);
699
- }
700
- console.debug(`Error from message ${t}: [${err.message}] `);
701
- stderrStream.write(err.message);
702
- close();
703
- });
704
- page.on("console", (log) => {
705
- // console.debug(`Log from ${t}: [${log.text()}] `);
706
- // console.debug(`Log from ${t}: [${JSON.stringify(log.location())}] `);
707
- // console.debug(
708
- // `Log from ${t}: [${JSON.stringify(log.stackTrace())}] `
709
- // );
710
- stdoutStream.write(log.text());
711
- stdoutStream.write(JSON.stringify(log.location()));
712
- stdoutStream.write(JSON.stringify(log.stackTrace()));
713
- });
714
- await page.goto(`file://${`${destFolder}.html`}`, {});
715
- await page
716
- .evaluate(evaluation)
717
- .then(async ({ failed, features }) => {
718
- this.receiveFeatures(features, destFolder, t);
719
- // console.log(`${t} completed with ${failed} errors`);
720
- statusMessagePretty(failed, t);
721
- this.receiveExitCode(t, failed);
722
- })
723
- .catch((e) => {
724
- // console.log(red, `${t} errored with`, e);
725
- console.log(ansiC.red(ansiC.inverse(`${t} errored with: ${e}`)));
726
- })
727
- .finally(() => {
728
- // this.testIsNowDone(t);
729
- close();
730
- });
731
- return page;
732
- });
733
- };
734
- this.receiveFeatures = (features, destFolder, srcTest) => {
735
- const featureDestination = path.resolve(process.cwd(), "docs", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
736
- features
737
- .reduce(async (mm, featureStringKey) => {
738
- const accum = await mm;
739
- const isUrl = isValidUrl(featureStringKey);
740
- if (isUrl) {
741
- const u = new URL(featureStringKey);
742
- if (u.protocol === "file:") {
743
- const newPath = `${process.cwd()}/docs/features/internal/${path.relative(process.cwd(), u.pathname)}`;
744
- await fs.promises.mkdir(path.dirname(newPath), { recursive: true });
745
- try {
746
- await fs.unlinkSync(newPath);
747
- // console.log(`Removed existing link at ${newPath}`);
748
- }
749
- catch (error) {
750
- if (error.code !== "ENOENT") {
751
- // throw error;
752
- }
753
- }
754
- // fs.symlink(u.pathname, newPath, (err) => {
755
- // if (err) {
756
- // // console.error("Error creating symlink:", err);
757
- // } else {
758
- // // console.log("Symlink created successfully");
759
- // }
760
- // });
761
- accum.files.push(newPath);
762
- }
763
- else if (u.protocol === "http:" || u.protocol === "https:") {
764
- const newPath = `${process.cwd()}/docs/features/external${u.hostname}${u.pathname}`;
765
- const body = await this.configs.featureIngestor(featureStringKey);
766
- writeFileAndCreateDir(newPath, body);
767
- accum.files.push(newPath);
768
- }
769
- }
770
- else {
771
- await fs.promises.mkdir(path.dirname(featureDestination), {
772
- recursive: true,
773
- });
774
- accum.strings.push(featureStringKey);
775
- }
776
- return accum;
777
- }, Promise.resolve({ files: [], strings: [] }))
778
- .then(({ files, strings }) => {
779
- // writeFileAndCreateDir(`${featureDestination}`, JSON.stringify(strings));
780
- fs.writeFileSync(`${destFolder}/featurePrompt.txt`, files
781
- .map((f) => {
782
- return `/read ${f}`;
783
- })
784
- .join("\n"));
785
- });
786
- // this.writeBigBoard();
787
- };
788
- this.receiveExitCode = (srcTest, failures) => {
789
- this.bigBoard[srcTest].runTimeError = failures;
790
- this.writeBigBoard();
791
- };
792
- this.writeBigBoard = () => {
793
- fs.writeFileSync("./docs/summary.json", JSON.stringify(this.bigBoard, null, 2));
794
- };
795
- this.mode = configs.devMode ? "DEV" : "PROD";
796
- this.server = {};
797
- this.configs = configs;
798
- this.ports = {};
799
- this.configs.tests.forEach(([t]) => {
800
- this.bigBoard[t] = {
801
- runTimeError: "?",
802
- typeErrors: "?",
803
- staticErrors: "?",
804
- prompt: "?",
805
- };
806
- });
807
- this.configs.ports.forEach((element) => {
808
- this.ports[element] = "true"; // set ports as open
809
- });
810
- globalThis["waitForSelector"] = async (pageKey, sel) => {
811
- const page = (await this.browser.pages()).find(
812
- /* @ts-ignore:next-line */
813
- (p) => p.mainFrame()._id === pageKey);
814
- await (page === null || page === void 0 ? void 0 : page.waitForSelector(sel));
815
- };
816
- globalThis["screencastStop"] = async (path) => {
817
- return recorders[path].stop();
818
- };
819
- globalThis["closePage"] = async (pageKey) => {
820
- const page = (await this.browser.pages()).find(
821
- /* @ts-ignore:next-line */
822
- (p) => p.mainFrame()._id === pageKey);
823
- /* @ts-ignore:next-line */
824
- return page.close();
825
- };
826
- globalThis["goto"] = async (pageKey, url) => {
827
- const page = (await this.browser.pages()).find(
828
- /* @ts-ignore:next-line */
829
- (p) => p.mainFrame()._id === pageKey);
830
- await (page === null || page === void 0 ? void 0 : page.goto(url));
831
- return;
832
- };
833
- globalThis["newPage"] = () => {
834
- return this.browser.newPage();
835
- };
836
- globalThis["pages"] = () => {
837
- return this.browser.pages();
838
- };
839
- globalThis["mkdirSync"] = (fp) => {
840
- if (!fs.existsSync(fp)) {
841
- return fs.mkdirSync(fp, {
842
- recursive: true,
843
- });
844
- }
845
- return false;
846
- };
847
- globalThis["writeFileSync"] = (filepath, contents, testName) => {
848
- fs.mkdirSync(path.dirname(filepath), {
849
- recursive: true,
850
- });
851
- if (!files[testName]) {
852
- files[testName] = new Set();
853
- }
854
- files[testName].add(filepath);
855
- return fs.writeFileSync(filepath, contents);
856
- };
857
- globalThis["createWriteStream"] = (filepath, testName) => {
858
- const f = fs.createWriteStream(filepath);
859
- fileStreams3.push(f);
860
- // files.add(filepath);
861
- if (!files[testName]) {
862
- files[testName] = new Set();
863
- }
864
- files[testName].add(filepath);
865
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams3.length - 1 });
866
- };
867
- globalThis["write"] = (uid, contents) => {
868
- fileStreams3[uid].write(contents);
869
- };
870
- globalThis["end"] = (uid) => {
871
- fileStreams3[uid].end();
872
- };
873
- globalThis["customScreenShot"] = async (opts, pageKey, testName) => {
874
- const page = (await this.browser.pages()).find(
875
- /* @ts-ignore:next-line */
876
- (p) => p.mainFrame()._id === pageKey);
877
- const p = opts.path;
878
- const dir = path.dirname(p);
879
- fs.mkdirSync(dir, {
880
- recursive: true,
881
- });
882
- if (!files[opts.path]) {
883
- files[opts.path] = new Set();
884
- }
885
- files[opts.path].add(opts.path);
886
- const sPromise = page.screenshot(Object.assign(Object.assign({}, opts), { path: p }));
887
- if (!screenshots[opts.path]) {
888
- screenshots[opts.path] = [];
889
- }
890
- screenshots[opts.path].push(sPromise);
891
- await sPromise;
892
- return sPromise;
893
- };
894
- globalThis["screencast"] = async (opts, pageKey) => {
895
- const page = (await this.browser.pages()).find(
896
- /* @ts-ignore:next-line */
897
- (p) => p.mainFrame()._id === pageKey);
898
- const p = opts.path;
899
- const dir = path.dirname(p);
900
- fs.mkdirSync(dir, {
901
- recursive: true,
902
- });
903
- const recorder = await (page === null || page === void 0 ? void 0 : page.screencast(Object.assign(Object.assign({}, opts), { path: p })));
904
- recorders[opts.path] = recorder;
905
- return opts.path;
906
- };
907
- }
908
- customclose() {
909
- throw new Error("Method not implemented.");
910
- }
911
- waitForSelector(p, s) {
912
- throw new Error("Method not implemented.");
913
- }
914
- closePage(p) {
915
- throw new Error("Method not implemented.");
916
- }
917
- newPage() {
918
- throw new Error("Method not implemented.");
919
- }
920
- goto(p, url) {
921
- throw new Error("Method not implemented.");
922
- }
923
- $(selector) {
924
- throw new Error("Method not implemented.");
925
- }
926
- screencast(opts) {
927
- throw new Error("Method not implemented.");
928
- }
929
- customScreenShot(opts, cdpPage) {
930
- throw new Error("Method not implemented.");
931
- }
932
- end(accessObject) {
933
- throw new Error("Method not implemented.");
934
- }
935
- existsSync(destFolder) {
936
- return fs.existsSync(destFolder);
937
- }
938
- async mkdirSync(fp) {
939
- if (!fs.existsSync(fp)) {
940
- return fs.mkdirSync(fp, {
941
- recursive: true,
942
- });
943
- }
944
- return false;
945
- }
946
- writeFileSync(fp, contents) {
947
- fs.writeFileSync(fp, contents);
948
- }
949
- createWriteStream(filepath) {
950
- return fs.createWriteStream(filepath);
951
- }
952
- testArtiFactoryfileWriter(tLog, callback) {
953
- return (fPath, value) => {
954
- callback(new Promise((res, rej) => {
955
- tLog("testArtiFactory =>", fPath);
956
- const cleanPath = path.resolve(fPath);
957
- fPaths.push(cleanPath.replace(process.cwd(), ``));
958
- const targetDir = cleanPath.split("/").slice(0, -1).join("/");
959
- fs.mkdir(targetDir, { recursive: true }, async (error) => {
960
- if (error) {
961
- console.error(`❗️testArtiFactory failed`, targetDir, error);
962
- }
963
- fs.writeFileSync(path.resolve(targetDir.split("/").slice(0, -1).join("/"), "manifest"), fPaths.join(`\n`), {
964
- encoding: "utf-8",
965
- });
966
- if (Buffer.isBuffer(value)) {
967
- fs.writeFileSync(fPath, value, "binary");
968
- res();
969
- }
970
- else if (`string` === typeof value) {
971
- fs.writeFileSync(fPath, value.toString(), {
972
- encoding: "utf-8",
973
- });
974
- res();
975
- }
976
- else {
977
- /* @ts-ignore:next-line */
978
- const pipeStream = value;
979
- const myFile = fs.createWriteStream(fPath);
980
- pipeStream.pipe(myFile);
981
- pipeStream.on("close", () => {
982
- myFile.close();
983
- res();
984
- });
985
- }
986
- });
987
- }));
988
- };
989
- }
990
- write(accessObject, contents) {
991
- throw new Error("Method not implemented.");
992
- }
993
- page() {
994
- throw new Error("Method not implemented.");
995
- }
996
- click(selector) {
997
- throw new Error("Method not implemented.");
998
- }
999
- focusOn(selector) {
1000
- throw new Error("Method not implemented.");
1001
- }
1002
- typeInto(value) {
1003
- throw new Error("Method not implemented.");
1004
- }
1005
- getValue(value) {
1006
- throw new Error("Method not implemented.");
1007
- }
1008
- getAttribute(selector, attribute) {
1009
- throw new Error("Method not implemented.");
1010
- }
1011
- isDisabled(selector) {
1012
- throw new Error("Method not implemented.");
1013
- }
1014
- screencastStop(s) {
1015
- throw new Error("Method not implemented.");
1016
- }
1017
- ////////////////////////////////////////////////////////////////////////////////
1018
- async metafileOutputs(platform) {
1019
- const metafile = JSON.parse(fs.readFileSync(`docs/${platform}/metafile.json`).toString()).metafile;
1020
- if (!metafile)
1021
- return;
1022
- const outputs = metafile.outputs;
1023
- Object.keys(outputs).forEach(async (k) => {
1024
- const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
1025
- if (!fs.existsSync(i))
1026
- return false;
1027
- if (i.startsWith("node_modules"))
1028
- return false;
1029
- return true;
1030
- });
1031
- const f = `${k.split(".").slice(0, -1).join(".")}/`;
1032
- if (!fs.existsSync(f)) {
1033
- fs.mkdirSync(f);
1034
- }
1035
- const entrypoint = outputs[k].entryPoint;
1036
- if (entrypoint) {
1037
- const changeDigest = await filesHash(addableFiles);
1038
- if (changeDigest === changes[entrypoint]) {
1039
- // skip
1040
- }
1041
- else {
1042
- changes[entrypoint] = changeDigest;
1043
- this.tscCheck({
1044
- platform,
1045
- addableFiles,
1046
- entrypoint: "./" + entrypoint,
1047
- });
1048
- this.eslintCheck("./" + entrypoint, platform, addableFiles);
1049
- this.makePrompt("./" + entrypoint, addableFiles, platform);
1050
- }
1051
- }
1052
- });
1053
- }
1054
- async start() {
1055
- this.browser = (await puppeteer.launch({
1056
- slowMo: 1,
1057
- // timeout: 1,
1058
- waitForInitialPage: false,
1059
- executablePath:
1060
- // process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium",
1061
- "/opt/homebrew/bin/chromium",
1062
- headless: true,
1063
- dumpio: true,
1064
- // timeout: 0,
1065
- devtools: true,
1066
- args: [
1067
- "--auto-open-devtools-for-tabs",
1068
- `--remote-debugging-port=3234`,
1069
- // "--disable-features=IsolateOrigins,site-per-process",
1070
- "--disable-site-isolation-trials",
1071
- "--allow-insecure-localhost",
1072
- "--allow-file-access-from-files",
1073
- "--allow-running-insecure-content",
1074
- "--disable-dev-shm-usage",
1075
- "--disable-extensions",
1076
- "--disable-gpu",
1077
- "--disable-setuid-sandbox",
1078
- "--disable-site-isolation-trials",
1079
- "--disable-web-security",
1080
- "--no-first-run",
1081
- "--no-sandbox",
1082
- "--no-startup-window",
1083
- // "--no-zygote",
1084
- "--reduce-security-for-testing",
1085
- "--remote-allow-origins=*",
1086
- "--unsafely-treat-insecure-origin-as-secure=*",
1087
- // "--disable-features=IsolateOrigins",
1088
- // "--remote-allow-origins=ws://localhost:3234",
1089
- // "--single-process",
1090
- // "--unsafely-treat-insecure-origin-as-secure",
1091
- // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
1092
- // "--disk-cache-dir=/dev/null",
1093
- // "--disk-cache-size=1",
1094
- // "--start-maximized",
1095
- ],
1096
- }));
1097
- const { nodeEntryPoints, webEntryPoints } = getRunnables(this.configs.tests);
1098
- Object.entries(nodeEntryPoints).forEach(([k, outputFile]) => {
1099
- this.launchNode(k, outputFile);
1100
- try {
1101
- watch(outputFile, async (e, filename) => {
1102
- const hash = await fileHash(outputFile);
1103
- if (fileHashes[k] !== hash) {
1104
- fileHashes[k] = hash;
1105
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
1106
- this.launchNode(k, outputFile);
1107
- }
1108
- });
1109
- }
1110
- catch (e) {
1111
- console.error(e);
1112
- }
1113
- });
1114
- Object.entries(webEntryPoints).forEach(([k, outputFile]) => {
1115
- this.launchWeb(k, outputFile);
1116
- watch(outputFile, async (e, filename) => {
1117
- const hash = await fileHash(outputFile);
1118
- if (fileHashes[k] !== hash) {
1119
- fileHashes[k] = hash;
1120
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
1121
- this.launchWeb(k, outputFile);
1122
- }
1123
- });
1124
- });
1125
- this.metafileOutputs("node");
1126
- this.nodeMetafileWatcher = watch("docs/node/metafile.json", async (e, filename) => {
1127
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (node)`)));
1128
- this.metafileOutputs("node");
1129
- });
1130
- this.metafileOutputs("web");
1131
- this.webMetafileWatcher = watch("docs/web/metafile.json", async (e, filename) => {
1132
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename} (web)`)));
1133
- this.metafileOutputs("web");
1134
- });
1135
- }
1136
- }