testeranto 0.94.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 -33
- package/dist/common/{src/Init.js → Init.js} +28 -0
- package/dist/common/{src/PM → PM}/main.js +272 -111
- package/dist/common/{src/PM → PM}/node.js +20 -5
- package/dist/common/{src/PM → PM}/web.js +19 -4
- 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/jsx/node.js +1 -6
- 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 +3 -14
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/web.js +3 -14
- package/dist/common/{src/init-docs.js → init-docs.js} +20 -10
- package/dist/common/{src/lib → lib}/abstractBase.js +20 -92
- 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/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 +253 -102
- package/dist/module/{src/PM → PM}/node.js +20 -5
- package/dist/module/{src/PM → PM}/web.js +19 -4
- 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/jsx/node.js +1 -6
- 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 +3 -14
- package/dist/module/{src/esbuildConfigs → esbuildConfigs}/web.js +3 -14
- package/dist/module/{src/init-docs.js → init-docs.js} +1 -1
- package/dist/module/{src/lib → lib}/abstractBase.js +20 -92
- 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/{run-tests.mjs → run.mjs} +501 -182
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/Node.d.ts +12 -0
- package/dist/types/{src/PM → PM}/index.d.ts +11 -3
- package/dist/types/{src/PM → PM}/main.d.ts +24 -15
- package/dist/types/{src/PM → PM}/node.d.ts +11 -6
- package/dist/types/{src/PM → PM}/web.d.ts +11 -7
- 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/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 +50 -39
- package/src/Footer.tsx +4 -0
- package/src/Init.ts +48 -0
- package/src/Node.ts +23 -17
- package/src/PM/index.ts +13 -9
- package/src/PM/main.ts +337 -139
- package/src/PM/node.ts +43 -8
- package/src/PM/web.ts +34 -6
- 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 +23 -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 +22 -5
- 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 +131 -129
- 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 -114
- package/src/esbuildConfigs/node.ts +7 -19
- package/src/esbuildConfigs/web.ts +6 -21
- package/src/init-docs.ts +2 -1
- package/src/lib/abstractBase.ts +140 -195
- 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 +40 -231
- 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/dist/module/src/Init.js +0 -40
- package/dist/common/src/Aider.js +0 -143
- package/dist/common/src/Project.js +0 -227
- package/dist/common/src/Puppeteer.js +0 -111
- package/dist/common/src/SubPackages/puppeteer.js +0 -21
- package/dist/common/src/build-tests.js +0 -39
- package/dist/common/src/esbuildConfigs/features.js +0 -14
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -87
- package/dist/common/src/esbuildConfigs/report.js +0 -14
- package/dist/common/src/esbuildConfigs/tests.js +0 -13
- package/dist/common/src/run-tests.js +0 -39
- package/dist/common/src/utils.js +0 -16
- package/dist/common/testeranto.js +0 -15
- package/dist/module/src/Aider.js +0 -136
- package/dist/module/src/Init.js +0 -35
- package/dist/module/src/Project.js +0 -220
- package/dist/module/src/Puppeteer.js +0 -106
- package/dist/module/src/SubPackages/puppeteer.js +0 -16
- package/dist/module/src/SubPackages/react/jsx/index.js +0 -27
- package/dist/module/src/build-tests.js +0 -11
- package/dist/module/src/esbuildConfigs/features.js +0 -12
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -82
- package/dist/module/src/esbuildConfigs/report.js +0 -14
- package/dist/module/src/esbuildConfigs/tests.js +0 -11
- package/dist/module/src/run-tests.js +0 -11
- package/dist/module/src/utils.js +0 -9
- package/dist/module/testeranto.js +0 -13
- package/dist/prebuild/build-tests.mjs +0 -553
- package/dist/types/dist/module/src/Init.d.ts +0 -2
- package/dist/types/src/Aider.d.ts +0 -1
- package/dist/types/src/Node.d.ts +0 -13
- package/dist/types/src/Project.d.ts +0 -12
- package/dist/types/src/Puppeteer.d.ts +0 -2
- 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 -8
- 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 -51
- package/dist/types/src/Web.d.ts +0 -10
- package/dist/types/src/defaultConfig.d.ts +0 -3
- package/dist/types/src/esbuildConfigs/features.d.ts +0 -4
- package/dist/types/src/esbuildConfigs/report.d.ts +0 -0
- package/dist/types/src/esbuildConfigs/tests.d.ts +0 -4
- package/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 -68
- 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/Aider.ts +0 -168
- package/src/Project.ts +0 -292
- package/src/Puppeteer.ts +0 -143
- package/src/SubPackages/puppeteer.ts +0 -51
- package/src/build-tests.ts +0 -12
- package/src/esbuildConfigs/features.ts +0 -17
- package/src/esbuildConfigs/report.ts +0 -15
- package/src/esbuildConfigs/tests.ts +0 -14
- package/src/run-tests.ts +0 -12
- package/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/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/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/lib → lib}/types.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/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/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/module/{src/lib → 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/build-tests.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/run-tests.d.ts → init-docs.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
|
@@ -1,29 +1,65 @@
|
|
|
1
|
+
import { CdpPage, Page } from "puppeteer-core/lib/esm/puppeteer";
|
|
1
2
|
import fs from "fs";
|
|
2
3
|
import path from "path";
|
|
3
4
|
import puppeteer, {
|
|
4
5
|
Browser,
|
|
5
6
|
ConsoleMessage,
|
|
7
|
+
LaunchOptions,
|
|
8
|
+
ScreenRecorder,
|
|
6
9
|
ScreenshotOptions,
|
|
7
10
|
} from "puppeteer-core";
|
|
8
11
|
import { PassThrough } from "stream";
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
import {
|
|
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";
|
|
12
25
|
|
|
13
26
|
import { PM } from "./index.js";
|
|
14
|
-
import { destinationOfRuntime } from "../utils.js";
|
|
15
|
-
import { ITLog } from "../lib/index.js";
|
|
16
|
-
import { Page } from "puppeteer-core/lib/esm/puppeteer";
|
|
17
27
|
|
|
18
28
|
const fileStreams3: fs.WriteStream[] = [];
|
|
19
|
-
|
|
20
29
|
type IFPaths = string[];
|
|
21
|
-
|
|
22
30
|
const fPaths: IFPaths = [];
|
|
23
|
-
|
|
24
31
|
const files: Record<string, Set<string>> = {};
|
|
32
|
+
const recorders: Record<string, ScreenRecorder> = {};
|
|
25
33
|
const screenshots: Record<string, Promise<Uint8Array>[]> = {};
|
|
26
34
|
|
|
35
|
+
const statusMessagePretty = (failures: number, test: string) => {
|
|
36
|
+
if (failures === 0) {
|
|
37
|
+
console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
|
|
38
|
+
} else {
|
|
39
|
+
console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
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
|
+
|
|
27
63
|
export class PM_Main extends PM {
|
|
28
64
|
browser: Browser;
|
|
29
65
|
|
|
@@ -31,18 +67,71 @@ export class PM_Main extends PM {
|
|
|
31
67
|
configs: IBuiltConfig;
|
|
32
68
|
ports: Record<number, boolean>;
|
|
33
69
|
queue: any[];
|
|
34
|
-
|
|
70
|
+
|
|
71
|
+
bigBoard: Record<
|
|
72
|
+
string,
|
|
73
|
+
{
|
|
74
|
+
status: "?" | "running" | "waiting";
|
|
75
|
+
runTimeError?: number;
|
|
76
|
+
typeErrors?: string;
|
|
77
|
+
staticErrors?: string;
|
|
78
|
+
}
|
|
79
|
+
> = {};
|
|
35
80
|
|
|
36
81
|
constructor(configs: IBuiltConfig) {
|
|
37
82
|
super();
|
|
38
83
|
this.server = {};
|
|
39
84
|
this.configs = configs;
|
|
40
85
|
this.ports = {};
|
|
41
|
-
|
|
86
|
+
|
|
87
|
+
this.configs.tests.forEach(([t]) => {
|
|
88
|
+
this.bigBoard[t] = {
|
|
89
|
+
status: "?",
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
|
|
42
93
|
this.configs.ports.forEach((element) => {
|
|
43
94
|
this.ports[element] = "true"; // set ports as open
|
|
44
95
|
});
|
|
45
96
|
|
|
97
|
+
globalThis["waitForSelector"] = async (pageKey: string, sel: string) => {
|
|
98
|
+
const page = (await this.browser.pages()).find(
|
|
99
|
+
/* @ts-ignore:next-line */
|
|
100
|
+
(p) => p.mainFrame()._id === pageKey
|
|
101
|
+
);
|
|
102
|
+
await page?.waitForSelector(sel);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
globalThis["screencastStop"] = async (path: string) => {
|
|
106
|
+
return recorders[path].stop();
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
globalThis["closePage"] = async (pageKey) => {
|
|
110
|
+
const page = (await this.browser.pages()).find(
|
|
111
|
+
/* @ts-ignore:next-line */
|
|
112
|
+
(p) => p.mainFrame()._id === pageKey
|
|
113
|
+
);
|
|
114
|
+
/* @ts-ignore:next-line */
|
|
115
|
+
return page.close();
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
globalThis["goto"] = async (pageKey: string, url: string) => {
|
|
119
|
+
const page = (await this.browser.pages()).find(
|
|
120
|
+
/* @ts-ignore:next-line */
|
|
121
|
+
(p) => p.mainFrame()._id === pageKey
|
|
122
|
+
);
|
|
123
|
+
await page?.goto(url);
|
|
124
|
+
return;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
globalThis["newPage"] = () => {
|
|
128
|
+
return this.browser.newPage();
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
globalThis["pages"] = () => {
|
|
132
|
+
return this.browser.pages();
|
|
133
|
+
};
|
|
134
|
+
|
|
46
135
|
globalThis["mkdirSync"] = (fp: string) => {
|
|
47
136
|
if (!fs.existsSync(fp)) {
|
|
48
137
|
return fs.mkdirSync(fp, {
|
|
@@ -57,19 +146,9 @@ export class PM_Main extends PM {
|
|
|
57
146
|
contents: string,
|
|
58
147
|
testName: string
|
|
59
148
|
) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// Create directories if they don't exist
|
|
63
|
-
const dir = path.dirname(filepath);
|
|
64
|
-
|
|
65
|
-
// console.log(testName, "mkdirSync", dir);
|
|
66
|
-
|
|
67
|
-
fs.mkdirSync(dir, {
|
|
149
|
+
fs.mkdirSync(path.dirname(filepath), {
|
|
68
150
|
recursive: true,
|
|
69
151
|
});
|
|
70
|
-
|
|
71
|
-
// console.log(testName, "mkdirSync2");
|
|
72
|
-
|
|
73
152
|
if (!files[testName]) {
|
|
74
153
|
files[testName] = new Set();
|
|
75
154
|
}
|
|
@@ -99,10 +178,42 @@ export class PM_Main extends PM {
|
|
|
99
178
|
fileStreams3[uid].end();
|
|
100
179
|
};
|
|
101
180
|
|
|
181
|
+
// async (ssOpts: ScreenshotOptions, testName: string) => {
|
|
182
|
+
// const p = ssOpts.path as string;
|
|
183
|
+
// const dir = path.dirname(p);
|
|
184
|
+
// fs.mkdirSync(dir, {
|
|
185
|
+
// recursive: true,
|
|
186
|
+
// });
|
|
187
|
+
// if (!files[testName]) {
|
|
188
|
+
// files[testName] = new Set();
|
|
189
|
+
// }
|
|
190
|
+
// files[testName].add(ssOpts.path as string);
|
|
191
|
+
|
|
192
|
+
// const sPromise = page.screenshot({
|
|
193
|
+
// ...ssOpts,
|
|
194
|
+
// path: p,
|
|
195
|
+
// });
|
|
196
|
+
|
|
197
|
+
// if (!screenshots[testName]) {
|
|
198
|
+
// screenshots[testName] = [];
|
|
199
|
+
// }
|
|
200
|
+
// screenshots[testName].push(sPromise);
|
|
201
|
+
// // sPromise.then(())
|
|
202
|
+
// await sPromise;
|
|
203
|
+
// return sPromise;
|
|
204
|
+
// // page.evaluate(`window["screenshot done"]`);
|
|
205
|
+
// };
|
|
206
|
+
|
|
102
207
|
globalThis["customScreenShot"] = async (
|
|
103
208
|
opts: { path: string },
|
|
104
|
-
|
|
209
|
+
pageKey: string,
|
|
210
|
+
testName: string
|
|
105
211
|
) => {
|
|
212
|
+
const page = (await this.browser.pages()).find(
|
|
213
|
+
/* @ts-ignore:next-line */
|
|
214
|
+
(p) => p.mainFrame()._id === pageKey
|
|
215
|
+
);
|
|
216
|
+
|
|
106
217
|
const p = opts.path as string;
|
|
107
218
|
const dir = path.dirname(p);
|
|
108
219
|
fs.mkdirSync(dir, {
|
|
@@ -127,6 +238,31 @@ export class PM_Main extends PM {
|
|
|
127
238
|
return sPromise;
|
|
128
239
|
};
|
|
129
240
|
|
|
241
|
+
globalThis["screencast"] = async (
|
|
242
|
+
opts: ScreenshotOptions,
|
|
243
|
+
pageKey: string
|
|
244
|
+
) => {
|
|
245
|
+
const page = (await this.browser.pages()).find(
|
|
246
|
+
/* @ts-ignore:next-line */
|
|
247
|
+
(p) => p.mainFrame()._id === pageKey
|
|
248
|
+
);
|
|
249
|
+
|
|
250
|
+
const p = opts.path as string;
|
|
251
|
+
const dir = path.dirname(p);
|
|
252
|
+
fs.mkdirSync(dir, {
|
|
253
|
+
recursive: true,
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
const recorder = await page?.screencast({
|
|
257
|
+
...opts,
|
|
258
|
+
path: p,
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
recorders[opts.path] = recorder;
|
|
262
|
+
|
|
263
|
+
return opts.path;
|
|
264
|
+
};
|
|
265
|
+
|
|
130
266
|
// globalThis["customclose"] = (p: string, testName: string) => {
|
|
131
267
|
// if (!files[testName]) {
|
|
132
268
|
// files[testName] = new Set();
|
|
@@ -140,20 +276,33 @@ export class PM_Main extends PM {
|
|
|
140
276
|
// };
|
|
141
277
|
}
|
|
142
278
|
|
|
279
|
+
customclose() {
|
|
280
|
+
throw new Error("Method not implemented.");
|
|
281
|
+
}
|
|
282
|
+
waitForSelector(p: string, s: string): any {
|
|
283
|
+
throw new Error("Method not implemented.");
|
|
284
|
+
}
|
|
285
|
+
closePage(p): any {
|
|
286
|
+
throw new Error("Method not implemented.");
|
|
287
|
+
}
|
|
288
|
+
newPage(): CdpPage {
|
|
289
|
+
throw new Error("Method not implemented.");
|
|
290
|
+
}
|
|
291
|
+
goto(p, url: string): any {
|
|
292
|
+
throw new Error("Method not implemented.");
|
|
293
|
+
}
|
|
143
294
|
$(selector: string): boolean {
|
|
144
295
|
throw new Error("Method not implemented.");
|
|
145
296
|
}
|
|
146
297
|
screencast(opts: object) {
|
|
147
298
|
throw new Error("Method not implemented.");
|
|
148
299
|
}
|
|
149
|
-
customScreenShot(opts: object) {
|
|
300
|
+
customScreenShot(opts: object, cdpPage?: CdpPage) {
|
|
150
301
|
throw new Error("Method not implemented.");
|
|
151
302
|
}
|
|
152
|
-
|
|
153
303
|
end(accessObject: { uid: number }): boolean {
|
|
154
304
|
throw new Error("Method not implemented.");
|
|
155
305
|
}
|
|
156
|
-
|
|
157
306
|
existsSync(destFolder: string): boolean {
|
|
158
307
|
return fs.existsSync(destFolder);
|
|
159
308
|
}
|
|
@@ -247,49 +396,85 @@ export class PM_Main extends PM {
|
|
|
247
396
|
getAttribute(selector: string, attribute: string) {
|
|
248
397
|
throw new Error("Method not implemented.");
|
|
249
398
|
}
|
|
250
|
-
isDisabled(selector: string): boolean {
|
|
399
|
+
isDisabled(selector: string): Promise<boolean> {
|
|
400
|
+
throw new Error("Method not implemented.");
|
|
401
|
+
}
|
|
402
|
+
screencastStop(s: string) {
|
|
251
403
|
throw new Error("Method not implemented.");
|
|
252
404
|
}
|
|
253
405
|
////////////////////////////////////////////////////////////////////////////////
|
|
254
406
|
|
|
255
|
-
async startPuppeteer(
|
|
407
|
+
async startPuppeteer(
|
|
408
|
+
options: LaunchOptions,
|
|
409
|
+
destfolder: string
|
|
410
|
+
): Promise<any> {
|
|
256
411
|
this.browser = (await puppeteer.launch(options)) as any;
|
|
257
412
|
}
|
|
258
413
|
|
|
259
|
-
|
|
414
|
+
// goodbye = () => {
|
|
415
|
+
// this.browser.disconnect().then(() => {
|
|
416
|
+
|
|
417
|
+
// console.log("Goodbye");
|
|
418
|
+
// process.exit();
|
|
419
|
+
// });
|
|
420
|
+
// };
|
|
260
421
|
|
|
261
422
|
shutDown() {
|
|
262
|
-
console.log("shutting down...");
|
|
263
423
|
this.shutdownMode = true;
|
|
264
424
|
this.checkForShutdown();
|
|
265
425
|
}
|
|
266
426
|
|
|
267
427
|
checkForShutdown = () => {
|
|
268
428
|
const anyRunning: boolean =
|
|
269
|
-
Object.values(this.
|
|
429
|
+
Object.values(this.bigBoard).filter((x) => x.status === "running")
|
|
430
|
+
.length > 0;
|
|
270
431
|
if (anyRunning) {
|
|
271
432
|
} else {
|
|
272
433
|
this.browser.disconnect().then(() => {
|
|
273
|
-
|
|
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"));
|
|
274
458
|
process.exit();
|
|
275
459
|
});
|
|
276
460
|
}
|
|
277
461
|
};
|
|
278
462
|
|
|
279
|
-
|
|
280
|
-
this.
|
|
463
|
+
testIsNowRunning = (src: string) => {
|
|
464
|
+
this.bigBoard[src].status = "running";
|
|
281
465
|
};
|
|
282
466
|
|
|
283
|
-
|
|
284
|
-
this.
|
|
467
|
+
testIsNowDone = (src: string) => {
|
|
468
|
+
this.bigBoard[src].status = "waiting";
|
|
285
469
|
if (this.shutdownMode) {
|
|
286
470
|
this.checkForShutdown();
|
|
287
471
|
}
|
|
288
472
|
};
|
|
289
473
|
|
|
290
474
|
launchNode = async (src: string, dest: string) => {
|
|
291
|
-
console.log(
|
|
292
|
-
|
|
475
|
+
// console.log(ansiC.yellow(`! node, ${src}`));
|
|
476
|
+
console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
|
|
477
|
+
this.testIsNowRunning(src);
|
|
293
478
|
|
|
294
479
|
const destFolder = dest.replace(".mjs", "");
|
|
295
480
|
|
|
@@ -300,7 +485,7 @@ export class PM_Main extends PM {
|
|
|
300
485
|
});
|
|
301
486
|
|
|
302
487
|
if (!testConfig) {
|
|
303
|
-
console.
|
|
488
|
+
console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
|
|
304
489
|
process.exit(-1);
|
|
305
490
|
}
|
|
306
491
|
const testConfigResource = testConfig[2];
|
|
@@ -343,31 +528,31 @@ export class PM_Main extends PM {
|
|
|
343
528
|
process.exit(-1);
|
|
344
529
|
}
|
|
345
530
|
|
|
346
|
-
const builtfile = dest
|
|
531
|
+
const builtfile = dest;
|
|
347
532
|
|
|
348
533
|
const webSideCares: Page[] = [];
|
|
349
534
|
|
|
350
|
-
await Promise.all(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
);
|
|
535
|
+
// await Promise.all(
|
|
536
|
+
// testConfig[3].map(async (sidecar) => {
|
|
537
|
+
// if (sidecar[1] === "web") {
|
|
538
|
+
// const s = await this.launchWebSideCar(
|
|
539
|
+
// sidecar[0],
|
|
540
|
+
// destinationOfRuntime(sidecar[0], "web", this.configs),
|
|
541
|
+
// sidecar
|
|
542
|
+
// );
|
|
543
|
+
// webSideCares.push(s);
|
|
544
|
+
// return s;
|
|
545
|
+
// }
|
|
546
|
+
|
|
547
|
+
// if (sidecar[1] === "node") {
|
|
548
|
+
// return this.launchNodeSideCar(
|
|
549
|
+
// sidecar[0],
|
|
550
|
+
// destinationOfRuntime(sidecar[0], "node", this.configs),
|
|
551
|
+
// sidecar
|
|
552
|
+
// );
|
|
553
|
+
// }
|
|
554
|
+
// })
|
|
555
|
+
// );
|
|
371
556
|
|
|
372
557
|
this.server[builtfile] = await import(
|
|
373
558
|
`${builtfile}?cacheBust=${Date.now()}`
|
|
@@ -376,15 +561,18 @@ export class PM_Main extends PM {
|
|
|
376
561
|
defaultModule
|
|
377
562
|
.receiveTestResourceConfig(argz)
|
|
378
563
|
.then(async ({ features, failed }: IFinalResults) => {
|
|
379
|
-
this.receiveFeatures(features, destFolder);
|
|
380
|
-
console.log(`${src} completed with ${failed} errors`);
|
|
564
|
+
this.receiveFeatures(features, destFolder, src);
|
|
565
|
+
// console.log(`${src} completed with ${failed} errors`);
|
|
566
|
+
statusMessagePretty(failed, src);
|
|
567
|
+
this.receiveExitCode(src, failed);
|
|
381
568
|
})
|
|
382
569
|
.catch((e) => {
|
|
383
|
-
console.log(`${src} errored with
|
|
570
|
+
console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
|
|
571
|
+
// console.log(reset, `${src} errored with`, e);
|
|
384
572
|
})
|
|
385
573
|
.finally(() => {
|
|
386
574
|
webSideCares.forEach((webSideCar) => webSideCar.close());
|
|
387
|
-
this.
|
|
575
|
+
this.testIsNowDone(src);
|
|
388
576
|
});
|
|
389
577
|
});
|
|
390
578
|
});
|
|
@@ -403,7 +591,9 @@ export class PM_Main extends PM {
|
|
|
403
591
|
testConfig: ITestTypes
|
|
404
592
|
): Promise<Page> => {
|
|
405
593
|
const d = dest + ".mjs";
|
|
406
|
-
console.log("launchWebSideCar", src, dest, d);
|
|
594
|
+
// console.log(green, "launchWebSideCar", src, dest, d);
|
|
595
|
+
console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
|
|
596
|
+
|
|
407
597
|
const destFolder = dest.replace(".mjs", "");
|
|
408
598
|
// const webArgz = JSON.stringify({
|
|
409
599
|
// name: dest,
|
|
@@ -541,6 +731,7 @@ export class PM_Main extends PM {
|
|
|
541
731
|
})
|
|
542
732
|
.then(async (page) => {
|
|
543
733
|
await page.goto(`file://${`${dest}.html`}`, {});
|
|
734
|
+
|
|
544
735
|
res(page);
|
|
545
736
|
});
|
|
546
737
|
});
|
|
@@ -552,7 +743,8 @@ export class PM_Main extends PM {
|
|
|
552
743
|
testConfig: ITestTypes
|
|
553
744
|
) => {
|
|
554
745
|
const d = dest + ".mjs";
|
|
555
|
-
console.log("launchNodeSideCar", src, dest, d);
|
|
746
|
+
// console.log(green, "launchNodeSideCar", src, dest, d);
|
|
747
|
+
console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
|
|
556
748
|
|
|
557
749
|
const destFolder = dest.replace(".mjs", "");
|
|
558
750
|
|
|
@@ -633,19 +825,20 @@ export class PM_Main extends PM {
|
|
|
633
825
|
}
|
|
634
826
|
};
|
|
635
827
|
|
|
636
|
-
launchWeb = (t: string, dest: string
|
|
637
|
-
console.log("
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
}
|
|
828
|
+
launchWeb = (t: string, dest: string) => {
|
|
829
|
+
// console.log(green, "! web", t);
|
|
830
|
+
console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
|
|
831
|
+
this.testIsNowRunning(t);
|
|
832
|
+
|
|
833
|
+
// sidecars.map((sidecar) => {
|
|
834
|
+
// if (sidecar[1] === "node") {
|
|
835
|
+
// return this.launchNodeSideCar(
|
|
836
|
+
// sidecar[0],
|
|
837
|
+
// destinationOfRuntime(sidecar[0], "node", this.configs),
|
|
838
|
+
// sidecar
|
|
839
|
+
// );
|
|
840
|
+
// }
|
|
841
|
+
// });
|
|
649
842
|
|
|
650
843
|
const destFolder = dest.replace(".mjs", "");
|
|
651
844
|
|
|
@@ -656,10 +849,12 @@ export class PM_Main extends PM {
|
|
|
656
849
|
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
657
850
|
});
|
|
658
851
|
|
|
852
|
+
const d = `${dest}?cacheBust=${Date.now()}`;
|
|
853
|
+
|
|
659
854
|
const evaluation = `
|
|
660
|
-
|
|
661
|
-
import('${
|
|
662
|
-
|
|
855
|
+
|
|
856
|
+
import('${d}').then(async (x) => {
|
|
857
|
+
|
|
663
858
|
try {
|
|
664
859
|
return await (await x.default).receiveTestResourceConfig(${webArgz})
|
|
665
860
|
} catch (e) {
|
|
@@ -670,8 +865,8 @@ export class PM_Main extends PM {
|
|
|
670
865
|
const fileStreams2: fs.WriteStream[] = [];
|
|
671
866
|
const doneFileStream2: Promise<any>[] = [];
|
|
672
867
|
|
|
673
|
-
const stdoutStream = fs.createWriteStream(`${
|
|
674
|
-
const stderrStream = fs.createWriteStream(`${
|
|
868
|
+
const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
|
|
869
|
+
const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
|
|
675
870
|
|
|
676
871
|
this.browser
|
|
677
872
|
.newPage()
|
|
@@ -848,7 +1043,7 @@ export class PM_Main extends PM {
|
|
|
848
1043
|
// });
|
|
849
1044
|
|
|
850
1045
|
page.exposeFunction("page", () => {
|
|
851
|
-
return page.mainFrame()._id;
|
|
1046
|
+
return (page.mainFrame() as unknown as { _id: string })._id;
|
|
852
1047
|
});
|
|
853
1048
|
|
|
854
1049
|
page.exposeFunction("click", (sel) => {
|
|
@@ -905,7 +1100,7 @@ export class PM_Main extends PM {
|
|
|
905
1100
|
// files[t].add(filepath);
|
|
906
1101
|
|
|
907
1102
|
fs.writeFileSync(
|
|
908
|
-
|
|
1103
|
+
destFolder + "/manifest.json",
|
|
909
1104
|
JSON.stringify(Array.from(files[t]))
|
|
910
1105
|
);
|
|
911
1106
|
delete files[t];
|
|
@@ -914,7 +1109,7 @@ export class PM_Main extends PM {
|
|
|
914
1109
|
delete screenshots[t];
|
|
915
1110
|
page.close();
|
|
916
1111
|
|
|
917
|
-
this.
|
|
1112
|
+
this.testIsNowDone(t);
|
|
918
1113
|
stderrStream.close();
|
|
919
1114
|
stdoutStream.close();
|
|
920
1115
|
});
|
|
@@ -936,7 +1131,7 @@ export class PM_Main extends PM {
|
|
|
936
1131
|
|
|
937
1132
|
console.debug(`Error from message ${t}: [${err.message}] `);
|
|
938
1133
|
stderrStream.write(err.message);
|
|
939
|
-
|
|
1134
|
+
close();
|
|
940
1135
|
});
|
|
941
1136
|
page.on("console", (log: ConsoleMessage) => {
|
|
942
1137
|
// console.debug(`Log from ${t}: [${log.text()}] `);
|
|
@@ -948,18 +1143,22 @@ export class PM_Main extends PM {
|
|
|
948
1143
|
stdoutStream.write(JSON.stringify(log.location()));
|
|
949
1144
|
stdoutStream.write(JSON.stringify(log.stackTrace()));
|
|
950
1145
|
});
|
|
951
|
-
await page.goto(`file://${`${
|
|
1146
|
+
await page.goto(`file://${`${destFolder}.html`}`, {});
|
|
952
1147
|
|
|
953
1148
|
await page
|
|
954
1149
|
.evaluate(evaluation)
|
|
955
1150
|
.then(async ({ failed, features }: IFinalResults) => {
|
|
956
|
-
this.receiveFeatures(features, destFolder);
|
|
957
|
-
console.log(`${t} completed with ${failed} errors`);
|
|
1151
|
+
this.receiveFeatures(features, destFolder, t);
|
|
1152
|
+
// console.log(`${t} completed with ${failed} errors`);
|
|
1153
|
+
statusMessagePretty(failed, t);
|
|
1154
|
+
this.receiveExitCode(t, failed);
|
|
958
1155
|
})
|
|
959
1156
|
.catch((e) => {
|
|
960
|
-
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}`)));
|
|
961
1159
|
})
|
|
962
1160
|
.finally(() => {
|
|
1161
|
+
// this.testIsNowDone(t);
|
|
963
1162
|
close();
|
|
964
1163
|
});
|
|
965
1164
|
|
|
@@ -967,7 +1166,19 @@ export class PM_Main extends PM {
|
|
|
967
1166
|
});
|
|
968
1167
|
};
|
|
969
1168
|
|
|
970
|
-
receiveFeatures = (
|
|
1169
|
+
receiveFeatures = (
|
|
1170
|
+
features: string[],
|
|
1171
|
+
destFolder: string,
|
|
1172
|
+
srcTest: string
|
|
1173
|
+
) => {
|
|
1174
|
+
const featureDestination = path.resolve(
|
|
1175
|
+
process.cwd(),
|
|
1176
|
+
"docs",
|
|
1177
|
+
"features",
|
|
1178
|
+
"strings",
|
|
1179
|
+
srcTest.split(".").slice(0, -1).join(".") + ".features.txt"
|
|
1180
|
+
);
|
|
1181
|
+
|
|
971
1182
|
features
|
|
972
1183
|
.reduce(async (mm, featureStringKey) => {
|
|
973
1184
|
const accum = await mm;
|
|
@@ -994,71 +1205,58 @@ export class PM_Main extends PM {
|
|
|
994
1205
|
}
|
|
995
1206
|
}
|
|
996
1207
|
|
|
997
|
-
fs.symlink(u.pathname, newPath, (err) => {
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
});
|
|
1004
|
-
accum.push(newPath);
|
|
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
|
+
// });
|
|
1215
|
+
accum.files.push(newPath);
|
|
1005
1216
|
} else if (u.protocol === "http:" || u.protocol === "https:") {
|
|
1006
1217
|
const newPath = `${process.cwd()}/docs/features/external${
|
|
1007
1218
|
u.hostname
|
|
1008
1219
|
}${u.pathname}`;
|
|
1009
1220
|
const body = await this.configs.featureIngestor(featureStringKey);
|
|
1010
1221
|
writeFileAndCreateDir(newPath, body);
|
|
1011
|
-
accum.push(newPath);
|
|
1222
|
+
accum.files.push(newPath);
|
|
1012
1223
|
}
|
|
1013
1224
|
} else {
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
)
|
|
1017
|
-
|
|
1018
|
-
accum.push(
|
|
1225
|
+
await fs.promises.mkdir(path.dirname(featureDestination), {
|
|
1226
|
+
recursive: true,
|
|
1227
|
+
});
|
|
1228
|
+
|
|
1229
|
+
accum.strings.push(featureStringKey);
|
|
1019
1230
|
}
|
|
1020
1231
|
|
|
1021
1232
|
return accum;
|
|
1022
|
-
}, Promise.resolve([] as string[]))
|
|
1023
|
-
|
|
1233
|
+
}, Promise.resolve({ files: [] as string[], strings: [] as string[] }))
|
|
1234
|
+
|
|
1235
|
+
.then(({ files, strings }: { files: string[]; strings: string[] }) => {
|
|
1236
|
+
// writeFileAndCreateDir(`${featureDestination}`, JSON.stringify(strings));
|
|
1237
|
+
|
|
1024
1238
|
fs.writeFileSync(
|
|
1025
1239
|
`${destFolder}/featurePrompt.txt`,
|
|
1026
|
-
|
|
1240
|
+
files
|
|
1027
1241
|
.map((f) => {
|
|
1028
1242
|
return `/read ${f}`;
|
|
1029
1243
|
})
|
|
1030
1244
|
.join("\n")
|
|
1031
1245
|
);
|
|
1032
1246
|
});
|
|
1033
|
-
};
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
async function writeFileAndCreateDir(filePath, data) {
|
|
1037
|
-
const dirPath = path.dirname(filePath);
|
|
1038
1247
|
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
await fs.promises.writeFile(filePath, data);
|
|
1042
|
-
} catch (error) {
|
|
1043
|
-
console.error(`Error writing file: ${error}`);
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
|
|
1047
|
-
async function sha256(rawData) {
|
|
1048
|
-
const data =
|
|
1049
|
-
typeof rawData === "object" ? JSON.stringify(rawData) : String(rawData);
|
|
1248
|
+
this.writeBigBoard();
|
|
1249
|
+
};
|
|
1050
1250
|
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
}
|
|
1251
|
+
receiveExitCode = (srcTest: string, failures: number) => {
|
|
1252
|
+
this.bigBoard[srcTest].runTimeError = failures;
|
|
1253
|
+
this.writeBigBoard();
|
|
1254
|
+
};
|
|
1056
1255
|
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
}
|
|
1256
|
+
writeBigBoard = () => {
|
|
1257
|
+
fs.writeFileSync(
|
|
1258
|
+
"./docs/bigBoard.json",
|
|
1259
|
+
JSON.stringify(this.bigBoard, null, 2)
|
|
1260
|
+
);
|
|
1261
|
+
};
|
|
1064
1262
|
}
|