-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathjest.setup.js
More file actions
120 lines (110 loc) · 2.53 KB
/
jest.setup.js
File metadata and controls
120 lines (110 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import '@testing-library/jest-dom'
import React from 'react'
// Mock Next.js router
jest.mock('next/router', () => ({
useRouter: () => ({
route: '/',
pathname: '/',
query: {},
asPath: '/',
push: jest.fn(),
replace: jest.fn(),
back: jest.fn(),
}),
}))
// Mock Next.js image component
jest.mock('next/image', () => ({
__esModule: true,
default: (props) => {
// eslint-disable-next-line jsx-a11y/alt-text
return <img {...props} />
},
}))
// Mock window.matchMedia
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation((query) => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // Deprecated
removeListener: jest.fn(), // Deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
})),
})
// Mock IntersectionObserver
global.IntersectionObserver = class IntersectionObserver {
constructor() {
// Mock constructor
}
disconnect() {
// Mock disconnect
}
observe() {
// Mock observe
}
unobserve() {
// Mock unobserve
}
}
// Mock ResizeObserver
global.ResizeObserver = class ResizeObserver {
constructor() {
// Mock constructor
}
disconnect() {
// Mock disconnect
}
observe() {
// Mock observe
}
unobserve() {
// Mock unobserve
}
}
// Mock Web Workers and heavy dependencies
jest.mock('onnxruntime-web', () => ({
InferenceSession: {
create: jest.fn().mockResolvedValue({
run: jest.fn().mockResolvedValue({}),
}),
},
Tensor: jest.fn(),
}))
// Mock lila-stockfish-web with conditional require
try {
jest.mock('lila-stockfish-web', () => ({
__esModule: true,
default: jest.fn().mockImplementation(() => ({
postMessage: jest.fn(),
onmessage: jest.fn(),
terminate: jest.fn(),
})),
}))
} catch (error) {
// Module not found, skip mocking
}
// Mock PostHog
jest.mock('posthog-js', () => ({
init: jest.fn(),
capture: jest.fn(),
identify: jest.fn(),
reset: jest.fn(),
isFeatureEnabled: jest.fn().mockReturnValue(false),
}))
// Mock audio elements
global.HTMLMediaElement.prototype.play = jest.fn().mockResolvedValue(undefined)
global.HTMLMediaElement.prototype.pause = jest.fn()
global.HTMLMediaElement.prototype.load = jest.fn()
// Mock Chessground
jest.mock('@react-chess/chessground', () => {
return function Chessground(props) {
return React.createElement('div', {
'data-testid': 'chessground',
className: 'chessground-mock',
...props,
})
}
})