You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
4.4 KiB
105 lines
4.4 KiB
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'),
|
|
'$clipboard': resolve(__dirname, 'src/arts/clipboard'),
|
|
'$color': resolve(__dirname, 'src/arts/color'),
|
|
'$connection': resolve(__dirname, 'src/arts/connection'),
|
|
'$ethereal': resolve(__dirname, 'src/arts/ethereal'),
|
|
'$format': resolve(__dirname, 'src/arts/format'),
|
|
'$http': resolve(__dirname, 'src/arts/http'),
|
|
'$langs': resolve(__dirname, 'src/arts/langs'),
|
|
'$logger': resolve(__dirname, 'src/arts/logger'),
|
|
'$motion': resolve(__dirname, 'src/arts/motion'),
|
|
'$orca': resolve(__dirname, 'src/arts/orca'),
|
|
'$perf': resolve(__dirname, 'src/arts/perf'),
|
|
'$perm': resolve(__dirname, 'src/arts/perm'),
|
|
'$prefs': resolve(__dirname, 'src/arts/prefs'),
|
|
'$scene': resolve(__dirname, 'src/arts/scene'),
|
|
'$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'),
|
|
|
|
// ── Encapsulated opt-in packs (src/packs) ─────────────────────────────
|
|
'$packs': resolve(__dirname, 'src/packs'),
|
|
|
|
// ── 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(),
|
|
// Default: chromium (fast dev loop). `UIX_CROSS_BROWSER=1` adds
|
|
// WebKit + Firefox — the floating-engine parity suite must agree
|
|
// with @floating-ui on all three (the isWebKit-gated paths only
|
|
// run on WebKit). Requires `npx playwright install webkit firefox`.
|
|
instances: process.env.UIX_CROSS_BROWSER
|
|
? [
|
|
{ browser: 'chromium', headless: true },
|
|
{ browser: 'webkit', headless: true },
|
|
{ browser: 'firefox', headless: true }
|
|
]
|
|
: [{ 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}']
|
|
}
|
|
}
|
|
]
|
|
}
|
|
});
|