ai-wpa/components/StartupTest.tsx

71 lines
1.8 KiB
TypeScript

'use client'
import { useEffect, useState } from 'react'
interface StartupTestProps {
children: React.ReactNode
}
export function StartupTest({ children }: StartupTestProps) {
const [testComplete, setTestComplete] = useState(false)
const [testPassed, setTestPassed] = useState(false)
useEffect(() => {
// Run startup test
const runStartupTest = async () => {
try {
console.log('🚀 Running application startup tests...')
const response = await fetch('/api/startup-test')
const result = await response.json()
setTestPassed(result.success)
setTestComplete(true)
if (result.success) {
console.log('✅ Application startup tests passed')
} else {
console.warn('⚠️ Application startup tests failed:', result.message)
}
} catch (error) {
console.error('❌ Failed to run startup tests:', error)
setTestPassed(false)
setTestComplete(true)
}
}
runStartupTest()
}, [])
// Don't render anything special, just run the test in background
// The test results will appear in console
return <>{children}</>
}
// Optional: Export a hook for components that want to check startup status
export function useStartupStatus() {
const [status, setStatus] = useState<{
complete: boolean
passed: boolean
services?: { mongodb: boolean; redis: boolean }
}>({ complete: false, passed: false })
useEffect(() => {
const checkStatus = async () => {
try {
const response = await fetch('/api/startup-test')
const result = await response.json()
setStatus({
complete: true,
passed: result.success,
services: result.services,
})
} catch (error) {
setStatus({ complete: true, passed: false })
}
}
checkStatus()
}, [])
return status
}