import '@testing-library/jest-dom' // Mock environment variables process.env.NEXT_PUBLIC_API_URL = 'http://localhost:8000/api' // Mock Next.js router jest.mock('next/router', () => ({ useRouter() { return { route: '/', pathname: '/', query: {}, asPath: '/', push: jest.fn(), replace: jest.fn(), reload: jest.fn(), back: jest.fn(), prefetch: jest.fn().mockResolvedValue(undefined), beforePopState: jest.fn(), events: { on: jest.fn(), off: jest.fn(), emit: jest.fn(), }, isFallback: false, } }, })) // Mock Next.js navigation (for App Router) jest.mock('next/navigation', () => ({ useRouter() { return { push: jest.fn(), replace: jest.fn(), prefetch: jest.fn(), forward: jest.fn(), back: jest.fn(), refresh: jest.fn(), } }, usePathname() { return '/' }, useSearchParams() { return new URLSearchParams() }, useParams() { return {} }, })) // Suppress console errors in tests unless explicitly needed const originalError = console.error beforeAll(() => { console.error = jest.fn((...args) => { if ( typeof args[0] === 'string' && (args[0].includes('Warning: ReactDOM.render') || args[0].includes('Not implemented: HTMLFormElement.prototype.submit') || args[0].includes('Not implemented: HTMLFormElement.prototype.requestSubmit')) ) { return } originalError.call(console, ...args) }) }) afterAll(() => { console.error = originalError }) // Global test utilities global.fetch = jest.fn(() => Promise.resolve({ ok: true, status: 200, json: () => Promise.resolve({}), }) ) as jest.Mock