import { expect, afterEach, vi } from 'vitest'; import { cleanup } from '@testing-library/react'; import '@testing-library/jest-dom'; // Cleanup after each test afterEach(() => { cleanup(); }); // Mock environment variables process.env.VITE_SUPABASE_URL = 'https://ydvtmnrszybqnbcqbdcy.supabase.co'; process.env.VITE_SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InlkdnRtbnJzenlicW5iY3FiZGN5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTgzMjYzNTYsImV4cCI6MjA3MzkwMjM1Nn0.DM3oyapd_omP5ZzIlrT0H9qBsiQBxBRgw2tYuqgXKX4'; // Mock window.matchMedia Object.defineProperty(window, 'matchMedia', { writable: true, value: vi.fn().mockImplementation(query => ({ matches: false, media: query, onchange: null, addListener: vi.fn(), removeListener: vi.fn(), addEventListener: vi.fn(), removeEventListener: vi.fn(), dispatchEvent: vi.fn(), })), }); // Mock IntersectionObserver global.IntersectionObserver = class IntersectionObserver { constructor() {} disconnect() {} observe() {} takeRecords() { return []; } unobserve() {} } as any; // Mock ResizeObserver global.ResizeObserver = class ResizeObserver { constructor() {} disconnect() {} observe() {} unobserve() {} } as any; // Mock console methods to reduce noise in test output const originalConsoleError = console.error; const originalConsoleWarn = console.warn; console.error = (...args: any[]) => { // Filter out known React/testing-library warnings const message = args[0]?.toString() || ''; if ( message.includes('Not implemented: HTMLFormElement.prototype.submit') || message.includes('Could not parse CSS stylesheet') ) { return; } originalConsoleError(...args); }; console.warn = (...args: any[]) => { const message = args[0]?.toString() || ''; if (message.includes('deprecated')) { return; } originalConsoleWarn(...args); };