Some checks failed
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
ci/woodpecker/manual/build-ci-image Pipeline was successful
ci/woodpecker/manual/main Pipeline failed
All services: admin-v2, studio-v2, website, ai-compliance-sdk, consent-service, klausur-service, voice-service, and infrastructure. Large PDFs and compiled binaries excluded via .gitignore.
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
'use client'
|
|
|
|
import { TestResultCard } from './TestResultCard'
|
|
import type { TestCategoryResult } from './types'
|
|
|
|
interface TestRunnerProps {
|
|
category: string
|
|
categoryResult?: TestCategoryResult
|
|
isLoading: boolean
|
|
onRunTests: () => void
|
|
runButtonLabel?: string
|
|
rerunButtonLabel?: string
|
|
}
|
|
|
|
export function TestRunner({
|
|
categoryResult,
|
|
isLoading,
|
|
onRunTests,
|
|
runButtonLabel = '▶️ Tests ausfuehren',
|
|
rerunButtonLabel = '🔄 Erneut ausfuehren',
|
|
}: TestRunnerProps) {
|
|
if (!categoryResult) {
|
|
return (
|
|
<div className="text-center py-6">
|
|
<button
|
|
onClick={onRunTests}
|
|
disabled={isLoading}
|
|
className={`px-6 py-3 rounded-lg font-medium transition-colors ${
|
|
isLoading
|
|
? 'bg-gray-400 cursor-not-allowed'
|
|
: 'bg-green-600 text-white hover:bg-green-700'
|
|
}`}
|
|
>
|
|
{isLoading ? '⏳ Tests laufen...' : runButtonLabel}
|
|
</button>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<div className="flex items-center justify-between mb-4">
|
|
<h3 className="font-semibold text-gray-700">Testergebnisse</h3>
|
|
<button
|
|
onClick={onRunTests}
|
|
disabled={isLoading}
|
|
className="text-sm text-blue-600 hover:text-blue-800"
|
|
>
|
|
{rerunButtonLabel}
|
|
</button>
|
|
</div>
|
|
{categoryResult.tests.map((test, index) => (
|
|
<TestResultCard key={index} result={test} />
|
|
))}
|
|
</div>
|
|
)
|
|
}
|