import "@testing-library/jest-dom"; import { beforeAll, afterEach, afterAll } from "vitest"; import { setupServer } from "msw/node"; import { http, HttpResponse } from "msw"; // Mock API responses const server = setupServer( http.get("/api/users/public", () => { return HttpResponse.json([{ id: "1", name: "Public User", email: "user@example.com" }]); }), http.get("/api/jobs", () => { return HttpResponse.json({ jobs: [{ id: "1", title: "Developer", status: "OPEN" }], }); }) ); beforeAll(() => server.listen()); afterEach(() => server.resetHandlers()); afterAll(() => server.close()); // 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 []; } trigger() {} }; // Mock ResizeObserver global.ResizeObserver = class ResizeObserver { constructor() {} observe() {} unobserve() {} disconnect() {} };