testeranto 0.200.0 → 0.202.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 +26 -1
- package/bundle.js +3 -2
- package/design-editor/DesignEditor.tsx +40 -241
- package/dist/common/design-editor/DesignEditor.js +33 -198
- package/dist/common/src/App.js +158 -16
- package/dist/common/src/PM/PM_WithBuild.js +135 -0
- package/dist/common/src/PM/PM_WithEslintAndTsc.js +79 -67
- package/dist/common/src/PM/PM_WithGit.js +517 -0
- package/dist/common/src/PM/PM_WithProcesses.js +519 -0
- package/dist/common/src/PM/PM_WithWebSocket.js +535 -0
- package/dist/common/src/PM/base.js +62 -0
- package/dist/common/src/PM/main.js +533 -1676
- package/dist/common/src/PM/metafileOutputs.js +78 -0
- package/dist/common/src/PM/node.js +0 -6
- package/dist/common/src/PM/pure.js +0 -8
- package/dist/common/src/PM/types.js +1 -0
- package/dist/common/src/PM/utils.js +210 -0
- package/dist/common/src/PM/web.js +0 -6
- package/dist/common/src/ReportServer.js +0 -10
- package/dist/common/src/ReportServerLib.js +0 -140
- package/dist/common/src/components/pure/AppFrame.js +68 -56
- package/dist/common/src/components/pure/ArtifactTree.js +80 -0
- package/dist/common/src/components/pure/BuildLogViewer.js +106 -0
- package/dist/common/src/components/pure/DebugEnv.js +30 -0
- package/dist/common/src/components/pure/FileTree.js +34 -0
- package/dist/common/src/components/pure/FileTreeItem.js +29 -0
- package/dist/common/src/components/pure/GitHubLoginButton.js +18 -0
- package/dist/common/src/components/pure/GitIntegrationView.js +342 -0
- package/dist/common/src/components/pure/ProcessManager.js +1 -0
- package/dist/common/src/components/pure/ProcessManagerView.js +73 -74
- package/dist/common/src/components/pure/ProjectPageView.js +4 -117
- package/dist/common/src/components/pure/Settings.js +121 -0
- package/dist/common/src/components/pure/Settings.test.js +34 -0
- package/dist/common/src/components/pure/SignIn.js +22 -0
- package/dist/common/src/components/pure/SingleProcessView.js +166 -213
- package/dist/common/src/components/pure/TestPageView.js +113 -368
- package/dist/common/src/components/pure/TestPageView_utils.js +117 -0
- package/dist/common/src/components/pure/TestTable.js +33 -0
- package/dist/common/src/components/pure/ToastNotification.js +14 -0
- package/dist/common/src/components/pure/UserProfile.js +27 -0
- package/dist/common/src/components/stateful/AuthCallbackPage.js +51 -0
- package/dist/common/src/components/stateful/FeaturesReporter.js +2 -1
- package/dist/common/src/components/stateful/FileTree.js +58 -39
- package/dist/common/src/components/stateful/GitIntegrationPage.js +12 -0
- package/dist/common/src/components/stateful/ProcessManagerPage.js +13 -15
- package/dist/common/src/components/stateful/ProjectPage.js +6 -5
- package/dist/common/src/components/stateful/ProjectsPage.js +17 -19
- package/dist/common/src/components/stateful/SingleProcessPage.js +16 -26
- package/dist/common/src/components/stateful/TestPage.js +7 -5
- package/dist/common/src/hooks/useGitMode.js +21 -0
- package/dist/common/src/lib/BaseSuite.test/mock.js +15 -8
- package/dist/common/src/lib/BaseSuite.test/test.js +56 -80
- package/dist/common/src/lib/Tiposkripto.js +24 -0
- package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
- package/dist/common/src/lib/pmProxy.test/specification.js +167 -52
- package/dist/common/src/services/FileService.js +505 -0
- package/dist/common/src/services/GitHubAuthService.js +184 -0
- package/dist/common/src/testeranto.js +38 -97
- package/dist/common/src/utils/api.js +12 -8
- package/dist/common/src/utils/gitTest.js +27 -0
- package/dist/common/src/utils.js +23 -13
- package/dist/common/testeranto.config.js +21 -17
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/design-editor/DesignEditor.js +33 -199
- package/dist/module/src/App.js +121 -15
- package/dist/module/src/PM/PM_WithBuild.js +128 -0
- package/dist/module/src/PM/PM_WithEslintAndTsc.js +79 -67
- package/dist/module/src/PM/PM_WithGit.js +477 -0
- package/dist/module/src/PM/PM_WithProcesses.js +479 -0
- package/dist/module/src/PM/PM_WithWebSocket.js +528 -0
- package/dist/module/src/PM/base.js +62 -0
- package/dist/module/src/PM/main.js +533 -1676
- package/dist/module/src/PM/metafileOutputs.js +78 -0
- package/dist/module/src/PM/node.js +0 -6
- package/dist/module/src/PM/pure.js +0 -8
- package/dist/module/src/PM/types.js +1 -1
- package/dist/module/src/PM/utils.js +196 -0
- package/dist/module/src/PM/web.js +0 -6
- package/dist/module/src/ReportServer.js +1 -9
- package/dist/module/src/ReportServerLib.js +1 -134
- package/dist/module/src/components/pure/AppFrame.js +66 -24
- package/dist/module/src/components/pure/ArtifactTree.js +80 -0
- package/dist/module/src/components/pure/BuildLogViewer.js +99 -0
- package/dist/module/src/components/pure/DebugEnv.js +23 -0
- package/dist/module/src/components/pure/FileTree.js +27 -0
- package/dist/module/src/components/pure/FileTreeItem.js +22 -0
- package/dist/module/src/components/pure/GitHubLoginButton.js +11 -0
- package/dist/module/src/components/pure/GitIntegrationView.js +305 -0
- package/dist/module/src/components/pure/ProcessManager.js +1 -0
- package/dist/module/src/components/pure/ProcessManagerView.js +74 -75
- package/dist/module/src/components/pure/ProjectPageView.js +5 -118
- package/dist/module/src/components/pure/Settings.js +84 -0
- package/dist/module/src/components/pure/Settings.test.js +29 -0
- package/dist/module/src/components/pure/SignIn.js +15 -0
- package/dist/module/src/components/pure/SingleProcessView.js +130 -214
- package/dist/module/src/components/pure/TestPageView.js +97 -352
- package/dist/module/src/components/pure/TestPageView_utils.js +109 -0
- package/dist/module/src/components/pure/TestTable.js +26 -0
- package/dist/module/src/components/pure/ToastNotification.js +7 -0
- package/dist/module/src/components/pure/UserProfile.js +20 -0
- package/dist/module/src/components/stateful/AuthCallbackPage.js +14 -0
- package/dist/module/src/components/stateful/FeaturesReporter.js +2 -1
- package/dist/module/src/components/stateful/FileTree.js +59 -33
- package/dist/module/src/components/stateful/GitIntegrationPage.js +5 -0
- package/dist/module/src/components/stateful/ProcessManagerPage.js +13 -15
- package/dist/module/src/components/stateful/ProjectPage.js +6 -5
- package/dist/module/src/components/stateful/ProjectsPage.js +16 -18
- package/dist/module/src/components/stateful/SingleProcessPage.js +16 -26
- package/dist/module/src/components/stateful/TestPage.js +8 -6
- package/dist/module/src/hooks/useGitMode.js +17 -0
- package/dist/module/src/lib/BaseSuite.test/mock.js +15 -8
- package/dist/module/src/lib/BaseSuite.test/test.js +56 -80
- package/dist/module/src/lib/Tiposkripto.js +24 -0
- package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
- package/dist/module/src/lib/pmProxy.test/specification.js +167 -52
- package/dist/module/src/services/FileService.js +468 -0
- package/dist/module/src/services/GitHubAuthService.js +180 -0
- package/dist/module/src/testeranto.js +38 -97
- package/dist/module/src/utils/api.js +10 -7
- package/dist/module/src/utils/gitTest.js +23 -0
- package/dist/module/src/utils.js +21 -12
- package/dist/module/testeranto.config.js +21 -17
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/App.css +94 -121
- package/dist/prebuild/App.js +44601 -11225
- package/dist/prebuild/testeranto.mjs +4106 -0
- package/dist/types/design-editor/DesignEditor.d.ts +1 -18
- package/dist/types/src/App.d.ts +18 -0
- package/dist/types/src/PM/PM_WithBuild.d.ts +13 -0
- package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -4
- package/dist/types/src/PM/PM_WithGit.d.ts +27 -0
- package/dist/types/src/PM/PM_WithProcesses.d.ts +29 -0
- package/dist/types/src/PM/PM_WithWebSocket.d.ts +108 -0
- package/dist/types/src/PM/base.d.ts +1 -1
- package/dist/types/src/PM/index.d.ts +0 -2
- package/dist/types/src/PM/main.d.ts +6 -77
- package/dist/types/src/PM/metafileOutputs.d.ts +0 -0
- package/dist/types/src/PM/node.d.ts +0 -2
- package/dist/types/src/PM/pure.d.ts +0 -2
- package/dist/types/src/PM/types.d.ts +118 -0
- package/dist/types/src/PM/utils.d.ts +35 -0
- package/dist/types/src/PM/web.d.ts +0 -2
- package/dist/types/src/Pure.d.ts +6 -1
- package/dist/types/src/ReportServer.d.ts +0 -1
- package/dist/types/src/ReportServerLib.d.ts +0 -1
- package/dist/types/src/Types.d.ts +1 -0
- package/dist/types/src/components/pure/ArtifactTree.d.ts +0 -0
- package/dist/types/src/components/pure/BuildLogViewer.d.ts +7 -0
- package/dist/types/src/components/pure/DebugEnv.d.ts +2 -0
- package/dist/types/src/components/pure/FileTree.d.ts +6 -0
- package/dist/types/src/components/pure/FileTreeItem.d.ts +8 -0
- package/dist/types/src/components/pure/GitHubLoginButton.d.ts +8 -0
- package/dist/types/src/components/pure/GitIntegrationView.d.ts +1 -0
- package/dist/types/src/components/pure/Settings.d.ts +1 -0
- package/dist/types/src/components/pure/Settings.test.d.ts +1 -0
- package/dist/types/src/components/pure/SignIn.d.ts +1 -0
- package/dist/types/src/components/pure/SingleProcessView.d.ts +10 -0
- package/dist/types/src/components/pure/TestPageView.d.ts +2 -1
- package/dist/types/src/components/pure/TestPageView_utils.d.ts +23 -0
- package/dist/types/src/components/pure/TestTable.d.ts +16 -0
- package/dist/types/src/components/pure/ToastNotification.d.ts +6 -0
- package/dist/types/src/components/pure/UserProfile.d.ts +2 -0
- package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +2 -0
- package/dist/types/src/components/stateful/FileTree.d.ts +0 -8
- package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +1 -0
- package/dist/types/src/hooks/useGitMode.d.ts +7 -0
- package/dist/types/src/lib/BaseSuite.test/mock.d.ts +2 -2
- package/dist/types/src/lib/BaseSuite.test/test.d.ts +4 -3
- package/dist/types/src/lib/Tiposkripto.d.ts +2 -0
- package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +3 -0
- package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +5 -0
- package/dist/types/src/lib/index.d.ts +6 -0
- package/dist/types/src/services/FileService.d.ts +34 -0
- package/dist/types/src/services/GitHubAuthService.d.ts +32 -0
- package/dist/types/src/utils/api.d.ts +1 -0
- package/dist/types/src/utils/gitTest.d.ts +11 -0
- package/dist/types/src/utils.d.ts +3 -3
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +187 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +163 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +85 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +21 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +21 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +554 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +33 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +72 -0
- package/example/vendor/modules.txt +5 -0
- package/git-integration-plan.md +395 -0
- package/package.json +26 -14
- package/src/App.tsx +169 -18
- package/src/PM/PM_WithBuild.ts +171 -0
- package/src/PM/PM_WithEslintAndTsc.ts +109 -86
- package/src/PM/PM_WithGit.ts +585 -0
- package/src/PM/PM_WithProcesses.ts +639 -0
- package/src/PM/PM_WithWebSocket.ts +631 -0
- package/src/PM/base.ts +63 -1
- package/src/PM/index.ts +8 -5
- package/src/PM/main.ts +672 -2050
- package/src/PM/metafileOutputs.ts +90 -0
- package/src/PM/node.ts +18 -18
- package/src/PM/pure.ts +5 -13
- package/src/PM/types.ts +145 -0
- package/src/PM/utils.ts +256 -0
- package/src/PM/web.ts +8 -8
- package/src/README.md +122 -0
- package/src/ReportServer.ts +0 -12
- package/src/ReportServerLib.ts +0 -147
- package/src/Types.ts +1 -0
- package/src/app.scss +14 -164
- package/src/components/pure/AppFrame.tsx +237 -71
- package/src/components/pure/ArtifactTree.tsx +82 -0
- package/src/components/pure/BuildLogViewer.tsx +168 -0
- package/src/components/pure/DebugEnv.tsx +30 -0
- package/src/components/pure/FileTree.tsx +58 -0
- package/src/components/pure/FileTreeItem.tsx +49 -0
- package/src/components/pure/GitHubLoginButton.tsx +31 -0
- package/src/components/pure/GitIntegrationView.tsx +443 -0
- package/src/components/pure/ProcessManager.tsx +6 -5
- package/src/components/pure/ProcessManagerView.tsx +162 -166
- package/src/components/pure/ProjectPageView.tsx +6 -224
- package/src/components/pure/Settings.test.tsx +34 -0
- package/src/components/pure/Settings.tsx +163 -0
- package/src/components/pure/SignIn.tsx +33 -0
- package/src/components/pure/SingleProcessView.tsx +231 -235
- package/src/components/pure/TestPageView.test/specification.ts +1 -0
- package/src/components/pure/TestPageView.tsx +317 -826
- package/src/components/pure/TestPageView_utils.tsx +285 -0
- package/src/components/pure/TestTable.tsx +88 -0
- package/src/components/pure/ToastNotification.tsx +19 -0
- package/src/components/pure/UserProfile.tsx +44 -0
- package/src/components/stateful/AuthCallbackPage.tsx +21 -0
- package/src/components/stateful/FeaturesReporter.tsx +3 -1
- package/src/components/stateful/FileTree.tsx +58 -58
- package/src/components/stateful/GitIntegrationPage.tsx +8 -0
- package/src/components/stateful/ProcessManagerPage.tsx +13 -17
- package/src/components/stateful/ProjectPage.tsx +6 -5
- package/src/components/stateful/ProjectsPage.tsx +17 -19
- package/src/components/stateful/SVGEditor/CircleForm.tsx +68 -0
- package/src/components/stateful/SVGEditor/GroupForm.tsx +56 -0
- package/src/components/stateful/SVGEditor/RectForm.tsx +74 -0
- package/src/components/stateful/SVGEditor/SVGAttributeField.tsx +29 -0
- package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +73 -0
- package/src/components/stateful/SVGEditor/SVGEditorControls.tsx +45 -0
- package/src/components/stateful/SVGEditor/SVGElementForm.tsx +45 -0
- package/src/components/stateful/SVGEditor/SVGPreview.tsx +225 -0
- package/src/components/stateful/SVGEditor/SVGTextEditor.tsx +166 -0
- package/src/components/stateful/SVGEditor/SVGTree.tsx +159 -0
- package/src/components/stateful/SVGEditor/SVGTypes.ts +36 -0
- package/src/components/stateful/SVGEditor/svg.xsd.xml +3038 -0
- package/src/components/stateful/SVGEditorPage.tsx +503 -0
- package/src/components/stateful/SingleProcessPage.tsx +18 -31
- package/src/components/stateful/TestPage.tsx +25 -22
- package/src/golingvu/golingvu.go +38 -2
- package/src/hooks/useGitMode.ts +20 -0
- package/src/lib/BaseSuite.test/mock.ts +16 -10
- package/src/lib/BaseSuite.test/test.ts +144 -103
- package/src/lib/Tiposkripto.test/MockTiposkripto.ts +178 -14
- package/src/lib/Tiposkripto.test/Tiposkripto.adapter.ts +9 -14
- package/src/lib/Tiposkripto.test/Tiposkripto.implementation.ts +78 -38
- package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +51 -9
- package/src/lib/Tiposkripto.test/Tiposkripto.types.ts +5 -0
- package/src/lib/Tiposkripto.ts +27 -0
- package/src/lib/index.ts +7 -0
- package/src/lib/pmProxy.test/specification.ts +168 -166
- package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
- package/src/services/FileService.ts +542 -0
- package/src/services/GitHubAuthService.ts +240 -0
- package/src/testeranto.ts +62 -140
- package/src/utils/api.ts +15 -13
- package/src/utils/gitTest.ts +29 -0
- package/src/utils.ts +21 -12
- package/testeranto/App.css +94 -121
- package/testeranto/App.js +44601 -11225
- package/testeranto/bundles/golang/core/Calculator.golingvu.go +53 -0
- package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +53 -0
- package/testeranto/bundles/node/core/chunk-RIM6RECA.mjs +1170 -0
- package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +4321 -0
- package/testeranto/bundles/node/core/example/Calculator.test.mjs +503 -0
- package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +94 -1231
- package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +574 -0
- package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +482 -0
- package/testeranto/bundles/pure/core/chunk-XYOCRDEQ.mjs +1080 -0
- package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
- package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +93 -1146
- package/testeranto/bundles/python/core/Calculator.pitono.test.py +24 -0
- package/testeranto/bundles/python/core/test_example.py +24 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-Black-O75GP5JI.ttf +0 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-Bold-R524Q5BH.ttf +0 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-ExtraBold-C6GRMYVT.ttf +0 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-Light-WKN65Y2C.ttf +0 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-Medium-ZC4DWL7C.ttf +0 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-Regular-DT6EKZ3S.ttf +0 -0
- package/testeranto/bundles/web/core/MPLUSRounded1c-Thin-YWDNVG6M.ttf +0 -0
- package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +2297 -0
- package/testeranto/bundles/web/core/chunk-JMDLMADH.mjs +27996 -0
- package/testeranto/bundles/web/core/chunk-LQMU5NCG.mjs +3082 -0
- package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +6874 -0
- package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +164 -0
- package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +11697 -0
- package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +336 -0
- package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +11697 -0
- package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +517 -0
- package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +107 -1134
- package/testeranto/metafiles/golang/core.json +3 -3
- package/testeranto/metafiles/node/core.json +474 -31
- package/testeranto/metafiles/pure/core.json +144 -28
- package/testeranto/metafiles/python/core.json +11 -0
- package/testeranto/metafiles/web/core.json +15829 -45
- package/testeranto/reports/core/config.json +40 -0
- package/testeranto/reports/core/src/Pure.test/pure/exit.log +0 -0
- package/testeranto/reports/core/src/Pure.test/pure/lint_errors.txt +0 -0
- package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +14 -0
- package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +73 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log +0 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +91 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +1 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +2 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +68 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +30 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +1 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +2 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +88 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -6
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -11
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +1 -0
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +1 -1
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +35 -38
- package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -2
- package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -10
- package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +40 -38
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +1 -1
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/lint_errors.txt +0 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +17 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +17 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +55 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +191 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +71 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +17 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +20 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +4 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +49 -0
- package/testeranto/reports/core/summary.json +34 -6
- package/testeranto.config.ts +26 -20
- package/tsc.log +141 -91
- package/tsconfig.json +6 -2
- package/dist/prebuild/ReportServer.mjs +0 -227
- package/dist/prebuild/mothership/index.mjs +0 -22
- package/dist/types/design-editor/server.d.ts +0 -1
- package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +0 -15
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -2
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -25
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -56
- /package/testeranto/reports/core/src/{lib/BaseSuite.test/web.test/web → Pure.test/pure}/message.txt +0 -0
|
@@ -1,1061 +1,11 @@
|
|
|
1
1
|
import { createRequire } from 'module';const require = createRequire(import.meta.url);
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
// src/lib/index.ts
|
|
10
|
-
var BaseAdapter = () => ({
|
|
11
|
-
beforeAll: async (input, testResource, pm) => {
|
|
12
|
-
return input;
|
|
13
|
-
},
|
|
14
|
-
beforeEach: async function(subject, initializer, testResource, initialValues, pm) {
|
|
15
|
-
return subject;
|
|
16
|
-
},
|
|
17
|
-
afterEach: async (store, key, pm) => Promise.resolve(store),
|
|
18
|
-
afterAll: (store, pm) => void 0,
|
|
19
|
-
butThen: async (store, thenCb, testResource, pm) => {
|
|
20
|
-
return thenCb(store, pm);
|
|
21
|
-
},
|
|
22
|
-
andWhen: async (store, whenCB, testResource, pm) => {
|
|
23
|
-
return whenCB(store, pm);
|
|
24
|
-
},
|
|
25
|
-
assertThis: (x) => x
|
|
26
|
-
});
|
|
27
|
-
var DefaultAdapter = (p) => {
|
|
28
|
-
const base = BaseAdapter();
|
|
29
|
-
return {
|
|
30
|
-
...base,
|
|
31
|
-
...p
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
var defaultTestResourceRequirement = {
|
|
35
|
-
ports: 0
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
// src/PM/node.ts
|
|
39
|
-
import net from "net";
|
|
40
|
-
import fs from "fs";
|
|
41
|
-
import path2 from "path";
|
|
42
|
-
|
|
43
|
-
// src/PM/index.ts
|
|
44
|
-
var PM = class {
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
// src/PM/node.ts
|
|
48
|
-
var fPaths = [];
|
|
49
|
-
var PM_Node = class extends PM {
|
|
50
|
-
constructor(t, ipcFile) {
|
|
51
|
-
super();
|
|
52
|
-
this.testResourceConfiguration = t;
|
|
53
|
-
this.client = net.createConnection(ipcFile, () => {
|
|
54
|
-
return;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
start() {
|
|
58
|
-
throw new Error("DEPRECATED");
|
|
59
|
-
}
|
|
60
|
-
stop() {
|
|
61
|
-
throw new Error("stop not implemented.");
|
|
62
|
-
}
|
|
63
|
-
send(command, ...argz) {
|
|
64
|
-
const key = Math.random().toString();
|
|
65
|
-
if (!this.client) {
|
|
66
|
-
console.error(
|
|
67
|
-
`Tried to send "${command} (${argz})" but the test has not been started and the IPC client is not established. Exiting as failure!`
|
|
68
|
-
);
|
|
69
|
-
process.exit(-1);
|
|
70
|
-
}
|
|
71
|
-
return new Promise((res) => {
|
|
72
|
-
const myListener = (event) => {
|
|
73
|
-
const x = JSON.parse(event);
|
|
74
|
-
if (x.key === key) {
|
|
75
|
-
process.removeListener("message", myListener);
|
|
76
|
-
res(x.payload);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
process.addListener("message", myListener);
|
|
80
|
-
this.client.write(JSON.stringify([command, ...argz, key]));
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
async launchSideCar(n) {
|
|
84
|
-
return this.send(
|
|
85
|
-
"launchSideCar",
|
|
86
|
-
n,
|
|
87
|
-
this.testResourceConfiguration.name
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
stopSideCar(n) {
|
|
91
|
-
return this.send(
|
|
92
|
-
"stopSideCar",
|
|
93
|
-
n,
|
|
94
|
-
this.testResourceConfiguration.name
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
async pages() {
|
|
98
|
-
return this.send("pages", ...arguments);
|
|
99
|
-
}
|
|
100
|
-
waitForSelector(p, s) {
|
|
101
|
-
return this.send("waitForSelector", ...arguments);
|
|
102
|
-
}
|
|
103
|
-
closePage(p) {
|
|
104
|
-
return this.send("closePage", ...arguments);
|
|
105
|
-
}
|
|
106
|
-
goto(page, url2) {
|
|
107
|
-
return this.send("goto", ...arguments);
|
|
108
|
-
}
|
|
109
|
-
async newPage() {
|
|
110
|
-
return this.send("newPage");
|
|
111
|
-
}
|
|
112
|
-
$(selector, page) {
|
|
113
|
-
return this.send("$", ...arguments);
|
|
114
|
-
}
|
|
115
|
-
isDisabled(selector) {
|
|
116
|
-
return this.send("isDisabled", ...arguments);
|
|
117
|
-
}
|
|
118
|
-
getAttribute(selector, attribute, p) {
|
|
119
|
-
return this.send("getAttribute", ...arguments);
|
|
120
|
-
}
|
|
121
|
-
getInnerHtml(selector, p) {
|
|
122
|
-
return this.send("getInnerHtml", ...arguments);
|
|
123
|
-
}
|
|
124
|
-
// setValue(selector: string) {
|
|
125
|
-
// return this.send("getValue", ...arguments);
|
|
126
|
-
// }
|
|
127
|
-
focusOn(selector) {
|
|
128
|
-
return this.send("focusOn", ...arguments);
|
|
129
|
-
}
|
|
130
|
-
typeInto(selector) {
|
|
131
|
-
return this.send("typeInto", ...arguments);
|
|
132
|
-
}
|
|
133
|
-
page() {
|
|
134
|
-
return this.send("page");
|
|
135
|
-
}
|
|
136
|
-
click(selector) {
|
|
137
|
-
return this.send("click", ...arguments);
|
|
138
|
-
}
|
|
139
|
-
screencast(opts, page) {
|
|
140
|
-
return this.send(
|
|
141
|
-
"screencast",
|
|
142
|
-
{
|
|
143
|
-
...opts,
|
|
144
|
-
path: this.testResourceConfiguration.fs + "/" + opts.path
|
|
145
|
-
},
|
|
146
|
-
page,
|
|
147
|
-
this.testResourceConfiguration.name
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
screencastStop(p) {
|
|
151
|
-
return this.send("screencastStop", ...arguments);
|
|
152
|
-
}
|
|
153
|
-
customScreenShot(x, y) {
|
|
154
|
-
const opts = x[0];
|
|
155
|
-
const page = x[1];
|
|
156
|
-
return this.send(
|
|
157
|
-
"customScreenShot",
|
|
158
|
-
{
|
|
159
|
-
...opts,
|
|
160
|
-
path: this.testResourceConfiguration.fs + "/" + opts.path
|
|
161
|
-
},
|
|
162
|
-
this.testResourceConfiguration.name,
|
|
163
|
-
page
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
async existsSync(destFolder) {
|
|
167
|
-
return await this.send(
|
|
168
|
-
"existsSync",
|
|
169
|
-
this.testResourceConfiguration.fs + "/" + destFolder
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
mkdirSync() {
|
|
173
|
-
return this.send("mkdirSync", this.testResourceConfiguration.fs + "/");
|
|
174
|
-
}
|
|
175
|
-
async write(uid, contents) {
|
|
176
|
-
return await this.send("write", ...arguments);
|
|
177
|
-
}
|
|
178
|
-
async writeFileSync(x) {
|
|
179
|
-
const z = arguments["0"];
|
|
180
|
-
const filepath = arguments[0];
|
|
181
|
-
const contents = arguments[1];
|
|
182
|
-
return await this.send(
|
|
183
|
-
"writeFileSync",
|
|
184
|
-
this.testResourceConfiguration.fs + "/" + filepath,
|
|
185
|
-
contents,
|
|
186
|
-
this.testResourceConfiguration.name
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
async createWriteStream(filepath) {
|
|
190
|
-
return await this.send(
|
|
191
|
-
"createWriteStream",
|
|
192
|
-
this.testResourceConfiguration.fs + "/" + filepath,
|
|
193
|
-
this.testResourceConfiguration.name
|
|
194
|
-
);
|
|
195
|
-
}
|
|
196
|
-
async end(uid) {
|
|
197
|
-
return await this.send("end", ...arguments);
|
|
198
|
-
}
|
|
199
|
-
async customclose() {
|
|
200
|
-
return await this.send(
|
|
201
|
-
"customclose",
|
|
202
|
-
this.testResourceConfiguration.fs,
|
|
203
|
-
this.testResourceConfiguration.name
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
|
-
testArtiFactoryfileWriter(tLog, callback) {
|
|
207
|
-
return (fPath, value) => {
|
|
208
|
-
callback(
|
|
209
|
-
new Promise((res, rej) => {
|
|
210
|
-
tLog("testArtiFactory =>", fPath);
|
|
211
|
-
const cleanPath = path2.resolve(fPath);
|
|
212
|
-
fPaths.push(cleanPath.replace(process.cwd(), ``));
|
|
213
|
-
const targetDir = cleanPath.split("/").slice(0, -1).join("/");
|
|
214
|
-
fs.mkdir(targetDir, { recursive: true }, async (error) => {
|
|
215
|
-
if (error) {
|
|
216
|
-
console.error(`\u2757\uFE0FtestArtiFactory failed`, targetDir, error);
|
|
217
|
-
}
|
|
218
|
-
if (Buffer.isBuffer(value)) {
|
|
219
|
-
fs.writeFileSync(fPath, value, "binary");
|
|
220
|
-
res();
|
|
221
|
-
} else if (`string` === typeof value) {
|
|
222
|
-
fs.writeFileSync(fPath, value.toString(), {
|
|
223
|
-
encoding: "utf-8"
|
|
224
|
-
});
|
|
225
|
-
res();
|
|
226
|
-
} else {
|
|
227
|
-
const pipeStream = value;
|
|
228
|
-
const myFile = fs.createWriteStream(fPath);
|
|
229
|
-
pipeStream.pipe(myFile);
|
|
230
|
-
pipeStream.on("close", () => {
|
|
231
|
-
myFile.close();
|
|
232
|
-
res();
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
})
|
|
237
|
-
);
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
// launch(options?: PuppeteerLaunchOptions): Promise<Browser>;
|
|
241
|
-
startPuppeteer(options) {
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
// src/lib/pmProxy.ts
|
|
246
|
-
var baseProxy = function(pm, mappings) {
|
|
247
|
-
return new Proxy(pm, {
|
|
248
|
-
get: (target, prop, receiver) => {
|
|
249
|
-
for (const mapping of mappings) {
|
|
250
|
-
const method = mapping[0];
|
|
251
|
-
const arger = mapping[1];
|
|
252
|
-
if (prop === method) {
|
|
253
|
-
return (...x) => {
|
|
254
|
-
const modifiedArgs = arger(...x);
|
|
255
|
-
return target[prop](...modifiedArgs);
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
return (...x) => {
|
|
260
|
-
return target[prop](...x);
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
};
|
|
265
|
-
var butThenProxy = (pm, filepath, addArtifact) => {
|
|
266
|
-
return baseProxy(pm, [
|
|
267
|
-
[
|
|
268
|
-
"screencast",
|
|
269
|
-
(opts, p) => {
|
|
270
|
-
const path3 = `${filepath}/butThen/${opts.path}`;
|
|
271
|
-
addArtifact(path3);
|
|
272
|
-
return [
|
|
273
|
-
{
|
|
274
|
-
...opts,
|
|
275
|
-
path: path3
|
|
276
|
-
},
|
|
277
|
-
p
|
|
278
|
-
];
|
|
279
|
-
}
|
|
280
|
-
],
|
|
281
|
-
[
|
|
282
|
-
"createWriteStream",
|
|
283
|
-
(fp) => {
|
|
284
|
-
const path3 = `${filepath}/butThen/${fp}`;
|
|
285
|
-
addArtifact(path3);
|
|
286
|
-
return [path3];
|
|
287
|
-
}
|
|
288
|
-
],
|
|
289
|
-
[
|
|
290
|
-
"writeFileSync",
|
|
291
|
-
(fp, contents, testName) => {
|
|
292
|
-
console.log(
|
|
293
|
-
`[DEBUG] butThenProxy writeFileSync: fp="${fp}" (type: ${typeof fp}), contents="${contents}" (type: ${typeof contents}), testName="${testName}" (type: ${typeof testName})`
|
|
294
|
-
);
|
|
295
|
-
if (typeof fp !== "string") {
|
|
296
|
-
console.log(`[ERROR] fp is not a string:`, fp);
|
|
297
|
-
if (Array.isArray(fp)) {
|
|
298
|
-
fp = fp.join("");
|
|
299
|
-
console.log(`[DEBUG] Converted array to string: "${fp}"`);
|
|
300
|
-
} else {
|
|
301
|
-
fp = String(fp);
|
|
302
|
-
console.log(`[DEBUG] Converted to string: "${fp}"`);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
const path3 = `${filepath}/butThen/${fp}`;
|
|
306
|
-
console.log(`[DEBUG] Generated path: "${path3}"`);
|
|
307
|
-
addArtifact(path3);
|
|
308
|
-
return [path3, contents, testName];
|
|
309
|
-
}
|
|
310
|
-
],
|
|
311
|
-
[
|
|
312
|
-
"customScreenShot",
|
|
313
|
-
(opts, p) => {
|
|
314
|
-
const path3 = `${filepath}/butThen/${opts.path}`;
|
|
315
|
-
addArtifact(path3);
|
|
316
|
-
return [
|
|
317
|
-
{
|
|
318
|
-
...opts,
|
|
319
|
-
path: path3
|
|
320
|
-
},
|
|
321
|
-
p
|
|
322
|
-
];
|
|
323
|
-
}
|
|
324
|
-
]
|
|
325
|
-
]);
|
|
326
|
-
};
|
|
327
|
-
var andWhenProxy = (pm, filepath, addArtifact) => {
|
|
328
|
-
return baseProxy(pm, [
|
|
329
|
-
[
|
|
330
|
-
"screencast",
|
|
331
|
-
(opts, p) => {
|
|
332
|
-
const path3 = `${filepath}/andWhen/${opts.path}`;
|
|
333
|
-
addArtifact(path3);
|
|
334
|
-
return [
|
|
335
|
-
{
|
|
336
|
-
...opts,
|
|
337
|
-
path: path3
|
|
338
|
-
},
|
|
339
|
-
p
|
|
340
|
-
];
|
|
341
|
-
}
|
|
342
|
-
],
|
|
343
|
-
[
|
|
344
|
-
"createWriteStream",
|
|
345
|
-
(fp) => {
|
|
346
|
-
const path3 = `${filepath}/andWhen/${fp}`;
|
|
347
|
-
addArtifact(path3);
|
|
348
|
-
return [path3];
|
|
349
|
-
}
|
|
350
|
-
],
|
|
351
|
-
[
|
|
352
|
-
"writeFileSync",
|
|
353
|
-
(fp, contents, testName) => {
|
|
354
|
-
const path3 = `${filepath}/andWhen/${fp}`;
|
|
355
|
-
addArtifact(path3);
|
|
356
|
-
return [path3, contents, testName];
|
|
357
|
-
}
|
|
358
|
-
],
|
|
359
|
-
[
|
|
360
|
-
"customScreenShot",
|
|
361
|
-
(opts, p) => {
|
|
362
|
-
const path3 = `${filepath}/andWhen/${opts.path}`;
|
|
363
|
-
addArtifact(path3);
|
|
364
|
-
return [
|
|
365
|
-
{
|
|
366
|
-
...opts,
|
|
367
|
-
path: path3
|
|
368
|
-
},
|
|
369
|
-
p
|
|
370
|
-
];
|
|
371
|
-
}
|
|
372
|
-
]
|
|
373
|
-
]);
|
|
374
|
-
};
|
|
375
|
-
var afterEachProxy = (pm, suite, given, addArtifact) => {
|
|
376
|
-
return baseProxy(pm, [
|
|
377
|
-
[
|
|
378
|
-
"screencast",
|
|
379
|
-
(opts, p) => {
|
|
380
|
-
const path3 = `suite-${suite}/given-${given}/afterEach/${opts.path}`;
|
|
381
|
-
addArtifact(path3);
|
|
382
|
-
return [
|
|
383
|
-
{
|
|
384
|
-
...opts,
|
|
385
|
-
path: path3
|
|
386
|
-
},
|
|
387
|
-
p
|
|
388
|
-
];
|
|
389
|
-
}
|
|
390
|
-
],
|
|
391
|
-
[
|
|
392
|
-
"createWriteStream",
|
|
393
|
-
(fp) => {
|
|
394
|
-
const path3 = `suite-${suite}/afterEach/${fp}`;
|
|
395
|
-
addArtifact(path3);
|
|
396
|
-
return [path3];
|
|
397
|
-
}
|
|
398
|
-
],
|
|
399
|
-
[
|
|
400
|
-
"writeFileSync",
|
|
401
|
-
(fp, contents, testName) => {
|
|
402
|
-
const path3 = `suite-${suite}/given-${given}/afterEach/${fp}`;
|
|
403
|
-
addArtifact(path3);
|
|
404
|
-
return [path3, contents, testName];
|
|
405
|
-
}
|
|
406
|
-
],
|
|
407
|
-
[
|
|
408
|
-
"customScreenShot",
|
|
409
|
-
(opts, p) => {
|
|
410
|
-
const path3 = `suite-${suite}/given-${given}/afterEach/${opts.path}`;
|
|
411
|
-
addArtifact(path3);
|
|
412
|
-
return [
|
|
413
|
-
{
|
|
414
|
-
...opts,
|
|
415
|
-
path: path3
|
|
416
|
-
},
|
|
417
|
-
p
|
|
418
|
-
];
|
|
419
|
-
}
|
|
420
|
-
]
|
|
421
|
-
]);
|
|
422
|
-
};
|
|
423
|
-
var beforeEachProxy = (pm, suite, addArtifact) => {
|
|
424
|
-
return baseProxy(pm, [
|
|
425
|
-
[
|
|
426
|
-
"screencast",
|
|
427
|
-
(opts, p) => {
|
|
428
|
-
const path3 = `suite-${suite}/beforeEach/${opts.path}`;
|
|
429
|
-
addArtifact(path3);
|
|
430
|
-
return [
|
|
431
|
-
{
|
|
432
|
-
...opts,
|
|
433
|
-
path: path3
|
|
434
|
-
},
|
|
435
|
-
p
|
|
436
|
-
];
|
|
437
|
-
}
|
|
438
|
-
],
|
|
439
|
-
[
|
|
440
|
-
"writeFileSync",
|
|
441
|
-
(fp, contents, testName) => {
|
|
442
|
-
const path3 = `suite-${suite}/beforeEach/${fp}`;
|
|
443
|
-
addArtifact(path3);
|
|
444
|
-
return [path3, contents, testName];
|
|
445
|
-
}
|
|
446
|
-
],
|
|
447
|
-
[
|
|
448
|
-
"customScreenShot",
|
|
449
|
-
(opts, p) => {
|
|
450
|
-
const path3 = `suite-${suite}/beforeEach/${opts.path}`;
|
|
451
|
-
addArtifact(path3);
|
|
452
|
-
return [
|
|
453
|
-
{
|
|
454
|
-
...opts,
|
|
455
|
-
path: path3
|
|
456
|
-
},
|
|
457
|
-
p
|
|
458
|
-
];
|
|
459
|
-
}
|
|
460
|
-
],
|
|
461
|
-
[
|
|
462
|
-
"createWriteStream",
|
|
463
|
-
(fp) => {
|
|
464
|
-
const path3 = `suite-${suite}/beforeEach/${fp}`;
|
|
465
|
-
addArtifact(path3);
|
|
466
|
-
return [path3];
|
|
467
|
-
}
|
|
468
|
-
]
|
|
469
|
-
]);
|
|
470
|
-
};
|
|
471
|
-
var beforeAllProxy = (pm, suite, addArtifact) => {
|
|
472
|
-
return baseProxy(pm, [
|
|
473
|
-
[
|
|
474
|
-
"writeFileSync",
|
|
475
|
-
(fp, contents, testName) => {
|
|
476
|
-
const path3 = `suite-${suite}/beforeAll/${fp}`;
|
|
477
|
-
addArtifact(path3);
|
|
478
|
-
return [path3, contents, testName];
|
|
479
|
-
}
|
|
480
|
-
],
|
|
481
|
-
[
|
|
482
|
-
"customScreenShot",
|
|
483
|
-
(opts, p) => {
|
|
484
|
-
const path3 = `suite-${suite}/beforeAll/${opts.path}`;
|
|
485
|
-
addArtifact(path3);
|
|
486
|
-
return [
|
|
487
|
-
{
|
|
488
|
-
...opts,
|
|
489
|
-
path: path3
|
|
490
|
-
},
|
|
491
|
-
p
|
|
492
|
-
];
|
|
493
|
-
}
|
|
494
|
-
],
|
|
495
|
-
[
|
|
496
|
-
"createWriteStream",
|
|
497
|
-
(fp) => {
|
|
498
|
-
const path3 = `suite-${suite}/beforeAll/${fp}`;
|
|
499
|
-
addArtifact(path3);
|
|
500
|
-
return [path3];
|
|
501
|
-
}
|
|
502
|
-
]
|
|
503
|
-
]);
|
|
504
|
-
};
|
|
505
|
-
var afterAllProxy = (pm, suite, addArtifact) => {
|
|
506
|
-
return baseProxy(pm, [
|
|
507
|
-
[
|
|
508
|
-
"createWriteStream",
|
|
509
|
-
(fp) => {
|
|
510
|
-
const path3 = `suite-${suite}/afterAll/${fp}`;
|
|
511
|
-
addArtifact(path3);
|
|
512
|
-
return [path3];
|
|
513
|
-
}
|
|
514
|
-
],
|
|
515
|
-
[
|
|
516
|
-
"writeFileSync",
|
|
517
|
-
(fp, contents, testName) => {
|
|
518
|
-
const path3 = `suite-${suite}/afterAll/${fp}`;
|
|
519
|
-
addArtifact(path3);
|
|
520
|
-
return [path3, contents, testName];
|
|
521
|
-
}
|
|
522
|
-
],
|
|
523
|
-
[
|
|
524
|
-
"customScreenShot",
|
|
525
|
-
(opts, p) => {
|
|
526
|
-
const path3 = `suite-${suite}/afterAll/${opts.path}`;
|
|
527
|
-
addArtifact(path3);
|
|
528
|
-
return [
|
|
529
|
-
{
|
|
530
|
-
...opts,
|
|
531
|
-
path: path3
|
|
532
|
-
},
|
|
533
|
-
p
|
|
534
|
-
];
|
|
535
|
-
}
|
|
536
|
-
]
|
|
537
|
-
]);
|
|
538
|
-
};
|
|
539
|
-
|
|
540
|
-
// src/lib/BaseGiven.ts
|
|
541
|
-
var BaseGiven = class {
|
|
542
|
-
constructor(name, features, whens, thens, givenCB, initialValues) {
|
|
543
|
-
this.artifacts = [];
|
|
544
|
-
this.name = name;
|
|
545
|
-
this.features = features || [];
|
|
546
|
-
this.whens = whens || [];
|
|
547
|
-
this.thens = thens || [];
|
|
548
|
-
this.givenCB = givenCB;
|
|
549
|
-
this.initialValues = initialValues;
|
|
550
|
-
}
|
|
551
|
-
addArtifact(path3) {
|
|
552
|
-
const normalizedPath = path3.replace(/\\/g, "/");
|
|
553
|
-
this.artifacts.push(normalizedPath);
|
|
554
|
-
}
|
|
555
|
-
beforeAll(store) {
|
|
556
|
-
return store;
|
|
557
|
-
}
|
|
558
|
-
toObj() {
|
|
559
|
-
return {
|
|
560
|
-
key: this.key,
|
|
561
|
-
name: this.name,
|
|
562
|
-
whens: (this.whens || []).map((w) => {
|
|
563
|
-
if (w && w.toObj)
|
|
564
|
-
return w.toObj();
|
|
565
|
-
console.error("w is not as expected!", JSON.stringify(w));
|
|
566
|
-
return {};
|
|
567
|
-
}),
|
|
568
|
-
thens: (this.thens || []).map((t) => t && t.toObj ? t.toObj() : {}),
|
|
569
|
-
error: this.error ? [this.error, this.error.stack] : null,
|
|
570
|
-
failed: this.failed,
|
|
571
|
-
features: this.features || [],
|
|
572
|
-
artifacts: this.artifacts || []
|
|
573
|
-
};
|
|
574
|
-
}
|
|
575
|
-
async afterEach(store, key, artifactory, pm) {
|
|
576
|
-
return store;
|
|
577
|
-
}
|
|
578
|
-
async give(subject, key, testResourceConfiguration, tester, artifactory, tLog, pm, suiteNdx) {
|
|
579
|
-
this.key = key;
|
|
580
|
-
tLog(`
|
|
581
|
-
${this.key}`);
|
|
582
|
-
tLog(`
|
|
583
|
-
Given: ${this.name}`);
|
|
584
|
-
const givenArtifactory = (fPath, value) => artifactory(`given-${key}/${fPath}`, value);
|
|
585
|
-
this.uberCatcher((e) => {
|
|
586
|
-
console.error(e.toString());
|
|
587
|
-
this.error = e.error;
|
|
588
|
-
tLog(e.stack);
|
|
589
|
-
});
|
|
590
|
-
try {
|
|
591
|
-
const addArtifact = this.addArtifact.bind(this);
|
|
592
|
-
const proxiedPm = beforeEachProxy(pm, suiteNdx.toString(), addArtifact);
|
|
593
|
-
this.store = await this.givenThat(
|
|
594
|
-
subject,
|
|
595
|
-
testResourceConfiguration,
|
|
596
|
-
givenArtifactory,
|
|
597
|
-
this.givenCB,
|
|
598
|
-
this.initialValues,
|
|
599
|
-
proxiedPm
|
|
600
|
-
);
|
|
601
|
-
} catch (e) {
|
|
602
|
-
this.failed = true;
|
|
603
|
-
this.error = e.stack;
|
|
604
|
-
}
|
|
605
|
-
try {
|
|
606
|
-
for (const [whenNdx, whenStep] of this.whens.entries()) {
|
|
607
|
-
await whenStep.test(
|
|
608
|
-
this.store,
|
|
609
|
-
testResourceConfiguration,
|
|
610
|
-
tLog,
|
|
611
|
-
pm,
|
|
612
|
-
`suite-${suiteNdx}/given-${key}/when/${whenNdx}`
|
|
613
|
-
);
|
|
614
|
-
}
|
|
615
|
-
for (const [thenNdx, thenStep] of this.thens.entries()) {
|
|
616
|
-
const t = await thenStep.test(
|
|
617
|
-
this.store,
|
|
618
|
-
testResourceConfiguration,
|
|
619
|
-
tLog,
|
|
620
|
-
pm,
|
|
621
|
-
`suite-${suiteNdx}/given-${key}/then-${thenNdx}`
|
|
622
|
-
);
|
|
623
|
-
tester(t);
|
|
624
|
-
}
|
|
625
|
-
} catch (e) {
|
|
626
|
-
this.error = e.stack;
|
|
627
|
-
this.failed = true;
|
|
628
|
-
} finally {
|
|
629
|
-
try {
|
|
630
|
-
const addArtifact = this.addArtifact.bind(this);
|
|
631
|
-
const proxiedPm = afterEachProxy(
|
|
632
|
-
pm,
|
|
633
|
-
suiteNdx.toString(),
|
|
634
|
-
key,
|
|
635
|
-
addArtifact
|
|
636
|
-
);
|
|
637
|
-
await this.afterEach(this.store, this.key, givenArtifactory, proxiedPm);
|
|
638
|
-
} catch (e) {
|
|
639
|
-
this.failed = e;
|
|
640
|
-
throw e;
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
return this.store;
|
|
644
|
-
}
|
|
645
|
-
};
|
|
646
|
-
|
|
647
|
-
// src/lib/BaseWhen.ts
|
|
648
|
-
var BaseWhen = class {
|
|
649
|
-
constructor(name, whenCB) {
|
|
650
|
-
this.artifacts = [];
|
|
651
|
-
this.name = name;
|
|
652
|
-
this.whenCB = whenCB;
|
|
653
|
-
}
|
|
654
|
-
addArtifact(path3) {
|
|
655
|
-
const normalizedPath = path3.replace(/\\/g, "/");
|
|
656
|
-
this.artifacts.push(normalizedPath);
|
|
657
|
-
}
|
|
658
|
-
toObj() {
|
|
659
|
-
const obj = {
|
|
660
|
-
name: this.name,
|
|
661
|
-
error: this.error ? `${this.error.name}: ${this.error.message}
|
|
662
|
-
${this.error.stack}` : null,
|
|
663
|
-
artifacts: this.artifacts || []
|
|
664
|
-
};
|
|
665
|
-
console.log(
|
|
666
|
-
`[TOOBJ] Serializing ${this.constructor.name} with artifacts:`,
|
|
667
|
-
obj.artifacts
|
|
668
|
-
);
|
|
669
|
-
return obj;
|
|
670
|
-
}
|
|
671
|
-
async test(store, testResourceConfiguration, tLog, pm, filepath) {
|
|
672
|
-
try {
|
|
673
|
-
const addArtifact = this.addArtifact.bind(this);
|
|
674
|
-
const proxiedPm = andWhenProxy(pm, filepath, addArtifact);
|
|
675
|
-
const result = await this.andWhen(
|
|
676
|
-
store,
|
|
677
|
-
this.whenCB,
|
|
678
|
-
testResourceConfiguration,
|
|
679
|
-
proxiedPm
|
|
680
|
-
);
|
|
681
|
-
return result;
|
|
682
|
-
} catch (e) {
|
|
683
|
-
console.error(
|
|
684
|
-
"[ERROR] When step failed:",
|
|
685
|
-
this.name.toString(),
|
|
686
|
-
e.toString()
|
|
687
|
-
);
|
|
688
|
-
this.error = e;
|
|
689
|
-
throw e;
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
};
|
|
693
|
-
|
|
694
|
-
// src/lib/BaseThen.ts
|
|
695
|
-
var BaseThen = class {
|
|
696
|
-
constructor(name, thenCB) {
|
|
697
|
-
this.artifacts = [];
|
|
698
|
-
this.name = name;
|
|
699
|
-
this.thenCB = thenCB;
|
|
700
|
-
this.error = false;
|
|
701
|
-
this.artifacts = [];
|
|
702
|
-
}
|
|
703
|
-
addArtifact(path3) {
|
|
704
|
-
const normalizedPath = path3.replace(/\\/g, "/");
|
|
705
|
-
this.artifacts.push(normalizedPath);
|
|
706
|
-
}
|
|
707
|
-
toObj() {
|
|
708
|
-
const obj = {
|
|
709
|
-
name: this.name,
|
|
710
|
-
error: this.error,
|
|
711
|
-
artifacts: this.artifacts
|
|
712
|
-
};
|
|
713
|
-
return obj;
|
|
714
|
-
}
|
|
715
|
-
async test(store, testResourceConfiguration, tLog, pm, filepath) {
|
|
716
|
-
const addArtifact = this.addArtifact.bind(this);
|
|
717
|
-
const proxiedPm = butThenProxy(pm, filepath, addArtifact);
|
|
718
|
-
return this.butThen(
|
|
719
|
-
store,
|
|
720
|
-
async (s) => {
|
|
721
|
-
try {
|
|
722
|
-
if (typeof this.thenCB === "function") {
|
|
723
|
-
const wrappedPm = new Proxy(proxiedPm, {
|
|
724
|
-
get: (target, prop, receiver) => {
|
|
725
|
-
if (prop === "writeFileSync") {
|
|
726
|
-
return (...args) => {
|
|
727
|
-
console.log(
|
|
728
|
-
`[DEBUG] writeFileSync called with args:`,
|
|
729
|
-
args
|
|
730
|
-
);
|
|
731
|
-
return target[prop](...args);
|
|
732
|
-
};
|
|
733
|
-
}
|
|
734
|
-
return target[prop];
|
|
735
|
-
}
|
|
736
|
-
});
|
|
737
|
-
const result = await this.thenCB(s, wrappedPm);
|
|
738
|
-
return result;
|
|
739
|
-
} else {
|
|
740
|
-
return this.thenCB;
|
|
741
|
-
}
|
|
742
|
-
} catch (e) {
|
|
743
|
-
console.error(e.stack);
|
|
744
|
-
}
|
|
745
|
-
},
|
|
746
|
-
testResourceConfiguration,
|
|
747
|
-
proxiedPm
|
|
748
|
-
).catch((e) => {
|
|
749
|
-
this.error = e.stack;
|
|
750
|
-
});
|
|
751
|
-
}
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
// src/lib/BaseSuite.ts
|
|
755
|
-
var BaseSuite = class {
|
|
756
|
-
constructor(name, index, givens = {}) {
|
|
757
|
-
this.artifacts = [];
|
|
758
|
-
const suiteName = name || "testSuite";
|
|
759
|
-
if (!suiteName) {
|
|
760
|
-
throw new Error("BaseSuite requires a non-empty name");
|
|
761
|
-
}
|
|
762
|
-
this.name = suiteName;
|
|
763
|
-
this.index = index;
|
|
764
|
-
this.givens = givens;
|
|
765
|
-
this.fails = 0;
|
|
766
|
-
}
|
|
767
|
-
addArtifact(path3) {
|
|
768
|
-
const normalizedPath = path3.replace(/\\/g, "/");
|
|
769
|
-
this.artifacts.push(normalizedPath);
|
|
770
|
-
}
|
|
771
|
-
features() {
|
|
772
|
-
try {
|
|
773
|
-
const features = Object.keys(this.givens).map((k) => this.givens[k].features).flat().filter((value, index, array) => {
|
|
774
|
-
return array.indexOf(value) === index;
|
|
775
|
-
});
|
|
776
|
-
return features || [];
|
|
777
|
-
} catch (e) {
|
|
778
|
-
console.error("[ERROR] Failed to extract features:", JSON.stringify(e));
|
|
779
|
-
return [];
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
toObj() {
|
|
783
|
-
const givens = Object.keys(this.givens).map((k) => this.givens[k].toObj());
|
|
784
|
-
return {
|
|
785
|
-
name: this.name,
|
|
786
|
-
givens,
|
|
787
|
-
fails: this.fails,
|
|
788
|
-
failed: this.failed,
|
|
789
|
-
features: this.features()
|
|
790
|
-
};
|
|
791
|
-
}
|
|
792
|
-
setup(s, artifactory, tr, pm) {
|
|
793
|
-
return new Promise((res) => res(s));
|
|
794
|
-
}
|
|
795
|
-
assertThat(t) {
|
|
796
|
-
return !!t;
|
|
797
|
-
}
|
|
798
|
-
afterAll(store, artifactory, pm) {
|
|
799
|
-
return store;
|
|
800
|
-
}
|
|
801
|
-
async run(input, testResourceConfiguration, artifactory, tLog, pm) {
|
|
802
|
-
this.testResourceConfiguration = testResourceConfiguration;
|
|
803
|
-
const suiteArtifactory = (fPath, value) => artifactory(`suite-${this.index}-${this.name}/${fPath}`, value);
|
|
804
|
-
const sNdx = this.index;
|
|
805
|
-
const addArtifact = this.addArtifact.bind(this);
|
|
806
|
-
const proxiedPm = beforeAllProxy(pm, sNdx.toString(), addArtifact);
|
|
807
|
-
const subject = await this.setup(
|
|
808
|
-
input,
|
|
809
|
-
suiteArtifactory,
|
|
810
|
-
testResourceConfiguration,
|
|
811
|
-
proxiedPm
|
|
812
|
-
);
|
|
813
|
-
for (const [gKey, g] of Object.entries(this.givens)) {
|
|
814
|
-
const giver = this.givens[gKey];
|
|
815
|
-
this.store = await giver.give(
|
|
816
|
-
subject,
|
|
817
|
-
gKey,
|
|
818
|
-
testResourceConfiguration,
|
|
819
|
-
this.assertThat,
|
|
820
|
-
suiteArtifactory,
|
|
821
|
-
tLog,
|
|
822
|
-
pm,
|
|
823
|
-
sNdx
|
|
824
|
-
).catch((e) => {
|
|
825
|
-
this.failed = true;
|
|
826
|
-
this.fails = this.fails + 1;
|
|
827
|
-
throw e;
|
|
828
|
-
});
|
|
829
|
-
}
|
|
830
|
-
try {
|
|
831
|
-
const addArtifact2 = this.addArtifact.bind(this);
|
|
832
|
-
const afterAllPm = afterAllProxy(pm, sNdx.toString(), addArtifact2);
|
|
833
|
-
this.afterAll(this.store, artifactory, afterAllPm);
|
|
834
|
-
} catch (e) {
|
|
835
|
-
console.error(JSON.stringify(e));
|
|
836
|
-
}
|
|
837
|
-
return this;
|
|
838
|
-
}
|
|
839
|
-
};
|
|
840
|
-
|
|
841
|
-
// src/lib/Tiposkripto.ts
|
|
842
|
-
var Tiposkripto = class {
|
|
843
|
-
constructor(input, testSpecification, testImplementation, testResourceRequirement = defaultTestResourceRequirement, testAdapter2 = {}, uberCatcher = (cb) => cb()) {
|
|
844
|
-
this.artifacts = [];
|
|
845
|
-
const fullAdapter = DefaultAdapter(testAdapter2);
|
|
846
|
-
const classySuites = Object.entries(testImplementation.suites).reduce(
|
|
847
|
-
(a, [key], index) => {
|
|
848
|
-
a[key] = (somestring, givens) => {
|
|
849
|
-
return new class extends BaseSuite {
|
|
850
|
-
afterAll(store, artifactory, pm) {
|
|
851
|
-
return fullAdapter.afterAll(store, pm);
|
|
852
|
-
}
|
|
853
|
-
assertThat(t) {
|
|
854
|
-
return fullAdapter.assertThis(t);
|
|
855
|
-
}
|
|
856
|
-
async setup(s, artifactory, tr, pm) {
|
|
857
|
-
return fullAdapter.beforeAll?.(s, tr, pm) ?? s;
|
|
858
|
-
}
|
|
859
|
-
}(somestring, index, givens);
|
|
860
|
-
};
|
|
861
|
-
return a;
|
|
862
|
-
},
|
|
863
|
-
{}
|
|
864
|
-
);
|
|
865
|
-
const classyGivens = Object.entries(testImplementation.givens).reduce(
|
|
866
|
-
(a, [key, g]) => {
|
|
867
|
-
a[key] = (name, features, whens, thens, gcb, initialValues) => {
|
|
868
|
-
return new class extends BaseGiven {
|
|
869
|
-
constructor() {
|
|
870
|
-
super(...arguments);
|
|
871
|
-
this.uberCatcher = uberCatcher;
|
|
872
|
-
}
|
|
873
|
-
async givenThat(subject, testResource, artifactory, initializer, initialValues2, pm) {
|
|
874
|
-
return fullAdapter.beforeEach(
|
|
875
|
-
subject,
|
|
876
|
-
initializer,
|
|
877
|
-
testResource,
|
|
878
|
-
initialValues2,
|
|
879
|
-
pm
|
|
880
|
-
);
|
|
881
|
-
}
|
|
882
|
-
afterEach(store, key2, artifactory, pm) {
|
|
883
|
-
return Promise.resolve(fullAdapter.afterEach(store, key2, pm));
|
|
884
|
-
}
|
|
885
|
-
}(
|
|
886
|
-
name,
|
|
887
|
-
features,
|
|
888
|
-
whens,
|
|
889
|
-
thens,
|
|
890
|
-
testImplementation.givens[key],
|
|
891
|
-
initialValues
|
|
892
|
-
);
|
|
893
|
-
};
|
|
894
|
-
return a;
|
|
895
|
-
},
|
|
896
|
-
{}
|
|
897
|
-
);
|
|
898
|
-
const classyWhens = Object.entries(testImplementation.whens).reduce(
|
|
899
|
-
(a, [key, whEn]) => {
|
|
900
|
-
a[key] = (...payload) => {
|
|
901
|
-
return new class extends BaseWhen {
|
|
902
|
-
async andWhen(store, whenCB, testResource, pm) {
|
|
903
|
-
return await fullAdapter.andWhen(store, whenCB, testResource, pm);
|
|
904
|
-
}
|
|
905
|
-
}(`${key}: ${payload && payload.toString()}`, whEn(...payload));
|
|
906
|
-
};
|
|
907
|
-
return a;
|
|
908
|
-
},
|
|
909
|
-
{}
|
|
910
|
-
);
|
|
911
|
-
const classyThens = Object.entries(testImplementation.thens).reduce(
|
|
912
|
-
(a, [key, thEn]) => {
|
|
913
|
-
a[key] = (...args) => {
|
|
914
|
-
return new class extends BaseThen {
|
|
915
|
-
async butThen(store, thenCB, testResource, pm) {
|
|
916
|
-
return await fullAdapter.butThen(store, thenCB, testResource, pm);
|
|
917
|
-
}
|
|
918
|
-
}(`${key}: ${args && args.toString()}`, thEn(...args));
|
|
919
|
-
};
|
|
920
|
-
return a;
|
|
921
|
-
},
|
|
922
|
-
{}
|
|
923
|
-
);
|
|
924
|
-
this.suitesOverrides = classySuites;
|
|
925
|
-
this.givenOverides = classyGivens;
|
|
926
|
-
this.whenOverides = classyWhens;
|
|
927
|
-
this.thenOverides = classyThens;
|
|
928
|
-
this.testResourceRequirement = testResourceRequirement;
|
|
929
|
-
this.testSpecification = testSpecification;
|
|
930
|
-
this.specs = testSpecification(
|
|
931
|
-
this.Suites(),
|
|
932
|
-
this.Given(),
|
|
933
|
-
this.When(),
|
|
934
|
-
this.Then()
|
|
935
|
-
);
|
|
936
|
-
this.testJobs = this.specs.map((suite) => {
|
|
937
|
-
const suiteRunner = (suite2) => async (puppetMaster, tLog) => {
|
|
938
|
-
try {
|
|
939
|
-
const x = await suite2.run(
|
|
940
|
-
input,
|
|
941
|
-
puppetMaster.testResourceConfiguration,
|
|
942
|
-
(fPath, value) => puppetMaster.testArtiFactoryfileWriter(
|
|
943
|
-
tLog,
|
|
944
|
-
(p) => {
|
|
945
|
-
this.artifacts.push(p);
|
|
946
|
-
}
|
|
947
|
-
)(
|
|
948
|
-
puppetMaster.testResourceConfiguration.fs + "/" + fPath,
|
|
949
|
-
value
|
|
950
|
-
),
|
|
951
|
-
tLog,
|
|
952
|
-
puppetMaster
|
|
953
|
-
);
|
|
954
|
-
return x;
|
|
955
|
-
} catch (e) {
|
|
956
|
-
console.error(e.stack);
|
|
957
|
-
throw e;
|
|
958
|
-
}
|
|
959
|
-
};
|
|
960
|
-
const runner = suiteRunner(suite);
|
|
961
|
-
return {
|
|
962
|
-
test: suite,
|
|
963
|
-
toObj: () => {
|
|
964
|
-
return suite.toObj();
|
|
965
|
-
},
|
|
966
|
-
runner,
|
|
967
|
-
receiveTestResourceConfig: async function(puppetMaster) {
|
|
968
|
-
const tLog = async (...l) => {
|
|
969
|
-
};
|
|
970
|
-
try {
|
|
971
|
-
const suiteDone = await runner(puppetMaster, tLog);
|
|
972
|
-
const fails = suiteDone.fails;
|
|
973
|
-
await puppetMaster.writeFileSync(
|
|
974
|
-
`tests.json`,
|
|
975
|
-
JSON.stringify(this.toObj(), null, 2),
|
|
976
|
-
"test"
|
|
977
|
-
);
|
|
978
|
-
return {
|
|
979
|
-
failed: fails > 0,
|
|
980
|
-
fails,
|
|
981
|
-
artifacts: this.artifacts || [],
|
|
982
|
-
features: suiteDone.features()
|
|
983
|
-
};
|
|
984
|
-
} catch (e) {
|
|
985
|
-
console.error(e.stack);
|
|
986
|
-
return {
|
|
987
|
-
failed: true,
|
|
988
|
-
fails: -1,
|
|
989
|
-
artifacts: this.artifacts || [],
|
|
990
|
-
features: []
|
|
991
|
-
};
|
|
992
|
-
}
|
|
993
|
-
}
|
|
994
|
-
};
|
|
995
|
-
});
|
|
996
|
-
}
|
|
997
|
-
Specs() {
|
|
998
|
-
return this.specs;
|
|
999
|
-
}
|
|
1000
|
-
Suites() {
|
|
1001
|
-
return this.suitesOverrides;
|
|
1002
|
-
}
|
|
1003
|
-
Given() {
|
|
1004
|
-
return this.givenOverides;
|
|
1005
|
-
}
|
|
1006
|
-
When() {
|
|
1007
|
-
return this.whenOverides;
|
|
1008
|
-
}
|
|
1009
|
-
Then() {
|
|
1010
|
-
return this.thenOverides;
|
|
1011
|
-
}
|
|
1012
|
-
// Add a method to access test jobs which can be used by receiveTestResourceConfig
|
|
1013
|
-
getTestJobs() {
|
|
1014
|
-
return this.testJobs;
|
|
1015
|
-
}
|
|
1016
|
-
};
|
|
1017
|
-
|
|
1018
|
-
// src/Node.ts
|
|
1019
|
-
var ipcfile;
|
|
1020
|
-
var NodeTesteranto = class extends Tiposkripto {
|
|
1021
|
-
constructor(input, testSpecification, testImplementation, testResourceRequirement, testAdapter2) {
|
|
1022
|
-
super(
|
|
1023
|
-
input,
|
|
1024
|
-
testSpecification,
|
|
1025
|
-
testImplementation,
|
|
1026
|
-
testResourceRequirement,
|
|
1027
|
-
testAdapter2,
|
|
1028
|
-
() => {
|
|
1029
|
-
}
|
|
1030
|
-
);
|
|
1031
|
-
}
|
|
1032
|
-
async receiveTestResourceConfig(partialTestResource) {
|
|
1033
|
-
return await this.testJobs[0].receiveTestResourceConfig(
|
|
1034
|
-
new PM_Node(JSON.parse(partialTestResource), ipcfile)
|
|
1035
|
-
);
|
|
1036
|
-
}
|
|
1037
|
-
};
|
|
1038
|
-
var testeranto = async (input, testSpecification, testImplementation, testAdapter2, testResourceRequirement = defaultTestResourceRequirement) => {
|
|
1039
|
-
try {
|
|
1040
|
-
const t = new NodeTesteranto(
|
|
1041
|
-
input,
|
|
1042
|
-
testSpecification,
|
|
1043
|
-
testImplementation,
|
|
1044
|
-
testResourceRequirement,
|
|
1045
|
-
testAdapter2
|
|
1046
|
-
);
|
|
1047
|
-
process.on("unhandledRejection", (reason, promise) => {
|
|
1048
|
-
console.error("Unhandled Rejection at:", promise, "reason:", reason);
|
|
1049
|
-
});
|
|
1050
|
-
ipcfile = process.argv[3];
|
|
1051
|
-
process.exit((await t.receiveTestResourceConfig(process.argv[2])).fails);
|
|
1052
|
-
} catch (e) {
|
|
1053
|
-
console.error(e);
|
|
1054
|
-
console.error(e.stack);
|
|
1055
|
-
process.exit(-1);
|
|
1056
|
-
}
|
|
1057
|
-
};
|
|
1058
|
-
var Node_default = testeranto;
|
|
2
|
+
import {
|
|
3
|
+
BaseGiven,
|
|
4
|
+
BaseSuite,
|
|
5
|
+
BaseThen,
|
|
6
|
+
BaseWhen,
|
|
7
|
+
Node_default
|
|
8
|
+
} from "../../../chunk-RIM6RECA.mjs";
|
|
1059
9
|
|
|
1060
10
|
// src/lib/BaseSuite.test/mock.ts
|
|
1061
11
|
var MockGiven = class extends BaseGiven {
|
|
@@ -1065,14 +15,14 @@ var MockGiven = class extends BaseGiven {
|
|
|
1065
15
|
features,
|
|
1066
16
|
whens,
|
|
1067
17
|
thens,
|
|
1068
|
-
async () => ({ testStore: true }),
|
|
18
|
+
async () => ({ testStore: true, testSelection: false }),
|
|
1069
19
|
// givenCB
|
|
1070
20
|
{}
|
|
1071
21
|
// initialValues
|
|
1072
22
|
);
|
|
1073
23
|
}
|
|
1074
24
|
async givenThat() {
|
|
1075
|
-
return { testStore: true };
|
|
25
|
+
return { testStore: true, testSelection: false };
|
|
1076
26
|
}
|
|
1077
27
|
uberCatcher(e) {
|
|
1078
28
|
console.error("Given error 2:", e);
|
|
@@ -1080,16 +30,22 @@ var MockGiven = class extends BaseGiven {
|
|
|
1080
30
|
};
|
|
1081
31
|
var MockWhen = class extends BaseWhen {
|
|
1082
32
|
async andWhen(store, whenCB, testResource, pm) {
|
|
1083
|
-
const selection = {
|
|
1084
|
-
|
|
1085
|
-
|
|
33
|
+
const selection = {
|
|
34
|
+
testSelection: store.testStore,
|
|
35
|
+
testStore: store.testStore
|
|
36
|
+
};
|
|
37
|
+
await whenCB(selection);
|
|
38
|
+
return store;
|
|
1086
39
|
}
|
|
1087
|
-
addArtifact(
|
|
40
|
+
addArtifact(path) {
|
|
1088
41
|
}
|
|
1089
42
|
};
|
|
1090
43
|
var MockThen = class extends BaseThen {
|
|
1091
|
-
async butThen(store, thenCB, testResourceConfiguration, pm
|
|
1092
|
-
const selection = {
|
|
44
|
+
async butThen(store, thenCB, testResourceConfiguration, pm) {
|
|
45
|
+
const selection = {
|
|
46
|
+
testSelection: store.testStore,
|
|
47
|
+
testStore: store.testStore
|
|
48
|
+
};
|
|
1093
49
|
await thenCB(selection);
|
|
1094
50
|
return selection;
|
|
1095
51
|
}
|
|
@@ -1123,35 +79,35 @@ var MockSuite = class extends BaseSuite {
|
|
|
1123
79
|
|
|
1124
80
|
// src/lib/BaseSuite.test/test.ts
|
|
1125
81
|
var specification = (Suite, Given, When, Then) => [
|
|
1126
|
-
Suite.Default("BaseSuite Core
|
|
82
|
+
Suite.Default("BaseSuite Core Funct", {
|
|
1127
83
|
// Test initialization and basic properties
|
|
1128
84
|
initialization: Given.Default(
|
|
1129
85
|
["BaseSuite should initialize with correct name and index"],
|
|
1130
86
|
[],
|
|
1131
87
|
[Then.SuiteNameMatches("testSuite"), Then.SuiteIndexMatches(0)]
|
|
88
|
+
),
|
|
89
|
+
// Test execution flow
|
|
90
|
+
execution: Given.Default(
|
|
91
|
+
["BaseSuite should execute all phases successfully"],
|
|
92
|
+
[When.RunSuite()],
|
|
93
|
+
[Then.StoreValid()]
|
|
94
|
+
),
|
|
95
|
+
// Test multiple features
|
|
96
|
+
multipleFeatures: Given.Default(
|
|
97
|
+
["BaseSuite should handle multiple features"],
|
|
98
|
+
[When.AddFeature("additionalFeature")],
|
|
99
|
+
[
|
|
100
|
+
Then.FeaturesIncludes("testFeature"),
|
|
101
|
+
Then.FeaturesIncludes("additionalFeature"),
|
|
102
|
+
Then.FeatureCountMatches(2)
|
|
103
|
+
]
|
|
104
|
+
),
|
|
105
|
+
// Test error handling
|
|
106
|
+
errorHandling: Given.Default(
|
|
107
|
+
["BaseSuite should handle errors gracefully"],
|
|
108
|
+
[When.RunSuiteWithError()],
|
|
109
|
+
[Then.ErrorCountMatches(1), Then.FailedFlagSet()]
|
|
1132
110
|
)
|
|
1133
|
-
// // Test execution flow
|
|
1134
|
-
// execution: Given.Default(
|
|
1135
|
-
// ["BaseSuite should execute all phases successfully"],
|
|
1136
|
-
// [When.RunSuite()],
|
|
1137
|
-
// [Then.StoreValid()]
|
|
1138
|
-
// ),
|
|
1139
|
-
// // Test multiple features
|
|
1140
|
-
// multipleFeatures: Given.Default(
|
|
1141
|
-
// ["BaseSuite should handle multiple features"],
|
|
1142
|
-
// [When.AddFeature("additionalFeature")],
|
|
1143
|
-
// [
|
|
1144
|
-
// Then.FeaturesIncludes("testFeature"),
|
|
1145
|
-
// Then.FeaturesIncludes("additionalFeature"),
|
|
1146
|
-
// Then.FeatureCountMatches(2),
|
|
1147
|
-
// ]
|
|
1148
|
-
// ),
|
|
1149
|
-
// // Test error handling
|
|
1150
|
-
// errorHandling: Given.Default(
|
|
1151
|
-
// ["BaseSuite should handle errors gracefully"],
|
|
1152
|
-
// [When.RunSuiteWithError()],
|
|
1153
|
-
// [Then.ErrorCountMatches(1), Then.FailedFlagSet()]
|
|
1154
|
-
// ),
|
|
1155
111
|
})
|
|
1156
112
|
// Suite.Default("Comprehensive Integration", {
|
|
1157
113
|
// fullStackTest: Given.Default(
|
|
@@ -1187,170 +143,71 @@ var implementation = {
|
|
|
1187
143
|
}
|
|
1188
144
|
},
|
|
1189
145
|
whens: {
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
return suite;
|
|
1193
|
-
},
|
|
1194
|
-
modifySpecs: (modifier) => (suite) => {
|
|
1195
|
-
suite.specs = modifier(suite.specs);
|
|
146
|
+
// Add TestWhen which is defined in O type
|
|
147
|
+
TestWhen: () => (suite) => {
|
|
1196
148
|
return suite;
|
|
1197
149
|
},
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
return suite;
|
|
1201
|
-
},
|
|
1202
|
-
RunSuite: () => async (suite) => {
|
|
1203
|
-
const mockConfig = {
|
|
1204
|
-
name: "test",
|
|
1205
|
-
fs: "/tmp",
|
|
1206
|
-
ports: [3e3],
|
|
1207
|
-
environment: {},
|
|
1208
|
-
timeout: 5e3,
|
|
1209
|
-
retries: 3
|
|
1210
|
-
};
|
|
1211
|
-
const mockArtifactory = (key, value) => {
|
|
1212
|
-
};
|
|
1213
|
-
const mockTLog = (...args) => {
|
|
1214
|
-
};
|
|
1215
|
-
const mockPM = {
|
|
1216
|
-
server: null,
|
|
1217
|
-
testResourceConfiguration: mockConfig,
|
|
1218
|
-
start: async () => {
|
|
1219
|
-
},
|
|
1220
|
-
stop: async () => {
|
|
1221
|
-
},
|
|
1222
|
-
testArtiFactoryfileWriter: () => {
|
|
1223
|
-
},
|
|
1224
|
-
$: () => {
|
|
1225
|
-
},
|
|
1226
|
-
click: () => {
|
|
1227
|
-
},
|
|
1228
|
-
closePage: () => {
|
|
1229
|
-
},
|
|
1230
|
-
createWriteStream: async () => ""
|
|
1231
|
-
};
|
|
1232
|
-
return await suite.run(
|
|
1233
|
-
null,
|
|
1234
|
-
mockConfig,
|
|
1235
|
-
mockArtifactory,
|
|
1236
|
-
mockTLog,
|
|
1237
|
-
mockPM
|
|
1238
|
-
);
|
|
1239
|
-
},
|
|
1240
|
-
RunSuiteWithError: () => async (suite) => {
|
|
1241
|
-
try {
|
|
1242
|
-
await suite.run(
|
|
1243
|
-
null,
|
|
1244
|
-
{},
|
|
1245
|
-
// Invalid config
|
|
1246
|
-
() => {
|
|
1247
|
-
},
|
|
1248
|
-
() => {
|
|
1249
|
-
},
|
|
1250
|
-
{}
|
|
1251
|
-
);
|
|
1252
|
-
} catch (e) {
|
|
1253
|
-
}
|
|
150
|
+
// Add RunSuite which is defined in O type
|
|
151
|
+
RunSuite: () => (suite) => {
|
|
1254
152
|
return suite;
|
|
1255
153
|
},
|
|
154
|
+
// Add AddFeature which is used in the specification
|
|
1256
155
|
AddFeature: (feature) => (suite) => {
|
|
1257
156
|
const firstGivenKey = Object.keys(suite.givens)[0];
|
|
1258
157
|
if (firstGivenKey) {
|
|
1259
158
|
suite.givens[firstGivenKey].features.push(feature);
|
|
1260
159
|
}
|
|
1261
160
|
return suite;
|
|
1262
|
-
}
|
|
1263
|
-
},
|
|
1264
|
-
thens: {
|
|
1265
|
-
SuiteNameMatches: (expectedName) => (ssel, utils) => (store) => {
|
|
1266
|
-
if (store.name !== expectedName) {
|
|
1267
|
-
throw new Error(
|
|
1268
|
-
`Expected suite name '${expectedName}', got '${store.name}'`
|
|
1269
|
-
);
|
|
1270
|
-
}
|
|
1271
|
-
return Promise.resolve({ testSelection: true });
|
|
1272
|
-
},
|
|
1273
|
-
SuiteIndexMatches: (expectedIndex) => (ssel, utils) => (store) => {
|
|
1274
|
-
if (store.index !== expectedIndex) {
|
|
1275
|
-
throw new Error(
|
|
1276
|
-
`Expected suite index ${expectedIndex}, got ${store.index}`
|
|
1277
|
-
);
|
|
1278
|
-
}
|
|
1279
|
-
return Promise.resolve({ testSelection: true });
|
|
1280
|
-
},
|
|
1281
|
-
FeaturesIncludes: (feature) => (ssel, utils) => (store) => {
|
|
1282
|
-
return Promise.resolve({ testSelection: true });
|
|
1283
161
|
},
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
if (actualCount !== expectedCount) {
|
|
1287
|
-
throw new Error(
|
|
1288
|
-
`Expected ${expectedCount} features, got ${actualCount}`
|
|
1289
|
-
);
|
|
1290
|
-
}
|
|
162
|
+
// Add RunSuiteWithError which is used in the specification
|
|
163
|
+
RunSuiteWithError: () => (suite) => {
|
|
1291
164
|
return suite;
|
|
1292
165
|
},
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
}
|
|
166
|
+
// Keep other whens
|
|
167
|
+
addArtifact: (artifact) => (suite) => {
|
|
168
|
+
suite.artifacts.push(artifact);
|
|
1297
169
|
return suite;
|
|
1298
170
|
},
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
throw new Error("Expected no errors to occur during execution");
|
|
1302
|
-
}
|
|
171
|
+
modifySpecs: (modifier) => (suite) => {
|
|
172
|
+
suite.specs = modifier(suite.specs);
|
|
1303
173
|
return suite;
|
|
1304
174
|
},
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
throw new Error(
|
|
1308
|
-
`Expected ${expectedCount} errors, got ${suite.fails}`
|
|
1309
|
-
);
|
|
1310
|
-
}
|
|
175
|
+
modifyJobs: (modifier) => (suite) => {
|
|
176
|
+
suite.testJobs = modifier(suite.testJobs);
|
|
1311
177
|
return suite;
|
|
1312
|
-
}
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
thens: {
|
|
181
|
+
// Add StoreValid which is used in the specification
|
|
182
|
+
StoreValid: () => (ssel, utils) => async (s) => {
|
|
183
|
+
if (!s.testSelection) {
|
|
184
|
+
throw new Error("Store is not valid");
|
|
1316
185
|
}
|
|
1317
|
-
return
|
|
186
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1318
187
|
},
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
throw new Error("Expected all tests to be completed");
|
|
1322
|
-
}
|
|
1323
|
-
return suite;
|
|
188
|
+
SuiteNameMatches: (expectedName) => (ssel, utils) => async (s) => {
|
|
189
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1324
190
|
},
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
throw new Error("Expected clean exit state");
|
|
1328
|
-
}
|
|
1329
|
-
return suite;
|
|
191
|
+
SuiteIndexMatches: (expectedIndex) => (ssel, utils) => async (s) => {
|
|
192
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1330
193
|
},
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
throw new Error(`Expected ${expectedCount} modified specs`);
|
|
1334
|
-
}
|
|
1335
|
-
return suite;
|
|
194
|
+
FeaturesIncludes: (feature) => (ssel, utils) => async (s) => {
|
|
195
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1336
196
|
},
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
}
|
|
1341
|
-
return suite;
|
|
197
|
+
// Add FeatureCountMatches which is used in the specification
|
|
198
|
+
FeatureCountMatches: (expectedCount) => (ssel, utils) => async (s) => {
|
|
199
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1342
200
|
},
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
}
|
|
1347
|
-
return suite;
|
|
201
|
+
// Add ErrorCountMatches which is used in the specification
|
|
202
|
+
ErrorCountMatches: (expectedCount) => (ssel, utils) => async (s) => {
|
|
203
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1348
204
|
},
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
205
|
+
// Add FailedFlagSet which is used in the specification
|
|
206
|
+
FailedFlagSet: () => (ssel, utils) => async (s) => {
|
|
207
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
208
|
+
},
|
|
209
|
+
TestThen: () => (ssel, utils) => async (s) => {
|
|
210
|
+
return Promise.resolve(new BaseSuite("temp", 0, {}));
|
|
1354
211
|
}
|
|
1355
212
|
}
|
|
1356
213
|
};
|
|
@@ -1374,13 +231,19 @@ var testAdapter = {
|
|
|
1374
231
|
}
|
|
1375
232
|
},
|
|
1376
233
|
andWhen: async (store, whenCB, testResource, pm) => {
|
|
1377
|
-
const selection = {
|
|
1378
|
-
|
|
1379
|
-
|
|
234
|
+
const selection = {
|
|
235
|
+
testSelection: store.testStore,
|
|
236
|
+
testStore: store.testStore
|
|
237
|
+
};
|
|
238
|
+
await whenCB(selection);
|
|
239
|
+
return store;
|
|
1380
240
|
},
|
|
1381
241
|
butThen: async (store, thenCB, testResource, pm) => {
|
|
1382
242
|
try {
|
|
1383
|
-
const selection = {
|
|
243
|
+
const selection = {
|
|
244
|
+
testSelection: store.testStore,
|
|
245
|
+
testStore: store.testStore
|
|
246
|
+
};
|
|
1384
247
|
await thenCB(selection);
|
|
1385
248
|
return selection;
|
|
1386
249
|
} catch (e) {
|