 c177363a19
			
		
	
	c177363a19
	
	
	
		
			
			🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			131 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 'use client'
 | |
| 
 | |
| import { useState } from 'react'
 | |
| 
 | |
| interface TestingValidationProps {
 | |
|   systemInfo: any
 | |
|   configData: any
 | |
|   onComplete: (data: any) => void
 | |
|   onBack?: () => void
 | |
|   isCompleted: boolean
 | |
| }
 | |
| 
 | |
| export default function TestingValidation({ 
 | |
|   systemInfo, 
 | |
|   configData, 
 | |
|   onComplete, 
 | |
|   onBack, 
 | |
|   isCompleted 
 | |
| }: TestingValidationProps) {
 | |
|   const [testing, setTesting] = useState(false)
 | |
| 
 | |
|   const handleRunTests = async () => {
 | |
|     setTesting(true)
 | |
|     // Simulate testing process
 | |
|     await new Promise(resolve => setTimeout(resolve, 3000))
 | |
|     setTesting(false)
 | |
|     onComplete({ 
 | |
|       testing: { 
 | |
|         passed: true, 
 | |
|         completedAt: new Date().toISOString() 
 | |
|       } 
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   const getClusterDashboardUrl = () => {
 | |
|     // Get the WebUI port from config, default to 9090
 | |
|     const webuiPort = configData?.network?.ports?.webui || 9090
 | |
|     return `http://localhost:${webuiPort}/dashboard`
 | |
|   }
 | |
| 
 | |
|   const handleGoToDashboard = () => {
 | |
|     const dashboardUrl = getClusterDashboardUrl()
 | |
|     
 | |
|     // Clear setup state since we're done
 | |
|     localStorage.removeItem('bzzz-setup-state')
 | |
|     
 | |
|     // Open cluster dashboard in new tab
 | |
|     window.open(dashboardUrl, '_blank')
 | |
|     
 | |
|     // Show completion message and suggest closing this tab
 | |
|     const shouldClose = window.confirm(
 | |
|       'Setup complete! The cluster dashboard has opened in a new tab.\n\n' +
 | |
|       'You can now close this setup tab. Click OK to close automatically, or Cancel to keep it open.'
 | |
|     )
 | |
|     
 | |
|     if (shouldClose) {
 | |
|       window.close()
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return (
 | |
|     <div className="space-y-6">
 | |
|       <div className="text-center py-12">
 | |
|         <h3 className="text-lg font-medium text-gray-900 mb-2">
 | |
|           Testing & Validation
 | |
|         </h3>
 | |
|         <p className="text-gray-600">
 | |
|           Validate your BZZZ cluster configuration and test all connections.
 | |
|         </p>
 | |
|         <div className="mt-8">
 | |
|           <div className="bg-yellow-50 border border-yellow-200 rounded-lg p-4 text-yellow-800">
 | |
|             This component is under development. Testing and validation will be implemented here.
 | |
|           </div>
 | |
|         </div>
 | |
|         
 | |
|         {!isCompleted && (
 | |
|           <div className="mt-8">
 | |
|             <button
 | |
|               onClick={handleRunTests}
 | |
|               disabled={testing}
 | |
|               className="btn-primary"
 | |
|             >
 | |
|               {testing ? 'Running Tests...' : 'Run Validation Tests'}
 | |
|             </button>
 | |
|           </div>
 | |
|         )}
 | |
|         
 | |
|         {isCompleted && (
 | |
|           <div className="mt-8 bg-green-50 border border-green-200 rounded-lg p-6">
 | |
|             <h4 className="text-lg font-medium text-green-900 mb-2">
 | |
|               🎉 Setup Complete!
 | |
|             </h4>
 | |
|             <p className="text-green-700 mb-4">
 | |
|               Your CHORUS:agents cluster has been successfully configured and deployed.
 | |
|             </p>
 | |
|             <div className="space-y-2 text-sm text-green-600 mb-4">
 | |
|               <div>✓ System configuration validated</div>
 | |
|               <div>✓ Network connectivity tested</div>
 | |
|               <div>✓ Services deployed to all nodes</div>
 | |
|               <div>✓ Cluster formation completed</div>
 | |
|             </div>
 | |
|             <div className="bg-blue-50 border border-blue-200 rounded-lg p-4">
 | |
|               <p className="text-sm text-blue-800">
 | |
|                 <strong>Cluster Dashboard:</strong> <code>{getClusterDashboardUrl()}</code>
 | |
|               </p>
 | |
|               <p className="text-xs text-blue-600 mt-1">
 | |
|                 The setup process will be terminated and you'll be redirected to your operational cluster.
 | |
|               </p>
 | |
|             </div>
 | |
|           </div>
 | |
|         )}
 | |
|       </div>
 | |
| 
 | |
|       <div className="flex justify-between pt-6 border-t border-gray-200">
 | |
|         <div>
 | |
|           {onBack && (
 | |
|             <button onClick={onBack} className="btn-outline">
 | |
|               Back
 | |
|             </button>
 | |
|           )}
 | |
|         </div>
 | |
|         
 | |
|         {isCompleted && (
 | |
|           <button onClick={handleGoToDashboard} className="btn-primary">
 | |
|             Go to Cluster Dashboard
 | |
|           </button>
 | |
|         )}
 | |
|       </div>
 | |
|     </div>
 | |
|   )
 | |
| } |