setup.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import '@testing-library/jest-dom';
  2. import { vi } from 'vitest';
  3. // Mock window.matchMedia
  4. Object.defineProperty(window, 'matchMedia', {
  5. writable: true,
  6. value: vi.fn().mockImplementation(query => ({
  7. matches: false,
  8. media: query,
  9. onchange: null,
  10. addListener: vi.fn(), // deprecated
  11. removeListener: vi.fn(), // deprecated
  12. addEventListener: vi.fn(),
  13. removeEventListener: vi.fn(),
  14. dispatchEvent: vi.fn(),
  15. })),
  16. });
  17. // Mock ResizeObserver
  18. global.ResizeObserver = class MockResizeObserver {
  19. constructor(callback: ResizeObserverCallback) {
  20. // Store callback for testing
  21. (this as any).callback = callback;
  22. }
  23. observe = vi.fn();
  24. unobserve = vi.fn();
  25. disconnect = vi.fn();
  26. };
  27. // Mock IntersectionObserver
  28. global.IntersectionObserver = class MockIntersectionObserver {
  29. constructor(callback: IntersectionObserverCallback) {
  30. // Store callback for testing
  31. (this as any).callback = callback;
  32. }
  33. observe = vi.fn();
  34. unobserve = vi.fn();
  35. disconnect = vi.fn();
  36. root: Element | null = null;
  37. rootMargin: string = '';
  38. thresholds: ReadonlyArray<number> = [];
  39. takeRecords = vi.fn();
  40. };