testeranto 0.172.0 → 0.173.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/README.md +2 -4
- package/dist/common/src/PM/base.js +4 -0
- package/dist/common/src/PM/main.js +11 -4
- package/dist/common/src/PM/node.js +1 -1
- package/dist/common/src/PM/web.js +3 -3
- package/dist/common/src/ReportServer.js +2 -126
- package/dist/common/src/ReportServer.test.ts/index.js +78 -0
- package/dist/common/src/ReportServerLib.js +135 -0
- package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +1 -1
- package/dist/common/src/lib/abstractBase.js +2 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +10 -9
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +7 -7
- package/dist/common/src/lib/basebuilder.js +8 -2
- package/dist/common/src/lib/pmProxy.js +54 -150
- package/dist/common/testeranto.config.js +35 -20
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/src/PM/base.js +4 -0
- package/dist/module/src/PM/main.js +11 -4
- package/dist/module/src/PM/node.js +1 -1
- package/dist/module/src/PM/web.js +3 -3
- package/dist/module/src/ReportServer.js +2 -123
- package/dist/module/src/ReportServer.test.ts/index.js +73 -0
- package/dist/module/src/ReportServerLib.js +128 -0
- package/dist/module/src/TestPage.js +29 -17
- package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +1 -1
- package/dist/module/src/components/pure/TestPageView.js +29 -17
- package/dist/module/src/lib/abstractBase.js +2 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +10 -9
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +7 -7
- package/dist/module/src/lib/basebuilder.js +8 -2
- package/dist/module/src/lib/pmProxy.js +54 -150
- package/dist/module/testeranto.config.js +35 -20
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/App.js +3 -3
- package/dist/prebuild/ReportServer.mjs +15 -9
- package/dist/prebuild/run.mjs +14 -4
- package/dist/types/src/PM/node.d.ts +1 -1
- package/dist/types/src/PM/web.d.ts +1 -1
- package/dist/types/src/ReportServer.test.ts/index.d.ts +29 -0
- package/dist/types/src/ReportServerLib.d.ts +2 -0
- package/dist/types/src/Types.d.ts +0 -1
- package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +2 -1
- package/dist/types/src/lib/abstractBase.d.ts +1 -1
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +7 -4
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/PM/base.ts +5 -0
- package/src/PM/main.ts +12 -4
- package/src/PM/node.ts +1 -1
- package/src/PM/web.ts +3 -3
- package/src/ReportServer.test.ts/index.ts +194 -0
- package/src/ReportServer.ts +2 -132
- package/src/ReportServerLib.ts +144 -0
- package/src/TestPage.tsx +65 -5
- package/src/Types.ts +0 -1
- package/src/components/pure/ProjectPageView.test/implementation.tsx +1 -1
- package/src/components/pure/TestPageView.tsx +65 -5
- package/src/lib/abstractBase.ts +4 -1
- package/src/lib/baseBuilder.test/baseBuilder.test.implementation.ts +22 -10
- package/src/lib/baseBuilder.test/baseBuilder.test.specification.ts +9 -9
- package/src/lib/baseBuilder.test/baseBuilder.test.types.ts +7 -4
- package/src/lib/basebuilder.ts +7 -4
- package/src/lib/pmProxy.ts +78 -155
- package/testeranto/App.js +3 -3
- package/testeranto/bundles/node/allTests/metafile.json +38 -781
- package/testeranto/bundles/node/allTests/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +983 -24
- package/testeranto/bundles/node/core/metafile.json +486 -0
- package/testeranto/bundles/{pure/allTests/chunk-VMUSFSZM.mjs → node/core/src/lib/baseBuilder.test/baseBuilder.test.node.mjs} +797 -412
- package/testeranto/bundles/node/staticSite/metafile.json +593 -0
- package/testeranto/bundles/node/staticSite/src/ReportServer.test.ts/index.mjs +1594 -0
- package/testeranto/bundles/pure/allTests/metafile.json +122 -550
- package/testeranto/bundles/pure/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +740 -27
- package/testeranto/bundles/pure/core/metafile.json +626 -0
- package/testeranto/bundles/{node/allTests/chunk-E75CSRER.mjs → pure/core/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs} +777 -483
- package/testeranto/bundles/pure/staticSite/metafile.json +8 -0
- package/testeranto/bundles/web/allTests/metafile.json +777 -22
- package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs +893 -45
- package/testeranto/bundles/web/core/metafile.json +780 -0
- package/testeranto/bundles/web/core/src/lib/baseBuilder.test/baseBuilder.test.web.html +19 -0
- package/testeranto/bundles/web/{allTests/chunk-U7AW26HL.mjs → core/src/lib/baseBuilder.test/baseBuilder.test.web.mjs} +506 -411
- package/testeranto/bundles/web/staticSite/metafile.json +8 -0
- package/testeranto/projects.json +2 -1
- package/testeranto/reports/allTests/config.json +0 -64
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +2 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/logs.txt +11 -13
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +10 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +10 -18
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +25 -13
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +2 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +8 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +24 -12
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +2 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +49 -55
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +12 -2
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +10 -18
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +24 -12
- package/testeranto/reports/allTests/summary.json +6 -62
- package/testeranto/reports/core/config.json +24 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +2 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/logs.txt +32 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/message.txt +2 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +26 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +69 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +74 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +2 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message.txt +2 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +26 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +74 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +2 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +61 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/message.txt +2 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +26 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +69 -0
- package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +74 -0
- package/testeranto/reports/core/summary.json +23 -0
- package/testeranto/reports/staticSite/config.json +24 -0
- package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/lint_errors.txt +5 -0
- package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/logs.txt +44 -0
- package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/message.txt +2 -0
- package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/prompt.txt +23 -0
- package/testeranto/reports/{allTests/src/lib/core.test/core.test → staticSite/src/ReportServer.test.ts/index}/node/type_errors.txt +21 -32
- package/testeranto/reports/staticSite/summary.json +9 -0
- package/testeranto/reportsnode_build_errors +8 -11
- package/testeranto.config.ts +37 -20
- package/testeranto/bundles/node/allTests/chunk-3EUGBAOM.mjs +0 -113
- package/testeranto/bundles/node/allTests/chunk-M6DO7VMB.mjs +0 -252
- package/testeranto/bundles/node/allTests/src/lib/BaseSuite.test/node.test.mjs +0 -323
- package/testeranto/bundles/node/allTests/src/lib/classBuilder.test/classBuilder.test.mjs +0 -411
- package/testeranto/bundles/node/allTests/src/lib/core.test/core.test.mjs +0 -528
- package/testeranto/bundles/node/allTests/src/lib/pmProxy.test/index.mjs +0 -4752
- package/testeranto/bundles/pure/allTests/chunk-KHDVEHF7.mjs +0 -185
- package/testeranto/bundles/pure/allTests/src/Pure.test.mjs +0 -429
- package/testeranto/bundles/pure/allTests/src/lib/BaseSuite.test/pure.test.mjs +0 -425
- package/testeranto/bundles/web/allTests/chunk-HPYA4YZC.mjs +0 -2283
- package/testeranto/bundles/web/allTests/src/components/pure/ProjectPageView.test/index.html +0 -19
- package/testeranto/bundles/web/allTests/src/components/pure/ProjectPageView.test/index.mjs +0 -37524
- package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.html +0 -19
- package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.mjs +0 -440
- package/testeranto/reports/allTests/src/Pure.test/pure/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/Pure.test/pure/message.txt +0 -2
- package/testeranto/reports/allTests/src/Pure.test/pure/prompt.txt +0 -13
- package/testeranto/reports/allTests/src/Pure.test/pure/type_errors.txt +0 -101
- package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +0 -13
- package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/logs.txt +0 -50
- package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/message.txt +0 -2
- package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/prompt.txt +0 -17
- package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/tests.json +0 -32
- package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +0 -68
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/logs.txt +0 -52
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -13
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/tests.json +0 -31
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/type_errors.txt +0 -111
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/bdd_errors.txt +0 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -14
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/tests.json +0 -31
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +0 -111
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/bdd_errors.txt +0 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/logs.txt +0 -108
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -14
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/tests.json +0 -31
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -111
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/bdd_errors.txt +0 -1
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt +0 -700
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/prompt.txt +0 -16
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/tests.json +0 -164
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/type_errors.txt +0 -138
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/lint_errors.txt +0 -21
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/logs.txt +0 -7
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/prompt.txt +0 -18
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/bdd_errors.txt +0 -1
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/lint_errors.txt +0 -20
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +0 -31
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/prompt.txt +0 -16
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/tests.json +0 -134
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/type_errors.txt +0 -76
- package/testeranto/reportspure_build_errors +0 -343
- package/testeranto/reportsweb_build_errors +0 -25
- /package/testeranto/reports/{allTests/src/components/pure/ProjectPageView.test/index/web → core/src/lib/baseBuilder.test/baseBuilder.test.node/node}/bdd_errors.txt +0 -0
- /package/testeranto/reports/{allTests/src/lib/BaseSuite.test/node.test/node → core/src/lib/baseBuilder.test/baseBuilder.test.web/web}/bdd_errors.txt +0 -0
|
@@ -113,6 +113,10 @@ export class PM_Base {
|
|
|
113
113
|
return false;
|
|
114
114
|
}
|
|
115
115
|
async writeFileSync(filepath, contents, testName) {
|
|
116
|
+
console.log("writeFileSync");
|
|
117
|
+
console.log("filepath", filepath);
|
|
118
|
+
console.log("contents", contents);
|
|
119
|
+
console.log("testName", testName);
|
|
116
120
|
return new Promise(async (res) => {
|
|
117
121
|
fs.mkdirSync(path.dirname(filepath), {
|
|
118
122
|
recursive: true,
|
|
@@ -69,10 +69,12 @@ function isValidUrl(string) {
|
|
|
69
69
|
}
|
|
70
70
|
// Wait for file to exist, checks every 2 seconds by default
|
|
71
71
|
async function pollForFile(path, timeout = 2000) {
|
|
72
|
+
console.log(`pollForFile: ${path}...`);
|
|
72
73
|
const intervalObj = setInterval(function () {
|
|
73
74
|
const file = path;
|
|
74
75
|
const fileExists = fs.existsSync(file);
|
|
75
76
|
if (fileExists) {
|
|
77
|
+
console.log(`metafile found: ${path}!`);
|
|
76
78
|
clearInterval(intervalObj);
|
|
77
79
|
}
|
|
78
80
|
}, timeout);
|
|
@@ -281,7 +283,12 @@ export class PM_Main extends PM_WithEslintAndTsc {
|
|
|
281
283
|
const ipcfile = "/tmp/tpipe_" + Math.random();
|
|
282
284
|
const child = spawn("node",
|
|
283
285
|
// "node",
|
|
284
|
-
[
|
|
286
|
+
[
|
|
287
|
+
// "--inspect-brk",
|
|
288
|
+
builtfile,
|
|
289
|
+
testResources,
|
|
290
|
+
ipcfile,
|
|
291
|
+
], {
|
|
285
292
|
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
286
293
|
});
|
|
287
294
|
let buffer = new Buffer("");
|
|
@@ -758,7 +765,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
|
|
|
758
765
|
close();
|
|
759
766
|
});
|
|
760
767
|
page.on("console", (log) => {
|
|
761
|
-
console.log("console message: ", log.text());
|
|
768
|
+
// console.log("console message: ", log.text());
|
|
762
769
|
if (oStream.closed) {
|
|
763
770
|
console.log("missed console message: ", log.text());
|
|
764
771
|
return;
|
|
@@ -995,9 +1002,9 @@ export class PM_Main extends PM_WithEslintAndTsc {
|
|
|
995
1002
|
slowMo: 1,
|
|
996
1003
|
waitForInitialPage: false,
|
|
997
1004
|
executablePath,
|
|
998
|
-
headless:
|
|
1005
|
+
headless: true,
|
|
999
1006
|
dumpio: false,
|
|
1000
|
-
devtools:
|
|
1007
|
+
devtools: false,
|
|
1001
1008
|
args: [
|
|
1002
1009
|
"--disable-features=site-per-process",
|
|
1003
1010
|
"--allow-file-access-from-files",
|
|
@@ -108,7 +108,7 @@ export class PM_Node extends PM {
|
|
|
108
108
|
async write(uid, contents) {
|
|
109
109
|
return await this.send("write", ...arguments);
|
|
110
110
|
}
|
|
111
|
-
async writeFileSync(filepath, contents) {
|
|
111
|
+
async writeFileSync([filepath, contents]) {
|
|
112
112
|
return await this.send("writeFileSync", this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
|
|
113
113
|
}
|
|
114
114
|
async createWriteStream(filepath) {
|
|
@@ -67,8 +67,8 @@ export class PM_Web extends PM {
|
|
|
67
67
|
customScreenShot(x, y) {
|
|
68
68
|
const opts = x[0];
|
|
69
69
|
const page = x[1];
|
|
70
|
-
console.log("customScreenShot 2 opts", opts);
|
|
71
|
-
console.log("customScreenShot 2 page", page);
|
|
70
|
+
// console.log("customScreenShot 2 opts", opts);
|
|
71
|
+
// console.log("customScreenShot 2 page", page);
|
|
72
72
|
return window["customScreenShot"](Object.assign(Object.assign({}, opts), { path: this.testResourceConfiguration.fs + "/" + opts.path }), this.testResourceConfiguration.name, page);
|
|
73
73
|
}
|
|
74
74
|
existsSync(destFolder) {
|
|
@@ -80,7 +80,7 @@ export class PM_Web extends PM {
|
|
|
80
80
|
write(uid, contents) {
|
|
81
81
|
return window["write"](uid, contents);
|
|
82
82
|
}
|
|
83
|
-
writeFileSync(filepath, contents) {
|
|
83
|
+
writeFileSync([filepath, contents]) {
|
|
84
84
|
return window["writeFileSync"](this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
|
|
85
85
|
}
|
|
86
86
|
createWriteStream(filepath) {
|
|
@@ -1,124 +1,3 @@
|
|
|
1
1
|
// simple http server to preview reports
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import path from "path";
|
|
5
|
-
import fs from "fs";
|
|
6
|
-
const fileServer = new staticServer.Server("./", {
|
|
7
|
-
cache: false,
|
|
8
|
-
headers: {
|
|
9
|
-
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
10
|
-
"Pragma": "no-cache",
|
|
11
|
-
"Expires": "0"
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
const server = http.createServer((req, res) => {
|
|
15
|
-
// Handle potential double responses
|
|
16
|
-
let responded = false;
|
|
17
|
-
const safeResponse = (handler) => {
|
|
18
|
-
if (responded)
|
|
19
|
-
return;
|
|
20
|
-
responded = true;
|
|
21
|
-
try {
|
|
22
|
-
handler();
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
console.error('Error handling request:', err);
|
|
26
|
-
if (!res.headersSent) {
|
|
27
|
-
res.writeHead(500);
|
|
28
|
-
}
|
|
29
|
-
res.end('Internal Server Error');
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
req.on('error', (err) => {
|
|
33
|
-
console.error('Request error:', err);
|
|
34
|
-
safeResponse(() => {
|
|
35
|
-
if (!res.headersSent) {
|
|
36
|
-
res.writeHead(400);
|
|
37
|
-
}
|
|
38
|
-
res.end('Bad Request');
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
req.on('end', () => {
|
|
42
|
-
safeResponse(() => {
|
|
43
|
-
const filePath = path.join(process.cwd(), req.url || '');
|
|
44
|
-
// First check if file exists
|
|
45
|
-
fs.stat(filePath, (err, stats) => {
|
|
46
|
-
if (err || !stats.isFile()) {
|
|
47
|
-
// Check if directory exists
|
|
48
|
-
fs.stat(filePath, (dirErr, dirStats) => {
|
|
49
|
-
if (!dirErr && dirStats.isDirectory()) {
|
|
50
|
-
// Serve directory listing
|
|
51
|
-
fs.readdir(filePath, (readErr, files) => {
|
|
52
|
-
if (readErr) {
|
|
53
|
-
res.writeHead(500);
|
|
54
|
-
return res.end('Error reading directory');
|
|
55
|
-
}
|
|
56
|
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
57
|
-
res.write(`
|
|
58
|
-
<html>
|
|
59
|
-
<head>
|
|
60
|
-
<title>Directory Listing: ${req.url}</title>
|
|
61
|
-
<style>
|
|
62
|
-
body { font-family: sans-serif; margin: 2rem; }
|
|
63
|
-
h1 { color: #333; }
|
|
64
|
-
ul { list-style: none; padding: 0; }
|
|
65
|
-
li { padding: 0.5rem; }
|
|
66
|
-
li a { color: #0366d6; text-decoration: none; }
|
|
67
|
-
li a:hover { text-decoration: underline; }
|
|
68
|
-
</style>
|
|
69
|
-
</head>
|
|
70
|
-
<body>
|
|
71
|
-
<h1>Directory: ${req.url}</h1>
|
|
72
|
-
<ul>
|
|
73
|
-
${files.map(file => `
|
|
74
|
-
<li>
|
|
75
|
-
<a href="${path.join(req.url || '', file)}">
|
|
76
|
-
${file}${file.endsWith('/') ? '/' : ''}
|
|
77
|
-
</a>
|
|
78
|
-
</li>
|
|
79
|
-
`).join('')}
|
|
80
|
-
</ul>
|
|
81
|
-
</body>
|
|
82
|
-
</html>
|
|
83
|
-
`);
|
|
84
|
-
res.end();
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
// Neither file nor directory exists - send 404
|
|
89
|
-
if (!res.headersSent) {
|
|
90
|
-
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
91
|
-
res.end('File not found');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
// File exists - serve it through node-static
|
|
98
|
-
const serve = () => {
|
|
99
|
-
fileServer.serve(req, res, (err) => {
|
|
100
|
-
if (err && !res.headersSent) {
|
|
101
|
-
res.writeHead(err.status || 500);
|
|
102
|
-
res.end(err.message);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
};
|
|
106
|
-
// Ensure we don't double-serve
|
|
107
|
-
if (!res.headersSent) {
|
|
108
|
-
serve();
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
req.resume();
|
|
114
|
-
});
|
|
115
|
-
server.listen(8080, () => {
|
|
116
|
-
console.log('Server running on http://localhost:8080');
|
|
117
|
-
console.log('Serving files from:', process.cwd());
|
|
118
|
-
});
|
|
119
|
-
server.on('error', (err) => {
|
|
120
|
-
console.error('Server error:', err);
|
|
121
|
-
});
|
|
122
|
-
process.on('uncaughtException', (err) => {
|
|
123
|
-
console.error('Uncaught exception:', err);
|
|
124
|
-
});
|
|
2
|
+
import { ReportServerOfPort } from "./ReportServerLib";
|
|
3
|
+
ReportServerOfPort(process.argv[2]);
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
4
|
+
import testeranto from "../Node";
|
|
5
|
+
import { ReportServerOfPort } from "../ReportServerLib";
|
|
6
|
+
const specification = (Suite, Given, When, Then) => [
|
|
7
|
+
Suite.Default("the http server which is used in development", {
|
|
8
|
+
initialization: Given["the http server which is used in development"](["It should serve the front page", "It should serve the ReportApp"], [], [
|
|
9
|
+
Then["the frontpage looks good"](),
|
|
10
|
+
// Then["the projects page looks good"](),
|
|
11
|
+
// Then["a project page looks good"](),
|
|
12
|
+
// Then["a test page looks good"](),
|
|
13
|
+
]),
|
|
14
|
+
}),
|
|
15
|
+
];
|
|
16
|
+
const implementation = {
|
|
17
|
+
suites: {
|
|
18
|
+
Default: "the http server which is used in development",
|
|
19
|
+
},
|
|
20
|
+
givens: {
|
|
21
|
+
"the http server which is used in development": function (subject) {
|
|
22
|
+
// throw new Error("Function not implemented.");
|
|
23
|
+
return subject;
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// There are no "whens", it is a stateless server.
|
|
27
|
+
whens: {},
|
|
28
|
+
thens: {
|
|
29
|
+
"the frontpage looks good": async (port, utils) => {
|
|
30
|
+
// throw new Error("Function not implemented.");
|
|
31
|
+
// utils.newPage(`localhost:${port}`);
|
|
32
|
+
debugger;
|
|
33
|
+
const page = await utils.newPage();
|
|
34
|
+
utils.goto(page, `localhost:${port}`);
|
|
35
|
+
utils.customScreenShot({ path: `frontpage.png` }, page);
|
|
36
|
+
return;
|
|
37
|
+
},
|
|
38
|
+
"the projects page looks good": function () {
|
|
39
|
+
throw new Error("Function not implemented.");
|
|
40
|
+
},
|
|
41
|
+
"a project page looks good": function () {
|
|
42
|
+
throw new Error("Function not implemented.");
|
|
43
|
+
},
|
|
44
|
+
"a test page looks good": function () {
|
|
45
|
+
throw new Error("Function not implemented.");
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const adapter = {
|
|
50
|
+
assertThis: function (x) {
|
|
51
|
+
throw new Error("Function not implemented.");
|
|
52
|
+
},
|
|
53
|
+
andWhen: function (store, whenCB, testResource, pm) {
|
|
54
|
+
throw new Error("Function not implemented.");
|
|
55
|
+
},
|
|
56
|
+
butThen: function (store, thenCB, testResource, pm) {
|
|
57
|
+
throw new Error("Function not implemented.");
|
|
58
|
+
},
|
|
59
|
+
afterAll: function (store, pm) {
|
|
60
|
+
throw new Error("Function not implemented.");
|
|
61
|
+
},
|
|
62
|
+
afterEach: function (store, key, pm) {
|
|
63
|
+
throw new Error("Function not implemented.");
|
|
64
|
+
},
|
|
65
|
+
beforeAll: async function (input, testResource, pm) {
|
|
66
|
+
await new Promise((res, rej) => input(testResource.ports[0]));
|
|
67
|
+
return testResource.ports[0];
|
|
68
|
+
},
|
|
69
|
+
beforeEach: function (subject, initializer, testResource, initialValues, pm) {
|
|
70
|
+
throw new Error("Function not implemented.");
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
export default testeranto(ReportServerOfPort, specification, implementation, adapter);
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// simple http server to preview reports
|
|
2
|
+
import staticServer from "node-static";
|
|
3
|
+
import http from "http";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import fs from "fs";
|
|
6
|
+
const fileServer = new staticServer.Server("./", {
|
|
7
|
+
cache: false,
|
|
8
|
+
headers: {
|
|
9
|
+
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
10
|
+
Pragma: "no-cache",
|
|
11
|
+
Expires: "0",
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
const server = http.createServer((req, res) => {
|
|
15
|
+
// Handle potential double responses
|
|
16
|
+
let responded = false;
|
|
17
|
+
const safeResponse = (handler) => {
|
|
18
|
+
if (responded)
|
|
19
|
+
return;
|
|
20
|
+
responded = true;
|
|
21
|
+
try {
|
|
22
|
+
handler();
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error("Error handling request:", err);
|
|
26
|
+
if (!res.headersSent) {
|
|
27
|
+
res.writeHead(500);
|
|
28
|
+
}
|
|
29
|
+
res.end("Internal Server Error");
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
req.on("error", (err) => {
|
|
33
|
+
console.error("Request error:", err);
|
|
34
|
+
safeResponse(() => {
|
|
35
|
+
if (!res.headersSent) {
|
|
36
|
+
res.writeHead(400);
|
|
37
|
+
}
|
|
38
|
+
res.end("Bad Request");
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
req.on("end", () => {
|
|
42
|
+
safeResponse(() => {
|
|
43
|
+
const filePath = path.join(process.cwd(), req.url || "");
|
|
44
|
+
// First check if file exists
|
|
45
|
+
fs.stat(filePath, (err, stats) => {
|
|
46
|
+
if (err || !stats.isFile()) {
|
|
47
|
+
// Check if directory exists
|
|
48
|
+
fs.stat(filePath, (dirErr, dirStats) => {
|
|
49
|
+
if (!dirErr && dirStats.isDirectory()) {
|
|
50
|
+
// Serve directory listing
|
|
51
|
+
fs.readdir(filePath, (readErr, files) => {
|
|
52
|
+
if (readErr) {
|
|
53
|
+
res.writeHead(500);
|
|
54
|
+
return res.end("Error reading directory");
|
|
55
|
+
}
|
|
56
|
+
res.writeHead(200, { "Content-Type": "text/html" });
|
|
57
|
+
res.write(`
|
|
58
|
+
<html>
|
|
59
|
+
<head>
|
|
60
|
+
<title>Directory Listing: ${req.url}</title>
|
|
61
|
+
<style>
|
|
62
|
+
body { font-family: sans-serif; margin: 2rem; }
|
|
63
|
+
h1 { color: #333; }
|
|
64
|
+
ul { list-style: none; padding: 0; }
|
|
65
|
+
li { padding: 0.5rem; }
|
|
66
|
+
li a { color: #0366d6; text-decoration: none; }
|
|
67
|
+
li a:hover { text-decoration: underline; }
|
|
68
|
+
</style>
|
|
69
|
+
</head>
|
|
70
|
+
<body>
|
|
71
|
+
<h1>Directory: ${req.url}</h1>
|
|
72
|
+
<ul>
|
|
73
|
+
${files
|
|
74
|
+
.map((file) => `
|
|
75
|
+
<li>
|
|
76
|
+
<a href="${path.join(req.url || "", file)}">
|
|
77
|
+
${file}${file.endsWith("/") ? "/" : ""}
|
|
78
|
+
</a>
|
|
79
|
+
</li>
|
|
80
|
+
`)
|
|
81
|
+
.join("")}
|
|
82
|
+
</ul>
|
|
83
|
+
</body>
|
|
84
|
+
</html>
|
|
85
|
+
`);
|
|
86
|
+
res.end();
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Neither file nor directory exists - send 404
|
|
91
|
+
if (!res.headersSent) {
|
|
92
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
93
|
+
res.end("File not found");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// File exists - serve it through node-static
|
|
100
|
+
const serve = () => {
|
|
101
|
+
fileServer.serve(req, res, (err) => {
|
|
102
|
+
if (err && !res.headersSent) {
|
|
103
|
+
res.writeHead(err.status || 500);
|
|
104
|
+
res.end(err.message);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
// Ensure we don't double-serve
|
|
109
|
+
if (!res.headersSent) {
|
|
110
|
+
serve();
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
req.resume();
|
|
116
|
+
});
|
|
117
|
+
server.on("error", (err) => {
|
|
118
|
+
console.error("Server error:", err);
|
|
119
|
+
});
|
|
120
|
+
process.on("uncaughtException", (err) => {
|
|
121
|
+
console.error("Uncaught exception:", err);
|
|
122
|
+
});
|
|
123
|
+
const start = (port) => server.listen(port, () => {
|
|
124
|
+
console.log(`Server running on http://localhost:${port}`);
|
|
125
|
+
console.log("Serving files from:", process.cwd());
|
|
126
|
+
});
|
|
127
|
+
export const ReportServerOfPort = (port) => start(port);
|
|
128
|
+
// export default () => start(process.argv[2]);
|
|
@@ -185,14 +185,18 @@ export const TestPage = () => {
|
|
|
185
185
|
React.createElement(Button, { variant: "outline-light", onClick: () => navigate(`/projects/${projectName}#${runtime}`) }, "View Build Logs")))) : testData ? (React.createElement("div", { className: "test-results" },
|
|
186
186
|
React.createElement("div", { className: "mb-3" }),
|
|
187
187
|
testData.givens.map((given, i) => {
|
|
188
|
-
var _a;
|
|
188
|
+
var _a, _b;
|
|
189
189
|
return (React.createElement("div", { key: i, className: "mb-4 card" },
|
|
190
190
|
React.createElement("div", { className: "card-header bg-primary text-white" },
|
|
191
191
|
React.createElement("div", { className: "d-flex justify-content-between align-items-center" },
|
|
192
|
-
React.createElement("
|
|
193
|
-
"
|
|
194
|
-
|
|
195
|
-
|
|
192
|
+
React.createElement("div", null,
|
|
193
|
+
React.createElement("h4", null,
|
|
194
|
+
"Given: ",
|
|
195
|
+
given.name),
|
|
196
|
+
((_a = given.features) === null || _a === void 0 ? void 0 : _a.length) > 0 && (React.createElement("div", { className: "mt-1" },
|
|
197
|
+
React.createElement("small", null, "Features:"),
|
|
198
|
+
React.createElement("ul", { className: "list-unstyled" }, given.features.map((feature, fi) => (React.createElement("li", { key: fi }, feature.startsWith('http') ? (React.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer", className: "text-white" }, new URL(feature).hostname)) : (React.createElement("span", { className: "text-white" }, feature))))))))),
|
|
199
|
+
((_b = given.artifacts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (React.createElement("div", { className: "dropdown" },
|
|
196
200
|
React.createElement("button", { className: "btn btn-sm btn-light dropdown-toggle", type: "button", "data-bs-toggle": "dropdown" },
|
|
197
201
|
"Artifacts (",
|
|
198
202
|
given.artifacts.length,
|
|
@@ -201,29 +205,37 @@ export const TestPage = () => {
|
|
|
201
205
|
React.createElement("a", { className: "dropdown-item", href: `/testeranto/reports/${projectName}/${testName.split('.').slice(0, -1).join('.')}/${runtime}/${artifact}`, target: "_blank", rel: "noopener noreferrer" }, artifact.split('/').pop()))))))))),
|
|
202
206
|
React.createElement("div", { className: "card-body" },
|
|
203
207
|
given.whens.map((when, j) => {
|
|
204
|
-
var _a;
|
|
208
|
+
var _a, _b;
|
|
205
209
|
return (React.createElement("div", { key: `w-${j}`, className: `p-3 mb-2 ${when.error ? 'bg-danger text-white' : 'bg-success text-white'}` },
|
|
206
210
|
React.createElement("div", { className: "d-flex justify-content-between align-items-start" },
|
|
207
211
|
React.createElement("div", null,
|
|
208
|
-
React.createElement("
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
React.createElement("div", null,
|
|
213
|
+
React.createElement("strong", null, "When:"),
|
|
214
|
+
" ",
|
|
215
|
+
when.name,
|
|
216
|
+
((_a = when.features) === null || _a === void 0 ? void 0 : _a.length) > 0 && (React.createElement("div", { className: "mt-2" },
|
|
217
|
+
React.createElement("small", null, "Features:"),
|
|
218
|
+
React.createElement("ul", { className: "list-unstyled" }, when.features.map((feature, fi) => (React.createElement("li", { key: fi }, feature.startsWith('http') ? (React.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer" }, new URL(feature).hostname)) : (feature))))))),
|
|
219
|
+
when.error && React.createElement("pre", { className: "mt-2" }, when.error))),
|
|
220
|
+
((_b = when.artifacts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (React.createElement("div", { className: "ms-3" },
|
|
213
221
|
React.createElement("strong", null, "Artifacts:"),
|
|
214
222
|
React.createElement("ul", { className: "list-unstyled" }, when.artifacts.map((artifact, ai) => (React.createElement("li", { key: ai },
|
|
215
223
|
React.createElement("a", { href: `/testeranto/reports/${projectName}/${testName.split('.').slice(0, -1).join('.')}/${runtime}/${artifact}`, target: "_blank", className: "text-white", rel: "noopener noreferrer" }, artifact.split('/').pop()))))))))));
|
|
216
224
|
}),
|
|
217
225
|
given.thens.map((then, k) => {
|
|
218
|
-
var _a;
|
|
226
|
+
var _a, _b;
|
|
219
227
|
return (React.createElement("div", { key: `t-${k}`, className: `p-3 mb-2 ${then.error ? 'bg-danger text-white' : 'bg-success text-white'}` },
|
|
220
228
|
React.createElement("div", { className: "d-flex justify-content-between align-items-start" },
|
|
221
229
|
React.createElement("div", null,
|
|
222
|
-
React.createElement("
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
230
|
+
React.createElement("div", null,
|
|
231
|
+
React.createElement("strong", null, "Then:"),
|
|
232
|
+
" ",
|
|
233
|
+
then.name,
|
|
234
|
+
((_a = then.features) === null || _a === void 0 ? void 0 : _a.length) > 0 && (React.createElement("div", { className: "mt-2" },
|
|
235
|
+
React.createElement("small", null, "Features:"),
|
|
236
|
+
React.createElement("ul", { className: "list-unstyled" }, then.features.map((feature, fi) => (React.createElement("li", { key: fi }, feature.startsWith('http') ? (React.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer" }, new URL(feature).hostname)) : (feature))))))),
|
|
237
|
+
then.error && React.createElement("pre", { className: "mt-2" }, then.error))),
|
|
238
|
+
((_b = then.artifacts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (React.createElement("div", { className: "ms-3" },
|
|
227
239
|
React.createElement("strong", null, "Artifacts:"),
|
|
228
240
|
React.createElement("ul", { className: "list-unstyled" }, then.artifacts.map((artifact, ai) => (React.createElement("li", { key: ai },
|
|
229
241
|
React.createElement("a", { href: `/testeranto/reports/${projectName}/${testName.split('.').slice(0, -1).join('.')}/${runtime}/${artifact}`, target: "_blank", className: "text-white", rel: "noopener noreferrer" }, artifact.split('/').pop()))))))))));
|
|
@@ -35,7 +35,7 @@ export const implementation = {
|
|
|
35
35
|
thens: {
|
|
36
36
|
happyPath: () => async ({ container, html }, pm) => {
|
|
37
37
|
console.group('[Test] Verifying render output');
|
|
38
|
-
debugger
|
|
38
|
+
// debugger
|
|
39
39
|
const p = await pm.page();
|
|
40
40
|
await pm.customScreenShot({ path: "happyPath.png" }, p);
|
|
41
41
|
assert.equal(1, 1);
|
|
@@ -68,14 +68,18 @@ export const TestPageView = ({ route, setRoute, navigate, projectName, testName,
|
|
|
68
68
|
React.createElement("div", { className: "mt-3" },
|
|
69
69
|
React.createElement(Button, { variant: "outline-light", onClick: () => setRoute('logs'), className: "me-2" }, "View Runtime Logs"),
|
|
70
70
|
React.createElement(Button, { variant: "outline-light", onClick: () => navigate(`/projects/${projectName}#${runtime}`) }, "View Build Logs")))) : testData ? (React.createElement("div", { className: "test-results" }, testData.givens.map((given, i) => {
|
|
71
|
-
var _a;
|
|
71
|
+
var _a, _b;
|
|
72
72
|
return (React.createElement("div", { key: i, className: "mb-4 card" },
|
|
73
73
|
React.createElement("div", { className: "card-header bg-primary text-white" },
|
|
74
74
|
React.createElement("div", { className: "d-flex justify-content-between align-items-center" },
|
|
75
|
-
React.createElement("
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
React.createElement("div", null,
|
|
76
|
+
React.createElement("h4", null,
|
|
77
|
+
"Given: ",
|
|
78
|
+
given.name),
|
|
79
|
+
((_a = given.features) === null || _a === void 0 ? void 0 : _a.length) > 0 && (React.createElement("div", { className: "mt-1" },
|
|
80
|
+
React.createElement("small", null, "Features:"),
|
|
81
|
+
React.createElement("ul", { className: "list-unstyled" }, given.features.map((feature, fi) => (React.createElement("li", { key: fi }, feature.startsWith('http') ? (React.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer", className: "text-white" }, new URL(feature).hostname)) : (React.createElement("span", { className: "text-white" }, feature))))))))),
|
|
82
|
+
((_b = given.artifacts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (React.createElement("div", { className: "dropdown" },
|
|
79
83
|
React.createElement("button", { className: "btn btn-sm btn-light dropdown-toggle", type: "button", "data-bs-toggle": "dropdown" },
|
|
80
84
|
"Artifacts (",
|
|
81
85
|
given.artifacts.length,
|
|
@@ -84,29 +88,37 @@ export const TestPageView = ({ route, setRoute, navigate, projectName, testName,
|
|
|
84
88
|
React.createElement("a", { className: "dropdown-item", href: `/testeranto/reports/${projectName}/${testName.split('.').slice(0, -1).join('.')}/${runtime}/${artifact}`, target: "_blank", rel: "noopener noreferrer" }, artifact.split('/').pop()))))))))),
|
|
85
89
|
React.createElement("div", { className: "card-body" },
|
|
86
90
|
given.whens.map((when, j) => {
|
|
87
|
-
var _a;
|
|
91
|
+
var _a, _b;
|
|
88
92
|
return (React.createElement("div", { key: `w-${j}`, className: `p-3 mb-2 ${when.error ? 'bg-danger text-white' : 'bg-success text-white'}` },
|
|
89
93
|
React.createElement("div", { className: "d-flex justify-content-between align-items-start" },
|
|
90
94
|
React.createElement("div", null,
|
|
91
|
-
React.createElement("
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
React.createElement("div", null,
|
|
96
|
+
React.createElement("strong", null, "When:"),
|
|
97
|
+
" ",
|
|
98
|
+
when.name,
|
|
99
|
+
((_a = when.features) === null || _a === void 0 ? void 0 : _a.length) > 0 && (React.createElement("div", { className: "mt-2" },
|
|
100
|
+
React.createElement("small", null, "Features:"),
|
|
101
|
+
React.createElement("ul", { className: "list-unstyled" }, when.features.map((feature, fi) => (React.createElement("li", { key: fi }, feature.startsWith('http') ? (React.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer" }, new URL(feature).hostname)) : (feature))))))),
|
|
102
|
+
when.error && React.createElement("pre", { className: "mt-2" }, when.error))),
|
|
103
|
+
((_b = when.artifacts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (React.createElement("div", { className: "ms-3" },
|
|
96
104
|
React.createElement("strong", null, "Artifacts:"),
|
|
97
105
|
React.createElement("ul", { className: "list-unstyled" }, when.artifacts.map((artifact, ai) => (React.createElement("li", { key: ai },
|
|
98
106
|
React.createElement("a", { href: `/testeranto/reports/${projectName}/${testName.split('.').slice(0, -1).join('.')}/${runtime}/${artifact}`, target: "_blank", className: "text-white", rel: "noopener noreferrer" }, artifact.split('/').pop()))))))))));
|
|
99
107
|
}),
|
|
100
108
|
given.thens.map((then, k) => {
|
|
101
|
-
var _a;
|
|
109
|
+
var _a, _b;
|
|
102
110
|
return (React.createElement("div", { key: `t-${k}`, className: `p-3 mb-2 ${then.error ? 'bg-danger text-white' : 'bg-success text-white'}` },
|
|
103
111
|
React.createElement("div", { className: "d-flex justify-content-between align-items-start" },
|
|
104
112
|
React.createElement("div", null,
|
|
105
|
-
React.createElement("
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
React.createElement("div", null,
|
|
114
|
+
React.createElement("strong", null, "Then:"),
|
|
115
|
+
" ",
|
|
116
|
+
then.name,
|
|
117
|
+
((_a = then.features) === null || _a === void 0 ? void 0 : _a.length) > 0 && (React.createElement("div", { className: "mt-2" },
|
|
118
|
+
React.createElement("small", null, "Features:"),
|
|
119
|
+
React.createElement("ul", { className: "list-unstyled" }, then.features.map((feature, fi) => (React.createElement("li", { key: fi }, feature.startsWith('http') ? (React.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer" }, new URL(feature).hostname)) : (feature))))))),
|
|
120
|
+
then.error && React.createElement("pre", { className: "mt-2" }, then.error))),
|
|
121
|
+
((_b = then.artifacts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (React.createElement("div", { className: "ms-3" },
|
|
110
122
|
React.createElement("strong", null, "Artifacts:"),
|
|
111
123
|
React.createElement("ul", { className: "list-unstyled" }, then.artifacts.map((artifact, ai) => (React.createElement("li", { key: ai },
|
|
112
124
|
React.createElement("a", { href: `/testeranto/reports/${projectName}/${testName.split('.').slice(0, -1).join('.')}/${runtime}/${artifact}`, target: "_blank", className: "text-white", rel: "noopener noreferrer" }, artifact.split('/').pop()))))))))));
|
|
@@ -4,6 +4,8 @@ import { afterEachProxy, andWhenProxy, beforeEachProxy, butThenProxy, } from "./
|
|
|
4
4
|
export class BaseGiven {
|
|
5
5
|
addArtifact(path) {
|
|
6
6
|
console.log(`[Artifact] Adding to ${this.constructor.name}:`, path);
|
|
7
|
+
// console.log("mark111");
|
|
8
|
+
// process.exit();
|
|
7
9
|
this.artifacts.push(path);
|
|
8
10
|
}
|
|
9
11
|
constructor(name, features, whens, thens, givenCB, initialValues) {
|