@supernal/interface 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +165 -0
- package/dist/cjs/names/API.js +104 -0
- package/dist/cjs/names/API.js.map +1 -0
- package/dist/cjs/names/Components.js +104 -0
- package/dist/cjs/names/Components.js.map +1 -0
- package/dist/cjs/names/Containers.js +99 -0
- package/dist/cjs/names/Containers.js.map +1 -0
- package/dist/cjs/names/Functions.js +114 -0
- package/dist/cjs/names/Functions.js.map +1 -0
- package/dist/cjs/names/index.js +118 -0
- package/dist/cjs/names/index.js.map +1 -0
- package/dist/cjs/src/adapters/ChatUIProvider.js +176 -0
- package/dist/cjs/src/adapters/ChatUIProvider.js.map +1 -0
- package/dist/cjs/src/adapters/bridge.js +225 -0
- package/dist/cjs/src/adapters/bridge.js.map +1 -0
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js +289 -0
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/copilotkit/index.js +10 -0
- package/dist/cjs/src/adapters/copilotkit/index.js.map +1 -0
- package/dist/cjs/src/adapters/index.js +63 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/adapters/native/NativeAdapter.js +268 -0
- package/dist/cjs/src/adapters/native/NativeAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/native/index.js +10 -0
- package/dist/cjs/src/adapters/native/index.js.map +1 -0
- package/dist/cjs/src/adapters/types/index.js +9 -0
- package/dist/cjs/src/adapters/types/index.js.map +1 -0
- package/dist/cjs/src/ai/ToolExecutor.js +211 -0
- package/dist/cjs/src/ai/ToolExecutor.js.map +1 -0
- package/dist/cjs/src/ai/ToolMatcher.js +202 -0
- package/dist/cjs/src/ai/ToolMatcher.js.map +1 -0
- package/dist/cjs/src/ai/index.js +29 -0
- package/dist/cjs/src/ai/index.js.map +1 -0
- package/dist/cjs/src/architecture/createContainer.js +106 -0
- package/dist/cjs/src/architecture/createContainer.js.map +1 -0
- package/dist/cjs/src/architecture/initialize.js +125 -0
- package/dist/cjs/src/architecture/initialize.js.map +1 -0
- package/dist/cjs/src/architecture/registry.js +111 -0
- package/dist/cjs/src/architecture/registry.js.map +1 -0
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +174 -0
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -0
- package/dist/cjs/src/background/architecture/Containers.js +46 -0
- package/dist/cjs/src/background/architecture/Containers.js.map +1 -0
- package/dist/cjs/src/background/architecture/DataContractTypes.js +28 -0
- package/dist/cjs/src/background/architecture/DataContractTypes.js.map +1 -0
- package/dist/cjs/src/background/architecture/index.js +24 -0
- package/dist/cjs/src/background/architecture/index.js.map +1 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js +71 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -0
- package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js +66 -0
- package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
- package/dist/cjs/src/background/navigation/useComponentTracking.js +20 -0
- package/dist/cjs/src/background/navigation/useComponentTracking.js.map +1 -0
- package/dist/cjs/src/background/registry/ComponentRegistry.js +340 -0
- package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -0
- package/dist/cjs/src/background/registry/ToolRegistry.js +668 -0
- package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -0
- package/dist/cjs/src/browser.js +70 -0
- package/dist/cjs/src/browser.js.map +1 -0
- package/dist/cjs/src/components/ComponentScanner.js +362 -0
- package/dist/cjs/src/components/ComponentScanner.js.map +1 -0
- package/dist/cjs/src/components/index.js +24 -0
- package/dist/cjs/src/components/index.js.map +1 -0
- package/dist/cjs/src/data/TestDataManager.js +187 -0
- package/dist/cjs/src/data/TestDataManager.js.map +1 -0
- package/dist/cjs/src/data/index.js +23 -0
- package/dist/cjs/src/data/index.js.map +1 -0
- package/dist/cjs/src/decorators/Component.js +108 -0
- package/dist/cjs/src/decorators/Component.js.map +1 -0
- package/dist/cjs/src/decorators/ContainerHelpers.js +45 -0
- package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -0
- package/dist/cjs/src/decorators/SpecializedTools.js +386 -0
- package/dist/cjs/src/decorators/SpecializedTools.js.map +1 -0
- package/dist/cjs/src/decorators/Tool.js +700 -0
- package/dist/cjs/src/decorators/Tool.js.map +1 -0
- package/dist/cjs/src/decorators/ToolHelpers.js +261 -0
- package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -0
- package/dist/cjs/src/decorators/ToolPreset.js +270 -0
- package/dist/cjs/src/decorators/ToolPreset.js.map +1 -0
- package/dist/cjs/src/decorators/ToolProvider.js +86 -0
- package/dist/cjs/src/decorators/ToolProvider.js.map +1 -0
- package/dist/cjs/src/decorators/index.js +44 -0
- package/dist/cjs/src/decorators/index.js.map +1 -0
- package/dist/cjs/src/execution/DOMExecutor.js +233 -0
- package/dist/cjs/src/execution/DOMExecutor.js.map +1 -0
- package/dist/cjs/src/execution/PlaywrightExecutor.js +196 -0
- package/dist/cjs/src/execution/PlaywrightExecutor.js.map +1 -0
- package/dist/cjs/src/exposure/ExposureCollector.js +358 -0
- package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -0
- package/dist/cjs/src/exposure/index.js +26 -0
- package/dist/cjs/src/exposure/index.js.map +1 -0
- package/dist/cjs/src/index.js +187 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/interfaces/StatefulComponent.js +50 -0
- package/dist/cjs/src/interfaces/StatefulComponent.js.map +1 -0
- package/dist/cjs/src/name-contracts/ContractScanner.js +15 -0
- package/dist/cjs/src/name-contracts/ContractScanner.js.map +1 -0
- package/dist/cjs/src/name-contracts/RouteContractScanner.js +225 -0
- package/dist/cjs/src/name-contracts/RouteContractScanner.js.map +1 -0
- package/dist/cjs/src/name-contracts/index.js +15 -0
- package/dist/cjs/src/name-contracts/index.js.map +1 -0
- package/dist/cjs/src/names/createNames.js +86 -0
- package/dist/cjs/src/names/createNames.js.map +1 -0
- package/dist/cjs/src/react/hooks/useChatWithContext.js +221 -0
- package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -0
- package/dist/cjs/src/react/index.js +28 -0
- package/dist/cjs/src/react/index.js.map +1 -0
- package/dist/cjs/src/react/useNavigationHandler.js +88 -0
- package/dist/cjs/src/react/useNavigationHandler.js.map +1 -0
- package/dist/cjs/src/react/usePersistedState.js +72 -0
- package/dist/cjs/src/react/usePersistedState.js.map +1 -0
- package/dist/cjs/src/react/useToolBinding.js +110 -0
- package/dist/cjs/src/react/useToolBinding.js.map +1 -0
- package/dist/cjs/src/routes/RouteContractGenerator.js +119 -0
- package/dist/cjs/src/routes/RouteContractGenerator.js.map +1 -0
- package/dist/cjs/src/routes/RouteContractsConfig.js +39 -0
- package/dist/cjs/src/routes/RouteContractsConfig.js.map +1 -0
- package/dist/cjs/src/routes/index.js +20 -0
- package/dist/cjs/src/routes/index.js.map +1 -0
- package/dist/cjs/src/routes/scanners/NameExtractor.js +193 -0
- package/dist/cjs/src/routes/scanners/NameExtractor.js.map +1 -0
- package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js +102 -0
- package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
- package/dist/cjs/src/routes/scanners/RouteScanner.js +13 -0
- package/dist/cjs/src/routes/scanners/RouteScanner.js.map +1 -0
- package/dist/cjs/src/storage/LocalStorageAdapter.js +87 -0
- package/dist/cjs/src/storage/LocalStorageAdapter.js.map +1 -0
- package/dist/cjs/src/storage/StateManager.js +299 -0
- package/dist/cjs/src/storage/StateManager.js.map +1 -0
- package/dist/cjs/src/storage/StorageAdapter.js +164 -0
- package/dist/cjs/src/storage/StorageAdapter.js.map +1 -0
- package/dist/cjs/src/storage/index.js +37 -0
- package/dist/cjs/src/storage/index.js.map +1 -0
- package/dist/cjs/src/testing/BrowserStateInjection.js +130 -0
- package/dist/cjs/src/testing/BrowserStateInjection.js.map +1 -0
- package/dist/cjs/src/testing/ComponentStateHelpers.js +200 -0
- package/dist/cjs/src/testing/ComponentStateHelpers.js.map +1 -0
- package/dist/cjs/src/testing/GherkinParser.js +252 -0
- package/dist/cjs/src/testing/GherkinParser.js.map +1 -0
- package/dist/cjs/src/testing/PlaywrightStateHelpers.js +254 -0
- package/dist/cjs/src/testing/PlaywrightStateHelpers.js.map +1 -0
- package/dist/cjs/src/testing/TestRunner.js +158 -0
- package/dist/cjs/src/testing/TestRunner.js.map +1 -0
- package/dist/cjs/src/testing/index.js +46 -0
- package/dist/cjs/src/testing/index.js.map +1 -0
- package/dist/cjs/src/testing/selectors.js +84 -0
- package/dist/cjs/src/testing/selectors.js.map +1 -0
- package/dist/cjs/src/tools/SystemTools.js +262 -0
- package/dist/cjs/src/tools/SystemTools.js.map +1 -0
- package/dist/cjs/src/types/ClassifiedTool.js +50 -0
- package/dist/cjs/src/types/ClassifiedTool.js.map +1 -0
- package/dist/cjs/src/types/ComponentState.js +30 -0
- package/dist/cjs/src/types/ComponentState.js.map +1 -0
- package/dist/cjs/src/types/DiscoverableToolProvider.js +9 -0
- package/dist/cjs/src/types/DiscoverableToolProvider.js.map +1 -0
- package/dist/cjs/src/types/ExposureState.js +25 -0
- package/dist/cjs/src/types/ExposureState.js.map +1 -0
- package/dist/cjs/src/types/NavigationGraph.js +8 -0
- package/dist/cjs/src/types/NavigationGraph.js.map +1 -0
- package/dist/cjs/src/types/OperationType.js +49 -0
- package/dist/cjs/src/types/OperationType.js.map +1 -0
- package/dist/cjs/src/types/StateManagers.js +39 -0
- package/dist/cjs/src/types/StateManagers.js.map +1 -0
- package/dist/cjs/src/types/Tool.js +41 -0
- package/dist/cjs/src/types/Tool.js.map +1 -0
- package/dist/cjs/src/types/ToolPermissions.js +54 -0
- package/dist/cjs/src/types/ToolPermissions.js.map +1 -0
- package/dist/cjs/src/types/ToolResult.js +25 -0
- package/dist/cjs/src/types/ToolResult.js.map +1 -0
- package/dist/cjs/src/types/index.js +59 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/cjs/src/ui/react/chat/ChatBubble.js +221 -0
- package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +1 -0
- package/dist/esm/names/API.d.ts +77 -0
- package/dist/esm/names/API.d.ts.map +1 -0
- package/dist/esm/names/API.js +99 -0
- package/dist/esm/names/API.js.map +1 -0
- package/dist/esm/names/Components.d.ts +77 -0
- package/dist/esm/names/Components.d.ts.map +1 -0
- package/dist/esm/names/Components.js +99 -0
- package/dist/esm/names/Components.js.map +1 -0
- package/dist/esm/names/Containers.d.ts +84 -0
- package/dist/esm/names/Containers.d.ts.map +1 -0
- package/dist/esm/names/Containers.js +94 -0
- package/dist/esm/names/Containers.js.map +1 -0
- package/dist/esm/names/Functions.d.ts +87 -0
- package/dist/esm/names/Functions.d.ts.map +1 -0
- package/dist/esm/names/Functions.js +109 -0
- package/dist/esm/names/Functions.js.map +1 -0
- package/dist/esm/names/index.d.ts +187 -0
- package/dist/esm/names/index.d.ts.map +1 -0
- package/dist/esm/names/index.js +99 -0
- package/dist/esm/names/index.js.map +1 -0
- package/dist/esm/src/adapters/ChatUIProvider.d.ts +76 -0
- package/dist/esm/src/adapters/ChatUIProvider.d.ts.map +1 -0
- package/dist/esm/src/adapters/ChatUIProvider.js +136 -0
- package/dist/esm/src/adapters/ChatUIProvider.js.map +1 -0
- package/dist/esm/src/adapters/bridge.d.ts +145 -0
- package/dist/esm/src/adapters/bridge.d.ts.map +1 -0
- package/dist/esm/src/adapters/bridge.js +218 -0
- package/dist/esm/src/adapters/bridge.js.map +1 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts +49 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +251 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
- package/dist/esm/src/adapters/copilotkit/index.d.ts +6 -0
- package/dist/esm/src/adapters/copilotkit/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/copilotkit/index.js +5 -0
- package/dist/esm/src/adapters/copilotkit/index.js.map +1 -0
- package/dist/esm/src/adapters/index.d.ts +31 -0
- package/dist/esm/src/adapters/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/index.js +32 -0
- package/dist/esm/src/adapters/index.js.map +1 -0
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts +47 -0
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +1 -0
- package/dist/esm/src/adapters/native/NativeAdapter.js +230 -0
- package/dist/esm/src/adapters/native/NativeAdapter.js.map +1 -0
- package/dist/esm/src/adapters/native/index.d.ts +6 -0
- package/dist/esm/src/adapters/native/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/native/index.js +5 -0
- package/dist/esm/src/adapters/native/index.js.map +1 -0
- package/dist/esm/src/adapters/types/index.d.ts +155 -0
- package/dist/esm/src/adapters/types/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/types/index.js +8 -0
- package/dist/esm/src/adapters/types/index.js.map +1 -0
- package/dist/esm/src/ai/ToolExecutor.d.ts +49 -0
- package/dist/esm/src/ai/ToolExecutor.d.ts.map +1 -0
- package/dist/esm/src/ai/ToolExecutor.js +174 -0
- package/dist/esm/src/ai/ToolExecutor.js.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts +61 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.js +198 -0
- package/dist/esm/src/ai/ToolMatcher.js.map +1 -0
- package/dist/esm/src/ai/index.d.ts +9 -0
- package/dist/esm/src/ai/index.d.ts.map +1 -0
- package/dist/esm/src/ai/index.js +13 -0
- package/dist/esm/src/ai/index.js.map +1 -0
- package/dist/esm/src/architecture/createContainer.d.ts +60 -0
- package/dist/esm/src/architecture/createContainer.d.ts.map +1 -0
- package/dist/esm/src/architecture/createContainer.js +102 -0
- package/dist/esm/src/architecture/createContainer.js.map +1 -0
- package/dist/esm/src/architecture/initialize.d.ts +81 -0
- package/dist/esm/src/architecture/initialize.d.ts.map +1 -0
- package/dist/esm/src/architecture/initialize.js +121 -0
- package/dist/esm/src/architecture/initialize.js.map +1 -0
- package/dist/esm/src/architecture/registry.d.ts +61 -0
- package/dist/esm/src/architecture/registry.d.ts.map +1 -0
- package/dist/esm/src/architecture/registry.js +107 -0
- package/dist/esm/src/architecture/registry.js.map +1 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +95 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js +170 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -0
- package/dist/esm/src/background/architecture/Containers.d.ts +52 -0
- package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/Containers.js +40 -0
- package/dist/esm/src/background/architecture/Containers.js.map +1 -0
- package/dist/esm/src/background/architecture/DataContractTypes.d.ts +33 -0
- package/dist/esm/src/background/architecture/DataContractTypes.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/DataContractTypes.js +22 -0
- package/dist/esm/src/background/architecture/DataContractTypes.js.map +1 -0
- package/dist/esm/src/background/architecture/index.d.ts +12 -0
- package/dist/esm/src/background/architecture/index.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/index.js +13 -0
- package/dist/esm/src/background/architecture/index.js.map +1 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts +48 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js +67 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts +30 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js +60 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
- package/dist/esm/src/background/navigation/useComponentTracking.d.ts +10 -0
- package/dist/esm/src/background/navigation/useComponentTracking.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/useComponentTracking.js +17 -0
- package/dist/esm/src/background/navigation/useComponentTracking.js.map +1 -0
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts +192 -0
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -0
- package/dist/esm/src/background/registry/ComponentRegistry.js +336 -0
- package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -0
- package/dist/esm/src/background/registry/ToolRegistry.d.ts +232 -0
- package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/esm/src/background/registry/ToolRegistry.js +664 -0
- package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -0
- package/dist/esm/src/browser.d.ts +21 -0
- package/dist/esm/src/browser.d.ts.map +1 -0
- package/dist/esm/src/browser.js +31 -0
- package/dist/esm/src/browser.js.map +1 -0
- package/dist/esm/src/components/ComponentScanner.d.ts +99 -0
- package/dist/esm/src/components/ComponentScanner.d.ts.map +1 -0
- package/dist/esm/src/components/ComponentScanner.js +325 -0
- package/dist/esm/src/components/ComponentScanner.js.map +1 -0
- package/dist/esm/src/components/index.d.ts +9 -0
- package/dist/esm/src/components/index.d.ts.map +1 -0
- package/dist/esm/src/components/index.js +8 -0
- package/dist/esm/src/components/index.js.map +1 -0
- package/dist/esm/src/data/TestDataManager.d.ts +125 -0
- package/dist/esm/src/data/TestDataManager.d.ts.map +1 -0
- package/dist/esm/src/data/TestDataManager.js +183 -0
- package/dist/esm/src/data/TestDataManager.js.map +1 -0
- package/dist/esm/src/data/index.d.ts +7 -0
- package/dist/esm/src/data/index.d.ts.map +1 -0
- package/dist/esm/src/data/index.js +7 -0
- package/dist/esm/src/data/index.js.map +1 -0
- package/dist/esm/src/decorators/Component.d.ts +59 -0
- package/dist/esm/src/decorators/Component.d.ts.map +1 -0
- package/dist/esm/src/decorators/Component.js +103 -0
- package/dist/esm/src/decorators/Component.js.map +1 -0
- package/dist/esm/src/decorators/ContainerHelpers.d.ts +26 -0
- package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -0
- package/dist/esm/src/decorators/ContainerHelpers.js +42 -0
- package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -0
- package/dist/esm/src/decorators/SpecializedTools.d.ts +218 -0
- package/dist/esm/src/decorators/SpecializedTools.d.ts.map +1 -0
- package/dist/esm/src/decorators/SpecializedTools.js +383 -0
- package/dist/esm/src/decorators/SpecializedTools.js.map +1 -0
- package/dist/esm/src/decorators/Tool.d.ts +210 -0
- package/dist/esm/src/decorators/Tool.d.ts.map +1 -0
- package/dist/esm/src/decorators/Tool.js +694 -0
- package/dist/esm/src/decorators/Tool.js.map +1 -0
- package/dist/esm/src/decorators/ToolHelpers.d.ts +74 -0
- package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolHelpers.js +219 -0
- package/dist/esm/src/decorators/ToolHelpers.js.map +1 -0
- package/dist/esm/src/decorators/ToolPreset.d.ts +138 -0
- package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolPreset.js +259 -0
- package/dist/esm/src/decorators/ToolPreset.js.map +1 -0
- package/dist/esm/src/decorators/ToolProvider.d.ts +65 -0
- package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolProvider.js +81 -0
- package/dist/esm/src/decorators/ToolProvider.js.map +1 -0
- package/dist/esm/src/decorators/index.d.ts +13 -0
- package/dist/esm/src/decorators/index.d.ts.map +1 -0
- package/dist/esm/src/decorators/index.js +14 -0
- package/dist/esm/src/decorators/index.js.map +1 -0
- package/dist/esm/src/execution/DOMExecutor.d.ts +43 -0
- package/dist/esm/src/execution/DOMExecutor.d.ts.map +1 -0
- package/dist/esm/src/execution/DOMExecutor.js +229 -0
- package/dist/esm/src/execution/DOMExecutor.js.map +1 -0
- package/dist/esm/src/execution/PlaywrightExecutor.d.ts +38 -0
- package/dist/esm/src/execution/PlaywrightExecutor.d.ts.map +1 -0
- package/dist/esm/src/execution/PlaywrightExecutor.js +192 -0
- package/dist/esm/src/execution/PlaywrightExecutor.js.map +1 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts +88 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -0
- package/dist/esm/src/exposure/ExposureCollector.js +354 -0
- package/dist/esm/src/exposure/ExposureCollector.js.map +1 -0
- package/dist/esm/src/exposure/index.d.ts +8 -0
- package/dist/esm/src/exposure/index.d.ts.map +1 -0
- package/dist/esm/src/exposure/index.js +10 -0
- package/dist/esm/src/exposure/index.js.map +1 -0
- package/dist/esm/src/index.d.ts +49 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +79 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/StatefulComponent.d.ts +72 -0
- package/dist/esm/src/interfaces/StatefulComponent.d.ts.map +1 -0
- package/dist/esm/src/interfaces/StatefulComponent.js +47 -0
- package/dist/esm/src/interfaces/StatefulComponent.js.map +1 -0
- package/dist/esm/src/name-contracts/ContractScanner.d.ts +61 -0
- package/dist/esm/src/name-contracts/ContractScanner.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/ContractScanner.js +11 -0
- package/dist/esm/src/name-contracts/ContractScanner.js.map +1 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.d.ts +30 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.js +188 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.js.map +1 -0
- package/dist/esm/src/name-contracts/index.d.ts +10 -0
- package/dist/esm/src/name-contracts/index.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/index.js +10 -0
- package/dist/esm/src/name-contracts/index.js.map +1 -0
- package/dist/esm/src/names/createNames.d.ts +49 -0
- package/dist/esm/src/names/createNames.d.ts.map +1 -0
- package/dist/esm/src/names/createNames.js +81 -0
- package/dist/esm/src/names/createNames.js.map +1 -0
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts +68 -0
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -0
- package/dist/esm/src/react/hooks/useChatWithContext.js +218 -0
- package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -0
- package/dist/esm/src/react/index.d.ts +12 -0
- package/dist/esm/src/react/index.d.ts.map +1 -0
- package/dist/esm/src/react/index.js +21 -0
- package/dist/esm/src/react/index.js.map +1 -0
- package/dist/esm/src/react/useNavigationHandler.d.ts +42 -0
- package/dist/esm/src/react/useNavigationHandler.d.ts.map +1 -0
- package/dist/esm/src/react/useNavigationHandler.js +85 -0
- package/dist/esm/src/react/useNavigationHandler.js.map +1 -0
- package/dist/esm/src/react/usePersistedState.d.ts +13 -0
- package/dist/esm/src/react/usePersistedState.d.ts.map +1 -0
- package/dist/esm/src/react/usePersistedState.js +69 -0
- package/dist/esm/src/react/usePersistedState.js.map +1 -0
- package/dist/esm/src/react/useToolBinding.d.ts +8 -0
- package/dist/esm/src/react/useToolBinding.d.ts.map +1 -0
- package/dist/esm/src/react/useToolBinding.js +107 -0
- package/dist/esm/src/react/useToolBinding.js.map +1 -0
- package/dist/esm/src/routes/RouteContractGenerator.d.ts +37 -0
- package/dist/esm/src/routes/RouteContractGenerator.d.ts.map +1 -0
- package/dist/esm/src/routes/RouteContractGenerator.js +115 -0
- package/dist/esm/src/routes/RouteContractGenerator.js.map +1 -0
- package/dist/esm/src/routes/RouteContractsConfig.d.ts +93 -0
- package/dist/esm/src/routes/RouteContractsConfig.d.ts.map +1 -0
- package/dist/esm/src/routes/RouteContractsConfig.js +36 -0
- package/dist/esm/src/routes/RouteContractsConfig.js.map +1 -0
- package/dist/esm/src/routes/index.d.ts +13 -0
- package/dist/esm/src/routes/index.d.ts.map +1 -0
- package/dist/esm/src/routes/index.js +13 -0
- package/dist/esm/src/routes/index.js.map +1 -0
- package/dist/esm/src/routes/scanners/NameExtractor.d.ts +36 -0
- package/dist/esm/src/routes/scanners/NameExtractor.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/NameExtractor.js +156 -0
- package/dist/esm/src/routes/scanners/NameExtractor.js.map +1 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts +35 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js +98 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
- package/dist/esm/src/routes/scanners/RouteScanner.d.ts +64 -0
- package/dist/esm/src/routes/scanners/RouteScanner.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/RouteScanner.js +9 -0
- package/dist/esm/src/routes/scanners/RouteScanner.js.map +1 -0
- package/dist/esm/src/storage/LocalStorageAdapter.d.ts +29 -0
- package/dist/esm/src/storage/LocalStorageAdapter.d.ts.map +1 -0
- package/dist/esm/src/storage/LocalStorageAdapter.js +83 -0
- package/dist/esm/src/storage/LocalStorageAdapter.js.map +1 -0
- package/dist/esm/src/storage/StateManager.d.ts +175 -0
- package/dist/esm/src/storage/StateManager.d.ts.map +1 -0
- package/dist/esm/src/storage/StateManager.js +295 -0
- package/dist/esm/src/storage/StateManager.js.map +1 -0
- package/dist/esm/src/storage/StorageAdapter.d.ts +94 -0
- package/dist/esm/src/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/esm/src/storage/StorageAdapter.js +158 -0
- package/dist/esm/src/storage/StorageAdapter.js.map +1 -0
- package/dist/esm/src/storage/index.d.ts +12 -0
- package/dist/esm/src/storage/index.d.ts.map +1 -0
- package/dist/esm/src/storage/index.js +17 -0
- package/dist/esm/src/storage/index.js.map +1 -0
- package/dist/esm/src/testing/BrowserStateInjection.d.ts +74 -0
- package/dist/esm/src/testing/BrowserStateInjection.d.ts.map +1 -0
- package/dist/esm/src/testing/BrowserStateInjection.js +126 -0
- package/dist/esm/src/testing/BrowserStateInjection.js.map +1 -0
- package/dist/esm/src/testing/ComponentStateHelpers.d.ts +121 -0
- package/dist/esm/src/testing/ComponentStateHelpers.d.ts.map +1 -0
- package/dist/esm/src/testing/ComponentStateHelpers.js +190 -0
- package/dist/esm/src/testing/ComponentStateHelpers.js.map +1 -0
- package/dist/esm/src/testing/GherkinParser.d.ts +87 -0
- package/dist/esm/src/testing/GherkinParser.d.ts.map +1 -0
- package/dist/esm/src/testing/GherkinParser.js +248 -0
- package/dist/esm/src/testing/GherkinParser.js.map +1 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts +163 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts.map +1 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.js +242 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.js.map +1 -0
- package/dist/esm/src/testing/TestRunner.d.ts +50 -0
- package/dist/esm/src/testing/TestRunner.d.ts.map +1 -0
- package/dist/esm/src/testing/TestRunner.js +121 -0
- package/dist/esm/src/testing/TestRunner.js.map +1 -0
- package/dist/esm/src/testing/index.d.ts +12 -0
- package/dist/esm/src/testing/index.d.ts.map +1 -0
- package/dist/esm/src/testing/index.js +25 -0
- package/dist/esm/src/testing/index.js.map +1 -0
- package/dist/esm/src/testing/selectors.d.ts +65 -0
- package/dist/esm/src/testing/selectors.d.ts.map +1 -0
- package/dist/esm/src/testing/selectors.js +76 -0
- package/dist/esm/src/testing/selectors.js.map +1 -0
- package/dist/esm/src/tools/SystemTools.d.ts +139 -0
- package/dist/esm/src/tools/SystemTools.d.ts.map +1 -0
- package/dist/esm/src/tools/SystemTools.js +258 -0
- package/dist/esm/src/tools/SystemTools.js.map +1 -0
- package/dist/esm/src/types/ClassifiedTool.d.ts +61 -0
- package/dist/esm/src/types/ClassifiedTool.d.ts.map +1 -0
- package/dist/esm/src/types/ClassifiedTool.js +47 -0
- package/dist/esm/src/types/ClassifiedTool.js.map +1 -0
- package/dist/esm/src/types/ComponentState.d.ts +207 -0
- package/dist/esm/src/types/ComponentState.d.ts.map +1 -0
- package/dist/esm/src/types/ComponentState.js +25 -0
- package/dist/esm/src/types/ComponentState.js.map +1 -0
- package/dist/esm/src/types/DiscoverableToolProvider.d.ts +59 -0
- package/dist/esm/src/types/DiscoverableToolProvider.d.ts.map +1 -0
- package/dist/esm/src/types/DiscoverableToolProvider.js +8 -0
- package/dist/esm/src/types/DiscoverableToolProvider.js.map +1 -0
- package/dist/esm/src/types/ExposureState.d.ts +75 -0
- package/dist/esm/src/types/ExposureState.d.ts.map +1 -0
- package/dist/esm/src/types/ExposureState.js +22 -0
- package/dist/esm/src/types/ExposureState.js.map +1 -0
- package/dist/esm/src/types/NavigationGraph.d.ts +98 -0
- package/dist/esm/src/types/NavigationGraph.d.ts.map +1 -0
- package/dist/esm/src/types/NavigationGraph.js +7 -0
- package/dist/esm/src/types/NavigationGraph.js.map +1 -0
- package/dist/esm/src/types/OperationType.d.ts +45 -0
- package/dist/esm/src/types/OperationType.d.ts.map +1 -0
- package/dist/esm/src/types/OperationType.js +46 -0
- package/dist/esm/src/types/OperationType.js.map +1 -0
- package/dist/esm/src/types/StateManagers.d.ts +35 -0
- package/dist/esm/src/types/StateManagers.d.ts.map +1 -0
- package/dist/esm/src/types/StateManagers.js +36 -0
- package/dist/esm/src/types/StateManagers.js.map +1 -0
- package/dist/esm/src/types/Tool.d.ts +162 -0
- package/dist/esm/src/types/Tool.d.ts.map +1 -0
- package/dist/esm/src/types/Tool.js +38 -0
- package/dist/esm/src/types/Tool.js.map +1 -0
- package/dist/esm/src/types/ToolPermissions.d.ts +73 -0
- package/dist/esm/src/types/ToolPermissions.d.ts.map +1 -0
- package/dist/esm/src/types/ToolPermissions.js +51 -0
- package/dist/esm/src/types/ToolPermissions.js.map +1 -0
- package/dist/esm/src/types/ToolResult.d.ts +129 -0
- package/dist/esm/src/types/ToolResult.d.ts.map +1 -0
- package/dist/esm/src/types/ToolResult.js +22 -0
- package/dist/esm/src/types/ToolResult.js.map +1 -0
- package/dist/esm/src/types/index.d.ts +47 -0
- package/dist/esm/src/types/index.d.ts.map +1 -0
- package/dist/esm/src/types/index.js +42 -0
- package/dist/esm/src/types/index.js.map +1 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +23 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +1 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.js +184 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.js.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Playwright Test Helpers for Browser State Injection
|
|
4
|
+
*
|
|
5
|
+
* Utilities for E2E tests to interact with component state
|
|
6
|
+
* using the browser state injection system.
|
|
7
|
+
*
|
|
8
|
+
* @module PlaywrightStateHelpers
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.setComponentState = setComponentState;
|
|
12
|
+
exports.getComponentState = getComponentState;
|
|
13
|
+
exports.resetComponentState = resetComponentState;
|
|
14
|
+
exports.waitForComponent = waitForComponent;
|
|
15
|
+
exports.hasComponent = hasComponent;
|
|
16
|
+
exports.setComponentStateFromContract = setComponentStateFromContract;
|
|
17
|
+
exports.assertComponentStateMatches = assertComponentStateMatches;
|
|
18
|
+
exports.getComponentElement = getComponentElement;
|
|
19
|
+
exports.initializeTestState = initializeTestState;
|
|
20
|
+
exports.batchStateOperations = batchStateOperations;
|
|
21
|
+
/**
|
|
22
|
+
* Set component state in the browser
|
|
23
|
+
*
|
|
24
|
+
* @param page - Playwright page object
|
|
25
|
+
* @param componentName - Component name from @Component decorator
|
|
26
|
+
* @param state - Partial state to merge
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* await setComponentState(page, 'counter', { count: 5 });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
async function setComponentState(page, componentName, state) {
|
|
34
|
+
await page.evaluate(({ component, newState }) => {
|
|
35
|
+
if (!window.__testState__) {
|
|
36
|
+
throw new Error('Test state manager not initialized. Did you forget to call initializeTestStateManager()?');
|
|
37
|
+
}
|
|
38
|
+
window.__testState__.setState(component, newState);
|
|
39
|
+
}, { component: componentName, newState: state });
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get component state from the browser
|
|
43
|
+
*
|
|
44
|
+
* @param page - Playwright page object
|
|
45
|
+
* @param componentName - Component name from @Component decorator
|
|
46
|
+
* @returns Current component state or undefined
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const state = await getComponentState(page, 'counter');
|
|
51
|
+
* expect(state.count).toBe(5);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
async function getComponentState(page, componentName) {
|
|
55
|
+
return await page.evaluate((component) => {
|
|
56
|
+
if (!window.__testState__) {
|
|
57
|
+
throw new Error('Test state manager not initialized');
|
|
58
|
+
}
|
|
59
|
+
return window.__testState__.getState(component);
|
|
60
|
+
}, componentName);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Reset component to initial state
|
|
64
|
+
*
|
|
65
|
+
* @param page - Playwright page object
|
|
66
|
+
* @param componentName - Component name from @Component decorator
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* await resetComponentState(page, 'counter');
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
async function resetComponentState(page, componentName) {
|
|
74
|
+
await page.evaluate((component) => {
|
|
75
|
+
if (!window.__testState__) {
|
|
76
|
+
throw new Error('Test state manager not initialized');
|
|
77
|
+
}
|
|
78
|
+
window.__testState__.resetState(component);
|
|
79
|
+
}, componentName);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Wait for component to be available in the DOM
|
|
83
|
+
*
|
|
84
|
+
* @param page - Playwright page object
|
|
85
|
+
* @param componentName - Component name from @Component decorator
|
|
86
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000)
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* await waitForComponent(page, 'counter');
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
async function waitForComponent(page, componentName, timeoutMs = 5000) {
|
|
94
|
+
await page.evaluate(async ({ component, timeout }) => {
|
|
95
|
+
if (!window.__testState__) {
|
|
96
|
+
throw new Error('Test state manager not initialized');
|
|
97
|
+
}
|
|
98
|
+
await window.__testState__.waitForComponent(component, timeout);
|
|
99
|
+
}, { component: componentName, timeout: timeoutMs });
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if component is available
|
|
103
|
+
*
|
|
104
|
+
* @param page - Playwright page object
|
|
105
|
+
* @param componentName - Component name from @Component decorator
|
|
106
|
+
* @returns True if component is rendered and available
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const isAvailable = await hasComponent(page, 'counter');
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
async function hasComponent(page, componentName) {
|
|
114
|
+
return await page.evaluate((component) => {
|
|
115
|
+
if (!window.__testState__) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return window.__testState__.hasComponent(component);
|
|
119
|
+
}, componentName);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Set component state from a data contract
|
|
123
|
+
*
|
|
124
|
+
* @param page - Playwright page object
|
|
125
|
+
* @param componentName - Component name
|
|
126
|
+
* @param dataContract - Data contract object (e.g., ExamplesData.counter.state.five)
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* import { ExamplesData } from '@supernal-interface/core';
|
|
131
|
+
*
|
|
132
|
+
* await setComponentStateFromContract(
|
|
133
|
+
* page,
|
|
134
|
+
* 'counter',
|
|
135
|
+
* ExamplesData.counter.state.five
|
|
136
|
+
* );
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
async function setComponentStateFromContract(page, componentName, dataContract) {
|
|
140
|
+
await setComponentState(page, componentName, dataContract);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Assert component state matches data contract
|
|
144
|
+
*
|
|
145
|
+
* @param page - Playwright page object
|
|
146
|
+
* @param componentName - Component name
|
|
147
|
+
* @param expectedContract - Expected data contract
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* await assertComponentStateMatches(
|
|
152
|
+
* page,
|
|
153
|
+
* 'counter',
|
|
154
|
+
* ExamplesData.counter.state.five
|
|
155
|
+
* );
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
async function assertComponentStateMatches(page, componentName, expectedContract) {
|
|
159
|
+
const actualState = await getComponentState(page, componentName);
|
|
160
|
+
if (!actualState) {
|
|
161
|
+
throw new Error(`Component '${componentName}' state is undefined`);
|
|
162
|
+
}
|
|
163
|
+
// Deep equality check
|
|
164
|
+
const actualJson = JSON.stringify(actualState);
|
|
165
|
+
const expectedJson = JSON.stringify(expectedContract);
|
|
166
|
+
if (actualJson !== expectedJson) {
|
|
167
|
+
throw new Error(`Component '${componentName}' state does not match.\n` +
|
|
168
|
+
`Expected: ${expectedJson}\n` +
|
|
169
|
+
`Actual: ${actualJson}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get component element by name
|
|
174
|
+
*
|
|
175
|
+
* @param page - Playwright page object
|
|
176
|
+
* @param componentName - Component name
|
|
177
|
+
* @returns Locator for the component element
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* const counter = getComponentElement(page, 'counter');
|
|
182
|
+
* await expect(counter).toBeVisible();
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
function getComponentElement(page, componentName) {
|
|
186
|
+
return page.locator(`[data-component="${componentName}"]`);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Initialize test state manager in the browser
|
|
190
|
+
* Call this in beforeEach or at the start of tests
|
|
191
|
+
*
|
|
192
|
+
* @param page - Playwright page object
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```typescript
|
|
196
|
+
* test.beforeEach(async ({ page }) => {
|
|
197
|
+
* await initializeTestState(page);
|
|
198
|
+
* });
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
async function initializeTestState(page) {
|
|
202
|
+
await page.evaluate(() => {
|
|
203
|
+
// Force initialize test state manager regardless of NODE_ENV
|
|
204
|
+
if (typeof window !== 'undefined' && !window.__testState__) {
|
|
205
|
+
// Create a minimal test state manager
|
|
206
|
+
window.__testState__ = {
|
|
207
|
+
states: new Map(),
|
|
208
|
+
getState(component) {
|
|
209
|
+
return this.states.get(component);
|
|
210
|
+
},
|
|
211
|
+
setState(component, state) {
|
|
212
|
+
const current = this.states.get(component) || {};
|
|
213
|
+
this.states.set(component, { ...current, ...state });
|
|
214
|
+
},
|
|
215
|
+
resetState(component) {
|
|
216
|
+
this.states.delete(component);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
console.log('[TEST] Test state manager initialized in browser');
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Batch state operations
|
|
225
|
+
* Useful for setting up complex test scenarios
|
|
226
|
+
*
|
|
227
|
+
* @param page - Playwright page object
|
|
228
|
+
* @param operations - Array of state operations
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```typescript
|
|
232
|
+
* await batchStateOperations(page, [
|
|
233
|
+
* { type: 'set', component: 'counter', state: { count: 5 } },
|
|
234
|
+
* { type: 'set', component: 'chat', state: { messages: [] } },
|
|
235
|
+
* { type: 'reset', component: 'form' },
|
|
236
|
+
* ]);
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
async function batchStateOperations(page, operations) {
|
|
240
|
+
await page.evaluate((ops) => {
|
|
241
|
+
if (!window.__testState__) {
|
|
242
|
+
throw new Error('Test state manager not initialized');
|
|
243
|
+
}
|
|
244
|
+
for (const op of ops) {
|
|
245
|
+
if (op.type === 'set') {
|
|
246
|
+
window.__testState__.setState(op.component, op.state);
|
|
247
|
+
}
|
|
248
|
+
else if (op.type === 'reset') {
|
|
249
|
+
window.__testState__.resetState(op.component);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}, operations);
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=PlaywrightStateHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightStateHelpers.js","sourceRoot":"","sources":["../../../../src/testing/PlaywrightStateHelpers.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAgBH,8CAcC;AAeD,8CAaC;AAaD,kDAaC;AAcD,4CAcC;AAcD,oCAaC;AAoBD,sEAMC;AAkBD,kEAsBC;AAeD,kDAEC;AAeD,kDAqBC;AAkBD,oDAoBC;AApSD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,aAAqB,EACrB,KAAU;IAEV,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC,EACD,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,aAAqB;IAErB,OAAO,MAAM,IAAI,CAAC,QAAQ,CACxB,CAAC,SAAS,EAAE,EAAE;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,EACD,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAAU,EACV,aAAqB;IAErB,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,SAAS,EAAE,EAAE;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,EACD,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,gBAAgB,CACpC,IAAU,EACV,aAAqB,EACrB,YAAoB,IAAI;IAExB,MAAM,IAAI,CAAC,QAAQ,CACjB,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,EACD,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CACjD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,YAAY,CAChC,IAAU,EACV,aAAqB;IAErB,OAAO,MAAM,IAAI,CAAC,QAAQ,CACxB,CAAC,SAAS,EAAE,EAAE;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,EACD,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,6BAA6B,CACjD,IAAU,EACV,aAAqB,EACrB,YAAiB;IAEjB,MAAM,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,2BAA2B,CAC/C,IAAU,EACV,aAAqB,EACrB,gBAAqB;IAErB,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,cAAc,aAAa,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtD,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,cAAc,aAAa,2BAA2B;YACtD,aAAa,YAAY,IAAI;YAC7B,WAAW,UAAU,EAAE,CACxB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CAAC,IAAU,EAAE,aAAqB;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,aAAa,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,mBAAmB,CAAC,IAAU;IAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvB,6DAA6D;QAC7D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAE,MAAc,CAAC,aAAa,EAAE,CAAC;YACpE,sCAAsC;YACrC,MAAc,CAAC,aAAa,GAAG;gBAC9B,MAAM,EAAE,IAAI,GAAG,EAAE;gBACjB,QAAQ,CAAC,SAAiB;oBACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpC,CAAC;gBACD,QAAQ,CAAC,SAAiB,EAAE,KAAU;oBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;oBACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBACvD,CAAC;gBACD,UAAU,CAAC,SAAiB;oBAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,CAAC;aACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAAU,EACV,UAGC;IAED,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test Runner
|
|
4
|
+
*
|
|
5
|
+
* Orchestrates test generation and execution.
|
|
6
|
+
* Basic open-source version (TestGenerator and Story system are enterprise edition).
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.TestRunner = void 0;
|
|
43
|
+
// Enterprise features - not available in open source edition
|
|
44
|
+
// import { TestGenerator } from '../generators/TestGenerator';
|
|
45
|
+
// import { StoryRegistry, StoryExecutor } from '../background/stories';
|
|
46
|
+
const GherkinParser_1 = require("./GherkinParser");
|
|
47
|
+
const ToolRegistry_1 = require("../background/registry/ToolRegistry");
|
|
48
|
+
class TestRunner {
|
|
49
|
+
/**
|
|
50
|
+
* Generate all test files
|
|
51
|
+
*
|
|
52
|
+
* NOTE: Full test generation is part of @supernal/interface-enterprise
|
|
53
|
+
* Open source edition includes basic Gherkin parsing only.
|
|
54
|
+
*/
|
|
55
|
+
static async generateTests(options = {}) {
|
|
56
|
+
const tests = new Map();
|
|
57
|
+
// 1. Standard test generation - Enterprise feature
|
|
58
|
+
// const standardTests = TestGenerator.generateAllTests({...});
|
|
59
|
+
// Enterprise feature - see https://supernal.ai/enterprise
|
|
60
|
+
// 2. Generate Gherkin-based tests if requested (basic support)
|
|
61
|
+
if (options.includeGherkin) {
|
|
62
|
+
const gherkinTests = this.generateGherkinTests(options);
|
|
63
|
+
for (const [filename, content] of gherkinTests) {
|
|
64
|
+
tests.set(filename, content);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// 3. Story-based tests - Enterprise feature
|
|
68
|
+
if (options.includeStories) {
|
|
69
|
+
throw new Error('Story system is part of @supernal/interface-enterprise. ' +
|
|
70
|
+
'Visit https://supernal.ai/enterprise for more information.');
|
|
71
|
+
}
|
|
72
|
+
return tests;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate Gherkin feature files and tests
|
|
76
|
+
*/
|
|
77
|
+
static generateGherkinTests(options) {
|
|
78
|
+
const files = new Map();
|
|
79
|
+
// Get tools grouped by category
|
|
80
|
+
const categories = new Set(ToolRegistry_1.ToolRegistry.getTools().map(t => t.category));
|
|
81
|
+
for (const category of categories) {
|
|
82
|
+
if (options.filterByCategory && category !== options.filterByCategory) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const tools = ToolRegistry_1.ToolRegistry.getToolsByCategory(category);
|
|
86
|
+
if (tools.length === 0)
|
|
87
|
+
continue;
|
|
88
|
+
// Generate feature file
|
|
89
|
+
const featureName = `${category} Tools`;
|
|
90
|
+
const feature = GherkinParser_1.GherkinParser.generateFeature(featureName, tools, {
|
|
91
|
+
description: `Test ${category} tool interactions`,
|
|
92
|
+
tags: [category.toLowerCase(), 'generated']
|
|
93
|
+
});
|
|
94
|
+
files.set(`${category.toLowerCase()}.feature`, feature);
|
|
95
|
+
// Parse and generate Playwright test
|
|
96
|
+
const parsedFeature = GherkinParser_1.GherkinParser.parseFeature(feature);
|
|
97
|
+
const test = GherkinParser_1.GherkinParser.generatePlaywrightTest(parsedFeature);
|
|
98
|
+
files.set(`${category.toLowerCase()}.gherkin.spec.ts`, test);
|
|
99
|
+
}
|
|
100
|
+
return files;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Generate story-based test file
|
|
104
|
+
*
|
|
105
|
+
* NOTE: Story system is part of @supernal/interface-enterprise
|
|
106
|
+
*/
|
|
107
|
+
static generateStoryTests(options) {
|
|
108
|
+
throw new Error('Story system is part of @supernal/interface-enterprise. ' +
|
|
109
|
+
'Visit https://supernal.ai/enterprise for more information.');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Generate documentation
|
|
113
|
+
*
|
|
114
|
+
* NOTE: Full documentation generation requires ToolPromptGenerator
|
|
115
|
+
* which is under review for open source vs enterprise.
|
|
116
|
+
*/
|
|
117
|
+
static generateDocumentation() {
|
|
118
|
+
const docs = new Map();
|
|
119
|
+
// Basic registry overview (available in open source)
|
|
120
|
+
const overview = ToolRegistry_1.ToolRegistry.overview();
|
|
121
|
+
docs.set('REGISTRY_OVERVIEW.txt', overview);
|
|
122
|
+
// Advanced documentation - Enterprise feature
|
|
123
|
+
// const toolDocs = ToolPromptGenerator.generatePrompt('documentation', {...});
|
|
124
|
+
// const summary = ToolPromptGenerator.generateToolSummary();
|
|
125
|
+
return docs;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Write files to disk
|
|
129
|
+
*/
|
|
130
|
+
static async writeFiles(files, outputDir) {
|
|
131
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
132
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
133
|
+
// Ensure output directory exists
|
|
134
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
135
|
+
// Write each file
|
|
136
|
+
for (const [filename, content] of files) {
|
|
137
|
+
const filePath = path.join(outputDir, filename);
|
|
138
|
+
// Create subdirectories if needed
|
|
139
|
+
const dir = path.dirname(filePath);
|
|
140
|
+
await fs.mkdir(dir, { recursive: true });
|
|
141
|
+
await fs.writeFile(filePath, content, 'utf8');
|
|
142
|
+
console.log(`✅ Generated: ${filePath}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Generate and write all tests
|
|
147
|
+
*/
|
|
148
|
+
static async generateAndWrite(options = {}) {
|
|
149
|
+
const outputDir = options.outputDir || './tests/generated';
|
|
150
|
+
console.log(`🔧 Generating tests...`);
|
|
151
|
+
const tests = await this.generateTests(options);
|
|
152
|
+
console.log(`📝 Writing ${tests.size} test files to ${outputDir}...`);
|
|
153
|
+
await this.writeFiles(tests, outputDir);
|
|
154
|
+
console.log(`✅ Test generation complete!`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.TestRunner = TestRunner;
|
|
158
|
+
//# sourceMappingURL=TestRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestRunner.js","sourceRoot":"","sources":["../../../../src/testing/TestRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Testing Utilities - Browser State Injection
|
|
4
|
+
*
|
|
5
|
+
* Provides complete testing infrastructure for component state management
|
|
6
|
+
* in E2E and integration tests.
|
|
7
|
+
*
|
|
8
|
+
* @module @supernal-interface/core/testing
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.testIdEndsWith = exports.testIdStartsWith = exports.testIdContains = exports.tid = exports.testIds = exports.testId = exports.batchStateOperations = exports.initializeTestState = exports.getComponentElement = exports.assertComponentStateMatches = exports.setComponentStateFromContract = exports.hasComponent = exports.waitForComponent = exports.resetComponentState = exports.getComponentState = exports.setComponentState = exports.getTestStateManager = exports.initializeTestStateManager = void 0;
|
|
12
|
+
// Browser-side utilities
|
|
13
|
+
var BrowserStateInjection_1 = require("./BrowserStateInjection");
|
|
14
|
+
Object.defineProperty(exports, "initializeTestStateManager", { enumerable: true, get: function () { return BrowserStateInjection_1.initializeTestStateManager; } });
|
|
15
|
+
Object.defineProperty(exports, "getTestStateManager", { enumerable: true, get: function () { return BrowserStateInjection_1.getTestStateManager; } });
|
|
16
|
+
// React hooks (enterprise feature - not in open source)
|
|
17
|
+
// export {
|
|
18
|
+
// useTestStateInjection,
|
|
19
|
+
// useTestStateAttributes,
|
|
20
|
+
// useTestState,
|
|
21
|
+
// setupTestStateInjection,
|
|
22
|
+
// } from './useTestStateInjection';
|
|
23
|
+
// Playwright helpers
|
|
24
|
+
var PlaywrightStateHelpers_1 = require("./PlaywrightStateHelpers");
|
|
25
|
+
Object.defineProperty(exports, "setComponentState", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.setComponentState; } });
|
|
26
|
+
Object.defineProperty(exports, "getComponentState", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.getComponentState; } });
|
|
27
|
+
Object.defineProperty(exports, "resetComponentState", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.resetComponentState; } });
|
|
28
|
+
Object.defineProperty(exports, "waitForComponent", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.waitForComponent; } });
|
|
29
|
+
Object.defineProperty(exports, "hasComponent", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.hasComponent; } });
|
|
30
|
+
Object.defineProperty(exports, "setComponentStateFromContract", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.setComponentStateFromContract; } });
|
|
31
|
+
Object.defineProperty(exports, "assertComponentStateMatches", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.assertComponentStateMatches; } });
|
|
32
|
+
Object.defineProperty(exports, "getComponentElement", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.getComponentElement; } });
|
|
33
|
+
Object.defineProperty(exports, "initializeTestState", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.initializeTestState; } });
|
|
34
|
+
Object.defineProperty(exports, "batchStateOperations", { enumerable: true, get: function () { return PlaywrightStateHelpers_1.batchStateOperations; } });
|
|
35
|
+
// Test selectors
|
|
36
|
+
var selectors_1 = require("./selectors");
|
|
37
|
+
Object.defineProperty(exports, "testId", { enumerable: true, get: function () { return selectors_1.testId; } });
|
|
38
|
+
Object.defineProperty(exports, "testIds", { enumerable: true, get: function () { return selectors_1.testIds; } });
|
|
39
|
+
Object.defineProperty(exports, "tid", { enumerable: true, get: function () { return selectors_1.tid; } });
|
|
40
|
+
Object.defineProperty(exports, "testIdContains", { enumerable: true, get: function () { return selectors_1.testIdContains; } });
|
|
41
|
+
Object.defineProperty(exports, "testIdStartsWith", { enumerable: true, get: function () { return selectors_1.testIdStartsWith; } });
|
|
42
|
+
Object.defineProperty(exports, "testIdEndsWith", { enumerable: true, get: function () { return selectors_1.testIdEndsWith; } });
|
|
43
|
+
// NOTE: ComponentStateHelpers are NOT exported here because they import Playwright
|
|
44
|
+
// which cannot be bundled in client code. Import directly in test files:
|
|
45
|
+
// import { assertComponentState } from '@supernal-interface/core/testing/ComponentStateHelpers';
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,yBAAyB;AACzB,iEAMiC;AAL/B,mIAAA,0BAA0B,OAAA;AAC1B,4HAAA,mBAAmB,OAAA;AAMrB,wDAAwD;AACxD,WAAW;AACX,2BAA2B;AAC3B,4BAA4B;AAC5B,kBAAkB;AAClB,6BAA6B;AAC7B,oCAAoC;AAEpC,qBAAqB;AACrB,mEAWkC;AAVhC,2HAAA,iBAAiB,OAAA;AACjB,2HAAA,iBAAiB,OAAA;AACjB,6HAAA,mBAAmB,OAAA;AACnB,0HAAA,gBAAgB,OAAA;AAChB,sHAAA,YAAY,OAAA;AACZ,uIAAA,6BAA6B,OAAA;AAC7B,qIAAA,2BAA2B,OAAA;AAC3B,6HAAA,mBAAmB,OAAA;AACnB,6HAAA,mBAAmB,OAAA;AACnB,8HAAA,oBAAoB,OAAA;AAGtB,iBAAiB;AACjB,yCAOqB;AANnB,mGAAA,MAAM,OAAA;AACN,oGAAA,OAAO,OAAA;AACP,gGAAA,GAAG,OAAA;AACH,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,2GAAA,cAAc,OAAA;AAGhB,mFAAmF;AACnF,yEAAyE;AACzE,iGAAiG"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Testing Selector Helpers
|
|
4
|
+
*
|
|
5
|
+
* Utilities for converting component name contracts to test selectors.
|
|
6
|
+
* Reduces boilerplate and ensures consistency across test files.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.tid = void 0;
|
|
10
|
+
exports.testId = testId;
|
|
11
|
+
exports.testIds = testIds;
|
|
12
|
+
exports.testIdContains = testIdContains;
|
|
13
|
+
exports.testIdStartsWith = testIdStartsWith;
|
|
14
|
+
exports.testIdEndsWith = testIdEndsWith;
|
|
15
|
+
/**
|
|
16
|
+
* Convert a component name (from name contracts) to a data-testid selector
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { Chat } from '../architecture/DemoComponentNames';
|
|
21
|
+
* import { testId } from '@supernal-interface/core/testing';
|
|
22
|
+
*
|
|
23
|
+
* const input = page.locator(testId(Chat.input));
|
|
24
|
+
* // Equivalent to: page.locator('[data-testid="chat-input"]')
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function testId(componentId) {
|
|
28
|
+
return `[data-testid="${componentId}"]`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create multiple selectors at once
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const selectors = testIds({
|
|
36
|
+
* input: Chat.input,
|
|
37
|
+
* button: Chat.sendButton
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* await page.locator(selectors.input).fill('hello');
|
|
41
|
+
* await page.locator(selectors.button).click();
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
function testIds(ids) {
|
|
45
|
+
return Object.entries(ids).reduce((acc, [key, value]) => {
|
|
46
|
+
acc[key] = testId(value);
|
|
47
|
+
return acc;
|
|
48
|
+
}, {});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Alias for testId - shorter for repetitive use
|
|
52
|
+
*/
|
|
53
|
+
exports.tid = testId;
|
|
54
|
+
/**
|
|
55
|
+
* Create a selector for elements with partial testid match
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Find all chat messages
|
|
60
|
+
* const messages = page.locator(testIdContains('chat-message'));
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
function testIdContains(partial) {
|
|
64
|
+
return `[data-testid*="${partial}"]`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create a selector for elements with testid starting with prefix
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Find all navigation elements
|
|
72
|
+
* const navElements = page.locator(testIdStartsWith('nav-'));
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
function testIdStartsWith(prefix) {
|
|
76
|
+
return `[data-testid^="${prefix}"]`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a selector for elements with testid ending with suffix
|
|
80
|
+
*/
|
|
81
|
+
function testIdEndsWith(suffix) {
|
|
82
|
+
return `[data-testid$="${suffix}"]`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=selectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../../../src/testing/selectors.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAcH,wBAEC;AAgBD,0BAOC;AAgBD,wCAEC;AAWD,4CAEC;AAKD,wCAEC;AA3ED;;;;;;;;;;;GAWG;AACH,SAAgB,MAAM,CAAC,WAAmB;IACxC,OAAO,iBAAiB,WAAW,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,OAAO,CACrB,GAAM;IAEN,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACtD,GAAG,CAAC,GAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgC,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACU,QAAA,GAAG,GAAG,MAAM,CAAC;AAE1B;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,kBAAkB,OAAO,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO,kBAAkB,MAAM,IAAI,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,kBAAkB,MAAM,IAAI,CAAC;AACtC,CAAC"}
|