> @google/gemini-cli@0.39.0-nightly.20260408.e77b22e63 test > vitest run src --exclude **/InputPrompt.test.tsx --exclude **/MainContent.test.tsx --exclude **/PermissionsModifyTrustDialog.test.tsx --exclude **/FolderTrustDialog.test.tsx --exclude **/trustedFolders.test.ts --exclude **/cleanup.test.ts RUN v3.2.4 /Users/mattkorwel/dev/gemini-cli/main/packages/cli [?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h(node:51412) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 model-changed listeners added to [CoreEventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) (node:51412) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 memory-changed listeners added to [CoreEventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit [?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h(node:51408) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 model-changed listeners added to [CoreEventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) (node:51408) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 memory-changed listeners added to [CoreEventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit [?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/utils/handleAutoUpdate.test.ts (26 tests | 9 failed) 2993ms ✓ handleAutoUpdate > should do nothing if update info is null 5ms ✓ handleAutoUpdate > should track update progress state 238ms ✓ handleAutoUpdate > should track update progress state on error 322ms ✓ handleAutoUpdate > should resolve waitForUpdateCompletion when update succeeds 3ms ✓ handleAutoUpdate > should resolve waitForUpdateCompletion when update fails 1ms ✓ handleAutoUpdate > should resolve waitForUpdateCompletion immediately if not in progress 1ms ✓ handleAutoUpdate > should timeout waitForUpdateCompletion 6ms ✓ handleAutoUpdate > should do nothing if update prompts are disabled 3ms × handleAutoUpdate > should emit "update-received" but not update if auto-updates are disabled 184ms → expected "emit" to be called with arguments: [ 'update-received', …(1) ] Received:  1st emit call: @@ -1,11 +1,11 @@  [  "update-received",  {  "isUpdating": false,  "message": "An update is available! - Please update manually.", + Please run npm install -g @google/gemini-cli@latest to update",  "update": {  "current": "1.0.0",  "latest": "2.0.0",  "name": "@google/gemini-cli",  "type": "major",  Number of calls: 1  × handleAutoUpdate > should suppress update notifications when running via npx 253ms → expected "emit" to not be called at all, but actually been called 1 times Received:  1st emit call:  Array [ "update-received", Object { "isUpdating": true, "message": "An update is available! Installed with npm. Attempting to automatically update now...", "update": Object { "current": "1.0.0", "latest": "2.0.0", "name": "@google/gemini-cli", "type": "major", }, }, ]  Number of calls: 1  × handleAutoUpdate > should suppress update notifications when running via pnpx 142ms → expected "emit" to not be called at all, but actually been called 1 times Received:  1st emit call:  Array [ "update-received", Object { "isUpdating": true, "message": "An update is available! Installed with npm. Attempting to automatically update now...", "update": Object { "current": "1.0.0", "latest": "2.0.0", "name": "@google/gemini-cli", "type": "major", }, }, ]  Number of calls: 1  × handleAutoUpdate > should suppress update notifications when running via bunx 167ms → expected "emit" to not be called at all, but actually been called 1 times Received:  1st emit call:  Array [ "update-received", Object { "isUpdating": true, "message": "An update is available! Installed with npm. Attempting to automatically update now...", "update": Object { "current": "1.0.0", "latest": "2.0.0", "name": "@google/gemini-cli", "type": "major", }, }, ]  Number of calls: 1  × handleAutoUpdate > should suppress update notifications when running via binary 158ms → expected "emit" to not be called at all, but actually been called 1 times Received:  1st emit call:  Array [ "update-received", Object { "isUpdating": true, "message": "An update is available! Installed with npm. Attempting to automatically update now...", "update": Object { "current": "1.0.0", "latest": "2.0.0", "name": "@google/gemini-cli", "type": "major", }, }, ]  Number of calls: 1  × handleAutoUpdate > should emit "update-received" but not update if no update command is found 263ms → expected "emit" to be called with arguments: [ 'update-received', …(1) ] Received:  1st emit call: @@ -1,11 +1,11 @@  [  "update-received",  { - "isUpdating": false, + "isUpdating": true,  "message": "An update is available! - Cannot determine update command.", + Installed with npm. Attempting to automatically update now...",  "update": {  "current": "1.0.0",  "latest": "2.0.0",  "name": "@google/gemini-cli",  "type": "major",  Number of calls: 1  × handleAutoUpdate > should combine update messages correctly 171ms → expected "emit" to be called with arguments: [ 'update-received', …(1) ] Received:  1st emit call: @@ -1,11 +1,11 @@  [  "update-received",  { - "isUpdating": false, + "isUpdating": true,  "message": "An update is available! - This is an additional message.", + Installed with npm. Attempting to automatically update now...",  "update": {  "current": "1.0.0",  "latest": "2.0.0",  "name": "@google/gemini-cli",  "type": "major",  Number of calls: 1  ✓ handleAutoUpdate > should attempt to perform an update when conditions are met 266ms × handleAutoUpdate > should emit "update-failed" when the update process fails 176ms → expected "emit" to be called with arguments: [ 'update-failed', …(1) ] Received:  1st emit call:  [ - "update-failed", + "update-received",  { - "message": "Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)", + "isUpdating": true, + "message": "An update is available! + Installed with npm. Attempting to automatically update now...", + "update": { + "current": "1.0.0", + "latest": "2.0.0", + "name": "@google/gemini-cli", + "type": "major", + },  },  ]  2nd emit call:  [ - "update-failed", + "update-success",  { - "message": "Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)", + "message": "Update successful! The new version will be used on your next run.",  },  ]  3rd emit call:  [  "update-failed",  { - "message": "Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)", + "message": "Automatic update failed. Please try updating manually. (command: npm install -g @google/gemini-cli@2.0.0)",  },  ]  Number of calls: 3  ✓ handleAutoUpdate > should emit "update-failed" when the spawn function throws an error 182ms × handleAutoUpdate > should use the "@nightly" tag for nightly updates 259ms → expected "spy" to be called with arguments: [ …(2) ] Received:  1st spy call: @@ -1,7 +1,7 @@  [ - "npm i -g @google/gemini-cli@nightly", + "npm install -g @google/gemini-cli@nightly",  {  "detached": true,  "shell": true,  "stdio": "ignore",  },  Number of calls: 1  ✓ handleAutoUpdate > should emit "update-success" when the update process succeeds 178ms ✓ setUpdateHandler > should register event listeners 2ms ✓ setUpdateHandler > should handle update-received event 5ms ✓ setUpdateHandler > should handle update-failed event 1ms ✓ setUpdateHandler > should handle update-success event 1ms ✓ setUpdateHandler > should not show update-received message if update-success was called 1ms ✓ setUpdateHandler > should handle update-info event 1ms [?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/contexts/TerminalContext.test.tsx (2 tests | 2 failed) 4167ms × TerminalContext > should parse OSC 11 response 2101ms → expected "spy" to be called with arguments: [ 'rgb:ffff/ffff/ffff' ] Number of calls: 0  × TerminalContext > should handle partial chunks 2064ms → expected "spy" to be called with arguments: [ 'rgb:0000/0000/0000' ] Number of calls: 0  [?2004h[?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/config/extension.test.ts (82 tests | 1 failed) 4197ms ✓ extension tests > loadExtensions > should include extension path in loaded extension 200ms ✓ extension tests > loadExtensions > should skip the extension if a context file path is outside the extension directory and log an error 58ms ✓ extension tests > loadExtensions > should load context file path when GEMINI.md is present 42ms ✓ extension tests > loadExtensions > should load context file path from the extension config 87ms ✓ extension tests > loadExtensions > should annotate disabled extensions 49ms ✓ extension tests > loadExtensions > should hydrate variables 31ms ✓ extension tests > loadExtensions > should load a linked extension correctly 55ms ✓ extension tests > loadExtensions > should load extension policies from the policies directory 65ms ✓ extension tests > loadExtensions > should ignore ALLOW rules and YOLO mode from extension policies for security 29ms ✓ extension tests > loadExtensions > should hydrate ${extensionPath} correctly for linked extensions 35ms ✓ extension tests > loadExtensions > should resolve environment variables in extension configuration 29ms ✓ extension tests > loadExtensions > should resolve environment variables from an extension .env file 25ms ✓ extension tests > loadExtensions > should handle missing environment variables gracefully 33ms ✓ extension tests > loadExtensions > should skip an extension with invalid JSON config and log an error 42ms ✓ extension tests > loadExtensions > should skip an extension with missing "name" in config and log an error 42ms ✓ extension tests > loadExtensions > should filter trust out of mcp servers 23ms ✓ extension tests > loadExtensions > should log an error for invalid extension names during loading 58ms ✓ extension tests > loadExtensions > should not load github extensions and log a warning if blockGitExtensions is set 47ms ✓ extension tests > loadExtensions > should load allowed extensions if the allowlist is set. 79ms ✓ extension tests > loadExtensions > should not load disallowed extensions and log a warning if the allowlist is set. 35ms ✓ extension tests > loadExtensions > should not load any extensions if admin.extensions.enabled is false 24ms ✓ extension tests > loadExtensions > should not load mcpServers if admin.mcp.enabled is false 24ms ✓ extension tests > loadExtensions > should load mcpServers if admin.mcp.enabled is true 23ms ✓ extension tests > loadExtensions > id generation > 'should generate id from source for no…' 19ms ✓ extension tests > loadExtensions > id generation > 'should generate id from owner/repo fo…' 33ms ✓ extension tests > loadExtensions > id generation > 'should generate id from owner/repo fo…' 26ms ✓ extension tests > loadExtensions > id generation > 'should generate id from source for gi…' 16ms ✓ extension tests > loadExtensions > id generation > 'should generate id from the original …' 26ms ✓ extension tests > loadExtensions > id generation > should generate id from the original source for linked extensions 35ms ✓ extension tests > loadExtensions > id generation > should generate id from name for extension with no install metadata 38ms ✓ extension tests > loadExtensions > id generation > should load extension hooks and hydrate variables 54ms ✓ extension tests > loadExtensions > id generation > should not load hooks if hooks.enabled is false 49ms ✓ extension tests > loadExtensions > id generation > should warn about hooks during installation 142ms ✓ extension tests > installExtension > should install an extension from a local path 112ms ✓ extension tests > installExtension > should throw an error if the extension already exists 76ms ✓ extension tests > installExtension > should throw an error and cleanup if gemini-extension.json is missing 17ms ✓ extension tests > installExtension > should throw an error for invalid JSON in gemini-extension.json 18ms ✓ extension tests > installExtension > should throw an error for missing name in gemini-extension.json 34ms ✓ extension tests > installExtension > should install an extension from a git URL 124ms ✓ extension tests > installExtension > should install a linked extension 59ms ✓ extension tests > installExtension > should not install a github extension if blockGitExtensions is set 26ms ✓ extension tests > installExtension > should not install a disallowed extension if the allowlist is set 51ms ✓ extension tests > installExtension > should prompt for trust if workspace is not trusted 49ms ✓ extension tests > installExtension > should not install if user denies trust 80ms × extension tests > installExtension > should add the workspace to trusted folders if user consents 95ms → expected false to be true // Object.is equality ✓ extension tests > installExtension > with previous extension config: true > should log an update event to clearcut on success 40ms ✓ extension tests > installExtension > with previous extension config: true > should not alter the extension enablement configuration 54ms ✓ extension tests > installExtension > with previous extension config: false > should log an install event to clearcut on success 79ms ✓ extension tests > installExtension > with previous extension config: false > should alter the extension enablement configuration 83ms ✓ extension tests > installExtension > should show users information on their ansi escaped mcp servers when installing 92ms ✓ extension tests > installExtension > should continue installation if user accepts prompt for local extension with mcp servers 66ms ✓ extension tests > installExtension > should cancel installation if user declines prompt for local extension with mcp servers 20ms ✓ extension tests > installExtension > should save the autoUpdate flag to the install metadata 35ms ✓ extension tests > installExtension > should ignore consent flow if not required 72ms ✓ extension tests > installExtension > should prompt for settings if promptForSettings 60ms ✓ extension tests > installExtension > should not prompt for settings if promptForSettings is false 30ms ✓ extension tests > installExtension > should only prompt for new settings on update, and preserve old settings 117ms ✓ extension tests > installExtension > should auto-update if settings have changed 88ms ✓ extension tests > installExtension > should throw an error for invalid extension names 21ms ✓ extension tests > installExtension > installing from github > should install from a github release successfully 106ms ✓ extension tests > installExtension > installing from github > should fallback to git clone if github release download fails and user consents 126ms ✓ extension tests > installExtension > installing from github > should throw an error if github release download fails and user denies consent 38ms ✓ extension tests > installExtension > installing from github > should fallback to git clone without consent if no release data is found on first install 63ms ✓ extension tests > installExtension > installing from github > should ask for consent if no release data is found for an existing github-release extension 45ms ✓ extension tests > uninstallExtension > should uninstall an extension by name 120ms ✓ extension tests > uninstallExtension > should uninstall an extension by name and retain existing extensions 31ms ✓ extension tests > uninstallExtension > should uninstall an extension on non-matching extension directory name 42ms ✓ extension tests > uninstallExtension > should throw an error if the extension does not exist 12ms ✓ extension tests > uninstallExtension > with isUpdate: true > should not log uninstall event 23ms ✓ extension tests > uninstallExtension > with isUpdate: true > should not alter the extension enablement configuration 29ms ✓ extension tests > uninstallExtension > with isUpdate: false > should log uninstall event 21ms ✓ extension tests > uninstallExtension > with isUpdate: false > should alter the extension enablement configuration 30ms ✓ extension tests > uninstallExtension > should uninstall an extension by its source URL 45ms ✓ extension tests > uninstallExtension > should fail to uninstall by URL if an extension has no install metadata 25ms ✓ extension tests > disableExtension > should disable an extension at the user scope 30ms ✓ extension tests > disableExtension > should disable an extension at the workspace scope 27ms ✓ extension tests > disableExtension > should handle disabling the same extension twice 31ms ✓ extension tests > disableExtension > should throw an error if you request system scope 14ms ✓ extension tests > disableExtension > should log a disable event 35ms ✓ extension tests > enableExtension > should enable an extension at the user scope 22ms ✓ extension tests > enableExtension > should enable an extension at the workspace scope 42ms ✓ extension tests > enableExtension > should log an enable event 58ms [?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/contexts/KeypressContext.test.tsx (146 tests | 141 failed) 5427ms × KeypressContext > Enter key handling > should recognize 'regular enter key (keycode 13)' in kitty protocol 203ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should recognize 'numpad enter key (keycode 57414)' in kitty protocol 45ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should handle backslash return 70ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should handle numpad enter with 'Shift' modifier 95ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should handle numpad enter with 'Ctrl' modifier 132ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should handle numpad enter with 'Alt' modifier 13ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should recognize (LF) as ctrl+j 61ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Enter key handling > should recognize \x1b\n as Alt+Enter (return with meta) 48ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Fast return buffering > should buffer return key pressed quickly after another key 38ms → expected last "spy" call to have been called with [ ObjectContaining{…} ] × KeypressContext > Fast return buffering > should NOT buffer return key if delay is long enough 96ms → expected last "spy" call to have been called with [ ObjectContaining{…} ] × KeypressContext > Escape key handling > should recognize escape key (keycode 27) in kitty protocol 58ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Escape key handling > should stop propagation when a higher priority handler returns true 78ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "escape"} ] Number of calls: 0  × KeypressContext > Escape key handling > should continue propagation when a higher priority handler does not consume the event 12ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "escape"} ] Number of calls: 0  × KeypressContext > Escape key handling > should handle double Escape 21ms → expected 1st "spy" call to have been called with [ ObjectContaining{…} ], but called only 0 times × KeypressContext > Escape key handling > should handle lone Escape key (keycode 27) with timeout when kitty protocol is enabled 17ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Tab key' in kitty protocol 124ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Shift+Tab' in kitty protocol 27ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Backspace' in kitty protocol 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Alt+Backspace' in kitty protocol 16ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Ctrl+Backspace' in kitty protocol 10ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Shift+Space' in kitty protocol 140ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Ctrl+Space' in kitty protocol 13ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Windows Terminal Backspace handling > should NOT treat \b as ctrl when WT_SESSION is NOT present and OS is not Windows_NT 17ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Windows Terminal Backspace handling > should treat \b as ctrl when WT_SESSION IS present (even if not Windows_NT) 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Windows Terminal Backspace handling > should treat \b as ctrl when OS is Windows_NT 25ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Windows Terminal Backspace handling > should treat \x7f as regular backspace regardless of WT_SESSION or OS 46ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > paste mode > should 'handle multiline paste as a single ev…' 154ms → expected "spy" to be called 1 times, but got 0 times × KeypressContext > paste mode > should 'handle paste start code split over mu…' 189ms → expected "spy" to be called 1 times, but got 0 times × KeypressContext > paste mode > should 'handle paste end code split over mult…' 129ms → expected "spy" to be called 1 times, but got 0 times × KeypressContext > paste mode > should parse valid OSC 52 response 239ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > paste mode > should handle split OSC 52 response 191ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > paste mode > should handle OSC 52 response terminated by ESC \ 246ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  ✓ KeypressContext > paste mode > should ignore unknown OSC sequences 14ms ✓ KeypressContext > paste mode > should ignore invalid OSC 52 format 18ms × KeypressContext > debug keystroke logging > should not log keystrokes when debugKeystrokeLogging is false 29ms → expected "spy" to be called at least once × KeypressContext > debug keystroke logging > should log kitty buffer accumulation when debugKeystrokeLogging is true 27ms → expected "log" to be called with arguments: [ '[DEBUG] Raw StdIn: "\u001b[27u"' ] Number of calls: 0  × KeypressContext > debug keystroke logging > should show char codes when debugKeystrokeLogging is true even without debug mode 23ms → expected "log" to be called with arguments: [ Array(1) ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[53;5u'" as '5' 33ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[51;2u'" as '3' 23ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;2;13~'" as 'enter' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;5;13~'" as 'enter' 10ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;5;9~'" as 'tab' 20ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;6;9~'" as 'tab' 9ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[44032u'" as '가' 56ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;1;44032~'" as '가' 32ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;129A'" as 'up' 16ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "up"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;2H'" as 'home' 20ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;5F'" as 'end' 30ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;1P'" as 'f1' 20ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f1"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;3Q'" as 'f2' 26ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[3~'" as 'delete' 12ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "delete"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[5~'" as 'pageup' 13ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "pageup"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[6~'" as 'pagedown' 15ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1~'" as 'home' 17ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "home"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[4~'" as 'end' 15ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "end"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[2~'" as 'insert' 18ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "insert"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[11~'" as 'f1' 62ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f1"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[17~'" as 'f6' 14ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f6"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[23~'" as 'f11' 9ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f11"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[24~'" as 'f12' 12ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f12"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[25~'" as 'f13' 15ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f13"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[34~'" as 'f20' 10ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f20"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[302u'" as 'f13' 161ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f13"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[324u'" as 'f35' 15ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f35"} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[57358u'" as 'capslock' 10ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[57362u'" as 'pausebreak' 10ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[Z'" as 'tab' 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;2Z'" as 'tab' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001bOZ'" as 'tab' 11ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[A'" as 'up' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[B'" as 'down' 11ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[C'" as 'right' 32ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[D'" as 'left' 20ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[H'" as 'home' 22ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[F'" as 'end' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[5H'" as 'home' 17ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOj'" as '*' 24ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOk'" as '+' 22ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOm'" as '-' 13ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOo'" as '/' 17ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOp'" as '0' 24ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOq'" as '1' 16ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOr'" as '2' 27ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOs'" as '3' 33ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOt'" as '4' 13ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOu'" as '5' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOv'" as '6' 15ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOw'" as '7' 11ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOx'" as '8' 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOy'" as '9' 52ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOn'" as '.' 18ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001b[57404u'" as 'numpad5' 28ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001b[57404;5u'" as 'numpad5' 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Numpad support > should recognize numpad sequence "'\u001b[57411u'" as 'numpad_multiply' 15ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Double-tap and batching > should emit two delete events for double-tap CSI[3~ 13ms → expected 1st "spy" call to have been called with [ ObjectContaining{…} ], but called only 0 times × KeypressContext > Double-tap and batching > should parse two concatenated tilde-coded sequences in one chunk 30ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "delete"} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'iTerm2' 16ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'iTerm2' 11ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'iTerm2' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'iTerm2' 28ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'iTerm2' 24ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'Ghostty' 16ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'Ghostty' 12ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'Ghostty' 38ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'Ghostty' 60ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'Ghostty' 31ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'MacTerminal' 35ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'MacTerminal' 33ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'MacTerminal' 22ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'MacTerminal' 19ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'MacTerminal' 23ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'VSCodeTerminal' 15ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'VSCodeTerminal' 27ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'VSCodeTerminal' 112ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'VSCodeTerminal' 49ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'VSCodeTerminal' 20ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Backslash key handling > should treat backslash as a regular keystroke 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > should timeout and flush incomplete kitty sequences after 50ms 13ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > should immediately flush non-kitty CSI sequences 88ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > should parse valid kitty sequences immediately when complete 48ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > should handle batched kitty sequences correctly 54ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > should handle mixed valid and invalid sequences 46ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > should handle sequences arriving character by character with 1 ms delay 111ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "escape"} ] Number of calls: 0  × KeypressContext > should handle sequences arriving character by character with 49 ms delay 89ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "escape"} ] Number of calls: 0  × KeypressContext > should reset timeout when new input arrives 15ms → expected "spy" to be called with arguments: [ ObjectContaining {"name": "a"} ] Number of calls: 0  ✓ KeypressContext > SGR Mouse Handling > should ignore SGR mouse sequences 13ms × KeypressContext > SGR Mouse Handling > should handle mixed SGR mouse and key sequences 11ms → expected "spy" to be called 1 times, but got 0 times ✓ KeypressContext > SGR Mouse Handling > should ignore X11 mouse sequences 14ms ✓ KeypressContext > SGR Mouse Handling > should not flush slow SGR mouse sequences as garbage 10ms × KeypressContext > SGR Mouse Handling > should ignore specific SGR mouse sequence sandwiched between keystrokes 17ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Ignored Sequences > should ignore 'Focus In' sequence 17ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Ignored Sequences > should ignore 'Focus Out' sequence 13ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Ignored Sequences > should ignore 'SGR Mouse Release' sequence 25ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Ignored Sequences > should ignore 'something mouse' sequence 16ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Ignored Sequences > should ignore 'another mouse' sequence 17ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Ignored Sequences > should handle F12 34ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Individual Character Input > should correctly handle string "abc" 17ms → expected "spy" to be called 3 times, but got 0 times × KeypressContext > Individual Character Input > should correctly handle string "你好" 15ms → expected "spy" to be called 2 times, but got 0 times × KeypressContext > Individual Character Input > should correctly handle string "こんにちは" 14ms → expected "spy" to be called 5 times, but got 0 times × KeypressContext > Individual Character Input > should correctly handle string "안녕하세요" 18ms → expected "spy" to be called 5 times, but got 0 times × KeypressContext > Individual Character Input > should correctly handle string "A你B好C" 13ms → expected "spy" to be called 5 times, but got 0 times × KeypressContext > Greek support > should handle undefined correctly in 'non-Greek locale (Option+z)' 37ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Greek support > should handle undefined correctly in 'Greek LANG' 16ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Greek support > should handle undefined correctly in 'Greek LC_ALL' 13ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Greek support > should handle undefined correctly in 'LC_ALL overriding non-Greek LANG' 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  × KeypressContext > Greek support > should handle '¸' correctly in 'Cedilla (¸) in Greek locale (should b…' 14ms → expected "spy" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0  [?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/hooks/useSelectionList.test.tsx (51 tests | 49 failed) 11717ms × useSelectionList > Initialization > should initialize with the default index (0) if enabled 373ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Initialization > should initialize with the provided initialIndex if enabled 312ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Initialization > should handle an empty list gracefully 195ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Initialization > should find the next enabled item (downwards) if initialIndex is disabled 176ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Initialization > should wrap around to find the next enabled item if initialIndex is disabled 235ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Initialization > should default to 0 if initialIndex is out of bounds 154ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Initialization > should stick to the initial index if all items are disabled 92ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should move down with "j" and "down" keys, skipping disabled items 75ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should move up with "k" and "up" keys, skipping disabled items 130ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should ignore navigation keys when shift is pressed 69ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should wrap navigation correctly 65ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should call onHighlight when index changes 78ms → Test attempted to press key (down) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should not move or call onHighlight if navigation results in the same index (e.g., single item) 79ms → Test attempted to press key (down) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Keyboard Navigation (Up/Down/J/K) > should not move or call onHighlight if all items are disabled 88ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Wrapping (wrapAround) > should wrap by default (wrapAround=true) 106ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Wrapping (wrapAround) > should not wrap when wrapAround is false 117ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Selection (Enter) > should call onSelect when "return" is pressed on enabled item 63ms → Test attempted to press key (enter) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Selection (Enter) > should not call onSelect if the active item is disabled 74ms → Cannot read properties of undefined (reading 'setActiveIndex') × useSelectionList > Keyboard Navigation Robustness (Rapid Input) > should handle rapid navigation and selection robustly (avoiding stale state) 75ms → Handler not active × useSelectionList > Keyboard Navigation Robustness (Rapid Input) > should handle ultra-rapid input (multiple presses in single act) without stale state 90ms → Handler not active × useSelectionList > Focus Management (isFocused) > should activate the keypress handler when focused (default) and items exist 81ms → expected null not to be null ✓ useSelectionList > Focus Management (isFocused) > should not activate the keypress handler when isFocused is false 102ms ✓ useSelectionList > Focus Management (isFocused) > should not activate the keypress handler when items list is empty 99ms × useSelectionList > Focus Management (isFocused) > should activate/deactivate when isFocused prop changes 130ms → expected null not to be null × useSelectionList > Numeric Quick Selection (showNumbers=true) > should not respond to numbers if showNumbers is false (default) 157ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should select item immediately if the number cannot be extended (unambiguous) 137ms → Test attempted to press key (3) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should highlight and wait for timeout if the number can be extended (ambiguous) 107ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should handle multi-digit input correctly 86ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should reset buffer if input becomes invalid (out of bounds) 62ms → Test attempted to press key (5) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should allow "0" as subsequent digit, but ignore as first digit 60ms → Test attempted to press key (0) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should clear the initial "0" input after timeout 63ms → Test attempted to press key (0) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should highlight but not select a disabled item (immediate selection case) 78ms → Test attempted to press key (2) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should highlight but not select a disabled item (timeout case) 61ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should clear the number buffer if a non-numeric key (e.g., navigation) is pressed 78ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Numeric Quick Selection (showNumbers=true) > should clear the number buffer if "return" is pressed 55ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Programmatic Focus (focusKey) > should change the activeIndex when a valid focusKey is provided 56ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Programmatic Focus (focusKey) > should ignore a focusKey that does not exist 69ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Programmatic Focus (focusKey) > should ignore a focusKey that points to a disabled item 117ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Programmatic Focus (focusKey) > should handle clearing the focusKey 108ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should update activeIndex when initialIndex prop changes 2206ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should respect a new initialIndex even after user interaction 105ms → Test attempted to press key (down) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Reactivity (Dynamic Updates) > should validate index when initialIndex prop changes to a disabled item 2177ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should adjust activeIndex if items change and the initialIndex is now out of bounds 137ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should adjust activeIndex if items change and the initialIndex becomes disabled 87ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should reset to 0 if items change to an empty list 2122ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should not reset activeIndex when items are deeply equal 68ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should update activeIndex when items change structurally 81ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should handle partial changes in items array 89ms → Cannot read properties of undefined (reading 'activeIndex') × useSelectionList > Reactivity (Dynamic Updates) > should update selection when a new item is added to the start of the list 119ms → Test attempted to press key (down) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. × useSelectionList > Reactivity (Dynamic Updates) > should not re-initialize when items have identical keys but are different objects 104ms → expected 3 to be 1 // Object.is equality × useSelectionList > Cleanup > should clear timeout on unmount when timer is active 63ms → Test attempted to press key (1) but the keypress handler is not active. Ensure the hook is focused (isFocused=true) and the list is not empty. [?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/BaseSettingsDialog.test.tsx (33 tests | 4 failed) 12614ms ✓ BaseSettingsDialog > rendering > should render the dialog with title 573ms ✓ BaseSettingsDialog > rendering > should render all items 187ms ✓ BaseSettingsDialog > rendering > should render help text with Ctrl+L for reset 108ms ✓ BaseSettingsDialog > rendering > should render scope selector when showScopeSelector is true 81ms ✓ BaseSettingsDialog > rendering > should not render scope selector when showScopeSelector is false 67ms ✓ BaseSettingsDialog > rendering > should render footer content when provided 97ms ✓ BaseSettingsDialog > keyboard navigation > should close dialog on Escape 141ms ✓ BaseSettingsDialog > keyboard navigation > should navigate down with arrow key 104ms ✓ BaseSettingsDialog > keyboard navigation > should navigate up with arrow key 159ms ✓ BaseSettingsDialog > keyboard navigation > should wrap around when navigating past last item 103ms ✓ BaseSettingsDialog > keyboard navigation > should wrap around when navigating before first item 202ms ✓ BaseSettingsDialog > keyboard navigation > should switch focus with Tab when scope selector is shown 138ms ✓ BaseSettingsDialog > scrolling and resizing list (search filtering) > should preserve focus on the active item if it remains in the filtered list 195ms ✓ BaseSettingsDialog > scrolling and resizing list (search filtering) > should reset focus to the top if the active item is filtered out 276ms ✓ BaseSettingsDialog > item interactions > should call onItemToggle for boolean items on Enter 186ms ✓ BaseSettingsDialog > item interactions > should call onItemToggle for enum items on Enter 85ms ✓ BaseSettingsDialog > item interactions > should enter edit mode for string items on Enter 132ms ✓ BaseSettingsDialog > item interactions > should enter edit mode for number items on Enter 112ms ✓ BaseSettingsDialog > item interactions > should call onItemClear on Ctrl+L 67ms ✓ BaseSettingsDialog > edit mode > should prioritize editValue over rawValue stringification 68ms × BaseSettingsDialog > edit mode > should commit edit on Enter 2140ms → expected "spy" to be called with arguments: [ 'string-setting', …(2) ] Number of calls: 0  ✓ BaseSettingsDialog > edit mode > should commit edit on Escape 198ms ✓ BaseSettingsDialog > edit mode > should commit edit and navigate on Down arrow 156ms ✓ BaseSettingsDialog > edit mode > should commit edit and navigate on Up arrow 109ms × BaseSettingsDialog > edit mode > should allow number input for number fields 2176ms → expected "spy" to be called with arguments: [ 'number-setting', '42123', …(1) ] Number of calls: 0  × BaseSettingsDialog > edit mode > should support quick number entry for number fields 2085ms → expected "spy" to be called with arguments: [ 'number-setting', '5', …(1) ] Number of calls: 0  × BaseSettingsDialog > edit mode > should allow j and k characters to be typed in string edit fields without triggering navigation 2123ms → expected "spy" to be called with arguments: [ 'string-setting', …(2) ] Number of calls: 0  ✓ BaseSettingsDialog > custom key handling > should call onKeyPress and respect its return value 64ms ✓ BaseSettingsDialog > focus management > should keep focus on settings when scope selector is hidden 70ms ✓ BaseSettingsDialog > responsiveness > should show the scope selector when availableHeight is sufficient (25) 114ms ✓ BaseSettingsDialog > responsiveness > should hide the scope selector when availableHeight is small (24) to show more items 72ms ✓ BaseSettingsDialog > responsiveness > should reduce the number of visible items based on height 78ms ✓ BaseSettingsDialog > responsiveness > should show scroll indicators when list is truncated by height 131ms [?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h(node:51576) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 model-changed listeners added to [CoreEventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) (node:51576) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 memory-changed listeners added to [CoreEventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit [?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ModelDialog.test.tsx (15 tests) 2336ms ✓ > renders the initial "main" view correctly 366ms [?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/VirtualizedList.test.tsx (10 tests | 2 failed) 1394ms ✓ > with 10px height and 100 items > renders only visible items ('top') 392ms × > with 10px height and 100 items > renders only visible items ('scrolled to bottom') 132ms → expected '╭────────────────────────────────────…' to contain 'Item 92' × > with 10px height and 100 items > sticks to bottom when new items added 124ms → lastFrame() returned an empty string. If this is intentional, use lastFrame({ allowEmpty: true }). Otherwise, ensure you are calling await waitUntilReady() and that the component is rendering correctly. ✓ > with 10px height and 100 items > scrolls down to show new items when requested via ref 139ms ✓ > with 10px height and 100 items > mounts only visible items with 1000 items and 10px height (scroll: +0) 94ms ✓ > with 10px height and 100 items > mounts only visible items with 1000 items and 10px height (scroll: 500) 67ms ✓ > with 10px height and 100 items > mounts only visible items with 1000 items and 10px height (scroll: 999) 106ms ✓ > renders more items when a visible item shrinks via context update 164ms ✓ > updates scroll position correctly when scrollBy is called multiple times in the same tick 131ms ✓ > renders correctly in copyModeEnabled when scrolled 43ms [?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/Footer.test.tsx (39 tests | 1 failed) 2266ms ✓