import { defineConfig } from 'vitest/config';

const SAFARI = process.env.BROWSER === 'safari';
const WEBGPU = process.env.WEBGPU === '1';

const chromeArgsCI = ['disable-gpu', 'no-sandbox', 'disable-setuid-sandbox'];
const chromeArgsWebGPU = [
  'no-sandbox',
  'disable-setuid-sandbox',
  'enable-unsafe-webgpu',
  'enable-features=WebGPU',
];

export default defineConfig({
  define: {
    __GITHUB_CI__: JSON.stringify(!!process.env.GITHUB_ACTIONS),
  },
  test: {
    exclude: [
      '**/node_modules/**',
      '**/esm/**',
      '**/docs/**',
      '**/examples/**',
      ...(!WEBGPU ? ['**/src/*.wgpu.test.*'] : []),
    ],
    include: WEBGPU ? ['**/src/*.wgpu.test.*'] : ['**/src/*.test.*'],
    browser: {
      enabled: true,
      name: process.env.BROWSER ?? 'chromium',
      provider: SAFARI ? 'webdriverio' : 'playwright',
      // https://playwright.dev
      providerOptions: WEBGPU
        ? { launch: { args: chromeArgsWebGPU.map((a) => `--${a}`) } }
        : process.env.GITHUB_ACTIONS
          ? {
              capabilities: {
                'goog:chromeOptions': {
                  args: chromeArgsCI,
                },
              },
            }
          : SAFARI
            ? {
                capabilities: {
                  alwaysMatch: { browserName: 'safari' },
                  firstMatch: [{}],
                  browserName: 'safari',
                },
              }
            : {},
    },
  },
  server: {
    headers: {
      'Cross-Origin-Embedder-Policy': 'require-corp',
      'Cross-Origin-Opener-Policy': 'same-origin',
    },
  },
});
