testeranto 0.146.1 → 0.146.4

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 (198) hide show
  1. package/README.md +3 -1
  2. package/dist/common/src/Node.js +9 -6
  3. package/dist/common/src/PM/PM_WithEslintAndTsc.js +75 -58
  4. package/dist/common/src/PM/main.js +131 -79
  5. package/dist/common/src/PM/node.js +1 -14
  6. package/dist/common/src/PM/nodeSidecar.js +0 -1
  7. package/dist/common/src/Pure.js +17 -1
  8. package/dist/common/src/Pure.test.js +172 -0
  9. package/dist/common/src/build.js +0 -1
  10. package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +22 -11
  11. package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +24 -0
  12. package/dist/common/src/esbuildConfigs/pure.js +2 -1
  13. package/dist/common/src/esbuildConfigs/rebuildPlugin.js +1 -4
  14. package/dist/common/src/lib/BaseSuite.js +89 -0
  15. package/dist/common/src/lib/BaseSuite.test/node.test.js +9 -0
  16. package/dist/common/src/lib/BaseSuite.test/pure.test.js +9 -0
  17. package/dist/common/src/lib/BaseSuite.test/test.js +232 -0
  18. package/dist/common/src/lib/BaseSuite.test/web.test.js +9 -0
  19. package/dist/common/src/lib/abstractBase.js +1 -90
  20. package/dist/common/src/lib/abstractBase.test/MockGiven.js +17 -0
  21. package/dist/common/src/lib/abstractBase.test/MockThen.js +13 -0
  22. package/dist/common/src/lib/abstractBase.test/MockWhen.js +13 -0
  23. package/dist/common/src/lib/abstractBase.test/implementation.js +42 -0
  24. package/dist/common/src/lib/abstractBase.test/index.js +17 -0
  25. package/dist/common/src/lib/abstractBase.test/interface.js +12 -0
  26. package/dist/common/src/lib/abstractBase.test/specification.js +19 -0
  27. package/dist/common/src/lib/abstractBase.test/types.js +2 -0
  28. package/dist/common/src/lib/baseBuilder.test/TestBaseBuilder.js +36 -0
  29. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +97 -0
  30. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.interface.js +17 -0
  31. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.node.js +11 -0
  32. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.pure.js +11 -0
  33. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +13 -0
  34. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.types.js +2 -0
  35. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.web.js +11 -0
  36. package/dist/common/src/lib/basebuilder.js +2 -1
  37. package/dist/common/src/lib/classBuilder.test/TestClassBuilder.js +41 -0
  38. package/dist/common/src/lib/classBuilder.test/classBuilder.test.implementation.js +182 -0
  39. package/dist/common/src/lib/classBuilder.test/classBuilder.test.interface.js +17 -0
  40. package/dist/common/src/lib/classBuilder.test/classBuilder.test.js +11 -0
  41. package/dist/common/src/lib/classBuilder.test/classBuilder.test.specification.js +41 -0
  42. package/dist/common/src/lib/classBuilder.test/classBuilder.test.types.js +2 -0
  43. package/dist/common/src/lib/core.js +4 -13
  44. package/dist/common/src/lib/core.test/MockCore.js +25 -0
  45. package/dist/common/src/lib/core.test/core.test.implementation.js +102 -0
  46. package/dist/common/src/lib/core.test/core.test.interface.js +18 -0
  47. package/dist/common/src/lib/core.test/core.test.js +17 -0
  48. package/dist/common/src/lib/core.test/core.test.specification.js +33 -0
  49. package/dist/common/src/lib/core.test/core.test.types.js +2 -0
  50. package/dist/common/src/lib/pmProxy.js +9 -166
  51. package/dist/common/src/lib/pmProxy.test/implementation.js +76 -0
  52. package/dist/common/src/lib/pmProxy.test/index.js +15 -0
  53. package/dist/common/src/lib/pmProxy.test/interface.js +37 -0
  54. package/dist/common/src/lib/pmProxy.test/mockPM.js +34 -0
  55. package/dist/common/src/lib/pmProxy.test/mockPMBase.js +115 -0
  56. package/dist/common/src/lib/pmProxy.test/specification.js +39 -0
  57. package/dist/common/src/lib/pmProxy.test/types.js +2 -0
  58. package/dist/common/src/run.js +6 -6
  59. package/dist/common/testeranto.config.js +33 -18
  60. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  61. package/dist/module/src/Node.js +9 -6
  62. package/dist/module/src/PM/PM_WithEslintAndTsc.js +75 -58
  63. package/dist/module/src/PM/main.js +131 -79
  64. package/dist/module/src/PM/node.js +1 -14
  65. package/dist/module/src/PM/nodeSidecar.js +0 -1
  66. package/dist/module/src/Pure.js +17 -1
  67. package/dist/module/src/Pure.test.js +167 -0
  68. package/dist/module/src/build.js +0 -1
  69. package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +19 -11
  70. package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +21 -0
  71. package/dist/module/src/esbuildConfigs/pure.js +2 -1
  72. package/dist/module/src/esbuildConfigs/rebuildPlugin.js +1 -4
  73. package/dist/module/src/lib/BaseSuite.js +85 -0
  74. package/dist/module/src/lib/BaseSuite.test/node.test.js +4 -0
  75. package/dist/module/src/lib/BaseSuite.test/pure.test.js +4 -0
  76. package/dist/module/src/lib/BaseSuite.test/test.js +227 -0
  77. package/dist/module/src/lib/BaseSuite.test/web.test.js +4 -0
  78. package/dist/module/src/lib/abstractBase.js +1 -89
  79. package/dist/module/src/lib/abstractBase.test/MockGiven.js +13 -0
  80. package/dist/module/src/lib/abstractBase.test/MockThen.js +9 -0
  81. package/dist/module/src/lib/abstractBase.test/MockWhen.js +9 -0
  82. package/dist/module/src/lib/abstractBase.test/implementation.js +39 -0
  83. package/dist/module/src/lib/abstractBase.test/index.js +12 -0
  84. package/dist/module/src/lib/abstractBase.test/interface.js +9 -0
  85. package/dist/module/src/lib/abstractBase.test/specification.js +15 -0
  86. package/dist/module/src/lib/abstractBase.test/types.js +1 -0
  87. package/dist/module/src/lib/baseBuilder.test/TestBaseBuilder.js +32 -0
  88. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +94 -0
  89. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.interface.js +14 -0
  90. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.node.js +6 -0
  91. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.pure.js +6 -0
  92. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +9 -0
  93. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.types.js +1 -0
  94. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.web.js +6 -0
  95. package/dist/module/src/lib/basebuilder.js +2 -1
  96. package/dist/module/src/lib/classBuilder.test/TestClassBuilder.js +37 -0
  97. package/dist/module/src/lib/classBuilder.test/classBuilder.test.implementation.js +179 -0
  98. package/dist/module/src/lib/classBuilder.test/classBuilder.test.interface.js +14 -0
  99. package/dist/module/src/lib/classBuilder.test/classBuilder.test.js +6 -0
  100. package/dist/module/src/lib/classBuilder.test/classBuilder.test.specification.js +37 -0
  101. package/dist/module/src/lib/classBuilder.test/classBuilder.test.types.js +1 -0
  102. package/dist/module/src/lib/core.js +3 -12
  103. package/dist/module/src/lib/core.test/MockCore.js +18 -0
  104. package/dist/module/src/lib/core.test/core.test.implementation.js +99 -0
  105. package/dist/module/src/lib/core.test/core.test.interface.js +15 -0
  106. package/dist/module/src/lib/core.test/core.test.js +12 -0
  107. package/dist/module/src/lib/core.test/core.test.specification.js +29 -0
  108. package/dist/module/src/lib/core.test/core.test.types.js +1 -0
  109. package/dist/module/src/lib/pmProxy.js +9 -166
  110. package/dist/module/src/lib/pmProxy.test/implementation.js +73 -0
  111. package/dist/module/src/lib/pmProxy.test/index.js +10 -0
  112. package/dist/module/src/lib/pmProxy.test/interface.js +34 -0
  113. package/dist/module/src/lib/pmProxy.test/mockPM.js +30 -0
  114. package/dist/module/src/lib/pmProxy.test/mockPMBase.js +111 -0
  115. package/dist/module/src/lib/pmProxy.test/specification.js +35 -0
  116. package/dist/module/src/lib/pmProxy.test/types.js +1 -0
  117. package/dist/module/src/run.js +6 -6
  118. package/dist/module/testeranto.config.js +33 -18
  119. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  120. package/dist/prebuild/Project.js +16 -15
  121. package/dist/prebuild/TestReport.js +14 -12
  122. package/dist/prebuild/build.mjs +34 -34
  123. package/dist/prebuild/run.mjs +259 -173
  124. package/dist/tsconfig.tsbuildinfo +1 -1
  125. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -1
  126. package/dist/types/src/PM/main.d.ts +5 -2
  127. package/dist/types/src/Pure.d.ts +2 -2
  128. package/dist/types/src/Pure.test.d.ts +36 -0
  129. package/dist/types/src/Types.d.ts +7 -6
  130. package/dist/types/src/Web.d.ts +1 -1
  131. package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +1 -1
  132. package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +2 -0
  133. package/dist/types/src/lib/BaseSuite.d.ts +39 -0
  134. package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +3 -0
  135. package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +3 -0
  136. package/dist/types/src/lib/BaseSuite.test/test.d.ts +42 -0
  137. package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +3 -0
  138. package/dist/types/src/lib/abstractBase.d.ts +1 -36
  139. package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +7 -0
  140. package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +6 -0
  141. package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +6 -0
  142. package/dist/types/src/lib/abstractBase.test/implementation.d.ts +3 -0
  143. package/dist/types/src/lib/abstractBase.test/index.d.ts +3 -0
  144. package/dist/types/src/lib/abstractBase.test/interface.d.ts +3 -0
  145. package/dist/types/src/lib/abstractBase.test/specification.d.ts +3 -0
  146. package/dist/types/src/lib/abstractBase.test/types.d.ts +39 -0
  147. package/dist/types/src/lib/baseBuilder.test/TestBaseBuilder.d.ts +15 -0
  148. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.implementation.d.ts +3 -0
  149. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.interface.d.ts +3 -0
  150. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.node.d.ts +3 -0
  151. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.pure.d.ts +3 -0
  152. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.specification.d.ts +3 -0
  153. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +20 -0
  154. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.web.d.ts +3 -0
  155. package/dist/types/src/lib/classBuilder.test/TestClassBuilder.d.ts +21 -0
  156. package/dist/types/src/lib/classBuilder.test/classBuilder.test.d.ts +3 -0
  157. package/dist/types/src/lib/classBuilder.test/classBuilder.test.implementation.d.ts +3 -0
  158. package/dist/types/src/lib/classBuilder.test/classBuilder.test.interface.d.ts +3 -0
  159. package/dist/types/src/lib/classBuilder.test/classBuilder.test.specification.d.ts +3 -0
  160. package/dist/types/src/lib/classBuilder.test/classBuilder.test.types.d.ts +56 -0
  161. package/dist/types/src/lib/core.d.ts +1 -1
  162. package/dist/types/src/lib/core.test/MockCore.d.ts +10 -0
  163. package/dist/types/src/lib/core.test/core.test.d.ts +3 -0
  164. package/dist/types/src/lib/core.test/core.test.implementation.d.ts +3 -0
  165. package/dist/types/src/lib/core.test/core.test.interface.d.ts +3 -0
  166. package/dist/types/src/lib/core.test/core.test.specification.d.ts +3 -0
  167. package/dist/types/src/lib/core.test/core.test.types.d.ts +46 -0
  168. package/dist/types/src/lib/index.d.ts +2 -1
  169. package/dist/types/src/lib/pmProxy.d.ts +11 -6
  170. package/dist/types/src/lib/pmProxy.test/implementation.d.ts +3 -0
  171. package/dist/types/src/lib/pmProxy.test/index.d.ts +7 -0
  172. package/dist/types/src/lib/pmProxy.test/interface.d.ts +3 -0
  173. package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +10 -0
  174. package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +39 -0
  175. package/dist/types/src/lib/pmProxy.test/specification.d.ts +3 -0
  176. package/dist/types/src/lib/pmProxy.test/types.d.ts +42 -0
  177. package/dist/types/src/lib/types.d.ts +2 -1
  178. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  179. package/docs.html +35 -33
  180. package/index.html +23 -30
  181. package/package.json +3 -2
  182. package/testeranto/index.html +1 -1
  183. package/testeranto/reports/allTests/index.html +1 -1
  184. package/testeranto/reports/allTests/src/Pure.test/pure/index.html +1 -1
  185. package/testeranto/reports/allTests/src/Pure.test/pure/logs.txt +2 -2
  186. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/index.html +1 -1
  187. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/index.html +1 -1
  188. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/logs.txt +2 -2
  189. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/index.html +1 -1
  190. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/index.html +1 -1
  191. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/index.html +1 -1
  192. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/index.html +1 -1
  193. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/index.html +1 -1
  194. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/index.html +1 -1
  195. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/index.html +1 -1
  196. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +3 -3
  197. package/testeranto.config.ts +1 -1
  198. package/tsc.log +36 -38
@@ -15,37 +15,37 @@ import crypto from "node:crypto";
15
15
 
16
16
  // src/utils.ts
17
17
  import path from "path";
18
- var tscPather = (entryPoint, platform, projectName) => {
18
+ var tscPather = (entryPoint, platform, projectName2) => {
19
19
  return path.join(
20
20
  "testeranto",
21
21
  "reports",
22
- projectName,
22
+ projectName2,
23
23
  entryPoint.split(".").slice(0, -1).join("."),
24
24
  platform,
25
25
  `type_errors.txt`
26
26
  );
27
27
  };
28
- var lintPather = (entryPoint, platform, projectName) => {
28
+ var lintPather = (entryPoint, platform, projectName2) => {
29
29
  return path.join(
30
30
  "testeranto",
31
31
  "reports",
32
- projectName,
32
+ projectName2,
33
33
  entryPoint.split(".").slice(0, -1).join("."),
34
34
  platform,
35
35
  `lint_errors.json`
36
36
  );
37
37
  };
38
- var promptPather = (entryPoint, platform, projectName) => {
38
+ var promptPather = (entryPoint, platform, projectName2) => {
39
39
  return path.join(
40
40
  "testeranto",
41
41
  "reports",
42
- projectName,
42
+ projectName2,
43
43
  entryPoint.split(".").slice(0, -1).join("."),
44
44
  platform,
45
45
  `prompt.txt`
46
46
  );
47
47
  };
48
- var getRunnables = (tests, projectName, payload = {
48
+ var getRunnables = (tests, projectName2, payload = {
49
49
  nodeEntryPoints: {},
50
50
  nodeEntryPointSidecars: {},
51
51
  webEntryPoints: {},
@@ -56,30 +56,30 @@ var getRunnables = (tests, projectName, payload = {
56
56
  return tests.reduce((pt, cv, cndx, cry) => {
57
57
  if (cv[1] === "node") {
58
58
  pt.nodeEntryPoints[cv[0]] = path.resolve(
59
- `./testeranto/bundles/node/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
59
+ `./testeranto/bundles/node/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
60
60
  );
61
61
  } else if (cv[1] === "web") {
62
62
  pt.webEntryPoints[cv[0]] = path.resolve(
63
- `./testeranto/bundles/web/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
63
+ `./testeranto/bundles/web/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
64
64
  );
65
65
  } else if (cv[1] === "pure") {
66
66
  pt.pureEntryPoints[cv[0]] = path.resolve(
67
- `./testeranto/bundles/pure/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
67
+ `./testeranto/bundles/pure/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
68
68
  );
69
69
  }
70
70
  cv[3].filter((t) => t[1] === "node").forEach((t) => {
71
71
  pt.nodeEntryPointSidecars[`${t[0]}`] = path.resolve(
72
- `./testeranto/bundles/node/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
72
+ `./testeranto/bundles/node/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
73
73
  );
74
74
  });
75
75
  cv[3].filter((t) => t[1] === "web").forEach((t) => {
76
76
  pt.webEntryPointSidecars[`${t[0]}`] = path.resolve(
77
- `./testeranto/bundles/web/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
77
+ `./testeranto/bundles/web/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
78
78
  );
79
79
  });
80
80
  cv[3].filter((t) => t[1] === "pure").forEach((t) => {
81
81
  pt.pureEntryPointSidecars[`${t[0]}`] = path.resolve(
82
- `./testeranto/bundles/pure/${projectName}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
82
+ `./testeranto/bundles/pure/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
83
83
  );
84
84
  });
85
85
  return pt;
@@ -185,37 +185,37 @@ var PM_Base = class {
185
185
  return p.mainFrame()._id;
186
186
  });
187
187
  }
188
- async screencast(ssOpts, testName2, page) {
188
+ async screencast(ssOpts, testName, page) {
189
189
  const p = ssOpts.path;
190
190
  const dir = path2.dirname(p);
191
191
  fs.mkdirSync(dir, {
192
192
  recursive: true
193
193
  });
194
- if (!files[testName2]) {
195
- files[testName2] = /* @__PURE__ */ new Set();
194
+ if (!files[testName]) {
195
+ files[testName] = /* @__PURE__ */ new Set();
196
196
  }
197
- files[testName2].add(ssOpts.path);
197
+ files[testName].add(ssOpts.path);
198
198
  const sPromise = page.screenshot({
199
199
  ...ssOpts,
200
200
  path: p
201
201
  });
202
- if (!screenshots[testName2]) {
203
- screenshots[testName2] = [];
202
+ if (!screenshots[testName]) {
203
+ screenshots[testName] = [];
204
204
  }
205
- screenshots[testName2].push(sPromise);
205
+ screenshots[testName].push(sPromise);
206
206
  await sPromise;
207
207
  return sPromise;
208
208
  }
209
- async customScreenShot(ssOpts, testName2, pageUid) {
209
+ async customScreenShot(ssOpts, testName, pageUid) {
210
210
  const p = ssOpts.path;
211
211
  const dir = path2.dirname(p);
212
212
  fs.mkdirSync(dir, {
213
213
  recursive: true
214
214
  });
215
- if (!files[testName2]) {
216
- files[testName2] = /* @__PURE__ */ new Set();
215
+ if (!files[testName]) {
216
+ files[testName] = /* @__PURE__ */ new Set();
217
217
  }
218
- files[testName2].add(ssOpts.path);
218
+ files[testName].add(ssOpts.path);
219
219
  const page = (await this.browser.pages()).find(
220
220
  (p2) => p2.mainFrame()._id === pageUid
221
221
  );
@@ -223,10 +223,10 @@ var PM_Base = class {
223
223
  ...ssOpts,
224
224
  path: p
225
225
  });
226
- if (!screenshots[testName2]) {
227
- screenshots[testName2] = [];
226
+ if (!screenshots[testName]) {
227
+ screenshots[testName] = [];
228
228
  }
229
- screenshots[testName2].push(sPromise);
229
+ screenshots[testName].push(sPromise);
230
230
  await sPromise;
231
231
  return sPromise;
232
232
  }
@@ -245,20 +245,20 @@ var PM_Base = class {
245
245
  }
246
246
  return false;
247
247
  }
248
- async writeFileSync(filepath, contents, testName2) {
248
+ async writeFileSync(filepath, contents, testName) {
249
249
  return new Promise(async (res) => {
250
250
  fs.mkdirSync(path2.dirname(filepath), {
251
251
  recursive: true
252
252
  });
253
- if (!files[testName2]) {
254
- files[testName2] = /* @__PURE__ */ new Set();
253
+ if (!files[testName]) {
254
+ files[testName] = /* @__PURE__ */ new Set();
255
255
  }
256
- files[testName2].add(filepath);
256
+ files[testName].add(filepath);
257
257
  await fs.writeFileSync(filepath, contents);
258
258
  res(true);
259
259
  });
260
260
  }
261
- async createWriteStream(filepath, testName2) {
261
+ async createWriteStream(filepath, testName) {
262
262
  const folder = filepath.split("/").slice(0, -1).join("/");
263
263
  return new Promise((res) => {
264
264
  if (!fs.existsSync(folder)) {
@@ -268,10 +268,10 @@ var PM_Base = class {
268
268
  }
269
269
  const f = fs.createWriteStream(filepath);
270
270
  fileStreams3.push(f);
271
- if (!files[testName2]) {
272
- files[testName2] = /* @__PURE__ */ new Set();
271
+ if (!files[testName]) {
272
+ files[testName] = /* @__PURE__ */ new Set();
273
273
  }
274
- files[testName2].add(filepath);
274
+ files[testName].add(filepath);
275
275
  res(fileStreams3.length - 1);
276
276
  });
277
277
  }
@@ -400,7 +400,15 @@ var PM_WithEslintAndTsc = class extends PM_Base {
400
400
  platform
401
401
  }) => {
402
402
  console.log(ansiC.green(ansiC.inverse(`tsc < ${entrypoint}`)));
403
- this.typeCheckIsRunning(entrypoint);
403
+ try {
404
+ this.typeCheckIsRunning(entrypoint);
405
+ } catch (e) {
406
+ console.error("error in tscCheck");
407
+ console.error(e);
408
+ console.error(entrypoint);
409
+ console.error(JSON.stringify(this.summary, null, 2));
410
+ process.exit(-1);
411
+ }
404
412
  const program = tsc.createProgramFromConfig({
405
413
  basePath: process.cwd(),
406
414
  // always required, used for relative paths
@@ -444,7 +452,15 @@ var PM_WithEslintAndTsc = class extends PM_Base {
444
452
  };
445
453
  this.eslintCheck = async (entrypoint, platform, addableFiles) => {
446
454
  console.log(ansiC.green(ansiC.inverse(`eslint < ${entrypoint}`)));
447
- this.lintIsRunning(entrypoint);
455
+ try {
456
+ this.lintIsRunning(entrypoint);
457
+ } catch (e) {
458
+ console.error("error in eslintCheck");
459
+ console.error(e);
460
+ console.error(entrypoint);
461
+ console.error(JSON.stringify(this.summary, null, 2));
462
+ process.exit(-1);
463
+ }
448
464
  const results = (await eslint.lintFiles(addableFiles)).filter((r) => r.messages.length).filter((r) => {
449
465
  return r.messages[0].ruleId !== null;
450
466
  }).map((r) => {
@@ -482,7 +498,7 @@ var PM_WithEslintAndTsc = class extends PM_Base {
482
498
  this.name,
483
499
  entryPoint.split(".").slice(0, -1).join("."),
484
500
  platform,
485
- `console_log.txt`
501
+ `logs.txt`
486
502
  );
487
503
  const lintPath = path3.join(
488
504
  "testeranto",
@@ -529,28 +545,60 @@ ${addableFiles.map((x) => {
529
545
  this.checkForShutdown();
530
546
  };
531
547
  this.typeCheckIsRunning = (src) => {
548
+ if (!this.summary[src]) {
549
+ throw `this.summary[${src}] is undefined`;
550
+ }
532
551
  this.summary[src].typeErrors = "?";
533
552
  };
534
553
  this.typeCheckIsNowDone = (src, failures) => {
554
+ if (!this.summary[src]) {
555
+ throw `this.summary[${src}] is undefined`;
556
+ }
557
+ if (failures === 0) {
558
+ console.log(ansiC.green(ansiC.inverse(`tsc > ${src}`)));
559
+ } else {
560
+ console.log(
561
+ ansiC.red(ansiC.inverse(`tsc > ${src} failed ${failures} times`))
562
+ );
563
+ }
535
564
  this.summary[src].typeErrors = failures;
536
565
  this.writeBigBoard();
537
566
  this.checkForShutdown();
538
567
  };
539
568
  this.lintIsRunning = (src) => {
569
+ if (!this.summary[src]) {
570
+ throw `this.summary[${src}] is undefined`;
571
+ }
540
572
  this.summary[src].staticErrors = "?";
541
573
  this.writeBigBoard();
542
574
  };
543
575
  this.lintIsNowDone = (src, failures) => {
576
+ if (!this.summary[src]) {
577
+ throw `this.summary[${src}] is undefined`;
578
+ }
579
+ if (failures === 0) {
580
+ console.log(ansiC.green(ansiC.inverse(`eslint > ${src}`)));
581
+ } else {
582
+ console.log(
583
+ ansiC.red(ansiC.inverse(`eslint > ${src} failed ${failures} times`))
584
+ );
585
+ }
544
586
  this.summary[src].staticErrors = failures;
545
587
  this.writeBigBoard();
546
588
  this.checkForShutdown();
547
589
  };
548
590
  this.bddTestIsRunning = (src) => {
549
- this.summary[src].runTimeError = "?";
591
+ if (!this.summary[src]) {
592
+ throw `this.summary[${src}] is undefined`;
593
+ }
594
+ this.summary[src].runTimeErrors = "?";
550
595
  this.writeBigBoard();
551
596
  };
552
597
  this.bddTestIsNowDone = (src, failures) => {
553
- this.summary[src].runTimeError = failures;
598
+ if (!this.summary[src]) {
599
+ throw `this.summary[${src}] is undefined`;
600
+ }
601
+ this.summary[src].runTimeErrors = failures;
554
602
  this.writeBigBoard();
555
603
  this.checkForShutdown();
556
604
  };
@@ -560,68 +608,34 @@ ${addableFiles.map((x) => {
560
608
  JSON.stringify(this.summary, null, 2)
561
609
  );
562
610
  };
563
- this.checkForShutdown = () => {
564
- console.log(ansiC.inverse(`checkForShutdown`));
565
- this.writeBigBoard();
566
- if (this.mode === "dev")
567
- return;
568
- let inflight = false;
569
- Object.keys(this.summary).forEach((k) => {
570
- if (this.summary[k].prompt === "?") {
571
- console.log(ansiC.blue(ansiC.inverse(`\u{1F555} prompt ${k}`)));
572
- inflight = true;
573
- }
574
- });
575
- Object.keys(this.summary).forEach((k) => {
576
- if (this.summary[k].runTimeError === "?") {
577
- console.log(ansiC.blue(ansiC.inverse(`\u{1F555} runTimeError ${k}`)));
578
- inflight = true;
579
- }
580
- });
581
- Object.keys(this.summary).forEach((k) => {
582
- if (this.summary[k].staticErrors === "?") {
583
- console.log(ansiC.blue(ansiC.inverse(`\u{1F555} staticErrors ${k}`)));
584
- inflight = true;
585
- }
586
- });
587
- Object.keys(this.summary).forEach((k) => {
588
- if (this.summary[k].typeErrors === "?") {
589
- console.log(ansiC.blue(ansiC.inverse(`\u{1F555} typeErrors ${k}`)));
590
- inflight = true;
591
- }
592
- });
593
- this.writeBigBoard();
594
- if (!inflight) {
595
- this.browser.disconnect().then(() => {
596
- console.log(ansiC.inverse(`${this.name} has been tested. Goodbye.`));
597
- process.exit();
598
- });
599
- }
600
- };
601
611
  this.name = name;
602
612
  this.mode = mode2;
613
+ this.summary = {};
603
614
  this.configs.tests.forEach(([t, rt, tr, sidecars]) => {
604
- this.summary[t] = {
605
- runTimeError: "?",
606
- typeErrors: "?",
607
- staticErrors: "?",
608
- prompt: "?",
609
- failingFeatures: {}
610
- };
611
- sidecars.forEach(([t2]) => {
612
- this.summary[t2] = {
613
- // runTimeError: "?",
614
- typeErrors: "?",
615
- staticErrors: "?"
616
- // prompt: "?",
617
- // failingFeatures: {},
618
- };
615
+ this.ensureSummaryEntry(t);
616
+ sidecars.forEach(([sidecarName]) => {
617
+ this.ensureSummaryEntry(sidecarName, true);
619
618
  });
620
619
  });
621
620
  }
621
+ ensureSummaryEntry(src, isSidecar = false) {
622
+ if (!this.summary[src]) {
623
+ this.summary[src] = {
624
+ typeErrors: void 0,
625
+ staticErrors: void 0,
626
+ runTimeErrors: void 0,
627
+ prompt: void 0,
628
+ failingFeatures: {}
629
+ };
630
+ if (isSidecar) {
631
+ }
632
+ }
633
+ return this.summary[src];
634
+ }
622
635
  };
623
636
 
624
637
  // src/PM/main.ts
638
+ import ansiColors from "ansi-colors";
625
639
  var changes = {};
626
640
  var fileHashes = {};
627
641
  var files2 = {};
@@ -642,13 +656,15 @@ async function fileHash(filePath, algorithm = "md5") {
642
656
  });
643
657
  });
644
658
  }
645
- var statusMessagePretty = (failures, test) => {
659
+ var statusMessagePretty = (failures, test, runtime) => {
646
660
  if (failures === 0) {
647
661
  console.log(
648
- ansiC2.green(ansiC2.inverse(`> ${test} completed successfully?!?`))
662
+ ansiC2.green(ansiC2.inverse(`${runtime} > ${test} completed successfully`))
649
663
  );
650
664
  } else {
651
- console.log(ansiC2.red(ansiC2.inverse(`> ${test} failed ${failures} times`)));
665
+ console.log(
666
+ ansiC2.red(ansiC2.inverse(`${runtime} > ${test} failed ${failures} times`))
667
+ );
652
668
  }
653
669
  };
654
670
  async function writeFileAndCreateDir(filePath, data) {
@@ -689,7 +705,7 @@ async function pollForFile(path5, timeout = 2e3) {
689
705
  var PM_Main = class extends PM_WithEslintAndTsc {
690
706
  constructor(configs, name, mode2) {
691
707
  super(configs, name, mode2);
692
- this.getRunnables = (tests, testName2, payload = {
708
+ this.getRunnables = (tests, testName, payload = {
693
709
  nodeEntryPoints: {},
694
710
  nodeEntryPointSidecars: {},
695
711
  webEntryPoints: {},
@@ -697,10 +713,10 @@ var PM_Main = class extends PM_WithEslintAndTsc {
697
713
  pureEntryPoints: {},
698
714
  pureEntryPointSidecars: {}
699
715
  }) => {
700
- return getRunnables(tests, testName2, payload);
716
+ return getRunnables(tests, testName, payload);
701
717
  };
702
718
  this.launchPure = async (src, dest) => {
703
- console.log(ansiC2.green(ansiC2.inverse(`! pure, ${src}`)));
719
+ console.log(ansiC2.green(ansiC2.inverse(`pure < ${src}`)));
704
720
  this.bddTestIsRunning(src);
705
721
  const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/pure`;
706
722
  if (!fs3.existsSync(reportDest)) {
@@ -727,12 +743,12 @@ var PM_Main = class extends PM_WithEslintAndTsc {
727
743
  });
728
744
  } else if (testConfigResource.ports > 0) {
729
745
  const openPorts = Object.entries(this.ports).filter(
730
- ([portnumber, portopen]) => portopen
746
+ ([portnumber, status]) => status === ""
731
747
  );
732
748
  if (openPorts.length >= testConfigResource.ports) {
733
749
  for (let i = 0; i < testConfigResource.ports; i++) {
734
750
  portsToUse.push(openPorts[i][0]);
735
- this.ports[openPorts[i][0]] = false;
751
+ this.ports[openPorts[i][0]] = src;
736
752
  }
737
753
  argz = JSON.stringify({
738
754
  scheduled: true,
@@ -755,49 +771,45 @@ var PM_Main = class extends PM_WithEslintAndTsc {
755
771
  await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
756
772
  return module.default.then((defaultModule) => {
757
773
  defaultModule.receiveTestResourceConfig(argz).then(async (results) => {
758
- statusMessagePretty(results.fails, src);
774
+ statusMessagePretty(results.fails, src, "pure");
759
775
  this.bddTestIsNowDone(src, results.fails);
760
776
  }).catch((e) => {
761
777
  console.log(
762
- ansiC2.red(
763
- ansiC2.inverse(`launchPure - ${src} errored with: ${e}`)
764
- )
778
+ ansiC2.red(`launchPure - ${src} errored with: ${e}`)
765
779
  );
766
780
  this.bddTestIsNowDone(src, -1);
767
781
  });
768
782
  }).catch((e) => {
769
783
  console.log(
770
- ansiC2.red(
771
- ansiC2.inverse(
772
- `${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`
773
- )
784
+ ansiColors.red(
785
+ `pure ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
774
786
  )
775
787
  );
776
- this.writeFileSync(`${reportDest}/error.txt`, e.stack, src);
788
+ this.writeFileSync(`${reportDest}/logs.txt`, e.stack, src);
777
789
  this.bddTestIsNowDone(src, -1);
778
- statusMessagePretty(-1, src);
790
+ statusMessagePretty(-1, src, "pure");
779
791
  });
780
792
  });
781
793
  } catch (e) {
782
794
  console.log(
783
795
  ansiC2.red(
784
796
  ansiC2.inverse(
785
- `${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`
797
+ `${src} 1 errored with: ${e}. Check ${reportDest}/logs.txt for more info`
786
798
  )
787
799
  )
788
800
  );
789
- this.writeFileSync(`${reportDest}/error.txt`, e.stack, src);
801
+ this.writeFileSync(`${reportDest}/logs.txt`, e.stack, src);
790
802
  this.bddTestIsNowDone(src, -1);
791
- statusMessagePretty(-1, src);
803
+ statusMessagePretty(-1, src, "pure");
792
804
  }
793
805
  for (let i = 0; i <= portsToUse.length; i++) {
794
806
  if (portsToUse[i]) {
795
- this.ports[portsToUse[i]] = true;
807
+ this.ports[portsToUse[i]] = "";
796
808
  }
797
809
  }
798
810
  };
799
811
  this.launchNode = async (src, dest) => {
800
- console.log(ansiC2.green(ansiC2.inverse(`! node, ${src}`)));
812
+ console.log(ansiC2.green(ansiC2.inverse(`node < ${src}`)));
801
813
  this.bddTestIsRunning(src);
802
814
  const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/node`;
803
815
  if (!fs3.existsSync(reportDest)) {
@@ -816,7 +828,6 @@ var PM_Main = class extends PM_WithEslintAndTsc {
816
828
  const testConfigResource = testConfig[2];
817
829
  const portsToUse = [];
818
830
  if (testConfigResource.ports === 0) {
819
- console.error("portsToUse?!", []);
820
831
  const t = {
821
832
  name: src,
822
833
  // ports: portsToUse.map((v) => Number(v)),
@@ -827,14 +838,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
827
838
  testResources = JSON.stringify(t);
828
839
  } else if (testConfigResource.ports > 0) {
829
840
  const openPorts = Object.entries(this.ports).filter(
830
- ([portnumber, portopen]) => portopen
841
+ ([portnumber, portopen]) => portopen === ""
831
842
  );
832
843
  if (openPorts.length >= testConfigResource.ports) {
833
844
  for (let i = 0; i < testConfigResource.ports; i++) {
834
845
  portsToUse.push(openPorts[i][0]);
835
- this.ports[openPorts[i][0]] = false;
846
+ this.ports[openPorts[i][0]] = src;
836
847
  }
837
- console.error("portsToUse", portsToUse);
838
848
  testResources = JSON.stringify({
839
849
  scheduled: true,
840
850
  name: src,
@@ -843,7 +853,11 @@ var PM_Main = class extends PM_WithEslintAndTsc {
843
853
  browserWSEndpoint: this.browser.wsEndpoint()
844
854
  });
845
855
  } else {
846
- console.log("Not enough ports! Enqueuing test job...");
856
+ console.log(
857
+ ansiC2.red(
858
+ `node: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again run a port is available`
859
+ )
860
+ );
847
861
  this.queue.push(src);
848
862
  return;
849
863
  }
@@ -855,8 +869,8 @@ var PM_Main = class extends PM_WithEslintAndTsc {
855
869
  let haltReturns = false;
856
870
  const ipcfile = "/tmp/tpipe_" + Math.random();
857
871
  const child = spawn(
858
- "node",
859
872
  // "node --inspect-brk ",
873
+ "node",
860
874
  [builtfile, testResources, ipcfile],
861
875
  {
862
876
  stdio: ["pipe", "pipe", "pipe", "ipc"]
@@ -899,8 +913,8 @@ var PM_Main = class extends PM_WithEslintAndTsc {
899
913
  }
900
914
  });
901
915
  });
902
- const oStream = fs3.createWriteStream(`${reportDest}/console_log.txt`);
903
- const errFile = `${reportDest}/error.txt`;
916
+ const oStream = fs3.createWriteStream(`${reportDest}/logs.txt`);
917
+ const errFile = `${reportDest}/logs.txt`;
904
918
  if (fs3.existsSync(errFile)) {
905
919
  fs3.rmSync(errFile);
906
920
  }
@@ -911,18 +925,25 @@ var PM_Main = class extends PM_WithEslintAndTsc {
911
925
  child.stdout?.on("data", (data) => {
912
926
  oStream.write(`stdout > ${data}`);
913
927
  });
928
+ child.on("error", (err) => {
929
+ });
914
930
  child.on("close", (code) => {
915
931
  oStream.close();
916
932
  server.close();
917
- if (code === null) {
933
+ if (code === 255) {
934
+ console.log(
935
+ ansiColors.red(
936
+ `node ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
937
+ )
938
+ );
918
939
  this.bddTestIsNowDone(src, -1);
919
- statusMessagePretty(-1, src);
940
+ statusMessagePretty(-1, src, "node");
920
941
  } else if (code === 0) {
921
942
  this.bddTestIsNowDone(src, 0);
922
- statusMessagePretty(0, src);
943
+ statusMessagePretty(0, src, "node");
923
944
  } else {
924
945
  this.bddTestIsNowDone(src, code);
925
- statusMessagePretty(code, src);
946
+ statusMessagePretty(code, src, "node");
926
947
  }
927
948
  haltReturns = true;
928
949
  });
@@ -930,7 +951,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
930
951
  haltReturns = true;
931
952
  for (let i = 0; i <= portsToUse.length; i++) {
932
953
  if (portsToUse[i]) {
933
- this.ports[portsToUse[i]] = true;
954
+ this.ports[portsToUse[i]] = "";
934
955
  }
935
956
  }
936
957
  });
@@ -940,13 +961,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
940
961
  console.log(
941
962
  ansiC2.red(
942
963
  ansiC2.inverse(
943
- `${src} errored with: ${e.name}. Check ${errFile}for more info`
964
+ `${src} errored with: ${e.name}. Check ${errFile} for more info`
944
965
  )
945
966
  )
946
967
  );
947
- this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
968
+ this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
948
969
  this.bddTestIsNowDone(src, -1);
949
- statusMessagePretty(-1, src);
970
+ statusMessagePretty(-1, src, "node");
950
971
  });
951
972
  });
952
973
  };
@@ -957,7 +978,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
957
978
  console.log(ansiC2.green(ansiC2.inverse(`launchWebSideCar ${src}`)));
958
979
  const fileStreams2 = [];
959
980
  const doneFileStream2 = [];
960
- const oStream = fs3.createWriteStream(`${destFolder}/console_log.txt`);
981
+ const oStream = fs3.createWriteStream(`${destFolder}/logs.txt`);
961
982
  return new Promise((res, rej) => {
962
983
  this.browser.newPage().then(async (page) => {
963
984
  this.mapping().forEach(async ([command, func]) => {
@@ -1018,7 +1039,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1018
1039
  }
1019
1040
  })`;
1020
1041
  await page.evaluate(evaluation).then(async ({ fails, failed, features }) => {
1021
- statusMessagePretty(fails, src);
1042
+ statusMessagePretty(fails, src, "web");
1022
1043
  this.bddTestIsNowDone(src, fails);
1023
1044
  }).catch((e) => {
1024
1045
  console.log(
@@ -1055,14 +1076,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1055
1076
  if (testReq.ports === 0) {
1056
1077
  } else if (testReq.ports > 0) {
1057
1078
  const openPorts = Object.entries(this.ports).filter(
1058
- ([portnumber, portopen]) => portopen
1079
+ ([portnumber, portopen]) => portopen === ""
1059
1080
  );
1060
1081
  if (openPorts.length >= testReq.ports) {
1061
1082
  for (let i = 0; i < testReq.ports; i++) {
1062
1083
  portsToUse.push(openPorts[i][0]);
1063
- this.ports[openPorts[i][0]] = false;
1084
+ this.ports[openPorts[i][0]] = src;
1064
1085
  }
1065
- console.log("nodeSideCar portsToUse", portsToUse);
1066
1086
  argz.ports = portsToUse;
1067
1087
  const builtfile = destFolder + ".mjs";
1068
1088
  let haltReturns = false;
@@ -1100,13 +1120,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1100
1120
  });
1101
1121
  });
1102
1122
  });
1103
- const oStream = fs3.createWriteStream(`${reportDest}/console_log.txt`);
1123
+ const oStream = fs3.createWriteStream(`${reportDest}/logs.txt`);
1104
1124
  const child = spawn("node", [builtfile, JSON.stringify(argz)], {
1105
1125
  stdio: ["pipe", "pipe", "pipe", "ipc"]
1106
1126
  // silent: true
1107
1127
  });
1108
1128
  const p = "/tmp/tpipe" + Math.random();
1109
- const errFile = `${reportDest}/error.txt`;
1129
+ const errFile = `${reportDest}/logs.txt`;
1110
1130
  server.listen(p, () => {
1111
1131
  child.stderr?.on("data", (data) => {
1112
1132
  oStream.write(`stderr > ${data}`);
@@ -1123,7 +1143,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1123
1143
  haltReturns = true;
1124
1144
  for (let i = 0; i <= portsToUse.length; i++) {
1125
1145
  if (portsToUse[i]) {
1126
- this.ports[portsToUse[i]] = true;
1146
+ this.ports[portsToUse[i]] = "";
1127
1147
  }
1128
1148
  }
1129
1149
  });
@@ -1139,7 +1159,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1139
1159
  )
1140
1160
  )
1141
1161
  );
1142
- this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
1162
+ this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
1143
1163
  });
1144
1164
  });
1145
1165
  child.send({ path: p });
@@ -1147,7 +1167,11 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1147
1167
  this.nodeSidecars[r] = child;
1148
1168
  return [r, argz];
1149
1169
  } else {
1150
- console.log("Not enough open ports!", openPorts, testReq.ports);
1170
+ console.log(
1171
+ ansiC2.red(
1172
+ `cannot ${src} because there are no open ports. the job will be unqueued`
1173
+ )
1174
+ );
1151
1175
  this.queue.push(sidecar[0]);
1152
1176
  return [Math.random(), argz];
1153
1177
  }
@@ -1182,12 +1206,12 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1182
1206
  };
1183
1207
  } else if (testConfigResource.ports > 0) {
1184
1208
  const openPorts = Object.entries(this.ports).filter(
1185
- ([portnumber, portopen]) => portopen
1209
+ ([portnumber, portopen]) => portopen === ""
1186
1210
  );
1187
1211
  if (openPorts.length >= testConfigResource.ports) {
1188
1212
  for (let i = 0; i < testConfigResource.ports; i++) {
1189
1213
  portsToUse.push(openPorts[i][0]);
1190
- this.ports[openPorts[i][0]] = false;
1214
+ this.ports[openPorts[i][0]] = src;
1191
1215
  }
1192
1216
  argz = {
1193
1217
  // scheduled: true,
@@ -1212,7 +1236,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1212
1236
  return [r, argz];
1213
1237
  };
1214
1238
  this.launchWeb = async (src, dest) => {
1215
- console.log(ansiC2.green(ansiC2.inverse(`! web ${src}`)));
1239
+ console.log(ansiC2.green(ansiC2.inverse(`web < ${src}`)));
1216
1240
  this.bddTestIsRunning(src);
1217
1241
  const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/web`;
1218
1242
  if (!fs3.existsSync(reportDest)) {
@@ -1236,7 +1260,8 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1236
1260
  console.log("fail", e)
1237
1261
  }
1238
1262
  })`;
1239
- const oStream = fs3.createWriteStream(`${reportDest}/console_log.txt`);
1263
+ const ofile = `${reportDest}/logs.txt`;
1264
+ const oStream = fs3.createWriteStream(ofile);
1240
1265
  this.browser.newPage().then((page) => {
1241
1266
  this.mapping().forEach(async ([command, func]) => {
1242
1267
  if (command === "page") {
@@ -1265,22 +1290,25 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1265
1290
  });
1266
1291
  };
1267
1292
  page.on("pageerror", (err) => {
1268
- console.debug(`Error from ${src}: [${err.name}] `);
1293
+ console.log(
1294
+ ansiColors.red(
1295
+ `web ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
1296
+ )
1297
+ );
1269
1298
  oStream.write(err.name);
1270
1299
  oStream.write("\n");
1271
1300
  if (err.cause) {
1272
- console.debug(`Error from ${src} cause: [${err.cause}] `);
1273
1301
  oStream.write(err.cause);
1274
1302
  oStream.write("\n");
1275
1303
  }
1276
1304
  if (err.stack) {
1277
- console.debug(`Error from stack ${src}: [${err.stack}] `);
1278
1305
  oStream.write(err.stack);
1279
1306
  oStream.write("\n");
1280
1307
  }
1281
- console.debug(`Error from message ${src}: [${err.message}] `);
1282
- oStream.write(err.message);
1283
- oStream.write("\n");
1308
+ if (err.message) {
1309
+ oStream.write(err.message);
1310
+ oStream.write("\n");
1311
+ }
1284
1312
  this.bddTestIsNowDone(src, -1);
1285
1313
  close();
1286
1314
  });
@@ -1295,15 +1323,12 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1295
1323
  await page.goto(`file://${`${destFolder}.html`}`, {});
1296
1324
  this.webSidecars[Math.random()] = page.mainFrame()._id;
1297
1325
  await page.evaluate(evaluation).then(async ({ fails, failed, features }) => {
1298
- statusMessagePretty(fails, src);
1326
+ statusMessagePretty(fails, src, "web");
1299
1327
  this.bddTestIsNowDone(src, fails);
1328
+ close();
1300
1329
  }).catch((e) => {
1301
- console.log(
1302
- ansiC2.red(ansiC2.inverse(`launchweb - ${src} errored with: ${e}`))
1303
- );
1304
- }).finally(() => {
1305
1330
  this.bddTestIsNowDone(src, -1);
1306
- close();
1331
+ }).finally(() => {
1307
1332
  });
1308
1333
  return page;
1309
1334
  });
@@ -1358,13 +1383,62 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1358
1383
  });
1359
1384
  this.writeBigBoard();
1360
1385
  };
1386
+ this.checkForShutdown = () => {
1387
+ this.checkQueue();
1388
+ console.log(
1389
+ ansiC2.inverse(
1390
+ `The following jobs are awaiting resources: ${JSON.stringify(
1391
+ this.queue
1392
+ )}`
1393
+ )
1394
+ );
1395
+ console.log(
1396
+ ansiC2.inverse(`The status of ports: ${JSON.stringify(this.ports)}`)
1397
+ );
1398
+ this.writeBigBoard();
1399
+ if (this.mode === "dev")
1400
+ return;
1401
+ let inflight = false;
1402
+ Object.keys(this.summary).forEach((k) => {
1403
+ if (this.summary[k].prompt === "?") {
1404
+ console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} prompt ${k}`)));
1405
+ inflight = true;
1406
+ }
1407
+ });
1408
+ Object.keys(this.summary).forEach((k) => {
1409
+ if (this.summary[k].runTimeErrors === "?") {
1410
+ console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} runTimeError ${k}`)));
1411
+ inflight = true;
1412
+ }
1413
+ });
1414
+ Object.keys(this.summary).forEach((k) => {
1415
+ if (this.summary[k].staticErrors === "?") {
1416
+ console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} staticErrors ${k}`)));
1417
+ inflight = true;
1418
+ }
1419
+ });
1420
+ Object.keys(this.summary).forEach((k) => {
1421
+ if (this.summary[k].typeErrors === "?") {
1422
+ console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} typeErrors ${k}`)));
1423
+ inflight = true;
1424
+ }
1425
+ });
1426
+ this.writeBigBoard();
1427
+ if (!inflight) {
1428
+ this.browser.disconnect().then(() => {
1429
+ console.log(ansiC2.inverse(`${this.name} has been tested. Goodbye.`));
1430
+ process.exit();
1431
+ });
1432
+ }
1433
+ };
1434
+ this.launchers = {};
1361
1435
  this.ports = {};
1362
1436
  this.queue = [];
1363
1437
  this.nodeSidecars = {};
1364
1438
  this.webSidecars = {};
1365
1439
  this.pureSidecars = {};
1366
1440
  this.configs.ports.forEach((element) => {
1367
- this.ports[element] = true;
1441
+ this.ports[element] = "";
1368
1442
  });
1369
1443
  }
1370
1444
  async stopSideCar(uid) {
@@ -1524,17 +1598,18 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1524
1598
  const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
1525
1599
  await pollForFile(metafile);
1526
1600
  Object.entries(eps).forEach(
1527
- async ([k, outputFile]) => {
1528
- launcher(k, outputFile);
1601
+ async ([inputFile, outputFile]) => {
1602
+ this.launchers[inputFile] = () => launcher(inputFile, outputFile);
1603
+ this.launchers[inputFile]();
1529
1604
  try {
1530
1605
  watch(outputFile, async (e, filename) => {
1531
1606
  const hash = await fileHash(outputFile);
1532
- if (fileHashes[k] !== hash) {
1533
- fileHashes[k] = hash;
1607
+ if (fileHashes[inputFile] !== hash) {
1608
+ fileHashes[inputFile] = hash;
1534
1609
  console.log(
1535
1610
  ansiC2.yellow(ansiC2.inverse(`< ${e} ${filename}`))
1536
1611
  );
1537
- launcher(k, outputFile);
1612
+ this.launchers[inputFile]();
1538
1613
  }
1539
1614
  });
1540
1615
  } catch (e) {
@@ -1600,42 +1675,53 @@ var PM_Main = class extends PM_WithEslintAndTsc {
1600
1675
  this.tscCheck({
1601
1676
  platform,
1602
1677
  addableFiles,
1603
- entrypoint: "./" + entrypoint
1678
+ entrypoint
1604
1679
  });
1605
- this.eslintCheck("./" + entrypoint, platform, addableFiles);
1606
- this.makePrompt("./" + entrypoint, addableFiles, platform);
1680
+ this.eslintCheck(entrypoint, platform, addableFiles);
1681
+ this.makePrompt(entrypoint, addableFiles, platform);
1607
1682
  }
1608
1683
  }
1609
1684
  });
1610
1685
  }
1686
+ checkQueue() {
1687
+ const x = this.queue.pop();
1688
+ if (!x) {
1689
+ ansiC2.inverse(`The following queue is empty`);
1690
+ return;
1691
+ }
1692
+ const test = this.configs.tests.find((t) => t[0] === x);
1693
+ if (!test)
1694
+ throw `test is undefined ${x}`;
1695
+ this.launchers[test[0]]();
1696
+ }
1611
1697
  };
1612
1698
 
1613
1699
  // src/run.ts
1614
1700
  readline.emitKeypressEvents(process.stdin);
1615
1701
  if (process.stdin.isTTY)
1616
1702
  process.stdin.setRawMode(true);
1617
- console.log(ansiC3.inverse("Press 'x' to shutdown forcefully."));
1703
+ console.log(ansiC3.inverse("Press 'q' to initiate a graceful shutdown."));
1704
+ console.log(ansiC3.inverse("Press 'x' to quit forcefully."));
1618
1705
  process.stdin.on("keypress", (str, key) => {
1619
1706
  if (key.name === "x") {
1620
1707
  console.log(ansiC3.inverse("Shutting down forcefully..."));
1621
1708
  process.exit(-1);
1622
1709
  }
1623
1710
  });
1624
- var testName = process.argv[2];
1711
+ var projectName = process.argv[2];
1625
1712
  var mode = process.argv[3];
1626
1713
  if (mode !== "once" && mode !== "dev") {
1627
1714
  console.error("the 2nd argument should be 'dev' or 'once' ");
1628
1715
  process.exit(-1);
1629
1716
  }
1630
- console.log("testeranto is running", testName, mode);
1631
1717
  import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
1632
1718
  const bigConfig = module.default;
1633
- const rawConfig = bigConfig.projects[testName];
1719
+ const rawConfig = bigConfig.projects[projectName];
1634
1720
  const config = {
1635
1721
  ...rawConfig,
1636
- buildDir: process.cwd() + `/testeranto/${testName}.json`
1722
+ buildDir: process.cwd() + `/testeranto/${projectName}.json`
1637
1723
  };
1638
- const pm = new PM_Main(config, testName, mode);
1724
+ const pm = new PM_Main(config, projectName, mode);
1639
1725
  pm.start();
1640
1726
  process.stdin.on("keypress", (str, key) => {
1641
1727
  if (key.name === "q") {