Vitest "No test files found" - Fix Glob & Config in CI
Vitest scanned for test files and found none that match 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 a single file by name and see it pass, masking that the default glob matches nothing.
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 only 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
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: { include: ['src/**/*.{test,spec}.{ts,tsx}'] },
});Run from the right directory
- Confirm CI runs Vitest in the package that holds the tests (use
--rootor aworking-directory). - For monorepos, define a Vitest workspace so each package’s tests are discovered.
- Pass
--diror an explicit path to scope discovery if needed.
How to prevent it
- Commit an explicit
includeglob instead of relying on defaults. - In monorepos, use a Vitest workspace config.
- Add a smoke test so an empty run is obviously wrong.