import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vitest/config'; import { playwright } from '@vitest/browser-playwright'; import { sveltekit } from '@sveltejs/kit/vite'; import { fileURLToPath } from 'url'; import { resolve, dirname } from 'path'; // __dirname no existe en ESM — se reconstruye así const __dirname = dirname(fileURLToPath(import.meta.url)); const aliases = { // ── Runtime artifacts (src/arts) ────────────────────────────────────── '$active-app': resolve(__dirname, 'src/arts/active-app'), '$adom': resolve(__dirname, 'src/arts/adom'), '$auth': resolve(__dirname, 'src/arts/auth'), '$bus': resolve(__dirname, 'src/arts/bus'), '$cache': resolve(__dirname, 'src/arts/cache'), '$connection': resolve(__dirname, 'src/arts/connection'), '$format': resolve(__dirname, 'src/arts/format'), '$frontend': resolve(__dirname, 'src/arts/frontend'), '$http': resolve(__dirname, 'src/arts/http'), '$lang': resolve(__dirname, 'src/arts/lang'), '$logger': resolve(__dirname, 'src/arts/logger'), '$orca': resolve(__dirname, 'src/arts/orca'), '$perm': resolve(__dirname, 'src/arts/perm'), '$prefs': resolve(__dirname, 'src/arts/prefs'), '$session': resolve(__dirname, 'src/arts/session'), '$sium': resolve(__dirname, 'src/arts/sium'), '$storage': resolve(__dirname, 'src/arts/storage'), '$timer': resolve(__dirname, 'src/arts/timer'), // ── Pure helpers (src/libs) ─────────────────────────────────────────── '$libs': resolve(__dirname, 'src/libs'), '$locale': resolve(__dirname, 'src/libs/locale'), '$reactive': resolve(__dirname, 'src/libs/reactive'), // ── Server-authoritative engines (src/svrs) ─────────────────────────── '$svrs': resolve(__dirname, 'src/svrs'), // ── UIX layers (src/uix) ────────────────────────────────────────────── '$uix': resolve(__dirname, 'src/uix'), '$active-uix': resolve(__dirname, 'src/uix/active-uix'), '$soma': resolve(__dirname, 'src/uix/soma'), // ── Demo controls (src/lib/_demo) — reusable widgets for the per-component // demo pages so booleans, enums, text and ranges look the same on every page. '$demo': resolve(__dirname, 'src/lib/_demo'), // ── @/ catch-all ────────────────────────────────────────────────────── '@': resolve(__dirname, 'src'), }; export default defineConfig({ plugins: [tailwindcss(), sveltekit()], resolve: { alias: aliases }, test: { expect: { requireAssertions: true }, projects: [ { extends: './vite.config.ts', test: { name: 'client', browser: { enabled: true, provider: playwright(), instances: [{ browser: 'chromium', headless: true }] }, include: ['src/**/*.svelte.{test,spec}.{js,ts}'] } }, { extends: './vite.config.ts', resolve: { alias: aliases }, test: { name: 'server', environment: 'node', include: ['src/**/*.{test,spec}.{js,ts}'], exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'] } } ] } });