@thinkwise/testwise 0.2.62 → 0.2.99
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/Testwise.ts +35 -0
- package/artifact-builder/ArtifactManager.ts +25 -2
- package/artifact-builder/ComponentClassModelBuilder.ts +148 -0
- package/artifact-builder/InterfaceGenerator.ts +31 -33
- package/artifact-builder/ModelDataBuilder.ts +18 -20
- package/artifact-builder/ModelDataRefiner.ts +23 -3
- package/artifact-builder/SchemaGenerator.ts +45 -35
- package/artifact-builder/ScreenInterfaceRefiner.ts +25 -10
- package/artifact-builder/SelectorBuilder.ts +30 -24
- package/artifact-builder/SubjectClassModelBuilder.ts +209 -0
- package/artifact-builder/SubjectComponentGenerator.ts +67 -246
- package/artifact-builder/SubjectGenerator.ts +117 -230
- package/artifact-builder/SubjectRegistration.ts +41 -32
- package/artifact-builder/TsFileModel.ts +94 -0
- package/artifact-builder/TsFileSerializer.ts +247 -0
- package/artifact-builder/helpers/DataRetriever.ts +64 -27
- package/artifact-builder/helpers/NamingHandler.ts +23 -78
- package/artifact-builder/helpers/PipelinePaths.ts +123 -0
- package/artifact-builder/helpers/Stopwatch.ts +10 -0
- package/artifact-builder/helpers/index.ts +1 -0
- package/artifact-builder/index.ts +4 -0
- package/components/BaseComponentObjects.ts +17 -0
- package/components/action-bar/ActionBar.ts +35 -47
- package/components/action-bar/ActionBarObjects.ts +2 -0
- package/components/action-bar/CustomActionBar.ts +6 -0
- package/components/cardlist/Cardlist.ts +6 -0
- package/components/chart/Chart.ts +6 -0
- package/components/combined-filter/CombinedFilter.ts +9 -0
- package/components/cube-view-bar/CubeViewBar.ts +6 -0
- package/components/export/ExportComponent.ts +12 -0
- package/components/filter/ExcelStyleFilterPopup.ts +83 -10
- package/components/filter/ExcelStyleFilterPopupObjects.ts +29 -3
- package/components/filter/FilterForm.ts +10 -0
- package/components/filter/FilterPopup.ts +30 -9
- package/components/filter/FilterPopupObjects.ts +10 -3
- package/components/filter/FindForm.ts +7 -0
- package/components/filter/ManagePrefilterPopup.ts +11 -0
- package/components/form/Form.ts +16 -0
- package/components/grid/Grid.ts +50 -14
- package/components/grid/GridObjects.ts +0 -15
- package/components/maps/Maps.ts +6 -0
- package/components/menu/ListBarMenuComponent.ts +10 -0
- package/components/pivot-grid/PivotGrid.ts +6 -0
- package/components/pivot-grid/PivotGridFieldList.ts +7 -0
- package/components/pop-up/AllRowsPopUp.ts +12 -0
- package/components/pop-up/PopUpComponent.ts +11 -0
- package/components/prefilter-list/PrefilterList.ts +9 -0
- package/components/preview/Preview.ts +6 -0
- package/components/report-bar/ReportBar.ts +6 -0
- package/components/report-tiles/ReportTiles.ts +6 -0
- package/components/scheduler/Scheduler.ts +6 -0
- package/components/snackbar/SnackBar.ts +12 -0
- package/components/splitter/Splitter.ts +6 -0
- package/components/tab/BaseTab.ts +5 -0
- package/components/tab/DetailTabPage.ts +11 -0
- package/components/tab/Tab.ts +10 -0
- package/components/task/TaskBar.ts +13 -3
- package/components/task/TaskTiles.ts +12 -3
- package/components/topbar/TopBar.ts +10 -0
- package/components/tree-view/TreeView.ts +9 -0
- package/controls/DateControl.ts +47 -9
- package/controls/DateControlObjects.ts +15 -0
- package/controls/FormComboBox.ts +43 -26
- package/controls/FormComboBoxObjects.ts +27 -0
- package/controls/GridColumnControl.ts +35 -4
- package/controls/GridColumnControlObjects.ts +1 -1
- package/controls/InputFieldControl.ts +61 -15
- package/controls/InputFieldControlObjects.ts +19 -0
- package/controls/LookupDropdown.ts +59 -31
- package/controls/LookupDropdownObjects.ts +19 -0
- package/dist/Testwise.js +35 -0
- package/dist/Testwise.js.map +1 -1
- package/dist/artifact-builder/ArtifactManager.d.ts +18 -1
- package/dist/artifact-builder/ArtifactManager.js +24 -2
- package/dist/artifact-builder/ArtifactManager.js.map +1 -1
- package/dist/artifact-builder/ComponentClassModelBuilder.d.ts +22 -0
- package/dist/artifact-builder/ComponentClassModelBuilder.js +115 -0
- package/dist/artifact-builder/ComponentClassModelBuilder.js.map +1 -0
- package/dist/artifact-builder/InterfaceGenerator.d.ts +15 -6
- package/dist/artifact-builder/InterfaceGenerator.js +27 -26
- package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
- package/dist/artifact-builder/ModelDataBuilder.d.ts +7 -0
- package/dist/artifact-builder/ModelDataBuilder.js +13 -5
- package/dist/artifact-builder/ModelDataBuilder.js.map +1 -1
- package/dist/artifact-builder/ModelDataRefiner.d.ts +18 -1
- package/dist/artifact-builder/ModelDataRefiner.js +18 -3
- package/dist/artifact-builder/ModelDataRefiner.js.map +1 -1
- package/dist/artifact-builder/SchemaGenerator.d.ts +21 -5
- package/dist/artifact-builder/SchemaGenerator.js +38 -26
- package/dist/artifact-builder/SchemaGenerator.js.map +1 -1
- package/dist/artifact-builder/ScreenInterfaceRefiner.d.ts +18 -1
- package/dist/artifact-builder/ScreenInterfaceRefiner.js +23 -9
- package/dist/artifact-builder/ScreenInterfaceRefiner.js.map +1 -1
- package/dist/artifact-builder/SelectorBuilder.d.ts +18 -5
- package/dist/artifact-builder/SelectorBuilder.js +29 -14
- package/dist/artifact-builder/SelectorBuilder.js.map +1 -1
- package/dist/artifact-builder/SubjectClassModelBuilder.d.ts +38 -0
- package/dist/artifact-builder/SubjectClassModelBuilder.js +158 -0
- package/dist/artifact-builder/SubjectClassModelBuilder.js.map +1 -0
- package/dist/artifact-builder/SubjectComponentGenerator.d.ts +25 -14
- package/dist/artifact-builder/SubjectComponentGenerator.js +65 -189
- package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectGenerator.d.ts +32 -13
- package/dist/artifact-builder/SubjectGenerator.js +81 -165
- package/dist/artifact-builder/SubjectGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectRegistration.d.ts +22 -8
- package/dist/artifact-builder/SubjectRegistration.js +29 -14
- package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
- package/dist/artifact-builder/TsFileModel.d.ts +86 -0
- package/dist/artifact-builder/TsFileModel.js +2 -0
- package/dist/artifact-builder/TsFileModel.js.map +1 -0
- package/dist/artifact-builder/TsFileSerializer.d.ts +19 -0
- package/dist/artifact-builder/TsFileSerializer.js +225 -0
- package/dist/artifact-builder/TsFileSerializer.js.map +1 -0
- package/dist/artifact-builder/helpers/DataRetriever.d.ts +22 -3
- package/dist/artifact-builder/helpers/DataRetriever.js +56 -26
- package/dist/artifact-builder/helpers/DataRetriever.js.map +1 -1
- package/dist/artifact-builder/helpers/NamingHandler.d.ts +18 -6
- package/dist/artifact-builder/helpers/NamingHandler.js +20 -61
- package/dist/artifact-builder/helpers/NamingHandler.js.map +1 -1
- package/dist/artifact-builder/helpers/PipelinePaths.d.ts +52 -0
- package/dist/artifact-builder/helpers/PipelinePaths.js +99 -0
- package/dist/artifact-builder/helpers/PipelinePaths.js.map +1 -0
- package/dist/artifact-builder/helpers/Stopwatch.d.ts +10 -0
- package/dist/artifact-builder/helpers/Stopwatch.js +10 -0
- package/dist/artifact-builder/helpers/Stopwatch.js.map +1 -1
- package/dist/artifact-builder/helpers/index.d.ts +1 -0
- package/dist/artifact-builder/helpers/index.js +1 -0
- package/dist/artifact-builder/helpers/index.js.map +1 -1
- package/dist/artifact-builder/index.d.ts +4 -0
- package/dist/artifact-builder/index.js +4 -0
- package/dist/artifact-builder/index.js.map +1 -1
- package/dist/components/BaseComponentObjects.d.ts +17 -0
- package/dist/components/BaseComponentObjects.js +17 -0
- package/dist/components/BaseComponentObjects.js.map +1 -1
- package/dist/components/action-bar/ActionBar.d.ts +21 -24
- package/dist/components/action-bar/ActionBar.js +31 -24
- package/dist/components/action-bar/ActionBar.js.map +1 -1
- package/dist/components/action-bar/ActionBarObjects.d.ts +1 -0
- package/dist/components/action-bar/ActionBarObjects.js +1 -0
- package/dist/components/action-bar/ActionBarObjects.js.map +1 -1
- package/dist/components/action-bar/CustomActionBar.d.ts +6 -0
- package/dist/components/action-bar/CustomActionBar.js +6 -0
- package/dist/components/action-bar/CustomActionBar.js.map +1 -1
- package/dist/components/cardlist/Cardlist.d.ts +6 -0
- package/dist/components/cardlist/Cardlist.js +6 -0
- package/dist/components/cardlist/Cardlist.js.map +1 -1
- package/dist/components/chart/Chart.d.ts +6 -0
- package/dist/components/chart/Chart.js +6 -0
- package/dist/components/chart/Chart.js.map +1 -1
- package/dist/components/combined-filter/CombinedFilter.d.ts +9 -0
- package/dist/components/combined-filter/CombinedFilter.js +9 -0
- package/dist/components/combined-filter/CombinedFilter.js.map +1 -1
- package/dist/components/cube-view-bar/CubeViewBar.d.ts +6 -0
- package/dist/components/cube-view-bar/CubeViewBar.js +6 -0
- package/dist/components/cube-view-bar/CubeViewBar.js.map +1 -1
- package/dist/components/export/ExportComponent.d.ts +12 -0
- package/dist/components/export/ExportComponent.js +12 -0
- package/dist/components/export/ExportComponent.js.map +1 -1
- package/dist/components/filter/ExcelStyleFilterPopup.d.ts +25 -2
- package/dist/components/filter/ExcelStyleFilterPopup.js +60 -6
- package/dist/components/filter/ExcelStyleFilterPopup.js.map +1 -1
- package/dist/components/filter/ExcelStyleFilterPopupObjects.d.ts +8 -1
- package/dist/components/filter/ExcelStyleFilterPopupObjects.js +15 -2
- package/dist/components/filter/ExcelStyleFilterPopupObjects.js.map +1 -1
- package/dist/components/filter/FilterForm.d.ts +10 -0
- package/dist/components/filter/FilterForm.js +10 -0
- package/dist/components/filter/FilterForm.js.map +1 -1
- package/dist/components/filter/FilterPopup.d.ts +22 -4
- package/dist/components/filter/FilterPopup.js +17 -9
- package/dist/components/filter/FilterPopup.js.map +1 -1
- package/dist/components/filter/FilterPopupObjects.d.ts +5 -2
- package/dist/components/filter/FilterPopupObjects.js +5 -2
- package/dist/components/filter/FilterPopupObjects.js.map +1 -1
- package/dist/components/filter/FindForm.d.ts +7 -0
- package/dist/components/filter/FindForm.js +7 -0
- package/dist/components/filter/FindForm.js.map +1 -1
- package/dist/components/filter/ManagePrefilterPopup.d.ts +11 -0
- package/dist/components/filter/ManagePrefilterPopup.js +11 -0
- package/dist/components/filter/ManagePrefilterPopup.js.map +1 -1
- package/dist/components/form/Form.d.ts +16 -0
- package/dist/components/form/Form.js +16 -0
- package/dist/components/form/Form.js.map +1 -1
- package/dist/components/grid/Grid.d.ts +20 -1
- package/dist/components/grid/Grid.js +35 -25
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/GridObjects.d.ts +0 -4
- package/dist/components/grid/GridObjects.js +0 -6
- package/dist/components/grid/GridObjects.js.map +1 -1
- package/dist/components/maps/Maps.d.ts +6 -0
- package/dist/components/maps/Maps.js +6 -0
- package/dist/components/maps/Maps.js.map +1 -1
- package/dist/components/menu/ListBarMenuComponent.d.ts +10 -0
- package/dist/components/menu/ListBarMenuComponent.js +10 -0
- package/dist/components/menu/ListBarMenuComponent.js.map +1 -1
- package/dist/components/pivot-grid/PivotGrid.d.ts +6 -0
- package/dist/components/pivot-grid/PivotGrid.js +6 -0
- package/dist/components/pivot-grid/PivotGrid.js.map +1 -1
- package/dist/components/pivot-grid/PivotGridFieldList.d.ts +7 -0
- package/dist/components/pivot-grid/PivotGridFieldList.js +7 -0
- package/dist/components/pivot-grid/PivotGridFieldList.js.map +1 -1
- package/dist/components/pop-up/AllRowsPopUp.d.ts +12 -0
- package/dist/components/pop-up/AllRowsPopUp.js +12 -0
- package/dist/components/pop-up/AllRowsPopUp.js.map +1 -1
- package/dist/components/pop-up/PopUpComponent.d.ts +11 -0
- package/dist/components/pop-up/PopUpComponent.js +11 -0
- package/dist/components/pop-up/PopUpComponent.js.map +1 -1
- package/dist/components/prefilter-list/PrefilterList.d.ts +9 -0
- package/dist/components/prefilter-list/PrefilterList.js +9 -0
- package/dist/components/prefilter-list/PrefilterList.js.map +1 -1
- package/dist/components/preview/Preview.d.ts +6 -0
- package/dist/components/preview/Preview.js +6 -0
- package/dist/components/preview/Preview.js.map +1 -1
- package/dist/components/report-bar/ReportBar.d.ts +6 -0
- package/dist/components/report-bar/ReportBar.js +6 -0
- package/dist/components/report-bar/ReportBar.js.map +1 -1
- package/dist/components/report-tiles/ReportTiles.d.ts +6 -0
- package/dist/components/report-tiles/ReportTiles.js +6 -0
- package/dist/components/report-tiles/ReportTiles.js.map +1 -1
- package/dist/components/scheduler/Scheduler.d.ts +6 -0
- package/dist/components/scheduler/Scheduler.js +6 -0
- package/dist/components/scheduler/Scheduler.js.map +1 -1
- package/dist/components/snackbar/SnackBar.d.ts +12 -0
- package/dist/components/snackbar/SnackBar.js +12 -0
- package/dist/components/snackbar/SnackBar.js.map +1 -1
- package/dist/components/splitter/Splitter.d.ts +6 -0
- package/dist/components/splitter/Splitter.js +6 -0
- package/dist/components/splitter/Splitter.js.map +1 -1
- package/dist/components/tab/BaseTab.d.ts +5 -0
- package/dist/components/tab/BaseTab.js +5 -0
- package/dist/components/tab/BaseTab.js.map +1 -1
- package/dist/components/tab/DetailTabPage.d.ts +11 -0
- package/dist/components/tab/DetailTabPage.js +11 -0
- package/dist/components/tab/DetailTabPage.js.map +1 -1
- package/dist/components/tab/Tab.d.ts +10 -0
- package/dist/components/tab/Tab.js +10 -0
- package/dist/components/tab/Tab.js.map +1 -1
- package/dist/components/task/TaskBar.d.ts +12 -2
- package/dist/components/task/TaskBar.js +13 -3
- package/dist/components/task/TaskBar.js.map +1 -1
- package/dist/components/task/TaskTiles.d.ts +11 -2
- package/dist/components/task/TaskTiles.js +12 -3
- package/dist/components/task/TaskTiles.js.map +1 -1
- package/dist/components/topbar/TopBar.d.ts +10 -0
- package/dist/components/topbar/TopBar.js +10 -0
- package/dist/components/topbar/TopBar.js.map +1 -1
- package/dist/components/tree-view/TreeView.d.ts +9 -0
- package/dist/components/tree-view/TreeView.js +9 -0
- package/dist/components/tree-view/TreeView.js.map +1 -1
- package/dist/controls/DateControl.d.ts +40 -2
- package/dist/controls/DateControl.js +24 -7
- package/dist/controls/DateControl.js.map +1 -1
- package/dist/controls/DateControlObjects.d.ts +8 -1
- package/dist/controls/DateControlObjects.js +8 -1
- package/dist/controls/DateControlObjects.js.map +1 -1
- package/dist/controls/FormComboBox.d.ts +30 -0
- package/dist/controls/FormComboBox.js +19 -16
- package/dist/controls/FormComboBox.js.map +1 -1
- package/dist/controls/FormComboBoxObjects.d.ts +12 -1
- package/dist/controls/FormComboBoxObjects.js +15 -1
- package/dist/controls/FormComboBoxObjects.js.map +1 -1
- package/dist/controls/GridColumnControl.d.ts +30 -0
- package/dist/controls/GridColumnControl.js +13 -4
- package/dist/controls/GridColumnControl.js.map +1 -1
- package/dist/controls/GridColumnControlObjects.js +1 -1
- package/dist/controls/GridColumnControlObjects.js.map +1 -1
- package/dist/controls/InputFieldControl.d.ts +50 -3
- package/dist/controls/InputFieldControl.js +40 -11
- package/dist/controls/InputFieldControl.js.map +1 -1
- package/dist/controls/InputFieldControlObjects.d.ts +10 -1
- package/dist/controls/InputFieldControlObjects.js +10 -1
- package/dist/controls/InputFieldControlObjects.js.map +1 -1
- package/dist/controls/LookupDropdown.d.ts +29 -0
- package/dist/controls/LookupDropdown.js +36 -25
- package/dist/controls/LookupDropdown.js.map +1 -1
- package/dist/controls/LookupDropdownObjects.d.ts +10 -0
- package/dist/controls/LookupDropdownObjects.js +11 -0
- package/dist/controls/LookupDropdownObjects.js.map +1 -0
- package/dist/enums/ElementTypes.d.ts +18 -0
- package/dist/enums/ElementTypes.js +18 -0
- package/dist/enums/ElementTypes.js.map +1 -1
- package/dist/enums/ExportFormat.d.ts +8 -0
- package/dist/enums/ExportFormat.js +8 -0
- package/dist/enums/ExportFormat.js.map +1 -1
- package/dist/enums/LogLevel.d.ts +17 -0
- package/dist/enums/LogLevel.js +17 -1
- package/dist/enums/LogLevel.js.map +1 -1
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.js +1 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/helpers/ConfigChecker.d.ts +13 -0
- package/dist/helpers/ConfigChecker.js +13 -0
- package/dist/helpers/ConfigChecker.js.map +1 -1
- package/dist/helpers/Ensure.d.ts +13 -0
- package/dist/helpers/Ensure.js +13 -0
- package/dist/helpers/Ensure.js.map +1 -1
- package/dist/helpers/FlightTracker.d.ts +13 -3
- package/dist/helpers/FlightTracker.js +103 -17
- package/dist/helpers/FlightTracker.js.map +1 -1
- package/dist/helpers/GlobalWaitEventHandler.d.ts +13 -0
- package/dist/helpers/GlobalWaitEventHandler.js +13 -0
- package/dist/helpers/GlobalWaitEventHandler.js.map +1 -1
- package/dist/helpers/LoginHelper.d.ts +35 -1
- package/dist/helpers/LoginHelper.js +46 -11
- package/dist/helpers/LoginHelper.js.map +1 -1
- package/dist/helpers/PathResolver.d.ts +22 -0
- package/dist/helpers/PathResolver.js +22 -0
- package/dist/helpers/PathResolver.js.map +1 -1
- package/dist/helpers/Poll.d.ts +13 -1
- package/dist/helpers/Poll.js +12 -0
- package/dist/helpers/Poll.js.map +1 -1
- package/dist/helpers/RegexHelper.d.ts +15 -0
- package/dist/helpers/RegexHelper.js +15 -3
- package/dist/helpers/RegexHelper.js.map +1 -1
- package/dist/helpers/SubjectNavigator.d.ts +26 -0
- package/dist/helpers/SubjectNavigator.js +51 -0
- package/dist/helpers/SubjectNavigator.js.map +1 -0
- package/dist/helpers/UserSimulationHelper.d.ts +14 -0
- package/dist/helpers/UserSimulationHelper.js +14 -0
- package/dist/helpers/UserSimulationHelper.js.map +1 -1
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.d.ts +6 -20
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IComponentObjects.d.ts +12 -0
- package/dist/interfaces/IComponentSchemaMeta.d.ts +15 -0
- package/dist/interfaces/IComponentSchemaMeta.js +2 -0
- package/dist/interfaces/IComponentSchemaMeta.js.map +1 -0
- package/dist/interfaces/IProperty.d.ts +13 -0
- package/dist/interfaces/IRegisteredSubjects.d.ts +12 -0
- package/dist/interfaces/ISeedSubjectDraft.d.ts +16 -0
- package/dist/interfaces/ISeedSubjectDraft.js +2 -0
- package/dist/interfaces/ISeedSubjectDraft.js.map +1 -0
- package/dist/interfaces/ISubject.d.ts +13 -0
- package/dist/interfaces/ISubjectDetail.d.ts +11 -0
- package/dist/interfaces/ISubjectDetail.js +2 -0
- package/dist/interfaces/ISubjectDetail.js.map +1 -0
- package/dist/mcp/ArtifactResolver.d.ts +152 -0
- package/dist/mcp/ArtifactResolver.js +232 -0
- package/dist/mcp/ArtifactResolver.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/page-extensions/GlobalComponents.d.ts +30 -0
- package/dist/page-extensions/GlobalComponents.js +30 -0
- package/dist/page-extensions/GlobalComponents.js.map +1 -1
- package/dist/page-extensions/GoToDeepLink.d.ts +9 -0
- package/dist/page-extensions/GoToDeepLink.js +9 -0
- package/dist/page-extensions/GoToDeepLink.js.map +1 -1
- package/dist/page-extensions/LoginFeatures.d.ts +8 -0
- package/dist/page-extensions/LoginFeatures.js +8 -0
- package/dist/page-extensions/LoginFeatures.js.map +1 -1
- package/dist/page-extensions/SubjectRegistry.d.ts +31 -0
- package/dist/page-extensions/SubjectRegistry.js +31 -0
- package/dist/page-extensions/SubjectRegistry.js.map +1 -1
- package/dist/page-extensions/UserSimulation.d.ts +21 -0
- package/dist/page-extensions/UserSimulation.js +21 -0
- package/dist/page-extensions/UserSimulation.js.map +1 -1
- package/dist/page-extensions/WaitEventHandler.d.ts +20 -0
- package/dist/page-extensions/WaitEventHandler.js +20 -0
- package/dist/page-extensions/WaitEventHandler.js.map +1 -1
- package/dist/page-overrides/ClickOverride.d.ts +23 -2
- package/dist/page-overrides/ClickOverride.js +34 -50
- package/dist/page-overrides/ClickOverride.js.map +1 -1
- package/dist/page-overrides/FillOverride.d.ts +23 -0
- package/dist/page-overrides/FillOverride.js +46 -66
- package/dist/page-overrides/FillOverride.js.map +1 -1
- package/dist/services/ConfigBuilder.d.ts +24 -0
- package/dist/services/ConfigBuilder.js +24 -0
- package/dist/services/ConfigBuilder.js.map +1 -1
- package/dist/services/IndiciumApi.service.d.ts +26 -0
- package/dist/services/IndiciumApi.service.js +40 -5
- package/dist/services/IndiciumApi.service.js.map +1 -1
- package/dist/services/Logger.d.ts +13 -0
- package/dist/services/Logger.js +39 -0
- package/dist/services/Logger.js.map +1 -1
- package/dist/types/Components.d.ts +18 -1
- package/dist/types/Components.js +0 -1
- package/dist/types/Components.js.map +1 -1
- package/dist/types/LocatorType.d.ts +5 -0
- package/dist/types/LocatorType.js +2 -0
- package/dist/types/LocatorType.js.map +1 -0
- package/dist/types/PollTypes.d.ts +8 -0
- package/dist/types/Test.d.ts +18 -0
- package/dist/types/Universal.d.ts +12 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/enums/ElementTypes.ts +18 -0
- package/enums/ExportFormat.ts +8 -0
- package/enums/LogLevel.ts +17 -1
- package/enums/index.ts +1 -0
- package/helpers/ConfigChecker.ts +13 -0
- package/helpers/Ensure.ts +13 -0
- package/helpers/FlightTracker.ts +109 -20
- package/helpers/GlobalWaitEventHandler.ts +13 -0
- package/helpers/LoginHelper.ts +49 -12
- package/helpers/PathResolver.ts +22 -0
- package/helpers/Poll.ts +13 -1
- package/helpers/RegexHelper.ts +15 -3
- package/helpers/SubjectNavigator.ts +57 -0
- package/helpers/UserSimulationHelper.ts +14 -0
- package/helpers/index.ts +1 -0
- package/index.ts +1 -0
- package/interfaces/IComponentObjects.ts +12 -0
- package/interfaces/IComponentSchemaMeta.ts +17 -0
- package/interfaces/IProperty.ts +13 -0
- package/interfaces/IRegisteredSubjects.ts +12 -0
- package/interfaces/ISeedSubjectDraft.ts +17 -0
- package/interfaces/ISubject.ts +13 -0
- package/interfaces/ISubjectDetail.ts +12 -0
- package/mcp/ArtifactResolver.ts +296 -0
- package/mcp/index.ts +2 -0
- package/package.json +20 -8
- package/page-extensions/GlobalComponents.ts +30 -0
- package/page-extensions/GoToDeepLink.ts +9 -0
- package/page-extensions/LoginFeatures.ts +8 -0
- package/page-extensions/SubjectRegistry.ts +32 -0
- package/page-extensions/UserSimulation.ts +21 -0
- package/page-extensions/WaitEventHandler.ts +20 -0
- package/page-overrides/ClickOverride.ts +36 -55
- package/page-overrides/FillOverride.ts +59 -73
- package/promptCredentials.js +1 -1
- package/scripts/Testwise.template.json +1 -1
- package/scripts/diagram.js +2267 -0
- package/scripts/main.js +84 -63
- package/scripts/postinstall.js +55 -42
- package/scripts/setup.js +91 -37
- package/scripts/sync.js +767 -748
- package/services/ConfigBuilder.ts +24 -0
- package/services/IndiciumApi.service.ts +44 -6
- package/services/Logger.ts +40 -0
- package/templates/copilot-instructions.md +130 -0
- package/templates/mcp.json +9 -0
- package/templates/testwise-test-expert.agent.md +453 -0
- package/tests/tsconfig.json +12 -0
- package/tsconfig.json +6 -2
- package/types/Components.ts +17 -2
- package/types/LocatorType.ts +5 -0
- package/types/PollTypes.ts +8 -0
- package/types/Test.ts +18 -0
- package/types/Universal.ts +12 -0
- package/types/index.ts +2 -0
- package/dist/interfaces/IStoredTestResults.d.ts +0 -5
- package/dist/interfaces/IStoredTestResults.js +0 -2
- package/dist/interfaces/IStoredTestResults.js.map +0 -1
- package/dist/templates/test-artifacts/SubjectPageBase.d.ts +0 -5
- package/dist/templates/test-artifacts/SubjectPageBase.js +0 -6
- package/dist/templates/test-artifacts/SubjectPageBase.js.map +0 -1
- package/dist/templates/test-artifacts/screens/index.d.ts +0 -1
- package/dist/templates/test-artifacts/screens/index.js +0 -2
- package/dist/templates/test-artifacts/screens/index.js.map +0 -1
- package/dist/templates/test-artifacts/subjects/index.d.ts +0 -1
- package/dist/templates/test-artifacts/subjects/index.js +0 -2
- package/dist/templates/test-artifacts/subjects/index.js.map +0 -1
- package/interfaces/IStoredTestResults.ts +0 -6
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { KnownElementTypes } from '../enums/ElementTypes.js';
|
|
2
|
+
/**
|
|
3
|
+
* **Pipeline sub-step** — Builds a pure in-memory model (`ComponentClassModel`)
|
|
4
|
+
* for the typed component class appended to a generated screen interface file
|
|
5
|
+
* (e.g. `EmployeeForm`, `EmployeeGrid`). Contains no file I/O — fully unit-testable.
|
|
6
|
+
*/
|
|
7
|
+
export class ComponentClassModelBuilder {
|
|
8
|
+
constructor(namingHandler, selectorBuilder) {
|
|
9
|
+
this._namingHandler = namingHandler;
|
|
10
|
+
this._selectorBuilder = selectorBuilder;
|
|
11
|
+
}
|
|
12
|
+
build(interfaceName, componentType, propertyLines, meta) {
|
|
13
|
+
if (componentType === 'Grid') {
|
|
14
|
+
return {
|
|
15
|
+
interfaceName,
|
|
16
|
+
componentType,
|
|
17
|
+
properties: [],
|
|
18
|
+
assignments: [],
|
|
19
|
+
getters: this.buildGetters(propertyLines, meta)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
interfaceName,
|
|
24
|
+
componentType,
|
|
25
|
+
properties: this.buildProperties(propertyLines, meta),
|
|
26
|
+
assignments: this.buildAssignments(propertyLines, meta),
|
|
27
|
+
getters: []
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
buildGetters(propertyLines, meta) {
|
|
31
|
+
return propertyLines.map((line) => {
|
|
32
|
+
const property = line.replace('readonly', '').split(':')[0].trim();
|
|
33
|
+
const colId = meta.properties[this._namingHandler.toSnakeCase(property)]?.colId ??
|
|
34
|
+
this.getColIdFromPropertyName(property, 'Grid');
|
|
35
|
+
const columnId = this._selectorBuilder.getElementId(colId, 'Grid');
|
|
36
|
+
return {
|
|
37
|
+
name: property,
|
|
38
|
+
returnType: 'IGridColumnControl',
|
|
39
|
+
bodyLine: `return createGridColumnControl(this._context, '${columnId}');`
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
buildProperties(propertyLines, meta) {
|
|
44
|
+
return propertyLines.map((line) => {
|
|
45
|
+
const property = line.replace(/^\s+/, '').split(':')[0].replace(/\?$/, '').trim();
|
|
46
|
+
return { name: property, type: this.resolvePropertyType(property, meta) };
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
buildAssignments(propertyLines, meta) {
|
|
50
|
+
return propertyLines.map((line) => {
|
|
51
|
+
const property = line.split(':')[0].replace(/\?$/, '').trim();
|
|
52
|
+
const snakeKey = this._namingHandler.toSnakeCase(property);
|
|
53
|
+
const propMeta = meta.properties[snakeKey];
|
|
54
|
+
const colId = propMeta?.colId ?? this.getColIdFromPropertyName(property, meta.componentType);
|
|
55
|
+
const elementType = propMeta?.elementType ?? this.getElementTypeFromPropertyName(property);
|
|
56
|
+
if (meta.componentType === 'Form') {
|
|
57
|
+
const elementId = this._selectorBuilder.getElementId(colId, 'Form');
|
|
58
|
+
switch (elementType) {
|
|
59
|
+
case KnownElementTypes.Lookup:
|
|
60
|
+
return { property, value: `createLookupDropdown(this._context, '${elementId}')` };
|
|
61
|
+
case KnownElementTypes.DatePicker:
|
|
62
|
+
return { property, value: `createDateControl(this._context, '${elementId}')` };
|
|
63
|
+
case KnownElementTypes.ComboBox:
|
|
64
|
+
return { property, value: `createFormComboBox(this._context, '${elementId}')` };
|
|
65
|
+
case KnownElementTypes.Field:
|
|
66
|
+
return { property, value: `createInputFieldControl(this._context, '${elementId}')` };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const pageLocatorString = this._selectorBuilder.getLocatorString(colId, elementType ?? '', meta.componentType);
|
|
70
|
+
return { property, value: pageLocatorString };
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
resolvePropertyType(property, meta) {
|
|
74
|
+
if (meta.componentType === 'Form') {
|
|
75
|
+
const elementType = meta.properties[this._namingHandler.toSnakeCase(property)]?.elementType ??
|
|
76
|
+
this.getElementTypeFromPropertyName(property);
|
|
77
|
+
switch (elementType) {
|
|
78
|
+
case KnownElementTypes.Lookup:
|
|
79
|
+
return 'ILookupDropdown';
|
|
80
|
+
case KnownElementTypes.ComboBox:
|
|
81
|
+
return 'IFormComboBox';
|
|
82
|
+
case KnownElementTypes.Field:
|
|
83
|
+
return 'IInputFieldControl';
|
|
84
|
+
case KnownElementTypes.DatePicker:
|
|
85
|
+
return 'IDateControl';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return 'Locator';
|
|
89
|
+
}
|
|
90
|
+
getElementTypeFromPropertyName(property) {
|
|
91
|
+
if (property.endsWith('Lookup'))
|
|
92
|
+
return KnownElementTypes.Lookup;
|
|
93
|
+
if (property.endsWith('DatePicker'))
|
|
94
|
+
return KnownElementTypes.DatePicker;
|
|
95
|
+
if (property.endsWith('ComboBox'))
|
|
96
|
+
return KnownElementTypes.ComboBox;
|
|
97
|
+
if (property.endsWith('Field'))
|
|
98
|
+
return KnownElementTypes.Field;
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
getColIdFromPropertyName(property, componentType) {
|
|
102
|
+
const snakeName = this._namingHandler.toSnakeCase(property);
|
|
103
|
+
if (componentType === 'Grid') {
|
|
104
|
+
return snakeName.replace(/_column$/, '');
|
|
105
|
+
}
|
|
106
|
+
const formSuffixes = ['_lookup', '_date_picker', '_combo_box', '_dropdown', '_field', '_checkbox', '_textarea'];
|
|
107
|
+
for (const suffix of formSuffixes) {
|
|
108
|
+
if (snakeName.endsWith(suffix)) {
|
|
109
|
+
return snakeName.slice(0, -suffix.length);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return snakeName;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=ComponentClassModelBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentClassModelBuilder.js","sourceRoot":"","sources":["../../artifact-builder/ComponentClassModelBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
+
import { PipelinePaths } from './helpers/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* **Pipeline Step 4** — Runs quicktype to convert the JSON Schema files
|
|
4
|
+
* produced by `SchemaGenerator` into TypeScript interface files.
|
|
5
|
+
*
|
|
6
|
+
* **What it does:** For each schema in `dist/test-artifacts/schemas/`, it
|
|
7
|
+
* invokes the `quicktype-core` library to generate a `.ts` file containing
|
|
8
|
+
* a TypeScript interface that matches the JSON shape. The result lands in
|
|
9
|
+
* `test-artifacts/screens/` and is then refined by `ScreenInterfaceRefiner`.
|
|
10
|
+
*
|
|
11
|
+
* **When it runs:** Step 4 of `testwise sync`, after `SchemaGenerator`.
|
|
12
|
+
*/
|
|
1
13
|
export declare class InterfaceGenerator {
|
|
2
14
|
private readonly _namingHandler;
|
|
3
|
-
private
|
|
4
|
-
private
|
|
5
|
-
|
|
6
|
-
constructor();
|
|
15
|
+
private readonly _screensToBuild;
|
|
16
|
+
private readonly _paths;
|
|
17
|
+
constructor(paths?: PipelinePaths);
|
|
7
18
|
generateScreenInterfacesFromSchemas(): Promise<void>;
|
|
8
19
|
generateSubjectInterfacesFromSchemas(): Promise<void>;
|
|
9
|
-
private verifyGeneratedSubjectSchemasDirectory;
|
|
10
20
|
private verifyOutputDirectory;
|
|
11
21
|
private getGeneratedSubjectSchemas;
|
|
12
22
|
private verifySubjectComponentsDirectory;
|
|
13
23
|
private createInterfaceFromSchema;
|
|
14
24
|
private generateInterfacesFromSchemaFiles;
|
|
15
|
-
getScreenSchemaFilesPath(): string;
|
|
16
25
|
}
|
|
@@ -1,44 +1,53 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
3
|
import * as prettier from 'prettier';
|
|
5
4
|
import { FetchingJSONSchemaStore, InputData, JSONSchemaInput, quicktype } from 'quicktype-core';
|
|
6
|
-
import {
|
|
7
|
-
|
|
5
|
+
import { DataRetriever, NamingHandler, PipelinePaths } from './helpers/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* **Pipeline Step 4** — Runs quicktype to convert the JSON Schema files
|
|
8
|
+
* produced by `SchemaGenerator` into TypeScript interface files.
|
|
9
|
+
*
|
|
10
|
+
* **What it does:** For each schema in `dist/test-artifacts/schemas/`, it
|
|
11
|
+
* invokes the `quicktype-core` library to generate a `.ts` file containing
|
|
12
|
+
* a TypeScript interface that matches the JSON shape. The result lands in
|
|
13
|
+
* `test-artifacts/screens/` and is then refined by `ScreenInterfaceRefiner`.
|
|
14
|
+
*
|
|
15
|
+
* **When it runs:** Step 4 of `testwise sync`, after `SchemaGenerator`.
|
|
16
|
+
*/
|
|
8
17
|
export class InterfaceGenerator {
|
|
9
|
-
constructor() {
|
|
18
|
+
constructor(paths) {
|
|
19
|
+
this._paths = paths ?? new PipelinePaths();
|
|
10
20
|
this._namingHandler = new NamingHandler();
|
|
11
|
-
this.
|
|
12
|
-
this._dirname = path.dirname(this._filename);
|
|
13
|
-
this._screensToBuild = new DataRetriever().getScreensToBuild();
|
|
21
|
+
this._screensToBuild = new DataRetriever(this._paths).getScreensToBuild();
|
|
14
22
|
}
|
|
15
23
|
async generateScreenInterfacesFromSchemas() {
|
|
16
|
-
const screenOutputDirectory =
|
|
24
|
+
const screenOutputDirectory = this._paths.screens;
|
|
17
25
|
this.verifyOutputDirectory(screenOutputDirectory);
|
|
18
|
-
const schemasDirectory = this.
|
|
26
|
+
const schemasDirectory = this._paths.screenSchemas;
|
|
27
|
+
if (!fs.existsSync(schemasDirectory)) {
|
|
28
|
+
throw new Error(`Screen schemas directory not found at: ${schemasDirectory}`);
|
|
29
|
+
}
|
|
19
30
|
await this.generateInterfacesFromSchemaFiles(schemasDirectory, SchemaType.Screen, screenOutputDirectory);
|
|
20
31
|
console.info('All screen schemas processed.');
|
|
21
32
|
}
|
|
22
33
|
async generateSubjectInterfacesFromSchemas() {
|
|
23
|
-
const schemasDirectory =
|
|
24
|
-
const subjectOutputDirectory =
|
|
25
|
-
|
|
34
|
+
const schemasDirectory = this._paths.schemas;
|
|
35
|
+
const subjectOutputDirectory = this._paths.subjects;
|
|
36
|
+
if (!fs.existsSync(schemasDirectory)) {
|
|
37
|
+
// No schemas generated yet – nothing to do.
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
26
40
|
this.verifyOutputDirectory(subjectOutputDirectory);
|
|
27
41
|
await this.generateInterfacesFromSchemaFiles(schemasDirectory, SchemaType.Subject, subjectOutputDirectory);
|
|
28
42
|
console.info('All subject schemas processed.');
|
|
29
43
|
}
|
|
30
|
-
verifyGeneratedSubjectSchemasDirectory(directory) {
|
|
31
|
-
if (!fs.existsSync(directory)) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
44
|
verifyOutputDirectory(directory) {
|
|
36
45
|
if (!fs.existsSync(directory)) {
|
|
37
46
|
fs.mkdirSync(directory, { recursive: true });
|
|
38
47
|
}
|
|
39
48
|
}
|
|
40
49
|
getGeneratedSubjectSchemas(schemasDirectory) {
|
|
41
|
-
return fs.readdirSync(schemasDirectory).filter((f) => f.endsWith('.json'));
|
|
50
|
+
return fs.readdirSync(schemasDirectory).filter((f) => f.endsWith('.json') && !f.endsWith('.meta.json'));
|
|
42
51
|
}
|
|
43
52
|
verifySubjectComponentsDirectory(directory, subject) {
|
|
44
53
|
const componentsDirectory = path.join(directory, `${subject}/Components`);
|
|
@@ -110,14 +119,6 @@ export class InterfaceGenerator {
|
|
|
110
119
|
});
|
|
111
120
|
await Promise.all(tasks);
|
|
112
121
|
}
|
|
113
|
-
getScreenSchemaFilesPath() {
|
|
114
|
-
const directory = new PathResolver().getConsumerRootDirectory();
|
|
115
|
-
const screenSchemasPath = path.join(directory, 'seed-data/screen-schemas/');
|
|
116
|
-
if (!fs.existsSync(screenSchemasPath)) {
|
|
117
|
-
throw new Error(`Screen schemas directory not found at: ${screenSchemasPath}`);
|
|
118
|
-
}
|
|
119
|
-
return screenSchemasPath;
|
|
120
|
-
}
|
|
121
122
|
}
|
|
122
123
|
var SchemaType;
|
|
123
124
|
(function (SchemaType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **Pipeline Step 1** — Fetches the raw Thinkwise application model from the
|
|
3
|
+
* Indicium API and writes it into `seed-data/`.
|
|
4
|
+
* Calls the API to list all subjects + properties, writes `subjects.json`,
|
|
5
|
+
* and downloads each subject's screen schema JSON into `seed-data/screen-schemas/`.
|
|
6
|
+
* Run via `testwise sync` — requires valid credentials in `Testwise.json`.
|
|
7
|
+
*/
|
|
1
8
|
export declare function buildSubjects(): Promise<void>;
|
|
2
9
|
export declare function buildScreens(): Promise<void>;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
/** biome-ignore-all lint/style/noNonNullAssertion: Because I can */
|
|
3
2
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Because I can */
|
|
4
3
|
import * as fs from 'node:fs/promises';
|
|
5
4
|
import * as path from 'node:path';
|
|
6
5
|
import { indiciumApi } from '../services/IndiciumApi.service.js';
|
|
7
6
|
import { DataRetriever } from './helpers/DataRetriever.js';
|
|
7
|
+
/**
|
|
8
|
+
* **Pipeline Step 1** — Fetches the raw Thinkwise application model from the
|
|
9
|
+
* Indicium API and writes it into `seed-data/`.
|
|
10
|
+
* Calls the API to list all subjects + properties, writes `subjects.json`,
|
|
11
|
+
* and downloads each subject's screen schema JSON into `seed-data/screen-schemas/`.
|
|
12
|
+
* Run via `testwise sync` — requires valid credentials in `Testwise.json`.
|
|
13
|
+
*/
|
|
8
14
|
export async function buildSubjects() {
|
|
9
15
|
if (!(await indiciumApi.canConnectToProject())) {
|
|
10
16
|
console.log('Cannot connect to Indicium API. Aborting subject build.');
|
|
@@ -53,10 +59,12 @@ export async function buildSubjects() {
|
|
|
53
59
|
async function setLookupDropdowns(subjects) {
|
|
54
60
|
const lookupMappings = await indiciumApi.getLookups();
|
|
55
61
|
for (const mapping of lookupMappings) {
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
targetProperty
|
|
62
|
+
const matchingSubjects = subjects.filter((subj) => subj.subject === mapping.tab_id && subj.variant === mapping.tab_variant_id);
|
|
63
|
+
for (const subject of matchingSubjects) {
|
|
64
|
+
const targetProperty = subject.properties?.find((prop) => prop.col === mapping.col_id);
|
|
65
|
+
if (targetProperty) {
|
|
66
|
+
targetProperty.control_type = 'LOOKUP_DROPDOWN';
|
|
67
|
+
}
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
return subjects;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelDataBuilder.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataBuilder.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,oEAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"ModelDataBuilder.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,21 @@
|
|
|
1
|
+
import type { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
2
|
+
/**
|
|
3
|
+
* **Pipeline Step 2** — Filters the full subject seed-data down to only the
|
|
4
|
+
* subjects that the consumer project has registered.
|
|
5
|
+
*
|
|
6
|
+
* **What it does:**
|
|
7
|
+
* - Reads `registeredSubjects.json` from the consumer project root (the
|
|
8
|
+
* curated list the developer maintains via `testwise register`).
|
|
9
|
+
* - Intersects it with `seed-data/subjects.json` to produce two smaller files:
|
|
10
|
+
* - `seed-data/subjectsToBuild.json` — subjects whose classes need generating.
|
|
11
|
+
* - `seed-data/screensToBuild.json` — screen schema files to run through quicktype.
|
|
12
|
+
* - If no subjects are registered, it clears both files so later steps produce
|
|
13
|
+
* no output instead of failing.
|
|
14
|
+
*
|
|
15
|
+
* **When it runs:** Step 2 of `testwise sync`, immediately after `ModelDataBuilder`.
|
|
16
|
+
*/
|
|
1
17
|
export declare class ModelDataRefiner {
|
|
2
|
-
private _dataRetriever;
|
|
18
|
+
private readonly _dataRetriever;
|
|
19
|
+
constructor(paths?: PipelinePaths);
|
|
3
20
|
run(): void;
|
|
4
21
|
}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { DataRetriever } from '
|
|
3
|
+
import { DataRetriever } from './helpers/DataRetriever.js';
|
|
4
|
+
/**
|
|
5
|
+
* **Pipeline Step 2** — Filters the full subject seed-data down to only the
|
|
6
|
+
* subjects that the consumer project has registered.
|
|
7
|
+
*
|
|
8
|
+
* **What it does:**
|
|
9
|
+
* - Reads `registeredSubjects.json` from the consumer project root (the
|
|
10
|
+
* curated list the developer maintains via `testwise register`).
|
|
11
|
+
* - Intersects it with `seed-data/subjects.json` to produce two smaller files:
|
|
12
|
+
* - `seed-data/subjectsToBuild.json` — subjects whose classes need generating.
|
|
13
|
+
* - `seed-data/screensToBuild.json` — screen schema files to run through quicktype.
|
|
14
|
+
* - If no subjects are registered, it clears both files so later steps produce
|
|
15
|
+
* no output instead of failing.
|
|
16
|
+
*
|
|
17
|
+
* **When it runs:** Step 2 of `testwise sync`, immediately after `ModelDataBuilder`.
|
|
18
|
+
*/
|
|
4
19
|
export class ModelDataRefiner {
|
|
5
|
-
constructor() {
|
|
6
|
-
this._dataRetriever = new DataRetriever();
|
|
20
|
+
constructor(paths) {
|
|
21
|
+
this._dataRetriever = new DataRetriever(paths);
|
|
7
22
|
}
|
|
8
23
|
run() {
|
|
9
24
|
const seedDataDir = this._dataRetriever.getSeedDataDirectory();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelDataRefiner.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataRefiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelDataRefiner.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataRefiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,gBAAgB;IAG3B,YAAY,KAAqB;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEM,GAAG;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;QAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAC5E,MAAM,kBAAkB,GAAiC,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAErG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAE9C,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACzE,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAE3E,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAE3D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,kBAAkB,CAAC,IAAI,CACrB,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;YACtC,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;YAC9F,UAAU,CAAC,WAAW,KAAK,OAAO,CAAC,kBAAkB,CACxD,CACF,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,qCAAqC,eAAe,CAAC,MAAM,YAAY,CAAC,CAAC;QAErF,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAExG,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,oCAAoC,kBAAkB,CAAC,MAAM,WAAW,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -1,10 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
2
|
+
/**
|
|
3
|
+
* **Pipeline Step 3** — Converts raw Thinkwise screen-schema JSON files into
|
|
4
|
+
* structured JSON Schema files that `quicktype` can consume.
|
|
5
|
+
*
|
|
6
|
+
* **What it does:**
|
|
7
|
+
* - Reads the screen-schema files listed in `seed-data/screensToBuild.json`.
|
|
8
|
+
* - For each subject, generates a JSON Schema describing the shape of the
|
|
9
|
+
* screen's fields and component structure.
|
|
10
|
+
* - Writes one `.json` schema and one `.meta.json` sidecar file per screen
|
|
11
|
+
* into `dist/test-artifacts/schemas/`. The `.meta.json` records which
|
|
12
|
+
* component type (Form or Grid) owns each property, which
|
|
13
|
+
* `SubjectComponentGenerator` reads back in step 6.
|
|
14
|
+
*
|
|
15
|
+
* **When it runs:** Step 3 of `testwise sync`, after `ModelDataRefiner`.
|
|
16
|
+
*/
|
|
2
17
|
export declare class SchemaGenerator {
|
|
3
|
-
private _namingHandler;
|
|
4
|
-
private _dataRetriever;
|
|
5
|
-
|
|
18
|
+
private readonly _namingHandler;
|
|
19
|
+
private readonly _dataRetriever;
|
|
20
|
+
private readonly _schemasDir;
|
|
21
|
+
private readonly _screensDir;
|
|
22
|
+
constructor(paths?: PipelinePaths);
|
|
6
23
|
generateSchema(): void;
|
|
7
|
-
iSubjectToJson(value: ISubject): string;
|
|
8
24
|
private createSubjectSchema;
|
|
9
25
|
private getComponentsToProcess;
|
|
10
26
|
private getScreenContent;
|
|
@@ -1,31 +1,42 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
|
-
import {
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { DataRetriever } from '../index.js';
|
|
4
|
+
import { DataRetriever } from './helpers/DataRetriever.js';
|
|
7
5
|
import { NamingHandler } from './helpers/NamingHandler.js';
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
7
|
+
/**
|
|
8
|
+
* **Pipeline Step 3** — Converts raw Thinkwise screen-schema JSON files into
|
|
9
|
+
* structured JSON Schema files that `quicktype` can consume.
|
|
10
|
+
*
|
|
11
|
+
* **What it does:**
|
|
12
|
+
* - Reads the screen-schema files listed in `seed-data/screensToBuild.json`.
|
|
13
|
+
* - For each subject, generates a JSON Schema describing the shape of the
|
|
14
|
+
* screen's fields and component structure.
|
|
15
|
+
* - Writes one `.json` schema and one `.meta.json` sidecar file per screen
|
|
16
|
+
* into `dist/test-artifacts/schemas/`. The `.meta.json` records which
|
|
17
|
+
* component type (Form or Grid) owns each property, which
|
|
18
|
+
* `SubjectComponentGenerator` reads back in step 6.
|
|
19
|
+
*
|
|
20
|
+
* **When it runs:** Step 3 of `testwise sync`, after `ModelDataRefiner`.
|
|
21
|
+
*/
|
|
10
22
|
export class SchemaGenerator {
|
|
11
|
-
constructor() {
|
|
23
|
+
constructor(paths) {
|
|
24
|
+
/* v8 ignore next -- default only used at runtime, not in unit tests */
|
|
25
|
+
const p = paths ?? new PipelinePaths();
|
|
12
26
|
this._namingHandler = new NamingHandler();
|
|
13
|
-
this._dataRetriever = new DataRetriever();
|
|
27
|
+
this._dataRetriever = new DataRetriever(p);
|
|
28
|
+
this._schemasDir = p.schemas;
|
|
29
|
+
this._screensDir = p.screens;
|
|
14
30
|
}
|
|
15
31
|
generateSchema() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
fs.mkdirSync(schemasDir, { recursive: true });
|
|
32
|
+
if (!fs.existsSync(this._schemasDir)) {
|
|
33
|
+
fs.mkdirSync(this._schemasDir, { recursive: true });
|
|
19
34
|
}
|
|
20
35
|
const subjects = this._dataRetriever.getSubjectsToBuild();
|
|
21
36
|
for (const subject of subjects) {
|
|
22
37
|
this.createSubjectSchema(subject);
|
|
23
38
|
}
|
|
24
39
|
}
|
|
25
|
-
iSubjectToJson(value) {
|
|
26
|
-
return JSON.stringify(value);
|
|
27
|
-
}
|
|
28
|
-
// Changes start here
|
|
29
40
|
createSubjectSchema(subject) {
|
|
30
41
|
const screen = { content: this.getScreenContent(subject.screentype_id) };
|
|
31
42
|
const componentsToProcess = this.getComponentsToProcess(screen);
|
|
@@ -57,18 +68,12 @@ export class SchemaGenerator {
|
|
|
57
68
|
}
|
|
58
69
|
getScreenContent(screenTypeId) {
|
|
59
70
|
const screenFileName = this._namingHandler.toPascalCase(screenTypeId);
|
|
60
|
-
|
|
61
|
-
const _dirname = path.dirname(_filename);
|
|
62
|
-
const screenLocation = path.resolve(_dirname, '..', '..', 'test-artifacts/screens/');
|
|
63
|
-
return fs.readFileSync(path.join(screenLocation, `I${screenFileName}.ts`), 'utf-8');
|
|
71
|
+
return fs.readFileSync(path.join(this._screensDir, `I${screenFileName}.ts`), 'utf-8');
|
|
64
72
|
}
|
|
65
73
|
createComponentSchema(subject, componentType) {
|
|
66
74
|
const interfaceName = `${subject.subject}_${componentType.toLowerCase()}`;
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
if (fs.existsSync(path.join(schemasDir, fileName))) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
75
|
+
const fileName = `${this._namingHandler.toSubjectPascalCase(interfaceName)}.json`;
|
|
76
|
+
const schemaFilePath = path.join(this._schemasDir, fileName);
|
|
72
77
|
// biome-ignore lint/suspicious/noExplicitAny: reason 42
|
|
73
78
|
const componentSchema = {
|
|
74
79
|
title: interfaceName,
|
|
@@ -87,16 +92,23 @@ export class SchemaGenerator {
|
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
94
|
};
|
|
95
|
+
// Maps original schema field name → { colId, elementType }
|
|
96
|
+
const propertyMeta = {};
|
|
90
97
|
subject.properties.forEach((property) => {
|
|
91
98
|
const componentTypeSuffix = this._namingHandler.getElementSuffixFromControlTypeAndComponentType(property.control_type, componentType);
|
|
92
99
|
const fieldName = `${property.col}_${componentTypeSuffix.toLocaleLowerCase()}`;
|
|
93
100
|
componentSchema.properties[fieldName] = { $ref: '#/definitions/Locator' };
|
|
94
101
|
componentSchema.required.push(fieldName);
|
|
102
|
+
propertyMeta[fieldName] = { colId: property.col, elementType: componentTypeSuffix };
|
|
95
103
|
});
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
/* v8 ignore next 3 — generateSchema() always creates this dir first */
|
|
105
|
+
if (!fs.existsSync(this._schemasDir)) {
|
|
106
|
+
fs.mkdirSync(this._schemasDir, { recursive: true });
|
|
98
107
|
}
|
|
99
|
-
|
|
108
|
+
const schemaMeta = { componentType, properties: propertyMeta };
|
|
109
|
+
const metaFileName = fileName.replace('.json', '.meta.json');
|
|
110
|
+
fs.writeFileSync(schemaFilePath, JSON.stringify(componentSchema, null, 2));
|
|
111
|
+
fs.writeFileSync(path.join(this._schemasDir, metaFileName), JSON.stringify(schemaMeta, null, 2));
|
|
100
112
|
}
|
|
101
113
|
}
|
|
102
114
|
//# sourceMappingURL=SchemaGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SchemaGenerator.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SchemaGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
2
|
+
/**
|
|
3
|
+
* **Pipeline Step 5** — Post-processes the raw TypeScript interface files
|
|
4
|
+
* emitted by `InterfaceGenerator` (quicktype) to make them usable as
|
|
5
|
+
* Testwise screen contracts.
|
|
6
|
+
*
|
|
7
|
+
* **What it does:**
|
|
8
|
+
* - Removes the `Locator` base interface that quicktype adds (not needed here).
|
|
9
|
+
* - Strips placeholder interfaces for component types that Testwise does not
|
|
10
|
+
* yet support (see `disabledScreenComponents`).
|
|
11
|
+
* - Merges multiple `Tab` component interfaces into one to avoid duplicates.
|
|
12
|
+
* - Adds the generated screen interface as an export to `screens/index.ts`.
|
|
13
|
+
*
|
|
14
|
+
* **When it runs:** Step 5 of `testwise sync`, immediately after
|
|
15
|
+
* `InterfaceGenerator` has written the raw quicktype output.
|
|
16
|
+
*/
|
|
1
17
|
export declare class ScreenInterfaceRefiner {
|
|
2
18
|
private readonly _screensDirectory;
|
|
3
|
-
|
|
19
|
+
private readonly _screensIndexPath;
|
|
20
|
+
constructor(paths?: PipelinePaths);
|
|
4
21
|
refine(): void;
|
|
5
22
|
private removeEmptyLines;
|
|
6
23
|
private indexScreenInterface;
|