Everr
Test Analytics

Vitest

Set up test analytics for Vitest projects.

Everr parses verbose Vitest output to track individual test results, detect flaky tests, and analyze failures.

Setup

Run Vitest with the verbose reporter so that individual test results are printed:

vitest run --reporter=verbose

Or configure it in your vitest.config.ts:

export default defineConfig({
  test: {
    reporters: ["verbose"],
  },
});

GitHub Actions workflow example

- name: Run tests
  run: npx vitest run --reporter=verbose

Everr automatically detects and parses Vitest verbose output from workflow logs.

What gets parsed

The parser recognizes Vitest verbose reporter output patterns (after stripping ANSI color codes):

PatternMeaning
✓ filepath > describe > test 42msTest passed
× filepath > describe > test 15msTest failed
↓ filepath > describe > testTest skipped

Describe block hierarchy

Vitest uses the > separator to represent the test hierarchy: file path, describe blocks, and test name. For example:

✓ src/utils.test.ts > parseConfig > handles empty input 3ms

This is parsed as:

  • Package: src/utils.test.ts
  • Describe block: parseConfig
  • Test name: handles empty input

Nested describe blocks are automatically detected. Describe nodes get everr.test.is_suite=true, nested entries get everr.test.is_subtest=true, and everr.test.parent_test points to the parent node. A nested describe block can therefore be both a suite and a subtest.

Generated span attributes

AttributeValue
everr.test.nameFull test name (e.g. parseConfig > handles empty input)
everr.test.resultpass, fail, or skip
everr.test.duration_secondsDuration from the test output
everr.test.frameworkvitest
everr.test.packageFile path (e.g. src/utils.test.ts)
everr.test.is_suitetrue for describe blocks that contain child tests
everr.test.is_subtesttrue for tests within describe blocks
everr.test.parent_testParent describe block name