fix(tests): provide localStorage shim in jsdom test setup - #10
Merged
flowdeskadmin merged 1 commit intoAug 25, 2026
Merged
Conversation
jsdom does not reliably expose localStorage across runtimes (e.g. Node 26's experimental built-in shadows it), causing projectsPersistence/projectsSlice tests to fail with 'localStorage is undefined'. Add a minimal in-memory shim guarded by typeof check so it only applies when absent, keeping behavior identical on environments where jsdom already provides it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
projectsPersistence.test.tsandprojectsSlice.test.tswere failing withTypeError: Cannot read properties of undefined (reading 'getItem')becauselocalStoragewas undefined in the test environment. This adds a minimal, guarded in-memorylocalStorageshim tosrc/test/setup.tsso tests pass consistently regardless of runtime.Root cause
The repo's vitest config uses
environment: 'jsdom', which normally exposeslocalStorage. However, on runtimes where jsdom does not reliably expose it (e.g. Node 26's experimental built-inlocalStorageshadows the jsdom one, emittinglocalStorage is not available because --localstorage-file was not provided),localStorageends upundefined, breaking any test that reads/writes project state vialocalStorage.Fix
In
src/test/setup.ts, detect a missinglocalStorageand install an in-memoryStorageshim on bothglobalThisandwindow. The shim is guarded by atypeofcheck, so it only applies when absent — behavior is unchanged on environments where jsdom already provideslocalStorage. The existingbeforeEachcleanup is preserved.Testing
pnpm run test→ 61 passed (was 54 passed / 7 failed before the fix)pnpm run lint,pnpm run format:check,pnpm run typecheck→ all passScope
Single-file change (
src/test/setup.ts). No application/runtime code is affected; it only touches the test environment.