diff --git a/test/utils/mocks/mockCanvas.ts b/test/utils/mocks/mockCanvas.ts new file mode 100644 index 00000000000..bc18816197b --- /dev/null +++ b/test/utils/mocks/mockCanvas.ts @@ -0,0 +1,11 @@ +import { mockContext } from "#test/utils/mocks/mockContext"; + +/** + * A minimal stub object to mock HTMLCanvasElement + */ +export const mockCanvas: any = { + width: 0, + getContext() { + return mockContext; + }, +}; diff --git a/test/utils/mocks/mockContext.ts b/test/utils/mocks/mockContext.ts new file mode 100644 index 00000000000..04abfbe8089 --- /dev/null +++ b/test/utils/mocks/mockContext.ts @@ -0,0 +1,15 @@ +import { mockCanvas } from "#test/utils/mocks/mockCanvas"; + +/** + * A minimal stub object to mock CanvasRenderingContext2D + */ +export const mockContext: any = { + font: "", + //@ts-ignore + measureText: () => new TextMetrics(""), + save: () => {}, + scale: () => {}, + clearRect: () => {}, + canvas: mockCanvas, + restore: () => {}, +}; diff --git a/test/utils/testFileInitialization.ts b/test/utils/testFileInitialization.ts index a97e551fd0a..d6ca92c8b56 100644 --- a/test/utils/testFileInitialization.ts +++ b/test/utils/testFileInitialization.ts @@ -14,12 +14,13 @@ import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; import { setCookie } from "#app/utils"; import { blobToString } from "#test/testUtils/gameManagerUtils"; import { MockConsoleLog } from "#test/testUtils/mocks/mockConsoleLog"; +import { mockContext } from "#test/testUtils/mocks/mockContext"; +import { MockFetch } from "#test/testUtils/mocks/mockFetch"; import { mockLocalStorage } from "#test/testUtils/mocks/mockLocalStorage"; import { MockImage } from "#test/testUtils/mocks/mocksContainer/mockImage"; import Phaser from "phaser"; import InputText from "phaser3-rex-plugins/plugins/inputtext"; import { vi } from "vitest"; -import { MockFetch } from "./mocks/mockFetch"; /** * An initialization function that is run at the beginning of every test file (via `beforeAll()`). @@ -77,6 +78,7 @@ export function initTestFile() { Phaser.GameObjects.NineSlice.prototype.setPositionRelative = setPositionRelative; Phaser.GameObjects.Text.prototype.setPositionRelative = setPositionRelative; Phaser.GameObjects.Rectangle.prototype.setPositionRelative = setPositionRelative; + HTMLCanvasElement.prototype.getContext = () => mockContext; // Initialize all of these things if and only if they have not been initialized yet if (allMoves.length === 0) { diff --git a/vitest.config.ts b/vitest.config.ts index b52c16ec00c..caac0d3c4bb 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -6,17 +6,6 @@ export default defineProject(({ mode }) => ({ test: { testTimeout: 20000, setupFiles: ["./test/fontFace.setup.ts", "./test/vitest.setup.ts"], - server: { - deps: { - inline: ["vitest-canvas-mock"], - //@ts-ignore - optimizer: { - web: { - include: ["vitest-canvas-mock"], - }, - }, - }, - }, environment: "jsdom" as const, environmentOptions: { jsdom: {