import { vi } from "vitest";
import { config } from "@vue/test-utils";
// Global mocks
global.performance.mark = vi.fn();
global.performance.measure = vi.fn();
global.performance.getEntriesByName = vi.fn(() => []);
global.performance.clearMarks = vi.fn();
global.performance.clearMeasures = vi.fn();
// Mock window.axios by default to prevent TypeErrors
global.axios = {
get: vi.fn().mockResolvedValue({ data: {} }),
post: vi.fn().mockResolvedValue({ data: {} }),
put: vi.fn().mockResolvedValue({ data: {} }),
patch: vi.fn().mockResolvedValue({ data: {} }),
delete: vi.fn().mockResolvedValue({ data: {} }),
};
window.axios = global.axios;
// Stub all Vuetify components to avoid warnings and CSS issues
config.global.stubs = {
MaterialDesignIcon: { template: '
' },
RouterLink: { template: "" },
RouterView: { template: "
" },
// Common Vuetify components
"v-app": true,
"v-main": true,
"v-container": true,
"v-row": true,
"v-col": true,
"v-btn": true,
"v-icon": true,
"v-card": true,
"v-card-title": true,
"v-card-text": true,
"v-card-actions": true,
"v-dialog": true,
"v-text-field": true,
"v-textarea": true,
"v-select": true,
"v-switch": true,
"v-checkbox": true,
"v-list": true,
"v-list-item": true,
"v-list-item-title": true,
"v-list-item-subtitle": true,
"v-menu": true,
"v-divider": true,
"v-spacer": true,
"v-progress-circular": true,
"v-progress-linear": true,
"v-tabs": true,
"v-tab": true,
"v-window": true,
"v-window-item": true,
"v-expansion-panels": true,
"v-expansion-panel": true,
"v-expansion-panel-title": true,
"v-expansion-panel-text": true,
"v-chip": true,
"v-toolbar": true,
"v-toolbar-title": true,
"v-tooltip": true,
"v-alert": true,
"v-snackbar": true,
"v-badge": true,
};
// Mock window.matchMedia
Object.defineProperty(window, "matchMedia", {
writable: true,
value: vi.fn().mockImplementation((query) => ({
matches: false,
media: query,
onchange: null,
addListener: vi.fn(), // deprecated
removeListener: vi.fn(), // deprecated
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
dispatchEvent: vi.fn(),
})),
});