> For AI agents: the complete documentation index is available at https://viteval.dev/llms.txt, the full documentation bundle is available at https://viteval.dev/llms-full.txt.

# Inspect results

Save a local JSON report, run an evaluation, and open the dashboard to inspect
case outcomes.

## Prerequisites

- Complete [Getting started](https://viteval.dev/getting-started.md) and have an evaluation to run.
- Run the commands from the project root containing `viteval.config.ts`.

## Steps


1

### Save evaluation reports

Select the JSON result destination in `viteval.config.ts`:
```ts
import { defineConfig } from 'viteval/config';

export default defineConfig({
  eval: { results: ['json'] },
});
```
Viteval saves evaluation inputs, outputs, scores, and final case outcomes.
There is no public reporter constructor or runner configuration.

2

### Run the evaluation

```bash
pnpm exec viteval run
```
The JSON destination writes the completed run under `.viteval/results` even when a case
fails its threshold.

3

### Open the dashboard

```bash
pnpm exec viteval ui --open
```
For a project in another directory, pass its root:
```bash
pnpm exec viteval ui --root ./app --open
```
The dashboard reads `.viteval/results` under the selected root. The installed
package includes the server and browser assets, so no development server is
needed.

4

### Inspect a completed run

Open the run and compare each case's input, expected value, output, and scores.
Use execution errors and scorer metadata to distinguish request failures from
answers that scored below the threshold.

## Verification

Confirm `.viteval/results` contains a new JSON file and the dashboard shows the
same evaluation case counts and final outcomes as the CLI. Native tests are
excluded from evaluation counts. A skipped case without an evaluation artifact
can contribute to counts without a detailed case entry.

## Troubleshooting

### No runs appear

Confirm the dashboard root contains `.viteval/results` and JSON persistence writes
there. Hosted results and Vitest's built-in JSON reports are not dashboard inputs.

### Retaining run history

JSON persistence gives each run its own identity, including watch reruns. No
output filename or path placeholder is needed. Writes use atomic replacement.

### A saved file is rejected

Use a V1 snapshot written by the JSON result destination. Empty, malformed, or
incompatible files produce warnings. Hosted results and runner test reports
are not local dashboard inputs.

## References

- [Storage and results](https://viteval.dev/concepts/storage.md)
- [Configuration](https://viteval.dev/api/configuration.md) for result destination options
- [`ui`](https://viteval.dev/cli/ui.md) for dashboard command options
- [Set up storage providers](https://viteval.dev/guide/providers.md) to persist results in another backend
