Pete Dunn
Stabilize tests and ship Parsec asset checks
91eed5b
Raw
History Blame Contribute Delete
1.5 kB
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();
});