#!/usr/bin/env python3 """ Test UI deployment dialog without requiring Kneron SDK. This tests the UI deployment flow to verify our fixes work. """ import sys import os from PyQt5.QtWidgets import QApplication from typing import Dict, Any # Add project paths project_root = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, project_root) def create_test_pipeline_data() -> Dict[str, Any]: """Create a minimal test pipeline that should work.""" return { 'project_name': 'Test Deployment Pipeline', 'description': 'Testing fixed deployment with result handling', 'version': '1.0', 'nodes': [ { 'id': 'input_1', 'name': 'Camera Input', 'type': 'ExactInputNode', 'pos': [100, 100], 'properties': { 'source_type': 'camera', # lowercase to match WorkflowOrchestrator 'device_id': 0, 'resolution': '640x480', 'fps': 10 } }, { 'id': 'model_1', 'name': 'Test Model', 'type': 'ExactModelNode', 'pos': [300, 100], 'properties': { 'model_path': '/path/to/test.nef', 'scpu_fw_path': 'fw_scpu.bin', 'ncpu_fw_path': 'fw_ncpu.bin', 'port_ids': [28, 32], 'upload_fw': True } }, { 'id': 'output_1', 'name': 'Debug Output', 'type': 'ExactOutputNode', 'pos': [500, 100], 'properties': { 'output_type': 'console', 'destination': './debug_output' } } ], 'connections': [ { 'input_node': 'input_1', 'input_port': 'output', 'output_node': 'model_1', 'output_port': 'input' }, { 'input_node': 'model_1', 'input_port': 'output', 'output_node': 'output_1', 'output_port': 'input' } ] } def main(): """Test the deployment dialog.""" print("๐Ÿงช TESTING UI DEPLOYMENT DIALOG") print("=" * 50) app = QApplication(sys.argv) try: # Import UI components from ui.dialogs.deployment import DeploymentDialog # Create test pipeline data pipeline_data = create_test_pipeline_data() print("1. Creating deployment dialog...") dialog = DeploymentDialog(pipeline_data) print("2. Showing dialog...") print(" - Click 'Analyze Pipeline' to test configuration") print(" - Click 'Deploy to Dongles' to test deployment") print(" - With our fixes, you should now see result debugging output") print(" - Results should appear in the Live View tab") # Show the dialog result = dialog.exec_() if result == dialog.Accepted: print("โœ… Dialog completed successfully") else: print("โŒ Dialog was cancelled") except ImportError as e: print(f"โŒ Could not import UI components: {e}") print("This test needs to run with PyQt5 available") except Exception as e: print(f"โŒ Error testing deployment dialog: {e}") import traceback traceback.print_exc() if __name__ == "__main__": main()