testeranto 0.79.69 → 0.81.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 (252) hide show
  1. package/.aider.chat.history.md +980 -0
  2. package/.aider.input.history +87 -0
  3. package/.aider.tags.cache.v3/1c/30/af1de2ad7a137afeddb1b01e0c27.val +0 -0
  4. package/.aider.tags.cache.v3/1d/63/88318b65ce58b6bb0487e8ce2656.val +0 -0
  5. package/.aider.tags.cache.v3/2e/67/16ae65530b40038e48e00d666c63.val +0 -0
  6. package/.aider.tags.cache.v3/6f/94/80488a232866fcce7ee657da488b.val +0 -0
  7. package/.aider.tags.cache.v3/cache.db +0 -0
  8. package/.eslintrc.js +5 -2
  9. package/README.md +10 -107
  10. package/build-tests.ts +16 -0
  11. package/dist/common/build-tests.js +38 -0
  12. package/dist/common/init-docs.js +8 -0
  13. package/dist/common/run-tests.js +34 -0
  14. package/dist/common/src/Aider.js +143 -0
  15. package/dist/common/src/Init.js +10 -0
  16. package/dist/common/{PM → src/PM}/main.js +58 -49
  17. package/dist/common/{PM → src/PM}/node.js +1 -1
  18. package/dist/common/{Project.js → src/Project.js} +46 -38
  19. package/dist/common/{Puppeteer.js → src/Puppeteer.js} +51 -40
  20. package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/web.js +37 -38
  21. package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +17 -2
  22. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +79 -0
  23. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/node.js +5 -3
  24. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/web.js +4 -4
  25. package/dist/common/{lib → src/lib}/abstractBase.js +80 -24
  26. package/dist/common/{lib → src/lib}/basebuilder.js +14 -3
  27. package/dist/common/{lib → src/lib}/core.js +47 -3
  28. package/dist/common/testeranto.js +15 -0
  29. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  30. package/dist/module/build-tests.js +10 -0
  31. package/dist/module/init-docs.js +3 -0
  32. package/dist/module/run-tests.js +6 -0
  33. package/dist/module/src/Aider.js +136 -0
  34. package/dist/module/src/Init.js +5 -0
  35. package/dist/module/{PM → src/PM}/main.js +58 -49
  36. package/dist/module/{PM → src/PM}/node.js +1 -1
  37. package/dist/module/{Project.js → src/Project.js} +46 -38
  38. package/dist/module/{Puppeteer.js → src/Puppeteer.js} +51 -40
  39. package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/web.js +37 -38
  40. package/dist/module/src/SubPackages/react-test-renderer/jsx/index.js +34 -0
  41. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +74 -0
  42. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/node.js +4 -2
  43. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/web.js +4 -4
  44. package/dist/module/{lib → src/lib}/abstractBase.js +80 -24
  45. package/dist/module/{lib → src/lib}/basebuilder.js +14 -3
  46. package/dist/module/{lib → src/lib}/core.js +47 -3
  47. package/dist/module/testeranto.js +13 -0
  48. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  49. package/dist/types/build-tests.d.ts +3 -0
  50. package/dist/types/init-docs.d.ts +2 -0
  51. package/dist/types/run-tests.d.ts +2 -0
  52. package/dist/types/src/Aider.d.ts +1 -0
  53. package/dist/types/{PM → src/PM}/index.d.ts +1 -1
  54. package/dist/types/{PM → src/PM}/main.d.ts +7 -1
  55. package/dist/types/{Project.d.ts → src/Project.d.ts} +6 -1
  56. package/dist/types/{Types.d.ts → src/Types.d.ts} +3 -2
  57. package/dist/types/{lib → src/lib}/abstractBase.d.ts +1 -0
  58. package/dist/types/testeranto.d.ts +16 -0
  59. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  60. package/init-docs.ts +5 -0
  61. package/package.json +54 -29
  62. package/run-tests.ts +9 -0
  63. package/secret +1 -0
  64. package/secret.env +2 -0
  65. package/src/Aider.ts +168 -0
  66. package/src/Init.ts +0 -31
  67. package/src/PM/index.ts +1 -1
  68. package/src/PM/main.ts +71 -61
  69. package/src/PM/node.ts +1 -1
  70. package/src/Project.ts +55 -48
  71. package/src/Puppeteer.ts +66 -52
  72. package/src/SubPackages/react-dom/jsx/web.ts +46 -49
  73. package/src/SubPackages/react-test-renderer/jsx/index.ts +25 -2
  74. package/src/Types.ts +3 -1
  75. package/src/esbuildConfigs/inputFilesPlugin.ts +78 -31
  76. package/src/esbuildConfigs/node.ts +2 -2
  77. package/src/esbuildConfigs/web.ts +4 -4
  78. package/src/lib/abstractBase.ts +88 -30
  79. package/src/lib/basebuilder.ts +17 -3
  80. package/src/lib/core.ts +55 -13
  81. package/testeranto.ts +13 -0
  82. package/tsconfig.common.json +12 -4
  83. package/tsconfig.json +9 -2
  84. package/tsconfig.module.json +2 -2
  85. package/tsconfig.types.json +1 -1
  86. package/Report.Dockerfile +0 -44
  87. package/dist/common/Features.js +0 -51
  88. package/dist/common/Init.js +0 -30
  89. package/dist/common/Reporter.js +0 -112
  90. package/dist/common/Scheduler.js +0 -1
  91. package/dist/common/TaskManBackEnd.js +0 -167
  92. package/dist/common/esbuildConfigs/inputFilesPlugin.js +0 -49
  93. package/dist/common/mongooseSchemas.js +0 -56
  94. package/dist/common/preload.js +0 -15
  95. package/dist/common/report.html.js +0 -31
  96. package/dist/module/ExampleTab.js +0 -112
  97. package/dist/module/Features.js +0 -41
  98. package/dist/module/Init.js +0 -25
  99. package/dist/module/Reporter.js +0 -107
  100. package/dist/module/Scheduler.js +0 -1
  101. package/dist/module/SubPackages/react-test-renderer/jsx/index.js +0 -19
  102. package/dist/module/TaskManBackEnd.js +0 -162
  103. package/dist/module/TaskManFrontEnd.js +0 -605
  104. package/dist/module/esbuildConfigs/inputFilesPlugin.js +0 -44
  105. package/dist/module/mongooseSchemas.js +0 -50
  106. package/dist/module/preload.js +0 -15
  107. package/dist/module/report.html.js +0 -29
  108. package/dist/prebuild/TaskManBackEnd.mjs +0 -170
  109. package/dist/prebuild/TaskManFrontEnd.css +0 -12301
  110. package/dist/prebuild/TaskManFrontEnd.js +0 -81262
  111. package/dist/types/Features.d.ts +0 -35
  112. package/dist/types/Reporter.d.ts +0 -1
  113. package/dist/types/Scheduler.d.ts +0 -0
  114. package/dist/types/TaskManBackEnd.d.ts +0 -3
  115. package/dist/types/mongooseSchemas.d.ts +0 -124
  116. package/dist/types/preload.d.ts +0 -0
  117. package/dist/types/report.html.d.ts +0 -2
  118. package/src/ExampleTab.tsx +0 -219
  119. package/src/Features.ts +0 -64
  120. package/src/Reporter.ts +0 -126
  121. package/src/Scheduler.ts +0 -0
  122. package/src/TaskManBackEnd.ts +0 -226
  123. package/src/TaskManFrontEnd.tsx +0 -1254
  124. package/src/mongooseSchemas.ts +0 -105
  125. package/src/preload.ts +0 -17
  126. package/src/report.html.ts +0 -29
  127. package/tests/Rectangle.test.ts +0 -189
  128. package/trash/TaskMan.Dockerfile +0 -23
  129. package/trash/TaskMan1.Dockerfile +0 -43
  130. package/trash/devBot.dockerfile +0 -12
  131. package/trash/docker-compose-dev.yml +0 -9
  132. package/trash/docker-compose-prod.yml +0 -18
  133. package/trash/electronBuild.ts +0 -32
  134. /package/dist/common/{Node.js → src/Node.js} +0 -0
  135. /package/dist/common/{PM → src/PM}/index.js +0 -0
  136. /package/dist/common/{PM → src/PM}/web.js +0 -0
  137. /package/dist/common/{SubPackages → src/SubPackages}/puppeteer.js +0 -0
  138. /package/dist/common/{SubPackages → src/SubPackages}/react/component/node.js +0 -0
  139. /package/dist/common/{SubPackages → src/SubPackages}/react/component/web.js +0 -0
  140. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/index.js +0 -0
  141. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  142. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/web.js +0 -0
  143. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/component/node.js +0 -0
  144. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/component/web.js +0 -0
  145. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  146. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/node.js +0 -0
  147. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  148. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/index.js +0 -0
  149. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  150. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  151. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  152. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  153. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  154. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  155. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  156. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  157. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  158. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  159. /package/dist/common/{Types.js → src/Types.js} +0 -0
  160. /package/dist/common/{Web.js → src/Web.js} +0 -0
  161. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/features.js +0 -0
  162. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/index.js +0 -0
  163. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/report.js +0 -0
  164. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/tests.js +0 -0
  165. /package/dist/common/{lib → src/lib}/classBuilder.js +0 -0
  166. /package/dist/common/{lib → src/lib}/index.js +0 -0
  167. /package/dist/common/{lib → src/lib}/types.js +0 -0
  168. /package/dist/common/{puppeteerConfiger.js → src/puppeteerConfiger.js} +0 -0
  169. /package/dist/common/{utils.js → src/utils.js} +0 -0
  170. /package/dist/common/{web.html.js → src/web.html.js} +0 -0
  171. /package/dist/module/{Node.js → src/Node.js} +0 -0
  172. /package/dist/module/{PM → src/PM}/index.js +0 -0
  173. /package/dist/module/{PM → src/PM}/web.js +0 -0
  174. /package/dist/module/{SubPackages → src/SubPackages}/puppeteer.js +0 -0
  175. /package/dist/module/{SubPackages → src/SubPackages}/react/component/node.js +0 -0
  176. /package/dist/module/{SubPackages → src/SubPackages}/react/component/web.js +0 -0
  177. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/index.js +0 -0
  178. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  179. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/web.js +0 -0
  180. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/component/node.js +0 -0
  181. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/component/web.js +0 -0
  182. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  183. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/node.js +0 -0
  184. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  185. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/index.js +0 -0
  186. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  187. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  188. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  189. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  190. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  191. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  192. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  193. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  194. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  195. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  196. /package/dist/module/{Types.js → src/Types.js} +0 -0
  197. /package/dist/module/{Web.js → src/Web.js} +0 -0
  198. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/features.js +0 -0
  199. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/index.js +0 -0
  200. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/report.js +0 -0
  201. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/tests.js +0 -0
  202. /package/dist/module/{lib → src/lib}/classBuilder.js +0 -0
  203. /package/dist/module/{lib → src/lib}/index.js +0 -0
  204. /package/dist/module/{lib → src/lib}/types.js +0 -0
  205. /package/dist/module/{puppeteerConfiger.js → src/puppeteerConfiger.js} +0 -0
  206. /package/dist/module/{utils.js → src/utils.js} +0 -0
  207. /package/dist/module/{web.html.js → src/web.html.js} +0 -0
  208. /package/dist/types/{Init.d.ts → src/Init.d.ts} +0 -0
  209. /package/dist/types/{Node.d.ts → src/Node.d.ts} +0 -0
  210. /package/dist/types/{PM → src/PM}/node.d.ts +0 -0
  211. /package/dist/types/{PM → src/PM}/web.d.ts +0 -0
  212. /package/dist/types/{Puppeteer.d.ts → src/Puppeteer.d.ts} +0 -0
  213. /package/dist/types/{SubPackages → src/SubPackages}/puppeteer.d.ts +0 -0
  214. /package/dist/types/{SubPackages → src/SubPackages}/react/component/node.d.ts +0 -0
  215. /package/dist/types/{SubPackages → src/SubPackages}/react/component/web.d.ts +0 -0
  216. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/index.d.ts +0 -0
  217. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/node.d.ts +0 -0
  218. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/web.d.ts +0 -0
  219. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/component/node.d.ts +0 -0
  220. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/component/web.d.ts +0 -0
  221. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/index.d.ts +0 -0
  222. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/node.d.ts +0 -0
  223. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/web.d.ts +0 -0
  224. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.d.ts +0 -0
  225. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/index.d.ts +0 -0
  226. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.d.ts +0 -0
  227. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/node.d.ts +0 -0
  228. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/web.d.ts +0 -0
  229. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.d.ts +0 -0
  230. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.d.ts +0 -0
  231. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.d.ts +0 -0
  232. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.d.ts +0 -0
  233. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.d.ts +0 -0
  234. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.d.ts +0 -0
  235. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.d.ts +0 -0
  236. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.d.ts +0 -0
  237. /package/dist/types/{Web.d.ts → src/Web.d.ts} +0 -0
  238. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/features.d.ts +0 -0
  239. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/index.d.ts +0 -0
  240. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.d.ts +0 -0
  241. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/node.d.ts +0 -0
  242. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/report.d.ts +0 -0
  243. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/tests.d.ts +0 -0
  244. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/web.d.ts +0 -0
  245. /package/dist/types/{lib → src/lib}/basebuilder.d.ts +0 -0
  246. /package/dist/types/{lib → src/lib}/classBuilder.d.ts +0 -0
  247. /package/dist/types/{lib → src/lib}/core.d.ts +0 -0
  248. /package/dist/types/{lib → src/lib}/index.d.ts +0 -0
  249. /package/dist/types/{lib → src/lib}/types.d.ts +0 -0
  250. /package/dist/types/{puppeteerConfiger.d.ts → src/puppeteerConfiger.d.ts} +0 -0
  251. /package/dist/types/{utils.d.ts → src/utils.d.ts} +0 -0
  252. /package/dist/types/{web.html.d.ts → src/web.html.d.ts} +0 -0
package/src/PM/main.ts CHANGED
@@ -17,18 +17,18 @@ const files: Record<string, Set<string>> = {}; // = new Set<string>();
17
17
  const screenshots: Record<string, Promise<Uint8Array>[]> = {};
18
18
 
19
19
  export class PM_Main extends PM {
20
- customScreenShot(opts: object) {
21
- throw new Error("Method not implemented.");
22
- }
20
+ shutdownMode = false;
23
21
  configs: IBuiltConfig;
24
22
  ports: Record<number, boolean>;
25
23
  queue: any[];
24
+ registry: Record<string, boolean>;
26
25
 
27
26
  constructor(configs: IBuiltConfig) {
28
27
  super();
29
28
  this.server = {};
30
29
  this.configs = configs;
31
30
  this.ports = {};
31
+ this.registry = {};
32
32
  this.configs.ports.forEach((element) => {
33
33
  this.ports[element] = "true"; // set ports as open
34
34
  });
@@ -47,7 +47,7 @@ export class PM_Main extends PM {
47
47
  contents: string,
48
48
  testName: string
49
49
  ) => {
50
- console.log("globalThis-writeFileSync", filepath);
50
+ // console.log("globalThis-writeFileSync", filepath);
51
51
 
52
52
  // Create directories if they don't exist
53
53
  const dir = path.dirname(filepath.split("/").slice(0, -1).join("/"));
@@ -88,18 +88,6 @@ export class PM_Main extends PM {
88
88
  opts: { path: string },
89
89
  page: Page
90
90
  ) => {
91
- // // fileStreams3[uid].write(contents);
92
- // // console.log("asd", opts.path.split("/").slice(0, -1).join("/"));
93
-
94
- // // const dir = path.dirname(opts.path.split("/").slice(0, -1).join("/"));
95
- // // console.log("dir", dir);
96
- // fs.mkdirSync(opts.path.split("/").slice(0, -1).join("/"), {
97
- // recursive: true,
98
- // });
99
-
100
- // return page.screenshot(opts);
101
-
102
- console.log("main.ts node custom-screenshot", page);
103
91
  const p = opts.path as string;
104
92
  const dir = path.dirname(p);
105
93
  fs.mkdirSync(dir, {
@@ -134,41 +122,53 @@ export class PM_Main extends PM {
134
122
  JSON.stringify(Array.from(files[testName]))
135
123
  );
136
124
  delete files[testName];
137
- // globalThis["writeFileSync"](
138
- // p + "/manifest.json",
139
- // // files.entries()
140
- // JSON.stringify(Array.from(files[testName]))
141
- // );
142
-
143
- // fileStreams3[uid].end();
144
125
  };
145
- // page.exposeFunction("customclose", () => {
146
- // console.log("closing doneFileStream2", doneFileStream2);
147
- // // console.log("closing doneFileStream2", doneFileStream2);
148
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
149
- // page.close();
150
- // });
151
-
152
- // // page.close();
153
- // // Promise.all(screenshots).then(() => {
154
- // // page.close();
155
- // // });
156
- // // setTimeout(() => {
157
- // // console.log("Delayed for 1 second.");
158
- // // page.close();
159
- // // }, 5000);
160
-
161
- // // return page.close();
162
- // });
126
+ }
127
+
128
+ shutDown() {
129
+ console.log("shutting down...");
130
+ this.shutdownMode = true;
131
+ this.checkForShutdown();
132
+ }
133
+
134
+ customScreenShot(opts: object) {
135
+ throw new Error("Method not implemented.");
163
136
  }
164
137
 
165
138
  async startPuppeteer(options: any, destfolder: string): Promise<any> {
166
- this.browser = await puppeteer.launch(options);
139
+ this.browser = (await puppeteer.launch(options)) as any;
167
140
  return this.browser;
168
141
  }
169
142
 
143
+ checkForShutdown = () => {
144
+ const anyRunning: boolean =
145
+ Object.values(this.registry).filter((x) => x === false).length > 0;
146
+ if (anyRunning) {
147
+ } else {
148
+ this.browser.disconnect().then(() => {
149
+ console.log("Goodbye");
150
+ process.exit();
151
+ });
152
+ }
153
+ };
154
+
155
+ register = (src: string) => {
156
+ // console.log("register", src);
157
+ this.registry[src] = false;
158
+ };
159
+
160
+ deregister = (src: string) => {
161
+ // console.log("deregister", src, this.shutdownMode);
162
+ this.registry[src] = true;
163
+
164
+ if (this.shutdownMode) {
165
+ this.checkForShutdown();
166
+ }
167
+ };
168
+
170
169
  launchNode = async (src: string, dest: string) => {
171
170
  console.log("launchNode", src);
171
+ this.register(src);
172
172
 
173
173
  const destFolder = dest.replace(".mjs", "");
174
174
 
@@ -197,7 +197,7 @@ export class PM_Main extends PM {
197
197
  const openPorts = Object.entries(this.ports).filter(
198
198
  ([portnumber, portopen]) => portopen
199
199
  );
200
- console.log("openPorts", openPorts);
200
+
201
201
  if (openPorts.length >= testConfigResource.ports) {
202
202
  for (let i = 0; i < testConfigResource.ports; i++) {
203
203
  portsToUse.push(openPorts[i][0]);
@@ -250,18 +250,16 @@ export class PM_Main extends PM {
250
250
  return module.default.then((defaultModule) => {
251
251
  defaultModule
252
252
  .receiveTestResourceConfig(argz)
253
- .then((x) => {
254
- console.log("then", x);
255
-
256
- return x;
257
- })
258
253
  .catch((e) => {
259
254
  console.log("catch", e);
255
+ })
256
+ .finally(() => {
257
+ this.deregister(src);
260
258
  });
261
259
  });
262
260
  });
263
261
 
264
- console.log("portsToUse", portsToUse);
262
+ // console.log("portsToUse", portsToUse);
265
263
  for (let i = 0; i <= portsToUse.length; i++) {
266
264
  if (portsToUse[i]) {
267
265
  this.ports[portsToUse[i]] = "true"; //port is open again
@@ -306,7 +304,7 @@ export class PM_Main extends PM {
306
304
  page.exposeFunction(
307
305
  "custom-screenshot",
308
306
  async (ssOpts: ScreenshotOptions, testName: string) => {
309
- console.log("main.ts browser custom-screenshot", testName);
307
+ // console.log("main.ts browser custom-screenshot", testName);
310
308
  const p = ssOpts.path as string;
311
309
  const dir = path.dirname(p);
312
310
  fs.mkdirSync(dir, {
@@ -411,7 +409,7 @@ export class PM_Main extends PM {
411
409
 
412
410
  Promise.all(screenshots[testName] || []).then(() => {
413
411
  delete screenshots[testName];
414
- page.close();
412
+ // page.close();
415
413
  });
416
414
 
417
415
  // globalThis["writeFileSync"](
@@ -455,7 +453,6 @@ export class PM_Main extends PM {
455
453
  });
456
454
  };
457
455
 
458
- // launchNodeSideCar = async (src: string, dest: string) => {};
459
456
  launchNodeSideCar = async (
460
457
  src: string,
461
458
  dest: string,
@@ -491,7 +488,7 @@ export class PM_Main extends PM {
491
488
  const openPorts = Object.entries(this.ports).filter(
492
489
  ([portnumber, portopen]) => portopen
493
490
  );
494
- console.log("openPorts", openPorts);
491
+ // console.log("openPorts", openPorts);
495
492
  if (openPorts.length >= testConfigResource.ports) {
496
493
  for (let i = 0; i < testConfigResource.ports; i++) {
497
494
  portsToUse.push(openPorts[i][0]);
@@ -526,7 +523,7 @@ export class PM_Main extends PM {
526
523
  `${builtfile}?cacheBust=${Date.now()}`
527
524
  ).then((module) => {
528
525
  return module.default.then((defaultModule) => {
529
- console.log("defaultModule", defaultModule);
526
+ // console.log("defaultModule", defaultModule);
530
527
  const s = new defaultModule();
531
528
  s.receiveTestResourceConfig(argz);
532
529
  // Object.create(defaultModule);
@@ -543,7 +540,7 @@ export class PM_Main extends PM {
543
540
  });
544
541
  });
545
542
 
546
- console.log("portsToUse", portsToUse);
543
+ // console.log("portsToUse", portsToUse);
547
544
  for (let i = 0; i <= portsToUse.length; i++) {
548
545
  if (portsToUse[i]) {
549
546
  this.ports[portsToUse[i]] = "true"; //port is open again
@@ -553,6 +550,7 @@ export class PM_Main extends PM {
553
550
 
554
551
  launchWeb = (t: string, dest: string, sidecars: ITestTypes[]) => {
555
552
  console.log("launchWeb", t, dest);
553
+ this.register(t);
556
554
 
557
555
  sidecars.map((sidecar) => {
558
556
  if (sidecar[1] === "node") {
@@ -599,7 +597,7 @@ export class PM_Main extends PM {
599
597
  page.exposeFunction(
600
598
  "customScreenShot",
601
599
  async (ssOpts: ScreenshotOptions, testName: string) => {
602
- console.log("main.ts browser custom-screenshot", testName);
600
+ // console.log("main.ts browser custom-screenshot", testName);
603
601
  const p = ssOpts.path as string;
604
602
  const dir = path.dirname(p);
605
603
  fs.mkdirSync(dir, {
@@ -696,7 +694,7 @@ export class PM_Main extends PM {
696
694
  });
697
695
 
698
696
  page.exposeFunction("customclose", (p: string, testName: string) => {
699
- console.log("\t closing", p);
697
+ // console.log("closing", p);
700
698
 
701
699
  fs.writeFileSync(
702
700
  p + "/manifest.json",
@@ -704,9 +702,12 @@ export class PM_Main extends PM {
704
702
  );
705
703
  delete files[testName];
706
704
 
705
+ // console.log("screenshots[testName]", screenshots[testName]);
707
706
  Promise.all(screenshots[testName] || []).then(() => {
708
707
  delete screenshots[testName];
709
- page.close();
708
+ // page.close();
709
+ // console.log("\t GOODBYE");
710
+ // whyIsNodeRunning();
710
711
  });
711
712
 
712
713
  // globalThis["writeFileSync"](
@@ -740,9 +741,18 @@ export class PM_Main extends PM {
740
741
  );
741
742
  await page.goto(`file://${`${dest}.html`}`, {});
742
743
 
743
- page.evaluate(evaluation).finally(() => {
744
- console.log("evaluation failed.", dest);
745
- });
744
+ page
745
+ .evaluate(evaluation)
746
+ .catch((e) => {
747
+ console.log("evaluation failed.", dest);
748
+ console.log(e);
749
+ })
750
+ .finally(() => {
751
+ console.log("evaluation complete.", dest);
752
+ // page.close();
753
+ this.deregister(t);
754
+ // whyIsNodeRunning();
755
+ });
746
756
 
747
757
  return page;
748
758
  });
package/src/PM/node.ts CHANGED
@@ -42,7 +42,7 @@ export class PM_Node extends PM {
42
42
  }
43
43
 
44
44
  writeFileSync(filepath: string, contents: string) {
45
- console.log("pm_node-writeFileSync", this.testResourceConfiguration);
45
+ // console.log("pm_node-writeFileSync", this.testResourceConfiguration);
46
46
  return globalThis["writeFileSync"](
47
47
  this.testResourceConfiguration.fs + "/" + filepath,
48
48
  contents,
package/src/Project.ts CHANGED
@@ -9,58 +9,30 @@ import esbuildWebConfiger from "./esbuildConfigs/web.js";
9
9
  import webHtmlFrame from "./web.html.js";
10
10
  import { ITestTypes, IBaseConfig, IRunTime } from "./lib/types.js";
11
11
 
12
- var mode: "DEV" | "PROD" = process.argv[2] === "-dev" ? "DEV" : "PROD";
12
+ // var mode: "DEV" | "PROD" = process.argv[2] === "-dev" ? "DEV" : "PROD";
13
13
 
14
14
  readline.emitKeypressEvents(process.stdin);
15
15
  if (process.stdin.isTTY) process.stdin.setRawMode(true);
16
16
 
17
- process.stdin.on("keypress", (str, key) => {
18
- if (key.name === "q") {
19
- console.log("Testeranto-EsBuild is shutting down...");
20
- mode = "PROD";
21
- onDone();
22
- }
23
- });
24
-
25
- let nodeDone,
26
- webDone = false;
27
-
28
- const onNodeDone = () => {
29
- nodeDone = true;
30
- onDone();
31
- };
32
- const onWebDone = () => {
33
- webDone = true;
34
- onDone();
35
- };
36
-
37
- const onDone = () => {
38
- console.log(
39
- JSON.stringify(
40
- {
41
- nodeDone,
42
- webDone,
43
- mode,
44
- },
45
- null,
46
- 2
47
- )
48
- );
49
- if (nodeDone && webDone && mode === "PROD") {
50
- console.log("Testeranto-EsBuild is all done. Goodbye!");
51
- process.exit();
52
- } else {
53
- console.log("Testeranto-EsBuild is still working...");
54
- }
55
- };
56
-
57
17
  export class ITProject {
58
18
  config: IBaseConfig;
59
- mode: `up` | `down` = `up`;
19
+ mode: `DEV` | `PROD`;
20
+ nodeDone: boolean = false;
21
+ webDone: boolean = false;
60
22
 
61
23
  constructor(configs: IBaseConfig) {
62
24
  this.config = configs;
63
25
 
26
+ this.mode = this.config.devMode ? "DEV" : "PROD";
27
+
28
+ process.stdin.on("keypress", (str, key) => {
29
+ if (key.name === "q") {
30
+ console.log("Testeranto-EsBuild is shutting down...");
31
+ this.mode = "PROD";
32
+ this.onDone();
33
+ }
34
+ });
35
+
64
36
  fs.writeFileSync(
65
37
  `${this.config.outdir}/testeranto.json`,
66
38
  JSON.stringify(
@@ -124,13 +96,13 @@ export class ITProject {
124
96
  esbuild
125
97
  .context(esbuildNodeConfiger(this.config, nodeEntryPoints))
126
98
  .then(async (nodeContext) => {
127
- if (mode == "DEV") {
99
+ if (this.config.devMode) {
128
100
  await nodeContext.watch().then((v) => {
129
- onNodeDone();
101
+ this.onNodeDone();
130
102
  });
131
103
  } else {
132
104
  nodeContext.rebuild().then((v) => {
133
- onNodeDone();
105
+ this.onNodeDone();
134
106
  });
135
107
  }
136
108
 
@@ -139,13 +111,13 @@ export class ITProject {
139
111
  esbuild
140
112
  .context(esbuildWebConfiger(this.config, webEntryPoints))
141
113
  .then(async (webContext) => {
142
- if (mode == "DEV") {
114
+ if (this.config.devMode) {
143
115
  await webContext.watch().then((v) => {
144
- onWebDone();
116
+ this.onWebDone();
145
117
  });
146
118
  } else {
147
119
  webContext.rebuild().then((v) => {
148
- onWebDone();
120
+ this.onWebDone();
149
121
  });
150
122
  }
151
123
  return webContext;
@@ -153,6 +125,41 @@ export class ITProject {
153
125
  ]);
154
126
  }
155
127
 
128
+ onNodeDone = () => {
129
+ this.nodeDone = true;
130
+ this.onDone();
131
+ };
132
+ onWebDone = () => {
133
+ this.webDone = true;
134
+ this.onDone();
135
+ };
136
+
137
+ onDone = () => {
138
+ // console.log(this.nodeDone && this.webDone && this.mode === "PROD");
139
+ if (this.nodeDone && this.webDone && this.mode === "PROD") {
140
+ console.log("Testeranto-EsBuild is all done. Goodbye!");
141
+ process.exit();
142
+ } else {
143
+ if (this.mode === "PROD") {
144
+ console.log("waiting for tests to finish");
145
+ console.log(
146
+ JSON.stringify(
147
+ {
148
+ nodeDone: this.nodeDone,
149
+ webDone: this.webDone,
150
+ mode: this.mode,
151
+ },
152
+ null,
153
+ 2
154
+ )
155
+ );
156
+ } else {
157
+ console.log("waiting for tests to change");
158
+ }
159
+ console.log("press 'q' to quit");
160
+ }
161
+ };
162
+
156
163
  public getSecondaryEndpointsPoints(runtime?: IRunTime): string[] {
157
164
  const meta = (ts: ITestTypes[], st: Set<string>): Set<string> => {
158
165
  ts.forEach((t) => {
package/src/Puppeteer.ts CHANGED
@@ -4,27 +4,22 @@ import watch from "recursive-watch";
4
4
 
5
5
  import { PM_Main } from "./PM/main.js";
6
6
  import { destinationOfRuntime } from "./utils.js";
7
+ import { timeout } from "puppeteer-core/lib/esm/puppeteer/index.js";
8
+ import { IBaseConfig, IBuiltConfig } from "./lib/types.js";
7
9
 
8
- var mode: "DEV" | "PROD" = process.argv[2] === "-dev" ? "DEV" : "PROD";
10
+ // var mode: "DEV" | "PROD" = process.argv[2] === "-dev" ? "DEV" : "PROD";
9
11
 
10
- const node2web: Record<string, string[]> = {};
11
- const web2node: Record<string, string[]> = {};
12
- const childProcesses: Record<string, "loaded" | "running" | "done"> = {};
12
+ // const node2web: Record<string, string[]> = {};
13
+ // const web2node: Record<string, string[]> = {};
14
+ // const childProcesses: Record<string, "loaded" | "running" | "done"> = {};
13
15
 
14
16
  readline.emitKeypressEvents(process.stdin);
15
17
  if (process.stdin.isTTY) process.stdin.setRawMode(true);
16
18
 
17
- console.log("hello Puppeteer", process.env);
18
-
19
- console.log("\n Puppeteer is running. Press 'q' to quit\n");
20
- process.stdin.on("keypress", (str, key) => {
21
- if (key.name === "q") {
22
- process.exit();
23
- }
24
- });
19
+ // let shutDownMode = false;
25
20
 
26
21
  export default async (partialConfig) => {
27
- const config = {
22
+ const config: IBuiltConfig = {
28
23
  ...partialConfig,
29
24
  buildDir: process.cwd() + "/" + partialConfig.outdir,
30
25
  };
@@ -45,17 +40,23 @@ export default async (partialConfig) => {
45
40
 
46
41
  await pm.startPuppeteer(
47
42
  {
43
+ // timeout: 1,
48
44
  waitForInitialPage: false,
49
- executablePath: process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium", //"/opt/homebrew/bin/chromium",
45
+ executablePath:
46
+ // process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium",
47
+ "/opt/homebrew/bin/chromium",
50
48
  headless: true,
51
- // dumpio: true,
49
+ dumpio: true,
50
+ // timeout: 0,
52
51
  args: [
52
+ // "--auto-open-devtools-for-tabs",
53
+
53
54
  "--disable-features=IsolateOrigins,site-per-process",
54
55
  "--disable-site-isolation-trials",
55
56
  "--allow-insecure-localhost",
56
57
  "--allow-file-access-from-files",
57
58
  "--allow-running-insecure-content",
58
- // "--auto-open-devtools-for-tabs",
59
+
59
60
  "--disable-dev-shm-usage",
60
61
  "--disable-extensions",
61
62
  "--disable-gpu",
@@ -84,6 +85,14 @@ export default async (partialConfig) => {
84
85
  "."
85
86
  );
86
87
 
88
+ console.log("\n Puppeteer is running. Press 'q' to quit\n");
89
+ process.stdin.on("keypress", (str, key) => {
90
+ if (key.name === "q") {
91
+ pm.shutDown();
92
+ // process.exit();
93
+ }
94
+ });
95
+
87
96
  config.tests.forEach(([test, runtime, tr, sidecars]) => {
88
97
  if (runtime === "node") {
89
98
  pm.launchNode(test, destinationOfRuntime(test, "node", config));
@@ -94,43 +103,48 @@ export default async (partialConfig) => {
94
103
  }
95
104
  });
96
105
 
97
- console.log("ready and watching for changes...", config.buildDir);
98
-
99
- watch(config.buildDir, (eventType, changedFile) => {
100
- if (changedFile) {
101
- config.tests.forEach(([test, runtime, tr, sidecars]) => {
102
- if (eventType === "change" || eventType === "rename") {
103
- if (
104
- changedFile ===
105
- test
106
- .replace("./", "node/")
107
- .split(".")
108
- .slice(0, -1)
109
- .concat("mjs")
110
- .join(".")
111
- ) {
112
- pm.launchNode(test, destinationOfRuntime(test, "node", config));
113
- }
114
-
115
- if (
116
- changedFile ===
117
- test
118
- .replace("./", "web/")
119
- .split(".")
120
- .slice(0, -1)
121
- .concat("mjs")
122
- .join(".")
123
- ) {
124
- pm.launchWeb(
125
- test,
126
- destinationOfRuntime(test, "web", config),
127
- sidecars
128
- );
106
+ if (config.devMode) {
107
+ console.log("ready and watching for changes...", config.buildDir);
108
+
109
+ watch(config.buildDir, (eventType, changedFile) => {
110
+ if (changedFile) {
111
+ config.tests.forEach(([test, runtime, tr, sidecars]) => {
112
+ if (eventType === "change" || eventType === "rename") {
113
+ if (
114
+ changedFile ===
115
+ test
116
+ .replace("./", "node/")
117
+ .split(".")
118
+ .slice(0, -1)
119
+ .concat("mjs")
120
+ .join(".")
121
+ ) {
122
+ pm.launchNode(test, destinationOfRuntime(test, "node", config));
123
+ }
124
+
125
+ if (
126
+ changedFile ===
127
+ test
128
+ .replace("./", "web/")
129
+ .split(".")
130
+ .slice(0, -1)
131
+ .concat("mjs")
132
+ .join(".")
133
+ ) {
134
+ pm.launchWeb(
135
+ test,
136
+ destinationOfRuntime(test, "web", config),
137
+ sidecars
138
+ );
139
+ }
129
140
  }
130
- }
131
- });
132
- }
133
- });
141
+ });
142
+ }
143
+ });
144
+ } else {
145
+ pm.shutDown();
146
+ }
147
+ // pm.browser.close();
134
148
 
135
149
  // does not work on linux
136
150
  // fs.watch(