From 95f36fe0895085f32f8732d6c81991da65f92bfd Mon Sep 17 00:00:00 2001 From: fkwp Date: Tue, 7 Apr 2026 12:50:17 +0200 Subject: [PATCH] Mock localStorage for testing in vitest setup (required as of Node.js v25.2.0) --- src/vitest.setup.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/vitest.setup.ts b/src/vitest.setup.ts index f3f5928b..c084e0ec 100644 --- a/src/vitest.setup.ts +++ b/src/vitest.setup.ts @@ -5,13 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ -import "global-jsdom/register"; import "@formatjs/intl-durationformat/polyfill.js"; import "@formatjs/intl-segmenter/polyfill"; import i18n from "i18next"; import posthog from "posthog-js"; import { initReactI18next } from "react-i18next"; -import { afterEach } from "vitest"; +import { afterEach, vi } from "vitest"; import { cleanup } from "@testing-library/react"; import "vitest-axe/extend-expect"; import { logger } from "matrix-js-sdk/lib/logger"; @@ -20,6 +19,21 @@ import "@testing-library/jest-dom/vitest"; import EN from "../locales/en/app.json"; import { Config } from "./config/Config"; +// Mock localStorage for tests +const storage = new Map(); +const localStorageMock = { + getItem: vi.fn((key: string) => storage.get(key) || null), + setItem: vi.fn((key: string, value: string) => storage.set(key, value)), + removeItem: vi.fn((key: string) => storage.delete(key)), + clear: vi.fn(() => storage.clear()), +}; + +Object.defineProperty(globalThis, "localStorage", { + value: localStorageMock, + configurable: true, + writable: true, +}); + // Bare-minimum i18n config i18n .use(initReactI18next)