testeranto 0.100.0 → 0.110.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 (285) hide show
  1. package/README.md +1 -0
  2. package/bundle.js +80 -30
  3. package/dist/common/{dist/module/src/Init.js → Init.js} +28 -0
  4. package/dist/common/{src/PM → PM}/main.js +138 -95
  5. package/dist/common/ReportServer.js +22 -0
  6. package/dist/common/{src/SubPackages → SubPackages}/react/jsx/index.js +0 -12
  7. package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
  8. package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
  9. package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +1 -1
  10. package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +41 -30
  11. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +17 -7
  12. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +17 -7
  13. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +17 -7
  14. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +17 -7
  15. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +18 -14
  16. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +17 -7
  17. package/dist/common/build.js +222 -0
  18. package/dist/common/{src/defaultConfig.js → defaultConfig.js} +1 -0
  19. package/dist/common/esbuildConfigs/eslint-formatter-testeranto.js +6 -0
  20. package/dist/common/esbuildConfigs/inputFilesPlugin.js +27 -0
  21. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/node.js +2 -10
  22. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/web.js +2 -13
  23. package/dist/common/{src/init-docs.js → init-docs.js} +20 -10
  24. package/dist/common/{src/lib → lib}/abstractBase.js +6 -1
  25. package/dist/common/{src/lib → lib}/basebuilder.js +23 -10
  26. package/dist/common/{src/lib → lib}/classBuilder.js +1 -3
  27. package/dist/common/{src/lib → lib}/core.js +26 -10
  28. package/dist/common/{src/lib → lib}/index.js +0 -1
  29. package/dist/common/{src/lib → lib}/types.js +0 -1
  30. package/dist/common/run.js +297 -0
  31. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  32. package/dist/common/utils.js +43 -0
  33. package/dist/module/Footer.js +4 -0
  34. package/dist/module/Init.js +63 -0
  35. package/dist/module/{src/PM → PM}/main.js +119 -86
  36. package/dist/module/ReportClient.js +97 -0
  37. package/dist/module/ReportServer.js +17 -0
  38. package/dist/module/SubPackages/react/jsx/index.js +15 -0
  39. package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
  40. package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
  41. package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +3 -3
  42. package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +24 -23
  43. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +1 -7
  44. package/dist/module/TestReport.js +91 -0
  45. package/dist/module/build.js +184 -0
  46. package/dist/module/{src/defaultConfig.js → defaultConfig.js} +1 -0
  47. package/dist/module/esbuildConfigs/eslint-formatter-testeranto.js +3 -0
  48. package/dist/module/esbuildConfigs/inputFilesPlugin.js +22 -0
  49. package/dist/module/{src/esbuildConfigs → esbuildConfigs}/node.js +2 -10
  50. package/dist/module/{src/esbuildConfigs → esbuildConfigs}/web.js +2 -13
  51. package/dist/module/{src/init-docs.js → init-docs.js} +1 -1
  52. package/dist/module/{src/lib → lib}/abstractBase.js +6 -1
  53. package/dist/module/{src/lib → lib}/basebuilder.js +23 -10
  54. package/dist/module/{src/lib → lib}/classBuilder.js +1 -3
  55. package/dist/module/{src/lib → lib}/core.js +26 -10
  56. package/dist/module/{src/lib → lib}/index.js +0 -1
  57. package/dist/module/run.js +259 -0
  58. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  59. package/dist/module/utils.js +29 -0
  60. package/dist/prebuild/ReportClient.css +11367 -0
  61. package/dist/prebuild/ReportClient.js +23641 -0
  62. package/dist/prebuild/ReportServer.mjs +16 -0
  63. package/dist/prebuild/TestReport.css +11367 -0
  64. package/dist/prebuild/TestReport.js +27484 -0
  65. package/dist/prebuild/build.mjs +376 -0
  66. package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +9 -0
  67. package/dist/prebuild/init-docs.mjs +64 -8
  68. package/dist/prebuild/{cli2.mjs → run.mjs} +353 -81
  69. package/dist/tsconfig.tsbuildinfo +1 -0
  70. package/dist/types/Node.d.ts +12 -0
  71. package/dist/types/{src/PM → PM}/index.d.ts +1 -1
  72. package/dist/types/{src/PM → PM}/main.d.ts +12 -9
  73. package/dist/types/{src/PM → PM}/node.d.ts +2 -4
  74. package/dist/types/{src/PM → PM}/web.d.ts +2 -4
  75. package/dist/types/SubPackages/react/component/node.d.ts +7 -0
  76. package/dist/types/SubPackages/react/component/web.d.ts +7 -0
  77. package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
  78. package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
  79. package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
  80. package/dist/types/SubPackages/react-dom/component/node.d.ts +11 -0
  81. package/dist/types/SubPackages/react-dom/component/web.d.ts +20 -0
  82. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
  83. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +7 -0
  84. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
  85. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +6 -0
  86. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
  87. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +4 -0
  88. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +4 -0
  89. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
  90. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +9 -0
  91. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +16 -0
  92. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +9 -0
  93. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +9 -0
  94. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
  95. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +5 -0
  96. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +5 -0
  97. package/dist/types/Types.d.ts +61 -0
  98. package/dist/types/Web.d.ts +9 -0
  99. package/dist/types/defaultConfig.d.ts +3 -0
  100. package/dist/types/esbuildConfigs/eslint-formatter-testeranto.d.ts +2 -0
  101. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/index.d.ts +1 -1
  102. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/inputFilesPlugin.d.ts +0 -1
  103. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/node.d.ts +1 -1
  104. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/web.d.ts +1 -1
  105. package/dist/types/init-docs.d.ts +1 -0
  106. package/dist/types/lib/abstractBase.d.ts +110 -0
  107. package/dist/types/lib/basebuilder.d.ts +27 -0
  108. package/dist/types/lib/classBuilder.d.ts +7 -0
  109. package/dist/types/lib/core.d.ts +7 -0
  110. package/dist/types/lib/index.d.ts +83 -0
  111. package/dist/types/lib/types.d.ts +14 -0
  112. package/dist/types/run.d.ts +1 -0
  113. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  114. package/dist/types/utils.d.ts +9 -0
  115. package/package.json +40 -32
  116. package/src/Footer.tsx +4 -0
  117. package/src/Init.ts +48 -0
  118. package/src/Node.ts +23 -17
  119. package/src/PM/index.ts +1 -1
  120. package/src/PM/main.ts +143 -101
  121. package/src/PM/node.ts +2 -2
  122. package/src/PM/web.ts +1 -1
  123. package/src/ReportClient.tsx +155 -0
  124. package/src/ReportServer.ts +21 -0
  125. package/src/SubPackages/react/component/node.ts +68 -24
  126. package/src/SubPackages/react/component/web.ts +68 -25
  127. package/src/SubPackages/react/jsx/index.ts +39 -18
  128. package/src/SubPackages/react/jsx/node.ts +12 -10
  129. package/src/SubPackages/react/jsx/web.ts +27 -14
  130. package/src/SubPackages/react-dom/component/node.ts +42 -50
  131. package/src/SubPackages/react-dom/component/web.ts +28 -10
  132. package/src/SubPackages/react-dom/jsx/node.ts +54 -56
  133. package/src/SubPackages/react-dom/jsx/web.ts +55 -42
  134. package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +23 -7
  135. package/src/SubPackages/react-test-renderer/component/index.ts +38 -5
  136. package/src/SubPackages/react-test-renderer/component/node.ts +24 -5
  137. package/src/SubPackages/react-test-renderer/component/web.ts +22 -5
  138. package/src/SubPackages/react-test-renderer/fc/node.ts +41 -7
  139. package/src/SubPackages/react-test-renderer/fc/web.ts +43 -11
  140. package/src/SubPackages/react-test-renderer/jsx/index.ts +39 -16
  141. package/src/SubPackages/react-test-renderer/jsx/node.ts +8 -6
  142. package/src/SubPackages/react-test-renderer/jsx/web.ts +22 -5
  143. package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +39 -6
  144. package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +27 -10
  145. package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +26 -12
  146. package/src/TestReport.tsx +176 -0
  147. package/src/Types.ts +63 -309
  148. package/src/Web.ts +24 -18
  149. package/src/build.ts +240 -0
  150. package/src/defaultConfig.ts +2 -1
  151. package/src/esbuildConfigs/eslint-formatter-testeranto.ts +5 -0
  152. package/src/esbuildConfigs/featuresPlugin.ts +0 -1
  153. package/src/esbuildConfigs/index.ts +1 -1
  154. package/src/esbuildConfigs/inputFilesPlugin.ts +2 -135
  155. package/src/esbuildConfigs/node.ts +4 -13
  156. package/src/esbuildConfigs/web.ts +3 -19
  157. package/src/init-docs.ts +2 -1
  158. package/src/lib/abstractBase.ts +82 -80
  159. package/src/lib/basebuilder.ts +57 -45
  160. package/src/lib/classBuilder.ts +15 -15
  161. package/src/lib/core.ts +44 -35
  162. package/src/lib/index.ts +47 -98
  163. package/src/lib/readme.md +12 -0
  164. package/src/lib/types.ts +53 -70
  165. package/src/run.ts +398 -0
  166. package/src/style.css +8 -0
  167. package/src/utils.ts +74 -2
  168. package/tsc.log +106 -0
  169. package/Bundle.Dockerfile +0 -52
  170. package/bin/init-docs.js +0 -24
  171. package/dist/common/src/Init.js +0 -40
  172. package/dist/common/src/SubPackages/puppeteer.js +0 -21
  173. package/dist/common/src/cli.js +0 -439
  174. package/dist/common/src/cli2.js +0 -144
  175. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -99
  176. package/dist/common/src/utils.js +0 -16
  177. package/dist/common/testeranto.js +0 -15
  178. package/dist/module/src/Init.js +0 -35
  179. package/dist/module/src/SubPackages/puppeteer.js +0 -16
  180. package/dist/module/src/SubPackages/react/jsx/index.js +0 -27
  181. package/dist/module/src/cli.js +0 -411
  182. package/dist/module/src/cli2.js +0 -116
  183. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -94
  184. package/dist/module/src/lib/types.js +0 -2
  185. package/dist/module/src/utils.js +0 -9
  186. package/dist/module/testeranto.js +0 -13
  187. package/dist/prebuild/cli.mjs +0 -1491
  188. package/dist/types/dist/module/src/Init.d.ts +0 -2
  189. package/dist/types/src/Node.d.ts +0 -13
  190. package/dist/types/src/SubPackages/puppeteer.d.ts +0 -6
  191. package/dist/types/src/SubPackages/react/component/node.d.ts +0 -7
  192. package/dist/types/src/SubPackages/react/component/web.d.ts +0 -7
  193. package/dist/types/src/SubPackages/react/jsx/index.d.ts +0 -12
  194. package/dist/types/src/SubPackages/react/jsx/node.d.ts +0 -4
  195. package/dist/types/src/SubPackages/react/jsx/web.d.ts +0 -4
  196. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +0 -12
  197. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +0 -11
  198. package/dist/types/src/SubPackages/react-dom/jsx/index.d.ts +0 -7
  199. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +0 -6
  200. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +0 -5
  201. package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -5
  202. package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +0 -13
  203. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +0 -8
  204. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +0 -3
  205. package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +0 -8
  206. package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +0 -8
  207. package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +0 -17
  208. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +0 -9
  209. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +0 -8
  210. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/index.d.ts +0 -16
  211. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -4
  212. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -4
  213. package/dist/types/src/Types.d.ts +0 -90
  214. package/dist/types/src/Web.d.ts +0 -10
  215. package/dist/types/src/defaultConfig.d.ts +0 -3
  216. package/dist/types/src/lib/abstractBase.d.ts +0 -110
  217. package/dist/types/src/lib/basebuilder.d.ts +0 -27
  218. package/dist/types/src/lib/classBuilder.d.ts +0 -7
  219. package/dist/types/src/lib/core.d.ts +0 -8
  220. package/dist/types/src/lib/index.d.ts +0 -60
  221. package/dist/types/src/lib/types.d.ts +0 -40
  222. package/dist/types/src/utils.d.ts +0 -2
  223. package/dist/types/testeranto.d.ts +0 -16
  224. package/docker-compose.yml +0 -37
  225. package/src/SubPackages/puppeteer.ts +0 -51
  226. package/src/cli.ts +0 -535
  227. package/src/cli2.ts +0 -157
  228. package/testeranto.ts +0 -13
  229. package/dist/common/{src/Node.js → Node.js} +0 -0
  230. package/dist/common/{src/PM → PM}/index.js +0 -0
  231. package/dist/common/{src/PM → PM}/node.js +0 -0
  232. package/dist/common/{src/PM → PM}/web.js +0 -0
  233. package/dist/common/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
  234. package/dist/common/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
  235. package/dist/common/{src/SubPackages → SubPackages}/react/jsx/node.js +0 -0
  236. package/dist/common/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
  237. package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
  238. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
  239. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
  240. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
  241. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
  242. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
  243. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
  244. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  245. package/dist/common/{src/Types.js → Types.js} +0 -0
  246. package/dist/common/{src/Web.js → Web.js} +0 -0
  247. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
  248. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
  249. package/dist/common/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
  250. package/dist/common/{src/web.html.js → web.html.js} +0 -0
  251. package/dist/module/{src/Node.js → Node.js} +0 -0
  252. package/dist/module/{src/PM → PM}/index.js +0 -0
  253. package/dist/module/{src/PM → PM}/node.js +0 -0
  254. package/dist/module/{src/PM → PM}/web.js +0 -0
  255. package/dist/module/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
  256. package/dist/module/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
  257. package/dist/module/{src/SubPackages → SubPackages}/react/jsx/node.js +0 -0
  258. package/dist/module/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
  259. package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
  260. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  261. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
  262. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +0 -0
  263. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
  264. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
  265. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +0 -0
  266. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +0 -0
  267. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
  268. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
  269. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  270. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
  271. /package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  272. /package/dist/module/{src/Types.js → Types.js} +0 -0
  273. /package/dist/module/{src/Web.js → Web.js} +0 -0
  274. /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
  275. /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
  276. /package/dist/{types/src/cli.d.ts → module/lib/types.js} +0 -0
  277. /package/dist/module/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
  278. /package/dist/module/{src/web.html.js → web.html.js} +0 -0
  279. /package/dist/types/{src/Init.d.ts → Init.d.ts} +0 -0
  280. /package/dist/types/{src/cli2.d.ts → ReportServer.d.ts} +0 -0
  281. /package/dist/types/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.d.ts +0 -0
  282. /package/dist/types/{src/init-docs.d.ts → build.d.ts} +0 -0
  283. /package/dist/types/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.d.ts +0 -0
  284. /package/dist/types/{src/puppeteerConfiger.d.ts → puppeteerConfiger.d.ts} +0 -0
  285. /package/dist/types/{src/web.html.d.ts → web.html.d.ts} +0 -0
package/src/PM/main.ts CHANGED
@@ -9,35 +9,57 @@ import puppeteer, {
9
9
  ScreenshotOptions,
10
10
  } from "puppeteer-core";
11
11
  import { PassThrough } from "stream";
12
- import crypto from "crypto";
13
-
14
- import { IBuiltConfig, IFinalResults, ITestTypes } from "../lib/types";
15
- import { ITLog } from "../lib/index.js";
12
+ import ansiC from "ansi-colors";
13
+
14
+ import {
15
+ IBuiltConfig,
16
+ IFinalResults,
17
+ ITestTypes,
18
+ ITLog,
19
+ } from "../lib/index.js";
20
+ import {
21
+ bddExitCodePather,
22
+ lintExitCodePather,
23
+ tscExitCodePather,
24
+ } from "../utils";
16
25
 
17
26
  import { PM } from "./index.js";
18
27
 
19
28
  const fileStreams3: fs.WriteStream[] = [];
20
-
21
29
  type IFPaths = string[];
22
-
23
30
  const fPaths: IFPaths = [];
24
-
25
31
  const files: Record<string, Set<string>> = {};
26
32
  const recorders: Record<string, ScreenRecorder> = {};
27
33
  const screenshots: Record<string, Promise<Uint8Array>[]> = {};
28
34
 
29
- const red = "\x1b[31m";
30
- const green = "\x1b[32m";
31
- const reset = "\x1b[0m"; // Resets to default color
32
-
33
35
  const statusMessagePretty = (failures: number, test: string) => {
34
36
  if (failures === 0) {
35
- console.log(green + `${test} completed successfully` + reset);
37
+ console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
36
38
  } else {
37
- console.log(red + `${test} failed ${failures} times` + reset);
39
+ console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
38
40
  }
39
41
  };
40
42
 
43
+ async function writeFileAndCreateDir(filePath, data) {
44
+ const dirPath = path.dirname(filePath);
45
+
46
+ try {
47
+ await fs.promises.mkdir(dirPath, { recursive: true });
48
+ await fs.appendFileSync(filePath, data);
49
+ } catch (error) {
50
+ console.error(`Error writing file: ${error}`);
51
+ }
52
+ }
53
+
54
+ function isValidUrl(string) {
55
+ try {
56
+ new URL(string);
57
+ return true;
58
+ } catch (err) {
59
+ return false;
60
+ }
61
+ }
62
+
41
63
  export class PM_Main extends PM {
42
64
  browser: Browser;
43
65
 
@@ -45,21 +67,36 @@ export class PM_Main extends PM {
45
67
  configs: IBuiltConfig;
46
68
  ports: Record<number, boolean>;
47
69
  queue: any[];
48
- registry: Record<string, boolean>;
70
+
71
+ bigBoard: Record<
72
+ string,
73
+ {
74
+ status: "?" | "running" | "waiting";
75
+ runTimeError?: number;
76
+ typeErrors?: string;
77
+ staticErrors?: string;
78
+ }
79
+ > = {};
49
80
 
50
81
  constructor(configs: IBuiltConfig) {
51
82
  super();
52
83
  this.server = {};
53
84
  this.configs = configs;
54
85
  this.ports = {};
55
- this.registry = {};
86
+
87
+ this.configs.tests.forEach(([t]) => {
88
+ this.bigBoard[t] = {
89
+ status: "?",
90
+ };
91
+ });
92
+
56
93
  this.configs.ports.forEach((element) => {
57
94
  this.ports[element] = "true"; // set ports as open
58
95
  });
59
96
 
60
97
  globalThis["waitForSelector"] = async (pageKey: string, sel: string) => {
61
- console.log("waitForSelector", pageKey, sel);
62
98
  const page = (await this.browser.pages()).find(
99
+ /* @ts-ignore:next-line */
63
100
  (p) => p.mainFrame()._id === pageKey
64
101
  );
65
102
  await page?.waitForSelector(sel);
@@ -71,18 +108,16 @@ export class PM_Main extends PM {
71
108
 
72
109
  globalThis["closePage"] = async (pageKey) => {
73
110
  const page = (await this.browser.pages()).find(
111
+ /* @ts-ignore:next-line */
74
112
  (p) => p.mainFrame()._id === pageKey
75
113
  );
114
+ /* @ts-ignore:next-line */
76
115
  return page.close();
77
116
  };
78
117
 
79
- // globalThis["closePage"] = (p) => {
80
- // console.log("closePage", p);
81
- // return p.close();
82
- // };
83
-
84
118
  globalThis["goto"] = async (pageKey: string, url: string) => {
85
119
  const page = (await this.browser.pages()).find(
120
+ /* @ts-ignore:next-line */
86
121
  (p) => p.mainFrame()._id === pageKey
87
122
  );
88
123
  await page?.goto(url);
@@ -111,19 +146,9 @@ export class PM_Main extends PM {
111
146
  contents: string,
112
147
  testName: string
113
148
  ) => {
114
- // console.log(testName, "writeFileSync", filepath, testName);
115
-
116
- // Create directories if they don't exist
117
- const dir = path.dirname(filepath);
118
-
119
- // console.log(testName, "mkdirSync", dir);
120
-
121
- fs.mkdirSync(dir, {
149
+ fs.mkdirSync(path.dirname(filepath), {
122
150
  recursive: true,
123
151
  });
124
-
125
- // console.log(testName, "mkdirSync2");
126
-
127
152
  if (!files[testName]) {
128
153
  files[testName] = new Set();
129
154
  }
@@ -185,6 +210,7 @@ export class PM_Main extends PM {
185
210
  testName: string
186
211
  ) => {
187
212
  const page = (await this.browser.pages()).find(
213
+ /* @ts-ignore:next-line */
188
214
  (p) => p.mainFrame()._id === pageKey
189
215
  );
190
216
 
@@ -217,6 +243,7 @@ export class PM_Main extends PM {
217
243
  pageKey: string
218
244
  ) => {
219
245
  const page = (await this.browser.pages()).find(
246
+ /* @ts-ignore:next-line */
220
247
  (p) => p.mainFrame()._id === pageKey
221
248
  );
222
249
 
@@ -264,7 +291,6 @@ export class PM_Main extends PM {
264
291
  goto(p, url: string): any {
265
292
  throw new Error("Method not implemented.");
266
293
  }
267
-
268
294
  $(selector: string): boolean {
269
295
  throw new Error("Method not implemented.");
270
296
  }
@@ -274,11 +300,9 @@ export class PM_Main extends PM {
274
300
  customScreenShot(opts: object, cdpPage?: CdpPage) {
275
301
  throw new Error("Method not implemented.");
276
302
  }
277
-
278
303
  end(accessObject: { uid: number }): boolean {
279
304
  throw new Error("Method not implemented.");
280
305
  }
281
-
282
306
  existsSync(destFolder: string): boolean {
283
307
  return fs.existsSync(destFolder);
284
308
  }
@@ -372,7 +396,7 @@ export class PM_Main extends PM {
372
396
  getAttribute(selector: string, attribute: string) {
373
397
  throw new Error("Method not implemented.");
374
398
  }
375
- isDisabled(selector: string): boolean {
399
+ isDisabled(selector: string): Promise<boolean> {
376
400
  throw new Error("Method not implemented.");
377
401
  }
378
402
  screencastStop(s: string) {
@@ -387,40 +411,70 @@ export class PM_Main extends PM {
387
411
  this.browser = (await puppeteer.launch(options)) as any;
388
412
  }
389
413
 
390
- ////////////////////////////////////////////////////////////////////////////////
414
+ // goodbye = () => {
415
+ // this.browser.disconnect().then(() => {
416
+
417
+ // console.log("Goodbye");
418
+ // process.exit();
419
+ // });
420
+ // };
391
421
 
392
422
  shutDown() {
393
- console.log("shutting down...");
394
423
  this.shutdownMode = true;
395
424
  this.checkForShutdown();
396
425
  }
397
426
 
398
427
  checkForShutdown = () => {
399
428
  const anyRunning: boolean =
400
- Object.values(this.registry).filter((x) => x === false).length > 0;
429
+ Object.values(this.bigBoard).filter((x) => x.status === "running")
430
+ .length > 0;
401
431
  if (anyRunning) {
402
432
  } else {
403
433
  this.browser.disconnect().then(() => {
404
- console.log("Goodbye");
434
+ const final = {
435
+ timestamp: Date.now(),
436
+ tests: this.configs.tests.reduce((mm, t) => {
437
+ const bddErrors = fs
438
+ .readFileSync(bddExitCodePather(t[0], t[1]))
439
+ .toString();
440
+ const lintErrors = fs
441
+ .readFileSync(lintExitCodePather(t[0], t[1]))
442
+ .toString();
443
+ const typeErrors = fs
444
+ .readFileSync(tscExitCodePather(t[0], t[1]))
445
+ .toString();
446
+ mm[t[0]] = {
447
+ bddErrors,
448
+ lintErrors,
449
+ typeErrors,
450
+ };
451
+ return mm;
452
+ }, {}),
453
+ };
454
+
455
+ const s = JSON.stringify(final, null, 2);
456
+ fs.writeFileSync("docs/summary.json", s);
457
+ console.log(ansiC.inverse("Goodbye"));
405
458
  process.exit();
406
459
  });
407
460
  }
408
461
  };
409
462
 
410
- register = (src: string) => {
411
- this.registry[src] = false;
463
+ testIsNowRunning = (src: string) => {
464
+ this.bigBoard[src].status = "running";
412
465
  };
413
466
 
414
- deregister = (src: string) => {
415
- this.registry[src] = true;
467
+ testIsNowDone = (src: string) => {
468
+ this.bigBoard[src].status = "waiting";
416
469
  if (this.shutdownMode) {
417
470
  this.checkForShutdown();
418
471
  }
419
472
  };
420
473
 
421
474
  launchNode = async (src: string, dest: string) => {
422
- console.log("! node", src);
423
- this.register(src);
475
+ // console.log(ansiC.yellow(`! node, ${src}`));
476
+ console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
477
+ this.testIsNowRunning(src);
424
478
 
425
479
  const destFolder = dest.replace(".mjs", "");
426
480
 
@@ -431,7 +485,7 @@ export class PM_Main extends PM {
431
485
  });
432
486
 
433
487
  if (!testConfig) {
434
- console.error("missing test config");
488
+ console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
435
489
  process.exit(-1);
436
490
  }
437
491
  const testConfigResource = testConfig[2];
@@ -510,13 +564,15 @@ export class PM_Main extends PM {
510
564
  this.receiveFeatures(features, destFolder, src);
511
565
  // console.log(`${src} completed with ${failed} errors`);
512
566
  statusMessagePretty(failed, src);
567
+ this.receiveExitCode(src, failed);
513
568
  })
514
569
  .catch((e) => {
515
- console.log(`${src} errored with`, e);
570
+ console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
571
+ // console.log(reset, `${src} errored with`, e);
516
572
  })
517
573
  .finally(() => {
518
574
  webSideCares.forEach((webSideCar) => webSideCar.close());
519
- this.deregister(src);
575
+ this.testIsNowDone(src);
520
576
  });
521
577
  });
522
578
  });
@@ -535,7 +591,9 @@ export class PM_Main extends PM {
535
591
  testConfig: ITestTypes
536
592
  ): Promise<Page> => {
537
593
  const d = dest + ".mjs";
538
- console.log("launchWebSideCar", src, dest, d);
594
+ // console.log(green, "launchWebSideCar", src, dest, d);
595
+ console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
596
+
539
597
  const destFolder = dest.replace(".mjs", "");
540
598
  // const webArgz = JSON.stringify({
541
599
  // name: dest,
@@ -673,6 +731,7 @@ export class PM_Main extends PM {
673
731
  })
674
732
  .then(async (page) => {
675
733
  await page.goto(`file://${`${dest}.html`}`, {});
734
+
676
735
  res(page);
677
736
  });
678
737
  });
@@ -684,7 +743,8 @@ export class PM_Main extends PM {
684
743
  testConfig: ITestTypes
685
744
  ) => {
686
745
  const d = dest + ".mjs";
687
- console.log("launchNodeSideCar", src, dest, d);
746
+ // console.log(green, "launchNodeSideCar", src, dest, d);
747
+ console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
688
748
 
689
749
  const destFolder = dest.replace(".mjs", "");
690
750
 
@@ -766,8 +826,9 @@ export class PM_Main extends PM {
766
826
  };
767
827
 
768
828
  launchWeb = (t: string, dest: string) => {
769
- console.log("! web", t);
770
- this.register(t);
829
+ // console.log(green, "! web", t);
830
+ console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
831
+ this.testIsNowRunning(t);
771
832
 
772
833
  // sidecars.map((sidecar) => {
773
834
  // if (sidecar[1] === "node") {
@@ -791,9 +852,9 @@ export class PM_Main extends PM {
791
852
  const d = `${dest}?cacheBust=${Date.now()}`;
792
853
 
793
854
  const evaluation = `
794
- console.log("importing ${d}");
855
+
795
856
  import('${d}').then(async (x) => {
796
- console.log("imported", (await x.default));
857
+
797
858
  try {
798
859
  return await (await x.default).receiveTestResourceConfig(${webArgz})
799
860
  } catch (e) {
@@ -982,7 +1043,7 @@ export class PM_Main extends PM {
982
1043
  // });
983
1044
 
984
1045
  page.exposeFunction("page", () => {
985
- return page.mainFrame()._id;
1046
+ return (page.mainFrame() as unknown as { _id: string })._id;
986
1047
  });
987
1048
 
988
1049
  page.exposeFunction("click", (sel) => {
@@ -1048,7 +1109,7 @@ export class PM_Main extends PM {
1048
1109
  delete screenshots[t];
1049
1110
  page.close();
1050
1111
 
1051
- this.deregister(t);
1112
+ this.testIsNowDone(t);
1052
1113
  stderrStream.close();
1053
1114
  stdoutStream.close();
1054
1115
  });
@@ -1070,7 +1131,7 @@ export class PM_Main extends PM {
1070
1131
 
1071
1132
  console.debug(`Error from message ${t}: [${err.message}] `);
1072
1133
  stderrStream.write(err.message);
1073
- // close();
1134
+ close();
1074
1135
  });
1075
1136
  page.on("console", (log: ConsoleMessage) => {
1076
1137
  // console.debug(`Log from ${t}: [${log.text()}] `);
@@ -1090,11 +1151,14 @@ export class PM_Main extends PM {
1090
1151
  this.receiveFeatures(features, destFolder, t);
1091
1152
  // console.log(`${t} completed with ${failed} errors`);
1092
1153
  statusMessagePretty(failed, t);
1154
+ this.receiveExitCode(t, failed);
1093
1155
  })
1094
1156
  .catch((e) => {
1095
- console.log(`${t} errored with`, e);
1157
+ // console.log(red, `${t} errored with`, e);
1158
+ console.log(ansiC.red(ansiC.inverse(`${t} errored with: ${e}`)));
1096
1159
  })
1097
1160
  .finally(() => {
1161
+ // this.testIsNowDone(t);
1098
1162
  close();
1099
1163
  });
1100
1164
 
@@ -1141,13 +1205,13 @@ export class PM_Main extends PM {
1141
1205
  }
1142
1206
  }
1143
1207
 
1144
- fs.symlink(u.pathname, newPath, (err) => {
1145
- if (err) {
1146
- // console.error("Error creating symlink:", err);
1147
- } else {
1148
- // console.log("Symlink created successfully");
1149
- }
1150
- });
1208
+ // fs.symlink(u.pathname, newPath, (err) => {
1209
+ // if (err) {
1210
+ // // console.error("Error creating symlink:", err);
1211
+ // } else {
1212
+ // // console.log("Symlink created successfully");
1213
+ // }
1214
+ // });
1151
1215
  accum.files.push(newPath);
1152
1216
  } else if (u.protocol === "http:" || u.protocol === "https:") {
1153
1217
  const newPath = `${process.cwd()}/docs/features/external${
@@ -1161,13 +1225,7 @@ export class PM_Main extends PM {
1161
1225
  await fs.promises.mkdir(path.dirname(featureDestination), {
1162
1226
  recursive: true,
1163
1227
  });
1164
- // const newPath = `${process.cwd()}/docs/features/plain/${await sha256(
1165
- // featureStringKey
1166
- // )}`;
1167
- // writeFileAndCreateDir(
1168
- // `${featureDestination}/${await sha256(featureStringKey)}`,
1169
- // featureStringKey
1170
- // );
1228
+
1171
1229
  accum.strings.push(featureStringKey);
1172
1230
  }
1173
1231
 
@@ -1186,35 +1244,19 @@ export class PM_Main extends PM {
1186
1244
  .join("\n")
1187
1245
  );
1188
1246
  });
1189
- };
1190
- }
1191
-
1192
- async function writeFileAndCreateDir(filePath, data) {
1193
- const dirPath = path.dirname(filePath);
1194
1247
 
1195
- try {
1196
- await fs.promises.mkdir(dirPath, { recursive: true });
1197
- await fs.appendFileSync(filePath, data);
1198
- } catch (error) {
1199
- console.error(`Error writing file: ${error}`);
1200
- }
1201
- }
1202
-
1203
- async function sha256(rawData) {
1204
- const data =
1205
- typeof rawData === "object" ? JSON.stringify(rawData) : String(rawData);
1248
+ this.writeBigBoard();
1249
+ };
1206
1250
 
1207
- const msgBuffer = new TextEncoder().encode(data);
1208
- const hashBuffer = await crypto.subtle.digest("SHA-256", msgBuffer);
1209
- const hashArray = Array.from(new Uint8Array(hashBuffer));
1210
- return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
1211
- }
1251
+ receiveExitCode = (srcTest: string, failures: number) => {
1252
+ this.bigBoard[srcTest].runTimeError = failures;
1253
+ this.writeBigBoard();
1254
+ };
1212
1255
 
1213
- function isValidUrl(string) {
1214
- try {
1215
- new URL(string);
1216
- return true;
1217
- } catch (err) {
1218
- return false;
1219
- }
1256
+ writeBigBoard = () => {
1257
+ fs.writeFileSync(
1258
+ "./docs/bigBoard.json",
1259
+ JSON.stringify(this.bigBoard, null, 2)
1260
+ );
1261
+ };
1220
1262
  }
package/src/PM/node.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
- import puppeteer, { ScreencastOptions, ScreenRecorder } from "puppeteer-core";
3
+ import { ScreencastOptions } from "puppeteer-core";
4
4
  import { PassThrough } from "stream";
5
5
 
6
6
  import { ITLog, ITTestResourceConfiguration } from "../lib";
@@ -43,7 +43,7 @@ export class PM_Node extends PM {
43
43
  throw new Error("Method not implemented.");
44
44
  }
45
45
 
46
- isDisabled(selector: string): boolean {
46
+ isDisabled(selector: string): Promise<boolean> {
47
47
  throw new Error("Method not implemented.");
48
48
  }
49
49
 
package/src/PM/web.ts CHANGED
@@ -51,7 +51,7 @@ export class PM_Web extends PM {
51
51
  return window["$"](selector);
52
52
  }
53
53
 
54
- isDisabled(selector: string): boolean {
54
+ isDisabled(selector: string): Promise<boolean> {
55
55
  return window["isDisabled"](selector);
56
56
  }
57
57
 
@@ -0,0 +1,155 @@
1
+ import ReactDom from "react-dom/client";
2
+ import React, { useEffect, useState } from "react";
3
+
4
+ import 'bootstrap/dist/css/bootstrap.min.css';
5
+ import "./style.css"
6
+
7
+ import { IRunTime, ITestTypes, IBuiltConfig } from "./lib";
8
+ import { Footer } from "./Footer";
9
+
10
+
11
+ type ICollation = {
12
+ name: string;
13
+ runTime: IRunTime;
14
+ tr: {
15
+ ports: number;
16
+ };
17
+ sidecars: ITestTypes[];
18
+ status: string;
19
+ staticAnalysis: string;
20
+ typeErrors: string;
21
+ bddErrors: string;
22
+ };
23
+
24
+ type ICollations = ICollation[];
25
+
26
+ const BigBoard = () => {
27
+
28
+ const [configs, setConfigs] = useState<IBuiltConfig>();
29
+ useEffect(() => {
30
+ (async () => {
31
+ fetch('/kokomoBay/docs/testeranto.json')
32
+ .then(response => response.json())
33
+ .then(json => {
34
+ setConfigs(json)
35
+ })
36
+ .catch(error => console.error(error));
37
+
38
+ })();
39
+ }, []);
40
+
41
+ const [bigBoard, setBigBoard] = useState<Record<string, object>>({});
42
+ useEffect(() => {
43
+ (async () => {
44
+ fetch('/kokomoBay/docs/bigBoard.json')
45
+ .then(response => response.json())
46
+ .then(json => {
47
+ setBigBoard(json)
48
+ })
49
+ .catch(error => console.error(error));
50
+
51
+ })();
52
+ }, []);
53
+
54
+ const [staticAnalysis, setStaticAnalysis] = useState<Record<string, string>>({});
55
+ useEffect(() => {
56
+ (async () => {
57
+
58
+ let accumulator = {};
59
+ for (const t of (configs || { tests: [] as ITestTypes[] }).tests) {
60
+ accumulator[t[0]] = await (await fetch(`/kokomoBay/docs/${t[1]}/${t[0].split(".").slice(0, -1).join(".")}/lint_errors.txt`)).text()
61
+ }
62
+ setStaticAnalysis(accumulator);
63
+
64
+
65
+ })();
66
+ }, [configs, bigBoard]);
67
+
68
+ const [typeErrors, setTypeErrors] = useState<Record<string, string>>({});
69
+ useEffect(() => {
70
+ (async () => {
71
+
72
+ let accumulator = {};
73
+ for (const t of (configs || { tests: [] as ITestTypes[] }).tests) {
74
+ accumulator[t[0]] = await (await fetch(`/kokomoBay/docs/${t[1]}/${t[0].split(".").slice(0, -1).join(".")}/type_errors.txt`)).text()
75
+ }
76
+ setTypeErrors(accumulator);
77
+
78
+
79
+ })();
80
+ }, [configs, bigBoard]);
81
+
82
+ const [bddErrors, setBddErrors] = useState<Record<string, string>>({});
83
+ useEffect(() => {
84
+ (async () => {
85
+
86
+ let accumulator = {};
87
+ for (const t of (configs || { tests: [] as ITestTypes[] }).tests) {
88
+ accumulator[t[0]] = await (await fetch(`/kokomoBay/docs/${t[1]}/${t[0].split(".").slice(0, -1).join(".")}/bdd_errors.txt`)).text()
89
+ }
90
+ setBddErrors(accumulator);
91
+
92
+
93
+ })();
94
+ }, [configs, bigBoard]);
95
+
96
+ if (!configs || !staticAnalysis || !typeErrors || !bddErrors) {
97
+ return <div>loading...</div>
98
+ }
99
+
100
+ const collated: ICollations = configs.tests.map((c) => {
101
+ return {
102
+ ...bigBoard[c[0]],
103
+ name: c[0],
104
+ runTime: c[1],
105
+ tr: c[2],
106
+ sidecars: c[3],
107
+ staticAnalysis: staticAnalysis[c[0]],
108
+ typeErrors: typeErrors[c[0]],
109
+ bddErrors: bddErrors[c[0]],
110
+ } as ICollation
111
+ });
112
+
113
+ return <div >
114
+ <table>
115
+ <tr>
116
+ <td>name</td>
117
+ <td>run time</td>
118
+ <td>BDD errors</td>
119
+ <td>Lint errors</td>
120
+ <td>Type errors</td>
121
+ <td>prompt</td>
122
+ </tr>
123
+ {
124
+ ...collated.map((c) => {
125
+ return <tr>
126
+ <td>{c.name}</td>
127
+ <td>{c.runTime}</td>
128
+ <td><a href={`${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/littleBoard.html`}>{c.bddErrors}</a></td>
129
+ <td><a href={`${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/lint_errors.json`}>{c.staticAnalysis}</a></td>
130
+ <td><a href={`${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/type_errors.txt`}>{c.typeErrors}</a></td>
131
+
132
+
133
+ <td>
134
+ <pre>
135
+ aider --model deepseek/deepseek-chat --load {`docs/${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/prompt.txt`}
136
+ </pre>
137
+ </td>
138
+
139
+
140
+ </tr>
141
+ })
142
+ }
143
+ </table>
144
+ <Footer />
145
+ </div>
146
+ }
147
+
148
+ document.addEventListener("DOMContentLoaded", function () {
149
+ const elem = document.getElementById("root");
150
+ if (elem) {
151
+ ReactDom.createRoot(elem).render(React.createElement(BigBoard, {}, []));
152
+ }
153
+ });
154
+
155
+ console.log("hello BigBoard!")
@@ -0,0 +1,21 @@
1
+ import staticServer from "node-static";
2
+ import http from "http";
3
+
4
+ const main = async () => {
5
+ process.chdir("../"); // Navigate one level up
6
+
7
+ const fileServer = new staticServer.Server(".", {});
8
+
9
+ http
10
+ .createServer(function (request, response) {
11
+ request
12
+ .addListener("end", function () {
13
+ fileServer.serve(request, response);
14
+ })
15
+ .resume();
16
+ })
17
+ .listen(8080);
18
+
19
+ console.log("Server running on port 8080");
20
+ };
21
+ main();