diff --git a/full_test_run.txt b/full_test_run.txt
deleted file mode 100644
index 0f33967499..0000000000
--- a/full_test_run.txt
+++ /dev/null
@@ -1,3193 +0,0 @@
-
-> @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) ][90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m[33m@@ -1,11 +1,11 @@[90m
-[2m [[22m
-[2m "update-received",[22m
-[2m {[22m
-[2m "isUpdating": false,[22m
-[2m "message": "An update is available![22m
-[32m- Please update manually.",[90m
-[31m+ Please run npm install -g @google/gemini-cli@latest to update",[90m
-[2m "update": {[22m
-[2m "current": "1.0.0",[22m
-[2m "latest": "2.0.0",[22m
-[2m "name": "@google/gemini-cli",[22m
-[2m "type": "major",[22m
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- × handleAutoUpdate > should suppress update notifications when running via npx 253ms
- → expected "emit" to not be called at all, but actually been called 1 times[90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m 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",
- },
- },
- ]
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- × handleAutoUpdate > should suppress update notifications when running via pnpx 142ms
- → expected "emit" to not be called at all, but actually been called 1 times[90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m 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",
- },
- },
- ]
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- × handleAutoUpdate > should suppress update notifications when running via bunx 167ms
- → expected "emit" to not be called at all, but actually been called 1 times[90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m 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",
- },
- },
- ]
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- × handleAutoUpdate > should suppress update notifications when running via binary 158ms
- → expected "emit" to not be called at all, but actually been called 1 times[90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m 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",
- },
- },
- ]
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- × 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) ][90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m[33m@@ -1,11 +1,11 @@[90m
-[2m [[22m
-[2m "update-received",[22m
-[2m {[22m
-[32m- "isUpdating": false,[90m
-[31m+ "isUpdating": true,[90m
-[2m "message": "An update is available![22m
-[32m- Cannot determine update command.",[90m
-[31m+ Installed with npm. Attempting to automatically update now...",[90m
-[2m "update": {[22m
-[2m "current": "1.0.0",[22m
-[2m "latest": "2.0.0",[22m
-[2m "name": "@google/gemini-cli",[22m
-[2m "type": "major",[22m
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- × handleAutoUpdate > should combine update messages correctly 171ms
- → expected "emit" to be called with arguments: [ 'update-received', …(1) ][90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m[33m@@ -1,11 +1,11 @@[90m
-[2m [[22m
-[2m "update-received",[22m
-[2m {[22m
-[32m- "isUpdating": false,[90m
-[31m+ "isUpdating": true,[90m
-[2m "message": "An update is available![22m
-[32m- This is an additional message.",[90m
-[31m+ Installed with npm. Attempting to automatically update now...",[90m
-[2m "update": {[22m
-[2m "current": "1.0.0",[22m
-[2m "latest": "2.0.0",[22m
-[2m "name": "@google/gemini-cli",[22m
-[2m "type": "major",[22m
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- ✓ 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) ][90m
-
-Received:
-
-[1m 1st emit call:
-
-[22m[2m [[22m
-[32m- "update-failed",[90m
-[31m+ "update-received",[90m
-[2m {[22m
-[32m- "message": "Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)",[90m
-[31m+ "isUpdating": true,[90m
-[31m+ "message": "An update is available![90m
-[31m+ Installed with npm. Attempting to automatically update now...",[90m
-[31m+ "update": {[90m
-[31m+ "current": "1.0.0",[90m
-[31m+ "latest": "2.0.0",[90m
-[31m+ "name": "@google/gemini-cli",[90m
-[31m+ "type": "major",[90m
-[31m+ },[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd emit call:
-
-[22m[2m [[22m
-[32m- "update-failed",[90m
-[31m+ "update-success",[90m
-[2m {[22m
-[32m- "message": "Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)",[90m
-[31m+ "message": "Update successful! The new version will be used on your next run.",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd emit call:
-
-[22m[2m [[22m
-[2m "update-failed",[22m
-[2m {[22m
-[32m- "message": "Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)",[90m
-[31m+ "message": "Automatic update failed. Please try updating manually. (command: npm install -g @google/gemini-cli@2.0.0)",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- ✓ 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) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[33m@@ -1,7 +1,7 @@[90m
-[2m [[22m
-[32m- "npm i -g @google/gemini-cli@nightly",[90m
-[31m+ "npm install -g @google/gemini-cli@nightly",[90m
-[2m {[22m
-[2m "detached": true,[22m
-[2m "shell": true,[22m
-[2m "stdio": "ignore",[22m
-[2m },[22m
-[39m[90m
-
-Number of calls: [1m1[22m
-[39m
- ✓ 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' ][90m
-
-Number of calls: [1m0[22m
-[39m
- × TerminalContext > should handle partial chunks 2064ms
- → expected "spy" to be called with arguments: [ 'rgb:0000/0000/0000' ][90m
-
-Number of calls: [1m0[22m
-[39m
-[?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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should recognize 'numpad enter key (keycode 57414)' in kitty protocol 45ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should handle backslash return 70ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should handle numpad enter with 'Shift' modifier 95ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should handle numpad enter with 'Ctrl' modifier 132ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should handle numpad enter with 'Alt' modifier 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should recognize
- (LF) as ctrl+j 61ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Enter key handling > should recognize \x1b\n as Alt+Enter (return with meta) 48ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Tab key' in kitty protocol 124ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Shift+Tab' in kitty protocol 27ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Backspace' in kitty protocol 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Alt+Backspace' in kitty protocol 16ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Ctrl+Backspace' in kitty protocol 10ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Shift+Space' in kitty protocol 140ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Tab, Backspace, and Space handling > should recognize 'Ctrl+Space' in kitty protocol 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Windows Terminal Backspace handling > should treat \b as ctrl when OS is Windows_NT 25ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > paste mode > should handle split OSC 52 response 191ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > paste mode > should handle OSC 52 response terminated by ESC \ 246ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- ✓ 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"' ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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) ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[53;5u'" as '5' 33ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[51;2u'" as '3' 23ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;2;13~'" as 'enter' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;5;13~'" as 'enter' 10ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;5;9~'" as 'tab' 20ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;6;9~'" as 'tab' 9ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[44032u'" as '가' 56ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[27;1;44032~'" as '가' 32ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;129A'" as 'up' 16ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "up"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;2H'" as 'home' 20ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;5F'" as 'end' 30ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;1P'" as 'f1' 20ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f1"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;3Q'" as 'f2' 26ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[3~'" as 'delete' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "delete"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[5~'" as 'pageup' 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "pageup"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[6~'" as 'pagedown' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1~'" as 'home' 17ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "home"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[4~'" as 'end' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "end"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[2~'" as 'insert' 18ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "insert"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[11~'" as 'f1' 62ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f1"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[17~'" as 'f6' 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f6"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[23~'" as 'f11' 9ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f11"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[24~'" as 'f12' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f12"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[25~'" as 'f13' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f13"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[34~'" as 'f20' 10ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f20"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[302u'" as 'f13' 161ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f13"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[324u'" as 'f35' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "f35"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[57358u'" as 'capslock' 10ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[57362u'" as 'pausebreak' 10ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[Z'" as 'tab' 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[1;2Z'" as 'tab' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001bOZ'" as 'tab' 11ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[A'" as 'up' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[B'" as 'down' 11ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[C'" as 'right' 32ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[D'" as 'left' 20ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[H'" as 'home' 22ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[F'" as 'end' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Parameterized functional keys > should recognize sequence "'\u001b[5H'" as 'home' 17ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOj'" as '*' 24ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOk'" as '+' 22ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOm'" as '-' 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOo'" as '/' 17ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOp'" as '0' 24ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOq'" as '1' 16ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOr'" as '2' 27ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOs'" as '3' 33ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOt'" as '4' 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOu'" as '5' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOv'" as '6' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOw'" as '7' 11ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOx'" as '8' 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOy'" as '9' 52ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOn'" as '.' 18ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001b[57404u'" as 'numpad5' 28ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001b[57404;5u'" as 'numpad5' 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Numpad support > should recognize numpad sequence "'\u001b[57411u'" as 'numpad_multiply' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'iTerm2' 16ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'iTerm2' 11ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'iTerm2' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'iTerm2' 28ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'iTerm2' 24ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'Ghostty' 16ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'Ghostty' 12ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'Ghostty' 38ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'Ghostty' 60ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'Ghostty' 31ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'MacTerminal' 35ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'MacTerminal' 33ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'MacTerminal' 22ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'MacTerminal' 19ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'MacTerminal' 23ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'b' in 'VSCodeTerminal' 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'f' in 'VSCodeTerminal' 27ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'m' in 'VSCodeTerminal' 112ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'z' in 'VSCodeTerminal' 49ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Cross-terminal Alt key handling (simulating macOS) > should handle Alt+'Z' in 'VSCodeTerminal' 20ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Backslash key handling > should treat backslash as a regular keystroke 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > should timeout and flush incomplete kitty sequences after 50ms 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > should immediately flush non-kitty CSI sequences 88ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > should parse valid kitty sequences immediately when complete 48ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > should handle sequences arriving character by character with 49 ms delay 89ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "escape"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > should reset timeout when new input arrives 15ms
- → expected "spy" to be called with arguments: [ ObjectContaining {"name": "a"} ][90m
-
-Number of calls: [1m0[22m
-[39m
- ✓ 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Greek support > should handle undefined correctly in 'Greek LANG' 16ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Greek support > should handle undefined correctly in 'Greek LC_ALL' 13ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Greek support > should handle undefined correctly in 'LC_ALL overriding non-Greek LANG' 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
- × KeypressContext > Greek support > should handle '¸' correctly in 'Cedilla (¸) in Greek locale (should b…' 14ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…} ][90m
-
-Number of calls: [1m0[22m
-[39m
-[?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) ][90m
-
-Number of calls: [1m0[22m
-[39m
- ✓ 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) ][90m
-
-Number of calls: [1m0[22m
-[39m
- × BaseSettingsDialog > edit mode > should support quick number entry for number fields 2085ms
- → expected "spy" to be called with arguments: [ 'number-setting', '5', …(1) ][90m
-
-Number of calls: [1m0[22m
-[39m
- × 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) ][90m
-
-Number of calls: [1m0[22m
-[39m
- ✓ 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
- ✓ > renders the component 224ms
- ✓ > path display > should display a shortened path on a narrow terminal 53ms
- ✓ > path display > should use wide layout at 80 columns 46ms
- ✓ > path display > should not truncate high-priority items on narrow terminals (regression) 29ms
- ✓ > displays the branch name when provided 68ms
- ✓ > does not display the branch name when not provided 85ms
- ✓ > displays the model name and context percentage 79ms
- ✓ > displays the usage indicator when usage is low 54ms
- ✓ > hides the usage indicator when usage is not near limit 65ms
- ✓ > displays "Limit reached" message when remaining is 0 72ms
- ✓ > displays the model name and abbreviated context used label on narrow terminals 65ms
- ✓ > sandbox and trust info > should display untrusted when isTrustedFolder is false 32ms
- ✓ > sandbox and trust info > should display "current process" for custom sandbox when SANDBOX env is set 30ms
- ✓ > sandbox and trust info > should display "current process" for macOS Seatbelt when SANDBOX is sandbox-exec 22ms
- ✓ > sandbox and trust info > should display "no sandbox" when SANDBOX is not set and folder is trusted 25ms
- ✓ > sandbox and trust info > should display "all tools" when tool sandboxing is enabled and agent is local 91ms
- ✓ > sandbox and trust info > should prioritize untrusted message over sandbox info 58ms
- ✓ > footer configuration filtering (golden snapshots) > renders complete footer with all sections visible (baseline) 40ms
- ✓ > footer configuration filtering (golden snapshots) > renders footer with all optional sections hidden (minimal footer) 88ms
- ✓ > footer configuration filtering (golden snapshots) > renders footer with only model info hidden (partial filtering) 26ms
- ✓ > footer configuration filtering (golden snapshots) > renders footer with CWD and model info hidden to test alignment (only sandbox visible) 32ms
- ✓ > footer configuration filtering (golden snapshots) > hides the context percentage when hideContextPercentage is true 34ms
- ✓ > footer configuration filtering (golden snapshots) > shows the context percentage when hideContextPercentage is false 37ms
- ✓ > footer configuration filtering (golden snapshots) > renders complete footer in narrow terminal (baseline narrow) 24ms
- ✓ > Footer Token Formatting > formats thousands with k 79ms
- ✓ > Footer Token Formatting > formats millions with m 115ms
- ✓ > Footer Token Formatting > formats billions with b 65ms
- ✓ > Footer Token Formatting > formats small numbers without suffix 42ms
- ✓ > error summary visibility > hides error summary in low verbosity mode out of dev mode 27ms
- ✓ > error summary visibility > shows error summary in low verbosity mode in dev mode 41ms
- ✓ > error summary visibility > shows error summary in full verbosity mode 35ms
- × > Footer Custom Items > renders auth item with email 38ms
- → expected ' /auth\n google\n' to contain 'test@example.com'
- ✓ > Footer Custom Items > does NOT render auth item when showUserIdentity is false 157ms
- ✓ > Footer Custom Items > renders items in the specified order 39ms
- ✓ > Footer Custom Items > renders multiple items with proper alignment 25ms
- ✓ > Footer Custom Items > handles empty items array 140ms
- ✓ > Footer Custom Items > does not render items that are conditionally hidden 25ms
- ✓ > fallback mode display > should display Flash model when in fallback mode, not the configured Pro model 25ms
- ✓ > fallback mode display > should display Pro model when NOT in fallback mode 31ms
-[?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/BaseSelectionList.test.tsx (31 tests | 18 failed) 2240ms
- ✓ BaseSelectionList > Rendering and Structure > should render all items using the renderItem prop 348ms
- ✓ BaseSelectionList > Rendering and Structure > should render the selection indicator (● or space) and layout 117ms
- ✓ BaseSelectionList > Rendering and Structure > should handle an empty list gracefully 38ms
- × BaseSelectionList > useSelectionList Integration > should pass props correctly to useSelectionList 36ms
- → expected "useSelectionList" to be called with arguments: [ { items: [ { …(3) }, …(2) ], …(6) } ][90m
-
-Number of calls: [1m0[22m
-[39m
- × BaseSelectionList > useSelectionList Integration > should use the activeIndex returned by the hook 105ms
- → expected "spy" to be called with arguments: [ { value: 'A', …(2) }, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[33m@@ -2,9 +2,11 @@[90m
-[2m {[22m
-[2m "key": "A",[22m
-[2m "label": "Item A",[22m
-[2m "value": "A",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": false,[90m
-[31m+ {[90m
-[31m+ "isSelected": true,[90m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "A",[90m
-[32m- "label": "Item A",[90m
-[32m- "value": "A",[90m
-[31m+ "disabled": true,[90m
-[31m+ "key": "B",[90m
-[31m+ "label": "Item B",[90m
-[31m+ "value": "B",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#AFAFAF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "A",[90m
-[32m- "label": "Item A",[90m
-[32m- "value": "A",[90m
-[31m+ "key": "C",[90m
-[31m+ "label": "Item C",[90m
-[31m+ "value": "C",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- × BaseSelectionList > Styling and Colors > should apply success color to the selected item 88ms
- → expected "spy" to be called with arguments: [ { value: 'A', …(2) }, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[33m@@ -2,11 +2,11 @@[90m
-[2m {[22m
-[2m "key": "A",[22m
-[2m "label": "Item A",[22m
-[2m "value": "A",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": true,[22m
-[32m- "numberColor": "COLOR_FOCUS",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "A",[90m
-[32m- "label": "Item A",[90m
-[32m- "value": "A",[90m
-[31m+ "disabled": true,[90m
-[31m+ "key": "B",[90m
-[31m+ "label": "Item B",[90m
-[31m+ "value": "B",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[32m- "numberColor": "COLOR_FOCUS",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#AFAFAF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "A",[90m
-[32m- "label": "Item A",[90m
-[32m- "value": "A",[90m
-[31m+ "key": "C",[90m
-[31m+ "label": "Item C",[90m
-[31m+ "value": "C",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[32m- "numberColor": "COLOR_FOCUS",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- × BaseSelectionList > Styling and Colors > should apply primary color to unselected, enabled items 60ms
- → expected "spy" to be called with arguments: [ { value: 'C', …(2) }, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "C",[90m
-[32m- "label": "Item C",[90m
-[32m- "value": "C",[90m
-[31m+ "key": "A",[90m
-[31m+ "label": "Item A",[90m
-[31m+ "value": "A",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": false,[90m
-[32m- "numberColor": "COLOR_PRIMARY",[90m
-[32m- "titleColor": "COLOR_PRIMARY",[90m
-[31m+ {[90m
-[31m+ "isSelected": true,[90m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "C",[90m
-[32m- "label": "Item C",[90m
-[32m- "value": "C",[90m
-[31m+ "disabled": true,[90m
-[31m+ "key": "B",[90m
-[31m+ "label": "Item B",[90m
-[31m+ "value": "B",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[32m- "numberColor": "COLOR_PRIMARY",[90m
-[32m- "titleColor": "COLOR_PRIMARY",[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#AFAFAF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[33m@@ -2,11 +2,11 @@[90m
-[2m {[22m
-[2m "key": "C",[22m
-[2m "label": "Item C",[22m
-[2m "value": "C",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[32m- "numberColor": "COLOR_PRIMARY",[90m
-[32m- "titleColor": "COLOR_PRIMARY",[90m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- × BaseSelectionList > Styling and Colors > should apply secondary color to disabled items (when not selected) 33ms
- → expected "spy" to be called with arguments: [ { value: 'B', …(3) }, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "disabled": true,[90m
-[32m- "key": "B",[90m
-[32m- "label": "Item B",[90m
-[32m- "value": "B",[90m
-[31m+ "key": "A",[90m
-[31m+ "label": "Item A",[90m
-[31m+ "value": "A",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": false,[90m
-[32m- "numberColor": "COLOR_SECONDARY",[90m
-[32m- "titleColor": "COLOR_SECONDARY",[90m
-[31m+ {[90m
-[31m+ "isSelected": true,[90m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[33m@@ -3,11 +3,11 @@[90m
-[2m "disabled": true,[22m
-[2m "key": "B",[22m
-[2m "label": "Item B",[22m
-[2m "value": "B",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[32m- "numberColor": "COLOR_SECONDARY",[90m
-[32m- "titleColor": "COLOR_SECONDARY",[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#AFAFAF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "disabled": true,[90m
-[32m- "key": "B",[90m
-[32m- "label": "Item B",[90m
-[32m- "value": "B",[90m
-[31m+ "key": "C",[90m
-[31m+ "label": "Item C",[90m
-[31m+ "value": "C",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[32m- "numberColor": "COLOR_SECONDARY",[90m
-[32m- "titleColor": "COLOR_SECONDARY",[90m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- × BaseSelectionList > Styling and Colors > should apply success color to disabled items if they are selected 54ms
- → expected "spy" to be called with arguments: [ { value: 'B', …(3) }, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "disabled": true,[90m
-[32m- "key": "B",[90m
-[32m- "label": "Item B",[90m
-[32m- "value": "B",[90m
-[31m+ "key": "A",[90m
-[31m+ "label": "Item A",[90m
-[31m+ "value": "A",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": true,[22m
-[32m- "numberColor": "COLOR_FOCUS",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[33m@@ -3,11 +3,11 @@[90m
-[2m "disabled": true,[22m
-[2m "key": "B",[22m
-[2m "label": "Item B",[22m
-[2m "value": "B",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[32m- "numberColor": "COLOR_FOCUS",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#AFAFAF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "disabled": true,[90m
-[32m- "key": "B",[90m
-[32m- "label": "Item B",[90m
-[32m- "value": "B",[90m
-[31m+ "key": "C",[90m
-[31m+ "label": "Item C",[90m
-[31m+ "value": "C",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[32m- "numberColor": "COLOR_FOCUS",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- ✓ BaseSelectionList > Numbering (showNumbers) > should show numbers by default with correct formatting 33ms
- ✓ BaseSelectionList > Numbering (showNumbers) > should hide numbers when showNumbers is false 45ms
- ✓ BaseSelectionList > Numbering (showNumbers) > should apply correct padding for alignment in long lists 137ms
- × BaseSelectionList > Numbering (showNumbers) > should apply secondary color to numbers if showNumbers is false (internal logic check) 69ms
- → expected "spy" to be called with arguments: [ { value: 'A', …(2) }, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[33m@@ -2,11 +2,11 @@[90m
-[2m {[22m
-[2m "key": "A",[22m
-[2m "label": "Item A",[22m
-[2m "value": "A",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": true,[22m
-[32m- "numberColor": "COLOR_SECONDARY",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "A",[90m
-[32m- "label": "Item A",[90m
-[32m- "value": "A",[90m
-[31m+ "disabled": true,[90m
-[31m+ "key": "B",[90m
-[31m+ "label": "Item B",[90m
-[31m+ "value": "B",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[32m- "numberColor": "COLOR_SECONDARY",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#AFAFAF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[2m {[22m
-[32m- "key": "A",[90m
-[32m- "label": "Item A",[90m
-[32m- "value": "A",[90m
-[31m+ "key": "C",[90m
-[31m+ "label": "Item C",[90m
-[31m+ "value": "C",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[32m- "numberColor": "COLOR_SECONDARY",[90m
-[32m- "titleColor": "COLOR_FOCUS",[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#AFAFAF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- ✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should only show maxItemsToShow items initially 77ms
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should scroll down when activeIndex moves beyond the visible window 47ms
- → 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.
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should scroll up when activeIndex moves before the visible window 95ms
- → 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.
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should pin the scroll offset to the end if selection starts near the end 36ms
- → expected '● 1. Item 1\n 2. Item 2\n 3. Ite…' to contain 'Item 10'
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should handle dynamic scrolling through multiple activeIndex changes 71ms
- → 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.
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should correctly identify the selected item within the visible window 64ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…}, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[2m [[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[31m+ "key": "Item 1",[90m
-[31m+ "label": "Item 1",[90m
-[2m "value": "Item 1",[22m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": false,[90m
-[31m+ {[90m
-[31m+ "isSelected": true,[90m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[2m [[22m
-[32m- ObjectContaining {[90m
-[32m- "value": "Item 1",[90m
-[31m+ {[90m
-[31m+ "key": "Item 2",[90m
-[31m+ "label": "Item 2",[90m
-[31m+ "value": "Item 2",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[32m- ObjectContaining {[90m
-[32m- "value": "Item 1",[90m
-[31m+ {[90m
-[31m+ "key": "Item 3",[90m
-[31m+ "label": "Item 3",[90m
-[31m+ "value": "Item 3",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": false,[22m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should correctly identify the selected item when scrolled (high index) 67ms
- → expected "spy" to be called with arguments: [ ObjectContaining{…}, …(1) ][90m
-
-Received:
-
-[1m 1st spy call:
-
-[22m[2m [[22m
-[32m- ObjectContaining {[90m
-[32m- "value": "Item 6",[90m
-[31m+ {[90m
-[31m+ "key": "Item 1",[90m
-[31m+ "label": "Item 1",[90m
-[31m+ "value": "Item 1",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[31m+ {[90m
-[2m "isSelected": true,[22m
-[31m+ "numberColor": "green",[90m
-[31m+ "titleColor": "green",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 2nd spy call:
-
-[22m[2m [[22m
-[32m- ObjectContaining {[90m
-[32m- "value": "Item 6",[90m
-[31m+ {[90m
-[31m+ "key": "Item 2",[90m
-[31m+ "label": "Item 2",[90m
-[31m+ "value": "Item 2",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-
-[1m 3rd spy call:
-
-[22m[2m [[22m
-[32m- ObjectContaining {[90m
-[32m- "value": "Item 6",[90m
-[31m+ {[90m
-[31m+ "key": "Item 3",[90m
-[31m+ "label": "Item 3",[90m
-[31m+ "value": "Item 3",[90m
-[2m },[22m
-[32m- ObjectContaining {[90m
-[32m- "isSelected": true,[90m
-[31m+ {[90m
-[31m+ "isSelected": false,[90m
-[31m+ "numberColor": "#FFFFFF",[90m
-[31m+ "titleColor": "#FFFFFF",[90m
-[2m },[22m
-[2m ][22m
-[39m[90m
-
-Number of calls: [1m3[22m
-[39m
- × BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should correctly calculate scroll offset during the initial render phase 45ms
- → expected [ 'Item 1', 'Item 2', 'Item 3' ] to not include 'Item 1'
- ✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should handle maxItemsToShow larger than the list length 90ms
- × BaseSelectionList > Mouse Interaction > should register mouse click handler for each item 67ms
- → expected "useMouseClick" to be called 3 times, but got 0 times
- × BaseSelectionList > Mouse Interaction > should update activeIndex on first click and call onSelect on second click 75ms
- → Cannot read properties of undefined (reading '1')
- × BaseSelectionList > Mouse Interaction > should not call onSelect when a disabled item is clicked 79ms
- → Cannot read properties of undefined (reading '1')
- × BaseSelectionList > Mouse Interaction > should pass isActive: isFocused to useMouseClick 41ms
- → expected "useMouseClick" to be called with arguments: [ Any