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
package/README.md
CHANGED
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
|
|
35
35
|
## Quick Start
|
|
36
36
|
|
|
37
|
+
0. Install Aider and signup for a LLM service.
|
|
38
|
+
|
|
37
39
|
1. Install testeranto:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
@@ -92,7 +94,6 @@ yarn t-build rectangle.test.ts yourProject once && yarn t-run rectangle.test.ts
|
|
|
92
94
|
| `yarn t-build <YOUR_TESTS> dev\|once` | Build test bundles (watch or single-run mode) |
|
|
93
95
|
| `yarn t-run <YOUR_TESTS> dev\|once` | Run tests (watch or single-run mode) |
|
|
94
96
|
| `yarn t-report` | Launch test report server |
|
|
95
|
-
| `yarn t-aider` | Fix failing tests with AI |
|
|
96
97
|
|
|
97
98
|
## Example workflow:
|
|
98
99
|
|
|
@@ -111,9 +112,6 @@ yarn t-run test/rectangle.test.ts dev
|
|
|
111
112
|
# Or for single-run mode:
|
|
112
113
|
yarn t-build test/rectangle.test.ts once
|
|
113
114
|
yarn t-run test/rectangle.test.ts once
|
|
114
|
-
|
|
115
|
-
# Get AI help with failures
|
|
116
|
-
yarn t-aider
|
|
117
115
|
```
|
|
118
116
|
|
|
119
117
|
## Aider
|
|
@@ -118,7 +118,11 @@ class PM_Base {
|
|
|
118
118
|
}
|
|
119
119
|
return false;
|
|
120
120
|
}
|
|
121
|
-
async writeFileSync(
|
|
121
|
+
async writeFileSync(...x) {
|
|
122
|
+
const filepath = x[0];
|
|
123
|
+
const contents = x[1];
|
|
124
|
+
const testName = x[2];
|
|
125
|
+
console.log("writing file", filepath);
|
|
122
126
|
return new Promise(async (res) => {
|
|
123
127
|
fs_1.default.mkdirSync(path_1.default.dirname(filepath), {
|
|
124
128
|
recursive: true,
|
|
@@ -42,16 +42,16 @@ exports.PM_Main = void 0;
|
|
|
42
42
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
43
43
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
44
44
|
const node_child_process_1 = require("node:child_process");
|
|
45
|
+
const ansi_colors_1 = __importDefault(require("ansi-colors"));
|
|
45
46
|
const net_1 = __importDefault(require("net"));
|
|
46
47
|
const fs_1 = __importStar(require("fs"));
|
|
47
48
|
const path_1 = __importDefault(require("path"));
|
|
48
49
|
const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
|
|
49
|
-
const
|
|
50
|
+
const ansi_colors_2 = __importDefault(require("ansi-colors"));
|
|
50
51
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
51
52
|
const utils_1 = require("../utils");
|
|
52
53
|
const queue_js_1 = require("../utils/queue.js");
|
|
53
54
|
const PM_WithEslintAndTsc_js_1 = require("./PM_WithEslintAndTsc.js");
|
|
54
|
-
const ansi_colors_2 = __importDefault(require("ansi-colors"));
|
|
55
55
|
const changes = {};
|
|
56
56
|
const fileHashes = {};
|
|
57
57
|
const files = {};
|
|
@@ -74,10 +74,10 @@ async function fileHash(filePath, algorithm = "md5") {
|
|
|
74
74
|
}
|
|
75
75
|
const statusMessagePretty = (failures, test, runtime) => {
|
|
76
76
|
if (failures === 0) {
|
|
77
|
-
console.log(
|
|
77
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`${runtime} > ${test} completed successfully`)));
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
80
|
-
console.log(
|
|
80
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(`${runtime} > ${test} failed ${failures} times`)));
|
|
81
81
|
}
|
|
82
82
|
};
|
|
83
83
|
async function writeFileAndCreateDir(filePath, data) {
|
|
@@ -130,7 +130,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
130
130
|
return (0, utils_1.getRunnables)(tests, testName, payload);
|
|
131
131
|
};
|
|
132
132
|
this.launchPure = async (src, dest) => {
|
|
133
|
-
console.log(
|
|
133
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`pure < ${src}`)));
|
|
134
134
|
this.bddTestIsRunning(src);
|
|
135
135
|
const reportDest = `testeranto/reports/${this.name}/${src
|
|
136
136
|
.split(".")
|
|
@@ -145,7 +145,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
145
145
|
return t[0] === src;
|
|
146
146
|
});
|
|
147
147
|
if (!testConfig) {
|
|
148
|
-
console.log(
|
|
148
|
+
console.log(ansi_colors_2.default.inverse("missing test config! Exiting ungracefully!"));
|
|
149
149
|
process.exit(-1);
|
|
150
150
|
}
|
|
151
151
|
const testConfigResource = testConfig[2];
|
|
@@ -222,7 +222,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
222
222
|
this.bddTestIsNowDone(src, results.fails);
|
|
223
223
|
})
|
|
224
224
|
.catch((e1) => {
|
|
225
|
-
console.log(
|
|
225
|
+
console.log(ansi_colors_2.default.red(`launchPure - ${src} errored with: ${e1}`));
|
|
226
226
|
this.bddTestIsNowDone(src, -1);
|
|
227
227
|
statusMessagePretty(-1, src, "pure");
|
|
228
228
|
});
|
|
@@ -231,7 +231,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
231
231
|
// });
|
|
232
232
|
})
|
|
233
233
|
.catch((e2) => {
|
|
234
|
-
console.log(
|
|
234
|
+
console.log(ansi_colors_1.default.red(`pure ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`));
|
|
235
235
|
this.writeFileSync(`${reportDest}/logs.txt`, e2.stack, src);
|
|
236
236
|
this.bddTestIsNowDone(src, -1);
|
|
237
237
|
statusMessagePretty(-1, src, "pure");
|
|
@@ -247,7 +247,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
247
247
|
});
|
|
248
248
|
}
|
|
249
249
|
catch (e3) {
|
|
250
|
-
console.log(
|
|
250
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(`${src} 1 errored with: ${e3}. Check ${reportDest}/logs.txt for more info`)));
|
|
251
251
|
this.writeFileSync(`${reportDest}/logs.txt`, e3.stack, src);
|
|
252
252
|
this.bddTestIsNowDone(src, -1);
|
|
253
253
|
statusMessagePretty(-1, src, "pure");
|
|
@@ -260,7 +260,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
260
260
|
}
|
|
261
261
|
};
|
|
262
262
|
this.launchNode = async (src, dest) => {
|
|
263
|
-
console.log(
|
|
263
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`node < ${src}`)));
|
|
264
264
|
this.bddTestIsRunning(src);
|
|
265
265
|
const reportDest = `testeranto/reports/${this.name}/${src
|
|
266
266
|
.split(".")
|
|
@@ -275,7 +275,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
275
275
|
return t[0] === src;
|
|
276
276
|
});
|
|
277
277
|
if (!testConfig) {
|
|
278
|
-
console.log(
|
|
278
|
+
console.log(ansi_colors_2.default.inverse(`missing test config! Exiting ungracefully for '${src}'`));
|
|
279
279
|
process.exit(-1);
|
|
280
280
|
}
|
|
281
281
|
const testConfigResource = testConfig[2];
|
|
@@ -306,7 +306,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
306
306
|
});
|
|
307
307
|
}
|
|
308
308
|
else {
|
|
309
|
-
console.log(
|
|
309
|
+
console.log(ansi_colors_2.default.red(`node: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again run a port is available`));
|
|
310
310
|
this.queue.push(src);
|
|
311
311
|
return;
|
|
312
312
|
}
|
|
@@ -320,7 +320,12 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
320
320
|
const ipcfile = "/tmp/tpipe_" + Math.random();
|
|
321
321
|
const child = (0, node_child_process_1.spawn)("node",
|
|
322
322
|
// "node",
|
|
323
|
-
[
|
|
323
|
+
[
|
|
324
|
+
// "--inspect-brk",
|
|
325
|
+
builtfile,
|
|
326
|
+
testResources,
|
|
327
|
+
ipcfile,
|
|
328
|
+
], {
|
|
324
329
|
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
325
330
|
});
|
|
326
331
|
let buffer = new Buffer("");
|
|
@@ -387,7 +392,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
387
392
|
// JSON.stringify(Array.from(files[src]))
|
|
388
393
|
// );
|
|
389
394
|
if (code === 255) {
|
|
390
|
-
console.log(
|
|
395
|
+
console.log(ansi_colors_1.default.red(`node ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`));
|
|
391
396
|
this.bddTestIsNowDone(src, -1);
|
|
392
397
|
statusMessagePretty(-1, src, "node");
|
|
393
398
|
oStream.close();
|
|
@@ -414,7 +419,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
414
419
|
child.on("error", (e) => {
|
|
415
420
|
console.log("error");
|
|
416
421
|
haltReturns = true;
|
|
417
|
-
console.log(
|
|
422
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(`${src} errored with: ${e.name}. Check ${errFile} for more info`)));
|
|
418
423
|
this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
|
|
419
424
|
this.bddTestIsNowDone(src, -1);
|
|
420
425
|
statusMessagePretty(-1, src, "node");
|
|
@@ -426,7 +431,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
426
431
|
const dest = src.split(".").slice(0, -1).join(".");
|
|
427
432
|
// const d = dest + ".mjs";
|
|
428
433
|
const destFolder = dest.replace(".mjs", "");
|
|
429
|
-
console.log(
|
|
434
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`launchWebSideCar ${src}`)));
|
|
430
435
|
const fileStreams2 = [];
|
|
431
436
|
const doneFileStream2 = [];
|
|
432
437
|
const oStream = fs_1.default.createWriteStream(`${destFolder}/logs.txt`);
|
|
@@ -505,7 +510,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
505
510
|
this.bddTestIsNowDone(src, fails);
|
|
506
511
|
})
|
|
507
512
|
.catch((e) => {
|
|
508
|
-
console.log(
|
|
513
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(`launchWebSidecar - ${src} errored with: ${e}`)));
|
|
509
514
|
})
|
|
510
515
|
.finally(() => {
|
|
511
516
|
this.bddTestIsNowDone(src, -1);
|
|
@@ -525,7 +530,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
525
530
|
const src = sidecar[0];
|
|
526
531
|
const dest = process.cwd() + `/testeranto/bundles/node/${this.name}/${sidecar[0]}`;
|
|
527
532
|
const d = dest + ".mjs";
|
|
528
|
-
console.log(
|
|
533
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`launchNodeSideCar ${sidecar[0]}`)));
|
|
529
534
|
const destFolder = dest.replace(".ts", "");
|
|
530
535
|
const reportDest = `testeranto/reports/${this.name}/${src
|
|
531
536
|
.split(".")
|
|
@@ -624,7 +629,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
624
629
|
fs_1.default.rmSync(p);
|
|
625
630
|
}
|
|
626
631
|
haltReturns = true;
|
|
627
|
-
console.log(
|
|
632
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(`launchNodeSideCar - ${src} errored with: ${e.name}. Check ${errFile}for more info`)));
|
|
628
633
|
this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
|
|
629
634
|
// this.bddTestIsNowDone(src, -1);
|
|
630
635
|
// statusMessagePretty(-1, src);
|
|
@@ -636,7 +641,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
636
641
|
return [r, argz];
|
|
637
642
|
}
|
|
638
643
|
else {
|
|
639
|
-
console.log(
|
|
644
|
+
console.log(ansi_colors_2.default.red(`cannot ${src} because there are no open ports. the job will be unqueued`));
|
|
640
645
|
this.queue.push(sidecar[0]);
|
|
641
646
|
return [Math.random(), argz];
|
|
642
647
|
}
|
|
@@ -647,12 +652,12 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
647
652
|
}
|
|
648
653
|
};
|
|
649
654
|
this.stopPureSideCar = async (uid) => {
|
|
650
|
-
console.log(
|
|
655
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`stopPureSideCar ${uid}`)));
|
|
651
656
|
await this.sidecars[uid].shutdown();
|
|
652
657
|
return;
|
|
653
658
|
};
|
|
654
659
|
this.launchPureSideCar = async (sidecar) => {
|
|
655
|
-
console.log(
|
|
660
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`launchPureSideCar ${sidecar[0]}`)));
|
|
656
661
|
const r = Math.random();
|
|
657
662
|
const dest = process.cwd() + `/testeranto/bundles/pure/${this.name}/${sidecar[0]}`;
|
|
658
663
|
const builtfile = dest.split(".").slice(0, -1).concat("mjs").join(".");
|
|
@@ -709,7 +714,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
709
714
|
// }
|
|
710
715
|
};
|
|
711
716
|
this.launchWeb = async (src, dest) => {
|
|
712
|
-
console.log(
|
|
717
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`web < ${src}`)));
|
|
713
718
|
this.bddTestIsRunning(src);
|
|
714
719
|
const reportDest = `testeranto/reports/${this.name}/${src
|
|
715
720
|
.split(".")
|
|
@@ -726,16 +731,6 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
726
731
|
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
727
732
|
});
|
|
728
733
|
const d = `${dest}?cacheBust=${Date.now()}`;
|
|
729
|
-
const evaluation = `
|
|
730
|
-
|
|
731
|
-
import('${d}').then(async (x) => {
|
|
732
|
-
|
|
733
|
-
try {
|
|
734
|
-
return await (await x.default).receiveTestResourceConfig(${webArgz})
|
|
735
|
-
} catch (e) {
|
|
736
|
-
console.log("web run failure", e.toString())
|
|
737
|
-
}
|
|
738
|
-
})`;
|
|
739
734
|
const ofile = `${reportDest}/logs.txt`;
|
|
740
735
|
const oStream = fs_1.default.createWriteStream(ofile);
|
|
741
736
|
this.browser
|
|
@@ -774,11 +769,10 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
774
769
|
page.close();
|
|
775
770
|
oStream.close();
|
|
776
771
|
});
|
|
777
|
-
console.log("ostream is closed");
|
|
778
772
|
return;
|
|
779
773
|
};
|
|
780
774
|
page.on("pageerror", (err) => {
|
|
781
|
-
console.log(
|
|
775
|
+
console.log(ansi_colors_1.default.red(`web ! ${src} failed to execute No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`));
|
|
782
776
|
oStream.write(err.name);
|
|
783
777
|
oStream.write("\n");
|
|
784
778
|
if (err.cause) {
|
|
@@ -797,7 +791,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
797
791
|
close();
|
|
798
792
|
});
|
|
799
793
|
page.on("console", (log) => {
|
|
800
|
-
console.log("console message: ", log.text());
|
|
794
|
+
// console.log("console message: ", log.text());
|
|
801
795
|
if (oStream.closed) {
|
|
802
796
|
console.log("missed console message: ", log.text());
|
|
803
797
|
return;
|
|
@@ -813,19 +807,28 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
813
807
|
});
|
|
814
808
|
await page.goto(`file://${`${destFolder}.html`}`, {});
|
|
815
809
|
await page
|
|
816
|
-
.evaluate(
|
|
810
|
+
.evaluate(`
|
|
811
|
+
import('${d}').then(async (x) => {
|
|
812
|
+
try {
|
|
813
|
+
return await (await x.default).receiveTestResourceConfig(${webArgz})
|
|
814
|
+
} catch (e) {
|
|
815
|
+
console.log("web run failure", e.toString())
|
|
816
|
+
}
|
|
817
|
+
})
|
|
818
|
+
`)
|
|
817
819
|
.then(async ({ fails, failed, features }) => {
|
|
818
820
|
statusMessagePretty(fails, src, "web");
|
|
819
821
|
this.bddTestIsNowDone(src, fails);
|
|
820
|
-
close();
|
|
822
|
+
// close();
|
|
821
823
|
})
|
|
822
824
|
.catch((e) => {
|
|
823
|
-
console.log(
|
|
824
|
-
console.log(
|
|
825
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(e.stack)));
|
|
826
|
+
console.log(ansi_colors_2.default.red(ansi_colors_2.default.inverse(`web ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`)));
|
|
825
827
|
this.bddTestIsNowDone(src, -1);
|
|
826
828
|
})
|
|
827
829
|
.finally(() => {
|
|
828
830
|
// process.exit(-1);
|
|
831
|
+
close();
|
|
829
832
|
});
|
|
830
833
|
return page;
|
|
831
834
|
});
|
|
@@ -897,40 +900,40 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
897
900
|
this.checkForShutdown = () => {
|
|
898
901
|
// console.log(ansiC.inverse(JSON.stringify(this.summary, null, 2)));
|
|
899
902
|
this.checkQueue();
|
|
900
|
-
console.log(
|
|
901
|
-
console.log(
|
|
903
|
+
console.log(ansi_colors_2.default.inverse(`The following jobs are awaiting resources: ${JSON.stringify(this.queue)}`));
|
|
904
|
+
console.log(ansi_colors_2.default.inverse(`The status of ports: ${JSON.stringify(this.ports)}`));
|
|
902
905
|
this.writeBigBoard();
|
|
903
906
|
if (this.mode === "dev")
|
|
904
907
|
return;
|
|
905
908
|
let inflight = false;
|
|
906
909
|
Object.keys(this.summary).forEach((k) => {
|
|
907
910
|
if (this.summary[k].prompt === "?") {
|
|
908
|
-
console.log(
|
|
911
|
+
console.log(ansi_colors_2.default.blue(ansi_colors_2.default.inverse(`🕕 prompt ${k}`)));
|
|
909
912
|
inflight = true;
|
|
910
913
|
}
|
|
911
914
|
});
|
|
912
915
|
Object.keys(this.summary).forEach((k) => {
|
|
913
916
|
if (this.summary[k].runTimeErrors === "?") {
|
|
914
|
-
console.log(
|
|
917
|
+
console.log(ansi_colors_2.default.blue(ansi_colors_2.default.inverse(`🕕 runTimeError ${k}`)));
|
|
915
918
|
inflight = true;
|
|
916
919
|
}
|
|
917
920
|
});
|
|
918
921
|
Object.keys(this.summary).forEach((k) => {
|
|
919
922
|
if (this.summary[k].staticErrors === "?") {
|
|
920
|
-
console.log(
|
|
923
|
+
console.log(ansi_colors_2.default.blue(ansi_colors_2.default.inverse(`🕕 staticErrors ${k}`)));
|
|
921
924
|
inflight = true;
|
|
922
925
|
}
|
|
923
926
|
});
|
|
924
927
|
Object.keys(this.summary).forEach((k) => {
|
|
925
928
|
if (this.summary[k].typeErrors === "?") {
|
|
926
|
-
console.log(
|
|
929
|
+
console.log(ansi_colors_2.default.blue(ansi_colors_2.default.inverse(`🕕 typeErrors ${k}`)));
|
|
927
930
|
inflight = true;
|
|
928
931
|
}
|
|
929
932
|
});
|
|
930
933
|
this.writeBigBoard();
|
|
931
934
|
if (!inflight) {
|
|
932
935
|
this.browser.disconnect().then(() => {
|
|
933
|
-
console.log(
|
|
936
|
+
console.log(ansi_colors_2.default.inverse(`${this.name} has been tested. Goodbye.`));
|
|
934
937
|
process.exit();
|
|
935
938
|
});
|
|
936
939
|
}
|
|
@@ -946,7 +949,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
946
949
|
});
|
|
947
950
|
}
|
|
948
951
|
async stopSideCar(uid) {
|
|
949
|
-
console.log(
|
|
952
|
+
console.log(ansi_colors_2.default.green(ansi_colors_2.default.inverse(`stopSideCar ${uid}`)));
|
|
950
953
|
Object.entries(this.pureSidecars).forEach(async ([k, v]) => {
|
|
951
954
|
if (Number(k) === uid) {
|
|
952
955
|
await this.pureSidecars[Number(k)].stop();
|
|
@@ -1034,9 +1037,9 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
1034
1037
|
slowMo: 1,
|
|
1035
1038
|
waitForInitialPage: false,
|
|
1036
1039
|
executablePath,
|
|
1037
|
-
headless:
|
|
1040
|
+
headless: true,
|
|
1038
1041
|
dumpio: false,
|
|
1039
|
-
devtools:
|
|
1042
|
+
devtools: false,
|
|
1040
1043
|
args: [
|
|
1041
1044
|
"--disable-features=site-per-process",
|
|
1042
1045
|
"--allow-file-access-from-files",
|
|
@@ -1111,7 +1114,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
1111
1114
|
const hash = await fileHash(outputFile);
|
|
1112
1115
|
if (fileHashes[inputFile] !== hash) {
|
|
1113
1116
|
fileHashes[inputFile] = hash;
|
|
1114
|
-
console.log(
|
|
1117
|
+
console.log(ansi_colors_2.default.yellow(ansi_colors_2.default.inverse(`< ${e} ${filename}`)));
|
|
1115
1118
|
// launcher(inputFile, outputFile);
|
|
1116
1119
|
this.launchers[inputFile]();
|
|
1117
1120
|
}
|
|
@@ -1123,7 +1126,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
1123
1126
|
});
|
|
1124
1127
|
this.metafileOutputs(runtime);
|
|
1125
1128
|
watcher((0, fs_1.watch)(metafile, async (e, filename) => {
|
|
1126
|
-
console.log(
|
|
1129
|
+
console.log(ansi_colors_2.default.yellow(ansi_colors_2.default.inverse(`< ${e} ${filename} (${runtime})`)));
|
|
1127
1130
|
this.metafileOutputs(runtime);
|
|
1128
1131
|
}));
|
|
1129
1132
|
});
|
|
@@ -1162,7 +1165,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
1162
1165
|
// // });
|
|
1163
1166
|
// }
|
|
1164
1167
|
async stop() {
|
|
1165
|
-
console.log(
|
|
1168
|
+
console.log(ansi_colors_2.default.inverse("Testeranto-Run is shutting down gracefully..."));
|
|
1166
1169
|
this.mode = "once";
|
|
1167
1170
|
this.nodeMetafileWatcher.close();
|
|
1168
1171
|
this.webMetafileWatcher.close();
|
|
@@ -1216,7 +1219,7 @@ class PM_Main extends PM_WithEslintAndTsc_js_1.PM_WithEslintAndTsc {
|
|
|
1216
1219
|
checkQueue() {
|
|
1217
1220
|
const x = this.queue.pop();
|
|
1218
1221
|
if (!x) {
|
|
1219
|
-
|
|
1222
|
+
ansi_colors_2.default.inverse(`The following queue is empty`);
|
|
1220
1223
|
return;
|
|
1221
1224
|
}
|
|
1222
1225
|
const test = this.configs.tests.find((t) => t[0] === x);
|
|
@@ -114,7 +114,10 @@ class PM_Node extends _1.PM {
|
|
|
114
114
|
async write(uid, contents) {
|
|
115
115
|
return await this.send("write", ...arguments);
|
|
116
116
|
}
|
|
117
|
-
async writeFileSync(
|
|
117
|
+
async writeFileSync(x) {
|
|
118
|
+
const z = arguments["0"];
|
|
119
|
+
const filepath = z[0];
|
|
120
|
+
const contents = z[1];
|
|
118
121
|
return await this.send("writeFileSync", this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
|
|
119
122
|
}
|
|
120
123
|
async createWriteStream(filepath) {
|
|
@@ -85,7 +85,10 @@ class PM_Pure extends _1.PM {
|
|
|
85
85
|
write(uid, contents) {
|
|
86
86
|
return globalThis["write"](uid, contents);
|
|
87
87
|
}
|
|
88
|
-
writeFileSync(
|
|
88
|
+
writeFileSync(x) {
|
|
89
|
+
const z = arguments["0"];
|
|
90
|
+
const filepath = z[0];
|
|
91
|
+
const contents = z[1];
|
|
89
92
|
return globalThis["writeFileSync"](this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
|
|
90
93
|
}
|
|
91
94
|
createWriteStream(filepath) {
|
|
@@ -70,8 +70,8 @@ class PM_Web extends _1.PM {
|
|
|
70
70
|
customScreenShot(x, y) {
|
|
71
71
|
const opts = x[0];
|
|
72
72
|
const page = x[1];
|
|
73
|
-
console.log("customScreenShot 2 opts", opts);
|
|
74
|
-
console.log("customScreenShot 2 page", page);
|
|
73
|
+
// console.log("customScreenShot 2 opts", opts);
|
|
74
|
+
// console.log("customScreenShot 2 page", page);
|
|
75
75
|
return window["customScreenShot"](Object.assign(Object.assign({}, opts), { path: this.testResourceConfiguration.fs + "/" + opts.path }), this.testResourceConfiguration.name, page);
|
|
76
76
|
}
|
|
77
77
|
existsSync(destFolder) {
|
|
@@ -83,7 +83,10 @@ class PM_Web extends _1.PM {
|
|
|
83
83
|
write(uid, contents) {
|
|
84
84
|
return window["write"](uid, contents);
|
|
85
85
|
}
|
|
86
|
-
writeFileSync(
|
|
86
|
+
writeFileSync(x) {
|
|
87
|
+
const z = arguments["0"];
|
|
88
|
+
const filepath = z[0];
|
|
89
|
+
const contents = z[1];
|
|
87
90
|
return window["writeFileSync"](this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
|
|
88
91
|
}
|
|
89
92
|
createWriteStream(filepath) {
|
package/dist/common/src/Pure.js
CHANGED
|
@@ -14,10 +14,8 @@ class PureTesteranto extends core_js_1.default {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
async receiveTestResourceConfig(partialTestResource) {
|
|
17
|
-
console.log("[DEBUG] receiveTestResourceConfig called with:", partialTestResource);
|
|
18
17
|
const t = JSON.parse(partialTestResource);
|
|
19
18
|
const pm = new pure_js_1.PM_Pure(t);
|
|
20
|
-
// console.log("[DEBUG] Current test jobs:", this.testJobs?.length);
|
|
21
19
|
// if (!this.testJobs || this.testJobs.length === 0) {
|
|
22
20
|
// console.error(
|
|
23
21
|
// "[ERROR] No test jobs available - checking specs:",
|
|
@@ -33,9 +31,7 @@ class PureTesteranto extends core_js_1.default {
|
|
|
33
31
|
// };
|
|
34
32
|
// }
|
|
35
33
|
try {
|
|
36
|
-
console.log("[DEBUG] Executing test job with PM:", pm);
|
|
37
34
|
const result = await this.testJobs[0].receiveTestResourceConfig(pm);
|
|
38
|
-
console.log("[DEBUG] Test job completed with result:", result);
|
|
39
35
|
return result;
|
|
40
36
|
}
|
|
41
37
|
catch (e) {
|
|
@@ -53,7 +53,7 @@ const implementation = {
|
|
|
53
53
|
modifySpecs: (modifier) => (store) => {
|
|
54
54
|
console.debug("[DEBUG] Modifying specs");
|
|
55
55
|
return Object.assign(Object.assign({}, store), { specs: modifier(store.specs || []) });
|
|
56
|
-
}
|
|
56
|
+
},
|
|
57
57
|
},
|
|
58
58
|
thens: {
|
|
59
59
|
initializedProperly: () => (store) => {
|
|
@@ -1,129 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// simple http server to preview reports
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const fs_1 = __importDefault(require("fs"));
|
|
11
|
-
const fileServer = new node_static_1.default.Server("./", {
|
|
12
|
-
cache: false,
|
|
13
|
-
headers: {
|
|
14
|
-
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
15
|
-
"Pragma": "no-cache",
|
|
16
|
-
"Expires": "0"
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const server = http_1.default.createServer((req, res) => {
|
|
20
|
-
// Handle potential double responses
|
|
21
|
-
let responded = false;
|
|
22
|
-
const safeResponse = (handler) => {
|
|
23
|
-
if (responded)
|
|
24
|
-
return;
|
|
25
|
-
responded = true;
|
|
26
|
-
try {
|
|
27
|
-
handler();
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
console.error('Error handling request:', err);
|
|
31
|
-
if (!res.headersSent) {
|
|
32
|
-
res.writeHead(500);
|
|
33
|
-
}
|
|
34
|
-
res.end('Internal Server Error');
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
req.on('error', (err) => {
|
|
38
|
-
console.error('Request error:', err);
|
|
39
|
-
safeResponse(() => {
|
|
40
|
-
if (!res.headersSent) {
|
|
41
|
-
res.writeHead(400);
|
|
42
|
-
}
|
|
43
|
-
res.end('Bad Request');
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
req.on('end', () => {
|
|
47
|
-
safeResponse(() => {
|
|
48
|
-
const filePath = path_1.default.join(process.cwd(), req.url || '');
|
|
49
|
-
// First check if file exists
|
|
50
|
-
fs_1.default.stat(filePath, (err, stats) => {
|
|
51
|
-
if (err || !stats.isFile()) {
|
|
52
|
-
// Check if directory exists
|
|
53
|
-
fs_1.default.stat(filePath, (dirErr, dirStats) => {
|
|
54
|
-
if (!dirErr && dirStats.isDirectory()) {
|
|
55
|
-
// Serve directory listing
|
|
56
|
-
fs_1.default.readdir(filePath, (readErr, files) => {
|
|
57
|
-
if (readErr) {
|
|
58
|
-
res.writeHead(500);
|
|
59
|
-
return res.end('Error reading directory');
|
|
60
|
-
}
|
|
61
|
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
62
|
-
res.write(`
|
|
63
|
-
<html>
|
|
64
|
-
<head>
|
|
65
|
-
<title>Directory Listing: ${req.url}</title>
|
|
66
|
-
<style>
|
|
67
|
-
body { font-family: sans-serif; margin: 2rem; }
|
|
68
|
-
h1 { color: #333; }
|
|
69
|
-
ul { list-style: none; padding: 0; }
|
|
70
|
-
li { padding: 0.5rem; }
|
|
71
|
-
li a { color: #0366d6; text-decoration: none; }
|
|
72
|
-
li a:hover { text-decoration: underline; }
|
|
73
|
-
</style>
|
|
74
|
-
</head>
|
|
75
|
-
<body>
|
|
76
|
-
<h1>Directory: ${req.url}</h1>
|
|
77
|
-
<ul>
|
|
78
|
-
${files.map(file => `
|
|
79
|
-
<li>
|
|
80
|
-
<a href="${path_1.default.join(req.url || '', file)}">
|
|
81
|
-
${file}${file.endsWith('/') ? '/' : ''}
|
|
82
|
-
</a>
|
|
83
|
-
</li>
|
|
84
|
-
`).join('')}
|
|
85
|
-
</ul>
|
|
86
|
-
</body>
|
|
87
|
-
</html>
|
|
88
|
-
`);
|
|
89
|
-
res.end();
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
// Neither file nor directory exists - send 404
|
|
94
|
-
if (!res.headersSent) {
|
|
95
|
-
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
96
|
-
res.end('File not found');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
// File exists - serve it through node-static
|
|
103
|
-
const serve = () => {
|
|
104
|
-
fileServer.serve(req, res, (err) => {
|
|
105
|
-
if (err && !res.headersSent) {
|
|
106
|
-
res.writeHead(err.status || 500);
|
|
107
|
-
res.end(err.message);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
// Ensure we don't double-serve
|
|
112
|
-
if (!res.headersSent) {
|
|
113
|
-
serve();
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
req.resume();
|
|
119
|
-
});
|
|
120
|
-
server.listen(8080, () => {
|
|
121
|
-
console.log('Server running on http://localhost:8080');
|
|
122
|
-
console.log('Serving files from:', process.cwd());
|
|
123
|
-
});
|
|
124
|
-
server.on('error', (err) => {
|
|
125
|
-
console.error('Server error:', err);
|
|
126
|
-
});
|
|
127
|
-
process.on('uncaughtException', (err) => {
|
|
128
|
-
console.error('Uncaught exception:', err);
|
|
129
|
-
});
|
|
4
|
+
const ReportServerLib_1 = require("./ReportServerLib");
|
|
5
|
+
(0, ReportServerLib_1.ReportServerOfPort)(process.argv[2]);
|