Skip to main content
Glama
vitest.config.ts4.31 kB
import { defineConfig } from "vitest/config"; export default defineConfig({ test: { // Enable global test APIs (describe, it, expect, etc.) globals: true, // Node environment with PostgreSQL support environment: "node", // Test file patterns - exclude performance tests from default run (require database) include: [ "src/__tests__/unit/**/*.test.ts", "src/__tests__/integration/**/*.test.ts", "src/__tests__/e2e/**/*.test.ts", "src/__tests__/examples/**/*.test.ts", // Include examples for validation "src/__tests__/validation/**/*.test.ts", // Include validation tests "src/__tests__/production/**/*.test.ts", // Include production tests "src/__tests__/property/**/*.test.ts", // Include property-based tests ], exclude: [ "node_modules", "dist", "coverage", "src/__tests__/performance/**", // Performance tests require database, run separately "src/__tests__/accuracy/**", // Accuracy tests require database, run separately ], // Performance and accuracy tests run separately with database: // npm run test:performance - runs src/__tests__/performance/**/*.perf.test.ts // npm run test:accuracy - runs src/__tests__/accuracy/**/*.accuracy.test.ts // Test timeouts testTimeout: 10000, // 10s default for unit tests hookTimeout: 30000, // 30s for setup/teardown hooks // Test isolation and cleanup isolate: true, // Run each test file in isolation clearMocks: true, // Clear mocks between tests restoreMocks: true, // Restore mocks after tests mockReset: true, // Reset mock state between tests // Retry configuration (no retries for deterministic tests) retry: 0, // Global setup and teardown // Note: Property tests (src/__tests__/property/**) don't require database setup // They are pure tests that only read files and don't need external services globalSetup: ["./src/__tests__/setup/global-setup.ts"], globalTeardown: ["./src/__tests__/setup/global-teardown.ts"], // Coverage configuration coverage: { provider: "v8", enabled: false, // Enable with --coverage flag reporter: ["text", "json", "html", "lcov"], reportsDirectory: "./development/reports/coverage", // Coverage thresholds (95% line, 90% branch minimum) thresholds: { lines: 95, branches: 90, functions: 95, statements: 95, }, // Files to include in coverage include: ["src/**/*.ts"], // Files to exclude from coverage exclude: [ "node_modules/", "dist/", "coverage/", "src/__tests__/**", "**/*.test.ts", "**/*.spec.ts", "**/*.config.ts", "**/*.d.ts", "**/index.ts", // Re-export files "**/types.ts", // Type definition files ], // Report uncovered lines all: true, skipFull: false, }, // Reporters reporters: process.env.CI ? [ "verbose", ["json", { outputFile: "./development/reports/test-results.json" }], ["html", { outputFile: "./development/reports/test-results.html" }], ] // Full output in CI : ["verbose"], // Clean output for local development // Performance optimization // TEMPORARY: Disable parallel execution to fix test isolation issues // Tests are failing when run in parallel due to shared database state // TODO: Implement unique test prefixes per file to enable parallel execution pool: "threads", // Use worker threads poolOptions: { threads: { singleThread: true, // Run tests sequentially to prevent race conditions isolate: true, // Isolate test files }, }, // Watch mode configuration watch: false, // Disable watch mode by default (use --watch flag) watchExclude: ["node_modules/**", "dist/**", "coverage/**"], // Snapshot configuration resolveSnapshotPath: (testPath, snapExtension) => { return testPath.replace(/\.test\.ts$/, `.test.ts${snapExtension}`); }, // Environment variables for tests env: { NODE_ENV: "test", }, // Setup files (run before each test file) setupFiles: ["./src/__tests__/setup/test-environment.ts"], }, });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/keyurgolani/ThoughtMcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server