import "@testing-library/jest-dom"; import { beforeAll, afterEach, afterAll } from "vitest"; import { setupServer } from "msw/node"; import { rest } from "msw"; // Mock API responses const server = setupServer( rest.get("/api/users/public", (req, res, ctx) => { return res.once( 200, ctx.json([{ id: "1", name: "Public User", email: "user@example.com" }]), ); }), rest.get("/api/jobs", (req, res, ctx) => { return res.once( 200, ctx.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() {} };