| import "@testing-library/jest-dom/vitest"; | |
| import { cleanup } from "@testing-library/react"; | |
| import { afterEach, vi } from "vitest"; | |
| function createCanvasContext() { | |
| return { | |
| scale: vi.fn(), | |
| clearRect: vi.fn(), | |
| fillRect: vi.fn(), | |
| strokeRect: vi.fn(), | |
| beginPath: vi.fn(), | |
| closePath: vi.fn(), | |
| moveTo: vi.fn(), | |
| lineTo: vi.fn(), | |
| stroke: vi.fn(), | |
| fill: vi.fn(), | |
| arc: vi.fn(), | |
| rect: vi.fn(), | |
| drawImage: vi.fn(), | |
| createLinearGradient: vi.fn(() => ({ addColorStop: vi.fn() })), | |
| getImageData: vi.fn(() => ({ data: new Uint8ClampedArray(0) })), | |
| putImageData: vi.fn(), | |
| measureText: vi.fn(() => ({ width: 0 })), | |
| save: vi.fn(), | |
| restore: vi.fn(), | |
| setLineDash: vi.fn(), | |
| translate: vi.fn(), | |
| rotate: vi.fn(), | |
| resetTransform: vi.fn(), | |
| setTransform: vi.fn(), | |
| lineWidth: 1, | |
| lineCap: "round", | |
| lineJoin: "round", | |
| strokeStyle: "#111827", | |
| fillStyle: "#ffffff", | |
| canvas: null as HTMLCanvasElement | null, | |
| }; | |
| } | |
| if (typeof HTMLCanvasElement !== "undefined") { | |
| Object.defineProperty(HTMLCanvasElement.prototype, "getContext", { | |
| configurable: true, | |
| value: vi.fn(function getContext(this: HTMLCanvasElement) { | |
| const ctx = createCanvasContext(); | |
| ctx.canvas = this; | |
| return ctx; | |
| }), | |
| }); | |
| Object.defineProperty(HTMLCanvasElement.prototype, "toDataURL", { | |
| configurable: true, | |
| value: vi.fn(() => "data:image/png;base64,"), | |
| }); | |
| } | |
| afterEach(() => { | |
| cleanup(); | |
| }); | |