testeranto 0.94.0 → 0.100.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/bundle.js +4 -7
- package/dist/common/src/PM/main.js +160 -42
- package/dist/common/src/PM/node.js +20 -5
- package/dist/common/src/PM/web.js +19 -4
- package/dist/common/src/SubPackages/react/jsx/node.js +1 -6
- package/dist/common/src/cli.js +439 -0
- package/dist/common/src/cli2.js +144 -0
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +18 -6
- package/dist/common/src/esbuildConfigs/node.js +1 -4
- package/dist/common/src/esbuildConfigs/web.js +1 -1
- package/dist/common/src/lib/abstractBase.js +14 -91
- package/dist/common/src/lib/types.js +1 -0
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/src/PM/main.js +160 -42
- package/dist/module/src/PM/node.js +20 -5
- package/dist/module/src/PM/web.js +19 -4
- package/dist/module/src/SubPackages/react/jsx/node.js +1 -6
- package/dist/module/src/cli.js +411 -0
- package/dist/module/src/cli2.js +116 -0
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +18 -6
- package/dist/module/src/esbuildConfigs/node.js +1 -4
- package/dist/module/src/esbuildConfigs/web.js +1 -1
- package/dist/module/src/lib/abstractBase.js +14 -91
- package/dist/module/src/lib/types.js +1 -0
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/cli.mjs +1491 -0
- package/dist/prebuild/{run-tests.mjs → cli2.mjs} +203 -156
- package/dist/types/src/Node.d.ts +2 -2
- package/dist/types/src/PM/index.d.ts +10 -2
- package/dist/types/src/PM/main.d.ts +13 -7
- package/dist/types/src/PM/node.d.ts +9 -2
- package/dist/types/src/PM/web.d.ts +9 -3
- package/dist/types/src/SubPackages/puppeteer.d.ts +1 -1
- package/dist/types/src/SubPackages/react/component/node.d.ts +1 -1
- package/dist/types/src/SubPackages/react/component/web.d.ts +1 -1
- package/dist/types/src/SubPackages/react/jsx/node.d.ts +3 -3
- package/dist/types/src/SubPackages/react/jsx/web.d.ts +2 -2
- package/dist/types/src/SubPackages/react-dom/component/node.d.ts +2 -2
- package/dist/types/src/SubPackages/react-dom/component/web.d.ts +1 -1
- package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +1 -1
- package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +3 -2
- package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +2 -2
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +2 -2
- package/dist/types/src/Types.d.ts +60 -21
- package/dist/types/src/Web.d.ts +2 -2
- package/dist/types/src/lib/index.d.ts +1 -1
- package/dist/types/src/lib/types.d.ts +2 -30
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +11 -8
- package/src/PM/index.ts +12 -8
- package/src/PM/main.ts +218 -62
- package/src/PM/node.ts +42 -7
- package/src/PM/web.ts +33 -5
- package/src/SubPackages/react/jsx/node.ts +16 -5
- package/src/SubPackages/react-test-renderer/jsx/node.ts +16 -1
- package/src/Types.ts +362 -114
- package/src/cli.ts +535 -0
- package/src/cli2.ts +157 -0
- package/src/esbuildConfigs/inputFilesPlugin.ts +27 -6
- package/src/esbuildConfigs/node.ts +4 -7
- package/src/esbuildConfigs/web.ts +4 -3
- package/src/lib/abstractBase.ts +58 -115
- package/src/lib/types.ts +3 -177
- package/dist/common/src/Aider.js +0 -143
- package/dist/common/src/Project.js +0 -227
- package/dist/common/src/Puppeteer.js +0 -111
- package/dist/common/src/build-tests.js +0 -39
- package/dist/common/src/esbuildConfigs/features.js +0 -14
- package/dist/common/src/esbuildConfigs/report.js +0 -14
- package/dist/common/src/esbuildConfigs/tests.js +0 -13
- package/dist/common/src/run-tests.js +0 -39
- package/dist/module/src/Aider.js +0 -136
- package/dist/module/src/Project.js +0 -220
- package/dist/module/src/Puppeteer.js +0 -106
- package/dist/module/src/build-tests.js +0 -11
- package/dist/module/src/esbuildConfigs/features.js +0 -12
- package/dist/module/src/esbuildConfigs/report.js +0 -14
- package/dist/module/src/esbuildConfigs/tests.js +0 -11
- package/dist/module/src/run-tests.js +0 -11
- package/dist/prebuild/build-tests.mjs +0 -553
- package/dist/types/src/Aider.d.ts +0 -1
- package/dist/types/src/Project.d.ts +0 -12
- package/dist/types/src/Puppeteer.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/features.d.ts +0 -4
- package/dist/types/src/esbuildConfigs/report.d.ts +0 -0
- package/dist/types/src/esbuildConfigs/tests.d.ts +0 -4
- package/src/Aider.ts +0 -168
- package/src/Project.ts +0 -292
- package/src/Puppeteer.ts +0 -143
- package/src/build-tests.ts +0 -12
- package/src/esbuildConfigs/features.ts +0 -17
- package/src/esbuildConfigs/report.ts +0 -15
- package/src/esbuildConfigs/tests.ts +0 -14
- package/src/run-tests.ts +0 -12
- /package/dist/types/src/{build-tests.d.ts → cli.d.ts} +0 -0
- /package/dist/types/src/{run-tests.d.ts → cli2.d.ts} +0 -0
|
@@ -3,11 +3,22 @@ import path from "path";
|
|
|
3
3
|
import puppeteer from "puppeteer-core";
|
|
4
4
|
import crypto from "crypto";
|
|
5
5
|
import { PM } from "./index.js";
|
|
6
|
-
import { destinationOfRuntime } from "../utils.js";
|
|
7
6
|
const fileStreams3 = [];
|
|
8
7
|
const fPaths = [];
|
|
9
8
|
const files = {};
|
|
9
|
+
const recorders = {};
|
|
10
10
|
const screenshots = {};
|
|
11
|
+
const red = "\x1b[31m";
|
|
12
|
+
const green = "\x1b[32m";
|
|
13
|
+
const reset = "\x1b[0m"; // Resets to default color
|
|
14
|
+
const statusMessagePretty = (failures, test) => {
|
|
15
|
+
if (failures === 0) {
|
|
16
|
+
console.log(green + `${test} completed successfully` + reset);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.log(red + `${test} failed ${failures} times` + reset);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
11
22
|
export class PM_Main extends PM {
|
|
12
23
|
constructor(configs) {
|
|
13
24
|
super();
|
|
@@ -33,7 +44,7 @@ export class PM_Main extends PM {
|
|
|
33
44
|
}
|
|
34
45
|
};
|
|
35
46
|
this.launchNode = async (src, dest) => {
|
|
36
|
-
console.log("
|
|
47
|
+
console.log("! node", src);
|
|
37
48
|
this.register(src);
|
|
38
49
|
const destFolder = dest.replace(".mjs", "");
|
|
39
50
|
let argz = "";
|
|
@@ -80,25 +91,36 @@ export class PM_Main extends PM {
|
|
|
80
91
|
console.error("negative port makes no sense", src);
|
|
81
92
|
process.exit(-1);
|
|
82
93
|
}
|
|
83
|
-
const builtfile = dest
|
|
94
|
+
const builtfile = dest;
|
|
84
95
|
const webSideCares = [];
|
|
85
|
-
await Promise.all(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
// await Promise.all(
|
|
97
|
+
// testConfig[3].map(async (sidecar) => {
|
|
98
|
+
// if (sidecar[1] === "web") {
|
|
99
|
+
// const s = await this.launchWebSideCar(
|
|
100
|
+
// sidecar[0],
|
|
101
|
+
// destinationOfRuntime(sidecar[0], "web", this.configs),
|
|
102
|
+
// sidecar
|
|
103
|
+
// );
|
|
104
|
+
// webSideCares.push(s);
|
|
105
|
+
// return s;
|
|
106
|
+
// }
|
|
107
|
+
// if (sidecar[1] === "node") {
|
|
108
|
+
// return this.launchNodeSideCar(
|
|
109
|
+
// sidecar[0],
|
|
110
|
+
// destinationOfRuntime(sidecar[0], "node", this.configs),
|
|
111
|
+
// sidecar
|
|
112
|
+
// );
|
|
113
|
+
// }
|
|
114
|
+
// })
|
|
115
|
+
// );
|
|
95
116
|
this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
|
|
96
117
|
return module.default.then((defaultModule) => {
|
|
97
118
|
defaultModule
|
|
98
119
|
.receiveTestResourceConfig(argz)
|
|
99
120
|
.then(async ({ features, failed }) => {
|
|
100
|
-
this.receiveFeatures(features, destFolder);
|
|
101
|
-
console.log(`${src} completed with ${failed} errors`);
|
|
121
|
+
this.receiveFeatures(features, destFolder, src);
|
|
122
|
+
// console.log(`${src} completed with ${failed} errors`);
|
|
123
|
+
statusMessagePretty(failed, src);
|
|
102
124
|
})
|
|
103
125
|
.catch((e) => {
|
|
104
126
|
console.log(`${src} errored with`, e);
|
|
@@ -294,14 +316,18 @@ export class PM_Main extends PM {
|
|
|
294
316
|
}
|
|
295
317
|
}
|
|
296
318
|
};
|
|
297
|
-
this.launchWeb = (t, dest
|
|
298
|
-
console.log("
|
|
319
|
+
this.launchWeb = (t, dest) => {
|
|
320
|
+
console.log("! web", t);
|
|
299
321
|
this.register(t);
|
|
300
|
-
sidecars.map((sidecar) => {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
322
|
+
// sidecars.map((sidecar) => {
|
|
323
|
+
// if (sidecar[1] === "node") {
|
|
324
|
+
// return this.launchNodeSideCar(
|
|
325
|
+
// sidecar[0],
|
|
326
|
+
// destinationOfRuntime(sidecar[0], "node", this.configs),
|
|
327
|
+
// sidecar
|
|
328
|
+
// );
|
|
329
|
+
// }
|
|
330
|
+
// });
|
|
305
331
|
const destFolder = dest.replace(".mjs", "");
|
|
306
332
|
const webArgz = JSON.stringify({
|
|
307
333
|
name: dest,
|
|
@@ -309,9 +335,10 @@ export class PM_Main extends PM {
|
|
|
309
335
|
fs: destFolder,
|
|
310
336
|
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
311
337
|
});
|
|
338
|
+
const d = `${dest}?cacheBust=${Date.now()}`;
|
|
312
339
|
const evaluation = `
|
|
313
|
-
console.log("importing ${
|
|
314
|
-
import('${
|
|
340
|
+
console.log("importing ${d}");
|
|
341
|
+
import('${d}').then(async (x) => {
|
|
315
342
|
console.log("imported", (await x.default));
|
|
316
343
|
try {
|
|
317
344
|
return await (await x.default).receiveTestResourceConfig(${webArgz})
|
|
@@ -321,8 +348,8 @@ export class PM_Main extends PM {
|
|
|
321
348
|
})`;
|
|
322
349
|
const fileStreams2 = [];
|
|
323
350
|
const doneFileStream2 = [];
|
|
324
|
-
const stdoutStream = fs.createWriteStream(`${
|
|
325
|
-
const stderrStream = fs.createWriteStream(`${
|
|
351
|
+
const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
|
|
352
|
+
const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
|
|
326
353
|
this.browser
|
|
327
354
|
.newPage()
|
|
328
355
|
.then((page) => {
|
|
@@ -486,7 +513,7 @@ export class PM_Main extends PM {
|
|
|
486
513
|
files[t] = new Set();
|
|
487
514
|
}
|
|
488
515
|
// files[t].add(filepath);
|
|
489
|
-
fs.writeFileSync(
|
|
516
|
+
fs.writeFileSync(destFolder + "/manifest.json", JSON.stringify(Array.from(files[t])));
|
|
490
517
|
delete files[t];
|
|
491
518
|
Promise.all(screenshots[t] || []).then(() => {
|
|
492
519
|
delete screenshots[t];
|
|
@@ -521,12 +548,13 @@ export class PM_Main extends PM {
|
|
|
521
548
|
stdoutStream.write(JSON.stringify(log.location()));
|
|
522
549
|
stdoutStream.write(JSON.stringify(log.stackTrace()));
|
|
523
550
|
});
|
|
524
|
-
await page.goto(`file://${`${
|
|
551
|
+
await page.goto(`file://${`${destFolder}.html`}`, {});
|
|
525
552
|
await page
|
|
526
553
|
.evaluate(evaluation)
|
|
527
554
|
.then(async ({ failed, features }) => {
|
|
528
|
-
this.receiveFeatures(features, destFolder);
|
|
529
|
-
console.log(`${t} completed with ${failed} errors`);
|
|
555
|
+
this.receiveFeatures(features, destFolder, t);
|
|
556
|
+
// console.log(`${t} completed with ${failed} errors`);
|
|
557
|
+
statusMessagePretty(failed, t);
|
|
530
558
|
})
|
|
531
559
|
.catch((e) => {
|
|
532
560
|
console.log(`${t} errored with`, e);
|
|
@@ -537,7 +565,8 @@ export class PM_Main extends PM {
|
|
|
537
565
|
return page;
|
|
538
566
|
});
|
|
539
567
|
};
|
|
540
|
-
this.receiveFeatures = (features, destFolder) => {
|
|
568
|
+
this.receiveFeatures = (features, destFolder, srcTest) => {
|
|
569
|
+
const featureDestination = path.resolve(process.cwd(), "docs", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
|
|
541
570
|
features
|
|
542
571
|
.reduce(async (mm, featureStringKey) => {
|
|
543
572
|
const accum = await mm;
|
|
@@ -564,24 +593,33 @@ export class PM_Main extends PM {
|
|
|
564
593
|
// console.log("Symlink created successfully");
|
|
565
594
|
}
|
|
566
595
|
});
|
|
567
|
-
accum.push(newPath);
|
|
596
|
+
accum.files.push(newPath);
|
|
568
597
|
}
|
|
569
598
|
else if (u.protocol === "http:" || u.protocol === "https:") {
|
|
570
599
|
const newPath = `${process.cwd()}/docs/features/external${u.hostname}${u.pathname}`;
|
|
571
600
|
const body = await this.configs.featureIngestor(featureStringKey);
|
|
572
601
|
writeFileAndCreateDir(newPath, body);
|
|
573
|
-
accum.push(newPath);
|
|
602
|
+
accum.files.push(newPath);
|
|
574
603
|
}
|
|
575
604
|
}
|
|
576
605
|
else {
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
606
|
+
await fs.promises.mkdir(path.dirname(featureDestination), {
|
|
607
|
+
recursive: true,
|
|
608
|
+
});
|
|
609
|
+
// const newPath = `${process.cwd()}/docs/features/plain/${await sha256(
|
|
610
|
+
// featureStringKey
|
|
611
|
+
// )}`;
|
|
612
|
+
// writeFileAndCreateDir(
|
|
613
|
+
// `${featureDestination}/${await sha256(featureStringKey)}`,
|
|
614
|
+
// featureStringKey
|
|
615
|
+
// );
|
|
616
|
+
accum.strings.push(featureStringKey);
|
|
580
617
|
}
|
|
581
618
|
return accum;
|
|
582
|
-
}, Promise.resolve([]))
|
|
583
|
-
.then((
|
|
584
|
-
|
|
619
|
+
}, Promise.resolve({ files: [], strings: [] }))
|
|
620
|
+
.then(({ files, strings }) => {
|
|
621
|
+
// writeFileAndCreateDir(`${featureDestination}`, JSON.stringify(strings));
|
|
622
|
+
fs.writeFileSync(`${destFolder}/featurePrompt.txt`, files
|
|
585
623
|
.map((f) => {
|
|
586
624
|
return `/read ${f}`;
|
|
587
625
|
})
|
|
@@ -595,6 +633,33 @@ export class PM_Main extends PM {
|
|
|
595
633
|
this.configs.ports.forEach((element) => {
|
|
596
634
|
this.ports[element] = "true"; // set ports as open
|
|
597
635
|
});
|
|
636
|
+
globalThis["waitForSelector"] = async (pageKey, sel) => {
|
|
637
|
+
console.log("waitForSelector", pageKey, sel);
|
|
638
|
+
const page = (await this.browser.pages()).find((p) => p.mainFrame()._id === pageKey);
|
|
639
|
+
await (page === null || page === void 0 ? void 0 : page.waitForSelector(sel));
|
|
640
|
+
};
|
|
641
|
+
globalThis["screencastStop"] = async (path) => {
|
|
642
|
+
return recorders[path].stop();
|
|
643
|
+
};
|
|
644
|
+
globalThis["closePage"] = async (pageKey) => {
|
|
645
|
+
const page = (await this.browser.pages()).find((p) => p.mainFrame()._id === pageKey);
|
|
646
|
+
return page.close();
|
|
647
|
+
};
|
|
648
|
+
// globalThis["closePage"] = (p) => {
|
|
649
|
+
// console.log("closePage", p);
|
|
650
|
+
// return p.close();
|
|
651
|
+
// };
|
|
652
|
+
globalThis["goto"] = async (pageKey, url) => {
|
|
653
|
+
const page = (await this.browser.pages()).find((p) => p.mainFrame()._id === pageKey);
|
|
654
|
+
await (page === null || page === void 0 ? void 0 : page.goto(url));
|
|
655
|
+
return;
|
|
656
|
+
};
|
|
657
|
+
globalThis["newPage"] = () => {
|
|
658
|
+
return this.browser.newPage();
|
|
659
|
+
};
|
|
660
|
+
globalThis["pages"] = () => {
|
|
661
|
+
return this.browser.pages();
|
|
662
|
+
};
|
|
598
663
|
globalThis["mkdirSync"] = (fp) => {
|
|
599
664
|
if (!fs.existsSync(fp)) {
|
|
600
665
|
return fs.mkdirSync(fp, {
|
|
@@ -634,7 +699,31 @@ export class PM_Main extends PM {
|
|
|
634
699
|
globalThis["end"] = (uid) => {
|
|
635
700
|
fileStreams3[uid].end();
|
|
636
701
|
};
|
|
637
|
-
|
|
702
|
+
// async (ssOpts: ScreenshotOptions, testName: string) => {
|
|
703
|
+
// const p = ssOpts.path as string;
|
|
704
|
+
// const dir = path.dirname(p);
|
|
705
|
+
// fs.mkdirSync(dir, {
|
|
706
|
+
// recursive: true,
|
|
707
|
+
// });
|
|
708
|
+
// if (!files[testName]) {
|
|
709
|
+
// files[testName] = new Set();
|
|
710
|
+
// }
|
|
711
|
+
// files[testName].add(ssOpts.path as string);
|
|
712
|
+
// const sPromise = page.screenshot({
|
|
713
|
+
// ...ssOpts,
|
|
714
|
+
// path: p,
|
|
715
|
+
// });
|
|
716
|
+
// if (!screenshots[testName]) {
|
|
717
|
+
// screenshots[testName] = [];
|
|
718
|
+
// }
|
|
719
|
+
// screenshots[testName].push(sPromise);
|
|
720
|
+
// // sPromise.then(())
|
|
721
|
+
// await sPromise;
|
|
722
|
+
// return sPromise;
|
|
723
|
+
// // page.evaluate(`window["screenshot done"]`);
|
|
724
|
+
// };
|
|
725
|
+
globalThis["customScreenShot"] = async (opts, pageKey, testName) => {
|
|
726
|
+
const page = (await this.browser.pages()).find((p) => p.mainFrame()._id === pageKey);
|
|
638
727
|
const p = opts.path;
|
|
639
728
|
const dir = path.dirname(p);
|
|
640
729
|
fs.mkdirSync(dir, {
|
|
@@ -652,6 +741,17 @@ export class PM_Main extends PM {
|
|
|
652
741
|
await sPromise;
|
|
653
742
|
return sPromise;
|
|
654
743
|
};
|
|
744
|
+
globalThis["screencast"] = async (opts, pageKey) => {
|
|
745
|
+
const page = (await this.browser.pages()).find((p) => p.mainFrame()._id === pageKey);
|
|
746
|
+
const p = opts.path;
|
|
747
|
+
const dir = path.dirname(p);
|
|
748
|
+
fs.mkdirSync(dir, {
|
|
749
|
+
recursive: true,
|
|
750
|
+
});
|
|
751
|
+
const recorder = await (page === null || page === void 0 ? void 0 : page.screencast(Object.assign(Object.assign({}, opts), { path: p })));
|
|
752
|
+
recorders[opts.path] = recorder;
|
|
753
|
+
return opts.path;
|
|
754
|
+
};
|
|
655
755
|
// globalThis["customclose"] = (p: string, testName: string) => {
|
|
656
756
|
// if (!files[testName]) {
|
|
657
757
|
// files[testName] = new Set();
|
|
@@ -663,13 +763,28 @@ export class PM_Main extends PM {
|
|
|
663
763
|
// delete files[testName];
|
|
664
764
|
// };
|
|
665
765
|
}
|
|
766
|
+
customclose() {
|
|
767
|
+
throw new Error("Method not implemented.");
|
|
768
|
+
}
|
|
769
|
+
waitForSelector(p, s) {
|
|
770
|
+
throw new Error("Method not implemented.");
|
|
771
|
+
}
|
|
772
|
+
closePage(p) {
|
|
773
|
+
throw new Error("Method not implemented.");
|
|
774
|
+
}
|
|
775
|
+
newPage() {
|
|
776
|
+
throw new Error("Method not implemented.");
|
|
777
|
+
}
|
|
778
|
+
goto(p, url) {
|
|
779
|
+
throw new Error("Method not implemented.");
|
|
780
|
+
}
|
|
666
781
|
$(selector) {
|
|
667
782
|
throw new Error("Method not implemented.");
|
|
668
783
|
}
|
|
669
784
|
screencast(opts) {
|
|
670
785
|
throw new Error("Method not implemented.");
|
|
671
786
|
}
|
|
672
|
-
customScreenShot(opts) {
|
|
787
|
+
customScreenShot(opts, cdpPage) {
|
|
673
788
|
throw new Error("Method not implemented.");
|
|
674
789
|
}
|
|
675
790
|
end(accessObject) {
|
|
@@ -754,6 +869,9 @@ export class PM_Main extends PM {
|
|
|
754
869
|
isDisabled(selector) {
|
|
755
870
|
throw new Error("Method not implemented.");
|
|
756
871
|
}
|
|
872
|
+
screencastStop(s) {
|
|
873
|
+
throw new Error("Method not implemented.");
|
|
874
|
+
}
|
|
757
875
|
////////////////////////////////////////////////////////////////////////////////
|
|
758
876
|
async startPuppeteer(options, destfolder) {
|
|
759
877
|
this.browser = (await puppeteer.launch(options));
|
|
@@ -769,7 +887,7 @@ async function writeFileAndCreateDir(filePath, data) {
|
|
|
769
887
|
const dirPath = path.dirname(filePath);
|
|
770
888
|
try {
|
|
771
889
|
await fs.promises.mkdir(dirPath, { recursive: true });
|
|
772
|
-
await fs.
|
|
890
|
+
await fs.appendFileSync(filePath, data);
|
|
773
891
|
}
|
|
774
892
|
catch (error) {
|
|
775
893
|
console.error(`Error writing file: ${error}`);
|
|
@@ -8,10 +8,19 @@ export class PM_Node extends PM {
|
|
|
8
8
|
this.server = {};
|
|
9
9
|
this.testResourceConfiguration = t;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
waitForSelector(p, s) {
|
|
12
|
+
return globalThis["waitForSelector"](p, s);
|
|
13
|
+
}
|
|
14
|
+
closePage(p) {
|
|
15
|
+
return globalThis["closePage"](p);
|
|
16
|
+
}
|
|
17
|
+
goto(cdpPage, url) {
|
|
18
|
+
return globalThis["goto"](cdpPage.mainFrame()._id, url);
|
|
13
19
|
}
|
|
14
|
-
|
|
20
|
+
newPage() {
|
|
21
|
+
return globalThis["newPage"]();
|
|
22
|
+
}
|
|
23
|
+
$(selector) {
|
|
15
24
|
throw new Error("Method not implemented.");
|
|
16
25
|
}
|
|
17
26
|
isDisabled(selector) {
|
|
@@ -35,8 +44,14 @@ export class PM_Node extends PM {
|
|
|
35
44
|
click(selector) {
|
|
36
45
|
return globalThis["click"](selector);
|
|
37
46
|
}
|
|
38
|
-
|
|
39
|
-
return globalThis["
|
|
47
|
+
screencast(opts, page) {
|
|
48
|
+
return globalThis["screencast"](Object.assign(Object.assign({}, opts), { path: this.testResourceConfiguration.fs + "/" + opts.path }), page.mainFrame()._id, this.testResourceConfiguration.name);
|
|
49
|
+
}
|
|
50
|
+
screencastStop(p) {
|
|
51
|
+
return globalThis["screencastStop"](p);
|
|
52
|
+
}
|
|
53
|
+
customScreenShot(opts, cdpPage) {
|
|
54
|
+
return globalThis["customScreenShot"](Object.assign(Object.assign({}, opts), { path: this.testResourceConfiguration.fs + "/" + opts.path }), cdpPage.mainFrame()._id, this.testResourceConfiguration.name);
|
|
40
55
|
}
|
|
41
56
|
existsSync(destFolder) {
|
|
42
57
|
return globalThis["existsSync"](this.testResourceConfiguration.fs + "/" + destFolder);
|
|
@@ -5,11 +5,26 @@ export class PM_Web extends PM {
|
|
|
5
5
|
this.server = {};
|
|
6
6
|
this.testResourceConfiguration = t;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
return window["
|
|
8
|
+
waitForSelector(p, s) {
|
|
9
|
+
return window["waitForSelector"](p, s);
|
|
10
10
|
}
|
|
11
11
|
screencast(opts) {
|
|
12
|
-
|
|
12
|
+
return window["screencast"](Object.assign(Object.assign({}, opts), { path: this.testResourceConfiguration.fs + "/" + opts.path }), this.testResourceConfiguration.name);
|
|
13
|
+
}
|
|
14
|
+
screencastStop(recorder) {
|
|
15
|
+
return window["screencastStop"](recorder);
|
|
16
|
+
}
|
|
17
|
+
closePage(p) {
|
|
18
|
+
return window["closePage"](p);
|
|
19
|
+
}
|
|
20
|
+
goto(p, url) {
|
|
21
|
+
return window["goto"](p, url);
|
|
22
|
+
}
|
|
23
|
+
newPage() {
|
|
24
|
+
return window["newPage"]();
|
|
25
|
+
}
|
|
26
|
+
$(selector) {
|
|
27
|
+
return window["$"](selector);
|
|
13
28
|
}
|
|
14
29
|
isDisabled(selector) {
|
|
15
30
|
return window["isDisabled"](selector);
|
|
@@ -38,7 +53,7 @@ export class PM_Web extends PM {
|
|
|
38
53
|
existsSync(destFolder) {
|
|
39
54
|
return window["existsSync"](destFolder);
|
|
40
55
|
}
|
|
41
|
-
mkdirSync() {
|
|
56
|
+
mkdirSync(x) {
|
|
42
57
|
return window["mkdirSync"](this.testResourceConfiguration.fs + "/");
|
|
43
58
|
}
|
|
44
59
|
write(writeObject, contents) {
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import Testeranto from "../../../Node.js";
|
|
2
2
|
import { testInterface as baseInterface, } from "./index.js";
|
|
3
3
|
export default (testImplementations, testSpecifications, testInput, testInterface = baseInterface) => {
|
|
4
|
-
return Testeranto(testInput, testSpecifications, testImplementations, testInterface
|
|
5
|
-
// {
|
|
6
|
-
// ...baseInterface,
|
|
7
|
-
// ...testInterface,
|
|
8
|
-
// }
|
|
9
|
-
);
|
|
4
|
+
return Testeranto(testInput, testSpecifications, testImplementations, testInterface);
|
|
10
5
|
};
|