import * as React from "react"
import { CheckCircle2, XCircle, Clock, ChevronDown, ChevronRight, Info, AlertCircle } from "lucide-react"
import { cn } from "@/lib/utils"
interface TestSummary {
total: number;
passed: number;
failed: number;
skipped: number;
duration: number;
}
const TestResultsContext = React.createContext<{
summary: TestSummary;
} | null>(null)
export function TestResults({ summary, children, className }: { summary: TestSummary, children: React.ReactNode, className?: string }) {
return (
{children}
)
}
export function TestResultsHeader({ children }: { children: React.ReactNode }) {
return (
{children}
)
}
export function TestResultsSummary() {
const context = React.useContext(TestResultsContext)
if (!context) return null
const { summary } = context
return (
)
}
export function TestResultsDuration() {
const context = React.useContext(TestResultsContext)
if (!context) return null
return (
{context.summary.duration}ms Analysis
)
}
export function TestResultsProgress() {
const context = React.useContext(TestResultsContext)
if (!context) return null
const { summary } = context
const percent = (summary.passed / (summary.total || 1)) * 100
return (
)
}
export function TestResultsContent({ children }: { children: React.ReactNode }) {
return {children}
}
export function TestSuite({ name, status, defaultOpen = false, children }: { name: string; status: 'passed' | 'failed' | 'skipped'; defaultOpen?: boolean; children: React.ReactNode }) {
const [isOpen, setIsOpen] = React.useState(defaultOpen)
return (
{isOpen &&
{children}
}
)
}
export function TestSuiteName() { return null }
export function TestSuiteContent({ children }: { children: React.ReactNode }) {
return {children}
}
export function Test({ name, status, duration, children }: { name: string; status: 'passed' | 'failed' | 'skipped'; duration?: number; children?: React.ReactNode }) {
return (
{status === 'passed' && }
{status === 'failed' && }
{status === 'skipped' && }
{name}
{duration &&
{duration}ms}
{children &&
{children}
}
)
}
export function TestError({ children }: { children: React.ReactNode }) {
return (
{children}
)
}
export function TestErrorMessage({ children }: { children: React.ReactNode }) {
return (
)
}
export function TestErrorStack({ children }: { children: React.ReactNode }) {
return (
{children}
)
}