import react from '@vitejs/plugin-react'
import { defineConfig } from 'vitest/config'

// Dynamic coverage threshold (align local and CI)
const coverageThresholdValue =
  process.env.CHARON_MIN_COVERAGE ?? process.env.CPM_MIN_COVERAGE ?? '87.0'
const coverageThreshold = Number.parseFloat(coverageThresholdValue)
const resolvedCoverageThreshold = Number.isNaN(coverageThreshold) ? 87.0 : coverageThreshold

export default defineConfig({
  plugins: [react()],
  test: {
    pool: 'forks',
    maxWorkers: 1,
    minWorkers: 1,
    globals: true,
    environment: 'jsdom',
    environmentOptions: {
      jsdom: {
        url: 'http://localhost',
      },
    },
    setupFiles: './src/test/setup.ts',
    // TypeScript types for test globals - these are automatically available in test files
    typecheck: {
      tsconfig: './tsconfig.json',
    },
    exclude: [
      'node_modules/**',
      'dist/**',
      'e2e/**', // Playwright E2E tests - run separately
      'tests/**', // Playwright smoke tests - run separately
    ],
    coverage: {
      provider: 'v8',
      clean: false,
      reporter: ['text', 'json', 'html', 'lcov', 'json-summary'],
      exclude: [
        'node_modules/',
        'src/locales/**',
        'src/test/',
        '**/*.d.ts',
        '**/*.config.*',
        '**/mockData.ts',
        'dist/',
        'e2e/',
      ],
      thresholds: {
        lines: resolvedCoverageThreshold,
      },
    },
  },
})
