From 78c8ace77f938d61ff8f7b60847c209b1b6fcd7e Mon Sep 17 00:00:00 2001 From: mkorwel Date: Tue, 14 Apr 2026 23:35:02 -0700 Subject: [PATCH] perf(test): optimize test suite speed and stability --- full-test-output.txt | 11304 +++ optimized-threads-run.txt | 39 + packages/a2a-server/vitest.config.ts | 27 +- packages/cli/src/nonInteractiveCli.test.ts | 6 +- .../src/nonInteractiveCliAgentSession.test.ts | 6 +- packages/cli/src/test-utils/AppRig.tsx | 2 +- packages/cli/src/test-utils/async.ts | 2 +- packages/cli/src/test-utils/render.tsx | 8 +- .../src/ui/ToolConfirmationFullFrame.test.tsx | 2 +- .../src/ui/components/AskUserDialog.test.tsx | 2 +- .../ui/components/ConfigExtensionDialog.tsx | 2 +- .../src/ui/components/SettingsDialog.test.tsx | 2 +- .../__snapshots__/AskUserDialog.test.tsx.snap | 70 + .../ExitPlanModeDialog.test.tsx.snap | 108 + .../__snapshots__/InputPrompt.test.tsx.snap | 21 + ...cused-on-scope-selector-correctly.snap.svg | 44 +- .../SettingsDialog.test.tsx.snap | 12 +- .../cli/src/ui/contexts/TerminalContext.tsx | 2 +- .../src/ui/utils/terminalCapabilityManager.ts | 6 +- packages/cli/test-setup.ts | 76 +- packages/cli/vitest.config.ts | 22 +- packages/core/vitest.config.ts | 13 +- threads-full-run.txt | 62948 ++++++++++++++++ threads-test-output.txt | 11046 +++ 24 files changed, 85653 insertions(+), 117 deletions(-) create mode 100644 full-test-output.txt create mode 100644 optimized-threads-run.txt create mode 100644 threads-full-run.txt create mode 100644 threads-test-output.txt diff --git a/full-test-output.txt b/full-test-output.txt new file mode 100644 index 0000000000..673aaf87fe --- /dev/null +++ b/full-test-output.txt @@ -0,0 +1,11304 @@ + +> @google/gemini-cli@0.39.0-nightly.20260408.e77b22e63 test +> vitest run + + + RUN v3.2.4 /Users/mattkorwel/dev/gemini-cli/main/packages/cli + Coverage enabled with v8 + +[?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[?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[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/ExitPlanModeDialog.test.tsx (28 tests | 4 failed) 2508ms + × ExitPlanModeDialog > useAlternateBuffer: true > renders correctly with plan content 181ms + → Snapshot `ExitPlanModeDialog > useAlternateBuffer: true > renders correctly with plan content 1` mismatched + ✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onApprove with AUTO_EDIT when first option is selected 57ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onApprove with DEFAULT when second option is selected 74ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onFeedback when feedback is typed and submitted 247ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onCancel when Esc is pressed 40ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > displays error state when file read fails 16ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > displays error state when plan file is empty 14ms + × ExitPlanModeDialog > useAlternateBuffer: true > handles long plan content appropriately 45ms + → Snapshot `ExitPlanModeDialog > useAlternateBuffer: true > handles long plan content appropriately 1` mismatched + ✓ ExitPlanModeDialog > useAlternateBuffer: true > allows number key quick selection 47ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > clears feedback text when Ctrl+C is pressed while editing 257ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > bubbles up Ctrl+C when feedback is empty while editing 133ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > does not submit empty feedback when Enter is pressed 71ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > allows arrow navigation while typing feedback to change selection 131ms + ✓ ExitPlanModeDialog > useAlternateBuffer: true > automatically submits feedback when Ctrl+G is used to edit the plan 39ms + × ExitPlanModeDialog > useAlternateBuffer: false > renders correctly with plan content 38ms + → Snapshot `ExitPlanModeDialog > useAlternateBuffer: false > renders correctly with plan content 1` mismatched + ✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onApprove with AUTO_EDIT when first option is selected 38ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onApprove with DEFAULT when second option is selected 62ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onFeedback when feedback is typed and submitted 181ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onCancel when Esc is pressed 24ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > displays error state when file read fails 14ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > displays error state when plan file is empty 14ms + × ExitPlanModeDialog > useAlternateBuffer: false > handles long plan content appropriately 50ms + → Snapshot `ExitPlanModeDialog > useAlternateBuffer: false > handles long plan content appropriately 1` mismatched + ✓ ExitPlanModeDialog > useAlternateBuffer: false > allows number key quick selection 58ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > clears feedback text when Ctrl+C is pressed while editing 266ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > bubbles up Ctrl+C when feedback is empty while editing 143ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > does not submit empty feedback when Enter is pressed 60ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > allows arrow navigation while typing feedback to change selection 143ms + ✓ ExitPlanModeDialog > useAlternateBuffer: false > automatically submits feedback when Ctrl+G is used to edit the plan 63ms +[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/utils/TableRenderer.test.tsx (20 tests | 20 failed) 3215ms + × TableRenderer > renders a 3x3 table correctly 246ms + → Snapshot `TableRenderer > renders a 3x3 table correctly 2` mismatched + × TableRenderer > renders a table with long headers and 4 columns correctly 415ms + → Snapshot `TableRenderer > renders a table with long headers and 4 columns correctly 2` mismatched + × TableRenderer > wraps long cell content correctly 152ms + → Snapshot `TableRenderer > wraps long cell content correctly 2` mismatched + × TableRenderer > wraps all long columns correctly 223ms + → Snapshot `TableRenderer > wraps all long columns correctly 2` mismatched + × TableRenderer > wraps mixed long and short columns correctly 138ms + → Snapshot `TableRenderer > wraps mixed long and short columns correctly 2` mismatched + × TableRenderer > wraps columns with punctuation correctly 236ms + → Snapshot `TableRenderer > wraps columns with punctuation correctly 2` mismatched + × TableRenderer > strips bold markers from headers and renders them correctly 123ms + → Snapshot `TableRenderer > strips bold markers from headers and renders them correctly 2` mismatched + × TableRenderer > handles wrapped bold headers without showing markers 241ms + → Snapshot `TableRenderer > handles wrapped bold headers without showing markers 2` mismatched + × TableRenderer > renders a complex table with mixed content lengths correctly 135ms + → Snapshot `TableRenderer > renders a complex table with mixed content lengths correctly 2` mismatched + × TableRenderer > 'handles non-ASCII characters (emojis …' 80ms + → Snapshot `TableRenderer > 'handles non-ASCII characters (emojis …' 2` mismatched + × TableRenderer > 'renders a table with only emojis and …' 80ms + → Snapshot `TableRenderer > 'renders a table with only emojis and …' 2` mismatched + × TableRenderer > 'renders a table with only Asian chara…' 66ms + → Snapshot `TableRenderer > 'renders a table with only Asian chara…' 2` mismatched + × TableRenderer > 'renders a table with mixed emojis, As…' 103ms + → Snapshot `TableRenderer > 'renders a table with mixed emojis, As…' 2` mismatched + × TableRenderer > 'renders correctly when headers are em…' 58ms + → Snapshot `TableRenderer > 'renders correctly when headers are em…' 2` mismatched + × TableRenderer > 'renders correctly when there are more…' 77ms + → Snapshot `TableRenderer > 'renders correctly when there are more…' 2` mismatched + × TableRenderer > 'renders complex markdown in rows and …' 249ms + → Snapshot `TableRenderer > 'renders complex markdown in rows and …' 2` mismatched + × TableRenderer > 'calculates column widths based on ren…' 85ms + → Snapshot `TableRenderer > 'calculates column widths based on ren…' 2` mismatched + × TableRenderer > 'handles nested markdown styles recurs…' 181ms + → Snapshot `TableRenderer > 'handles nested markdown styles recurs…' 2` mismatched + × TableRenderer > 'calculates width correctly for conten…' 173ms + → Snapshot `TableRenderer > 'calculates width correctly for conten…' 2` mismatched + × TableRenderer > 'does not parse markdown inside code s…' 153ms + → Snapshot `TableRenderer > 'does not parse markdown inside code s…' 2` mismatched +[?2004h[?2004h[?2004h[?2004h[?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[?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/components/AskUserDialog.test.tsx (42 tests | 5 failed) 4693ms + × AskUserDialog > renders question and options 126ms + → Snapshot `AskUserDialog > renders question and options 1` mismatched + ✓ AskUserDialog > Submission: 'Single Select' > submits correct values for Single Select 72ms + ✓ AskUserDialog > Submission: 'Multi-select' > submits correct values for Multi-select 201ms + ✓ AskUserDialog > Submission: 'All of the above' > submits correct values for All of the above 122ms + ✓ AskUserDialog > Submission: 'Text Input' > submits correct values for Text Input 85ms + ✓ AskUserDialog > verifies "All of the above" visual state with snapshot 199ms + ✓ AskUserDialog > handles custom option in single select with inline typing 161ms + ✓ AskUserDialog > supports multi-line input for "Other" option in choice questions 161ms + ✓ AskUserDialog > Scroll Arrows (useAlternateBuffer: true) > shows scroll arrows correctly when useAlternateBuffer is true 225ms + ✓ AskUserDialog > Scroll Arrows (useAlternateBuffer: false) > shows scroll arrows correctly when useAlternateBuffer is false 236ms + ✓ AskUserDialog > navigates to custom option when typing unbound characters (Type-to-Jump) 147ms + × AskUserDialog > shows progress header for multiple questions 50ms + → Snapshot `AskUserDialog > shows progress header for multiple questions 1` mismatched + × AskUserDialog > hides progress header for single question 38ms + → Snapshot `AskUserDialog > hides progress header for single question 1` mismatched + × AskUserDialog > shows keyboard hints 33ms + → Snapshot `AskUserDialog > shows keyboard hints 1` mismatched + ✓ AskUserDialog > navigates between questions with arrow keys 110ms + ✓ AskUserDialog > preserves answers when navigating back 186ms + × AskUserDialog > shows Review tab in progress header for multiple questions 36ms + → Snapshot `AskUserDialog > shows Review tab in progress header for multiple questions 1` mismatched + ✓ AskUserDialog > allows navigating to Review tab and back 141ms + ✓ AskUserDialog > shows warning for unanswered questions on Review tab 80ms + ✓ AskUserDialog > submits with unanswered questions when user confirms on Review 67ms + ✓ AskUserDialog > Text type questions > renders text input for type: "text" 47ms + ✓ AskUserDialog > Text type questions > shows default placeholder when none provided 49ms + ✓ AskUserDialog > Text type questions > supports backspace in text mode 124ms + ✓ AskUserDialog > Text type questions > shows correct keyboard hints for text type 35ms + ✓ AskUserDialog > Text type questions > preserves text answer when navigating between questions 148ms + ✓ AskUserDialog > Text type questions > handles mixed text and choice questions 238ms + ✓ AskUserDialog > Text type questions > submits empty text as unanswered 33ms + ✓ AskUserDialog > Text type questions > clears text on Ctrl+C 134ms + ✓ AskUserDialog > Text type questions > allows immediate arrow navigation after switching away from text input 175ms + ✓ AskUserDialog > Text type questions > handles rapid sequential answers correctly (stale closure protection) 111ms + ✓ AskUserDialog > Markdown rendering > auto-bolds plain single-line questions 56ms + ✓ AskUserDialog > Markdown rendering > does not auto-bold questions that already have markdown 56ms + ✓ AskUserDialog > Markdown rendering > renders bold markdown in question 56ms + ✓ AskUserDialog > Markdown rendering > renders inline code markdown in question 64ms + ✓ AskUserDialog > uses availableTerminalHeight from UIStateContext if availableHeight prop is missing 85ms + ✓ AskUserDialog > does NOT truncate the question when in alternate buffer mode even with small height 80ms + ✓ AskUserDialog > Choice question placeholder > uses placeholder for "Other" option when provided 145ms + ✓ AskUserDialog > Choice question placeholder > uses default placeholder when not provided 137ms + ✓ AskUserDialog > Choice question placeholder > supports "Other" option for yesno questions 232ms + ✓ AskUserDialog > expands paste placeholders in multi-select custom option via Done 86ms + ✓ AskUserDialog > shows at least 3 selection options even in small terminal heights 58ms + ✓ AskUserDialog > allows the question to exceed 15 lines in a tall terminal 67ms +[?2004h[?2004h[?2004h[?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[?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/components/ToolConfirmationQueue.test.tsx (11 tests | 3 failed) 1702ms + ✓ ToolConfirmationQueue > explicitly renders the tool description (containing filename) for edit confirmations 111ms + ✓ ToolConfirmationQueue > renders the confirming tool with progress indicator 55ms + ✓ ToolConfirmationQueue > returns null if tool has no confirmation details 27ms + ✓ ToolConfirmationQueue > calculates availableContentHeight based on availableTerminalHeight from UI state 41ms + ✓ ToolConfirmationQueue > provides more height for ask_user by subtracting less overhead 55ms + ✓ ToolConfirmationQueue > does not render expansion hint when constrainHeight is false 38ms + ✓ ToolConfirmationQueue > renders AskUser tool confirmation with Success color 36ms + ✓ ToolConfirmationQueue > renders ExitPlanMode tool confirmation with Success color 89ms + × ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large edit diffs 133ms + → Snapshot `ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large edit diffs 2` mismatched + × ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large exec commands 77ms + → Snapshot `ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large exec commands 2` mismatched + × ToolConfirmationQueue > height allocation and layout > should handle security warning height correctly 1039ms + → Snapshot `ToolConfirmationQueue > height allocation and layout > should handle security warning height correctly 2` mismatched +[?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/messages/DenseToolMessage.test.tsx (25 tests | 2 failed) 1720ms + ✓ DenseToolMessage > explicitly renders the filename in the header for FileDiff results 130ms + ✓ DenseToolMessage > renders correctly for a successful string result 61ms + ✓ DenseToolMessage > truncates long string results 57ms + ✓ DenseToolMessage > flattens newlines in string results 59ms + ✓ DenseToolMessage > renders correctly for file diff results with stats 45ms + ✓ DenseToolMessage > renders correctly for Edit tool using confirmationDetails 172ms + ✓ DenseToolMessage > renders correctly for Rejected Edit tool 64ms + ✓ DenseToolMessage > renders correctly for Rejected Edit tool with confirmationDetails and diffStat 53ms + ✓ DenseToolMessage > renders correctly for WriteFile tool 54ms + ✓ DenseToolMessage > renders correctly for Rejected WriteFile tool 51ms + ✓ DenseToolMessage > renders correctly for Errored Edit tool 62ms + ✓ DenseToolMessage > renders correctly for grep results 59ms + ✓ DenseToolMessage > renders correctly for ls results 53ms + ✓ DenseToolMessage > renders correctly for ReadManyFiles results 56ms + ✓ DenseToolMessage > renders correctly for todo updates 53ms + ✓ DenseToolMessage > renders generic output message for unknown object results 67ms + ✓ DenseToolMessage > renders correctly for error status with string message 60ms + ✓ DenseToolMessage > renders generic failure message for error status without string message 58ms + ✓ DenseToolMessage > does not render result arrow if resultDisplay is missing 53ms + ✓ DenseToolMessage > truncates long description but preserves tool name (< 25 chars) 63ms + ✓ DenseToolMessage > Toggleable Diff View (Alternate Buffer) > hides diff content by default when in alternate buffer mode 60ms + ✓ DenseToolMessage > Toggleable Diff View (Alternate Buffer) > shows diff content by default when NOT in alternate buffer mode 59ms + ✓ DenseToolMessage > Toggleable Diff View (Alternate Buffer) > shows diff content when expanded via ToolActionsContext 70ms + × DenseToolMessage > Visual Regression > matches SVG snapshot for an Accepted file edit with diff stats 132ms + → Snapshot `DenseToolMessage > Visual Regression > matches SVG snapshot for an Accepted file edit with diff stats 2` mismatched + × DenseToolMessage > Visual Regression > matches SVG snapshot for a Rejected tool call 66ms + → Snapshot `DenseToolMessage > Visual Regression > matches SVG snapshot for a Rejected tool call 2` mismatched +[?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/ui/components/FooterConfigDialog.test.tsx (8 tests | 3 failed) 9577ms + × > renders correctly with default settings 2870ms + → Snapshot ` > renders correctly with default settings 3` mismatched + ✓ > toggles an item when enter is pressed 230ms + ✓ > reorders items with arrow keys 112ms + ✓ > closes on Esc 98ms + × > highlights the active item in the preview 3050ms + → Snapshot ` > highlights the active item in the preview 2` mismatched + ✓ > shows an empty preview when all items are deselected 235ms + ✓ > moves item correctly after trying to move up at the top 131ms + × > updates the preview when Show footer labels is toggled off 2849ms + → Snapshot ` > updates the preview when Show footer labels is toggled off 2` mismatched +[?2004h[?2004h[?2004h[?25h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/ModelDialog.test.tsx (15 tests | 1 failed) 1708ms + ✓ > renders the initial "main" view correctly 117ms + ✓ > renders the "manual" view initially for users with no pro access and filters Pro models with correct order 51ms + ✓ > closes dialog on escape in "manual" view for users with no pro access 116ms + ✓ > switches to "manual" view when "Manual" is selected and uses getDisplayString for models 151ms + ✓ > sets model and closes when a model is selected in "main" view 68ms + ✓ > sets model and closes when a model is selected in "manual" view 153ms + ✓ > toggles persist mode with Tab key 151ms + ✓ > closes dialog on escape in "main" view 111ms + ✓ > goes back to "main" view on escape in "manual" view 232ms + ✓ > shows the preferred manual model in the main view option using getDisplayString 40ms + ✓ > Preview Models > shows Auto (Preview) in main view when access is granted 38ms + ✓ > Preview Models > shows Gemini 3 models in manual view when Gemini 3.1 is NOT launched 114ms + ✓ > Preview Models > shows Gemini 3.1 models in manual view when Gemini 3.1 IS launched 103ms + ✓ > Preview Models > uses custom tools model when Gemini 3.1 IS launched and auth is Gemini API Key 151ms + × > Preview Models > shows Flash Lite Preview model regardless of tier when flag is enabled 112ms + → expected '╭────────────────────────────────────…' to contain 'gemini-3.1-flash-lite-preview' +[?25h ❯ src/ui/components/shared/BaseSettingsDialog.test.tsx (33 tests | 3 failed) 10098ms + ✓ BaseSettingsDialog > rendering > should render the dialog with title 197ms + ✓ BaseSettingsDialog > rendering > should render all items 96ms + ✓ BaseSettingsDialog > rendering > should render help text with Ctrl+L for reset 76ms + ✓ BaseSettingsDialog > rendering > should render scope selector when showScopeSelector is true 96ms + ✓ BaseSettingsDialog > rendering > should not render scope selector when showScopeSelector is false 73ms + ✓ BaseSettingsDialog > rendering > should render footer content when provided 71ms + ✓ BaseSettingsDialog > keyboard navigation > should close dialog on Escape 148ms + ✓ BaseSettingsDialog > keyboard navigation > should navigate down with arrow key 102ms + ✓ BaseSettingsDialog > keyboard navigation > should navigate up with arrow key 138ms + ✓ BaseSettingsDialog > keyboard navigation > should wrap around when navigating past last item 138ms + ✓ BaseSettingsDialog > keyboard navigation > should wrap around when navigating before first item 114ms + ✓ BaseSettingsDialog > keyboard navigation > should switch focus with Tab when scope selector is shown 121ms + ✓ BaseSettingsDialog > scrolling and resizing list (search filtering) > should preserve focus on the active item if it remains in the filtered list 233ms + ✓ BaseSettingsDialog > scrolling and resizing list (search filtering) > should reset focus to the top if the active item is filtered out 232ms + ✓ BaseSettingsDialog > item interactions > should call onItemToggle for boolean items on Enter 105ms + ✓ BaseSettingsDialog > item interactions > should call onItemToggle for enum items on Enter 95ms + ✓ BaseSettingsDialog > item interactions > should enter edit mode for string items on Enter 94ms + ✓ BaseSettingsDialog > item interactions > should enter edit mode for number items on Enter 96ms + ✓ BaseSettingsDialog > item interactions > should call onItemClear on Ctrl+L 106ms + ✓ BaseSettingsDialog > edit mode > should prioritize editValue over rawValue stringification 70ms + × BaseSettingsDialog > edit mode > should commit edit on Enter 2151ms + → expected "spy" to be called with arguments: [ 'string-setting', …(2) ] + +Number of calls: 0 + + ✓ BaseSettingsDialog > edit mode > should commit edit on Escape 176ms + ✓ BaseSettingsDialog > edit mode > should commit edit and navigate on Down arrow 117ms + ✓ BaseSettingsDialog > edit mode > should commit edit and navigate on Up arrow 153ms + ✓ BaseSettingsDialog > edit mode > should allow number input for number fields 222ms + × BaseSettingsDialog > edit mode > should support quick number entry for number fields 2141ms + → 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 2210ms + → 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 101ms + ✓ BaseSettingsDialog > focus management > should keep focus on settings when scope selector is hidden 114ms + ✓ BaseSettingsDialog > responsiveness > should show the scope selector when availableHeight is sufficient (25) 76ms + ✓ 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 94ms + ✓ BaseSettingsDialog > responsiveness > should show scroll indicators when list is truncated by height 70ms +[?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[?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[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/Footer.test.tsx (39 tests | 1 failed) 1587ms + ✓