testeranto 0.172.0 → 0.177.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 +5 -1
- package/dist/common/src/PM/main.js +57 -54
- package/dist/common/src/PM/node.js +4 -1
- package/dist/common/src/PM/pure.js +4 -1
- package/dist/common/src/PM/web.js +6 -3
- package/dist/common/src/Pure.js +0 -4
- package/dist/common/src/Pure.test.js +1 -1
- 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 +141 -0
- package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +1 -1
- package/dist/common/src/esbuildConfigs/node.js +1 -3
- package/dist/common/src/lib/BaseSuite.js +13 -11
- package/dist/common/src/lib/abstractBase.js +39 -40
- 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 +13 -2
- package/dist/common/src/lib/core.js +1 -0
- package/dist/common/src/lib/pmProxy.js +215 -201
- package/dist/common/src/lib/pmProxy.test/adapter.js +2 -2
- package/dist/common/src/lib/pmProxy.test/implementation.js +1 -1
- package/dist/common/testeranto.config.js +47 -32
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/src/PM/base.js +5 -1
- package/dist/module/src/PM/main.js +22 -19
- package/dist/module/src/PM/node.js +4 -1
- package/dist/module/src/PM/pure.js +4 -1
- package/dist/module/src/PM/web.js +6 -3
- package/dist/module/src/Pure.js +0 -4
- package/dist/module/src/Pure.test.js +1 -1
- 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 +134 -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/esbuildConfigs/node.js +1 -3
- package/dist/module/src/lib/BaseSuite.js +13 -11
- package/dist/module/src/lib/abstractBase.js +39 -40
- 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 +13 -2
- package/dist/module/src/lib/core.js +1 -0
- package/dist/module/src/lib/pmProxy.js +215 -201
- package/dist/module/src/lib/pmProxy.test/adapter.js +2 -2
- package/dist/module/src/lib/pmProxy.test/implementation.js +1 -1
- package/dist/module/testeranto.config.js +47 -32
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/App.js +3 -3
- package/dist/prebuild/ReportServer.mjs +21 -9
- package/dist/prebuild/build.mjs +1 -1
- package/dist/prebuild/run.mjs +27 -20
- package/dist/types/src/PM/base.d.ts +1 -1
- package/dist/types/src/PM/node.d.ts +1 -1
- package/dist/types/src/PM/pure.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 +1 -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/BaseSuite.d.ts +2 -0
- package/dist/types/src/lib/abstractBase.d.ts +5 -7
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +7 -4
- package/dist/types/src/lib/pmProxy.d.ts +3 -3
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/PM/base.ts +7 -5
- package/src/PM/main.ts +26 -21
- package/src/PM/node.ts +6 -1
- package/src/PM/pure.ts +6 -1
- package/src/PM/web.ts +7 -3
- package/src/Pure.test.ts +6 -6
- package/src/Pure.ts +0 -8
- package/src/ReportServer.test.ts/index.ts +194 -0
- package/src/ReportServer.ts +2 -132
- package/src/ReportServerLib.ts +147 -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/esbuildConfigs/node.ts +1 -1
- package/src/lib/BaseSuite.ts +16 -21
- package/src/lib/abstractBase.ts +59 -48
- 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 +13 -4
- package/src/lib/core.ts +1 -0
- package/src/lib/pmProxy.test/adapter.ts +2 -2
- package/src/lib/pmProxy.test/implementation.ts +3 -3
- package/src/lib/pmProxy.test/types.ts +0 -2
- package/src/lib/pmProxy.ts +135 -80
- package/testeranto/App.js +3 -3
- package/testeranto/bundles/node/core/metafile.json +8 -0
- package/testeranto/bundles/pure/core/metafile.json +8 -0
- package/testeranto/bundles/web/core/metafile.json +15086 -0
- package/testeranto/bundles/web/{allTests → core}/src/components/pure/ProjectPageView.test/index.html +1 -1
- package/testeranto/bundles/web/{allTests → core}/src/components/pure/ProjectPageView.test/index.mjs +4109 -1642
- package/testeranto/projects.json +1 -1
- package/testeranto/reports/core/config.json +24 -0
- package/testeranto/reports/{allTests → core}/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +6 -1
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/logs.txt +59 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/message.txt +2 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/prompt.txt +27 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/suite-0/given-basicRender/then-0/butThen/happyPath.png +0 -0
- package/testeranto/reports/{allTests → core}/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +15 -33
- package/testeranto/reports/core/summary.json +9 -0
- package/testeranto.config.ts +49 -32
- package/tsc.log +78 -92
- package/testeranto/bundles/node/allTests/chunk-3EUGBAOM.mjs +0 -113
- package/testeranto/bundles/node/allTests/chunk-E75CSRER.mjs +0 -800
- package/testeranto/bundles/node/allTests/chunk-M6DO7VMB.mjs +0 -252
- package/testeranto/bundles/node/allTests/metafile.json +0 -1229
- package/testeranto/bundles/node/allTests/src/lib/BaseSuite.test/node.test.mjs +0 -323
- package/testeranto/bundles/node/allTests/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +0 -223
- 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/chunk-VMUSFSZM.mjs +0 -797
- package/testeranto/bundles/pure/allTests/metafile.json +0 -1054
- 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/pure/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +0 -381
- package/testeranto/bundles/web/allTests/chunk-HPYA4YZC.mjs +0 -2283
- package/testeranto/bundles/web/allTests/chunk-U7AW26HL.mjs +0 -997
- package/testeranto/bundles/web/allTests/metafile.json +0 -25
- 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/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.html +0 -19
- package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs +0 -244
- package/testeranto/reports/allTests/config.json +0 -104
- 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/bdd_errors.txt +0 -1
- 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/lib/BaseSuite.test/node.test/node/bdd_errors.txt +0 -1
- 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/baseBuilder.test/baseBuilder.test.node/node/bdd_errors.txt +0 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/logs.txt +0 -35
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +0 -16
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +0 -77
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +0 -62
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +0 -18
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +0 -62
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/bdd_errors.txt +0 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +0 -0
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +0 -69
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/message.txt +0 -2
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +0 -16
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +0 -77
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +0 -62
- 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/core.test/core.test/node/type_errors.txt +0 -63
- 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/reports/allTests/summary.json +0 -79
- package/testeranto/reportsnode_build_errors +0 -20
- package/testeranto/reportspure_build_errors +0 -343
- package/testeranto/reportsweb_build_errors +0 -25
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// simple http server to preview reports
|
|
2
|
+
|
|
3
|
+
import staticServer from "node-static";
|
|
4
|
+
import http from "http";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import fs from "fs";
|
|
7
|
+
|
|
8
|
+
const fileServer = new staticServer.Server("./", {
|
|
9
|
+
cache: false,
|
|
10
|
+
headers: {
|
|
11
|
+
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
12
|
+
Pragma: "no-cache",
|
|
13
|
+
Expires: "0",
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const server = http.createServer((req, res) => {
|
|
18
|
+
// Handle potential double responses
|
|
19
|
+
let responded = false;
|
|
20
|
+
|
|
21
|
+
const safeResponse = (handler: () => void) => {
|
|
22
|
+
if (responded) return;
|
|
23
|
+
responded = true;
|
|
24
|
+
try {
|
|
25
|
+
handler();
|
|
26
|
+
} catch (err) {
|
|
27
|
+
console.error("Error handling request:", err);
|
|
28
|
+
if (!res.headersSent) {
|
|
29
|
+
res.writeHead(500);
|
|
30
|
+
}
|
|
31
|
+
res.end("Internal Server Error");
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
req.on("error", (err) => {
|
|
36
|
+
console.error("Request error:", err);
|
|
37
|
+
safeResponse(() => {
|
|
38
|
+
if (!res.headersSent) {
|
|
39
|
+
res.writeHead(400);
|
|
40
|
+
}
|
|
41
|
+
res.end("Bad Request");
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
req.on("end", () => {
|
|
46
|
+
safeResponse(() => {
|
|
47
|
+
const filePath = path.join(process.cwd(), req.url || "");
|
|
48
|
+
|
|
49
|
+
// First check if file exists
|
|
50
|
+
fs.stat(filePath, (err, stats) => {
|
|
51
|
+
if (err || !stats.isFile()) {
|
|
52
|
+
// Check if directory exists
|
|
53
|
+
fs.stat(filePath, (dirErr, dirStats) => {
|
|
54
|
+
if (!dirErr && dirStats.isDirectory()) {
|
|
55
|
+
// Serve directory listing
|
|
56
|
+
fs.readdir(filePath, (readErr, files) => {
|
|
57
|
+
if (readErr) {
|
|
58
|
+
res.writeHead(500);
|
|
59
|
+
return res.end("Error reading directory");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
res.writeHead(200, { "Content-Type": "text/html" });
|
|
63
|
+
res.write(`
|
|
64
|
+
<html>
|
|
65
|
+
<head>
|
|
66
|
+
<title>Directory Listing: ${req.url}</title>
|
|
67
|
+
<style>
|
|
68
|
+
body { font-family: sans-serif; margin: 2rem; }
|
|
69
|
+
h1 { color: #333; }
|
|
70
|
+
ul { list-style: none; padding: 0; }
|
|
71
|
+
li { padding: 0.5rem; }
|
|
72
|
+
li a { color: #0366d6; text-decoration: none; }
|
|
73
|
+
li a:hover { text-decoration: underline; }
|
|
74
|
+
</style>
|
|
75
|
+
</head>
|
|
76
|
+
<body>
|
|
77
|
+
<h1>Directory: ${req.url}</h1>
|
|
78
|
+
<ul>
|
|
79
|
+
${files
|
|
80
|
+
.map(
|
|
81
|
+
(file) => `
|
|
82
|
+
<li>
|
|
83
|
+
<a href="${path.join(req.url || "", file)}">
|
|
84
|
+
${file}${file.endsWith("/") ? "/" : ""}
|
|
85
|
+
</a>
|
|
86
|
+
</li>
|
|
87
|
+
`
|
|
88
|
+
)
|
|
89
|
+
.join("")}
|
|
90
|
+
</ul>
|
|
91
|
+
</body>
|
|
92
|
+
</html>
|
|
93
|
+
`);
|
|
94
|
+
res.end();
|
|
95
|
+
});
|
|
96
|
+
} else {
|
|
97
|
+
// Neither file nor directory exists - send 404
|
|
98
|
+
if (!res.headersSent) {
|
|
99
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
100
|
+
res.end("File not found");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// File exists - serve it through node-static
|
|
108
|
+
const serve = () => {
|
|
109
|
+
fileServer.serve(req, res, (err) => {
|
|
110
|
+
if (err && !res.headersSent) {
|
|
111
|
+
res.writeHead(err.status || 500);
|
|
112
|
+
res.end(err.message);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// Ensure we don't double-serve
|
|
118
|
+
if (!res.headersSent) {
|
|
119
|
+
serve();
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
req.resume();
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
server.on("error", (err) => {
|
|
129
|
+
console.error("Server error:", err);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
process.on("uncaughtException", (err) => {
|
|
133
|
+
console.error("Uncaught exception:", err);
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const start = (port: number) => {
|
|
137
|
+
if (port) {
|
|
138
|
+
server.listen(port, () => {
|
|
139
|
+
console.log(`Server running on http://localhost:${port}`);
|
|
140
|
+
console.log("Serving files from:", process.cwd());
|
|
141
|
+
});
|
|
142
|
+
} else {
|
|
143
|
+
console.log("you need to specify a port");
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
export const ReportServerOfPort = (port: number) => start(port);
|
package/src/TestPage.tsx
CHANGED
|
@@ -254,7 +254,27 @@ export const TestPage = () => {
|
|
|
254
254
|
<div key={i} className="mb-4 card">
|
|
255
255
|
<div className="card-header bg-primary text-white">
|
|
256
256
|
<div className="d-flex justify-content-between align-items-center">
|
|
257
|
-
<
|
|
257
|
+
<div>
|
|
258
|
+
<h4>Given: {given.name}</h4>
|
|
259
|
+
{given.features?.length > 0 && (
|
|
260
|
+
<div className="mt-1">
|
|
261
|
+
<small>Features:</small>
|
|
262
|
+
<ul className="list-unstyled">
|
|
263
|
+
{given.features.map((feature, fi) => (
|
|
264
|
+
<li key={fi}>
|
|
265
|
+
{feature.startsWith('http') ? (
|
|
266
|
+
<a href={feature} target="_blank" rel="noopener noreferrer" className="text-white">
|
|
267
|
+
{new URL(feature).hostname}
|
|
268
|
+
</a>
|
|
269
|
+
) : (
|
|
270
|
+
<span className="text-white">{feature}</span>
|
|
271
|
+
)}
|
|
272
|
+
</li>
|
|
273
|
+
))}
|
|
274
|
+
</ul>
|
|
275
|
+
</div>
|
|
276
|
+
)}
|
|
277
|
+
</div>
|
|
258
278
|
{given.artifacts?.length > 0 && (
|
|
259
279
|
<div className="dropdown">
|
|
260
280
|
<button
|
|
@@ -287,8 +307,28 @@ export const TestPage = () => {
|
|
|
287
307
|
<div key={`w-${j}`} className={`p-3 mb-2 ${when.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
|
|
288
308
|
<div className="d-flex justify-content-between align-items-start">
|
|
289
309
|
<div>
|
|
290
|
-
<
|
|
291
|
-
|
|
310
|
+
<div>
|
|
311
|
+
<strong>When:</strong> {when.name}
|
|
312
|
+
{when.features?.length > 0 && (
|
|
313
|
+
<div className="mt-2">
|
|
314
|
+
<small>Features:</small>
|
|
315
|
+
<ul className="list-unstyled">
|
|
316
|
+
{when.features.map((feature, fi) => (
|
|
317
|
+
<li key={fi}>
|
|
318
|
+
{feature.startsWith('http') ? (
|
|
319
|
+
<a href={feature} target="_blank" rel="noopener noreferrer">
|
|
320
|
+
{new URL(feature).hostname}
|
|
321
|
+
</a>
|
|
322
|
+
) : (
|
|
323
|
+
feature
|
|
324
|
+
)}
|
|
325
|
+
</li>
|
|
326
|
+
))}
|
|
327
|
+
</ul>
|
|
328
|
+
</div>
|
|
329
|
+
)}
|
|
330
|
+
{when.error && <pre className="mt-2">{when.error}</pre>}
|
|
331
|
+
</div>
|
|
292
332
|
</div>
|
|
293
333
|
{when.artifacts?.length > 0 && (
|
|
294
334
|
<div className="ms-3">
|
|
@@ -316,8 +356,28 @@ export const TestPage = () => {
|
|
|
316
356
|
<div key={`t-${k}`} className={`p-3 mb-2 ${then.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
|
|
317
357
|
<div className="d-flex justify-content-between align-items-start">
|
|
318
358
|
<div>
|
|
319
|
-
<
|
|
320
|
-
|
|
359
|
+
<div>
|
|
360
|
+
<strong>Then:</strong> {then.name}
|
|
361
|
+
{then.features?.length > 0 && (
|
|
362
|
+
<div className="mt-2">
|
|
363
|
+
<small>Features:</small>
|
|
364
|
+
<ul className="list-unstyled">
|
|
365
|
+
{then.features.map((feature, fi) => (
|
|
366
|
+
<li key={fi}>
|
|
367
|
+
{feature.startsWith('http') ? (
|
|
368
|
+
<a href={feature} target="_blank" rel="noopener noreferrer">
|
|
369
|
+
{new URL(feature).hostname}
|
|
370
|
+
</a>
|
|
371
|
+
) : (
|
|
372
|
+
feature
|
|
373
|
+
)}
|
|
374
|
+
</li>
|
|
375
|
+
))}
|
|
376
|
+
</ul>
|
|
377
|
+
</div>
|
|
378
|
+
)}
|
|
379
|
+
{then.error && <pre className="mt-2">{then.error}</pre>}
|
|
380
|
+
</div>
|
|
321
381
|
</div>
|
|
322
382
|
{then.artifacts?.length > 0 && (
|
|
323
383
|
<div className="ms-3">
|
package/src/Types.ts
CHANGED
|
@@ -44,7 +44,7 @@ export const implementation: ITestImplementation<I, O, M> = {
|
|
|
44
44
|
() =>
|
|
45
45
|
async ({ container, html }, pm) => {
|
|
46
46
|
console.group('[Test] Verifying render output');
|
|
47
|
-
debugger
|
|
47
|
+
// debugger
|
|
48
48
|
const p = await pm.page();
|
|
49
49
|
await pm.customScreenShot({ path: "happyPath.png" }, p);
|
|
50
50
|
|
|
@@ -125,7 +125,27 @@ export const TestPageView = ({
|
|
|
125
125
|
<div key={i} className="mb-4 card">
|
|
126
126
|
<div className="card-header bg-primary text-white">
|
|
127
127
|
<div className="d-flex justify-content-between align-items-center">
|
|
128
|
-
<
|
|
128
|
+
<div>
|
|
129
|
+
<h4>Given: {given.name}</h4>
|
|
130
|
+
{given.features?.length > 0 && (
|
|
131
|
+
<div className="mt-1">
|
|
132
|
+
<small>Features:</small>
|
|
133
|
+
<ul className="list-unstyled">
|
|
134
|
+
{given.features.map((feature, fi) => (
|
|
135
|
+
<li key={fi}>
|
|
136
|
+
{feature.startsWith('http') ? (
|
|
137
|
+
<a href={feature} target="_blank" rel="noopener noreferrer" className="text-white">
|
|
138
|
+
{new URL(feature).hostname}
|
|
139
|
+
</a>
|
|
140
|
+
) : (
|
|
141
|
+
<span className="text-white">{feature}</span>
|
|
142
|
+
)}
|
|
143
|
+
</li>
|
|
144
|
+
))}
|
|
145
|
+
</ul>
|
|
146
|
+
</div>
|
|
147
|
+
)}
|
|
148
|
+
</div>
|
|
129
149
|
{given.artifacts?.length > 0 && (
|
|
130
150
|
<div className="dropdown">
|
|
131
151
|
<button
|
|
@@ -158,8 +178,28 @@ export const TestPageView = ({
|
|
|
158
178
|
<div key={`w-${j}`} className={`p-3 mb-2 ${when.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
|
|
159
179
|
<div className="d-flex justify-content-between align-items-start">
|
|
160
180
|
<div>
|
|
161
|
-
<
|
|
162
|
-
|
|
181
|
+
<div>
|
|
182
|
+
<strong>When:</strong> {when.name}
|
|
183
|
+
{when.features?.length > 0 && (
|
|
184
|
+
<div className="mt-2">
|
|
185
|
+
<small>Features:</small>
|
|
186
|
+
<ul className="list-unstyled">
|
|
187
|
+
{when.features.map((feature, fi) => (
|
|
188
|
+
<li key={fi}>
|
|
189
|
+
{feature.startsWith('http') ? (
|
|
190
|
+
<a href={feature} target="_blank" rel="noopener noreferrer">
|
|
191
|
+
{new URL(feature).hostname}
|
|
192
|
+
</a>
|
|
193
|
+
) : (
|
|
194
|
+
feature
|
|
195
|
+
)}
|
|
196
|
+
</li>
|
|
197
|
+
))}
|
|
198
|
+
</ul>
|
|
199
|
+
</div>
|
|
200
|
+
)}
|
|
201
|
+
{when.error && <pre className="mt-2">{when.error}</pre>}
|
|
202
|
+
</div>
|
|
163
203
|
</div>
|
|
164
204
|
{when.artifacts?.length > 0 && (
|
|
165
205
|
<div className="ms-3">
|
|
@@ -187,8 +227,28 @@ export const TestPageView = ({
|
|
|
187
227
|
<div key={`t-${k}`} className={`p-3 mb-2 ${then.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
|
|
188
228
|
<div className="d-flex justify-content-between align-items-start">
|
|
189
229
|
<div>
|
|
190
|
-
<
|
|
191
|
-
|
|
230
|
+
<div>
|
|
231
|
+
<strong>Then:</strong> {then.name}
|
|
232
|
+
{then.features?.length > 0 && (
|
|
233
|
+
<div className="mt-2">
|
|
234
|
+
<small>Features:</small>
|
|
235
|
+
<ul className="list-unstyled">
|
|
236
|
+
{then.features.map((feature, fi) => (
|
|
237
|
+
<li key={fi}>
|
|
238
|
+
{feature.startsWith('http') ? (
|
|
239
|
+
<a href={feature} target="_blank" rel="noopener noreferrer">
|
|
240
|
+
{new URL(feature).hostname}
|
|
241
|
+
</a>
|
|
242
|
+
) : (
|
|
243
|
+
feature
|
|
244
|
+
)}
|
|
245
|
+
</li>
|
|
246
|
+
))}
|
|
247
|
+
</ul>
|
|
248
|
+
</div>
|
|
249
|
+
)}
|
|
250
|
+
{then.error && <pre className="mt-2">{then.error}</pre>}
|
|
251
|
+
</div>
|
|
192
252
|
</div>
|
|
193
253
|
{then.artifacts?.length > 0 && (
|
|
194
254
|
<div className="ms-3">
|
package/src/lib/BaseSuite.ts
CHANGED
|
@@ -14,23 +14,24 @@ export abstract class BaseSuite<I extends Ibdd_in_any, O extends Ibdd_out_any> {
|
|
|
14
14
|
failed: boolean;
|
|
15
15
|
fails: number;
|
|
16
16
|
|
|
17
|
+
artifacts: string[] = [];
|
|
18
|
+
|
|
19
|
+
addArtifact(path: string) {
|
|
20
|
+
console.log("Suite addArtifact", path);
|
|
21
|
+
const normalizedPath = path.replace(/\\/g, "/"); // Normalize path separators
|
|
22
|
+
this.artifacts.push(normalizedPath);
|
|
23
|
+
}
|
|
24
|
+
|
|
17
25
|
constructor(name: string, index: number, givens: IGivens<I> = {}) {
|
|
18
26
|
const suiteName = name || "testSuite"; // Ensure name is never undefined
|
|
19
27
|
if (!suiteName) {
|
|
20
28
|
throw new Error("BaseSuite requires a non-empty name");
|
|
21
29
|
}
|
|
22
|
-
|
|
23
|
-
"[DEBUG] BaseSuite constructor - name:",
|
|
24
|
-
suiteName,
|
|
25
|
-
"index:",
|
|
26
|
-
index
|
|
27
|
-
);
|
|
30
|
+
|
|
28
31
|
this.name = suiteName;
|
|
29
32
|
this.index = index;
|
|
30
33
|
this.givens = givens;
|
|
31
34
|
this.fails = 0;
|
|
32
|
-
console.log("[DEBUG] BaseSuite initialized:", this.name, this.index);
|
|
33
|
-
console.log("[DEBUG] BaseSuite givens:", Object.keys(givens).toString());
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
public features() {
|
|
@@ -41,10 +42,9 @@ export abstract class BaseSuite<I extends Ibdd_in_any, O extends Ibdd_out_any> {
|
|
|
41
42
|
.filter((value, index, array) => {
|
|
42
43
|
return array.indexOf(value) === index;
|
|
43
44
|
});
|
|
44
|
-
console.debug("[DEBUG] Features extracted:", features.toString());
|
|
45
45
|
return features || [];
|
|
46
46
|
} catch (e) {
|
|
47
|
-
console.error("[ERROR] Failed to extract features:", e);
|
|
47
|
+
console.error("[ERROR] Failed to extract features:", JSON.stringify(e));
|
|
48
48
|
return [];
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -92,15 +92,14 @@ export abstract class BaseSuite<I extends Ibdd_in_any, O extends Ibdd_out_any> {
|
|
|
92
92
|
artifactory(`suite-${this.index}-${this.name}/${fPath}`, value);
|
|
93
93
|
|
|
94
94
|
// console.log("\nSuite:", this.index, this.name);
|
|
95
|
-
tLog("\nSuite:", this.index, this.name);
|
|
95
|
+
// tLog("\nSuite:", this.index, this.name);
|
|
96
96
|
const sNdx = this.index;
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
const proxiedPm = beforeAllProxy(pm, sNdx.toString(), this);
|
|
99
98
|
const subject = await this.setup(
|
|
100
99
|
input,
|
|
101
100
|
suiteArtifactory,
|
|
102
101
|
testResourceConfiguration,
|
|
103
|
-
|
|
102
|
+
proxiedPm
|
|
104
103
|
);
|
|
105
104
|
|
|
106
105
|
for (const [gKey, g] of Object.entries(this.givens)) {
|
|
@@ -119,19 +118,15 @@ export abstract class BaseSuite<I extends Ibdd_in_any, O extends Ibdd_out_any> {
|
|
|
119
118
|
.catch((e) => {
|
|
120
119
|
this.failed = true;
|
|
121
120
|
this.fails = this.fails + 1;
|
|
122
|
-
// console.error("Given error 1:", e.toString());
|
|
123
121
|
throw e;
|
|
124
122
|
});
|
|
125
123
|
}
|
|
126
124
|
|
|
127
125
|
try {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
artifactory,
|
|
131
|
-
afterAllProxy(pm, sNdx.toString())
|
|
132
|
-
);
|
|
126
|
+
const afterAllPm = afterAllProxy(pm, sNdx.toString(), this);
|
|
127
|
+
this.afterAll(this.store, artifactory, afterAllPm);
|
|
133
128
|
} catch (e) {
|
|
134
|
-
console.error(e);
|
|
129
|
+
console.error(JSON.stringify(e));
|
|
135
130
|
// this.fails.push(this);
|
|
136
131
|
// return this;
|
|
137
132
|
}
|
package/src/lib/abstractBase.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
|
|
4
|
+
import type { Ibdd_in_any } from "../CoreTypes";
|
|
5
|
+
|
|
4
6
|
import { ITestArtifactory, ITLog, ITTestResourceConfiguration } from ".";
|
|
5
7
|
import { IPM } from "./types.js";
|
|
6
8
|
import {
|
|
@@ -9,7 +11,6 @@ import {
|
|
|
9
11
|
beforeEachProxy,
|
|
10
12
|
butThenProxy,
|
|
11
13
|
} from "./pmProxy.js";
|
|
12
|
-
import type { Ibdd_in_any } from "../CoreTypes";
|
|
13
14
|
|
|
14
15
|
export type IGivens<I extends Ibdd_in_any> = Record<string, BaseGiven<I>>;
|
|
15
16
|
|
|
@@ -27,9 +28,11 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
|
|
|
27
28
|
key: string;
|
|
28
29
|
failed: boolean;
|
|
29
30
|
artifacts: string[] = [];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
|
|
32
|
+
addArtifact(path: string) {
|
|
33
|
+
console.log("Given addArtifact", path);
|
|
34
|
+
const normalizedPath = path.replace(/\\/g, "/"); // Normalize path separators
|
|
35
|
+
this.artifacts.push(normalizedPath);
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
constructor(
|
|
@@ -59,7 +62,7 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
|
|
|
59
62
|
whens: this.whens.map((w) => {
|
|
60
63
|
if (w && w.toObj) return w.toObj();
|
|
61
64
|
|
|
62
|
-
console.error("w is not as expected!",
|
|
65
|
+
console.error("w is not as expected!", JSON.stringify(w));
|
|
63
66
|
return {};
|
|
64
67
|
}),
|
|
65
68
|
thens: this.thens.map((t) => t.toObj()),
|
|
@@ -115,9 +118,11 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
|
|
|
115
118
|
});
|
|
116
119
|
|
|
117
120
|
try {
|
|
118
|
-
const proxiedPm = beforeEachProxy(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
const proxiedPm = beforeEachProxy(
|
|
122
|
+
pm,
|
|
123
|
+
suiteNdx.toString(),
|
|
124
|
+
this.addArtifact.bind(this)
|
|
125
|
+
);
|
|
121
126
|
this.store = await this.givenThat(
|
|
122
127
|
subject,
|
|
123
128
|
testResourceConfiguration,
|
|
@@ -127,9 +132,9 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
|
|
|
127
132
|
proxiedPm
|
|
128
133
|
);
|
|
129
134
|
} catch (e) {
|
|
130
|
-
console.error("Given failure: ", e.
|
|
131
|
-
this.error = e;
|
|
132
|
-
throw e;
|
|
135
|
+
// console.error("Given failure: ", e.stack);
|
|
136
|
+
this.error = e.stack;
|
|
137
|
+
// throw e;
|
|
133
138
|
}
|
|
134
139
|
|
|
135
140
|
try {
|
|
@@ -154,9 +159,6 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
|
|
|
154
159
|
`suite-${suiteNdx}/given-${key}/then-${thenNdx}`
|
|
155
160
|
);
|
|
156
161
|
tester(t);
|
|
157
|
-
// ((t) => {
|
|
158
|
-
// return tester(t);
|
|
159
|
-
// })();
|
|
160
162
|
}
|
|
161
163
|
} catch (e) {
|
|
162
164
|
this.failed = true;
|
|
@@ -164,21 +166,22 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
|
|
|
164
166
|
throw e;
|
|
165
167
|
} finally {
|
|
166
168
|
try {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
afterEachProxy(pm, suiteNdx.toString(), key)
|
|
169
|
+
const proxiedPm = afterEachProxy(
|
|
170
|
+
pm,
|
|
171
|
+
suiteNdx.toString(),
|
|
172
|
+
key,
|
|
173
|
+
this.addArtifact.bind(this)
|
|
173
174
|
);
|
|
175
|
+
// (proxiedPm as any).currentStep = this;
|
|
176
|
+
await this.afterEach(this.store, this.key, givenArtifactory, proxiedPm);
|
|
174
177
|
} catch (e) {
|
|
175
|
-
console.error("afterEach failed!", e.toString());
|
|
176
178
|
this.failed = e;
|
|
177
179
|
throw e;
|
|
178
180
|
|
|
179
181
|
// this.error = e.message;
|
|
180
182
|
}
|
|
181
183
|
}
|
|
184
|
+
|
|
182
185
|
return this.store;
|
|
183
186
|
}
|
|
184
187
|
}
|
|
@@ -187,8 +190,15 @@ export abstract class BaseWhen<I extends Ibdd_in_any> {
|
|
|
187
190
|
public name: string;
|
|
188
191
|
whenCB: (x: I["iselection"]) => I["then"];
|
|
189
192
|
error: Error;
|
|
193
|
+
|
|
190
194
|
artifacts: string[] = [];
|
|
191
195
|
|
|
196
|
+
addArtifact(path: string) {
|
|
197
|
+
console.log("When addArtifact", path);
|
|
198
|
+
const normalizedPath = path.replace(/\\/g, "/"); // Normalize path separators
|
|
199
|
+
this.artifacts.push(normalizedPath);
|
|
200
|
+
}
|
|
201
|
+
|
|
192
202
|
constructor(name: string, whenCB: (xyz: I["iselection"]) => I["then"]) {
|
|
193
203
|
this.name = name;
|
|
194
204
|
this.whenCB = whenCB;
|
|
@@ -202,20 +212,18 @@ export abstract class BaseWhen<I extends Ibdd_in_any> {
|
|
|
202
212
|
): Promise<any>;
|
|
203
213
|
|
|
204
214
|
toObj() {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
};
|
|
218
|
-
}
|
|
215
|
+
const obj = {
|
|
216
|
+
name: this.name,
|
|
217
|
+
error: this.error
|
|
218
|
+
? `${this.error.name}: ${this.error.message}\n${this.error.stack}`
|
|
219
|
+
: null,
|
|
220
|
+
artifacts: this.artifacts || [],
|
|
221
|
+
};
|
|
222
|
+
console.log(
|
|
223
|
+
`[TOOBJ] Serializing ${this.constructor.name} with artifacts:`,
|
|
224
|
+
obj.artifacts
|
|
225
|
+
);
|
|
226
|
+
return obj;
|
|
219
227
|
}
|
|
220
228
|
|
|
221
229
|
async test(
|
|
@@ -226,12 +234,10 @@ export abstract class BaseWhen<I extends Ibdd_in_any> {
|
|
|
226
234
|
filepath: string
|
|
227
235
|
) {
|
|
228
236
|
try {
|
|
229
|
-
tLog(" When:", this.name);
|
|
230
|
-
|
|
237
|
+
// tLog(" When:", this.name);
|
|
238
|
+
const proxiedPm = andWhenProxy(pm, filepath, this.addArtifact.bind(this));
|
|
231
239
|
|
|
232
|
-
|
|
233
|
-
console.log(`[When] Setting currentStep for andWhen:`, this.name);
|
|
234
|
-
(proxiedPm as any).currentStep = this;
|
|
240
|
+
// (proxiedPm as any).currentStep = this;
|
|
235
241
|
const result = await this.andWhen(
|
|
236
242
|
store,
|
|
237
243
|
this.whenCB,
|
|
@@ -239,9 +245,8 @@ export abstract class BaseWhen<I extends Ibdd_in_any> {
|
|
|
239
245
|
proxiedPm
|
|
240
246
|
);
|
|
241
247
|
|
|
242
|
-
console.debug("[DEBUG] When step completed:", this.name.toString());
|
|
243
248
|
return result;
|
|
244
|
-
} catch (e:
|
|
249
|
+
} catch (e: any) {
|
|
245
250
|
console.error(
|
|
246
251
|
"[ERROR] When step failed:",
|
|
247
252
|
this.name.toString(),
|
|
@@ -266,14 +271,22 @@ export abstract class BaseThen<I extends Ibdd_in_any> {
|
|
|
266
271
|
this.name = name;
|
|
267
272
|
this.thenCB = thenCB;
|
|
268
273
|
this.error = false;
|
|
274
|
+
this.artifacts = [];
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
addArtifact(path: string) {
|
|
278
|
+
console.log("Then addArtifact", path);
|
|
279
|
+
const normalizedPath = path.replace(/\\/g, "/"); // Normalize path separators
|
|
280
|
+
this.artifacts.push(normalizedPath);
|
|
269
281
|
}
|
|
270
282
|
|
|
271
283
|
toObj() {
|
|
272
|
-
|
|
284
|
+
const obj = {
|
|
273
285
|
name: this.name,
|
|
274
286
|
error: this.error,
|
|
275
287
|
artifacts: this.artifacts,
|
|
276
288
|
};
|
|
289
|
+
return obj;
|
|
277
290
|
}
|
|
278
291
|
|
|
279
292
|
abstract butThen(
|
|
@@ -291,9 +304,7 @@ export abstract class BaseThen<I extends Ibdd_in_any> {
|
|
|
291
304
|
pm: IPM,
|
|
292
305
|
filepath: string
|
|
293
306
|
): Promise<I["then"] | undefined> {
|
|
294
|
-
const proxiedPm = butThenProxy(pm, filepath);
|
|
295
|
-
console.log(`[Then] Setting currentStep for butThen:`, this.name);
|
|
296
|
-
(proxiedPm as any).currentStep = this;
|
|
307
|
+
const proxiedPm = butThenProxy(pm, filepath, this.addArtifact.bind(this));
|
|
297
308
|
return this.butThen(
|
|
298
309
|
store,
|
|
299
310
|
async (s: I["iselection"]) => {
|
|
@@ -304,9 +315,9 @@ export abstract class BaseThen<I extends Ibdd_in_any> {
|
|
|
304
315
|
}
|
|
305
316
|
},
|
|
306
317
|
testResourceConfiguration,
|
|
307
|
-
|
|
318
|
+
proxiedPm
|
|
308
319
|
).catch((e) => {
|
|
309
|
-
this.error = e.
|
|
320
|
+
this.error = e.stack;
|
|
310
321
|
// throw e;
|
|
311
322
|
});
|
|
312
323
|
}
|