@thinkwise/testwise 0.2.67 → 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 +35 -2
- 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 +18 -1
- 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 +40 -1
- package/controls/FormComboBox.ts +30 -0
- package/controls/GridColumnControl.ts +34 -3
- package/controls/InputFieldControl.ts +49 -0
- package/controls/LookupDropdown.ts +29 -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 +17 -4
- package/dist/components/filter/ExcelStyleFilterPopup.js +35 -23
- package/dist/components/filter/ExcelStyleFilterPopup.js.map +1 -1
- package/dist/components/filter/ExcelStyleFilterPopupObjects.d.ts +1 -1
- package/dist/components/filter/ExcelStyleFilterPopupObjects.js +2 -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 +17 -0
- package/dist/components/grid/Grid.js +18 -1
- package/dist/components/grid/Grid.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 +39 -0
- package/dist/controls/DateControl.js +18 -1
- package/dist/controls/DateControl.js.map +1 -1
- package/dist/controls/FormComboBox.d.ts +30 -0
- package/dist/controls/FormComboBox.js +8 -0
- package/dist/controls/FormComboBox.js.map +1 -1
- package/dist/controls/GridColumnControl.d.ts +30 -0
- package/dist/controls/GridColumnControl.js +12 -3
- package/dist/controls/GridColumnControl.js.map +1 -1
- package/dist/controls/InputFieldControl.d.ts +49 -0
- package/dist/controls/InputFieldControl.js +30 -0
- package/dist/controls/InputFieldControl.js.map +1 -1
- package/dist/controls/LookupDropdown.d.ts +29 -0
- package/dist/controls/LookupDropdown.js +8 -0
- package/dist/controls/LookupDropdown.js.map +1 -1
- 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
|
@@ -1,80 +1,58 @@
|
|
|
1
|
-
import type { Locator
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
2
2
|
import { FlightTracker } from '../helpers/FlightTracker.js';
|
|
3
3
|
import { testwiseConfig } from '../services/ConfigBuilder.js';
|
|
4
4
|
import type { Test } from '../types/Test.js';
|
|
5
5
|
|
|
6
6
|
const waitForRequestsToComplete =
|
|
7
7
|
testwiseConfig().get<boolean>('featureSettings.InflightRequests.waitForRequestsToComplete') ?? true;
|
|
8
|
-
const continueOnError = testwiseConfig().get<boolean>('featureSettings.InflightRequests.continueOnError') ?? true;
|
|
9
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Playwright fixture layer that wraps every Locator `click()` call to wait
|
|
11
|
+
* for in-flight XHR requests to settle before returning control to the test.
|
|
12
|
+
*
|
|
13
|
+
* **Why this exists:** The Thinkwise application fires XHR calls immediately
|
|
14
|
+
* after a click (save, navigation, data load). Without this override a test
|
|
15
|
+
* that clicks a button and then immediately reads a value races against the
|
|
16
|
+
* server response. `ClickOverride` uses `FlightTracker` under the hood to
|
|
17
|
+
* block until all relevant requests finish.
|
|
18
|
+
*
|
|
19
|
+
* **How to disable** (if a specific test must opt out):
|
|
20
|
+
* Set `featureSettings.InflightRequests.waitForRequestsToComplete: false` in
|
|
21
|
+
* `Testwise.json` — but this is rarely needed.
|
|
22
|
+
*/
|
|
10
23
|
export class ClickOverride {
|
|
11
24
|
private _test: Test;
|
|
12
|
-
private _page: Page | null = null;
|
|
13
|
-
private flightTracker: FlightTracker = new FlightTracker();
|
|
14
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Extends the Playwright `Test` fixture to wrap every locator's `click` method with
|
|
28
|
+
* in-flight XHR tracking via `FlightTracker`, waiting for all relevant requests to
|
|
29
|
+
* settle after each click. Behaviour is configurable via `featureSettings.InflightRequests`.
|
|
30
|
+
* @param test - The Playwright `Test` fixture to extend.
|
|
31
|
+
*/
|
|
15
32
|
constructor(test: Test) {
|
|
16
33
|
this._test = test.extend({
|
|
17
34
|
page: async ({ page }, use) => {
|
|
18
|
-
|
|
35
|
+
const flightTracker = new FlightTracker();
|
|
19
36
|
|
|
20
|
-
|
|
21
|
-
|
|
37
|
+
page.on('request', (request) => {
|
|
38
|
+
flightTracker.handleRequestStarted(request.url(), request.resourceType());
|
|
39
|
+
});
|
|
22
40
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
);
|
|
31
|
-
};
|
|
41
|
+
page.on('response', (response) => {
|
|
42
|
+
flightTracker.handleRequestFinished(response.request().url());
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
page.on('requestfailed', (request) => {
|
|
46
|
+
flightTracker.handleRequestFailed(request.url());
|
|
47
|
+
});
|
|
32
48
|
|
|
33
49
|
const overrideClickMethod = (locator: Locator): Locator => {
|
|
34
50
|
const originalClickMethod = locator.click.bind(locator);
|
|
35
51
|
|
|
36
|
-
page.on('request', (request) => {
|
|
37
|
-
if (isTrackable(request.url(), request.resourceType())) {
|
|
38
|
-
this.flightTracker.requestsInFlight++;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
page.on('response', (response) => {
|
|
43
|
-
if (isTrackable(response.request().url(), response.request().resourceType())) {
|
|
44
|
-
if (this.flightTracker.requestsInFlight > 0) {
|
|
45
|
-
this.flightTracker.requestsInFlight--;
|
|
46
|
-
}
|
|
47
|
-
if (this.flightTracker.requestsInFlight === 0) {
|
|
48
|
-
this.flightTracker.eventEmitter.emit('idle');
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
|
|
53
52
|
locator.click = async (options) => {
|
|
54
53
|
await originalClickMethod(options);
|
|
55
54
|
if (waitForRequestsToComplete) {
|
|
56
|
-
|
|
57
|
-
await this.flightTracker.waitToContinue();
|
|
58
|
-
} catch (error) {
|
|
59
|
-
console.warn('Exception while waiting for inflight requests to finish:', error);
|
|
60
|
-
if (this._page) {
|
|
61
|
-
const inflightRequests = await this._page.evaluate(() => {
|
|
62
|
-
return performance
|
|
63
|
-
.getEntriesByType('resource')
|
|
64
|
-
.filter((entry) => {
|
|
65
|
-
const res = entry as PerformanceResourceTiming;
|
|
66
|
-
return (
|
|
67
|
-
res.initiatorType === 'xmlhttprequest' &&
|
|
68
|
-
!res.name.includes('/detect_change(') &&
|
|
69
|
-
!res.name.includes('/set_gui_start_use_log_session')
|
|
70
|
-
);
|
|
71
|
-
})
|
|
72
|
-
.map((entry) => (entry as PerformanceResourceTiming).name);
|
|
73
|
-
});
|
|
74
|
-
console.debug('Current inflight XHR requests:', inflightRequests);
|
|
75
|
-
}
|
|
76
|
-
if (!continueOnError) throw error;
|
|
77
|
-
}
|
|
55
|
+
await flightTracker.waitToContinue();
|
|
78
56
|
}
|
|
79
57
|
return;
|
|
80
58
|
};
|
|
@@ -122,6 +100,9 @@ export class ClickOverride {
|
|
|
122
100
|
});
|
|
123
101
|
}
|
|
124
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Returns the extended `Test` fixture with the click override active.
|
|
105
|
+
*/
|
|
125
106
|
get test() {
|
|
126
107
|
return this._test;
|
|
127
108
|
}
|
|
@@ -7,10 +7,41 @@ const requestWatchlist: string[] = testwiseConfig().get<string[]>('featureSettin
|
|
|
7
7
|
const waitForRequestsToComplete =
|
|
8
8
|
testwiseConfig().get<boolean>('featureSettings.InflightRequests.waitForRequestsToComplete') ?? true;
|
|
9
9
|
|
|
10
|
+
const locatorMethods = [
|
|
11
|
+
'locator',
|
|
12
|
+
'getByText',
|
|
13
|
+
'getByTestId',
|
|
14
|
+
'getByAltText',
|
|
15
|
+
'getByLabel',
|
|
16
|
+
'getByRole',
|
|
17
|
+
'getByPlaceholder',
|
|
18
|
+
'getByTitle'
|
|
19
|
+
] as const;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Playwright fixture layer that wraps every Locator `fill()` call to wait
|
|
23
|
+
* for in-flight XHR requests to settle before returning control to the test.
|
|
24
|
+
*
|
|
25
|
+
* **Why this exists:** After filling a lookup or auto-complete field the
|
|
26
|
+
* Thinkwise application fires XHR calls to search/resolve the typed value.
|
|
27
|
+
* Without this override, subsequent assertions or interactions race against
|
|
28
|
+
* those server responses. `FillOverride` uses `FlightTracker` to block until
|
|
29
|
+
* all relevant requests on the watchlist finish.
|
|
30
|
+
*
|
|
31
|
+
* The `featureSettings.InflightRequests.paths` list in `Testwise.json`
|
|
32
|
+
* controls which API endpoints are watched during fill operations.
|
|
33
|
+
*/
|
|
10
34
|
export class FillOverride {
|
|
11
35
|
private _test: Test;
|
|
12
36
|
private flightTracker: FlightTracker = new FlightTracker();
|
|
13
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Extends the Playwright `Test` fixture to wrap every locator's `fill` method:
|
|
40
|
+
* waits for watched in-flight requests to settle, fills the element, and — for
|
|
41
|
+
* qualifying form fields — triggers a `/staged` response wait and blurs the element
|
|
42
|
+
* if the value changed. Watchlist and behaviour are configurable via `featureSettings`.
|
|
43
|
+
* @param test - The Playwright `Test` fixture to extend.
|
|
44
|
+
*/
|
|
14
45
|
constructor(test: Test) {
|
|
15
46
|
this._test = test.extend({
|
|
16
47
|
page: async ({ page }, use) => {
|
|
@@ -35,101 +66,56 @@ export class FillOverride {
|
|
|
35
66
|
}
|
|
36
67
|
|
|
37
68
|
const overrideFillMethod = (locator: Locator) => {
|
|
38
|
-
const
|
|
69
|
+
const originalFill = locator.fill.bind(locator);
|
|
39
70
|
|
|
40
71
|
locator.fill = async (value, options) => {
|
|
41
|
-
|
|
42
|
-
if (waitForRequestsToComplete) await this.flightTracker.waitToContinue();
|
|
43
|
-
} catch (e) {
|
|
44
|
-
console.warn('Exception:', e);
|
|
45
|
-
this.flightTracker.requestsInFlight = 0;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const currentValue = await locator.inputValue();
|
|
49
|
-
const valueIsDifferent = currentValue !== value;
|
|
50
|
-
|
|
51
|
-
const formFieldTestIdPrefix: string = 'form-field__';
|
|
52
|
-
|
|
53
|
-
const isQualifyingFormField = await locator.evaluate((el, formFieldTestIdPrefix) => {
|
|
54
|
-
const elementTestId = el.getAttribute('data-testid');
|
|
72
|
+
if (waitForRequestsToComplete) await this.flightTracker.waitToContinue();
|
|
55
73
|
|
|
56
|
-
|
|
74
|
+
const [valueIsDifferent, isQualifyingFormField] = await Promise.all([
|
|
75
|
+
locator.inputValue().then((v) => v !== value),
|
|
76
|
+
locator.evaluate((el) => {
|
|
77
|
+
const testId = el.getAttribute('data-testid');
|
|
78
|
+
return (
|
|
79
|
+
!!testId && testId.includes('form-field__') && el.closest('[data-testid^="form-section__"]') !== null
|
|
80
|
+
);
|
|
81
|
+
})
|
|
82
|
+
]);
|
|
57
83
|
|
|
58
|
-
|
|
59
|
-
return elementTestId.includes(formFieldTestIdPrefix) && parentWithFormSectionTestId !== null;
|
|
60
|
-
}
|
|
61
|
-
return false;
|
|
62
|
-
}, formFieldTestIdPrefix);
|
|
63
|
-
|
|
64
|
-
if (valueIsDifferent && isQualifyingFormField) {
|
|
65
|
-
await page.waitEventHandler.waitForCanContinue();
|
|
66
|
-
page.waitEventHandler.waitForResponse('/staged');
|
|
67
|
-
}
|
|
84
|
+
await page.waitEventHandler.waitForCanContinue();
|
|
68
85
|
|
|
69
|
-
await
|
|
86
|
+
await originalFill(value, options);
|
|
70
87
|
|
|
71
88
|
if (isQualifyingFormField) {
|
|
89
|
+
if (valueIsDifferent) page.waitEventHandler.waitForResponse('/staged');
|
|
72
90
|
await locator.evaluate((el) => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (!ariaExpanded) el.blur();
|
|
91
|
+
if (!el.getAttribute('aria-expanded')) el.blur();
|
|
76
92
|
});
|
|
77
93
|
}
|
|
78
94
|
};
|
|
79
95
|
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const originalGetByTestIdMethod = locator.getByTestId.bind(locator);
|
|
87
|
-
locator.getByTestId = (...args) => overrideFillMethod(originalGetByTestIdMethod(...args));
|
|
88
|
-
|
|
89
|
-
const originalGetByAltTextMethod = locator.getByAltText.bind(locator);
|
|
90
|
-
locator.getByAltText = (...args) => overrideFillMethod(originalGetByAltTextMethod(...args));
|
|
91
|
-
|
|
92
|
-
const originalGetByLabelMethod = locator.getByLabel.bind(locator);
|
|
93
|
-
locator.getByLabel = (...args) => overrideFillMethod(originalGetByLabelMethod(...args));
|
|
94
|
-
|
|
95
|
-
const originalGetByRoleMethod = locator.getByRole.bind(locator);
|
|
96
|
-
locator.getByRole = (...args) => overrideFillMethod(originalGetByRoleMethod(...args));
|
|
97
|
-
|
|
98
|
-
const originalGetByPlaceholderMethod = locator.getByPlaceholder.bind(locator);
|
|
99
|
-
locator.getByPlaceholder = (...args) => overrideFillMethod(originalGetByPlaceholderMethod(...args));
|
|
100
|
-
|
|
101
|
-
const originalGetByTitleMethod = locator.getByTitle.bind(locator);
|
|
102
|
-
locator.getByTitle = (...args) => overrideFillMethod(originalGetByTitleMethod(...args));
|
|
96
|
+
for (const method of locatorMethods) {
|
|
97
|
+
const original = (locator[method] as (...args: unknown[]) => Locator).bind(locator);
|
|
98
|
+
(locator as unknown as Record<string, (...args: unknown[]) => Locator>)[method] = (...args: unknown[]) =>
|
|
99
|
+
overrideFillMethod(original(...args));
|
|
100
|
+
}
|
|
103
101
|
|
|
104
102
|
return locator;
|
|
105
103
|
};
|
|
106
104
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const originalGetByAltText = page.getByAltText.bind(page);
|
|
113
|
-
const originalGetByLabel = page.getByLabel.bind(page);
|
|
114
|
-
const originalGetByRole = page.getByRole.bind(page);
|
|
115
|
-
const originalGetByPlaceholder = page.getByPlaceholder.bind(page);
|
|
116
|
-
const originalGetByText = page.getByText.bind(page);
|
|
117
|
-
const originalGetByTitle = page.getByTitle.bind(page);
|
|
118
|
-
|
|
119
|
-
// Override other top-level methods as before
|
|
120
|
-
page.getByTestId = (...args) => overrideFillMethod(originalGetByTestId(...args));
|
|
121
|
-
page.getByAltText = (...args) => overrideFillMethod(originalGetByAltText(...args));
|
|
122
|
-
page.getByLabel = (...args) => overrideFillMethod(originalGetByLabel(...args));
|
|
123
|
-
page.getByRole = (...args) => overrideFillMethod(originalGetByRole(...args));
|
|
124
|
-
page.getByPlaceholder = (...args) => overrideFillMethod(originalGetByPlaceholder(...args));
|
|
125
|
-
page.getByText = (...args) => overrideFillMethod(originalGetByText(...args));
|
|
126
|
-
page.getByTitle = (...args) => overrideFillMethod(originalGetByTitle(...args));
|
|
105
|
+
for (const method of locatorMethods) {
|
|
106
|
+
const original = (page[method] as (...args: unknown[]) => Locator).bind(page);
|
|
107
|
+
(page as unknown as Record<string, (...args: unknown[]) => Locator>)[method] = (...args: unknown[]) =>
|
|
108
|
+
overrideFillMethod(original(...args));
|
|
109
|
+
}
|
|
127
110
|
|
|
128
111
|
await use(page);
|
|
129
112
|
}
|
|
130
113
|
});
|
|
131
114
|
}
|
|
132
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Returns the extended `Test` fixture with the fill override active.
|
|
118
|
+
*/
|
|
133
119
|
get test() {
|
|
134
120
|
return this._test;
|
|
135
121
|
}
|
package/promptCredentials.js
CHANGED
|
@@ -84,7 +84,7 @@ const questions = [
|
|
|
84
84
|
(async () => {
|
|
85
85
|
const credentialsResponse = await prompts(questions);
|
|
86
86
|
|
|
87
|
-
if (!credentialsResponse
|
|
87
|
+
if (!credentialsResponse?.username || !credentialsResponse.password) {
|
|
88
88
|
exitWithError('Username or password was not given');
|
|
89
89
|
}
|
|
90
90
|
|