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.
- package/dist/common/src/Node.js +5 -3
- package/dist/common/src/PM/main.js +102 -92
- package/dist/common/src/Project.js +5 -3
- package/dist/common/src/Puppeteer.js +1 -3
- package/dist/common/src/SubPackages/puppeteer.js +1 -1
- package/dist/common/src/SubPackages/react/jsx/index.js +14 -6
- package/dist/common/src/SubPackages/react/jsx/node.js +7 -2
- package/dist/common/src/SubPackages/react-dom/component/web.js +13 -39
- package/dist/common/src/SubPackages/react-test-renderer/component/interface.js +2 -10
- package/dist/common/src/Web.js +25 -21
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -2
- package/dist/common/src/lib/abstractBase.js +29 -184
- package/dist/common/src/lib/basebuilder.js +1 -11
- package/dist/common/src/lib/classBuilder.js +1 -1
- package/dist/common/src/lib/core.js +8 -28
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/src/Node.js +5 -3
- package/dist/module/src/PM/main.js +102 -92
- package/dist/module/src/Project.js +5 -3
- package/dist/module/src/Puppeteer.js +1 -3
- package/dist/module/src/SubPackages/puppeteer.js +1 -1
- package/dist/module/src/SubPackages/react/jsx/index.js +14 -6
- package/dist/module/src/SubPackages/react/jsx/node.js +7 -2
- package/dist/module/src/SubPackages/react-dom/component/web.js +13 -39
- package/dist/module/src/SubPackages/react-test-renderer/component/interface.js +2 -10
- package/dist/module/src/Web.js +25 -21
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -2
- package/dist/module/src/lib/abstractBase.js +29 -184
- package/dist/module/src/lib/basebuilder.js +1 -11
- package/dist/module/src/lib/classBuilder.js +1 -1
- package/dist/module/src/lib/core.js +8 -28
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/build-tests.mjs +4 -3
- package/dist/prebuild/run-tests.mjs +30 -66
- package/dist/types/src/Node.d.ts +4 -1
- package/dist/types/src/PM/main.d.ts +2 -1
- package/dist/types/src/SubPackages/react/jsx/node.d.ts +1 -1
- package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +1 -1
- package/dist/types/src/Web.d.ts +2 -2
- package/dist/types/src/lib/abstractBase.d.ts +6 -2
- package/dist/types/src/lib/core.d.ts +3 -3
- package/dist/types/src/lib/types.d.ts +5 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/src/Node.ts +6 -3
- package/src/PM/main.ts +121 -111
- package/src/Project.ts +6 -5
- package/src/Puppeteer.ts +1 -3
- package/src/SubPackages/puppeteer.ts +1 -1
- package/src/SubPackages/react/jsx/index.ts +15 -7
- package/src/SubPackages/react/jsx/node.ts +6 -5
- package/src/SubPackages/react-dom/component/web.ts +28 -51
- package/src/SubPackages/react-test-renderer/component/interface.ts +4 -11
- package/src/Web.ts +45 -23
- package/src/esbuildConfigs/inputFilesPlugin.ts +0 -3
- package/src/lib/abstractBase.ts +38 -188
- package/src/lib/basebuilder.ts +1 -12
- package/src/lib/classBuilder.ts +2 -1
- package/src/lib/core.ts +17 -29
- package/src/lib/types.ts +3 -1
package/dist/common/src/Node.js
CHANGED
|
@@ -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
|
-
|
|
113
|
+
const webSideCares = [];
|
|
114
|
+
await Promise.all(testConfig[3].map(async (sidecar) => {
|
|
114
115
|
if (sidecar[1] === "web") {
|
|
115
|
-
|
|
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(
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
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
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
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(
|
|
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("
|
|
636
|
+
// console.log(testName, "writeFileSync", filepath, testName);
|
|
632
637
|
// Create directories if they don't exist
|
|
633
|
-
const dir = path_1.default.dirname(filepath
|
|
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
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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,
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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(
|
|
35
|
-
|
|
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
|
};
|
package/dist/common/src/Web.js
CHANGED
|
@@ -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
|
});
|