- Create code-first route tree in src/app/routing/routeTree.tsx - Replace ProtectedRoute with beforeLoad auth guards - Add useSearchParamsCompat for URLSearchParams access - Update App.tsx, layouts, and all page/widget imports - Add frontend tooling: biome, prettier, env config - Update all tests for TanStack Router compatibility - Remove react-router-dom dependency, @tanstack/router-plugin - Consolidate biome config at root level
74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
import '@testing-library/jest-dom'
|
|
import { server } from './server'
|
|
|
|
beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
|
|
afterEach(() => server.resetHandlers())
|
|
afterAll(() => server.close())
|
|
|
|
Object.defineProperty(window, 'matchMedia', {
|
|
writable: true,
|
|
value: (query: string) => ({
|
|
matches: false,
|
|
media: query,
|
|
onchange: null,
|
|
addListener: () => {},
|
|
removeListener: () => {},
|
|
addEventListener: () => {},
|
|
removeEventListener: () => {},
|
|
dispatchEvent: () => false,
|
|
}),
|
|
})
|
|
|
|
// Prevent lightweight-charts animation frame callbacks in jsdom
|
|
window.requestAnimationFrame = () => 0
|
|
window.cancelAnimationFrame = () => {}
|
|
|
|
// Mock canvas 2D context to prevent jsdom "Not implemented" warnings from lightweight-charts
|
|
HTMLCanvasElement.prototype.getContext = ((contextId: string) => {
|
|
if (contextId === '2d') {
|
|
return {
|
|
canvas: {} as HTMLCanvasElement,
|
|
fillRect: () => {},
|
|
clearRect: () => {},
|
|
getImageData: () => ({ data: [], width: 0, height: 0 }),
|
|
putImageData: () => {},
|
|
createImageData: () => ({ width: 0, height: 0, data: [] }),
|
|
setTransform: () => {},
|
|
drawImage: () => {},
|
|
save: () => {},
|
|
fillText: () => {},
|
|
restore: () => {},
|
|
beginPath: () => {},
|
|
moveTo: () => {},
|
|
lineTo: () => {},
|
|
closePath: () => {},
|
|
stroke: () => {},
|
|
translate: () => {},
|
|
scale: () => {},
|
|
rotate: () => {},
|
|
arc: () => {},
|
|
fill: () => {},
|
|
measureText: () => ({ width: 0 }),
|
|
transform: () => {},
|
|
rect: () => {},
|
|
clip: () => {},
|
|
createLinearGradient: () => ({ addColorStop: () => {} }),
|
|
createRadialGradient: () => ({ addColorStop: () => {} }),
|
|
createPattern: () => ({ setTransform: () => {} }),
|
|
font: '',
|
|
fillStyle: '',
|
|
strokeStyle: '',
|
|
lineWidth: 1,
|
|
lineCap: 'butt' as CanvasLineCap,
|
|
lineJoin: 'miter' as CanvasLineJoin,
|
|
globalAlpha: 1,
|
|
globalCompositeOperation: 'source-over' as GlobalCompositeOperation,
|
|
shadowBlur: 0,
|
|
shadowColor: '',
|
|
shadowOffsetX: 0,
|
|
shadowOffsetY: 0,
|
|
} as unknown as CanvasRenderingContext2D
|
|
}
|
|
return null
|
|
}) as typeof HTMLCanvasElement.prototype.getContext
|