diff --git a/vitest-setup-client.ts b/vitest-setup-client.ts
new file mode 100644
index 0000000..3872b7a
--- /dev/null
+++ b/vitest-setup-client.ts
@@ -0,0 +1,36 @@
+///
+///
+
+import { vi } from 'vitest';
+import { writable } from 'svelte/store';
+
+// Mock $app/navigation
+vi.mock('$app/navigation', () => ({
+ goto: vi.fn(() => Promise.resolve()),
+ invalidate: vi.fn(() => Promise.resolve()),
+ invalidateAll: vi.fn(() => Promise.resolve()),
+ beforeNavigate: vi.fn(),
+ afterNavigate: vi.fn()
+}));
+
+// Mock $app/stores
+vi.mock('$app/stores', () => ({
+ page: writable({
+ url: new URL('http://localhost'),
+ params: {},
+ route: { id: null },
+ status: 200,
+ error: null,
+ data: {},
+ form: null
+ }),
+ navigating: writable(null),
+ updated: { check: vi.fn(), subscribe: writable(false).subscribe }
+}));
+
+// Mock $app/environment
+vi.mock('$app/environment', () => ({
+ browser: true,
+ dev: true,
+ building: false
+}));