testeranto 0.90.0 → 0.94.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 (60) hide show
  1. package/dist/common/src/Node.js +5 -3
  2. package/dist/common/src/PM/main.js +102 -92
  3. package/dist/common/src/Project.js +5 -3
  4. package/dist/common/src/Puppeteer.js +1 -3
  5. package/dist/common/src/SubPackages/puppeteer.js +1 -1
  6. package/dist/common/src/SubPackages/react/jsx/index.js +14 -6
  7. package/dist/common/src/SubPackages/react/jsx/node.js +7 -2
  8. package/dist/common/src/SubPackages/react-dom/component/web.js +13 -39
  9. package/dist/common/src/SubPackages/react-test-renderer/component/interface.js +2 -10
  10. package/dist/common/src/Web.js +25 -21
  11. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -2
  12. package/dist/common/src/lib/abstractBase.js +29 -184
  13. package/dist/common/src/lib/basebuilder.js +1 -11
  14. package/dist/common/src/lib/classBuilder.js +1 -1
  15. package/dist/common/src/lib/core.js +8 -28
  16. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  17. package/dist/module/src/Node.js +5 -3
  18. package/dist/module/src/PM/main.js +102 -92
  19. package/dist/module/src/Project.js +5 -3
  20. package/dist/module/src/Puppeteer.js +1 -3
  21. package/dist/module/src/SubPackages/puppeteer.js +1 -1
  22. package/dist/module/src/SubPackages/react/jsx/index.js +14 -6
  23. package/dist/module/src/SubPackages/react/jsx/node.js +7 -2
  24. package/dist/module/src/SubPackages/react-dom/component/web.js +13 -39
  25. package/dist/module/src/SubPackages/react-test-renderer/component/interface.js +2 -10
  26. package/dist/module/src/Web.js +25 -21
  27. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -2
  28. package/dist/module/src/lib/abstractBase.js +29 -184
  29. package/dist/module/src/lib/basebuilder.js +1 -11
  30. package/dist/module/src/lib/classBuilder.js +1 -1
  31. package/dist/module/src/lib/core.js +8 -28
  32. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  33. package/dist/prebuild/build-tests.mjs +4 -3
  34. package/dist/prebuild/run-tests.mjs +30 -66
  35. package/dist/types/src/Node.d.ts +4 -1
  36. package/dist/types/src/PM/main.d.ts +2 -1
  37. package/dist/types/src/SubPackages/react/jsx/node.d.ts +1 -1
  38. package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +1 -1
  39. package/dist/types/src/Web.d.ts +2 -2
  40. package/dist/types/src/lib/abstractBase.d.ts +6 -2
  41. package/dist/types/src/lib/core.d.ts +3 -3
  42. package/dist/types/src/lib/types.d.ts +5 -1
  43. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  44. package/package.json +13 -13
  45. package/src/Node.ts +6 -3
  46. package/src/PM/main.ts +121 -111
  47. package/src/Project.ts +6 -5
  48. package/src/Puppeteer.ts +1 -3
  49. package/src/SubPackages/puppeteer.ts +1 -1
  50. package/src/SubPackages/react/jsx/index.ts +15 -7
  51. package/src/SubPackages/react/jsx/node.ts +6 -5
  52. package/src/SubPackages/react-dom/component/web.ts +28 -51
  53. package/src/SubPackages/react-test-renderer/component/interface.ts +4 -11
  54. package/src/Web.ts +45 -23
  55. package/src/esbuildConfigs/inputFilesPlugin.ts +0 -3
  56. package/src/lib/abstractBase.ts +38 -188
  57. package/src/lib/basebuilder.ts +1 -12
  58. package/src/lib/classBuilder.ts +2 -1
  59. package/src/lib/core.ts +17 -29
  60. package/src/lib/types.ts +3 -1
@@ -9,14 +9,16 @@ const index_js_1 = require("./lib/index.js");
9
9
  const node_js_1 = require("./PM/node.js");
10
10
  class NodeTesteranto extends core_js_1.default {
11
11
  constructor(input, testSpecification, testImplementation, testResourceRequirement, testInterface) {
12
- super(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
12
+ super(input, testSpecification, testImplementation, testResourceRequirement, testInterface, () => {
13
+ // no-op
14
+ });
13
15
  }
14
16
  async receiveTestResourceConfig(partialTestResource) {
15
17
  const t = JSON.parse(partialTestResource);
16
18
  const pm = new node_js_1.PM_Node(t);
17
19
  const { failed, artifacts, logPromise, features } = await this.testJobs[0].receiveTestResourceConfig(pm);
18
- pm.customclose();
19
- return features;
20
+ // pm.customclose();
21
+ return { features, failed };
20
22
  }
21
23
  }
22
24
  exports.NodeTesteranto = NodeTesteranto;
@@ -110,9 +110,12 @@ class PM_Main extends index_js_1.PM {
110
110
  process.exit(-1);
111
111
  }
112
112
  const builtfile = dest + ".mjs";
113
- await Promise.all(testConfig[3].map((sidecar) => {
113
+ const webSideCares = [];
114
+ await Promise.all(testConfig[3].map(async (sidecar) => {
114
115
  if (sidecar[1] === "web") {
115
- return this.launchWebSideCar(sidecar[0], (0, utils_js_1.destinationOfRuntime)(sidecar[0], "web", this.configs), sidecar);
116
+ const s = await this.launchWebSideCar(sidecar[0], (0, utils_js_1.destinationOfRuntime)(sidecar[0], "web", this.configs), sidecar);
117
+ webSideCares.push(s);
118
+ return s;
116
119
  }
117
120
  if (sidecar[1] === "node") {
118
121
  return this.launchNodeSideCar(sidecar[0], (0, utils_js_1.destinationOfRuntime)(sidecar[0], "node", this.configs), sidecar);
@@ -122,13 +125,15 @@ class PM_Main extends index_js_1.PM {
122
125
  return module.default.then((defaultModule) => {
123
126
  defaultModule
124
127
  .receiveTestResourceConfig(argz)
125
- .then(async (features) => {
128
+ .then(async ({ features, failed }) => {
126
129
  this.receiveFeatures(features, destFolder);
130
+ console.log(`${src} completed with ${failed} errors`);
127
131
  })
128
132
  .catch((e) => {
129
- console.log("catch", e);
133
+ console.log(`${src} errored with`, e);
130
134
  })
131
135
  .finally(() => {
136
+ webSideCares.forEach((webSideCar) => webSideCar.close());
132
137
  this.deregister(src);
133
138
  });
134
139
  });
@@ -144,18 +149,12 @@ class PM_Main extends index_js_1.PM {
144
149
  const d = dest + ".mjs";
145
150
  console.log("launchWebSideCar", src, dest, d);
146
151
  const destFolder = dest.replace(".mjs", "");
147
- const webArgz = JSON.stringify({
148
- name: dest,
149
- ports: [].toString(),
150
- fs: destFolder,
151
- browserWSEndpoint: this.browser.wsEndpoint(),
152
- });
153
- // files[src] = new Set();
154
- // const evaluation = `
155
- // console.log("importing ${dest}.mjs");
156
- // import('${dest}.mjs').then(async (x) => {
157
- // console.log("imported", x.default);
158
- // })`;
152
+ // const webArgz = JSON.stringify({
153
+ // name: dest,
154
+ // ports: [].toString(),
155
+ // fs: destFolder,
156
+ // browserWSEndpoint: this.browser.wsEndpoint(),
157
+ // });
159
158
  const fileStreams2 = [];
160
159
  const doneFileStream2 = [];
161
160
  return new Promise((res, rej) => {
@@ -234,14 +233,17 @@ class PM_Main extends index_js_1.PM {
234
233
  page.exposeFunction("end", async (uid) => {
235
234
  return fileStreams2[uid].end();
236
235
  });
237
- page.exposeFunction("customclose", (p, testName) => {
238
- fs_1.default.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
239
- delete files[testName];
240
- Promise.all(screenshots[testName] || []).then(() => {
241
- delete screenshots[testName];
242
- // page.close();
243
- });
244
- });
236
+ // page.exposeFunction("customclose", (p: string, testName: string) => {
237
+ // fs.writeFileSync(
238
+ // p + "/manifest.json",
239
+ // JSON.stringify(Array.from(files[testName]))
240
+ // );
241
+ // delete files[testName];
242
+ // Promise.all(screenshots[testName] || []).then(() => {
243
+ // delete screenshots[testName];
244
+ // // page.close();
245
+ // });
246
+ // });
245
247
  return page;
246
248
  })
247
249
  .then(async (page) => {
@@ -397,20 +399,21 @@ class PM_Main extends index_js_1.PM {
397
399
  // page.evaluate(`window["screenshot done"]`);
398
400
  });
399
401
  page.exposeFunction("writeFileSync", (fp, contents, testName) => {
400
- const dir = path_1.default.dirname(fp);
401
- fs_1.default.mkdirSync(dir, {
402
- recursive: true,
403
- });
404
- const p = new Promise(async (res, rej) => {
405
- fs_1.default.writeFileSync(fp, contents);
406
- res(fp);
407
- });
408
- doneFileStream2.push(p);
409
- if (!files[testName]) {
410
- files[testName] = new Set();
411
- }
412
- files[testName].add(fp);
413
- return p;
402
+ return globalThis["writeFileSync"](fp, contents, testName);
403
+ // const dir = path.dirname(fp);
404
+ // fs.mkdirSync(dir, {
405
+ // recursive: true,
406
+ // });
407
+ // const p = new Promise<string>(async (res, rej) => {
408
+ // fs.writeFileSync(fp, contents);
409
+ // res(fp);
410
+ // });
411
+ // doneFileStream2.push(p);
412
+ // if (!files[testName]) {
413
+ // files[testName] = new Set();
414
+ // }
415
+ // files[testName].add(fp);
416
+ // return p;
414
417
  });
415
418
  page.exposeFunction("existsSync", (fp, contents) => {
416
419
  return fs_1.default.existsSync(fp);
@@ -445,36 +448,37 @@ class PM_Main extends index_js_1.PM {
445
448
  page.exposeFunction("end", async (uid) => {
446
449
  return fileStreams2[uid].end();
447
450
  });
448
- page.exposeFunction("customclose", (p, testName) => {
449
- // console.log("closing", p);
450
- fs_1.default.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
451
- delete files[testName];
452
- // console.log("screenshots[testName]", screenshots[testName]);
453
- Promise.all(screenshots[testName] || []).then(() => {
454
- delete screenshots[testName];
455
- // page.close();
456
- // console.log("\t GOODBYE");
457
- // whyIsNodeRunning();
458
- });
459
- // globalThis["writeFileSync"](
460
- // p + "/manifest.json",
461
- // // files.entries()
462
- // JSON.stringify(Array.from(files[testName]))
463
- // );
464
- // console.log("closing doneFileStream2", doneFileStream2);
465
- // console.log("closing doneFileStream2", doneFileStream2);
466
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
467
- // page.close();
468
- // });
469
- // Promise.all(screenshots).then(() => {
470
- // page.close();
471
- // });
472
- // setTimeout(() => {
473
- // console.log("Delayed for 1 second.");
474
- // page.close();
475
- // }, 5000);
476
- // return page.close();
477
- });
451
+ // page.exposeFunction("customclose", (p: string, testName: string) => {
452
+ // // console.log("closing", p);
453
+ // console.log("\t GOODBYE customclose");
454
+ // fs.writeFileSync(
455
+ // p + "/manifest.json",
456
+ // JSON.stringify(Array.from(files[testName]))
457
+ // );
458
+ // delete files[testName];
459
+ // // console.log("screenshots[testName]", screenshots[testName]);
460
+ // Promise.all(screenshots[testName] || []).then(() => {
461
+ // delete screenshots[testName];
462
+ // });
463
+ // // globalThis["writeFileSync"](
464
+ // // p + "/manifest.json",
465
+ // // // files.entries()
466
+ // // JSON.stringify(Array.from(files[testName]))
467
+ // // );
468
+ // // console.log("closing doneFileStream2", doneFileStream2);
469
+ // // console.log("closing doneFileStream2", doneFileStream2);
470
+ // // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
471
+ // // page.close();
472
+ // // });
473
+ // // Promise.all(screenshots).then(() => {
474
+ // // page.close();
475
+ // // });
476
+ // // setTimeout(() => {
477
+ // // console.log("Delayed for 1 second.");
478
+ // // page.close();
479
+ // // }, 5000);
480
+ // // return page.close();
481
+ // });
478
482
  page.exposeFunction("page", () => {
479
483
  return page.mainFrame()._id;
480
484
  });
@@ -507,12 +511,19 @@ class PM_Main extends index_js_1.PM {
507
511
  })
508
512
  .then(async (page) => {
509
513
  const close = () => {
510
- console.log("evaluation complete.", dest);
511
- page.off("pageerror");
512
- page.close();
513
- this.deregister(t);
514
- stderrStream.close();
515
- stdoutStream.close();
514
+ if (!files[t]) {
515
+ files[t] = new Set();
516
+ }
517
+ // files[t].add(filepath);
518
+ fs_1.default.writeFileSync(dest + "/manifest.json", JSON.stringify(Array.from(files[t])));
519
+ delete files[t];
520
+ Promise.all(screenshots[t] || []).then(() => {
521
+ delete screenshots[t];
522
+ page.close();
523
+ this.deregister(t);
524
+ stderrStream.close();
525
+ stdoutStream.close();
526
+ });
516
527
  };
517
528
  page.on("pageerror", (err) => {
518
529
  console.debug(`Error from ${t}: [${err.name}] `);
@@ -542,26 +553,20 @@ class PM_Main extends index_js_1.PM {
542
553
  await page.goto(`file://${`${dest}.html`}`, {});
543
554
  await page
544
555
  .evaluate(evaluation)
545
- .then(async (features) => {
556
+ .then(async ({ failed, features }) => {
546
557
  this.receiveFeatures(features, destFolder);
558
+ console.log(`${t} completed with ${failed} errors`);
547
559
  })
548
560
  .catch((e) => {
549
- console.log("evaluation failed.", dest);
550
- console.log(e);
561
+ console.log(`${t} errored with`, e);
551
562
  })
552
563
  .finally(() => {
553
564
  close();
554
- // console.log("evaluation complete.", dest);
555
- // page.close();
556
- // this.deregister(t);
557
- // stderrStream.close();
558
- // stdoutStream.close();
559
565
  });
560
566
  return page;
561
567
  });
562
568
  };
563
569
  this.receiveFeatures = (features, destFolder) => {
564
- console.log("this.receiveFeatures", features);
565
570
  features
566
571
  .reduce(async (mm, featureStringKey) => {
567
572
  const accum = await mm;
@@ -628,12 +633,14 @@ class PM_Main extends index_js_1.PM {
628
633
  return false;
629
634
  };
630
635
  globalThis["writeFileSync"] = (filepath, contents, testName) => {
631
- // console.log("globalThis-writeFileSync", filepath);
636
+ // console.log(testName, "writeFileSync", filepath, testName);
632
637
  // Create directories if they don't exist
633
- const dir = path_1.default.dirname(filepath.split("/").slice(0, -1).join("/"));
638
+ const dir = path_1.default.dirname(filepath);
639
+ // console.log(testName, "mkdirSync", dir);
634
640
  fs_1.default.mkdirSync(dir, {
635
641
  recursive: true,
636
642
  });
643
+ // console.log(testName, "mkdirSync2");
637
644
  if (!files[testName]) {
638
645
  files[testName] = new Set();
639
646
  }
@@ -674,13 +681,16 @@ class PM_Main extends index_js_1.PM {
674
681
  await sPromise;
675
682
  return sPromise;
676
683
  };
677
- globalThis["customclose"] = (p, testName) => {
678
- if (!files[testName]) {
679
- files[testName] = new Set();
680
- }
681
- fs_1.default.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
682
- delete files[testName];
683
- };
684
+ // globalThis["customclose"] = (p: string, testName: string) => {
685
+ // if (!files[testName]) {
686
+ // files[testName] = new Set();
687
+ // }
688
+ // fs.writeFileSync(
689
+ // p + "/manifest.json",
690
+ // JSON.stringify(Array.from(files[testName]))
691
+ // );
692
+ // delete files[testName];
693
+ // };
684
694
  }
685
695
  $(selector) {
686
696
  throw new Error("Method not implemented.");
@@ -75,15 +75,17 @@ const compile = () => {
75
75
  return new Promise((resolve, reject) => {
76
76
  const tsc = (0, child_process_1.spawn)("tsc", ["-noEmit"]);
77
77
  tsc.stdout.on("data", (data) => {
78
- // console.log(`stdout: ${data}`);
78
+ // console.log(`tsc stdout: ${data}`);
79
79
  const lines = data.toString().split("\n");
80
80
  logContent.push(...lines);
81
81
  });
82
82
  tsc.stderr.on("data", (data) => {
83
- // console.error(`stderr: ${data}`);
83
+ console.error(`stderr: ${data}`);
84
+ process.exit(-1);
84
85
  });
85
86
  tsc.on("close", (code) => {
86
87
  parseTsErrors();
88
+ console.log("tsc done");
87
89
  resolve(`tsc process exited with code ${code}`);
88
90
  // if (code !== 0) {
89
91
  // resolve(`tsc process exited with code ${code}`);
@@ -137,7 +139,6 @@ class ITProject {
137
139
  }
138
140
  });
139
141
  fs_1.default.writeFileSync(`${this.config.outdir}/testeranto.json`, JSON.stringify(Object.assign(Object.assign({}, this.config), { buildDir: process.cwd() + "/" + this.config.outdir }), null, 2));
140
- compile();
141
142
  Promise.resolve(Promise.all([...this.getSecondaryEndpointsPoints("web")].map(async (sourceFilePath) => {
142
143
  const sourceFileSplit = sourceFilePath.split("/");
143
144
  const sourceDir = sourceFileSplit.slice(0, -1);
@@ -161,6 +162,7 @@ class ITProject {
161
162
  });
162
163
  });
163
164
  Promise.all([
165
+ compile(),
164
166
  esbuild_1.default
165
167
  .context((0, node_js_1.default)(this.config, nodeEntryPoints))
166
168
  .then(async (nodeContext) => {
@@ -21,7 +21,7 @@ exports.default = async (partialConfig) => {
21
21
  executablePath:
22
22
  // process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium",
23
23
  "/opt/homebrew/bin/chromium",
24
- headless: false,
24
+ headless: true,
25
25
  dumpio: true,
26
26
  // timeout: 0,
27
27
  devtools: true,
@@ -60,10 +60,8 @@ exports.default = async (partialConfig) => {
60
60
  process.stdin.on("keypress", (str, key) => {
61
61
  if (key.name === "q") {
62
62
  pm.shutDown();
63
- // process.exit();
64
63
  }
65
64
  if (key.name === "x") {
66
- // pm.shutDown();
67
65
  process.exit(-1);
68
66
  }
69
67
  });
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const Node_js_1 = __importDefault(require("../Node.js"));
8
8
  exports.default = (testInput, testSpecifications, testImplementations, testInterface) => {
9
- return (0, Node_js_1.default)(testInput, testSpecifications, testImplementations, Object.assign({ beforeAll(x) {
9
+ return (0, Node_js_1.default)(testInput, testSpecifications, testImplementations, Object.assign({ beforeAll: (x) => {
10
10
  // process.parentPort.postMessage(
11
11
  // `/docs/web/src/ClassicalComponent/test.html`
12
12
  // );
@@ -12,14 +12,22 @@ exports.testInterface = {
12
12
  // // resolve(x());
13
13
  // // });
14
14
  // },
15
- beforeEach: async (subject, initializer, artificer) => {
15
+ // beforeEach: async (subject, initializer, artificer): Promise<IStore> => {
16
+ // return new Promise((resolve, rej) => {
17
+ // resolve(React.createElement(subject));
18
+ // });
19
+ // },
20
+ andWhen: async (s, whenCB) => {
21
+ await whenCB(s());
16
22
  return new Promise((resolve, rej) => {
17
- const x = react_1.default.createElement(subject);
18
- console.log("react-element", x);
19
- resolve(x);
23
+ resolve(react_1.default.createElement(s));
20
24
  });
25
+ // return whenCB(s);
21
26
  },
22
- andWhen: function (s, whenCB) {
23
- return whenCB(s);
27
+ butThen: async (subject, thenCB) => {
28
+ await thenCB(subject());
29
+ return new Promise((resolve, rej) => {
30
+ resolve(react_1.default.createElement(subject));
31
+ });
24
32
  },
25
33
  };
@@ -5,6 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Node_js_1 = __importDefault(require("../../../Node.js"));
7
7
  const index_js_1 = require("./index.js");
8
- exports.default = (testImplementations, testSpecifications, testInput, testInterface) => {
9
- return (0, Node_js_1.default)(testInput, testSpecifications, testImplementations, Object.assign(Object.assign({}, index_js_1.testInterface), testInterface));
8
+ exports.default = (testImplementations, testSpecifications, testInput, testInterface = index_js_1.testInterface) => {
9
+ return (0, Node_js_1.default)(testInput, testSpecifications, testImplementations, testInterface
10
+ // {
11
+ // ...baseInterface,
12
+ // ...testInterface,
13
+ // }
14
+ );
10
15
  };
@@ -18,52 +18,26 @@ exports.default = (testInput, testSpecifications, testImplementations, testInter
18
18
  }
19
19
  }
20
20
  const t = (0, Web_js_1.default)(testInput, testSpecifications, testImplementations, {
21
- beforeAll: async (initialProps, artificer) => {
21
+ beforeAll: async (subject, artificer) => {
22
22
  return await new Promise((resolve, rej) => {
23
23
  const htmlElement = document.getElementById("root");
24
24
  if (htmlElement) {
25
25
  const domRoot = client_1.default.createRoot(htmlElement);
26
- // Ignore these type errors
27
- domRoot.render((0, react_1.createElement)(TesterantoComponent, Object.assign(Object.assign({}, initialProps), { done: (reactElement) => {
28
- resolve({
29
- htmlElement,
30
- reactElement,
31
- domRoot,
32
- });
33
- } }), []));
34
- // resolve({ htmlElement });
26
+ resolve({ domRoot, htmlElement });
35
27
  }
36
28
  });
37
29
  },
38
- // beforeEach: async (
39
- // s,
40
- // initializer,
41
- // testResource,
42
- // artificer,
43
- // initialValues
44
- // ): Promise<IStore> => {
45
- // return new Promise((resolve, rej) => {
46
- // console.log("beforeEach" + TesterantoComponent);
47
- // // const domRoot = ReactDom.createRoot(htmlElement);
48
- // // // Ignore these type errors
49
- // // domRoot.render(
50
- // // createElement(
51
- // // TesterantoComponent,
52
- // // {
53
- // // ...initializer,
54
- // // done: (reactElement) => {
55
- // // resolve({
56
- // // htmlElement,
57
- // // reactElement,
58
- // // domRoot,
59
- // // });
60
- // // },
61
- // // },
62
- // // []
63
- // // )
64
- // // );
65
- // });
66
- // },
30
+ beforeEach: async ({ domRoot, htmlElement }, initialValues, testResource, artificer) => {
31
+ return new Promise(async (resolve, rej) => {
32
+ domRoot.render((0, react_1.createElement)(TesterantoComponent, Object.assign(Object.assign({}, initialValues), { done: (reactElement) => {
33
+ resolve({
34
+ htmlElement,
35
+ reactElement,
36
+ domRoot,
37
+ });
38
+ } }), []));
39
+ });
40
+ },
67
41
  andWhen: function (s, whenCB) {
68
42
  return whenCB(s);
69
43
  },
@@ -31,22 +31,17 @@ const react_1 = __importDefault(require("react"));
31
31
  const react_test_renderer_1 = __importStar(require("react-test-renderer"));
32
32
  exports.testInterface = {
33
33
  beforeEach: function (CComponent, propsAndChildren) {
34
- function Link(props) {
35
- const p = props.props;
36
- const c = props.children;
37
- return react_1.default.createElement(CComponent, p, c);
34
+ function Link(proper) {
35
+ return react_1.default.createElement(CComponent, proper(), []);
38
36
  }
39
37
  return new Promise((res, rej) => {
40
38
  (0, react_test_renderer_1.act)(async () => {
41
- const p = propsAndChildren;
42
- const y = new CComponent(p.props);
43
39
  const testRenderer = await react_test_renderer_1.default.create(Link(propsAndChildren));
44
40
  res(testRenderer);
45
41
  });
46
42
  });
47
43
  },
48
44
  andWhen: async function (renderer, whenCB) {
49
- // console.log("andWhen", whenCB)
50
45
  await (0, react_test_renderer_1.act)(() => whenCB(renderer));
51
46
  return renderer;
52
47
  },
@@ -54,15 +49,12 @@ exports.testInterface = {
54
49
  // return whenCB()(s);
55
50
  // },
56
51
  butThen: async function (s, thenCB, tr) {
57
- console.log("butThen", thenCB.toString());
58
52
  return thenCB(s);
59
53
  },
60
54
  afterEach: async function (store, ndx, artificer) {
61
- // console.log("afterEach", store);
62
55
  return {};
63
56
  },
64
57
  afterAll: (store, artificer) => {
65
- // console.log("afterAll", store);
66
58
  return;
67
59
  },
68
60
  };
@@ -7,36 +7,40 @@ exports.WebTesteranto = void 0;
7
7
  const web_1 = require("./PM/web");
8
8
  const core_js_1 = __importDefault(require("./lib/core.js"));
9
9
  const index_js_1 = require("./lib/index.js");
10
+ let errorCallback = (e) => { };
11
+ let unhandledrejectionCallback = (event) => {
12
+ console.log("window.addEventListener unhandledrejection", event);
13
+ // cb({ error: event.reason.message });
14
+ // throw event;
15
+ };
10
16
  class WebTesteranto extends core_js_1.default {
11
17
  constructor(input, testSpecification, testImplementation, testResourceRequirement, testInterface) {
12
- super(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
18
+ super(input, testSpecification, testImplementation, testResourceRequirement, testInterface, (cb) => {
19
+ window.removeEventListener("error", errorCallback);
20
+ errorCallback = (e) => {
21
+ console.log("window.addEventListener error", e);
22
+ cb(e);
23
+ // throw e;
24
+ };
25
+ window.addEventListener("error", errorCallback);
26
+ window.removeEventListener("unhandledrejection", unhandledrejectionCallback);
27
+ /////////////////////
28
+ window.removeEventListener("unhandledrejection", unhandledrejectionCallback);
29
+ unhandledrejectionCallback = (event) => {
30
+ console.log("window.addEventListener unhandledrejection", event);
31
+ cb({ error: event.reason.message });
32
+ // throw event;
33
+ };
34
+ window.addEventListener("unhandledrejection", unhandledrejectionCallback);
35
+ });
13
36
  }
14
37
  async receiveTestResourceConfig(partialTestResource) {
15
38
  const t = partialTestResource; //JSON.parse(partialTestResource);
16
39
  const pm = new web_1.PM_Web(t);
17
40
  const { failed, artifacts, logPromise, features } = await this.testJobs[0].receiveTestResourceConfig(pm);
18
- pm.customclose();
19
41
  return new Promise((res, rej) => {
20
- res(features);
42
+ res({ features, failed });
21
43
  });
22
- // return features;
23
- // Promise.all([...artifacts, logPromise]).then(async () => {
24
- // console.log("hello world");
25
- // pm.customclose();
26
- // // we can't close the window becuase we might be taking a screenshot
27
- // // window.close();
28
- // // console.log(
29
- // // "(window as any).browser",
30
- // // JSON.stringify(await (window as any).browser)
31
- // // );
32
- // // var currentWindow = (await (window as any).browser).getCurrentWindow();
33
- // // window.close();
34
- // // var customWindow = window.open("", "_blank", "");
35
- // // customWindow.close();
36
- // // this.puppetMaster.browser.page
37
- // // window["customclose"]();
38
- // // console.log("goodbye", window["customclose"]());
39
- // });
40
44
  }
41
45
  }
42
46
  exports.WebTesteranto = WebTesteranto;
@@ -7,14 +7,12 @@ const fs_1 = __importDefault(require("fs"));
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const otherInputs = {};
9
9
  const register = (entrypoint, sources) => {
10
- console.log("register", entrypoint, sources);
11
10
  if (!otherInputs[entrypoint]) {
12
11
  otherInputs[entrypoint] = new Set();
13
12
  }
14
13
  sources.forEach((s) => otherInputs[entrypoint].add(s));
15
14
  };
16
15
  function tree(meta, key) {
17
- console.log("searching metafile for", key);
18
16
  const outputKey = Object.keys(meta.outputs).find((k) => {
19
17
  return meta.outputs[k].entryPoint === key;
20
18
  });