Files
Kordant/web/vitest.config.ts

60 lines
2.3 KiB
TypeScript

import { defineConfig } from "vitest/config";
import { resolve } from "path";
import { readFileSync } from "fs";
import solid from "vite-plugin-solid";
function loadEnvFile(filePath: string): Record<string, string> {
try {
const content = readFileSync(filePath, "utf-8");
const env: Record<string, string> = {};
for (const line of content.split("\n")) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith("#")) continue;
const eqIndex = trimmed.indexOf("=");
if (eqIndex === -1) continue;
const key = trimmed.slice(0, eqIndex).trim();
let value = trimmed.slice(eqIndex + 1).trim();
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
value = value.slice(1, -1);
}
env[key] = value;
}
return env;
} catch {
return {};
}
}
const env = { ...loadEnvFile(".env"), ...loadEnvFile(".env.local") };
const mocksDir = resolve(__dirname, "./test/__mocks__");
export default defineConfig({
plugins: [solid()],
test: {
environment: "jsdom",
setupFiles: ["./test/setup.ts"],
exclude: ["**/node_modules/**", "**/e2e/**", "**/dist/**", "**/onnx.inference.test.ts"],
env: {
RESEND_API_KEY: env.RESEND_API_KEY ?? "",
STRIPE_SECRET_KEY: env.STRIPE_SECRET_KEY ?? "",
STRIPE_WEBHOOK_SECRET: env.STRIPE_WEBHOOK_SECRET ?? "",
STRIPE_PRICE_BASIC: env.STRIPE_PRICE_BASIC ?? "",
STRIPE_PRICE_PLUS: env.STRIPE_PRICE_PLUS ?? "",
STRIPE_PRICE_PREMIUM: env.STRIPE_PRICE_PREMIUM ?? "",
OPENAI_API_KEY: env.OPENAI_API_KEY ?? "",
JWT_SECRET: env.JWT_SECRET ?? "test-secret-for-testing",
},
},
resolve: {
alias: [
{ find: "~", replacement: resolve(__dirname, "./src") },
{ find: /^ws$/, replacement: resolve(mocksDir, "ws.js") },
{ find: /^@libsql\/client$/, replacement: resolve(mocksDir, "libsql.js") },
{ find: /^drizzle-orm\/libsql\/migrator$/, replacement: resolve(mocksDir, "drizzle-orm-libsql-migrator.js") },
{ find: /^drizzle-orm\/libsql$/, replacement: resolve(mocksDir, "drizzle-orm-libsql.js") },
{ find: /^drizzle-orm\/sqlite-core$/, replacement: resolve(mocksDir, "drizzle-orm-sqlite-core.js") },
{ find: /^drizzle-orm$/, replacement: resolve(mocksDir, "drizzle-orm.js") },
],
},
});