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
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## The AI-powered BDD test framework for TypeScript projects
4
4
 
5
- #### 🚧 WARNING: Testeranto is still under development but is not ready for production yet. I am rapidly working to release a beta ASAP. If you are interested in joining this beta program, please context me. 🚧
5
+ #### 🚧 WARNING: Testeranto is still under development but is not ready for production yet. I am rapidly working to release a beta ASAP. If you are interested in joining this beta program, please contact me. 🚧
6
6
 
7
7
  - README: [adamwong246.github.io/testeranto/testeranto](https://adamwong246.github.io/testeranto/testeranto)
8
8
  - demo: [youtube](https://www.youtube.com/embed/WvU5xMqGi6Q)
@@ -164,6 +164,8 @@ test0: Given.Default(
164
164
 
165
165
  Alongside the BDD tests, Testeranto runs ESLint and tsc on the input files to generate a list of static analysis errors and type errors, respectively.
166
166
 
167
+ ---
168
+
167
169
  ## Sidecars (COMING SOON)
168
170
 
169
171
  Alongside your test, you can include a number of "sidecars" - other bundled JavaScript assets upon which your test depends. For example, suppose you have an app with frontend and backend components. You could run a React test in the web and include the Node HTTP server as a sidecar.
@@ -8,6 +8,7 @@ const core_js_1 = __importDefault(require("./lib/core.js"));
8
8
  const index_js_1 = require("./lib/index.js");
9
9
  const node_js_1 = require("./PM/node.js");
10
10
  let ipcfile;
11
+ console.log("mark4");
11
12
  class NodeTesteranto extends core_js_1.default {
12
13
  constructor(input, testSpecification, testImplementation, testResourceRequirement, testInterface) {
13
14
  super(input, testSpecification, testImplementation, testResourceRequirement, testInterface, () => {
@@ -15,6 +16,7 @@ class NodeTesteranto extends core_js_1.default {
15
16
  });
16
17
  }
17
18
  async receiveTestResourceConfig(partialTestResource) {
19
+ console.log("receiveTestResourceConfig", partialTestResource);
18
20
  const t = JSON.parse(partialTestResource);
19
21
  const pm = new node_js_1.PM_Node(t, ipcfile);
20
22
  return await this.testJobs[0].receiveTestResourceConfig(pm);
@@ -26,13 +28,14 @@ class NodeTesteranto extends core_js_1.default {
26
28
  }
27
29
  exports.NodeTesteranto = NodeTesteranto;
28
30
  const testeranto = async (input, testSpecification, testImplementation, testInterface, testResourceRequirement = index_js_1.defaultTestResourceRequirement) => {
29
- const t = new NodeTesteranto(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
30
- process.on("unhandledRejection", (reason, promise) => {
31
- console.error("Unhandled Rejection at:", promise, "reason:", reason);
32
- // Optionally, terminate the process or perform cleanup
33
- // t.registerUncaughtPromise(reason, promise);
34
- });
35
31
  try {
32
+ const t = new NodeTesteranto(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
33
+ console.log("args", process.argv);
34
+ process.on("unhandledRejection", (reason, promise) => {
35
+ console.error("Unhandled Rejection at:", promise, "reason:", reason);
36
+ // Optionally, terminate the process or perform cleanup
37
+ // t.registerUncaughtPromise(reason, promise);
38
+ });
36
39
  ipcfile = process.argv[3];
37
40
  const f = await t.receiveTestResourceConfig(process.argv[2]);
38
41
  console.error("goodbye node with failures", f.fails);
@@ -24,7 +24,16 @@ class PM_WithEslintAndTsc extends base_js_1.PM_Base {
24
24
  this.summary = {};
25
25
  this.tscCheck = async ({ entrypoint, addableFiles, platform, }) => {
26
26
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`tsc < ${entrypoint}`)));
27
- this.typeCheckIsRunning(entrypoint);
27
+ try {
28
+ this.typeCheckIsRunning(entrypoint);
29
+ }
30
+ catch (e) {
31
+ console.error("error in tscCheck");
32
+ console.error(e);
33
+ console.error(entrypoint);
34
+ console.error(JSON.stringify(this.summary, null, 2));
35
+ process.exit(-1);
36
+ }
28
37
  const program = tsc_prog_1.default.createProgramFromConfig({
29
38
  basePath: process.cwd(), // always required, used for relative paths
30
39
  configFilePath: "tsconfig.json", // config to inherit from (optional)
@@ -56,7 +65,16 @@ class PM_WithEslintAndTsc extends base_js_1.PM_Base {
56
65
  };
57
66
  this.eslintCheck = async (entrypoint, platform, addableFiles) => {
58
67
  console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`eslint < ${entrypoint}`)));
59
- this.lintIsRunning(entrypoint);
68
+ try {
69
+ this.lintIsRunning(entrypoint);
70
+ }
71
+ catch (e) {
72
+ console.error("error in eslintCheck");
73
+ console.error(e);
74
+ console.error(entrypoint);
75
+ console.error(JSON.stringify(this.summary, null, 2));
76
+ process.exit(-1);
77
+ }
60
78
  const results = (await eslint.lintFiles(addableFiles))
61
79
  .filter((r) => r.messages.length)
62
80
  .filter((r) => {
@@ -74,7 +92,7 @@ class PM_WithEslintAndTsc extends base_js_1.PM_Base {
74
92
  const promptPath = (0, utils_1.promptPather)(entryPoint, platform, this.name);
75
93
  const testPaths = path_1.default.join("testeranto", "reports", this.name, entryPoint.split(".").slice(0, -1).join("."), platform, `tests.json`);
76
94
  const featuresPath = path_1.default.join("testeranto", "reports", this.name, platform, entryPoint.split(".").slice(0, -1).join("."), `featurePrompt.txt`);
77
- const logPath = path_1.default.join("testeranto", "reports", this.name, entryPoint.split(".").slice(0, -1).join("."), platform, `console_log.txt`);
95
+ const logPath = path_1.default.join("testeranto", "reports", this.name, entryPoint.split(".").slice(0, -1).join("."), platform, `logs.txt`);
78
96
  const lintPath = path_1.default.join("testeranto", "reports", this.name, entryPoint.split(".").slice(0, -1).join("."), platform, `lint_errors.json`);
79
97
  const typePath = path_1.default.join("testeranto", "reports", this.name, entryPoint.split(".").slice(0, -1).join("."), platform, `type_errors.txt`);
80
98
  const messagePath = path_1.default.join("testeranto", "reports", this.name, entryPoint.split(".").slice(0, -1).join("."), platform, `message`);
@@ -98,92 +116,91 @@ ${addableFiles
98
116
  this.checkForShutdown();
99
117
  };
100
118
  this.typeCheckIsRunning = (src) => {
119
+ if (!this.summary[src]) {
120
+ throw `this.summary[${src}] is undefined`;
121
+ }
101
122
  this.summary[src].typeErrors = "?";
102
123
  };
103
124
  this.typeCheckIsNowDone = (src, failures) => {
125
+ if (!this.summary[src]) {
126
+ throw `this.summary[${src}] is undefined`;
127
+ }
128
+ if (failures === 0) {
129
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`tsc > ${src}`)));
130
+ }
131
+ else {
132
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`tsc > ${src} failed ${failures} times`)));
133
+ }
104
134
  this.summary[src].typeErrors = failures;
105
135
  this.writeBigBoard();
106
136
  this.checkForShutdown();
107
137
  };
108
138
  this.lintIsRunning = (src) => {
139
+ if (!this.summary[src]) {
140
+ throw `this.summary[${src}] is undefined`;
141
+ }
109
142
  this.summary[src].staticErrors = "?";
110
143
  this.writeBigBoard();
111
144
  };
112
145
  this.lintIsNowDone = (src, failures) => {
146
+ if (!this.summary[src]) {
147
+ throw `this.summary[${src}] is undefined`;
148
+ }
149
+ if (failures === 0) {
150
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`eslint > ${src}`)));
151
+ }
152
+ else {
153
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`eslint > ${src} failed ${failures} times`)));
154
+ }
113
155
  this.summary[src].staticErrors = failures;
114
156
  this.writeBigBoard();
115
157
  this.checkForShutdown();
116
158
  };
117
159
  this.bddTestIsRunning = (src) => {
118
- this.summary[src].runTimeError = "?";
160
+ if (!this.summary[src]) {
161
+ throw `this.summary[${src}] is undefined`;
162
+ }
163
+ this.summary[src].runTimeErrors = "?";
119
164
  this.writeBigBoard();
120
165
  };
121
166
  this.bddTestIsNowDone = (src, failures) => {
122
- this.summary[src].runTimeError = failures;
167
+ if (!this.summary[src]) {
168
+ throw `this.summary[${src}] is undefined`;
169
+ }
170
+ this.summary[src].runTimeErrors = failures;
123
171
  this.writeBigBoard();
124
172
  this.checkForShutdown();
125
173
  };
126
174
  this.writeBigBoard = () => {
127
175
  fs_1.default.writeFileSync(`./testeranto/reports/${this.name}/summary.json`, JSON.stringify(this.summary, null, 2));
128
176
  };
129
- this.checkForShutdown = () => {
130
- console.log(ansi_colors_1.default.inverse(`checkForShutdown`));
131
- this.writeBigBoard();
132
- if (this.mode === "dev")
133
- return;
134
- let inflight = false;
135
- Object.keys(this.summary).forEach((k) => {
136
- if (this.summary[k].prompt === "?") {
137
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 prompt ${k}`)));
138
- inflight = true;
139
- }
140
- });
141
- Object.keys(this.summary).forEach((k) => {
142
- if (this.summary[k].runTimeError === "?") {
143
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 runTimeError ${k}`)));
144
- inflight = true;
145
- }
146
- });
147
- Object.keys(this.summary).forEach((k) => {
148
- if (this.summary[k].staticErrors === "?") {
149
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 staticErrors ${k}`)));
150
- inflight = true;
151
- }
152
- });
153
- Object.keys(this.summary).forEach((k) => {
154
- if (this.summary[k].typeErrors === "?") {
155
- console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 typeErrors ${k}`)));
156
- inflight = true;
157
- }
158
- });
159
- this.writeBigBoard();
160
- if (!inflight) {
161
- this.browser.disconnect().then(() => {
162
- console.log(ansi_colors_1.default.inverse(`${this.name} has been tested. Goodbye.`));
163
- process.exit();
164
- });
165
- }
166
- };
167
177
  this.name = name;
168
178
  this.mode = mode;
179
+ this.summary = {};
180
+ // Initialize all test entries first
169
181
  this.configs.tests.forEach(([t, rt, tr, sidecars]) => {
170
- this.summary[t] = {
171
- runTimeError: "?",
172
- typeErrors: "?",
173
- staticErrors: "?",
174
- prompt: "?",
175
- failingFeatures: {},
176
- };
177
- sidecars.forEach(([t]) => {
178
- this.summary[t] = {
179
- // runTimeError: "?",
180
- typeErrors: "?",
181
- staticErrors: "?",
182
- // prompt: "?",
183
- // failingFeatures: {},
184
- };
182
+ this.ensureSummaryEntry(t);
183
+ sidecars.forEach(([sidecarName]) => {
184
+ this.ensureSummaryEntry(sidecarName, true);
185
185
  });
186
186
  });
187
187
  }
188
+ ensureSummaryEntry(src, isSidecar = false) {
189
+ if (!this.summary[src]) {
190
+ this.summary[src] = {
191
+ typeErrors: undefined,
192
+ staticErrors: undefined,
193
+ runTimeErrors: undefined,
194
+ prompt: undefined,
195
+ failingFeatures: {},
196
+ };
197
+ if (isSidecar) {
198
+ // Sidecars don't need all fields
199
+ // delete this.summary[src].runTimeError;
200
+ // delete this.summary[src].prompt;
201
+ }
202
+ }
203
+ return this.summary[src];
204
+ }
188
205
  }
189
206
  exports.PM_WithEslintAndTsc = PM_WithEslintAndTsc;