@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/components/grid/Grid.ts
CHANGED
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { pollUntil } from '../../helpers/Poll.js';
|
|
3
3
|
import { escapeRegex } from '../../helpers/RegexHelper.js';
|
|
4
|
+
import { ExcelStyleFilterPopup } from '../index.js';
|
|
4
5
|
import { GridObjects } from './GridObjects.js';
|
|
5
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Wraps a Thinkwise grid (list view) component. Provides row/cell navigation,
|
|
9
|
+
* filtering, sorting, and value-reading helpers.
|
|
10
|
+
*
|
|
11
|
+
* In generated subject classes, you interact with `Grid` indirectly through
|
|
12
|
+
* the typed `Components/` class (e.g. `EmployeeGridComponent`) which exposes
|
|
13
|
+
* named `IGridColumnControl` properties per column. Use `Grid` directly only
|
|
14
|
+
* for low-level operations not covered by the generated accessors.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Via generated subject (preferred):
|
|
18
|
+
* const names = await subject.grid.employeeNameColumn.getCellValues();
|
|
19
|
+
*
|
|
20
|
+
* // Via raw Grid helper:
|
|
21
|
+
* await subject.grid.clickRow(0);
|
|
22
|
+
* const count = await subject.grid.getRowCount();
|
|
23
|
+
*/
|
|
6
24
|
export class Grid {
|
|
7
25
|
private _gridObjects: GridObjects;
|
|
8
26
|
private _page: Page;
|
|
27
|
+
private _excelStyleFilterPopup: ExcelStyleFilterPopup;
|
|
9
28
|
|
|
10
29
|
constructor(gridContext: Locator) {
|
|
11
30
|
this._gridObjects = new GridObjects(gridContext.page(), gridContext);
|
|
12
31
|
this._page = gridContext.page();
|
|
32
|
+
this._excelStyleFilterPopup = new ExcelStyleFilterPopup(this._page);
|
|
13
33
|
}
|
|
14
34
|
|
|
15
35
|
protected get page() {
|
|
@@ -57,8 +77,11 @@ export class Grid {
|
|
|
57
77
|
* @param columnName - The name of the column for which to open the filter popup.
|
|
58
78
|
* @returns A promise that resolves when the filter popup is opened.
|
|
59
79
|
*/
|
|
60
|
-
public openExcelStyleFilterPopup = async (
|
|
61
|
-
const filterIcon =
|
|
80
|
+
public openExcelStyleFilterPopup = async (columnNameOrHeader: string | Locator) => {
|
|
81
|
+
const filterIcon =
|
|
82
|
+
typeof columnNameOrHeader === 'string'
|
|
83
|
+
? this._gridObjects.menuIconByColumnHeaderName(columnNameOrHeader)
|
|
84
|
+
: columnNameOrHeader.getByTestId('grid__custom__filter__icon');
|
|
62
85
|
await filterIcon.click({ force: true });
|
|
63
86
|
};
|
|
64
87
|
|
|
@@ -127,34 +150,47 @@ export class Grid {
|
|
|
127
150
|
* await grid.filterByColumnValueExcelStyle('Status', 'Active');
|
|
128
151
|
* await grid.filterByColumnValueExcelStyle('Status', 'Pending', false);
|
|
129
152
|
*/
|
|
153
|
+
|
|
130
154
|
public async filterByColumnValueExcelStyle(
|
|
131
155
|
columnName: string,
|
|
132
156
|
valueToSelect: string,
|
|
157
|
+
deselectAll?: boolean
|
|
158
|
+
): Promise<void>;
|
|
159
|
+
public async filterByColumnValueExcelStyle(
|
|
160
|
+
columnHeader: Locator,
|
|
161
|
+
valueToSelect: string,
|
|
162
|
+
deselectAll?: boolean
|
|
163
|
+
): Promise<void>;
|
|
164
|
+
public async filterByColumnValueExcelStyle(
|
|
165
|
+
columnNameOrHeader: string | Locator,
|
|
166
|
+
valueToSelect: string,
|
|
133
167
|
deselectAll: boolean = true
|
|
134
168
|
): Promise<void> {
|
|
135
|
-
await this.openExcelStyleFilterPopup(
|
|
169
|
+
await this.openExcelStyleFilterPopup(columnNameOrHeader);
|
|
136
170
|
|
|
137
171
|
// Get column ID from header and normalize it (snake_case -> kebab-case)
|
|
138
|
-
const header =
|
|
172
|
+
const header =
|
|
173
|
+
typeof columnNameOrHeader === 'string'
|
|
174
|
+
? this._gridObjects.columnHeaderByName(columnNameOrHeader)
|
|
175
|
+
: columnNameOrHeader;
|
|
139
176
|
const rawColumnId = await header.getAttribute('col-id');
|
|
140
177
|
if (!rawColumnId) {
|
|
141
|
-
throw new Error(
|
|
178
|
+
throw new Error(
|
|
179
|
+
`Could not find col-id for column${typeof columnNameOrHeader === 'string' ? ` "${columnNameOrHeader}"` : ''}`
|
|
180
|
+
);
|
|
142
181
|
}
|
|
143
182
|
const columnId = rawColumnId.toLowerCase().replace(/_/g, '-');
|
|
144
183
|
|
|
145
|
-
const popup = this._gridObjects.excelStyleFilterPopup(columnId);
|
|
146
|
-
await
|
|
184
|
+
//const popup = this._gridObjects.excelStyleFilterPopup(columnId);
|
|
185
|
+
await this._excelStyleFilterPopup.waitForOpen();
|
|
147
186
|
|
|
148
187
|
if (deselectAll) {
|
|
149
|
-
await this.
|
|
188
|
+
await this._excelStyleFilterPopup.deselectAll(columnId);
|
|
150
189
|
}
|
|
151
190
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
await
|
|
155
|
-
|
|
156
|
-
await this._gridObjects.mainHeader.click(); // Click outside to close the popup
|
|
157
|
-
await popup.waitFor({ state: 'detached' });
|
|
191
|
+
await this._excelStyleFilterPopup.clickCheckboxItem(columnId, valueToSelect);
|
|
192
|
+
await this._gridObjects.mainHeader.click();
|
|
193
|
+
await this._excelStyleFilterPopup.waitForClose();
|
|
158
194
|
}
|
|
159
195
|
|
|
160
196
|
/**
|
|
@@ -2,11 +2,8 @@ import type { Locator, Page } from '@playwright/test';
|
|
|
2
2
|
import { BaseComponentObjects } from '../BaseComponentObjects.js';
|
|
3
3
|
|
|
4
4
|
export class GridObjects extends BaseComponentObjects {
|
|
5
|
-
private _page: Page;
|
|
6
|
-
|
|
7
5
|
constructor(page: Page, context: Locator | null = null) {
|
|
8
6
|
super(page, context);
|
|
9
|
-
this._page = page;
|
|
10
7
|
}
|
|
11
8
|
|
|
12
9
|
public columnHeaderByText = (text: string) => this.context.locator('[role="columnheader"]', { hasText: text });
|
|
@@ -33,18 +30,6 @@ export class GridObjects extends BaseComponentObjects {
|
|
|
33
30
|
|
|
34
31
|
public columnByRowLocator = (rowLocator: Locator) => rowLocator.locator('.ag-cell');
|
|
35
32
|
|
|
36
|
-
public excelStyleFilterPopup = (columnId: string) => this._page.getByTestId(`lookup-excel-filter__${columnId}__list`);
|
|
37
|
-
|
|
38
|
-
public excelStyleFilterSelectAllCheckbox = (columnId: string) =>
|
|
39
|
-
this._page.locator(
|
|
40
|
-
`[data-testid="lookup-excel-filter__${columnId}__list-item-select-all-checkbox"] input[type="checkbox"]`
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
public excelStyleFilterPopupOptionByText = (columnId: string, optionText: RegExp) =>
|
|
44
|
-
this._page
|
|
45
|
-
.locator(`[data-testid^="lookup-excel-filter__${columnId}__list-item-button"]`)
|
|
46
|
-
.filter({ hasText: optionText });
|
|
47
|
-
|
|
48
33
|
public gridCell = () => this.context.locator('[role="gridcell"]');
|
|
49
34
|
|
|
50
35
|
public noRowsOverlay = () => this.context.locator('.ag-overlay-no-rows-center');
|
package/components/maps/Maps.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { MapsObjects } from './MapsObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise maps component that displays geographical data on an
|
|
6
|
+
* interactive map.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `maps` property.
|
|
9
|
+
*/
|
|
4
10
|
export class Maps {
|
|
5
11
|
mapsObjects: MapsObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { ListBarMenuComponentObjects } from './ListBarMenuComponentObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise list-bar hamburger menu used to navigate between
|
|
6
|
+
* subjects and module groups.
|
|
7
|
+
*
|
|
8
|
+
* Access via `page.components.listBarMenu` — no need to construct this yourself.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Navigate to the Employee subject via the menu:
|
|
12
|
+
* await page.components.listBarMenu.openListBarMenuItem('HR', 'Employee');
|
|
13
|
+
*/
|
|
4
14
|
export class ListBarMenuComponent {
|
|
5
15
|
private _objects: ListBarMenuComponentObjects;
|
|
6
16
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { PivotGridObjects } from './PivotGridObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise pivot-grid component that presents data in a
|
|
6
|
+
* cross-tabulated matrix view for analysis.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `pivotGrid` property.
|
|
9
|
+
*/
|
|
4
10
|
export class PivotGrid {
|
|
5
11
|
pivotGridObjects: PivotGridObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { PivotGridFieldListObjects } from './PivotGridFieldListObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise pivot-grid field list panel that lets users drag
|
|
6
|
+
* dimensions and measures into rows, columns, and value areas of the pivot.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed alongside `PivotGrid` as a
|
|
9
|
+
* typed `pivotGridFieldList` property.
|
|
10
|
+
*/
|
|
4
11
|
export class PivotGridFieldList {
|
|
5
12
|
pivotGridFieldListObjects: PivotGridFieldListObjects;
|
|
6
13
|
|
|
@@ -2,6 +2,18 @@ import type { Locator, Page } from '@playwright/test';
|
|
|
2
2
|
import { pollUntil } from '../../helpers/Poll.js';
|
|
3
3
|
import { AllRowsPopupObjects } from './AllRowsPopUpObjects.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Handles the "Apply to all rows or selected rows?" popup that Thinkwise
|
|
7
|
+
* shows for bulk operations (mass update, mass delete).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* // Select all rows and confirm:
|
|
11
|
+
* await subject.actionBar.clickDeleteAllRows();
|
|
12
|
+
* const popup = new AllRowsPopup(page);
|
|
13
|
+
* await popup.waitForOpen();
|
|
14
|
+
* await popup.allRowsRadioButton().click();
|
|
15
|
+
* await popup.confirmButton().click();
|
|
16
|
+
*/
|
|
5
17
|
export class AllRowsPopup {
|
|
6
18
|
private readonly deletePopup: boolean;
|
|
7
19
|
private _allRowsPopupObjects: AllRowsPopupObjects;
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { PopUpComponentObjects } from './PopUpComponentObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise modal/popup dialog that appears for confirmations,
|
|
6
|
+
* warnings, and input prompts (e.g. "Are you sure?" dialogs, save conflicts).
|
|
7
|
+
*
|
|
8
|
+
* Access via `page.components.popUp` — no need to construct this yourself.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Confirm a delete prompt:
|
|
12
|
+
* await page.components.popUp.getActionButtonByText('Yes').click();
|
|
13
|
+
* const msg = await page.components.popUp.getContentText();
|
|
14
|
+
*/
|
|
4
15
|
export class PopUpComponent {
|
|
5
16
|
private _objects: PopUpComponentObjects;
|
|
6
17
|
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { PrefilterListObjects } from './PrefilterListObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise prefilter-list panel that shows available prefilters
|
|
6
|
+
* for a subject. Enables selecting and activating prefilters in tests.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `prefilterList` property.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await subject.prefilterList.context.getByText('Active employees').click();
|
|
12
|
+
*/
|
|
4
13
|
export class PrefilterList {
|
|
5
14
|
prefilterListObjects: PrefilterListObjects;
|
|
6
15
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { PreviewObjects } from './PreviewObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise preview component that shows a read-only rendered
|
|
6
|
+
* preview of a report or document within a subject screen.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `preview` property.
|
|
9
|
+
*/
|
|
4
10
|
export class Preview {
|
|
5
11
|
previewObjects: PreviewObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { ReportBarObjects } from './ReportBarObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise report-bar component that provides controls for
|
|
6
|
+
* selecting and generating reports tied to a subject.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `reportBar` property.
|
|
9
|
+
*/
|
|
4
10
|
export class ReportBar {
|
|
5
11
|
reportBarObjects: ReportBarObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { ReportTilesObjects } from './ReportTilesObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise report-tiles component that displays available reports
|
|
6
|
+
* as clickable tiles on a dashboard-style screen.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `reportTiles` property.
|
|
9
|
+
*/
|
|
4
10
|
export class ReportTiles {
|
|
5
11
|
reportTilesObjects: ReportTilesObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { SchedulerObjects } from './SchedulerObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise scheduler component that renders time-based data as a
|
|
6
|
+
* calendar / appointment view.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `scheduler` property.
|
|
9
|
+
*/
|
|
4
10
|
export class Scheduler {
|
|
5
11
|
treeViewObjects: SchedulerObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { SnackBarObjects } from './SnackBarObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise snackbar / toast notification bar shown at the bottom
|
|
6
|
+
* of the screen after saves, errors, and background operations.
|
|
7
|
+
*
|
|
8
|
+
* Access via `page.components.snackBar` — no need to construct this yourself.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await employee.actionBar.save();
|
|
12
|
+
* const msg = await page.components.snackBar.getSnackbarText();
|
|
13
|
+
* // or check visibility:
|
|
14
|
+
* await expect(page.components.snackBar.getSnackbar()).toBeVisible();
|
|
15
|
+
*/
|
|
4
16
|
export class SnackBarComponent {
|
|
5
17
|
private _objects: SnackBarObjects;
|
|
6
18
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { SplitterObjects } from './SplitterObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise splitter component that divides the screen into
|
|
6
|
+
* resizable panels (e.g. master/detail split, filter panel divider).
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `splitter` property.
|
|
9
|
+
*/
|
|
4
10
|
export class Splitter {
|
|
5
11
|
splitterObjects: SplitterObjects;
|
|
6
12
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { BaseTabObjects } from './BaseTabObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Shared base class for `Tab` and `DetailTabPage` containing the common
|
|
6
|
+
* tab-strip interaction methods (open by label, open by index, get active tab).
|
|
7
|
+
* Do not use this directly — use `Tab` or `DetailTabPage` in tests.
|
|
8
|
+
*/
|
|
4
9
|
export class BaseTab {
|
|
5
10
|
protected _objects: BaseTabObjects;
|
|
6
11
|
|
|
@@ -2,6 +2,17 @@ import type { Locator } from '@playwright/test';
|
|
|
2
2
|
import { BaseTab } from './BaseTab.js';
|
|
3
3
|
import { DetailTabPageObjects } from './DetailTabPageObjects.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a Thinkwise detail-tab page — a full sub-screen that loads inside a
|
|
7
|
+
* tab panel, typically showing related data for the selected master record.
|
|
8
|
+
*
|
|
9
|
+
* In generated subject classes this is exposed as a typed `detailTabPage`
|
|
10
|
+
* property. Switch to a detail tab first, then interact with its content.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* await subject.tab.openDetailTabByLabel('Addresses');
|
|
14
|
+
* await subject.detailTabPage.context.waitFor({ state: 'visible' });
|
|
15
|
+
*/
|
|
5
16
|
export class DetailTabPage extends BaseTab {
|
|
6
17
|
protected _objects: DetailTabPageObjects;
|
|
7
18
|
|
package/components/tab/Tab.ts
CHANGED
|
@@ -2,6 +2,16 @@ import type { Locator } from '@playwright/test';
|
|
|
2
2
|
import { BaseTab } from './BaseTab.js';
|
|
3
3
|
import { TabObjects } from './TabObjects.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a Thinkwise tab-strip component used to switch between related screens
|
|
7
|
+
* (e.g. detail tabs, sub-screens within a subject).
|
|
8
|
+
*
|
|
9
|
+
* In generated subject classes this is exposed as a typed `tab` property.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // Navigate to the "Addresses" detail tab:
|
|
13
|
+
* await subject.tab.openDetailTabByLabel('Addresses');
|
|
14
|
+
*/
|
|
5
15
|
export class Tab extends BaseTab {
|
|
6
16
|
protected _objects: TabObjects;
|
|
7
17
|
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { TaskBarObjects } from './TaskBarObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise task-bar component that shows process/workflow task
|
|
6
|
+
* buttons in a horizontal bar at the bottom or top of a subject screen.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `taskBar` property.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await subject.taskBar.getTaskById('approve').click();
|
|
12
|
+
* const label = await subject.taskBar.getTaskByLabel('Approve').textContent();
|
|
13
|
+
*/
|
|
4
14
|
export class TaskBar {
|
|
5
15
|
private _taskBarObjects: TaskBarObjects;
|
|
6
16
|
|
|
7
17
|
/**
|
|
8
|
-
* @param
|
|
18
|
+
* @param context the taskbar container element (same idea as Grid's context)
|
|
9
19
|
*/
|
|
10
|
-
constructor(
|
|
11
|
-
this._taskBarObjects = new TaskBarObjects(
|
|
20
|
+
constructor(context: Locator) {
|
|
21
|
+
this._taskBarObjects = new TaskBarObjects(context.page(), context);
|
|
12
22
|
}
|
|
13
23
|
|
|
14
24
|
/** returns all task buttons */
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { TaskTilesObjects } from './TaskTilesObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise task-tiles component that displays tasks as clickable
|
|
6
|
+
* tile buttons on a dashboard or process-flow screen.
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `taskTiles` property.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await subject.taskTiles.getTileByLabel('Approve').click();
|
|
12
|
+
*/
|
|
4
13
|
export class TaskTiles {
|
|
5
14
|
private _taskTilesObjects: TaskTilesObjects;
|
|
6
15
|
|
|
7
16
|
/**
|
|
8
|
-
* @param
|
|
17
|
+
* @param context the taskTiles container element
|
|
9
18
|
*/
|
|
10
|
-
constructor(
|
|
11
|
-
this._taskTilesObjects = new TaskTilesObjects(
|
|
19
|
+
constructor(context: Locator) {
|
|
20
|
+
this._taskTilesObjects = new TaskTilesObjects(context.page(), context);
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
/** returns all task tile buttons */
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { TopBarObjects } from './TopBarObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise application top bar that shows the page title,
|
|
6
|
+
* breadcrumb trail, and the user/application menu.
|
|
7
|
+
*
|
|
8
|
+
* Access via `page.components.topBar` — no need to construct this yourself.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const title = await page.components.topBar.getTopBarTitle().textContent();
|
|
12
|
+
* const breadcrumb = await page.components.topBar.getTopBarBreadcrumb().textContent();
|
|
13
|
+
*/
|
|
4
14
|
export class TopBarComponent {
|
|
5
15
|
private _objects: TopBarObjects;
|
|
6
16
|
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { TreeViewObjects } from './TreeViewObjects.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the Thinkwise tree-view navigation component used to display
|
|
6
|
+
* hierarchical data structures (e.g. organisational trees, folder structures).
|
|
7
|
+
*
|
|
8
|
+
* In generated subject classes this is exposed as a typed `treeView` property.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await subject.treeView.context.getByText('Europe').click();
|
|
12
|
+
*/
|
|
4
13
|
export class TreeView {
|
|
5
14
|
treeViewObjects: TreeViewObjects;
|
|
6
15
|
|
package/controls/DateControl.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
|
+
import { DateControlObjects } from './DateControlObjects.js';
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Typed proxy for a date-picker field (`control_type: "date_picker"`) 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 `IDateControl` for each date
|
|
12
|
+
* field on the form:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Fill accepts any common date format — numbers are extracted and entered
|
|
16
|
+
* // sequentially so the date picker can apply its own formatting:
|
|
17
|
+
* await subject.form.hireDateField.fill('15-03-2025');
|
|
18
|
+
* await subject.form.hireDateField.fill('03/15/2025');
|
|
19
|
+
* await subject.form.hireDateField.fill('20250315'); // also works
|
|
20
|
+
*
|
|
21
|
+
* const raw = await subject.form.hireDateField.inputValue();
|
|
22
|
+
* await subject.form.hireDateField.clear();
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* The returned value is a **Proxy** — it works as both a Playwright `Locator`
|
|
26
|
+
* and a typed date control.
|
|
27
|
+
*/
|
|
5
28
|
export type IDateControl = Locator & IDateControlCore;
|
|
6
29
|
|
|
7
30
|
export type IDateControlCore = {
|
|
@@ -12,12 +35,10 @@ export type IDateControlCore = {
|
|
|
12
35
|
};
|
|
13
36
|
|
|
14
37
|
export class DateControl implements IDateControlCore {
|
|
15
|
-
private
|
|
16
|
-
private _inputLocator: Locator;
|
|
38
|
+
private _objects: DateControlObjects;
|
|
17
39
|
|
|
18
40
|
constructor(context: Locator, id: string) {
|
|
19
|
-
this.
|
|
20
|
-
this._inputLocator = this._dateFieldLocator.locator('input');
|
|
41
|
+
this._objects = new DateControlObjects(context, id);
|
|
21
42
|
}
|
|
22
43
|
|
|
23
44
|
/**
|
|
@@ -30,23 +51,40 @@ export class DateControl implements IDateControlCore {
|
|
|
30
51
|
public async fill(value: string): Promise<void> {
|
|
31
52
|
const numbersOnlyValue = value.replace(/\D/g, '');
|
|
32
53
|
|
|
33
|
-
await this.
|
|
34
|
-
await this.
|
|
54
|
+
await this._objects.fieldInput().click();
|
|
55
|
+
await this._objects.fieldInput().pressSequentially(numbersOnlyValue);
|
|
35
56
|
}
|
|
36
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Clears the date input by filling it with an empty string.
|
|
60
|
+
*/
|
|
37
61
|
public async clear(): Promise<void> {
|
|
38
|
-
await this.
|
|
62
|
+
await this._objects.fieldInput().fill('');
|
|
39
63
|
}
|
|
40
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Returns the current raw string value from the underlying date input element.
|
|
67
|
+
*/
|
|
41
68
|
public async inputValue(): Promise<string> {
|
|
42
|
-
return await this.
|
|
69
|
+
return await this._objects.fieldInput().inputValue();
|
|
43
70
|
}
|
|
44
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Returns the Playwright `Locator` for the underlying `<input>` element of the date field.
|
|
74
|
+
*/
|
|
45
75
|
public inputElement(): Locator {
|
|
46
|
-
return this.
|
|
76
|
+
return this._objects.fieldInput();
|
|
47
77
|
}
|
|
48
78
|
}
|
|
49
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Creates an `IDateControl` proxy that merges `DateControl` interaction methods with
|
|
82
|
+
* the underlying Playwright `Locator` for the `form-field__<id>` test ID.
|
|
83
|
+
* Use the returned value as both a typed date control and a regular Playwright locator.
|
|
84
|
+
* @param context - The parent locator to scope the control within.
|
|
85
|
+
* @param id - The field identifier used to locate `[data-testid="form-field__<id>"]`.
|
|
86
|
+
* @returns A proxy combining `IDateControlCore` methods and `Locator` capabilities.
|
|
87
|
+
*/
|
|
50
88
|
export function createDateControl(context: Locator, id: string): IDateControl {
|
|
51
89
|
const inputFieldControl = new DateControl(context, id);
|
|
52
90
|
const locator = context.getByTestId(`form-field__${id}`);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
export class DateControlObjects {
|
|
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 fieldInput = (): Locator => this._context;
|
|
13
|
+
|
|
14
|
+
public dateField = (): Locator => this._context.getByTestId(`form-field__${this._id}`);
|
|
15
|
+
}
|