@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
package/controls/FormComboBox.ts
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* biome-ignore-all lint/suspicious/noExplicitAny: Reason42 */
|
|
3
3
|
import type { Locator } from '@playwright/test';
|
|
4
|
-
|
|
4
|
+
import { FormComboBoxObjects } from './FormComboBoxObjects.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Typed proxy for a combo-box field (`control_type: "combo_box"`) on a
|
|
8
|
+
* Thinkwise form screen.
|
|
9
|
+
*
|
|
10
|
+
* **How to use:** You never construct this directly. Generated subject
|
|
11
|
+
* component classes expose properties of type `IFormComboBox` for each
|
|
12
|
+
* combo-box on the form:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Select an option by typing a prefix and picking from auto-complete:
|
|
16
|
+
* await subject.form.statusCombo.lookupSelect('Act');
|
|
17
|
+
*
|
|
18
|
+
* // Click to open the full list and select:
|
|
19
|
+
* await subject.form.statusCombo.selectOption('Active');
|
|
20
|
+
*
|
|
21
|
+
* // Clear the current selection:
|
|
22
|
+
* await subject.form.statusCombo.clearByClick();
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* The returned value is a **Proxy** that acts as both a Playwright `Locator`
|
|
26
|
+
* and a typed combo-box control.
|
|
27
|
+
*/
|
|
5
28
|
export type IFormComboBox = Locator & IFormComboBoxCore;
|
|
6
29
|
|
|
7
30
|
export type IFormComboBoxCore = {
|
|
@@ -12,47 +35,41 @@ export type IFormComboBoxCore = {
|
|
|
12
35
|
};
|
|
13
36
|
|
|
14
37
|
class FormComboBox implements IFormComboBoxCore {
|
|
15
|
-
private
|
|
16
|
-
private _autoCompleteMenu: Locator;
|
|
17
|
-
private _id: string;
|
|
38
|
+
private _objects: FormComboBoxObjects;
|
|
18
39
|
|
|
19
40
|
constructor(context: Locator, id: string) {
|
|
20
|
-
this.
|
|
21
|
-
this._formFieldLocator = context.getByTestId(`form-field__${id}`);
|
|
22
|
-
this._autoCompleteMenu = context.getByTestId(`form-field__${id}__select__options-list`);
|
|
41
|
+
this._objects = new FormComboBoxObjects(context, id);
|
|
23
42
|
}
|
|
24
43
|
|
|
25
44
|
async selectOption(optionText: string): Promise<void> {
|
|
26
|
-
await this.
|
|
27
|
-
|
|
28
|
-
await this.
|
|
29
|
-
|
|
30
|
-
const optionTextLowercase = optionText.toLowerCase();
|
|
31
|
-
|
|
32
|
-
await this._autoCompleteMenu.getByTestId(`form-field__${this._id}__select__${optionTextLowercase}__text`).click();
|
|
45
|
+
await this._objects.fieldInput().click();
|
|
46
|
+
await this._objects.autoCompleteMenu().waitFor({ state: 'visible' });
|
|
47
|
+
await this._objects.option(optionText).click();
|
|
33
48
|
}
|
|
34
49
|
|
|
35
50
|
async getValidationMessage(): Promise<string> {
|
|
36
|
-
await this.
|
|
37
|
-
return await this.
|
|
51
|
+
await this._objects.validationMessage().waitFor({ state: 'visible' });
|
|
52
|
+
return await this._objects.validationMessage().innerText();
|
|
38
53
|
}
|
|
39
54
|
async clearByClick(): Promise<void> {
|
|
40
|
-
await this.
|
|
55
|
+
await this._objects.clearButton().click();
|
|
41
56
|
}
|
|
42
57
|
|
|
43
58
|
async lookupSelect(optionToSelect: string): Promise<void> {
|
|
44
|
-
await this.
|
|
45
|
-
|
|
46
|
-
await this.
|
|
47
|
-
|
|
48
|
-
const optionToSelectLowercase = optionToSelect.toLowerCase();
|
|
49
|
-
|
|
50
|
-
await this._autoCompleteMenu
|
|
51
|
-
.getByTestId(`form-field__${this._id}__select__${optionToSelectLowercase}__text`)
|
|
52
|
-
.click();
|
|
59
|
+
await this._objects.fieldInput().fill(optionToSelect);
|
|
60
|
+
await this._objects.autoCompleteMenu().waitFor({ state: 'visible' });
|
|
61
|
+
await this._objects.option(optionToSelect).click();
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Creates an `IFormComboBox` proxy that merges `FormComboBox` interaction methods with
|
|
67
|
+
* the underlying Playwright `Locator` for the `form-field__<id>` test ID.
|
|
68
|
+
* Use the returned value as both a typed combo-box control and a regular Playwright locator.
|
|
69
|
+
* @param context - The parent locator to scope the control within.
|
|
70
|
+
* @param id - The field identifier used to locate `[data-testid="form-field__<id>"]`.
|
|
71
|
+
* @returns A proxy combining `IFormComboBoxCore` methods and `Locator` capabilities.
|
|
72
|
+
*/
|
|
56
73
|
export function createFormComboBox(context: Locator, id: string): IFormComboBox {
|
|
57
74
|
const comboBox = new FormComboBox(context, id);
|
|
58
75
|
const locator = context.getByTestId(`form-field__${id}`);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
export class FormComboBoxObjects {
|
|
4
|
+
private _context: Locator;
|
|
5
|
+
private _id: string;
|
|
6
|
+
|
|
7
|
+
constructor(context: Locator, id: string) {
|
|
8
|
+
this._context = context;
|
|
9
|
+
this._id = id;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public field = (): Locator => this._context.getByTestId(`form-field__${this._id}`);
|
|
13
|
+
|
|
14
|
+
public autoCompleteMenu = (): Locator =>
|
|
15
|
+
this._context.page().getByTestId(`form-field__${this._id}__select__options-list`);
|
|
16
|
+
|
|
17
|
+
public option = (optionText: string): Locator => {
|
|
18
|
+
const optionTextLowercase = optionText.toLowerCase();
|
|
19
|
+
return this.autoCompleteMenu().getByTestId(`form-field__${this._id}__select__${optionTextLowercase}__text`);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
public clearButton = (): Locator => this.field().locator('Button[aria-label="Clear"]');
|
|
23
|
+
|
|
24
|
+
public validationMessage = (): Locator => this.field().locator('.TooltipContainer p');
|
|
25
|
+
|
|
26
|
+
public fieldInput = (): Locator => this.field().locator('input');
|
|
27
|
+
}
|
|
@@ -5,6 +5,28 @@ import { Grid } from '../components/grid/Grid.js';
|
|
|
5
5
|
import { escapeRegex } from '../index.js';
|
|
6
6
|
import { GridColumnControlObjects } from './GridColumnControlObjects.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Typed proxy for a single column in a Thinkwise `Grid` component.
|
|
10
|
+
*
|
|
11
|
+
* **How to use:** You never construct this directly. Generated subject
|
|
12
|
+
* component classes expose properties of type `IGridColumnControl` for each
|
|
13
|
+
* column in a grid:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* // Get all visible cell values in the column:
|
|
17
|
+
* const names = await subject.grid.employeeNameColumn.getCellValues();
|
|
18
|
+
*
|
|
19
|
+
* // Find a specific cell by its exact text:
|
|
20
|
+
* const cell = subject.grid.employeeNameColumn.getCellByExactValue('Jane Doe');
|
|
21
|
+
* await cell.click();
|
|
22
|
+
*
|
|
23
|
+
* // Filter the grid using the Excel-style filter popup:
|
|
24
|
+
* await subject.grid.statusColumn.filterByColumnValueExcelStyle('Active');
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* The returned value is a **Proxy** — it works as both a Playwright `Locator`
|
|
28
|
+
* (pointing at the column header) and a typed column control.
|
|
29
|
+
*/
|
|
8
30
|
export type IGridColumnControl = Locator & IGridColumnControlCore;
|
|
9
31
|
|
|
10
32
|
export type IGridColumnControlCore = {
|
|
@@ -21,7 +43,7 @@ class GridColumnControl implements IGridColumnControlCore {
|
|
|
21
43
|
private _objects: GridColumnControlObjects;
|
|
22
44
|
|
|
23
45
|
constructor(gridContext: Locator, id: string) {
|
|
24
|
-
this._id = id
|
|
46
|
+
this._id = id;
|
|
25
47
|
this._objects = new GridColumnControlObjects(gridContext, this._id);
|
|
26
48
|
this._grid = new Grid(gridContext);
|
|
27
49
|
}
|
|
@@ -44,13 +66,22 @@ class GridColumnControl implements IGridColumnControlCore {
|
|
|
44
66
|
}
|
|
45
67
|
|
|
46
68
|
public async filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void> {
|
|
47
|
-
await this._grid.filterByColumnValueExcelStyle(this.
|
|
69
|
+
await this._grid.filterByColumnValueExcelStyle(this._objects.columnHeader(), value, deselectAll);
|
|
48
70
|
}
|
|
49
71
|
}
|
|
50
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Creates an `IGridColumnControl` proxy for a specific grid column.
|
|
75
|
+
* Normalises the column `id` (replacing `-` with `_`), then returns a proxy that merges
|
|
76
|
+
* `GridColumnControl` interaction methods with the `[col-id="<id>"]` locator.
|
|
77
|
+
* @param gridContext - The parent `Locator` representing the grid element.
|
|
78
|
+
* @param id - The column identifier (hyphens are automatically converted to underscores).
|
|
79
|
+
* @returns A proxy combining `IGridColumnControlCore` methods and `Locator` capabilities.
|
|
80
|
+
*/
|
|
51
81
|
export function createGridColumnControl(gridContext: Locator, id: string): IGridColumnControl {
|
|
52
|
-
const
|
|
53
|
-
const
|
|
82
|
+
const processedId = id.replace(/-/g, '_');
|
|
83
|
+
const columnControl = new GridColumnControl(gridContext, processedId);
|
|
84
|
+
const locator = gridContext.locator(`[col-id="${processedId}"]`);
|
|
54
85
|
|
|
55
86
|
return new Proxy(columnControl, {
|
|
56
87
|
get(target, prop, receiver) {
|
|
@@ -11,7 +11,7 @@ export class GridColumnControlObjects extends BaseComponentObjects {
|
|
|
11
11
|
|
|
12
12
|
public column = () => this.context.locator(`[col-id="${this._id}"]`);
|
|
13
13
|
|
|
14
|
-
public columnHeader = () => this.
|
|
14
|
+
public columnHeader = () => this.context.locator(`[col-id="${this._id}"][role="columnheader"]`);
|
|
15
15
|
|
|
16
16
|
public cellByValue = (value: RegExp) =>
|
|
17
17
|
this.column().locator('[role="button"]', {
|
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/** biome-ignore-all lint/suspicious/noExplicitAny: reason42 */
|
|
3
3
|
import type { Locator } from '@playwright/test';
|
|
4
|
-
|
|
4
|
+
import { InputFieldControlObjects } from './InputFieldControlObjects.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Typed proxy for a plain text input field (`control_type: "field"`) on a
|
|
8
|
+
* Thinkwise form screen.
|
|
9
|
+
*
|
|
10
|
+
* **How to use:** You never construct this directly. The generated subject
|
|
11
|
+
* component class exposes properties of type `IInputFieldControl` — one per
|
|
12
|
+
* field on the form. Use those properties in your test:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Generated subject exposes:
|
|
16
|
+
* // employeeName: IInputFieldControl;
|
|
17
|
+
* await subject.form.employeeName.fill('Jane Doe');
|
|
18
|
+
* const val = await subject.form.employeeName.inputValue();
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* The returned value is a **Proxy** — it acts as both a Playwright `Locator`
|
|
22
|
+
* (so you can call `.waitFor()`, `.isVisible()`, etc.) and as a typed control
|
|
23
|
+
* with named interaction methods.
|
|
24
|
+
*/
|
|
5
25
|
export type IInputFieldControl = Locator & ICoreInputFieldControl;
|
|
6
26
|
|
|
7
27
|
export type ICoreInputFieldControl = {
|
|
@@ -15,43 +35,61 @@ export type ICoreInputFieldControl = {
|
|
|
15
35
|
};
|
|
16
36
|
|
|
17
37
|
export class InputFieldControl implements ICoreInputFieldControl {
|
|
18
|
-
private
|
|
19
|
-
private _inputLocator: Locator;
|
|
20
|
-
private _id: string;
|
|
38
|
+
private _objects: InputFieldControlObjects;
|
|
21
39
|
|
|
22
40
|
constructor(context: Locator, id: string) {
|
|
23
|
-
this.
|
|
24
|
-
this._formFieldLocator = context.getByTestId(`form-field__${id}`);
|
|
25
|
-
this._inputLocator = this._formFieldLocator.locator('input');
|
|
41
|
+
this._objects = new InputFieldControlObjects(context, id);
|
|
26
42
|
}
|
|
27
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Waits for the field's validation message element to become visible, then returns its text.
|
|
46
|
+
*/
|
|
28
47
|
public async getValidationMessage(): Promise<string> {
|
|
29
|
-
await this.
|
|
30
|
-
return await this.
|
|
48
|
+
await this._objects.validationMessage().waitFor({ state: 'visible' });
|
|
49
|
+
return await this._objects.validationMessage().innerText();
|
|
31
50
|
}
|
|
32
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Fills the input element with the given value.
|
|
54
|
+
* @param value - The string to enter into the field.
|
|
55
|
+
*/
|
|
33
56
|
public async fill(value: string): Promise<void> {
|
|
34
|
-
await this.
|
|
57
|
+
await this._objects.fieldInput().fill(value);
|
|
35
58
|
}
|
|
36
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Clicks the underlying input element.
|
|
62
|
+
*/
|
|
37
63
|
public async click(): Promise<void> {
|
|
38
|
-
await this.
|
|
64
|
+
await this._objects.fieldInput().click();
|
|
39
65
|
}
|
|
40
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Clears the input field by filling it with an empty string.
|
|
69
|
+
*/
|
|
41
70
|
public async clear(): Promise<void> {
|
|
42
|
-
await this.
|
|
71
|
+
await this._objects.fieldInput().fill('');
|
|
43
72
|
}
|
|
44
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Returns the current string value from the underlying input element.
|
|
76
|
+
*/
|
|
45
77
|
public async inputValue(): Promise<string> {
|
|
46
|
-
return await this.
|
|
78
|
+
return await this._objects.fieldInput().inputValue();
|
|
47
79
|
}
|
|
48
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Returns the Playwright `Locator` for the underlying `<input>` element of the field.
|
|
83
|
+
*/
|
|
49
84
|
public inputElement(): Locator {
|
|
50
|
-
return this.
|
|
85
|
+
return this._objects.fieldInput();
|
|
51
86
|
}
|
|
52
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Returns the trimmed, whitespace-normalised text content of the field's label element.
|
|
90
|
+
*/
|
|
53
91
|
public async getLabelText(): Promise<string> {
|
|
54
|
-
let returnText = (await this.
|
|
92
|
+
let returnText = (await this._objects.fieldLabel().textContent()) || '';
|
|
55
93
|
|
|
56
94
|
returnText = returnText.replace(/\s+/g, ' ').trim();
|
|
57
95
|
|
|
@@ -59,6 +97,14 @@ export class InputFieldControl implements ICoreInputFieldControl {
|
|
|
59
97
|
}
|
|
60
98
|
}
|
|
61
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Creates an `IInputFieldControl` proxy that merges `InputFieldControl` interaction methods
|
|
102
|
+
* with the underlying Playwright `Locator` for the `form-field__<id>` test ID.
|
|
103
|
+
* Use the returned value as both a typed input control and a regular Playwright locator.
|
|
104
|
+
* @param context - The parent locator to scope the control within.
|
|
105
|
+
* @param id - The field identifier used to locate `[data-testid="form-field__<id>"]`.
|
|
106
|
+
* @returns A proxy combining `ICoreInputFieldControl` methods and `Locator` capabilities.
|
|
107
|
+
*/
|
|
62
108
|
export function createInputFieldControl(context: Locator, id: string): IInputFieldControl {
|
|
63
109
|
const inputFieldControl = new InputFieldControl(context, id);
|
|
64
110
|
const locator = context.getByTestId(`form-field__${id}`);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
export class InputFieldControlObjects {
|
|
4
|
+
private _context: Locator;
|
|
5
|
+
private _id: string;
|
|
6
|
+
|
|
7
|
+
constructor(context: Locator, id: string) {
|
|
8
|
+
this._context = context;
|
|
9
|
+
this._id = id;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public formField = (): Locator => this._context.getByTestId(`form-field__${this._id}`);
|
|
13
|
+
|
|
14
|
+
public fieldInput = (): Locator => this.formField().locator('input');
|
|
15
|
+
|
|
16
|
+
public fieldLabel = (): Locator => this.formField().getByTestId(`form-field__${this._id}__label`);
|
|
17
|
+
|
|
18
|
+
public validationMessage = (): Locator => this.formField().locator('.TooltipContainer p');
|
|
19
|
+
}
|
|
@@ -2,7 +2,29 @@
|
|
|
2
2
|
/** biome-ignore-all lint/suspicious/noExplicitAny: needed flexibility */
|
|
3
3
|
import type { Locator } from '@playwright/test';
|
|
4
4
|
import { escapeRegex } from '../helpers/RegexHelper.js';
|
|
5
|
-
|
|
5
|
+
import { LookupDropdownObjects } from './LookupDropdownObjects.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Typed proxy for a lookup or dropdown field (`control_type: "lookup"` or
|
|
9
|
+
* `"dropdown"`) on a Thinkwise form screen.
|
|
10
|
+
*
|
|
11
|
+
* **How to use:** You never construct this directly. The generated subject
|
|
12
|
+
* component class exposes properties of type `ILookupDropdown` for each
|
|
13
|
+
* lookup/dropdown on the form:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* // Two interaction styles:
|
|
17
|
+
*
|
|
18
|
+
* // 1. Type + pick from the auto-complete list:
|
|
19
|
+
* await subject.form.countryLookup.lookupSelect('Netherlands');
|
|
20
|
+
*
|
|
21
|
+
* // 2. Click to open the dropdown then pick:
|
|
22
|
+
* await subject.form.statusDropdown.selectOption('Active');
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* The returned value is a **Proxy** — it works as both a Playwright `Locator`
|
|
26
|
+
* and a typed control with named helper methods.
|
|
27
|
+
*/
|
|
6
28
|
export type ILookupDropdown = Locator & ILookupDropdownCore;
|
|
7
29
|
|
|
8
30
|
export type ILookupDropdownCore = {
|
|
@@ -16,18 +38,14 @@ export type ILookupDropdownCore = {
|
|
|
16
38
|
};
|
|
17
39
|
|
|
18
40
|
class LookupDropdown implements ILookupDropdownCore {
|
|
19
|
-
private
|
|
20
|
-
private _formFieldLocator: Locator;
|
|
21
|
-
private _inputLocator: Locator;
|
|
41
|
+
private _objects: LookupDropdownObjects;
|
|
22
42
|
|
|
23
43
|
constructor(context: Locator, id: string) {
|
|
24
|
-
this.
|
|
25
|
-
this._formFieldLocator = context.getByTestId(`form-field__${this._id}`);
|
|
26
|
-
this._inputLocator = this._formFieldLocator.locator('input');
|
|
44
|
+
this._objects = new LookupDropdownObjects(context, id);
|
|
27
45
|
}
|
|
28
46
|
|
|
29
47
|
public async getLabelText(): Promise<string> {
|
|
30
|
-
let returnText = (await this.
|
|
48
|
+
let returnText = (await this._objects.label().textContent()) || '';
|
|
31
49
|
|
|
32
50
|
returnText = returnText.replace(/\s+/g, ' ').trim();
|
|
33
51
|
|
|
@@ -35,69 +53,79 @@ class LookupDropdown implements ILookupDropdownCore {
|
|
|
35
53
|
}
|
|
36
54
|
|
|
37
55
|
public async lookupSelect(optionToSelect: string): Promise<void> {
|
|
38
|
-
await this.
|
|
56
|
+
await this._objects.input().fill(optionToSelect);
|
|
39
57
|
await this.select(optionToSelect);
|
|
40
58
|
}
|
|
41
59
|
|
|
42
60
|
public async inputValue(): Promise<string> {
|
|
43
|
-
return await this.
|
|
61
|
+
return await this._objects.input().inputValue();
|
|
44
62
|
}
|
|
45
63
|
|
|
46
64
|
public async clear(): Promise<void> {
|
|
47
|
-
await this.
|
|
65
|
+
await this._objects.input().fill('');
|
|
48
66
|
}
|
|
49
67
|
|
|
50
68
|
public async selectOption(optionText: string): Promise<void> {
|
|
51
|
-
await this.
|
|
69
|
+
await this._objects.input().click();
|
|
52
70
|
await this.select(optionText);
|
|
53
71
|
}
|
|
54
72
|
|
|
55
73
|
public async getValidationMessage(): Promise<string> {
|
|
56
|
-
await this.
|
|
57
|
-
return await this.
|
|
74
|
+
await this._objects.validationMessage().waitFor({ state: 'visible' });
|
|
75
|
+
return await this._objects.validationMessage().innerText();
|
|
58
76
|
}
|
|
59
77
|
|
|
60
78
|
public async fill(value: string): Promise<void> {
|
|
61
79
|
await Promise.all([
|
|
62
|
-
this.
|
|
80
|
+
this._objects
|
|
81
|
+
.input()
|
|
63
82
|
.page()
|
|
64
83
|
.waitForResponse((response) => response.url().includes('/list_') && response.request().method() === 'GET'),
|
|
65
|
-
this.
|
|
84
|
+
this._objects.input().click()
|
|
66
85
|
]);
|
|
67
86
|
|
|
68
87
|
await Promise.all([
|
|
69
|
-
this.
|
|
88
|
+
this._objects
|
|
89
|
+
.input()
|
|
70
90
|
.page()
|
|
71
91
|
.waitForResponse((response) => response.url().includes('/list_') && response.request().method() === 'GET'),
|
|
72
|
-
this.
|
|
92
|
+
this._objects.input().fill(value)
|
|
73
93
|
]);
|
|
74
94
|
}
|
|
75
95
|
|
|
76
96
|
private async select(optionToSelect: string) {
|
|
77
97
|
const optionsToSelectRegex = new RegExp(`^${escapeRegex(optionToSelect)}$`, 'i');
|
|
78
98
|
|
|
79
|
-
await this.
|
|
80
|
-
await this.
|
|
99
|
+
await this._objects.input().page().getByTestId('autocomplete__menu').getByText(optionsToSelectRegex).click();
|
|
100
|
+
await this._objects
|
|
101
|
+
.input()
|
|
81
102
|
.page()
|
|
82
|
-
.waitForFunction((el) => document.activeElement === el, await this.
|
|
103
|
+
.waitForFunction((el) => document.activeElement === el, await this._objects.input().elementHandle());
|
|
83
104
|
}
|
|
84
105
|
}
|
|
85
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Creates an `ILookupDropdown` proxy that intercepts named `LookupDropdown` methods from
|
|
109
|
+
* the class prototype and falls back to the base `Locator` for everything else, effectively
|
|
110
|
+
* merging the typed dropdown interface with standard Playwright locator capabilities.
|
|
111
|
+
* @param context - The parent locator to scope the control within.
|
|
112
|
+
* @param id - The field identifier used to build the scoped locator.
|
|
113
|
+
* @returns A proxy combining `ILookupDropdownCore` methods and `Locator` capabilities.
|
|
114
|
+
*/
|
|
86
115
|
export function createLookupDropdown(context: Locator, id: string): ILookupDropdown {
|
|
87
116
|
const dropdown = new LookupDropdown(context, id);
|
|
117
|
+
const customProps = new Set(Object.getOwnPropertyNames(LookupDropdown.prototype).filter((p) => p !== 'constructor'));
|
|
88
118
|
|
|
89
|
-
return new Proxy(
|
|
119
|
+
return new Proxy(context, {
|
|
90
120
|
get(target, prop, receiver) {
|
|
91
|
-
if (prop
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (typeof value === 'function') {
|
|
98
|
-
return value.bind(dropdown);
|
|
121
|
+
if (customProps.has(prop as string)) {
|
|
122
|
+
const value = (dropdown as any)[prop];
|
|
123
|
+
if (typeof value === 'function') {
|
|
124
|
+
return value.bind(dropdown);
|
|
125
|
+
}
|
|
126
|
+
return value;
|
|
99
127
|
}
|
|
100
|
-
return
|
|
128
|
+
return Reflect.get(target, prop, receiver);
|
|
101
129
|
}
|
|
102
130
|
}) as unknown as ILookupDropdown;
|
|
103
131
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
export class LookupDropdownObjects {
|
|
4
|
+
private _id: string;
|
|
5
|
+
private _context: Locator;
|
|
6
|
+
|
|
7
|
+
constructor(context: Locator, id: string) {
|
|
8
|
+
this._context = context;
|
|
9
|
+
this._id = id;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public formField = (): Locator => this._context.getByTestId(`form-field__${this._id}`);
|
|
13
|
+
|
|
14
|
+
public label = (): Locator => this.formField().getByTestId(`form-field__${this._id}__label`);
|
|
15
|
+
|
|
16
|
+
public input = (): Locator => this.formField().locator('input');
|
|
17
|
+
|
|
18
|
+
public validationMessage = (): Locator => this.formField().locator('.TooltipContainer p');
|
|
19
|
+
}
|
package/dist/Testwise.js
CHANGED
|
@@ -6,6 +6,41 @@ import { WaitEventHandler } from './page-extensions/WaitEventHandler.js';
|
|
|
6
6
|
import { ClickOverride } from './page-overrides/ClickOverride.js';
|
|
7
7
|
import { FillOverride } from './page-overrides/FillOverride.js';
|
|
8
8
|
export * from '@playwright/test';
|
|
9
|
+
/**
|
|
10
|
+
* The main entry point for the Testwise library.
|
|
11
|
+
*
|
|
12
|
+
* **What to import:** Consumer projects import `test` (and optionally
|
|
13
|
+
* `bddTest`) from `@thinkwise/testwise` instead of from `@playwright/test`.
|
|
14
|
+
* This gives you a fully-extended fixture with all Testwise capabilities
|
|
15
|
+
* already wired up:
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { test, expect } from '@thinkwise/testwise';
|
|
19
|
+
*
|
|
20
|
+
* test('create employee', async ({ page }) => {
|
|
21
|
+
* await page.logIn();
|
|
22
|
+
* const emp = await page.subject.EmployeeEditable1Main.goTo();
|
|
23
|
+
* await emp.form.firstNameField.fill('Jane');
|
|
24
|
+
* await emp.actionBar.save();
|
|
25
|
+
* await expect(page.components.snackBar.message).toBeVisible();
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* **What `test` adds on top of Playwright base:**
|
|
30
|
+
*
|
|
31
|
+
* | Layer | What it adds |
|
|
32
|
+
* |---|---|
|
|
33
|
+
* | `ClickOverride` / `FillOverride` | Patches `page.click` and `page.fill` to wait for XHR idle after each action |
|
|
34
|
+
* | `Components` | `page.components` — global Thinkwise UI component instances |
|
|
35
|
+
* | `GoToDeepLink` | `page.goToDeepLink(path)` — deep-link navigation |
|
|
36
|
+
* | `LoginFeatures` | `page.logIn()` / `page.logOut()` etc. |
|
|
37
|
+
* | `UserSimulation` | `page.simulate.*` — keyboard/mouse helpers |
|
|
38
|
+
* | `WaitEventHandler` | `page.waitEvent(url)` — waits for specific response URLs |
|
|
39
|
+
* | `SubjectRegistry` | `page.subject.*` — access to all generated subject classes |
|
|
40
|
+
*
|
|
41
|
+
* Use `bddTest` instead of `test` when combining Testwise with `playwright-bdd`
|
|
42
|
+
* step definitions.
|
|
43
|
+
*/
|
|
9
44
|
function combineExtensions(baseTest, ...extensions) {
|
|
10
45
|
return extensions.reduce((test, Extension) => new Extension(test).test, baseTest);
|
|
11
46
|
}
|
package/dist/Testwise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testwise.js","sourceRoot":"","sources":["../Testwise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,cAAc,kBAAkB,CAAC;AAEjC,SAAS,iBAAiB,CAAC,QAAc,EAAE,GAAG,UAAkD;IAC9F,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,mBAAmB;IACnB,aAAa;IACb,YAAY;IAEZ,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAS,iBAAiB,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"Testwise.js","sourceRoot":"","sources":["../Testwise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,cAAc,kBAAkB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAS,iBAAiB,CAAC,QAAc,EAAE,GAAG,UAAkD;IAC9F,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,mBAAmB;IACnB,aAAa;IACb,YAAY;IAEZ,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAS,iBAAiB,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
2
|
+
/**
|
|
3
|
+
* Manages backup and restore of the `test-artifacts/` directory to protect
|
|
4
|
+
* against failed or partial pipeline runs.
|
|
5
|
+
*
|
|
6
|
+
* **What it does:**
|
|
7
|
+
* - Before the pipeline writes any new files it calls `performBackup()` to
|
|
8
|
+
* copy the existing `test-artifacts/` folder into a sibling
|
|
9
|
+
* `@thinkwise/backups/test-artifacts/` package that survives `node_modules`
|
|
10
|
+
* reinstalls.
|
|
11
|
+
* - If the pipeline fails, the caller invokes `restoreBackup()` to reinstate
|
|
12
|
+
* the last known-good artifacts so the consumer project's tests remain
|
|
13
|
+
* runnable while the issue is investigated.
|
|
14
|
+
*
|
|
15
|
+
* **When it is called:** Automatically by `sync.js` at the start and on
|
|
16
|
+
* failure of every `testwise sync` run. You do not need to call it manually.
|
|
17
|
+
*/
|
|
1
18
|
export declare class ArtifactManager {
|
|
2
19
|
private _backupPath;
|
|
3
20
|
private _artifactPath;
|
|
4
|
-
constructor();
|
|
21
|
+
constructor(paths?: PipelinePaths);
|
|
5
22
|
performBackup(): void;
|
|
6
23
|
backupExists(): boolean;
|
|
7
24
|
restoreBackup(): void;
|
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
5
|
+
/**
|
|
6
|
+
* Manages backup and restore of the `test-artifacts/` directory to protect
|
|
7
|
+
* against failed or partial pipeline runs.
|
|
8
|
+
*
|
|
9
|
+
* **What it does:**
|
|
10
|
+
* - Before the pipeline writes any new files it calls `performBackup()` to
|
|
11
|
+
* copy the existing `test-artifacts/` folder into a sibling
|
|
12
|
+
* `@thinkwise/backups/test-artifacts/` package that survives `node_modules`
|
|
13
|
+
* reinstalls.
|
|
14
|
+
* - If the pipeline fails, the caller invokes `restoreBackup()` to reinstate
|
|
15
|
+
* the last known-good artifacts so the consumer project's tests remain
|
|
16
|
+
* runnable while the issue is investigated.
|
|
17
|
+
*
|
|
18
|
+
* **When it is called:** Automatically by `sync.js` at the start and on
|
|
19
|
+
* failure of every `testwise sync` run. You do not need to call it manually.
|
|
20
|
+
*/
|
|
4
21
|
export class ArtifactManager {
|
|
5
|
-
constructor() {
|
|
22
|
+
constructor(paths) {
|
|
23
|
+
const p = paths ?? new PipelinePaths();
|
|
24
|
+
this._artifactPath = p.testArtifacts;
|
|
25
|
+
// The backup is stored in the sibling @thinkwise/backups package so it
|
|
26
|
+
// survives reinstalls of this package. Three levels up from
|
|
27
|
+
// dist/artifact-builder/ lands at node_modules/@thinkwise/ (the org scope
|
|
28
|
+
// folder), and from there we descend into the backups package.
|
|
6
29
|
const _filename = fileURLToPath(import.meta.url);
|
|
7
30
|
const _dirname = path.dirname(_filename);
|
|
8
31
|
this._backupPath = path.resolve(_dirname, '..', '..', '..', 'backups', 'test-artifacts');
|
|
9
|
-
this._artifactPath = path.resolve(_dirname, '..', '..', 'test-artifacts');
|
|
10
32
|
}
|
|
11
33
|
performBackup() {
|
|
12
34
|
if (fs.existsSync(this._artifactPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArtifactManager.js","sourceRoot":"","sources":["../../artifact-builder/ArtifactManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ArtifactManager.js","sourceRoot":"","sources":["../../artifact-builder/ArtifactManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAe;IAI1B,YAAY,KAAqB;QAC/B,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QAErC,uEAAuE;QACvE,4DAA4D;QAC5D,0EAA0E;QAC1E,+DAA+D;QAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC3F,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IComponentSchemaMeta } from '../interfaces/IComponentSchemaMeta.js';
|
|
2
|
+
import type { SubjectComponents } from '../types/Components.js';
|
|
3
|
+
import type { NamingHandler } from './helpers/NamingHandler.js';
|
|
4
|
+
import type { SelectorBuilder } from './SelectorBuilder.js';
|
|
5
|
+
import type { ComponentAssignmentModel, ComponentClassModel, ComponentGetterModel, ComponentPropertyModel } from './TsFileModel.js';
|
|
6
|
+
/**
|
|
7
|
+
* **Pipeline sub-step** — Builds a pure in-memory model (`ComponentClassModel`)
|
|
8
|
+
* for the typed component class appended to a generated screen interface file
|
|
9
|
+
* (e.g. `EmployeeForm`, `EmployeeGrid`). Contains no file I/O — fully unit-testable.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ComponentClassModelBuilder {
|
|
12
|
+
private readonly _namingHandler;
|
|
13
|
+
private readonly _selectorBuilder;
|
|
14
|
+
constructor(namingHandler: NamingHandler, selectorBuilder: SelectorBuilder);
|
|
15
|
+
build(interfaceName: string, componentType: SubjectComponents, propertyLines: string[], meta: IComponentSchemaMeta): ComponentClassModel;
|
|
16
|
+
buildGetters(propertyLines: string[], meta: IComponentSchemaMeta): ComponentGetterModel[];
|
|
17
|
+
buildProperties(propertyLines: string[], meta: IComponentSchemaMeta): ComponentPropertyModel[];
|
|
18
|
+
buildAssignments(propertyLines: string[], meta: IComponentSchemaMeta): ComponentAssignmentModel[];
|
|
19
|
+
private resolvePropertyType;
|
|
20
|
+
private getElementTypeFromPropertyName;
|
|
21
|
+
private getColIdFromPropertyName;
|
|
22
|
+
}
|