Epicenter
Local-first, open source apps
Test Results is a test run by the agent. The summary line counts what passed and failed. Open it to see each suite, its tests, and the error for each failure.
Test Results is built with Trace with a Trace.Collapsible for the run and for each suite.
Installation
Test Results is built with the Trace and Code Block components.
Usage
<script lang="ts">
import * as CodeBlock from "$lib/components/ui/code-block/index.js";
import * as Trace from "$lib/components/ui/trace/index.js";
</script> <Trace.Root>
<Trace.Collapsible>
<Trace.CollapsibleTrigger>
<Trace.Line status="error">
<Trace.Icon>
<FlaskConicalIcon />
</Trace.Icon>
<Trace.Title>Ran 2 tests, 1 failed</Trace.Title>
</Trace.Line>
</Trace.CollapsibleTrigger>
<Trace.CollapsibleContent>
<Trace.Root>
<Trace.Line>
<Trace.Icon>
<CheckIcon />
</Trace.Icon>
<Trace.Title>creates a user</Trace.Title>
</Trace.Line>
<Trace.Collapsible>
<Trace.CollapsibleTrigger>
<Trace.Line status="error">
<Trace.Icon>
<XIcon />
</Trace.Icon>
<Trace.Title>updates a user profile</Trace.Title>
</Trace.Line>
</Trace.CollapsibleTrigger>
<Trace.CollapsibleContent>
<CodeBlock.Root size="sm">
<CodeBlock.Content
wrap
class="max-h-64"
code="Expected status 200, received 500"
/>
</CodeBlock.Root>
</Trace.CollapsibleContent>
</Trace.Collapsible>
</Trace.Root>
</Trace.CollapsibleContent>
</Trace.Collapsible>
</Trace.Root> Suites
Group tests by file. Each suite is a collapsible line with a Trace of its tests. Open the suites that have a failure.
Expected status 200, received 500
at Object.<anonymous> (src/user-api.test.ts:45:12)Exceeded timeout of 5000 ms for a test.
at Object.<anonymous> (src/db.test.ts:22:3)<Trace.Collapsible open={failed > 0}>
<Trace.CollapsibleTrigger>
<Trace.Line status={failed > 0 ? "error" : undefined}>
<Trace.Icon>
<FileCodeIcon />
</Trace.Icon>
<Trace.Title>user-api.test.ts, 14 tests, 2 failed</Trace.Title>
</Trace.Line>
</Trace.CollapsibleTrigger>
<Trace.CollapsibleContent>
<Trace.Root>…</Trace.Root>
</Trace.CollapsibleContent>
</Trace.Collapsible> AI SDK
Run the tests as a tool and render its output. The tool states map the same way as in Tool.
{@const tests = part.output.suites.flatMap((suite) => suite.tests)}
{@const failed = tests.filter((test) => test.status === "failed").length}
<Trace.Collapsible open={untrack(() => failed > 0)}>
<Trace.CollapsibleTrigger>
<Trace.Line status={failed > 0 ? "error" : undefined}>
<Trace.Icon>
<FlaskConicalIcon />
</Trace.Icon>
<Trace.Title>
Ran {tests.length} tests{failed > 0 ? `, ${failed} failed` : ""}
</Trace.Title>
</Trace.Line>
</Trace.CollapsibleTrigger>
<Trace.CollapsibleContent>…</Trace.CollapsibleContent>
</Trace.Collapsible> API Reference
See Trace.