testeranto 0.100.0 → 0.110.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 +1 -0
- package/bundle.js +80 -30
- package/dist/common/{dist/module/src/Init.js → Init.js} +28 -0
- package/dist/common/{src/PM → PM}/main.js +138 -95
- package/dist/common/ReportServer.js +22 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/jsx/index.js +0 -12
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +1 -1
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +41 -30
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +18 -14
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +17 -7
- package/dist/common/build.js +222 -0
- package/dist/common/{src/defaultConfig.js → defaultConfig.js} +1 -0
- package/dist/common/esbuildConfigs/eslint-formatter-testeranto.js +6 -0
- package/dist/common/esbuildConfigs/inputFilesPlugin.js +27 -0
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/node.js +2 -10
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/web.js +2 -13
- package/dist/common/{src/init-docs.js → init-docs.js} +20 -10
- package/dist/common/{src/lib → lib}/abstractBase.js +6 -1
- package/dist/common/{src/lib → lib}/basebuilder.js +23 -10
- package/dist/common/{src/lib → lib}/classBuilder.js +1 -3
- package/dist/common/{src/lib → lib}/core.js +26 -10
- package/dist/common/{src/lib → lib}/index.js +0 -1
- package/dist/common/{src/lib → lib}/types.js +0 -1
- package/dist/common/run.js +297 -0
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/common/utils.js +43 -0
- package/dist/module/Footer.js +4 -0
- package/dist/module/Init.js +63 -0
- package/dist/module/{src/PM → PM}/main.js +119 -86
- package/dist/module/ReportClient.js +97 -0
- package/dist/module/ReportServer.js +17 -0
- package/dist/module/SubPackages/react/jsx/index.js +15 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +3 -3
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +24 -23
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +1 -7
- package/dist/module/TestReport.js +91 -0
- package/dist/module/build.js +184 -0
- package/dist/module/{src/defaultConfig.js → defaultConfig.js} +1 -0
- package/dist/module/esbuildConfigs/eslint-formatter-testeranto.js +3 -0
- package/dist/module/esbuildConfigs/inputFilesPlugin.js +22 -0
- package/dist/module/{src/esbuildConfigs → esbuildConfigs}/node.js +2 -10
- package/dist/module/{src/esbuildConfigs → esbuildConfigs}/web.js +2 -13
- package/dist/module/{src/init-docs.js → init-docs.js} +1 -1
- package/dist/module/{src/lib → lib}/abstractBase.js +6 -1
- package/dist/module/{src/lib → lib}/basebuilder.js +23 -10
- package/dist/module/{src/lib → lib}/classBuilder.js +1 -3
- package/dist/module/{src/lib → lib}/core.js +26 -10
- package/dist/module/{src/lib → lib}/index.js +0 -1
- package/dist/module/run.js +259 -0
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/module/utils.js +29 -0
- package/dist/prebuild/ReportClient.css +11367 -0
- package/dist/prebuild/ReportClient.js +23641 -0
- package/dist/prebuild/ReportServer.mjs +16 -0
- package/dist/prebuild/TestReport.css +11367 -0
- package/dist/prebuild/TestReport.js +27484 -0
- package/dist/prebuild/build.mjs +376 -0
- package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +9 -0
- package/dist/prebuild/init-docs.mjs +64 -8
- package/dist/prebuild/{cli2.mjs → run.mjs} +353 -81
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/Node.d.ts +12 -0
- package/dist/types/{src/PM → PM}/index.d.ts +1 -1
- package/dist/types/{src/PM → PM}/main.d.ts +12 -9
- package/dist/types/{src/PM → PM}/node.d.ts +2 -4
- package/dist/types/{src/PM → PM}/web.d.ts +2 -4
- package/dist/types/SubPackages/react/component/node.d.ts +7 -0
- package/dist/types/SubPackages/react/component/web.d.ts +7 -0
- package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
- package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
- package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
- package/dist/types/SubPackages/react-dom/component/node.d.ts +11 -0
- package/dist/types/SubPackages/react-dom/component/web.d.ts +20 -0
- package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
- package/dist/types/SubPackages/react-dom/jsx/node.d.ts +7 -0
- package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
- package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +6 -0
- package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
- package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +4 -0
- package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +4 -0
- package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
- package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +9 -0
- package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +16 -0
- package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +9 -0
- package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +9 -0
- package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
- package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +5 -0
- package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +5 -0
- package/dist/types/Types.d.ts +61 -0
- package/dist/types/Web.d.ts +9 -0
- package/dist/types/defaultConfig.d.ts +3 -0
- package/dist/types/esbuildConfigs/eslint-formatter-testeranto.d.ts +2 -0
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/index.d.ts +1 -1
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/inputFilesPlugin.d.ts +0 -1
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/node.d.ts +1 -1
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/web.d.ts +1 -1
- package/dist/types/init-docs.d.ts +1 -0
- package/dist/types/lib/abstractBase.d.ts +110 -0
- package/dist/types/lib/basebuilder.d.ts +27 -0
- package/dist/types/lib/classBuilder.d.ts +7 -0
- package/dist/types/lib/core.d.ts +7 -0
- package/dist/types/lib/index.d.ts +83 -0
- package/dist/types/lib/types.d.ts +14 -0
- package/dist/types/run.d.ts +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/utils.d.ts +9 -0
- package/package.json +40 -32
- package/src/Footer.tsx +4 -0
- package/src/Init.ts +48 -0
- package/src/Node.ts +23 -17
- package/src/PM/index.ts +1 -1
- package/src/PM/main.ts +143 -101
- package/src/PM/node.ts +2 -2
- package/src/PM/web.ts +1 -1
- package/src/ReportClient.tsx +155 -0
- package/src/ReportServer.ts +21 -0
- package/src/SubPackages/react/component/node.ts +68 -24
- package/src/SubPackages/react/component/web.ts +68 -25
- package/src/SubPackages/react/jsx/index.ts +39 -18
- package/src/SubPackages/react/jsx/node.ts +12 -10
- package/src/SubPackages/react/jsx/web.ts +27 -14
- package/src/SubPackages/react-dom/component/node.ts +42 -50
- package/src/SubPackages/react-dom/component/web.ts +28 -10
- package/src/SubPackages/react-dom/jsx/node.ts +54 -56
- package/src/SubPackages/react-dom/jsx/web.ts +55 -42
- package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +23 -7
- package/src/SubPackages/react-test-renderer/component/index.ts +38 -5
- package/src/SubPackages/react-test-renderer/component/node.ts +24 -5
- package/src/SubPackages/react-test-renderer/component/web.ts +22 -5
- package/src/SubPackages/react-test-renderer/fc/node.ts +41 -7
- package/src/SubPackages/react-test-renderer/fc/web.ts +43 -11
- package/src/SubPackages/react-test-renderer/jsx/index.ts +39 -16
- package/src/SubPackages/react-test-renderer/jsx/node.ts +8 -6
- package/src/SubPackages/react-test-renderer/jsx/web.ts +22 -5
- package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +39 -6
- package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +27 -10
- package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +26 -12
- package/src/TestReport.tsx +176 -0
- package/src/Types.ts +63 -309
- package/src/Web.ts +24 -18
- package/src/build.ts +240 -0
- package/src/defaultConfig.ts +2 -1
- package/src/esbuildConfigs/eslint-formatter-testeranto.ts +5 -0
- package/src/esbuildConfigs/featuresPlugin.ts +0 -1
- package/src/esbuildConfigs/index.ts +1 -1
- package/src/esbuildConfigs/inputFilesPlugin.ts +2 -135
- package/src/esbuildConfigs/node.ts +4 -13
- package/src/esbuildConfigs/web.ts +3 -19
- package/src/init-docs.ts +2 -1
- package/src/lib/abstractBase.ts +82 -80
- package/src/lib/basebuilder.ts +57 -45
- package/src/lib/classBuilder.ts +15 -15
- package/src/lib/core.ts +44 -35
- package/src/lib/index.ts +47 -98
- package/src/lib/readme.md +12 -0
- package/src/lib/types.ts +53 -70
- package/src/run.ts +398 -0
- package/src/style.css +8 -0
- package/src/utils.ts +74 -2
- package/tsc.log +106 -0
- package/Bundle.Dockerfile +0 -52
- package/bin/init-docs.js +0 -24
- package/dist/common/src/Init.js +0 -40
- package/dist/common/src/SubPackages/puppeteer.js +0 -21
- package/dist/common/src/cli.js +0 -439
- package/dist/common/src/cli2.js +0 -144
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -99
- package/dist/common/src/utils.js +0 -16
- package/dist/common/testeranto.js +0 -15
- package/dist/module/src/Init.js +0 -35
- package/dist/module/src/SubPackages/puppeteer.js +0 -16
- package/dist/module/src/SubPackages/react/jsx/index.js +0 -27
- package/dist/module/src/cli.js +0 -411
- package/dist/module/src/cli2.js +0 -116
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -94
- package/dist/module/src/lib/types.js +0 -2
- package/dist/module/src/utils.js +0 -9
- package/dist/module/testeranto.js +0 -13
- package/dist/prebuild/cli.mjs +0 -1491
- package/dist/types/dist/module/src/Init.d.ts +0 -2
- package/dist/types/src/Node.d.ts +0 -13
- package/dist/types/src/SubPackages/puppeteer.d.ts +0 -6
- package/dist/types/src/SubPackages/react/component/node.d.ts +0 -7
- package/dist/types/src/SubPackages/react/component/web.d.ts +0 -7
- package/dist/types/src/SubPackages/react/jsx/index.d.ts +0 -12
- package/dist/types/src/SubPackages/react/jsx/node.d.ts +0 -4
- package/dist/types/src/SubPackages/react/jsx/web.d.ts +0 -4
- package/dist/types/src/SubPackages/react-dom/component/node.d.ts +0 -12
- package/dist/types/src/SubPackages/react-dom/component/web.d.ts +0 -11
- package/dist/types/src/SubPackages/react-dom/jsx/index.d.ts +0 -7
- package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +0 -6
- package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +0 -5
- package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -5
- package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +0 -13
- package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +0 -3
- package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +0 -17
- package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +0 -9
- package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/index.d.ts +0 -16
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -4
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -4
- package/dist/types/src/Types.d.ts +0 -90
- package/dist/types/src/Web.d.ts +0 -10
- package/dist/types/src/defaultConfig.d.ts +0 -3
- package/dist/types/src/lib/abstractBase.d.ts +0 -110
- package/dist/types/src/lib/basebuilder.d.ts +0 -27
- package/dist/types/src/lib/classBuilder.d.ts +0 -7
- package/dist/types/src/lib/core.d.ts +0 -8
- package/dist/types/src/lib/index.d.ts +0 -60
- package/dist/types/src/lib/types.d.ts +0 -40
- package/dist/types/src/utils.d.ts +0 -2
- package/dist/types/testeranto.d.ts +0 -16
- package/docker-compose.yml +0 -37
- package/src/SubPackages/puppeteer.ts +0 -51
- package/src/cli.ts +0 -535
- package/src/cli2.ts +0 -157
- package/testeranto.ts +0 -13
- package/dist/common/{src/Node.js → Node.js} +0 -0
- package/dist/common/{src/PM → PM}/index.js +0 -0
- package/dist/common/{src/PM → PM}/node.js +0 -0
- package/dist/common/{src/PM → PM}/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/jsx/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
- package/dist/common/{src/Types.js → Types.js} +0 -0
- package/dist/common/{src/Web.js → Web.js} +0 -0
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
- package/dist/common/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
- package/dist/common/{src/web.html.js → web.html.js} +0 -0
- package/dist/module/{src/Node.js → Node.js} +0 -0
- package/dist/module/{src/PM → PM}/index.js +0 -0
- package/dist/module/{src/PM → PM}/node.js +0 -0
- package/dist/module/{src/PM → PM}/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/jsx/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
- /package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
- /package/dist/module/{src/Types.js → Types.js} +0 -0
- /package/dist/module/{src/Web.js → Web.js} +0 -0
- /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
- /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
- /package/dist/{types/src/cli.d.ts → module/lib/types.js} +0 -0
- /package/dist/module/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
- /package/dist/module/{src/web.html.js → web.html.js} +0 -0
- /package/dist/types/{src/Init.d.ts → Init.d.ts} +0 -0
- /package/dist/types/{src/cli2.d.ts → ReportServer.d.ts} +0 -0
- /package/dist/types/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.d.ts +0 -0
- /package/dist/types/{src/init-docs.d.ts → build.d.ts} +0 -0
- /package/dist/types/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.d.ts +0 -0
- /package/dist/types/{src/puppeteerConfiger.d.ts → puppeteerConfiger.d.ts} +0 -0
- /package/dist/types/{src/web.html.d.ts → web.html.d.ts} +0 -0
package/src/PM/main.ts
CHANGED
|
@@ -9,35 +9,57 @@ import puppeteer, {
|
|
|
9
9
|
ScreenshotOptions,
|
|
10
10
|
} from "puppeteer-core";
|
|
11
11
|
import { PassThrough } from "stream";
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
|
|
12
|
+
import ansiC from "ansi-colors";
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
IBuiltConfig,
|
|
16
|
+
IFinalResults,
|
|
17
|
+
ITestTypes,
|
|
18
|
+
ITLog,
|
|
19
|
+
} from "../lib/index.js";
|
|
20
|
+
import {
|
|
21
|
+
bddExitCodePather,
|
|
22
|
+
lintExitCodePather,
|
|
23
|
+
tscExitCodePather,
|
|
24
|
+
} from "../utils";
|
|
16
25
|
|
|
17
26
|
import { PM } from "./index.js";
|
|
18
27
|
|
|
19
28
|
const fileStreams3: fs.WriteStream[] = [];
|
|
20
|
-
|
|
21
29
|
type IFPaths = string[];
|
|
22
|
-
|
|
23
30
|
const fPaths: IFPaths = [];
|
|
24
|
-
|
|
25
31
|
const files: Record<string, Set<string>> = {};
|
|
26
32
|
const recorders: Record<string, ScreenRecorder> = {};
|
|
27
33
|
const screenshots: Record<string, Promise<Uint8Array>[]> = {};
|
|
28
34
|
|
|
29
|
-
const red = "\x1b[31m";
|
|
30
|
-
const green = "\x1b[32m";
|
|
31
|
-
const reset = "\x1b[0m"; // Resets to default color
|
|
32
|
-
|
|
33
35
|
const statusMessagePretty = (failures: number, test: string) => {
|
|
34
36
|
if (failures === 0) {
|
|
35
|
-
console.log(green
|
|
37
|
+
console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
|
|
36
38
|
} else {
|
|
37
|
-
console.log(red
|
|
39
|
+
console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
|
|
38
40
|
}
|
|
39
41
|
};
|
|
40
42
|
|
|
43
|
+
async function writeFileAndCreateDir(filePath, data) {
|
|
44
|
+
const dirPath = path.dirname(filePath);
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
await fs.promises.mkdir(dirPath, { recursive: true });
|
|
48
|
+
await fs.appendFileSync(filePath, data);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(`Error writing file: ${error}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function isValidUrl(string) {
|
|
55
|
+
try {
|
|
56
|
+
new URL(string);
|
|
57
|
+
return true;
|
|
58
|
+
} catch (err) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
41
63
|
export class PM_Main extends PM {
|
|
42
64
|
browser: Browser;
|
|
43
65
|
|
|
@@ -45,21 +67,36 @@ export class PM_Main extends PM {
|
|
|
45
67
|
configs: IBuiltConfig;
|
|
46
68
|
ports: Record<number, boolean>;
|
|
47
69
|
queue: any[];
|
|
48
|
-
|
|
70
|
+
|
|
71
|
+
bigBoard: Record<
|
|
72
|
+
string,
|
|
73
|
+
{
|
|
74
|
+
status: "?" | "running" | "waiting";
|
|
75
|
+
runTimeError?: number;
|
|
76
|
+
typeErrors?: string;
|
|
77
|
+
staticErrors?: string;
|
|
78
|
+
}
|
|
79
|
+
> = {};
|
|
49
80
|
|
|
50
81
|
constructor(configs: IBuiltConfig) {
|
|
51
82
|
super();
|
|
52
83
|
this.server = {};
|
|
53
84
|
this.configs = configs;
|
|
54
85
|
this.ports = {};
|
|
55
|
-
|
|
86
|
+
|
|
87
|
+
this.configs.tests.forEach(([t]) => {
|
|
88
|
+
this.bigBoard[t] = {
|
|
89
|
+
status: "?",
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
|
|
56
93
|
this.configs.ports.forEach((element) => {
|
|
57
94
|
this.ports[element] = "true"; // set ports as open
|
|
58
95
|
});
|
|
59
96
|
|
|
60
97
|
globalThis["waitForSelector"] = async (pageKey: string, sel: string) => {
|
|
61
|
-
console.log("waitForSelector", pageKey, sel);
|
|
62
98
|
const page = (await this.browser.pages()).find(
|
|
99
|
+
/* @ts-ignore:next-line */
|
|
63
100
|
(p) => p.mainFrame()._id === pageKey
|
|
64
101
|
);
|
|
65
102
|
await page?.waitForSelector(sel);
|
|
@@ -71,18 +108,16 @@ export class PM_Main extends PM {
|
|
|
71
108
|
|
|
72
109
|
globalThis["closePage"] = async (pageKey) => {
|
|
73
110
|
const page = (await this.browser.pages()).find(
|
|
111
|
+
/* @ts-ignore:next-line */
|
|
74
112
|
(p) => p.mainFrame()._id === pageKey
|
|
75
113
|
);
|
|
114
|
+
/* @ts-ignore:next-line */
|
|
76
115
|
return page.close();
|
|
77
116
|
};
|
|
78
117
|
|
|
79
|
-
// globalThis["closePage"] = (p) => {
|
|
80
|
-
// console.log("closePage", p);
|
|
81
|
-
// return p.close();
|
|
82
|
-
// };
|
|
83
|
-
|
|
84
118
|
globalThis["goto"] = async (pageKey: string, url: string) => {
|
|
85
119
|
const page = (await this.browser.pages()).find(
|
|
120
|
+
/* @ts-ignore:next-line */
|
|
86
121
|
(p) => p.mainFrame()._id === pageKey
|
|
87
122
|
);
|
|
88
123
|
await page?.goto(url);
|
|
@@ -111,19 +146,9 @@ export class PM_Main extends PM {
|
|
|
111
146
|
contents: string,
|
|
112
147
|
testName: string
|
|
113
148
|
) => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
// Create directories if they don't exist
|
|
117
|
-
const dir = path.dirname(filepath);
|
|
118
|
-
|
|
119
|
-
// console.log(testName, "mkdirSync", dir);
|
|
120
|
-
|
|
121
|
-
fs.mkdirSync(dir, {
|
|
149
|
+
fs.mkdirSync(path.dirname(filepath), {
|
|
122
150
|
recursive: true,
|
|
123
151
|
});
|
|
124
|
-
|
|
125
|
-
// console.log(testName, "mkdirSync2");
|
|
126
|
-
|
|
127
152
|
if (!files[testName]) {
|
|
128
153
|
files[testName] = new Set();
|
|
129
154
|
}
|
|
@@ -185,6 +210,7 @@ export class PM_Main extends PM {
|
|
|
185
210
|
testName: string
|
|
186
211
|
) => {
|
|
187
212
|
const page = (await this.browser.pages()).find(
|
|
213
|
+
/* @ts-ignore:next-line */
|
|
188
214
|
(p) => p.mainFrame()._id === pageKey
|
|
189
215
|
);
|
|
190
216
|
|
|
@@ -217,6 +243,7 @@ export class PM_Main extends PM {
|
|
|
217
243
|
pageKey: string
|
|
218
244
|
) => {
|
|
219
245
|
const page = (await this.browser.pages()).find(
|
|
246
|
+
/* @ts-ignore:next-line */
|
|
220
247
|
(p) => p.mainFrame()._id === pageKey
|
|
221
248
|
);
|
|
222
249
|
|
|
@@ -264,7 +291,6 @@ export class PM_Main extends PM {
|
|
|
264
291
|
goto(p, url: string): any {
|
|
265
292
|
throw new Error("Method not implemented.");
|
|
266
293
|
}
|
|
267
|
-
|
|
268
294
|
$(selector: string): boolean {
|
|
269
295
|
throw new Error("Method not implemented.");
|
|
270
296
|
}
|
|
@@ -274,11 +300,9 @@ export class PM_Main extends PM {
|
|
|
274
300
|
customScreenShot(opts: object, cdpPage?: CdpPage) {
|
|
275
301
|
throw new Error("Method not implemented.");
|
|
276
302
|
}
|
|
277
|
-
|
|
278
303
|
end(accessObject: { uid: number }): boolean {
|
|
279
304
|
throw new Error("Method not implemented.");
|
|
280
305
|
}
|
|
281
|
-
|
|
282
306
|
existsSync(destFolder: string): boolean {
|
|
283
307
|
return fs.existsSync(destFolder);
|
|
284
308
|
}
|
|
@@ -372,7 +396,7 @@ export class PM_Main extends PM {
|
|
|
372
396
|
getAttribute(selector: string, attribute: string) {
|
|
373
397
|
throw new Error("Method not implemented.");
|
|
374
398
|
}
|
|
375
|
-
isDisabled(selector: string): boolean {
|
|
399
|
+
isDisabled(selector: string): Promise<boolean> {
|
|
376
400
|
throw new Error("Method not implemented.");
|
|
377
401
|
}
|
|
378
402
|
screencastStop(s: string) {
|
|
@@ -387,40 +411,70 @@ export class PM_Main extends PM {
|
|
|
387
411
|
this.browser = (await puppeteer.launch(options)) as any;
|
|
388
412
|
}
|
|
389
413
|
|
|
390
|
-
|
|
414
|
+
// goodbye = () => {
|
|
415
|
+
// this.browser.disconnect().then(() => {
|
|
416
|
+
|
|
417
|
+
// console.log("Goodbye");
|
|
418
|
+
// process.exit();
|
|
419
|
+
// });
|
|
420
|
+
// };
|
|
391
421
|
|
|
392
422
|
shutDown() {
|
|
393
|
-
console.log("shutting down...");
|
|
394
423
|
this.shutdownMode = true;
|
|
395
424
|
this.checkForShutdown();
|
|
396
425
|
}
|
|
397
426
|
|
|
398
427
|
checkForShutdown = () => {
|
|
399
428
|
const anyRunning: boolean =
|
|
400
|
-
Object.values(this.
|
|
429
|
+
Object.values(this.bigBoard).filter((x) => x.status === "running")
|
|
430
|
+
.length > 0;
|
|
401
431
|
if (anyRunning) {
|
|
402
432
|
} else {
|
|
403
433
|
this.browser.disconnect().then(() => {
|
|
404
|
-
|
|
434
|
+
const final = {
|
|
435
|
+
timestamp: Date.now(),
|
|
436
|
+
tests: this.configs.tests.reduce((mm, t) => {
|
|
437
|
+
const bddErrors = fs
|
|
438
|
+
.readFileSync(bddExitCodePather(t[0], t[1]))
|
|
439
|
+
.toString();
|
|
440
|
+
const lintErrors = fs
|
|
441
|
+
.readFileSync(lintExitCodePather(t[0], t[1]))
|
|
442
|
+
.toString();
|
|
443
|
+
const typeErrors = fs
|
|
444
|
+
.readFileSync(tscExitCodePather(t[0], t[1]))
|
|
445
|
+
.toString();
|
|
446
|
+
mm[t[0]] = {
|
|
447
|
+
bddErrors,
|
|
448
|
+
lintErrors,
|
|
449
|
+
typeErrors,
|
|
450
|
+
};
|
|
451
|
+
return mm;
|
|
452
|
+
}, {}),
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
const s = JSON.stringify(final, null, 2);
|
|
456
|
+
fs.writeFileSync("docs/summary.json", s);
|
|
457
|
+
console.log(ansiC.inverse("Goodbye"));
|
|
405
458
|
process.exit();
|
|
406
459
|
});
|
|
407
460
|
}
|
|
408
461
|
};
|
|
409
462
|
|
|
410
|
-
|
|
411
|
-
this.
|
|
463
|
+
testIsNowRunning = (src: string) => {
|
|
464
|
+
this.bigBoard[src].status = "running";
|
|
412
465
|
};
|
|
413
466
|
|
|
414
|
-
|
|
415
|
-
this.
|
|
467
|
+
testIsNowDone = (src: string) => {
|
|
468
|
+
this.bigBoard[src].status = "waiting";
|
|
416
469
|
if (this.shutdownMode) {
|
|
417
470
|
this.checkForShutdown();
|
|
418
471
|
}
|
|
419
472
|
};
|
|
420
473
|
|
|
421
474
|
launchNode = async (src: string, dest: string) => {
|
|
422
|
-
console.log(
|
|
423
|
-
|
|
475
|
+
// console.log(ansiC.yellow(`! node, ${src}`));
|
|
476
|
+
console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
|
|
477
|
+
this.testIsNowRunning(src);
|
|
424
478
|
|
|
425
479
|
const destFolder = dest.replace(".mjs", "");
|
|
426
480
|
|
|
@@ -431,7 +485,7 @@ export class PM_Main extends PM {
|
|
|
431
485
|
});
|
|
432
486
|
|
|
433
487
|
if (!testConfig) {
|
|
434
|
-
console.
|
|
488
|
+
console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
|
|
435
489
|
process.exit(-1);
|
|
436
490
|
}
|
|
437
491
|
const testConfigResource = testConfig[2];
|
|
@@ -510,13 +564,15 @@ export class PM_Main extends PM {
|
|
|
510
564
|
this.receiveFeatures(features, destFolder, src);
|
|
511
565
|
// console.log(`${src} completed with ${failed} errors`);
|
|
512
566
|
statusMessagePretty(failed, src);
|
|
567
|
+
this.receiveExitCode(src, failed);
|
|
513
568
|
})
|
|
514
569
|
.catch((e) => {
|
|
515
|
-
console.log(`${src} errored with
|
|
570
|
+
console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
|
|
571
|
+
// console.log(reset, `${src} errored with`, e);
|
|
516
572
|
})
|
|
517
573
|
.finally(() => {
|
|
518
574
|
webSideCares.forEach((webSideCar) => webSideCar.close());
|
|
519
|
-
this.
|
|
575
|
+
this.testIsNowDone(src);
|
|
520
576
|
});
|
|
521
577
|
});
|
|
522
578
|
});
|
|
@@ -535,7 +591,9 @@ export class PM_Main extends PM {
|
|
|
535
591
|
testConfig: ITestTypes
|
|
536
592
|
): Promise<Page> => {
|
|
537
593
|
const d = dest + ".mjs";
|
|
538
|
-
console.log("launchWebSideCar", src, dest, d);
|
|
594
|
+
// console.log(green, "launchWebSideCar", src, dest, d);
|
|
595
|
+
console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
|
|
596
|
+
|
|
539
597
|
const destFolder = dest.replace(".mjs", "");
|
|
540
598
|
// const webArgz = JSON.stringify({
|
|
541
599
|
// name: dest,
|
|
@@ -673,6 +731,7 @@ export class PM_Main extends PM {
|
|
|
673
731
|
})
|
|
674
732
|
.then(async (page) => {
|
|
675
733
|
await page.goto(`file://${`${dest}.html`}`, {});
|
|
734
|
+
|
|
676
735
|
res(page);
|
|
677
736
|
});
|
|
678
737
|
});
|
|
@@ -684,7 +743,8 @@ export class PM_Main extends PM {
|
|
|
684
743
|
testConfig: ITestTypes
|
|
685
744
|
) => {
|
|
686
745
|
const d = dest + ".mjs";
|
|
687
|
-
console.log("launchNodeSideCar", src, dest, d);
|
|
746
|
+
// console.log(green, "launchNodeSideCar", src, dest, d);
|
|
747
|
+
console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
|
|
688
748
|
|
|
689
749
|
const destFolder = dest.replace(".mjs", "");
|
|
690
750
|
|
|
@@ -766,8 +826,9 @@ export class PM_Main extends PM {
|
|
|
766
826
|
};
|
|
767
827
|
|
|
768
828
|
launchWeb = (t: string, dest: string) => {
|
|
769
|
-
console.log("! web", t);
|
|
770
|
-
|
|
829
|
+
// console.log(green, "! web", t);
|
|
830
|
+
console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
|
|
831
|
+
this.testIsNowRunning(t);
|
|
771
832
|
|
|
772
833
|
// sidecars.map((sidecar) => {
|
|
773
834
|
// if (sidecar[1] === "node") {
|
|
@@ -791,9 +852,9 @@ export class PM_Main extends PM {
|
|
|
791
852
|
const d = `${dest}?cacheBust=${Date.now()}`;
|
|
792
853
|
|
|
793
854
|
const evaluation = `
|
|
794
|
-
|
|
855
|
+
|
|
795
856
|
import('${d}').then(async (x) => {
|
|
796
|
-
|
|
857
|
+
|
|
797
858
|
try {
|
|
798
859
|
return await (await x.default).receiveTestResourceConfig(${webArgz})
|
|
799
860
|
} catch (e) {
|
|
@@ -982,7 +1043,7 @@ export class PM_Main extends PM {
|
|
|
982
1043
|
// });
|
|
983
1044
|
|
|
984
1045
|
page.exposeFunction("page", () => {
|
|
985
|
-
return page.mainFrame()._id;
|
|
1046
|
+
return (page.mainFrame() as unknown as { _id: string })._id;
|
|
986
1047
|
});
|
|
987
1048
|
|
|
988
1049
|
page.exposeFunction("click", (sel) => {
|
|
@@ -1048,7 +1109,7 @@ export class PM_Main extends PM {
|
|
|
1048
1109
|
delete screenshots[t];
|
|
1049
1110
|
page.close();
|
|
1050
1111
|
|
|
1051
|
-
this.
|
|
1112
|
+
this.testIsNowDone(t);
|
|
1052
1113
|
stderrStream.close();
|
|
1053
1114
|
stdoutStream.close();
|
|
1054
1115
|
});
|
|
@@ -1070,7 +1131,7 @@ export class PM_Main extends PM {
|
|
|
1070
1131
|
|
|
1071
1132
|
console.debug(`Error from message ${t}: [${err.message}] `);
|
|
1072
1133
|
stderrStream.write(err.message);
|
|
1073
|
-
|
|
1134
|
+
close();
|
|
1074
1135
|
});
|
|
1075
1136
|
page.on("console", (log: ConsoleMessage) => {
|
|
1076
1137
|
// console.debug(`Log from ${t}: [${log.text()}] `);
|
|
@@ -1090,11 +1151,14 @@ export class PM_Main extends PM {
|
|
|
1090
1151
|
this.receiveFeatures(features, destFolder, t);
|
|
1091
1152
|
// console.log(`${t} completed with ${failed} errors`);
|
|
1092
1153
|
statusMessagePretty(failed, t);
|
|
1154
|
+
this.receiveExitCode(t, failed);
|
|
1093
1155
|
})
|
|
1094
1156
|
.catch((e) => {
|
|
1095
|
-
console.log(`${t} errored with`, e);
|
|
1157
|
+
// console.log(red, `${t} errored with`, e);
|
|
1158
|
+
console.log(ansiC.red(ansiC.inverse(`${t} errored with: ${e}`)));
|
|
1096
1159
|
})
|
|
1097
1160
|
.finally(() => {
|
|
1161
|
+
// this.testIsNowDone(t);
|
|
1098
1162
|
close();
|
|
1099
1163
|
});
|
|
1100
1164
|
|
|
@@ -1141,13 +1205,13 @@ export class PM_Main extends PM {
|
|
|
1141
1205
|
}
|
|
1142
1206
|
}
|
|
1143
1207
|
|
|
1144
|
-
fs.symlink(u.pathname, newPath, (err) => {
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
});
|
|
1208
|
+
// fs.symlink(u.pathname, newPath, (err) => {
|
|
1209
|
+
// if (err) {
|
|
1210
|
+
// // console.error("Error creating symlink:", err);
|
|
1211
|
+
// } else {
|
|
1212
|
+
// // console.log("Symlink created successfully");
|
|
1213
|
+
// }
|
|
1214
|
+
// });
|
|
1151
1215
|
accum.files.push(newPath);
|
|
1152
1216
|
} else if (u.protocol === "http:" || u.protocol === "https:") {
|
|
1153
1217
|
const newPath = `${process.cwd()}/docs/features/external${
|
|
@@ -1161,13 +1225,7 @@ export class PM_Main extends PM {
|
|
|
1161
1225
|
await fs.promises.mkdir(path.dirname(featureDestination), {
|
|
1162
1226
|
recursive: true,
|
|
1163
1227
|
});
|
|
1164
|
-
|
|
1165
|
-
// featureStringKey
|
|
1166
|
-
// )}`;
|
|
1167
|
-
// writeFileAndCreateDir(
|
|
1168
|
-
// `${featureDestination}/${await sha256(featureStringKey)}`,
|
|
1169
|
-
// featureStringKey
|
|
1170
|
-
// );
|
|
1228
|
+
|
|
1171
1229
|
accum.strings.push(featureStringKey);
|
|
1172
1230
|
}
|
|
1173
1231
|
|
|
@@ -1186,35 +1244,19 @@ export class PM_Main extends PM {
|
|
|
1186
1244
|
.join("\n")
|
|
1187
1245
|
);
|
|
1188
1246
|
});
|
|
1189
|
-
};
|
|
1190
|
-
}
|
|
1191
|
-
|
|
1192
|
-
async function writeFileAndCreateDir(filePath, data) {
|
|
1193
|
-
const dirPath = path.dirname(filePath);
|
|
1194
1247
|
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
await fs.appendFileSync(filePath, data);
|
|
1198
|
-
} catch (error) {
|
|
1199
|
-
console.error(`Error writing file: ${error}`);
|
|
1200
|
-
}
|
|
1201
|
-
}
|
|
1202
|
-
|
|
1203
|
-
async function sha256(rawData) {
|
|
1204
|
-
const data =
|
|
1205
|
-
typeof rawData === "object" ? JSON.stringify(rawData) : String(rawData);
|
|
1248
|
+
this.writeBigBoard();
|
|
1249
|
+
};
|
|
1206
1250
|
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
}
|
|
1251
|
+
receiveExitCode = (srcTest: string, failures: number) => {
|
|
1252
|
+
this.bigBoard[srcTest].runTimeError = failures;
|
|
1253
|
+
this.writeBigBoard();
|
|
1254
|
+
};
|
|
1212
1255
|
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
}
|
|
1256
|
+
writeBigBoard = () => {
|
|
1257
|
+
fs.writeFileSync(
|
|
1258
|
+
"./docs/bigBoard.json",
|
|
1259
|
+
JSON.stringify(this.bigBoard, null, 2)
|
|
1260
|
+
);
|
|
1261
|
+
};
|
|
1220
1262
|
}
|
package/src/PM/node.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import
|
|
3
|
+
import { ScreencastOptions } from "puppeteer-core";
|
|
4
4
|
import { PassThrough } from "stream";
|
|
5
5
|
|
|
6
6
|
import { ITLog, ITTestResourceConfiguration } from "../lib";
|
|
@@ -43,7 +43,7 @@ export class PM_Node extends PM {
|
|
|
43
43
|
throw new Error("Method not implemented.");
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
isDisabled(selector: string): boolean {
|
|
46
|
+
isDisabled(selector: string): Promise<boolean> {
|
|
47
47
|
throw new Error("Method not implemented.");
|
|
48
48
|
}
|
|
49
49
|
|
package/src/PM/web.ts
CHANGED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import ReactDom from "react-dom/client";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
|
|
4
|
+
import 'bootstrap/dist/css/bootstrap.min.css';
|
|
5
|
+
import "./style.css"
|
|
6
|
+
|
|
7
|
+
import { IRunTime, ITestTypes, IBuiltConfig } from "./lib";
|
|
8
|
+
import { Footer } from "./Footer";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
type ICollation = {
|
|
12
|
+
name: string;
|
|
13
|
+
runTime: IRunTime;
|
|
14
|
+
tr: {
|
|
15
|
+
ports: number;
|
|
16
|
+
};
|
|
17
|
+
sidecars: ITestTypes[];
|
|
18
|
+
status: string;
|
|
19
|
+
staticAnalysis: string;
|
|
20
|
+
typeErrors: string;
|
|
21
|
+
bddErrors: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
type ICollations = ICollation[];
|
|
25
|
+
|
|
26
|
+
const BigBoard = () => {
|
|
27
|
+
|
|
28
|
+
const [configs, setConfigs] = useState<IBuiltConfig>();
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
(async () => {
|
|
31
|
+
fetch('/kokomoBay/docs/testeranto.json')
|
|
32
|
+
.then(response => response.json())
|
|
33
|
+
.then(json => {
|
|
34
|
+
setConfigs(json)
|
|
35
|
+
})
|
|
36
|
+
.catch(error => console.error(error));
|
|
37
|
+
|
|
38
|
+
})();
|
|
39
|
+
}, []);
|
|
40
|
+
|
|
41
|
+
const [bigBoard, setBigBoard] = useState<Record<string, object>>({});
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
(async () => {
|
|
44
|
+
fetch('/kokomoBay/docs/bigBoard.json')
|
|
45
|
+
.then(response => response.json())
|
|
46
|
+
.then(json => {
|
|
47
|
+
setBigBoard(json)
|
|
48
|
+
})
|
|
49
|
+
.catch(error => console.error(error));
|
|
50
|
+
|
|
51
|
+
})();
|
|
52
|
+
}, []);
|
|
53
|
+
|
|
54
|
+
const [staticAnalysis, setStaticAnalysis] = useState<Record<string, string>>({});
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
(async () => {
|
|
57
|
+
|
|
58
|
+
let accumulator = {};
|
|
59
|
+
for (const t of (configs || { tests: [] as ITestTypes[] }).tests) {
|
|
60
|
+
accumulator[t[0]] = await (await fetch(`/kokomoBay/docs/${t[1]}/${t[0].split(".").slice(0, -1).join(".")}/lint_errors.txt`)).text()
|
|
61
|
+
}
|
|
62
|
+
setStaticAnalysis(accumulator);
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
})();
|
|
66
|
+
}, [configs, bigBoard]);
|
|
67
|
+
|
|
68
|
+
const [typeErrors, setTypeErrors] = useState<Record<string, string>>({});
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
(async () => {
|
|
71
|
+
|
|
72
|
+
let accumulator = {};
|
|
73
|
+
for (const t of (configs || { tests: [] as ITestTypes[] }).tests) {
|
|
74
|
+
accumulator[t[0]] = await (await fetch(`/kokomoBay/docs/${t[1]}/${t[0].split(".").slice(0, -1).join(".")}/type_errors.txt`)).text()
|
|
75
|
+
}
|
|
76
|
+
setTypeErrors(accumulator);
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
})();
|
|
80
|
+
}, [configs, bigBoard]);
|
|
81
|
+
|
|
82
|
+
const [bddErrors, setBddErrors] = useState<Record<string, string>>({});
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
(async () => {
|
|
85
|
+
|
|
86
|
+
let accumulator = {};
|
|
87
|
+
for (const t of (configs || { tests: [] as ITestTypes[] }).tests) {
|
|
88
|
+
accumulator[t[0]] = await (await fetch(`/kokomoBay/docs/${t[1]}/${t[0].split(".").slice(0, -1).join(".")}/bdd_errors.txt`)).text()
|
|
89
|
+
}
|
|
90
|
+
setBddErrors(accumulator);
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
})();
|
|
94
|
+
}, [configs, bigBoard]);
|
|
95
|
+
|
|
96
|
+
if (!configs || !staticAnalysis || !typeErrors || !bddErrors) {
|
|
97
|
+
return <div>loading...</div>
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const collated: ICollations = configs.tests.map((c) => {
|
|
101
|
+
return {
|
|
102
|
+
...bigBoard[c[0]],
|
|
103
|
+
name: c[0],
|
|
104
|
+
runTime: c[1],
|
|
105
|
+
tr: c[2],
|
|
106
|
+
sidecars: c[3],
|
|
107
|
+
staticAnalysis: staticAnalysis[c[0]],
|
|
108
|
+
typeErrors: typeErrors[c[0]],
|
|
109
|
+
bddErrors: bddErrors[c[0]],
|
|
110
|
+
} as ICollation
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
return <div >
|
|
114
|
+
<table>
|
|
115
|
+
<tr>
|
|
116
|
+
<td>name</td>
|
|
117
|
+
<td>run time</td>
|
|
118
|
+
<td>BDD errors</td>
|
|
119
|
+
<td>Lint errors</td>
|
|
120
|
+
<td>Type errors</td>
|
|
121
|
+
<td>prompt</td>
|
|
122
|
+
</tr>
|
|
123
|
+
{
|
|
124
|
+
...collated.map((c) => {
|
|
125
|
+
return <tr>
|
|
126
|
+
<td>{c.name}</td>
|
|
127
|
+
<td>{c.runTime}</td>
|
|
128
|
+
<td><a href={`${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/littleBoard.html`}>{c.bddErrors}</a></td>
|
|
129
|
+
<td><a href={`${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/lint_errors.json`}>{c.staticAnalysis}</a></td>
|
|
130
|
+
<td><a href={`${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/type_errors.txt`}>{c.typeErrors}</a></td>
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
<td>
|
|
134
|
+
<pre>
|
|
135
|
+
aider --model deepseek/deepseek-chat --load {`docs/${c.runTime}/${c.name.split(".").slice(0, -1).join(".")}/prompt.txt`}
|
|
136
|
+
</pre>
|
|
137
|
+
</td>
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
</tr>
|
|
141
|
+
})
|
|
142
|
+
}
|
|
143
|
+
</table>
|
|
144
|
+
<Footer />
|
|
145
|
+
</div>
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
document.addEventListener("DOMContentLoaded", function () {
|
|
149
|
+
const elem = document.getElementById("root");
|
|
150
|
+
if (elem) {
|
|
151
|
+
ReactDom.createRoot(elem).render(React.createElement(BigBoard, {}, []));
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
console.log("hello BigBoard!")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import staticServer from "node-static";
|
|
2
|
+
import http from "http";
|
|
3
|
+
|
|
4
|
+
const main = async () => {
|
|
5
|
+
process.chdir("../"); // Navigate one level up
|
|
6
|
+
|
|
7
|
+
const fileServer = new staticServer.Server(".", {});
|
|
8
|
+
|
|
9
|
+
http
|
|
10
|
+
.createServer(function (request, response) {
|
|
11
|
+
request
|
|
12
|
+
.addListener("end", function () {
|
|
13
|
+
fileServer.serve(request, response);
|
|
14
|
+
})
|
|
15
|
+
.resume();
|
|
16
|
+
})
|
|
17
|
+
.listen(8080);
|
|
18
|
+
|
|
19
|
+
console.log("Server running on port 8080");
|
|
20
|
+
};
|
|
21
|
+
main();
|