Skip to content
Latchkey

Vitest "No test files found, exiting with code 1" in CI

Vitest scanned for tests and found none matching its include pattern, so it exits non-zero. Usually the glob does not match your filenames, or CI runs from a directory where no tests live.

What this error means

Vitest prints "No test files found, exiting with code 1" and fails the job. Locally you may run one file by name and see it pass, masking that the default glob matches nothing.

vitest
No test files found, exiting with code 1

  include: **/*.{test,spec}.?(c|m)[jt]s?(x)
  exclude: **/node_modules/**

Common causes

Filenames do not match the include glob

Vitest picks up *.test.*/*.spec.* by default. Files named *.tests.ts or under a non-default folder are ignored.

Wrong working directory or root in CI

If the job runs vitest from the repo root but tests live in a workspace package, the resolved root contains no matching files.

How to fix it

Set an include pattern that matches your files

vitest.config.ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
  test: { include: ['src/**/*.{test,spec}.{ts,tsx}'] },
});

Run from the right directory

  1. Confirm CI runs Vitest in the package that holds the tests (--root or a working-directory).
  2. For monorepos, define a Vitest workspace so each package is discovered.
  3. Pass --dir or an explicit path to scope discovery if needed.

How to prevent it

  • Commit an explicit include glob instead of relying on defaults.
  • Use a Vitest workspace config in monorepos.
  • Add a smoke test so an empty run is obviously wrong.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →