feat: Reinitialize frontend with SvelteKit and TypeScript
- Delete old Vite+Svelte frontend - Initialize new SvelteKit project with TypeScript - Configure Tailwind CSS v4 + DaisyUI - Implement JWT authentication with auto-refresh - Create login page with form validation (Zod) - Add protected route guards - Update Docker configuration for single-stage build - Add E2E tests with Playwright (6/11 passing) - Fix Svelte 5 reactivity with $state() runes Known issues: - 5 E2E tests failing (timing/async issues) - Token refresh implementation needs debugging - Validation error display timing
This commit is contained in:
44
frontend/tests/setup.ts
Normal file
44
frontend/tests/setup.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { vi } from 'vitest';
|
||||
|
||||
// Mock localStorage
|
||||
global.localStorage = {
|
||||
getItem: vi.fn(),
|
||||
setItem: vi.fn(),
|
||||
removeItem: vi.fn(),
|
||||
clear: vi.fn(),
|
||||
};
|
||||
|
||||
// Mock fetch
|
||||
global.fetch = vi.fn();
|
||||
|
||||
// Mock window
|
||||
global.window = {
|
||||
addEventListener: vi.fn(),
|
||||
removeEventListener: vi.fn(),
|
||||
dispatchEvent: vi.fn(),
|
||||
CustomEvent: class CustomEvent {
|
||||
type: string;
|
||||
detail: unknown;
|
||||
constructor(type: string, options?: { detail?: unknown }) {
|
||||
this.type = type;
|
||||
this.detail = options?.detail;
|
||||
}
|
||||
},
|
||||
} as unknown as Window & typeof globalThis;
|
||||
|
||||
// Mock import.meta.env
|
||||
Object.defineProperty(global, 'import', {
|
||||
value: {
|
||||
meta: {
|
||||
env: {
|
||||
VITE_API_URL: 'http://localhost:3000/api',
|
||||
},
|
||||
},
|
||||
},
|
||||
writable: true,
|
||||
});
|
||||
|
||||
// Cleanup after each test
|
||||
afterEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
Reference in New Issue
Block a user