import { defineConfig } from 'vitest/config';

const includeExtendedE2e = process.env.OPENCLI_E2E === '1';
const includeAxChromeE2e = process.env.OPENCLI_AX_E2E === '1';

export default defineConfig({
  test: {
    projects: [
      {
        test: {
          name: 'unit',
          include: ['src/**/*.test.ts'],
          exclude: ['clis/**/*.test.{ts,js}'],
          sequence: { groupOrder: 0 },
        },
      },
      {
        test: {
          name: 'extension',
          include: ['extension/src/**/*.test.ts'],
          sequence: { groupOrder: 0 },
        },
      },
      {
        test: {
          name: 'adapter',
          include: ['clis/**/*.test.{ts,js}'],
          sequence: { groupOrder: 1 },
        },
      },
      {
        test: {
          name: 'e2e-fixed-port',
          include: ['tests/e2e/browser-tabs.test.ts'],
          fileParallelism: false,
          sequence: { groupOrder: 2 },
        },
      },
      {
        test: {
          name: 'e2e',
          include: [
            'tests/e2e/browser-public.test.ts',
            'tests/e2e/band-auth.test.ts',
            'tests/e2e/public-commands.test.ts',
            'tests/e2e/management.test.ts',
            'tests/e2e/output-formats.test.ts',
            'tests/e2e/plugin-management.test.ts',
            'tests/e2e/article-download-pipeline.test.ts',
            ...(includeAxChromeE2e ? ['tests/e2e/browser-ax-chrome.test.ts'] : []),
            // Extended browser tests (20+ sites) — opt-in only:
            //   OPENCLI_E2E=1 npx vitest run
            ...(includeExtendedE2e ? ['tests/e2e/browser-public-extended.test.ts', 'tests/e2e/browser-auth.test.ts', 'tests/e2e/douban.test.ts'] : []),
          ],
          maxWorkers: 2,
          sequence: { groupOrder: 3 },
        },
      },
      {
        test: {
          name: 'smoke',
          include: ['tests/smoke/**/*.test.ts'],
          sequence: { groupOrder: 4 },
        },
      },
    ],
  },
});
