> @google/gemini-cli@0.39.0-nightly.20260408.e77b22e63 test
> vitest run --pool=threads
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 ❯ src/ui/components/ModelDialog.test.tsx (15 tests | 2 failed) 5411ms
✓ > renders the initial "main" view correctly 328ms
✓ > renders the "manual" view initially for users with no pro access and filters Pro models with correct order 167ms
✓ > closes dialog on escape in "manual" view for users with no pro access 132ms
✓ > switches to "manual" view when "Manual" is selected and uses getDisplayString for models 614ms
✓ > sets model and closes when a model is selected in "main" view 209ms
✓ > sets model and closes when a model is selected in "manual" view 681ms
✓ > toggles persist mode with Tab key 312ms
✓ > closes dialog on escape in "main" view 191ms
✓ > goes back to "main" view on escape in "manual" view 440ms
✓ > shows the preferred manual model in the main view option using getDisplayString 141ms
✓ > Preview Models > shows Auto (Preview) in main view when access is granted 145ms
× > Preview Models > shows Gemini 3 models in manual view when Gemini 3.1 is NOT launched 540ms
→ expected '╭────────────────────────────────────…' to contain 'gemini-3-pro-preview'
× > Preview Models > shows Gemini 3.1 models in manual view when Gemini 3.1 IS launched 598ms
→ expected '╭────────────────────────────────────…' to contain 'gemini-3.1-pro-preview'
✓ > Preview Models > uses custom tools model when Gemini 3.1 IS launched and auth is Gemini API Key 597ms
✓ > Preview Models > shows Flash Lite Preview model regardless of tier when flag is enabled 313ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/messages/DenseToolMessage.test.tsx (25 tests | 2 failed) 5320ms
✓ DenseToolMessage > explicitly renders the filename in the header for FileDiff results 686ms
✓ DenseToolMessage > renders correctly for a successful string result 162ms
✓ DenseToolMessage > truncates long string results 157ms
✓ DenseToolMessage > flattens newlines in string results 115ms
✓ DenseToolMessage > renders correctly for file diff results with stats 160ms
✓ DenseToolMessage > renders correctly for Edit tool using confirmationDetails 919ms
✓ DenseToolMessage > renders correctly for Rejected Edit tool 297ms
✓ DenseToolMessage > renders correctly for Rejected Edit tool with confirmationDetails and diffStat 148ms
✓ DenseToolMessage > renders correctly for WriteFile tool 141ms
✓ DenseToolMessage > renders correctly for Rejected WriteFile tool 110ms
✓ DenseToolMessage > renders correctly for Errored Edit tool 175ms
✓ DenseToolMessage > renders correctly for grep results 127ms
✓ DenseToolMessage > renders correctly for ls results 82ms
✓ DenseToolMessage > renders correctly for ReadManyFiles results 199ms
✓ DenseToolMessage > renders correctly for todo updates 92ms
✓ DenseToolMessage > renders generic output message for unknown object results 67ms
✓ DenseToolMessage > renders correctly for error status with string message 179ms
✓ DenseToolMessage > renders generic failure message for error status without string message 68ms
✓ DenseToolMessage > does not render result arrow if resultDisplay is missing 129ms
✓ DenseToolMessage > truncates long description but preserves tool name (< 25 chars) 122ms
✓ DenseToolMessage > Toggleable Diff View (Alternate Buffer) > hides diff content by default when in alternate buffer mode 154ms
✓ DenseToolMessage > Toggleable Diff View (Alternate Buffer) > shows diff content by default when NOT in alternate buffer mode 134ms
✓ DenseToolMessage > Toggleable Diff View (Alternate Buffer) > shows diff content when expanded via ToolActionsContext 210ms
× DenseToolMessage > Visual Regression > matches SVG snapshot for an Accepted file edit with diff stats 548ms
→ 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 136ms
→ Snapshot `DenseToolMessage > Visual Regression > matches SVG snapshot for a Rejected tool call 2` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/shared/BaseSettingsDialog.test.tsx (33 tests) 12811ms
✓ BaseSettingsDialog > rendering > should render the dialog with title 778ms
✓ BaseSettingsDialog > rendering > should render all items 334ms
✓ BaseSettingsDialog > rendering > should render help text with Ctrl+L for reset 342ms
✓ BaseSettingsDialog > keyboard navigation > should navigate down with arrow key 548ms
✓ BaseSettingsDialog > keyboard navigation > should navigate up with arrow key 526ms
✓ BaseSettingsDialog > keyboard navigation > should wrap around when navigating past last item 517ms
✓ BaseSettingsDialog > keyboard navigation > should wrap around when navigating before first item 358ms
✓ BaseSettingsDialog > keyboard navigation > should switch focus with Tab when scope selector is shown 306ms
✓ BaseSettingsDialog > scrolling and resizing list (search filtering) > should preserve focus on the active item if it remains in the filtered list 711ms
✓ BaseSettingsDialog > scrolling and resizing list (search filtering) > should reset focus to the top if the active item is filtered out 632ms
✓ BaseSettingsDialog > item interactions > should enter edit mode for string items on Enter 310ms
✓ BaseSettingsDialog > edit mode > should commit edit on Enter 342ms
✓ BaseSettingsDialog > edit mode > should commit edit on Escape 364ms
✓ BaseSettingsDialog > edit mode > should commit edit and navigate on Down arrow 375ms
✓ BaseSettingsDialog > edit mode > should commit edit and navigate on Up arrow 562ms
✓ BaseSettingsDialog > edit mode > should allow number input for number fields 687ms
✓ BaseSettingsDialog > edit mode > should support quick number entry for number fields 355ms
✓ BaseSettingsDialog > edit mode > should allow j and k characters to be typed in string edit fields without triggering navigation 536ms
✓ BaseSettingsDialog > custom key handling > should call onKeyPress and respect its return value 301ms
✓ BaseSettingsDialog > focus management > should keep focus on settings when scope selector is hidden 320ms
✓ BaseSettingsDialog > responsiveness > should reduce the number of visible items based on height 448ms
✓ BaseSettingsDialog > responsiveness > should show scroll indicators when list is truncated by height 463ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/utils/TableRenderer.test.tsx (20 tests | 20 failed) 18099ms
× TableRenderer > renders a 3x3 table correctly 885ms
→ Snapshot `TableRenderer > renders a 3x3 table correctly 2` mismatched
× TableRenderer > renders a table with long headers and 4 columns correctly 2141ms
→ Snapshot `TableRenderer > renders a table with long headers and 4 columns correctly 2` mismatched
× TableRenderer > wraps long cell content correctly 855ms
→ Snapshot `TableRenderer > wraps long cell content correctly 2` mismatched
× TableRenderer > wraps all long columns correctly 1537ms
→ Snapshot `TableRenderer > wraps all long columns correctly 2` mismatched
× TableRenderer > wraps mixed long and short columns correctly 638ms
→ Snapshot `TableRenderer > wraps mixed long and short columns correctly 2` mismatched
× TableRenderer > wraps columns with punctuation correctly 1151ms
→ Snapshot `TableRenderer > wraps columns with punctuation correctly 2` mismatched
× TableRenderer > strips bold markers from headers and renders them correctly 529ms
→ Snapshot `TableRenderer > strips bold markers from headers and renders them correctly 2` mismatched
× TableRenderer > handles wrapped bold headers without showing markers 1226ms
→ Snapshot `TableRenderer > handles wrapped bold headers without showing markers 2` mismatched
× TableRenderer > renders a complex table with mixed content lengths correctly 700ms
→ Snapshot `TableRenderer > renders a complex table with mixed content lengths correctly 2` mismatched
× TableRenderer > 'handles non-ASCII characters (emojis …' 653ms
→ Snapshot `TableRenderer > 'handles non-ASCII characters (emojis …' 2` mismatched
× TableRenderer > 'renders a table with only emojis and …' 302ms
→ Snapshot `TableRenderer > 'renders a table with only emojis and …' 2` mismatched
× TableRenderer > 'renders a table with only Asian chara…' 428ms
→ Snapshot `TableRenderer > 'renders a table with only Asian chara…' 2` mismatched
× TableRenderer > 'renders a table with mixed emojis, As…' 494ms
→ Snapshot `TableRenderer > 'renders a table with mixed emojis, As…' 2` mismatched
× TableRenderer > 'renders correctly when headers are em…' 281ms
→ Snapshot `TableRenderer > 'renders correctly when headers are em…' 2` mismatched
× TableRenderer > 'renders correctly when there are more…' 575ms
→ Snapshot `TableRenderer > 'renders correctly when there are more…' 2` mismatched
× TableRenderer > 'renders complex markdown in rows and …' 1614ms
→ Snapshot `TableRenderer > 'renders complex markdown in rows and …' 2` mismatched
× TableRenderer > 'calculates column widths based on ren…' 552ms
→ Snapshot `TableRenderer > 'calculates column widths based on ren…' 2` mismatched
× TableRenderer > 'handles nested markdown styles recurs…' 1231ms
→ Snapshot `TableRenderer > 'handles nested markdown styles recurs…' 2` mismatched
× TableRenderer > 'calculates width correctly for conten…' 1398ms
→ Snapshot `TableRenderer > 'calculates width correctly for conten…' 2` mismatched
× TableRenderer > 'does not parse markdown inside code s…' 905ms
→ Snapshot `TableRenderer > 'does not parse markdown inside code s…' 2` mismatched
[?2004h ❯ src/ui/components/ExitPlanModeDialog.test.tsx (28 tests | 4 failed) 16960ms
× ExitPlanModeDialog > useAlternateBuffer: true > renders correctly with plan content 860ms
→ Snapshot `ExitPlanModeDialog > useAlternateBuffer: true > renders correctly with plan content 1` mismatched
✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onApprove with AUTO_EDIT when first option is selected 373ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onApprove with DEFAULT when second option is selected 492ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onFeedback when feedback is typed and submitted 1498ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > calls onCancel when Esc is pressed 412ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > displays error state when file read fails 138ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > displays error state when plan file is empty 70ms
× ExitPlanModeDialog > useAlternateBuffer: true > handles long plan content appropriately 220ms
→ Snapshot `ExitPlanModeDialog > useAlternateBuffer: true > handles long plan content appropriately 1` mismatched
✓ ExitPlanModeDialog > useAlternateBuffer: true > allows number key quick selection 378ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > clears feedback text when Ctrl+C is pressed while editing 1724ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > bubbles up Ctrl+C when feedback is empty while editing 932ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > does not submit empty feedback when Enter is pressed 549ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > allows arrow navigation while typing feedback to change selection 970ms
✓ ExitPlanModeDialog > useAlternateBuffer: true > automatically submits feedback when Ctrl+G is used to edit the plan 178ms
× ExitPlanModeDialog > useAlternateBuffer: false > renders correctly with plan content 118ms
→ Snapshot `ExitPlanModeDialog > useAlternateBuffer: false > renders correctly with plan content 1` mismatched
✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onApprove with AUTO_EDIT when first option is selected 266ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onApprove with DEFAULT when second option is selected 300ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onFeedback when feedback is typed and submitted 1292ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > calls onCancel when Esc is pressed 310ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > displays error state when file read fails 89ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > displays error state when plan file is empty 118ms
× ExitPlanModeDialog > useAlternateBuffer: false > handles long plan content appropriately 125ms
→ Snapshot `ExitPlanModeDialog > useAlternateBuffer: false > handles long plan content appropriately 1` mismatched
✓ ExitPlanModeDialog > useAlternateBuffer: false > allows number key quick selection 548ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > clears feedback text when Ctrl+C is pressed while editing 2614ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > bubbles up Ctrl+C when feedback is empty while editing 805ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > does not submit empty feedback when Enter is pressed 500ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > allows arrow navigation while typing feedback to change selection 684ms
✓ ExitPlanModeDialog > useAlternateBuffer: false > automatically submits feedback when Ctrl+G is used to edit the plan 390ms
[?2004h[?2004h ❯ src/ui/components/AskUserDialog.test.tsx (42 tests | 5 failed) 17563ms
× AskUserDialog > renders question and options 710ms
→ Snapshot `AskUserDialog > renders question and options 1` mismatched
✓ AskUserDialog > Submission: 'Single Select' > submits correct values for Single Select 300ms
✓ AskUserDialog > Submission: 'Multi-select' > submits correct values for Multi-select 918ms
✓ AskUserDialog > Submission: 'All of the above' > submits correct values for All of the above 1033ms
✓ AskUserDialog > Submission: 'Text Input' > submits correct values for Text Input 491ms
✓ AskUserDialog > verifies "All of the above" visual state with snapshot 604ms
✓ AskUserDialog > handles custom option in single select with inline typing 775ms
✓ AskUserDialog > supports multi-line input for "Other" option in choice questions 518ms
✓ AskUserDialog > Scroll Arrows (useAlternateBuffer: true) > shows scroll arrows correctly when useAlternateBuffer is true 348ms
✓ AskUserDialog > Scroll Arrows (useAlternateBuffer: false) > shows scroll arrows correctly when useAlternateBuffer is false 376ms
✓ AskUserDialog > navigates to custom option when typing unbound characters (Type-to-Jump) 508ms
× AskUserDialog > shows progress header for multiple questions 133ms
→ Snapshot `AskUserDialog > shows progress header for multiple questions 1` mismatched
× AskUserDialog > hides progress header for single question 127ms
→ Snapshot `AskUserDialog > hides progress header for single question 1` mismatched
× AskUserDialog > shows keyboard hints 118ms
→ Snapshot `AskUserDialog > shows keyboard hints 1` mismatched
✓ AskUserDialog > navigates between questions with arrow keys 363ms
✓ AskUserDialog > preserves answers when navigating back 511ms
× AskUserDialog > shows Review tab in progress header for multiple questions 180ms
→ Snapshot `AskUserDialog > shows Review tab in progress header for multiple questions 1` mismatched
✓ AskUserDialog > allows navigating to Review tab and back 485ms
✓ AskUserDialog > shows warning for unanswered questions on Review tab 232ms
✓ AskUserDialog > submits with unanswered questions when user confirms on Review 218ms
✓ AskUserDialog > Text type questions > renders text input for type: "text" 67ms
✓ AskUserDialog > Text type questions > shows default placeholder when none provided 156ms
✓ AskUserDialog > Text type questions > supports backspace in text mode 371ms
✓ AskUserDialog > Text type questions > shows correct keyboard hints for text type 113ms
✓ AskUserDialog > Text type questions > preserves text answer when navigating between questions 591ms
✓ AskUserDialog > Text type questions > handles mixed text and choice questions 695ms
✓ AskUserDialog > Text type questions > submits empty text as unanswered 156ms
✓ AskUserDialog > Text type questions > clears text on Ctrl+C 520ms
✓ AskUserDialog > Text type questions > allows immediate arrow navigation after switching away from text input 908ms
✓ AskUserDialog > Text type questions > handles rapid sequential answers correctly (stale closure protection) 676ms
✓ AskUserDialog > Markdown rendering > auto-bolds plain single-line questions 203ms
✓ AskUserDialog > Markdown rendering > does not auto-bold questions that already have markdown 284ms
✓ AskUserDialog > Markdown rendering > renders bold markdown in question 94ms
✓ AskUserDialog > Markdown rendering > renders inline code markdown in question 196ms
✓ AskUserDialog > uses availableTerminalHeight from UIStateContext if availableHeight prop is missing 173ms
✓ AskUserDialog > does NOT truncate the question when in alternate buffer mode even with small height 331ms
✓ AskUserDialog > Choice question placeholder > uses placeholder for "Other" option when provided 516ms
✓ AskUserDialog > Choice question placeholder > uses default placeholder when not provided 265ms
✓ AskUserDialog > Choice question placeholder > supports "Other" option for yesno questions 1445ms
✓ AskUserDialog > expands paste placeholders in multi-select custom option via Done 532ms
✓ AskUserDialog > shows at least 3 selection options even in small terminal heights 116ms
✓ AskUserDialog > allows the question to exceed 15 lines in a tall terminal 196ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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) 4541ms
✓ > renders the component 555ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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) 10809ms
✓ ToolConfirmationQueue > explicitly renders the tool description (containing filename) for edit confirmations 622ms
✓ ToolConfirmationQueue > renders the confirming tool with progress indicator 174ms
✓ ToolConfirmationQueue > returns null if tool has no confirmation details 75ms
✓ ToolConfirmationQueue > calculates availableContentHeight based on availableTerminalHeight from UI state 220ms
✓ ToolConfirmationQueue > provides more height for ask_user by subtracting less overhead 296ms
✓ ToolConfirmationQueue > does not render expansion hint when constrainHeight is false 142ms
✓ ToolConfirmationQueue > renders AskUser tool confirmation with Success color 121ms
✓ ToolConfirmationQueue > renders ExitPlanMode tool confirmation with Success color 383ms
× ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large edit diffs 843ms
→ 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 285ms
→ 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 7647ms
→ Snapshot `ToolConfirmationQueue > height allocation and layout > should handle security warning height correctly 2` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/messages/ToolGroupMessage.test.tsx (38 tests | 1 failed) 5581ms
✓ > Golden Snapshots > renders single successful tool call 510ms
✓ > Golden Snapshots > hides confirming tools (standard behavior) 214ms
✓ > Golden Snapshots > renders canceled tool calls 213ms
✓ > Golden Snapshots > renders multiple tool calls with different statuses (only visible ones) 238ms
✓ > Golden Snapshots > hides errored tool calls in low error verbosity mode 59ms
✓ > Golden Snapshots > keeps client-initiated errored tool calls visible in low error verbosity mode 183ms
✓ > Golden Snapshots > renders update_topic tool call using TopicMessage 168ms
✓ > Golden Snapshots > renders update_topic tool call with summary instead of strategic_intent 323ms
✓ > Golden Snapshots > renders mixed tool calls including update_topic 204ms
✓ > Golden Snapshots > renders with limited terminal height 132ms
✓ > Golden Snapshots > renders with narrow terminal width 65ms
✓ > Golden Snapshots > renders empty tool calls array 202ms
✓ > Golden Snapshots > renders header when scrolled 464ms
✓ > Golden Snapshots > renders tool call with outputFile 101ms
× > Golden Snapshots > renders two tool groups where only the last line of the previous group is visible 333ms
→ Snapshot ` > Golden Snapshots > renders two tool groups where only the last line of the previous group is visible 1` mismatched
✓ > Border Color Logic > uses yellow border for shell commands even when successful 142ms
✓ > Border Color Logic > uses gray border when all tools are successful and no shell commands 149ms
✓ > Height Calculation > calculates available height correctly with multiple tools with results 152ms
✓ > Ask User Filtering > filtering logic for status='scheduled' and hasResult='test result' 66ms
✓ > Ask User Filtering > filtering logic for status='executing' and hasResult='test result' 62ms
✓ > Ask User Filtering > filtering logic for status='awaiting_approval' and hasResult='test result' 47ms
✓ > Ask User Filtering > filtering logic for status='success' and hasResult='test result' 45ms
✓ > Ask User Filtering > filtering logic for status='error' and hasResult='' 39ms
✓ > Ask User Filtering > filtering logic for status='error' and hasResult='error message' 48ms
✓ > Ask User Filtering > shows other tools when ask_user is filtered out 58ms
✓ > Ask User Filtering > renders nothing when only tool is in-progress AskUser with borderBottom=false 37ms
✓ > Ask User Filtering > does not render a bottom-border fragment when all tools are filtered out 161ms
✓ > Ask User Filtering > still renders explicit closing slices for split static/pending groups 41ms
✓ > Ask User Filtering > does not render a border fragment when plan-mode tools are filtered out 93ms
✓ > Ask User Filtering > does not render a border fragment when only confirming tools are present 67ms
✓ > Ask User Filtering > does not leave a border stub when transitioning from visible to fully filtered tools 390ms
✓ > Ask User Filtering > keeps visible tools rendered with many filtered tools (stress case) 91ms
✓ > Ask User Filtering > renders explicit closing slice even at very narrow terminal width 76ms
✓ > Plan Mode Filtering > filtering logic for 'WriteFile' in 'plan' mode 82ms
✓ > Plan Mode Filtering > filtering logic for 'Edit' in 'plan' mode 40ms
✓ > Plan Mode Filtering > filtering logic for 'WriteFile' in 'default' mode 143ms
✓ > Plan Mode Filtering > filtering logic for 'ReadFile' in 'plan' mode 88ms
✓ > Plan Mode Filtering > filtering logic for 'FindFiles' in 'plan' mode 51ms
[?2004h[?2004h[?2004h[?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/LoadingIndicator.test.tsx (22 tests) 4073ms
✓ > should render blank when streamingState is Idle and no loading phrase or thought 333ms
✓ > should render spinner (static), phrase but no time/cancel when streamingState is WaitingForConfirmation 321ms
✓ > should render rightContent when provided 306ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/BaseSelectionList.test.tsx (31 tests | 1 failed) 4635ms
✓ BaseSelectionList > Rendering and Structure > should render all items using the renderItem prop 395ms
✓ BaseSelectionList > Rendering and Structure > should render the selection indicator (● or space) and layout 269ms
✓ BaseSelectionList > Rendering and Structure > should handle an empty list gracefully 70ms
✓ BaseSelectionList > useSelectionList Integration > should pass props correctly to useSelectionList 144ms
✓ BaseSelectionList > useSelectionList Integration > should use the activeIndex returned by the hook 112ms
✓ BaseSelectionList > Styling and Colors > should apply success color to the selected item 152ms
✓ BaseSelectionList > Styling and Colors > should apply primary color to unselected, enabled items 85ms
✓ BaseSelectionList > Styling and Colors > should apply secondary color to disabled items (when not selected) 67ms
✓ BaseSelectionList > Styling and Colors > should apply success color to disabled items if they are selected 78ms
✓ BaseSelectionList > Numbering (showNumbers) > should show numbers by default with correct formatting 162ms
✓ BaseSelectionList > Numbering (showNumbers) > should hide numbers when showNumbers is false 95ms
✓ BaseSelectionList > Numbering (showNumbers) > should apply correct padding for alignment in long lists 275ms
✓ BaseSelectionList > Numbering (showNumbers) > should apply secondary color to numbers if showNumbers is false (internal logic check) 111ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should only show maxItemsToShow items initially 157ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should scroll down when activeIndex moves beyond the visible window 155ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should scroll up when activeIndex moves before the visible window 306ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should pin the scroll offset to the end if selection starts near the end 106ms
× BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should handle dynamic scrolling through multiple activeIndex changes 294ms
→ 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 248ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should correctly identify the selected item when scrolled (high index) 57ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should correctly calculate scroll offset during the initial render phase 107ms
✓ BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should handle maxItemsToShow larger than the list length 59ms
✓ BaseSelectionList > Mouse Interaction > should register mouse click handler for each item 136ms
✓ BaseSelectionList > Mouse Interaction > should update activeIndex on first click and call onSelect on second click 139ms
✓ BaseSelectionList > Mouse Interaction > should not call onSelect when a disabled item is clicked 202ms
✓ BaseSelectionList > Mouse Interaction > should pass isActive: isFocused to useMouseClick 54ms
✓ BaseSelectionList > Scroll Arrows (showScrollArrows) > should not show arrows by default 71ms
✓ BaseSelectionList > Scroll Arrows (showScrollArrows) > should show arrows with correct colors when enabled (at the top) 107ms
✓ BaseSelectionList > Scroll Arrows (showScrollArrows) > should show arrows and correct items when scrolled to the middle 83ms
✓ BaseSelectionList > Scroll Arrows (showScrollArrows) > should show arrows and correct items when scrolled to the end 235ms
✓ BaseSelectionList > Scroll Arrows (showScrollArrows) > should not show arrows when list fits entirely 99ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx (27 tests | 16 failed) 6261ms
× ToolConfirmationMessage > should not display urls if prompt and url are the same 706ms
→ Snapshot `ToolConfirmationMessage > should not display urls if prompt and url are the same 1` mismatched
× ToolConfirmationMessage > should display urls if prompt and url are different 225ms
→ Snapshot `ToolConfirmationMessage > should display urls if prompt and url are different 1` mismatched
✓ ToolConfirmationMessage > should display WarningMessage for deceptive URLs in info type 259ms
✓ ToolConfirmationMessage > should display WarningMessage for deceptive URLs in exec type commands 145ms
✓ ToolConfirmationMessage > should exclude shell delimiters from extracted URLs in exec type commands 421ms
✓ ToolConfirmationMessage > should aggregate multiple deceptive URLs into a single WarningMessage 342ms
× ToolConfirmationMessage > should display multiple commands for exec type when provided 208ms
→ Snapshot `ToolConfirmationMessage > should display multiple commands for exec type when provided 1` mismatched
× ToolConfirmationMessage > should render multiline shell scripts with correct newlines and syntax highlighting 282ms
→ Snapshot `ToolConfirmationMessage > should render multiline shell scripts with correct newlines and syntax highlighting 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should show "allow always" when folder is trusted 102ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should show "allow always" when folder is trusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should NOT show "allow always" when folder is untrusted 183ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should show "allow always" when folder is trusted 102ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should show "allow always" when folder is trusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should NOT show "allow always" when folder is untrusted 205ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for info confirmations' > should show "allow always" when folder is trusted 85ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for info confirmations' > should show "allow always" when folder is trusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for info confirmations' > should NOT show "allow always" when folder is untrusted 152ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for info confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should show "allow always" when folder is trusted 247ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should show "allow always" when folder is trusted 1` mismatched
× ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should NOT show "allow always" when folder is untrusted 87ms
→ Snapshot `ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
✓ ToolConfirmationMessage > enablePermanentToolApproval setting > should NOT show "Allow for all future sessions" when setting is false (default) 122ms
× ToolConfirmationMessage > enablePermanentToolApproval setting > should show "Allow for all future sessions" when trusted 114ms
→ Snapshot `ToolConfirmationMessage > enablePermanentToolApproval setting > should show "Allow for all future sessions" when trusted 1` mismatched
✓ ToolConfirmationMessage > Modify with external editor option > should show "Modify with external editor" when NOT in IDE mode 241ms
✓ ToolConfirmationMessage > Modify with external editor option > should show "Modify with external editor" when in IDE mode but diffing is NOT enabled 104ms
✓ ToolConfirmationMessage > Modify with external editor option > should NOT show "Modify with external editor" when in IDE mode AND diffing is enabled 116ms
× ToolConfirmationMessage > should strip BiDi characters from MCP tool and server names 165ms
→ Snapshot `ToolConfirmationMessage > should strip BiDi characters from MCP tool and server names 1` mismatched
✓ ToolConfirmationMessage > should show MCP tool details expand hint for MCP confirmations 365ms
✓ ToolConfirmationMessage > should omit empty MCP invocation arguments from details 353ms
× ToolConfirmationMessage > height allocation and layout > should expand to available height for large exec commands 280ms
→ Snapshot `ToolConfirmationMessage > height allocation and layout > should expand to available height for large exec commands 1` mismatched
× ToolConfirmationMessage > height allocation and layout > should expand to available height for large edit diffs 582ms
→ Snapshot `ToolConfirmationMessage > height allocation and layout > should expand to available height for large edit diffs 1` mismatched
✓ ToolConfirmationMessage > ESCAPE key behavior > should call confirm(Cancel) asynchronously via useEffect when ESC is pressed 64ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/messages/ToolResultDisplay.test.tsx (14 tests | 1 failed) 3955ms
✓ ToolResultDisplay > uses ScrollableList for ANSI output in alternate buffer mode 386ms
✓ ToolResultDisplay > uses Scrollable for non-ANSI output in alternate buffer mode 204ms
✓ ToolResultDisplay > passes hasFocus prop to scrollable components 423ms
✓ ToolResultDisplay > renders string result as markdown by default 153ms
✓ ToolResultDisplay > renders string result as plain text when renderOutputAsMarkdown is false 132ms
✓ ToolResultDisplay > truncates very long string results 880ms
✓ ToolResultDisplay > renders file diff result 84ms
✓ ToolResultDisplay > renders ANSI output result 85ms
✓ ToolResultDisplay > renders nothing for todos result 109ms
✓ ToolResultDisplay > does not fall back to plain text if availableHeight is set and not in alternate buffer 123ms
✓ ToolResultDisplay > keeps markdown if in alternate buffer even with availableHeight 175ms
✓ ToolResultDisplay > truncates ANSI output when maxLines is provided 256ms
× ToolResultDisplay > truncates ANSI output when maxLines is provided, even if availableTerminalHeight is undefined 326ms
→ Snapshot `ToolResultDisplay > truncates ANSI output when maxLines is provided, even if availableTerminalHeight is undefined 2` mismatched
✓ ToolResultDisplay > stays scrolled to the bottom when lines are incrementally added 617ms
[?2004h[?2004h[?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/ThemeDialog.test.tsx (10 tests) 6874ms
✓ ThemeDialog Snapshots > should render correctly in theme selection mode (isDevelopment: true) 2353ms
✓ ThemeDialog Snapshots > should render correctly in theme selection mode (isDevelopment: false) 454ms
✓ ThemeDialog Snapshots > should render correctly in scope selector mode 524ms
✓ ThemeDialog Snapshots > should call onCancel when ESC is pressed 463ms
✓ ThemeDialog Snapshots > should call onSelect when a theme is selected 515ms
✓ Initial Theme Selection > should default to a light theme when terminal background is light and no theme is set 409ms
✓ Initial Theme Selection > should default to a dark theme when terminal background is dark and no theme is set 392ms
✓ Initial Theme Selection > should use the theme from settings even if terminal background suggests a different theme type 371ms
✓ Hint Visibility > should show hint when theme background matches terminal background 773ms
✓ Hint Visibility > should not show hint when theme background does not match terminal background 613ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/HistoryItemDisplay.test.tsx (24 tests | 2 failed) 7626ms
✓ > renders UserMessage for "user" type 774ms
✓ > renders HintMessage for "hint" type 290ms
✓ > renders UserMessage for "user" type with slash command 136ms
✓ > renders InfoMessage for "info" type with multi-line text (alternateBuffer=true) 81ms
✓ > renders InfoMessage for "info" type with multi-line text (alternateBuffer=false) 367ms
✓ > renders AgentsStatus for "agents_list" type 468ms
✓ > renders StatsDisplay for "stats" type 307ms
✓ > renders AboutBox for "about" type 215ms
✓ > renders ModelStatsDisplay for "model_stats" type 216ms
✓ > renders ToolStatsDisplay for "tool_stats" type 163ms
✓ > renders SessionSummaryDisplay for "quit" type 606ms
✓ > should escape ANSI codes in text content 438ms
✓ > should escape ANSI codes in tool confirmation details 67ms
✓ > thinking items > renders thinking item when enabled 85ms
× > thinking items > renders "Thinking..." header when isFirstThinking is true 140ms
→ Snapshot ` > thinking items > renders "Thinking..." header when isFirstThinking is true 1` mismatched
✓ > thinking items > does not render thinking item when disabled 120ms
✓ > gemini items (alternateBuffer=true) > should render a truncated gemini item 453ms
✓ > gemini items (alternateBuffer=true) > should render a full gemini item when using availableTerminalHeightGemini 411ms
✓ > gemini items (alternateBuffer=true) > should render a truncated gemini_content item 580ms
✓ > gemini items (alternateBuffer=true) > should render a full gemini_content item when using availableTerminalHeightGemini 514ms
✓ > gemini items (alternateBuffer=false) > should render a truncated gemini item 169ms
✓ > gemini items (alternateBuffer=false) > should render a full gemini item when using availableTerminalHeightGemini 374ms
× > gemini items (alternateBuffer=false) > should render a truncated gemini_content item 94ms
→ Snapshot ` > gemini items (alternateBuffer=false) > should render a truncated gemini_content item 1` mismatched
✓ > gemini items (alternateBuffer=false) > should render a full gemini_content item when using availableTerminalHeightGemini 554ms
[?2004h[?2004h[?2004h ✓ src/ui/components/HooksDialog.test.tsx (12 tests) 4077ms
✓ HooksDialog > snapshots > renders empty hooks dialog 408ms
✓ HooksDialog > snapshots > renders single hook with security warning, source, and tips 433ms
✓ HooksDialog > snapshots > renders hooks grouped by event name with enabled and disabled status 441ms
✓ HooksDialog > snapshots > renders hook using command as name when name is not provided 329ms
✓ HooksDialog > scrolling behavior > should scroll down when down arrow is pressed 491ms
✓ HooksDialog > scrolling behavior > should scroll up when up arrow is pressed after scrolling down 608ms
[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/ToolConfirmationFullFrame.test.tsx (1 test | 1 failed) 4130ms
× Full Terminal Tool Confirmation Snapshot > renders tool confirmation box in the frame of the entire terminal 4128ms
→ Snapshot `Full Terminal Tool Confirmation Snapshot > renders tool confirmation box in the frame of the entire terminal 1` mismatched
❯ src/ui/components/MainContent.test.tsx (25 tests | 6 failed) 5477ms
✓ getToolGroupBorderAppearance > returns default empty values for non-tool_group items 4ms
✓ getToolGroupBorderAppearance > inspects only the last pending tool_group item if current has no tools 1ms
✓ getToolGroupBorderAppearance > returns default border for completed normal tools 1ms
✓ getToolGroupBorderAppearance > returns warning border for pending normal tools 0ms
✓ getToolGroupBorderAppearance > returns active border for executing shell commands 0ms
✓ getToolGroupBorderAppearance > returns focus border for focused executing shell commands 0ms
✓ getToolGroupBorderAppearance > returns active border and dims color for background executing shell command when another shell is active 0ms
✓ getToolGroupBorderAppearance > handles empty tools with active shell turn (isCurrentlyInShellTurn) 0ms
✓ MainContent > renders in normal buffer mode 737ms
✓ MainContent > renders in alternate buffer mode 410ms
✓ MainContent > renders minimal header in minimal mode (alternate buffer) 180ms
✓ MainContent > restores full header details after toggle in alternate buffer mode 183ms
✓ MainContent > always renders full header details in normal buffer mode 135ms
✓ MainContent > does not constrain height in alternate buffer mode 198ms
✓ MainContent > renders multiple history items with single line padding between them 429ms
× MainContent > renders mixed history items (user + gemini) with single line padding between them 349ms
→ Snapshot `MainContent > renders mixed history items (user + gemini) with single line padding between them 1` mismatched
× MainContent > renders a subagent with a complete box including bottom border 271ms
→ Snapshot `MainContent > renders a subagent with a complete box including bottom border 1` mismatched
✓ MainContent > renders a split tool group without a gap between static and pending areas 315ms
× MainContent > renders a ToolConfirmationQueue without an extra line when preceded by hidden tools 388ms
→ Snapshot `MainContent > renders a ToolConfirmationQueue without an extra line when preceded by hidden tools 1` mismatched
× MainContent > renders a spurious line when a tool group has only hidden tools and borderBottom true 91ms
→ Snapshot `MainContent > renders a spurious line when a tool group has only hidden tools and borderBottom true 1` mismatched
× MainContent > renders multiple thinking messages sequentially correctly 112ms
→ Snapshot `MainContent > renders multiple thinking messages sequentially correctly 1` mismatched
× MainContent > MainContent Tool Output Height Logic > 'ASB mode - Focused shell should expand' 365ms
→ expected 'ScrollableList\nAppHeader(full)\n\n╭─…' not to match /\bLine 1\b/
✓ MainContent > MainContent Tool Output Height Logic > 'ASB mode - Unfocused shell' 652ms
✓ MainContent > MainContent Tool Output Height Logic > 'Normal mode - Constrained height' 350ms
✓ MainContent > MainContent Tool Output Height Logic > 'Normal mode - Unconstrained height' 301ms
[?2004h ❯ src/ui/components/FooterConfigDialog.test.tsx (8 tests | 3 failed) 69508ms
× > renders correctly with default settings 18183ms
→ Snapshot ` > renders correctly with default settings 3` mismatched
✓ > toggles an item when enter is pressed 1068ms
✓ > reorders items with arrow keys 620ms
✓ > closes on Esc 363ms
× > highlights the active item in the preview 23385ms
→ Snapshot ` > highlights the active item in the preview 2` mismatched
✓ > shows an empty preview when all items are deselected 1424ms
✓ > moves item correctly after trying to move up at the top 694ms
× > updates the preview when Show footer labels is toggled off 23768ms
→ Snapshot ` > updates the preview when Show footer labels is toggled off 2` mismatched
[?2004h[?2004h ❯ src/ui/utils/borderStyles.test.tsx (7 tests | 3 failed) 5416ms
✓ getToolGroupBorderAppearance > should use warning color for pending non-shell tools 4ms
✓ getToolGroupBorderAppearance > should use correct color for empty slice by looking at pending items 3ms
✓ getToolGroupBorderAppearance > should use active color for shell tools 0ms
✓ getToolGroupBorderAppearance > should use focus color for focused shell tools 0ms
× MainContent tool group border SVG snapshots > should render SVG snapshot for a pending search dialog (google_web_search) 1713ms
→ Snapshot `MainContent tool group border SVG snapshots > should render SVG snapshot for a pending search dialog (google_web_search) 2` mismatched
× MainContent tool group border SVG snapshots > should render SVG snapshot for an empty slice following a search tool 1701ms
→ Snapshot `MainContent tool group border SVG snapshots > should render SVG snapshot for an empty slice following a search tool 2` mismatched
× MainContent tool group border SVG snapshots > should render SVG snapshot for a shell tool 1992ms
→ Snapshot `MainContent tool group border SVG snapshots > should render SVG snapshot for a shell tool 2` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/SearchableList.test.tsx (8 tests | 2 failed) 2968ms
✓ SearchableList > should render all items initially 595ms
× SearchableList > should reset selection to top when items change if resetSelectionOnItemsChange is true 675ms
→ Snapshot `SearchableList > should reset selection to top when items change if resetSelectionOnItemsChange is true 1` mismatched
✓ SearchableList > should filter items based on search query 391ms
✓ SearchableList > should show "No items found." when no items match 257ms
✓ SearchableList > should handle selection with Enter 303ms
✓ SearchableList > should handle navigation and selection 292ms
✓ SearchableList > should handle close with Esc 258ms
× SearchableList > should match snapshot 191ms
→ Snapshot `SearchableList > should match snapshot 1` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/MultiFolderTrustDialog.test.tsx (8 tests) 2733ms
✓ MultiFolderTrustDialog > renders the dialog with the list of folders 792ms
✓ MultiFolderTrustDialog > shows an error message and completes when config is missing 457ms
✓ MultiFolderTrustDialog > collects and reports errors when some directories fail to be added 485ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/VirtualizedList.test.tsx (10 tests | 3 failed) 5883ms
✓ > with 10px height and 100 items > renders only visible items ('top') 1011ms
✓ > with 10px height and 100 items > renders only visible items ('scrolled to bottom') 340ms
✓ > with 10px height and 100 items > sticks to bottom when new items added 682ms
× > with 10px height and 100 items > scrolls down to show new items when requested via ref 298ms
→ expected '╭────────────────────────────────────…' to contain 'Item 0'
✓ > with 10px height and 100 items > mounts only visible items with 1000 items and 10px height (scroll: +0) 1585ms
✓ > with 10px height and 100 items > mounts only visible items with 1000 items and 10px height (scroll: 500) 885ms
✓ > with 10px height and 100 items > mounts only visible items with 1000 items and 10px height (scroll: 999) 458ms
× > renders more items when a visible item shrinks via context update 161ms
→ 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.
✓ > updates scroll position correctly when scrollBy is called multiple times in the same tick 392ms
× > renders correctly in copyModeEnabled when scrolled 69ms
→ 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.
❯ src/ui/IdeIntegrationNudge.test.tsx (6 tests | 1 failed) 3437ms
✓ IdeIntegrationNudge > renders correctly with default options 1203ms
✓ IdeIntegrationNudge > handles "Yes" selection 843ms
✓ IdeIntegrationNudge > handles "No" selection 419ms
✓ IdeIntegrationNudge > handles "Dismiss" selection 521ms
× IdeIntegrationNudge > handles Escape key press 163ms
→ expected "spy" to be called with arguments: [ { userSelection: 'no', …(1) } ][90m
Number of calls: [1m0[22m
[39m
✓ IdeIntegrationNudge > displays correct text and handles selection when extension is pre-installed 285ms
❯ src/ui/components/messages/ThinkingMessage.test.tsx (8 tests | 7 failed) 3020ms
× ThinkingMessage > renders subject line with vertical rule and "Thinking..." header 1491ms
→ Snapshot `ThinkingMessage > renders subject line with vertical rule and "Thinking..." header 1` mismatched
× ThinkingMessage > uses description when subject is empty 271ms
→ Snapshot `ThinkingMessage > uses description when subject is empty 1` mismatched
× ThinkingMessage > renders full mode with left border and full text 452ms
→ Snapshot `ThinkingMessage > renders full mode with left border and full text 1` mismatched
× ThinkingMessage > renders "Thinking..." header when isFirstThinking is true 79ms
→ Snapshot `ThinkingMessage > renders "Thinking..." header when isFirstThinking is true 1` mismatched
× ThinkingMessage > normalizes escaped newline tokens 152ms
→ Snapshot `ThinkingMessage > normalizes escaped newline tokens 1` mismatched
✓ ThinkingMessage > renders empty state gracefully 223ms
× ThinkingMessage > renders multiple thinking messages sequentially correctly 257ms
→ Snapshot `ThinkingMessage > renders multiple thinking messages sequentially correctly 1` mismatched
× ThinkingMessage > filters out progress dots and empty lines 91ms
→ Snapshot `ThinkingMessage > filters out progress dots and empty lines 1` mismatched
❯ src/ui/components/ValidationDialog.test.tsx (8 tests | 2 failed) 2305ms
✓ ValidationDialog > initial render (choosing state) > should render the main message and two options 446ms
✓ ValidationDialog > initial render (choosing state) > should render learn more URL when provided 299ms
✓ ValidationDialog > initial render (choosing state) > should call onChoice with cancel when ESCAPE is pressed 372ms
✓ ValidationDialog > onChoice handling > should call onChoice with change_auth when that option is selected 268ms
✓ ValidationDialog > onChoice handling > should call onChoice with verify when no validation link is provided 171ms
× ValidationDialog > onChoice handling > should open browser and transition to waiting state when verify is selected with a link 156ms
→ expected '╭────────────────────────────────────…' to contain 'Waiting for verification...'
✓ ValidationDialog > headless mode > should show URL in message when browser cannot be launched 302ms
× ValidationDialog > error state > should show error and options when browser fails to open 291ms
→ expected '╭────────────────────────────────────…' to contain 'Browser not found'
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/Notifications.test.tsx (12 tests | 1 failed) 2332ms
✓ Notifications > renders nothing when no notifications 330ms
✓ Notifications > renders startup warnings: [object Object] 490ms
✓ Notifications > renders startup warnings: [object Object],[object Object] 156ms
✓ Notifications > increments show count for low priority warnings 288ms
✓ Notifications > filters out low priority warnings that exceeded max show count 125ms
× Notifications > dismisses warnings on keypress 159ms
→ expected '\n⚠ High priority 1\n' not to contain 'High priority 1'
✓ Notifications > renders init error 142ms
✓ Notifications > does not render init error when streaming 67ms
✓ Notifications > renders update notification 288ms
✓ Notifications > renders screen reader nudge when enabled and not seen (no legacy file) 152ms
✓ Notifications > migrates legacy screen reader nudge file 68ms
✓ Notifications > does not render screen reader nudge when already seen in persistent state 66ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/AlternateBufferQuittingDisplay.test.tsx (6 tests | 1 failed) 1836ms
✓ AlternateBufferQuittingDisplay > renders with active and pending tool messages 698ms
✓ AlternateBufferQuittingDisplay > renders with empty history and no pending items 144ms
✓ AlternateBufferQuittingDisplay > renders with history but no pending items 242ms
✓ AlternateBufferQuittingDisplay > renders with pending items but no history 133ms
✓ AlternateBufferQuittingDisplay > renders with a tool awaiting confirmation 133ms
× AlternateBufferQuittingDisplay > renders with user and gemini messages 482ms
→ Snapshot `AlternateBufferQuittingDisplay > renders with user and gemini messages > with_user_gemini_messages 1` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/shared/EnumSelector.test.tsx (9 tests | 1 failed) 1364ms
✓ > renders with string options and matches snapshot 381ms
✓ > renders with numeric options and matches snapshot 132ms
✓ > renders inactive state and matches snapshot 77ms
× > renders with single option and matches snapshot 129ms
→ Snapshot ` > renders with single option and matches snapshot 1` mismatched
✓ > renders nothing when no options are provided 116ms
✓ > handles currentValue not found in options 79ms
✓ > updates when currentValue changes externally 227ms
✓ > shows navigation arrows when multiple options available 95ms
✓ > hides navigation arrows when single option available 127ms
❯ src/ui/components/AppHeaderIcon.test.tsx (2 tests | 2 failed) 2178ms
× AppHeader Icon Rendering > renders the default icon in standard terminals 1404ms
→ Snapshot `AppHeader Icon Rendering > renders the default icon in standard terminals 2` mismatched
× AppHeader Icon Rendering > renders the symmetric icon in Apple Terminal 772ms
→ Snapshot `AppHeader Icon Rendering > renders the symmetric icon in Apple Terminal 2` mismatched
[?2004h ❯ src/config/extensions/consent.test.ts (21 tests | 6 failed) 2051ms
✓ consent > requestConsentNonInteractive > should return true for input "'y'" 17ms
✓ consent > requestConsentNonInteractive > should return true for input "'Y'" 3ms
✓ consent > requestConsentNonInteractive > should return true for input "''" 2ms
✓ consent > requestConsentNonInteractive > should return false for input "'n'" 147ms
✓ consent > requestConsentNonInteractive > should return false for input "'N'" 4ms
✓ consent > requestConsentNonInteractive > should return true for input "'yes'" 3ms
✓ consent > requestConsentInteractive > should resolve with true when user confirms with true 4ms
✓ consent > requestConsentInteractive > should resolve with false when user confirms with false 3ms
✓ consent > maybeRequestConsentOrFail > should request consent if there is no previous config 7ms
✓ consent > maybeRequestConsentOrFail > should not request consent if configs are identical 5ms
✓ consent > maybeRequestConsentOrFail > should throw an error if consent is denied 7ms
× consent > maybeRequestConsentOrFail > consent string generation > should generate a consent string with all fields 326ms
→ Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should generate a consent string with all fields 2` mismatched
✓ consent > maybeRequestConsentOrFail > consent string generation > should request consent if mcpServers change 86ms
✓ consent > maybeRequestConsentOrFail > consent string generation > should request consent if contextFileName changes 9ms
✓ consent > maybeRequestConsentOrFail > consent string generation > should request consent if excludeTools changes 7ms
× consent > maybeRequestConsentOrFail > consent string generation > should include warning when hooks are present 172ms
→ Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should include warning when hooks are present 2` mismatched
✓ consent > maybeRequestConsentOrFail > consent string generation > should request consent if hooks status changes 7ms
× consent > maybeRequestConsentOrFail > consent string generation > should request consent if extension is migrated 166ms
→ Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should request consent if extension is migrated 2` mismatched
× consent > maybeRequestConsentOrFail > consent string generation > should request consent if skills change 416ms
→ Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should request consent if skills change 2` mismatched
× consent > maybeRequestConsentOrFail > consent string generation > should show a warning if the skill directory cannot be read 299ms
→ Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should show a warning if the skill directory cannot be read 2` mismatched
× consent > skillsConsentString > should generate a consent string for skills 357ms
→ Snapshot `consent > skillsConsentString > should generate a consent string for skills 2` mismatched
❯ src/ui/components/Banner.test.tsx (4 tests | 4 failed) 1679ms
× Banner > renders in warning mode 696ms
→ Snapshot `Banner > renders in warning mode 2` mismatched
× Banner > renders in info mode 294ms
→ Snapshot `Banner > renders in info mode 2` mismatched
× Banner > renders in multi-line warning 439ms
→ Snapshot `Banner > renders in multi-line warning 2` mismatched
× Banner > handles newlines in text 248ms
→ Snapshot `Banner > handles newlines in text 2` mismatched
❯ src/ui/components/HookStatusDisplay.test.tsx (6 tests | 1 failed) 1109ms
✓ > should render a single executing hook 341ms
✓ > should render multiple executing hooks 142ms
✓ > should render sequential hook progress 102ms
✓ > should return empty string if no active hooks 91ms
✓ > should show generic message when only system hooks are active 98ms
× > matches SVG snapshot for single hook 332ms
→ Snapshot ` > matches SVG snapshot for single hook 2` mismatched
✓ src/test-utils/render.test.tsx (6 tests) 1288ms
✓ render > should render a component 439ms
✓ render > should support rerender 384ms
[?2004h ❯ src/ui/components/SessionBrowser.test.tsx (6 tests | 2 failed) 1360ms
✓ SessionBrowser component > shows empty state when no sessions exist 254ms
× SessionBrowser component > renders a list of sessions and marks current session as disabled 436ms
→ Snapshot `SessionBrowser component > renders a list of sessions and marks current session as disabled 1` mismatched
× SessionBrowser component > enters search mode, filters sessions, and renders match snippets 297ms
→ Snapshot `SessionBrowser component > enters search mode, filters sessions, and renders match snippets 1` mismatched
✓ SessionBrowser component > handles keyboard navigation and resumes the selected session 151ms
✓ SessionBrowser component > does not allow resuming or deleting the current session 127ms
✓ SessionBrowser component > shows an error state when loading sessions fails 85ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/SuggestionsDisplay.test.tsx (7 tests | 4 failed) 1870ms
✓ SuggestionsDisplay > renders loading state 529ms
✓ SuggestionsDisplay > renders nothing when empty and not loading 218ms
× SuggestionsDisplay > renders suggestions list 145ms
→ Snapshot `SuggestionsDisplay > renders suggestions list 1` mismatched
× SuggestionsDisplay > highlights active item 247ms
→ Snapshot `SuggestionsDisplay > highlights active item 1` mismatched
× SuggestionsDisplay > handles scrolling 243ms
→ Snapshot `SuggestionsDisplay > handles scrolling 1` mismatched
× SuggestionsDisplay > renders MCP tag for MCP prompts 342ms
→ Snapshot `SuggestionsDisplay > renders MCP tag for MCP prompts 1` mismatched
✓ SuggestionsDisplay > renders command section separators for slash mode 145ms
❯ src/ui/components/UserIdentity.test.tsx (8 tests | 2 failed) 2471ms
✓ > should render login message and auth indicator 755ms
× > should render the user email on the very first frame (regression test) 323ms
→ expected 'Signed in with Google /auth' to contain 'test@example.com'
✓ > should render login message if email is missing 147ms
× > should render plan name and upgrade indicator 165ms
→ expected 'Signed in with Google /auth\nPlan: Pr…' to contain 'Signed in with Google: test@example.c…'
✓ > should not render if authType is missing 80ms
✓ > should render non-Google auth message 56ms
✓ > should render specific tier name when provided 454ms
✓ > should not render /upgrade indicator for ultra tiers 421ms
❯ src/ui/components/shared/ExpandableText.test.tsx (7 tests | 7 failed) 1998ms
× ExpandableText > renders plain label when no match (short label) 655ms
→ Snapshot `ExpandableText > renders plain label when no match (short label) 2` mismatched
× ExpandableText > truncates long label when collapsed and no match 394ms
→ Snapshot `ExpandableText > truncates long label when collapsed and no match 2` mismatched
× ExpandableText > shows full long label when expanded and no match 160ms
→ Snapshot `ExpandableText > shows full long label when expanded and no match 2` mismatched
× ExpandableText > highlights matched substring when expanded (text only visible) 179ms
→ Snapshot `ExpandableText > highlights matched substring when expanded (text only visible) 2` mismatched
× ExpandableText > creates centered window around match when collapsed 336ms
→ Snapshot `ExpandableText > creates centered window around match when collapsed 2` mismatched
× ExpandableText > truncates match itself when match is very long 175ms
→ Snapshot `ExpandableText > truncates match itself when match is very long 2` mismatched
× ExpandableText > respects custom maxWidth 97ms
→ Snapshot `ExpandableText > respects custom maxWidth 2` mismatched
[?2004h ❯ src/ui/components/messages/RedirectionConfirmation.test.tsx (1 test | 1 failed) 935ms
× ToolConfirmationMessage Redirection > should display redirection warning and tip for redirected commands 674ms
→ Snapshot `ToolConfirmationMessage Redirection > should display redirection warning and tip for redirected commands 1` mismatched
❯ src/nonInteractiveCliAgentSession.test.ts (50 tests | 1 failed) 2159ms
✓ runNonInteractive > should process input and write text output 26ms
✓ runNonInteractive > should stream the specific stream started by send 15ms
✓ runNonInteractive > fails fast if the session acknowledges a message send without a stream 12ms
✓ runNonInteractive > should register activity logger when GEMINI_CLI_ACTIVITY_LOG_TARGET is set 17ms
✓ runNonInteractive > should not register activity logger when GEMINI_CLI_ACTIVITY_LOG_TARGET is not set 5ms
✓ runNonInteractive > should handle a single tool call and respond 8ms
✓ runNonInteractive > should write a single newline between sequential text outputs from the model 8ms
✓ runNonInteractive > should handle error during tool execution and should send error back to the model 7ms
✓ runNonInteractive > should exit with error if sendMessageStream throws initially 8ms
✓ runNonInteractive > should not exit if a tool is not found, and should send error back to model 111ms
✓ runNonInteractive > should exit when max session turns are exceeded 87ms
✓ runNonInteractive > should preprocess @include commands before sending to the model 6ms
✓ runNonInteractive > should process input and write JSON output with stats 41ms
✓ runNonInteractive > should write JSON output with stats for tool-only commands (no text response) 17ms
✓ runNonInteractive > should keep only the final post-tool assistant text in JSON output 13ms
✓ runNonInteractive > should write JSON output with stats for empty response commands 11ms
✓ runNonInteractive > should handle errors in JSON format 45ms
✓ runNonInteractive > should handle FatalInputError with custom exit code in JSON format 138ms
✓ runNonInteractive > should execute a slash command that returns a prompt 8ms
✓ runNonInteractive > should handle slash commands 34ms
× runNonInteractive > should handle cancellation (Ctrl+C) 104ms
→ promise resolved "undefined" instead of rejecting
✓ runNonInteractive > should honor cancellation that happens before session.send() 99ms
✓ runNonInteractive > should throw FatalInputError if a command requires confirmation 48ms
✓ runNonInteractive > should treat an unknown slash command as a regular prompt 12ms
✓ runNonInteractive > should throw for unhandled command result types 8ms
✓ runNonInteractive > should pass arguments to the slash command action 104ms
✓ runNonInteractive > should instantiate CommandService with correct loaders for slash commands 43ms
✓ runNonInteractive > should allow a normally-excluded tool when --allowed-tools is set 14ms
✓ runNonInteractive > CoreEvents Integration > subscribes to UserFeedback and drains backlog on start 12ms
✓ runNonInteractive > CoreEvents Integration > unsubscribes from UserFeedback on finish 10ms
✓ runNonInteractive > CoreEvents Integration > logs to process.stderr when UserFeedback event is received 10ms
✓ runNonInteractive > CoreEvents Integration > logs optional error object to process.stderr in debug mode 11ms
✓ runNonInteractive > should emit appropriate events for streaming JSON output 12ms
✓ runNonInteractive > should handle EPIPE error gracefully 247ms
✓ runNonInteractive > should resume chat when resumedSessionData is provided 54ms
✓ runNonInteractive > should emit appropriate error event in streaming JSON mode: 'loop detected' 17ms
✓ runNonInteractive > should emit appropriate error event in streaming JSON mode: 'max session turns' 17ms
✓ runNonInteractive > should log error when tool recording fails 46ms
✓ runNonInteractive > should stop agent execution immediately when a tool call returns STOP_EXECUTION error 97ms
✓ runNonInteractive > should write JSON output when a tool call returns STOP_EXECUTION error 21ms
✓ runNonInteractive > should emit result event when a tool call returns STOP_EXECUTION error in streaming JSON mode 13ms
✓ runNonInteractive > Agent Execution Events > should handle AgentExecutionStopped event 183ms
✓ runNonInteractive > Agent Execution Events > should handle AgentExecutionBlocked event 12ms
✓ runNonInteractive > Output Sanitization > should sanitize ANSI output by default 46ms
✓ runNonInteractive > Output Sanitization > should allow ANSI output when rawOutput is true 23ms
✓ runNonInteractive > Output Sanitization > should allow ANSI output when only acceptRawOutputRisk is true 67ms
✓ runNonInteractive > Output Sanitization > should warn when rawOutput is true and acceptRisk is false 121ms
✓ runNonInteractive > Output Sanitization > should not warn when rawOutput is true and acceptRisk is true 27ms
✓ runNonInteractive > Output Sanitization > should emit warning event for loop_detected in streaming JSON mode 29ms
✓ runNonInteractive > Output Sanitization > should report cancelled tool calls as success in stream-json mode (legacy parity) 25ms
❯ src/ui/components/Table.test.tsx (4 tests | 3 failed) 965ms
× Table > should render headers and data correctly 605ms
→ Snapshot `Table > should render headers and data correctly 2` mismatched
× Table > should support custom cell rendering 229ms
→ Snapshot `Table > should support custom cell rendering 2` mismatched
✓ Table > should handle undefined values gracefully 62ms
× Table > should support inverse text rendering 66ms
→ Snapshot `Table > should support inverse text rendering 2` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/messages/UserMessage.test.tsx (4 tests | 4 failed) 1277ms
× UserMessage > renders normal user message with correct prefix 828ms
→ Snapshot `UserMessage > renders normal user message with correct prefix 1` mismatched
× UserMessage > renders slash command message 64ms
→ Snapshot `UserMessage > renders slash command message 1` mismatched
× UserMessage > renders multiline user message 283ms
→ Snapshot `UserMessage > renders multiline user message 1` mismatched
× UserMessage > transforms image paths in user message 99ms
→ Snapshot `UserMessage > transforms image paths in user message 1` mismatched
[?2004h[?2004h[?2004h ❯ src/ui/components/shared/HalfLinePaddedBox.test.tsx (4 tests | 2 failed) 835ms
× > renders standard background and blocks when not iTerm2 412ms
→ Snapshot ` > renders standard background and blocks when not iTerm2 1` mismatched
× > renders iTerm2-specific blocks when iTerm2 is detected 237ms
→ Snapshot ` > renders iTerm2-specific blocks when iTerm2 is detected 1` mismatched
✓ > renders nothing when useBackgroundColor is false 39ms
✓ > renders nothing when screen reader is enabled 146ms
[?2004h[?2004h[?2004h ❯ src/ui/components/ModelQuotaDisplay.test.tsx (3 tests | 1 failed) 965ms
× > renders quota information when buckets are provided 595ms
→ Snapshot ` > renders quota information when buckets are provided 1` mismatched
✓ > renders nothing when no buckets are provided 111ms
✓ > filters models based on modelsToShow prop 156ms
[?2004h[?2004h ❯ src/ui/utils/CodeColorizer.test.tsx (3 tests | 1 failed) 1206ms
✓ colorizeCode > renders empty lines correctly when useAlternateBuffer is true 644ms
× colorizeCode > does not let colors from ansi escape codes leak into colorized code 553ms
→ Snapshot `colorizeCode > does not let colors from ansi escape codes leak into colorized code 2` mismatched
✓ colorizeCode > returns an array of lines when returnLines is true 7ms
❯ src/utils/cleanup.test.ts (17 tests | 2 failed) 231ms
✓ cleanup > should run a registered synchronous function 7ms
✓ cleanup > should run a registered asynchronous function 1ms
✓ cleanup > should run multiple registered functions 1ms
✓ cleanup > should run cleanupFunctions BEFORE draining stdin and BEFORE runSyncCleanup 109ms
✓ cleanup > should continue running cleanup functions even if one throws an error 3ms
✓ cleanup > sync cleanup > should run registered sync functions 0ms
✓ cleanup > sync cleanup > should continue running sync cleanup functions even if one throws 1ms
✓ cleanup > cleanupCheckpoints > should remove checkpoints directory 2ms
✓ cleanup > cleanupCheckpoints > should ignore errors during checkpoint removal 1ms
✓ signal and TTY handling > setupSignalHandlers > should register handlers for SIGHUP, SIGTERM, and SIGINT 1ms
× signal and TTY handling > setupSignalHandlers > should gracefully shutdown when SIGHUP is received 12ms
→ expected 0 to be greater than 0
× signal and TTY handling > setupSignalHandlers > should register SIGTERM handler that can trigger shutdown 4ms
→ expected 0 to be greater than 0
✓ signal and TTY handling > setupTtyCheck > should return a cleanup function 14ms
✓ signal and TTY handling > setupTtyCheck > should not exit when both stdin and stdout are TTY 16ms
✓ signal and TTY handling > setupTtyCheck > should exit when both stdin and stdout are not TTY 28ms
✓ signal and TTY handling > setupTtyCheck > should not check when SANDBOX env is set 27ms
✓ signal and TTY handling > setupTtyCheck > cleanup function should stop the interval 1ms
Cancelling...
❯ src/nonInteractiveCli.test.ts (45 tests | 1 failed) 1851ms
✓ runNonInteractive > should process input and write text output 69ms
✓ runNonInteractive > should register activity logger when GEMINI_CLI_ACTIVITY_LOG_TARGET is set 15ms
✓ runNonInteractive > should not register activity logger when GEMINI_CLI_ACTIVITY_LOG_TARGET is not set 45ms
✓ runNonInteractive > should handle a single tool call and respond 15ms
✓ runNonInteractive > should write a single newline between sequential text outputs from the model 24ms
✓ runNonInteractive > should handle error during tool execution and should send error back to the model 179ms
✓ runNonInteractive > should exit with error if sendMessageStream throws initially 5ms
✓ runNonInteractive > should not exit if a tool is not found, and should send error back to model 7ms
✓ runNonInteractive > should exit when max session turns are exceeded 5ms
✓ runNonInteractive > should preprocess @include commands before sending to the model 74ms
✓ runNonInteractive > should process input and write JSON output with stats 15ms
✓ runNonInteractive > should write JSON output with stats for tool-only commands (no text response) 20ms
✓ runNonInteractive > should write JSON output with stats for empty response commands 8ms
✓ runNonInteractive > should handle errors in JSON format 12ms
✓ runNonInteractive > should handle FatalInputError with custom exit code in JSON format 102ms
✓ runNonInteractive > should execute a slash command that returns a prompt 23ms
✓ runNonInteractive > should handle slash commands 11ms
× runNonInteractive > should handle cancellation (Ctrl+C) 113ms
→ promise resolved "undefined" instead of rejecting
✓ runNonInteractive > should throw FatalInputError if a command requires confirmation 75ms
✓ runNonInteractive > should treat an unknown slash command as a regular prompt 22ms
✓ runNonInteractive > should throw for unhandled command result types 38ms
✓ runNonInteractive > should pass arguments to the slash command action 25ms
✓ runNonInteractive > should instantiate CommandService with correct loaders for slash commands 44ms
✓ runNonInteractive > should allow a normally-excluded tool when --allowed-tools is set 8ms
✓ runNonInteractive > CoreEvents Integration > subscribes to UserFeedback and drains backlog on start 23ms
✓ runNonInteractive > CoreEvents Integration > unsubscribes from UserFeedback on finish 127ms
✓ runNonInteractive > CoreEvents Integration > logs to process.stderr when UserFeedback event is received 14ms
✓ runNonInteractive > CoreEvents Integration > logs optional error object to process.stderr in debug mode 10ms
✓ runNonInteractive > should emit appropriate events for streaming JSON output 9ms
✓ runNonInteractive > should handle EPIPE error gracefully 117ms
✓ runNonInteractive > should resume chat when resumedSessionData is provided 6ms
✓ runNonInteractive > should emit appropriate error event in streaming JSON mode: 'loop detected' 34ms
✓ runNonInteractive > should emit appropriate error event in streaming JSON mode: 'max session turns' 9ms
✓ runNonInteractive > should log error when tool recording fails 10ms
✓ runNonInteractive > should stop agent execution immediately when a tool call returns STOP_EXECUTION error 70ms
✓ runNonInteractive > should write JSON output when a tool call returns STOP_EXECUTION error 17ms
✓ runNonInteractive > should emit result event when a tool call returns STOP_EXECUTION error in streaming JSON mode 48ms
✓ runNonInteractive > Agent Execution Events > should handle AgentExecutionStopped event 57ms
✓ runNonInteractive > Agent Execution Events > should handle AgentExecutionBlocked event 24ms
✓ runNonInteractive > Output Sanitization > should sanitize ANSI output by default 10ms
✓ runNonInteractive > Output Sanitization > should allow ANSI output when rawOutput is true 83ms
✓ runNonInteractive > Output Sanitization > should allow ANSI output when only acceptRawOutputRisk is true 21ms
✓ runNonInteractive > Output Sanitization > should warn when rawOutput is true and acceptRisk is false 87ms
✓ runNonInteractive > Output Sanitization > should not warn when rawOutput is true and acceptRisk is true 11ms
✓ runNonInteractive > Output Sanitization > should report cancelled tool calls as success in stream-json mode (legacy parity) 110ms
[?2004h[?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/hooks/useSlashCompletion.test.ts (28 tests) 10931ms
✓ useSlashCompletion > Top-Level Commands > should suggest all top-level commands for the root slash 1121ms
✓ useSlashCompletion > Top-Level Commands > should show the same selectable auto/checkpoint menu for /chat and /resume 2174ms
✓ useSlashCompletion > Top-Level Commands > should not provide suggestions for a fully typed command that has no sub-commands or argument completion 1055ms
✓ useSlashCompletion > Top-Level Commands > should not suggest hidden commands 1055ms
✓ useSlashCompletion > Sub-Commands > should suggest sub-commands for a parent command 1057ms
✓ useSlashCompletion > Sub-Commands > should suggest all sub-commands when the query ends with the parent command and a space 1070ms
✓ useSlashCompletion > Command Kind Information > should include commandKind for MCP commands in suggestions 1065ms
✓ useSlashCompletion > Command Kind Information > should include commandKind for sub-commands 1142ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h]0;◇ Ready (cli) ]0;◇ Ready (cli) [?2004h[?2004h[?2004h[?2004h[?2004h]0;◇ Ready (cli) Error: The --prompt-interactive flag cannot be used when input is piped from stdin.
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h]0;Gemini CLI (root) [?7l[?7h]0;Gemini CLI (root) [?7l[?7h]0;Gemini CLI (root) [?7l[?7h]0;Gemini CLI (root) [?2004h[?7l[?7h]0;Gemini CLI (root) [?7l[?7h]0;Gemini CLI (root) [?7l[?7h[?2004h[?7h[?2004h[?2004h[?2004h[?2004h ✓ src/gemini.test.tsx (38 tests | 1 skipped) 15571ms
✓ gemini.tsx main function kitty protocol > should call setRawMode and detectCapabilities when isInteractive is true 8631ms
✓ gemini.tsx main function kitty protocol > should handle session selector error 1075ms
✓ gemini.tsx main function exit codes > should exit with 42 for session resume failure 3228ms
✓ gemini.tsx main function exit codes > should validate and refresh auth in non-interactive mode when no auth type is selected but env var is present 577ms
✓ project hooks loading based on trust > should load project hooks when workspace is trusted 540ms
✓ project hooks loading based on trust > should NOT load project hooks when workspace is not trusted 573ms
[?2004h1 MCP server is not allowlisted by your administrator. To enable it, please request an update to the settings at: https://goo.gle/manage-gemini-cli[?2004h1 MCP server is not allowlisted by your administrator. To enable it, please request an update to the settings at: https://goo.gle/manage-gemini-cli[?2004h2 MCP servers are not allowlisted by your administrator. To enable them, please request an update to the settings at: https://goo.gle/manage-gemini-cli[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/hooks/vim.test.tsx (144 tests) 20938ms
✓ useVim hook > Mode switching > should start in INSERT mode 372ms
✓ useVim hook > Command repeat system > should repeat D command from current position 414ms
✓ useVim hook > Character find motions (f, F, t, T, ;, ,) > ;: should repeat last f forward find 431ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > df{char}: executes delete-to-char, not a dangling operator 474ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > undefined{char}: calls 'vimDeleteToCharForward' (till=false, insert=false) 443ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > undefined{char}: calls 'vimDeleteToCharForward' (till=true, insert=false) 719ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > undefined{char}: calls 'vimDeleteToCharBackward' (till=false, insert=false) 451ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > undefined{char}: calls 'vimDeleteToCharBackward' (till=true, insert=false) 463ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > undefined{char}: calls 'vimDeleteToCharForward' (till=false, insert=true) 365ms
✓ useVim hook > Operator + find motions (df, dt, dF, dT, cf, ct, cF, cT) > undefined{char}: calls 'vimDeleteToCharBackward' (till=false, insert=true) 314ms
✓ useVim hook > Yank and paste (y/p/P) > should handle Y (yank to end of line, equivalent to y$) 321ms
✓ useVim hook > Yank and paste (y/p/P) > should handle yw (yank word forward) 469ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/shared/text-buffer.test.ts (225 tests) 12440ms
✓ useTextBuffer > Initialization > should initialize with multi-byte unicode characters and correct cursor offset 352ms
✓ useTextBuffer > Input Sanitization > should sanitize large text (>5000 chars) and strip unsafe characters 866ms
✓ useTextBuffer > Input Sanitization > should sanitize large ANSI text (>5000 chars) and strip escape codes 2669ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/AppContainer.test.tsx (107 tests) 27240ms
✓ AppContainer State Management > Basic Rendering > renders without crashing with minimal props 389ms
✓ AppContainer State Management > State Initialization > handles debug mode state 565ms
✓ AppContainer State Management > Error Handling > handles config methods that might throw 619ms
✓ AppContainer State Management > Session Resumption > renders without resumed session data 306ms
✓ AppContainer State Management > Session Resumption > initializes chat recording service when config has it 1152ms
✓ AppContainer State Management > Session Recording Integration > provides chat recording service configuration 931ms
✓ AppContainer State Management > Session Recording Integration > handles session recording when messages are added 422ms
✓ AppContainer State Management > Session Resume Flow > accepts resumed session data 418ms
✓ AppContainer State Management > Session Resume Flow > does not attempt resume when client is not initialized 623ms
✓ AppContainer State Management > Token Counting from Session Stats > tracks token counts from session messages 394ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should quit on second press 358ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should reset press count after a timeout 438ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+D > should quit on second press if buffer is empty 346ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+D > should NOT quit if buffer is not empty 400ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+Z > should call handleSuspend 311ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > Focus Handling (Tab / Shift+Tab) > should auto-unfocus when activePtyId becomes null 331ms
✓ AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > Background Shell Toggling (CTRL+B) > should show and focus background shell on Ctrl+B if hidden 301ms
✓ AppContainer State Management > Shortcuts Help Visibility > dismisses shortcuts help when streaming starts 376ms
✓ AppContainer State Management > Copy Mode (F9) > 'Alternate Buffer Mode' > should toggle mouse off when F9 is pressed 353ms
✓ AppContainer State Management > Copy Mode (F9) > 'Alternate Buffer Mode' > should toggle mouse back on when F9 is pressed again 660ms
✓ AppContainer State Management > Copy Mode (F9) > 'Alternate Buffer Mode' > should exit copy mode on non-scroll key press 527ms
✓ AppContainer State Management > Copy Mode (F9) > 'Alternate Buffer Mode' > should not exit copy mode on PageDown and should pass it through 616ms
✓ AppContainer State Management > Copy Mode (F9) > 'Alternate Buffer Mode' > should not exit copy mode on Shift+Down and should pass it through 307ms
✓ AppContainer State Management > Model Dialog Integration > should provide model dialog actions in the UIActionsContext 347ms
✓ AppContainer State Management > Overflow Hint Handling > toggles Ctrl+O multiple times and verifies the hint disappears exactly after the last toggle 357ms
✓ AppContainer State Management > Permission Handling > shows permission dialog when checkPermissions returns paths 328ms
✓ AppContainer State Management > Plan Mode Availability > should NOT allow plan mode when streaming 328ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/shared/ScrollableList.test.tsx (7 tests) 8329ms
✓ ScrollableList Demo Behavior > should scroll to bottom when new items are added and stop when scrolled up 4647ms
✓ ScrollableList Demo Behavior > should display sticky header when scrolled past the item 557ms
✓ ScrollableList Demo Behavior > Keyboard Navigation > should handle scroll keys correctly 2243ms
✓ ScrollableList Demo Behavior > regression: remove last item and add 2 items when scrolled to bottom 362ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/config.test.ts (217 tests | 1 skipped) 47078ms
✓ parseArguments > worktree > should parse --worktree flag when provided with a name 324ms
✓ loadCliConfig > Proxy configuration > should leave proxy to empty by default 999ms
✓ loadCliConfig > Proxy configuration > should set proxy to http://localhost:7890 according to environment variable [HTTPS_PROXY] 368ms
✓ loadCliConfig > Proxy configuration > should set proxy to http://localhost:7890 according to environment variable [HTTP_PROXY] 392ms
✓ Hierarchical Memory Loading (config.ts) - Placeholder Suite > should pass extension context file paths to loadServerHierarchicalMemory 322ms
✓ mergeExcludeTools > should return an empty array when no excludeTools are specified and it is interactive 303ms
✓ mergeExcludeTools > should not modify the original settings object 316ms
✓ Approval mode tool exclusion logic > should exclude only ask_user in non-interactive mode with yolo approval mode 303ms
✓ Approval mode tool exclusion logic > should not exclude interactive tools in interactive mode regardless of approval mode 1708ms
✓ Approval mode tool exclusion logic > should throw an error if YOLO mode is attempted when disableYoloMode is true 303ms
✓ Approval mode tool exclusion logic > should throw an error for invalid approval mode values in loadCliConfig 382ms
✓ loadCliConfig with allowed-mcp-server-names > should allow all MCP servers if the flag is not provided 398ms
✓ loadCliConfig with allowed-mcp-server-names > should allow multiple specified MCP servers 333ms
✓ loadCliConfig with allowed-mcp-server-names > should override allowMCPServers with excludeMCPServers if overlapping 328ms
✓ loadCliConfig with admin.mcp.config > should clear command, args, env, and cwd for present servers 315ms
✓ loadCliConfig with admin.mcp.config > should merge local fields and prefer admin tool filters 350ms
✓ loadCliConfig with admin.mcp.config > should use local tool filters when admin does not define them 452ms
✓ loadCliConfig model selection > selects a model from settings.json if provided 377ms
✓ loadCliConfig context management > should be false by default when generalistProfile / context management is not set in settings 319ms
✓ screenReader configuration > should use screenReader value from settings if CLI flag is not present (settings false) 301ms
✓ screenReader configuration > should prioritize --screen-reader CLI flag (true) over settings (false) 362ms
✓ screenReader configuration > should be false by default when no flag or setting is present 348ms
✓ loadCliConfig tool exclusions > should exclude ask_user in interactive mode when --acp is provided 302ms
✓ loadCliConfig interactive > should be interactive if isTTY and no prompt 307ms
✓ loadCliConfig interactive > should handle multiple positional words correctly 386ms
✓ loadCliConfig interactive > should handle multiple positional words with flags 371ms
✓ loadCliConfig interactive > should handle extensions flag with positional arguments correctly 473ms
✓ loadCliConfig interactive > should be interactive if no positional prompt words are provided with flags 564ms
✓ loadCliConfig approval mode > should set YOLO approval mode when -y flag is used 501ms
✓ loadCliConfig approval mode > should set DEFAULT approval mode when --approval-mode=default 323ms
✓ loadCliConfig approval mode > should fall back to --yolo behavior when --approval-mode is not set 379ms
✓ loadCliConfig approval mode > should ignore "yolo" in settings.tools.approvalMode and fall back to DEFAULT 306ms
✓ loadCliConfig approval mode > should throw error when --approval-mode=plan is used but plan is disabled 486ms
✓ loadCliConfig approval mode > should allow plan approval mode by default when --approval-mode=plan is used 326ms
✓ loadCliConfig approval mode > when folder is NOT trusted > should override --approval-mode=auto_edit to DEFAULT 346ms
✓ loadCliConfig approval mode > Persistent approvalMode setting > should use approvalMode from settings when no CLI flags are set 302ms
✓ loadCliConfig approval mode > Persistent approvalMode setting > should prioritize --approval-mode flag over settings 348ms
✓ loadCliConfig approval mode > Persistent approvalMode setting > should prioritize --yolo flag over settings 319ms
✓ loadCliConfig gemmaModelRouter > should have gemmaModelRouter disabled by default 301ms
✓ loadCliConfig gemmaModelRouter > should load gemmaModelRouter settings from merged settings 307ms
✓ loadCliConfig fileFiltering > should pass 'respectGitIgnore' from settings to config when false 367ms
✓ Output format > should default to TEXT 330ms
✓ Output format > should use the format from settings 371ms
✓ Telemetry configuration via environment variables > should throw when GEMINI_TELEMETRY_TARGET is invalid 496ms
✓ Telemetry configuration via environment variables > should prioritize GEMINI_TELEMETRY_OTLP_ENDPOINT over settings and default env var 398ms
✓ Telemetry configuration via environment variables > should prioritize GEMINI_TELEMETRY_LOG_PROMPTS over settings 348ms
✓ Telemetry configuration via environment variables > should use settings value when GEMINI_TELEMETRY_TARGET is not set 317ms
✓ loadCliConfig mcpEnabled > should disable MCP when mcpEnabled is false 408ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/hooks/useGeminiStream.test.tsx (79 tests) 10779ms
✓ useGeminiStream > should not submit tool responses if not all tool calls are completed 395ms
✓ useGeminiStream > Slash Command Handling > should stop processing and not call Gemini when a command is handled without a tool call 345ms
✓ useGeminiStream > Thought Reset > should reset thought to null when starting a new prompt 363ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useSelectionList.test.tsx (51 tests) 5094ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?1006l[?1002l[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?1006l[?1002l[?2004h[?2004h[?1006l[?1002l[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?1006l[?1002l[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/test-utils/AppRig.test.tsx (2 tests) 7530ms
✓ AppRig > should handle deterministic tool turns with breakpoints 4174ms
✓ AppRig > should render the app and handle a simple message 3353ms
[?2004h ✓ src/ui/components/SkillInboxDialog.test.tsx (11 tests) 6428ms
✓ SkillInboxDialog > disables the project destination when the workspace is untrusted 1397ms
✓ SkillInboxDialog > shows inline feedback when moving a skill throws 455ms
✓ SkillInboxDialog > shows inline feedback when reloading skills fails after a move 364ms
✓ SkillInboxDialog > patch support > shows patches alongside skills with section headers 382ms
✓ SkillInboxDialog > patch support > disables Apply for workspace patches in an untrusted workspace 482ms
✓ SkillInboxDialog > patch support > uses canonical project-scope checks before enabling Apply 980ms
✓ SkillInboxDialog > patch support > dismisses a patch when Dismiss is selected 1309ms
✓ SkillInboxDialog > patch support > renders multi-section patches without duplicate React keys 345ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useExecutionLifecycle.test.tsx (36 tests) 3082ms
✓ useExecutionLifecycle > Background Shell Management > should hide background shell when waiting for confirmation and restore after delay 377ms
✓ useExecutionLifecycle > Background Shell Management > should auto-hide background shell when foreground shell starts and restore when it ends 393ms
[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/InputPrompt.test.tsx (196 tests | 24 failed) 71978ms
✓ InputPrompt > should call shellHistory.getPreviousCommand on up arrow in shell mode 423ms
✓ InputPrompt > should call shellHistory.getNextCommand on down arrow in shell mode 259ms
✓ InputPrompt > should set the buffer text when a shell history command is retrieved 277ms
✓ InputPrompt > should call shellHistory.addCommandToHistory on submit in shell mode 132ms
✓ InputPrompt > should submit command in shell mode when Enter pressed with suggestions visible but no arrow navigation 104ms
✓ InputPrompt > should accept suggestion in shell mode when Enter pressed after arrow navigation 203ms
✓ InputPrompt > should NOT call shell history methods when not in shell mode 117ms
✓ InputPrompt > arrow key navigation > should move to start of line on Up arrow if on first line but not at start 180ms
✓ InputPrompt > arrow key navigation > should navigate history on Up arrow if on first line and at start 115ms
✓ InputPrompt > arrow key navigation > should move to end of line on Down arrow if on last line but not at end 178ms
✓ InputPrompt > arrow key navigation > should navigate history on Down arrow if on last line and at end 167ms
✓ InputPrompt > should call completion.navigateUp for both up arrow and Ctrl+P when suggestions are showing 132ms
✓ InputPrompt > should call completion.navigateDown for both down arrow and Ctrl+N when suggestions are showing 447ms
✓ InputPrompt > should NOT call completion navigation when suggestions are not showing 244ms
✓ InputPrompt > should clear the buffer and reset completion on Ctrl+C 160ms
✓ InputPrompt > clipboard image paste > should handle Ctrl+V when clipboard has an image 129ms
✓ InputPrompt > clipboard image paste > should not insert anything when clipboard has no image 136ms
✓ InputPrompt > clipboard image paste > should handle image save failure gracefully 240ms
✓ InputPrompt > clipboard image paste > should insert image path at cursor position with proper spacing 176ms
✓ InputPrompt > clipboard image paste > should handle errors during clipboard operations 151ms
✓ InputPrompt > clipboard text paste > should insert text from clipboard on Ctrl+V 234ms
✓ InputPrompt > clipboard text paste > should use OSC 52 when useOSC52Paste setting is enabled 255ms
✓ InputPrompt > 'should complete a partial parent comm…' 220ms
✓ InputPrompt > 'should append a sub-command when pare…' 261ms
✓ InputPrompt > 'should handle the backspace edge case…' 228ms
✓ InputPrompt > 'should complete a partial argument fo…' 218ms
✓ InputPrompt > should autocomplete on Enter when suggestions are active, without submitting 163ms
✓ InputPrompt > should complete a command based on its altNames 278ms
✓ InputPrompt > queues a message when Tab is pressed during generation 170ms
✓ InputPrompt > shows an error when attempting to queue a slash command 195ms
✓ InputPrompt > shows an error when attempting to queue a shell command 98ms
✓ InputPrompt > should not submit on Enter when the buffer is empty or only contains whitespace 256ms
✓ InputPrompt > should submit directly on Enter when isPerfectMatch is true 119ms
✓ InputPrompt > should execute perfect match on Enter even if suggestions are showing, if at first suggestion 158ms
✓ InputPrompt > should autocomplete and NOT execute on Enter if a DIFFERENT suggestion is selected even if perfect match 173ms
✓ InputPrompt > should submit directly on Enter when a complete leaf command is typed 175ms
✓ InputPrompt > should submit on Enter when an @-path is a perfect match 227ms
✓ InputPrompt > should NOT submit on Shift+Enter even if an @-path is a perfect match 137ms
✓ InputPrompt > should auto-execute commands with autoExecute: true on Enter 142ms
✓ InputPrompt > should autocomplete commands with autoExecute: false on Enter 157ms
✓ InputPrompt > should autocomplete on Tab, even for executable commands 190ms
✓ InputPrompt > should NOT autocomplete on Shift+Tab 481ms
✓ InputPrompt > should autocomplete custom commands from .toml files on Enter 223ms
✓ InputPrompt > should auto-execute argument completion when command has autoExecute: true 508ms
✓ InputPrompt > should autocomplete argument completion when command has autoExecute: false 368ms
✓ InputPrompt > should autocomplete command name even with autoExecute: true if command has completion function 453ms
✓ InputPrompt > should autocomplete an @-path on Enter without submitting 677ms
✓ InputPrompt > should add a newline on enter when the line ends with a backslash 100ms
✓ InputPrompt > should clear the buffer on Ctrl+C if it has text 100ms
✓ InputPrompt > should render correctly in plan mode 374ms
✓ InputPrompt > should NOT clear the buffer on Ctrl+C if it is empty 559ms
✓ InputPrompt > should call setBannerVisible(false) when clear screen key is pressed 268ms
✓ InputPrompt > Background Color Styles > should render with background color by default 217ms
✓ InputPrompt > Background Color Styles > should render with safe grey background but NO side borders in 8-bit mode when background is 'black' 619ms
✓ InputPrompt > Background Color Styles > should render with safe grey background but NO side borders in 8-bit mode when background is '#000000' 195ms
✓ InputPrompt > Background Color Styles > should render with safe grey background but NO side borders in 8-bit mode when background is '#000' 179ms
✓ InputPrompt > Background Color Styles > should render with safe grey background but NO side borders in 8-bit mode when background is 'white' 196ms
✓ InputPrompt > Background Color Styles > should render with safe grey background but NO side borders in 8-bit mode when background is '#ffffff' 254ms
✓ InputPrompt > Background Color Styles > should render with safe grey background but NO side borders in 8-bit mode when background is '#fff' 272ms
✓ InputPrompt > Background Color Styles > should NOT render with background color but SHOULD render horizontal lines when color depth is < 24 and background is NOT black 140ms
✓ InputPrompt > Background Color Styles > should handle 4-bit color mode (16 colors) as low color depth 324ms
✓ InputPrompt > Background Color Styles > should render horizontal lines (but NO background) in 8-bit mode when background is blue 242ms
✓ InputPrompt > Background Color Styles > should render with plain borders when useBackgroundColor is false 202ms
✓ InputPrompt > cursor-based completion trigger > 'should trigger completion when cursor…' 227ms
✓ InputPrompt > cursor-based completion trigger > 'should trigger completion when cursor…' 157ms
✓ InputPrompt > cursor-based completion trigger > 'should NOT trigger completion when cu…' 223ms
✓ InputPrompt > cursor-based completion trigger > 'should NOT trigger completion when cu…' 151ms
✓ InputPrompt > cursor-based completion trigger > 'should NOT trigger completion when cu…' 290ms
✓ InputPrompt > cursor-based completion trigger > 'should handle multiline text correctly' 316ms
✓ InputPrompt > cursor-based completion trigger > 'should handle Unicode characters (emo…' 211ms
✓ InputPrompt > cursor-based completion trigger > 'should handle Unicode characters with…' 163ms
✓ InputPrompt > cursor-based completion trigger > 'should handle escaped spaces in paths…' 219ms
✓ InputPrompt > cursor-based completion trigger > 'should NOT trigger completion after u…' 162ms
✓ InputPrompt > cursor-based completion trigger > 'should handle multiple escaped spaces…' 217ms
✓ InputPrompt > cursor-based completion trigger > 'should handle escaped spaces in slash…' 148ms
✓ InputPrompt > cursor-based completion trigger > 'should handle Unicode characters with…' 217ms
✓ InputPrompt > vim mode > 'should not call buffer.handleInput wh…' 180ms
✓ InputPrompt > vim mode > 'should call buffer.handleInput when v…' 264ms
✓ InputPrompt > vim mode > 'should call handleInput when vim mode…' 281ms
✓ InputPrompt > unfocused paste > should handle bracketed paste when not focused 250ms
✓ InputPrompt > unfocused paste > should ignore regular keypresses when not focused 254ms
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'mid-word' 502ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'mid-word' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the beginning of the line' 376ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the beginning of the line' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of the line' 639ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of the line' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a highlighted token' 721ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a highlighted token' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'for multi-byte unicode characters' 260ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'for multi-byte unicode characters' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'after multi-byte unicode characters' 454ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'after multi-byte unicode characters' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a line with unicode cha…' 368ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a line with unicode cha…' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a short line with unico…' 428ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a short line with unico…' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on an empty line' 395ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on an empty line' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a space between words' 389ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a space between words' 2` mismatched
× InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'in the middle of a line' in a multiline block 403ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'in the middle of a line' in a multiline block 2` mismatched
× InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the beginning of a line' in a multiline block 380ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the beginning of a line' in a multiline block 2` mismatched
× InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the end of a line' in a multiline block 468ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the end of a line' in a multiline block 2` mismatched
× InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor on a blank line in a multiline block 433ms
→ Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor on a blank line in a multiline block 2` mismatched
✓ InputPrompt > scrolling large inputs > should correctly render scrolling down and up for large inputs 4838ms
× InputPrompt > multiline rendering > should correctly render multiline input including blank lines 510ms
→ Snapshot `InputPrompt > multiline rendering > should correctly render multiline input including blank lines 2` mismatched
✓ InputPrompt > multiline paste > should handle multiline paste 'with \n newlines' 332ms
✓ InputPrompt > multiline paste > should handle multiline paste 'with extra slashes before \n newlines' 502ms
✓ InputPrompt > multiline paste > should handle multiline paste 'with \r\n newlines' 506ms
✓ InputPrompt > large paste placeholder > should handle large clipboard paste (lines > 5) by calling buffer.insert 364ms
✓ InputPrompt > large paste placeholder > should handle large clipboard paste (chars > 500) by calling buffer.insert 913ms
✓ InputPrompt > large paste placeholder > should handle normal clipboard paste by calling buffer.insert 798ms
✓ InputPrompt > large paste placeholder > should replace placeholder with actual content on submit 230ms
✓ InputPrompt > paste auto-submission protection > should prevent auto-submission immediately after an unsafe paste 445ms
✓ InputPrompt > paste auto-submission protection > should prevent perfect match auto-submission immediately after an unsafe paste 402ms
✓ InputPrompt > paste auto-submission protection > should allow submission after unsafe paste protection timeout 708ms
✓ InputPrompt > paste auto-submission protection > should allow immediate submission for a trusted paste ('kitty') 621ms
✓ InputPrompt > paste auto-submission protection > should not interfere with normal Enter key submission when no recent paste 494ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should clear buffer on Ctrl-C 332ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should submit /rewind on double ESC when buffer is empty 351ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should clear the buffer on esc esc if it has text 271ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should reset escape state on any non-ESC key 268ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should handle ESC in shell mode by disabling shell mode 187ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should not propagate ESC to global cancellation handler when shell mode is active (responding) 271ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should allow ESC to reach global cancellation handler when responding and no overlay is active 303ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should handle ESC when completion suggestions are showing 333ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should not call onEscapePromptChange when not provided 328ms
✓ InputPrompt > enhanced input UX - keyboard shortcuts > should not interfere with existing keyboard shortcuts 433ms
✓ InputPrompt > reverse search > invokes reverse search on Ctrl+R 333ms
✓ InputPrompt > reverse search > resets reverse search state on Escape ('standard') 409ms
✓ InputPrompt > reverse search > resets reverse search state on Escape ('kitty') 417ms
✓ InputPrompt > reverse search > completes the highlighted entry on Tab and exits reverse-search 655ms
✓ InputPrompt > reverse search > should NOT autocomplete on Shift+Tab in reverse search 433ms
✓ InputPrompt > reverse search > submits the highlighted entry on Enter and exits reverse-search 532ms
✓ InputPrompt > reverse search > should restore text and cursor position after reverse search" 443ms
✓ InputPrompt > Ctrl+E keyboard shortcut > should move cursor to end of current line in multiline input 317ms
✓ InputPrompt > Ctrl+E keyboard shortcut > should move cursor to end of current line for single line input 251ms
✓ InputPrompt > command search (Ctrl+R when not in shell) > enters command search on Ctrl+R and shows suggestions 279ms
× InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows 518ms
→ Snapshot `InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows > command-search-render-expanded-match 1` mismatched
× InputPrompt > command search (Ctrl+R when not in shell) > renders match window and expanded view (snapshots) 260ms
→ Snapshot `InputPrompt > command search (Ctrl+R when not in shell) > renders match window and expanded view (snapshots) > command-search-render-collapsed-match 1` mismatched
✓ InputPrompt > command search (Ctrl+R when not in shell) > does not show expand/collapse indicator for short suggestions 285ms
✓ InputPrompt > command search (Ctrl+R when not in shell) > ensures Ctrl+R search results are prioritized newest-to-oldest by reversing userMessages 392ms
✓ InputPrompt > Tab clean UI toggle > 'should toggle clean UI details on dou…' 398ms
✓ InputPrompt > Tab clean UI toggle > 'should accept ghost text and NOT togg…' 262ms
✓ InputPrompt > Tab clean UI toggle > 'should NOT toggle clean UI details on…' 471ms
✓ InputPrompt > Tab clean UI toggle > should NOT accept ghost text on Shift+Tab 487ms
✓ InputPrompt > Tab clean UI toggle > should not reveal clean UI details on Shift+Tab when hidden 273ms
✓ InputPrompt > Tab clean UI toggle > should toggle clean UI details on double-Tab by default 421ms
✓ InputPrompt > mouse interaction > should move cursor on mouse click - 'first line, first char' 566ms
✓ InputPrompt > mouse interaction > should move cursor on mouse click - 'first line, middle char' 751ms
✓ InputPrompt > mouse interaction > should move cursor on mouse click - 'second line, first char' 513ms
✓ InputPrompt > mouse interaction > should move cursor on mouse click - 'second line, end char' 298ms
✓ InputPrompt > mouse interaction > should unfocus embedded shell on click 388ms
✓ InputPrompt > mouse interaction > should toggle paste expansion on double-click 470ms
✓ InputPrompt > mouse interaction > should collapse expanded paste on double-click after the end of the line 699ms
✓ InputPrompt > mouse interaction > should move cursor on mouse click with plain borders 403ms
✓ InputPrompt > queued message editing > should load all queued messages when up arrow is pressed with empty input 352ms
✓ InputPrompt > queued message editing > should not load queued messages when input is not empty 335ms
✓ InputPrompt > queued message editing > should handle undefined messages from popAllMessages 324ms
✓ InputPrompt > queued message editing > should work with NAVIGATION_UP key as well 359ms
✓ InputPrompt > queued message editing > should handle single queued message 488ms
✓ InputPrompt > queued message editing > should only check for queued messages when buffer text is trimmed empty 456ms
✓ InputPrompt > queued message editing > should not call popAllMessages if it is not provided 318ms
✓ InputPrompt > queued message editing > should navigate input history on fresh start when no queued messages exist 452ms
× InputPrompt > snapshots > should render correctly in shell mode 324ms
→ Snapshot `InputPrompt > snapshots > should render correctly in shell mode 1` mismatched
× InputPrompt > snapshots > should render correctly when accepting edits 243ms
→ Snapshot `InputPrompt > snapshots > should render correctly when accepting edits 1` mismatched
× InputPrompt > snapshots > should render correctly in yolo mode 278ms
→ Snapshot `InputPrompt > snapshots > should render correctly in yolo mode 1` mismatched
× InputPrompt > snapshots > should not show inverted cursor when shell is focused 235ms
→ Snapshot `InputPrompt > snapshots > should not show inverted cursor when shell is focused 1` mismatched
✓ InputPrompt > should still allow input when shell is not focused 208ms
✓ InputPrompt > command queuing while streaming > 'should prevent slash commands' 260ms
✓ InputPrompt > command queuing while streaming > 'should allow concurrent-safe slash co…' 332ms
✓ InputPrompt > command queuing while streaming > 'should prevent shell commands' 694ms
✓ InputPrompt > command queuing while streaming > 'should allow regular messages' 361ms
✓ InputPrompt > IME Cursor Support > should report correct cursor position for simple ASCII text 746ms
✓ InputPrompt > IME Cursor Support > should report correct cursor position for text with double-width characters 570ms
✓ InputPrompt > IME Cursor Support > should report correct cursor position for a line full of "😀" emojis 458ms
✓ InputPrompt > IME Cursor Support > should report correct cursor position for mixed emojis and multi-line input 514ms
✓ InputPrompt > IME Cursor Support > should report correct cursor position and focus for multi-line input 885ms
✓ InputPrompt > IME Cursor Support > should report cursor position 0 when input is empty and placeholder is shown 458ms
× InputPrompt > image path transformation snapshots > should snapshot collapsed image path 258ms
→ Snapshot `InputPrompt > image path transformation snapshots > should snapshot collapsed image path 1` mismatched
× InputPrompt > image path transformation snapshots > should snapshot expanded image path when cursor is on it 428ms
→ Snapshot `InputPrompt > image path transformation snapshots > should snapshot expanded image path when cursor is on it 1` mismatched
✓ InputPrompt > Ctrl+O paste expansion > Ctrl+O triggers paste expansion via keybinding 542ms
✓ InputPrompt > Ctrl+O paste expansion > 'hint appears on large paste via Ctrl+V' 613ms
✓ InputPrompt > Ctrl+O paste expansion > 'hint does not appear for small pastes…' 388ms
✓ InputPrompt > Ctrl+O paste expansion > 'hint appears on large terminal paste …' 236ms
✓ InputPrompt > tryTogglePasteExpansion > 'returns false when no pasted content …' 281ms
✓ InputPrompt > tryTogglePasteExpansion > 'expands placeholder under cursor' 147ms
✓ InputPrompt > tryTogglePasteExpansion > 'collapses expanded paste when cursor …' 111ms
✓ InputPrompt > tryTogglePasteExpansion > 'expands placeholder when cursor is im…' 194ms
✓ InputPrompt > tryTogglePasteExpansion > 'shows hint when cursor is not on plac…' 241ms
✓ InputPrompt > History Navigation and Completion Suppression > should move cursor to 'start' on 'Up arrow' (older history) 515ms
✓ InputPrompt > History Navigation and Completion Suppression > should move cursor to 'start' on 'Ctrl+P' (older history) 217ms
✓ InputPrompt > History Navigation and Completion Suppression > should move cursor to 'end' on 'Down arrow' (newer history) 481ms
✓ InputPrompt > History Navigation and Completion Suppression > should move cursor to 'end' on 'Ctrl+N' (newer history) 893ms
✓ InputPrompt > History Navigation and Completion Suppression > should suppress completion after history navigation 1199ms
× InputPrompt > History Navigation and Completion Suppression > should not render suggestions during history navigation 549ms
→ Snapshot `InputPrompt > History Navigation and Completion Suppression > should not render suggestions during history navigation 1` mismatched
✓ InputPrompt > History Navigation and Completion Suppression > should continue to suppress completion after manual cursor movement 389ms
✓ InputPrompt > History Navigation and Completion Suppression > should re-enable completion after typing 308ms
✓ InputPrompt > shortcuts help visibility > opens shortcuts help with ? on empty prompt even when showShortcutsHint is false 258ms
✓ InputPrompt > shortcuts help visibility > should close shortcuts help when a 'terminal paste event occurs' 692ms
✓ InputPrompt > shortcuts help visibility > should close shortcuts help when a 'Ctrl+V (PASTE_CLIPBOARD) is pressed' 329ms
✓ InputPrompt > shortcuts help visibility > should close shortcuts help when a 'mouse right-click paste occurs' 388ms
✓ InputPrompt > shortcuts help visibility > should close shortcuts help when a 'Ctrl+R hotkey is pressed' 255ms
✓ InputPrompt > shortcuts help visibility > should close shortcuts help when a 'Ctrl+G hotkey is pressed' 257ms
✓ InputPrompt > shortcuts help visibility > should close shortcuts help when a 'F12 hotkey is pressed' 362ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/hooks/useAtCompletion.test.ts (18 tests) 3093ms
✓ useAtCompletion > File Search Logic > should perform a recursive search for an empty pattern 412ms
✓ useAtCompletion > File Search Logic > should correctly filter the recursive list based on a pattern 387ms
✓ useAtCompletion > UI State and Loading Behavior > should NOT show a loading indicator for subsequent searches that complete under 200ms 306ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/KeypressContext.test.tsx (146 tests) 9980ms
✓ KeypressContext > Numpad support > should recognize numpad sequence "'\u001bOt'" as '4' 351ms
✓ src/config/extension-manager.test.ts (15 tests) 2810ms
✓ ExtensionManager > symlink handling > preserves symlinks in installMetadata.source when linking 403ms
✓ ExtensionManager > symlink handling > enforces allowedExtensions using the real path 305ms
✓ ExtensionManager > Extension Renaming > should carry over enablement status when renaming 358ms
✓ ExtensionManager > extension integrity > should store integrity data during installation 362ms
✓ ExtensionManager > extension integrity > should store integrity data during first update 309ms
[?2004h[?2004h[?2004h[?2004h[?1006l[?1002l[?2004h ✓ src/config/extension-manager-hydration.test.ts (4 tests) 2289ms
✓ ExtensionManager hydration > should hydrate skill body with extension settings 1100ms
✓ ExtensionManager hydration > should hydrate agent system prompt with extension settings 401ms
✓ ExtensionManager hydration > should hydrate hooks with extension settings 349ms
✓ ExtensionManager hydration > should pick up new settings after restartExtension 436ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?1006l[?1002l[?2004h ✓ src/ui/components/messages/DiffRenderer.test.tsx (26 tests) 3865ms
✓ > with useAlternateBuffer = true > should call colorizeCode with correct language for new file with known extension 394ms
✓ > with useAlternateBuffer = true > should call colorizeCode with null language for new file with unknown extension 751ms
[?2004h[?2004h[?2004h ✓ src/integration-tests/modelSteering.test.tsx (1 test) 3943ms
✓ Model Steering Integration > should steer the model using a hint during a tool turn 3941ms
[?2004h[?2004h[?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/utils/MarkdownDisplay.test.tsx (30 tests) 3492ms
✓ > renders nothing for empty text 335ms
✓ > with 'Windows' line endings > renders a fenced code block without a language 600ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/hooks/useCommandCompletion.test.tsx (34 tests) 3179ms
[?2004h[?2004h[?2004h ✓ src/ui/hooks/slashCommandProcessor.test.tsx (33 tests) 2599ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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) 7315ms
✓ extension tests > installExtension > should ignore consent flow if not required 387ms
✓ extension tests > installExtension > installing from github > should fallback to git clone if github release download fails and user consents 374ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/FolderTrustDialog.test.tsx (18 tests) 3328ms
✓ FolderTrustDialog > should render the dialog with title and description 396ms
✓ FolderTrustDialog > should truncate discovery results when they exceed maxDiscoveryHeight 322ms
✓ src/ui/auth/AuthDialog.test.tsx (24 tests) 3082ms
✓ AuthDialog > Environment Variable Effects on Auth Options > correctly shows/hides COMPUTE_ADC options 'in Cloud Shell' 699ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/AgentConfigDialog.test.tsx (12 tests) 4053ms
✓ AgentConfigDialog > rendering > should render the dialog with title 856ms
✓ AgentConfigDialog > keyboard navigation > should close dialog on Escape 325ms
✓ AgentConfigDialog > keyboard navigation > should navigate down with arrow key 448ms
✓ AgentConfigDialog > boolean toggle > should toggle enabled field on Enter 431ms
✓ AgentConfigDialog > default values > should show values from agent definition as defaults 303ms
✓ AgentConfigDialog > default values > should show experimental agents as disabled by default 408ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/StatsDisplay.test.tsx (15 tests) 1895ms
✓ src/ui/hooks/useQuotaAndFallback.test.ts (28 tests) 1753ms
[?2004h[?2004h[?2004h[?2004h[?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/config.integration.test.ts (14 tests) 4014ms
✓ Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=auto_edi…' 3601ms
[?2004h ✓ src/ui/App.test.tsx (12 tests) 2828ms
✓ App > should render main content and composer when not quitting 515ms
✓ App > Snapshots > renders default layout correctly 413ms
✓ src/ui/components/messages/ShellToolMessage.test.tsx (16 tests) 3143ms
✓ > interactive shell focus > clicks inside the shell area sets focus for SHELL_COMMAND_NAME 577ms
✓ > Height Constraints > uses full availableTerminalHeight when focused in alternate buffer mode 570ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useTabbedNavigation.test.ts (23 tests) 1261ms
[?2004h ✓ src/ui/components/shared/performance.test.ts (3 tests) 5046ms
✓ text-buffer performance > should handle pasting large amounts of text efficiently 488ms
✓ text-buffer performance > should handle character-by-character insertion in a large buffer efficiently 4551ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/RewindViewer.test.tsx (15 tests) 2578ms
✓ RewindViewer > Screen Reader Accessibility > renders the rewind viewer with conversation items 325ms
✓ RewindViewer > Navigation > handles cyclic navigation 328ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/utils/sessionCleanup.test.ts (63 tests) 1894ms
✓ src/ui/components/views/ExtensionDetails.test.tsx (12 tests) 1767ms
✓ src/ui/components/Composer.test.tsx (58 tests) 5841ms
✓ Composer > Footer Display Settings > renders Footer by default when hideFooter is false 356ms
✓ Composer > Snapshots > matches snapshot in minimal UI mode 313ms
✓ src/config/extension-manager-skills.test.ts (3 tests) 1358ms
✓ ExtensionManager skills validation > should emit a warning during install if skills directory is not empty but no skills are loaded 647ms
✓ ExtensionManager skills validation > should emit a warning during load if skills directory is not empty but no skills are loaded 319ms
✓ ExtensionManager skills validation > should succeed if skills are correctly loaded 390ms
✓ src/ui/components/shared/TextInput.test.tsx (15 tests) 1134ms
[?2004h ✓ src/ui/components/ShellInputPrompt.test.tsx (12 tests) 997ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/DialogManager.test.tsx (19 tests) 1421ms
✓ src/ui/hooks/useApprovalModeIndicator.test.ts (21 tests) 1268ms
✓ src/config/extension-manager-agents.test.ts (2 tests) 1234ms
✓ ExtensionManager agents loading > should load agents from an extension 864ms
✓ ExtensionManager agents loading > should log errors but continue if an agent fails to load 368ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ❯ src/ui/components/SettingsDialog.test.tsx (59 tests | 9 failed) 147834ms
✓ SettingsDialog > Initial Rendering > should render the settings dialog with default state 1015ms
✓ SettingsDialog > Initial Rendering > should accept availableTerminalHeight prop without errors 733ms
× SettingsDialog > Initial Rendering > should render settings list with visual indicators 17571ms
→ Snapshot `SettingsDialog > Initial Rendering > should render settings list with visual indicators 2` mismatched
✓ SettingsDialog > Initial Rendering > should use almost full height of the window but no more when the window height is 25 rows 508ms
✓ SettingsDialog > Setting Descriptions > should render descriptions for settings that have them 564ms
✓ SettingsDialog > Settings Navigation > should navigate with 'arrow keys' 1267ms
✓ SettingsDialog > Settings Navigation > should navigate with 'emacs keys (Ctrl+P/N)' 878ms
✓ SettingsDialog > Settings Navigation > should allow j and k characters to be typed in search without triggering navigation 1109ms
✓ SettingsDialog > Settings Navigation > wraps around when at the top of the list 447ms
✓ SettingsDialog > Settings Toggling > should toggle setting with Enter key 220ms
✓ SettingsDialog > Settings Toggling > enum values > 'toggles to next value' 331ms
✓ SettingsDialog > Settings Toggling > enum values > 'loops back to first value when at end' 360ms
✓ SettingsDialog > Settings Toggling > should handle vim mode setting specially 480ms
✓ SettingsDialog > Scope Selection > should switch between scopes 568ms
✓ SettingsDialog > Scope Selection > should reset to settings focus when scope is selected 632ms
✓ SettingsDialog > Restart Prompt > should show restart prompt for restart-required settings 476ms
✓ SettingsDialog > Restart Prompt > should handle restart request when r is pressed 1021ms
✓ SettingsDialog > Escape Key Behavior > should call onSelect with undefined when Escape is pressed 368ms
✓ SettingsDialog > Settings Persistence > should persist settings across scope changes 364ms
✓ SettingsDialog > Settings Persistence > should show different values for different scopes 399ms
✓ SettingsDialog > Complex State Management > should track modified settings correctly 748ms
✓ SettingsDialog > Complex State Management > should handle scrolling when there are many settings 201ms
✓ SettingsDialog > Specific Settings Behavior > should show correct display values for settings with different states 291ms
✓ SettingsDialog > Specific Settings Behavior > should handle immediate settings save for non-restart-required settings 375ms
✓ SettingsDialog > Specific Settings Behavior > should show restart prompt for restart-required settings 623ms
✓ SettingsDialog > Specific Settings Behavior > should clear restart prompt when switching scopes 839ms
✓ SettingsDialog > Settings Display Values > should show correct values for inherited settings 649ms
✓ SettingsDialog > Settings Display Values > should show override indicator for overridden settings 420ms
✓ SettingsDialog > Race Condition Regression Tests > should 'not reset sibling settings when toggl…' 617ms
✓ SettingsDialog > Race Condition Regression Tests > should 'preserve multiple sibling settings in…' 490ms
✓ SettingsDialog > Keyboard Shortcuts Edge Cases > should handle rapid key presses gracefully 652ms
✓ SettingsDialog > Keyboard Shortcuts Edge Cases > should handle 'Ctrl+C' to reset current setting to default 446ms
✓ SettingsDialog > Keyboard Shortcuts Edge Cases > should handle 'Ctrl+L' to reset current setting to default 752ms
✓ SettingsDialog > Keyboard Shortcuts Edge Cases > should handle navigation when only one setting exists 529ms
✓ SettingsDialog > Keyboard Shortcuts Edge Cases > should properly handle Tab navigation between sections 409ms
✓ SettingsDialog > Error Recovery > should handle malformed settings gracefully 257ms
✓ SettingsDialog > Error Recovery > should handle missing setting definitions gracefully 351ms
✓ SettingsDialog > Complex User Interactions > should handle complete user workflow: navigate, toggle, change scope, exit 261ms
✓ SettingsDialog > Complex User Interactions > should allow changing multiple settings without losing pending changes 1156ms
✓ SettingsDialog > Complex User Interactions > should maintain state consistency during complex interactions 1311ms
✓ SettingsDialog > Complex User Interactions > should handle restart workflow correctly 271ms
✓ SettingsDialog > Restart and Search Conflict Regression > should prioritize restart request over search text box when showRestartPrompt is true 589ms
✓ SettingsDialog > Restart and Search Conflict Regression > should hide search box when showRestartPrompt is true 456ms
✓ SettingsDialog > String Settings Editing > should allow editing and committing a string setting 888ms
✓ SettingsDialog > Array Settings Editing > should parse comma-separated input as string arrays 1109ms
✓ SettingsDialog > Array Settings Editing > should parse JSON array input for allowedExtensions 3286ms
✓ SettingsDialog > Search Functionality > should display text entered in search 803ms
✓ SettingsDialog > Search Functionality > should show search query and filter settings as user types 1037ms
✓ SettingsDialog > Search Functionality > should exit search settings when Escape is pressed 1106ms
✓ SettingsDialog > Search Functionality > should handle backspace to modify search query 770ms
✓ SettingsDialog > Search Functionality > should display nothing when search yields no results 460ms
× SettingsDialog > Snapshot Tests > should render 'default state' correctly 16234ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'default state' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'various boolean settings enabled' correctly 11385ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'various boolean settings enabled' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'mixed boolean and number settings' correctly 11664ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'mixed boolean and number settings' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'focused on scope selector' correctly 11794ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'focused on scope selector' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'accessibility settings enabled' correctly 11791ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'accessibility settings enabled' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'file filtering settings configured' correctly 10762ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'file filtering settings configured' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'tools and security settings' correctly 12202ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'tools and security settings' correctly 2` mismatched
× SettingsDialog > Snapshot Tests > should render 'all boolean settings disabled' correctly 10536ms
→ Snapshot `SettingsDialog > Snapshot Tests > should render 'all boolean settings disabled' correctly 2` mismatched
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/AppHeader.test.tsx (11 tests) 2180ms
✓ > should render the banner with default text 358ms
✓ > should NOT render Tips when ui.hideTips is true 371ms
✓ src/ui/components/OverageMenuDialog.test.tsx (11 tests) 2415ms
✓ OverageMenuDialog > rendering > should match snapshot with fallback available 621ms
✓ OverageMenuDialog > rendering > should match snapshot without fallback 313ms
✓ OverageMenuDialog > onChoice handling > should call onChoice with use_fallback when selected 463ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/messages/CompressionMessage.test.tsx (17 tests) 1743ms
✓ > pending state > renders pending message when compression is in progress 476ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/contexts/MouseContext.test.tsx (18 tests) 1609ms
✓ MouseContext > should subscribe and unsubscribe a handler 355ms
✓ src/ui/components/ModelStatsDisplay.test.tsx (11 tests) 2372ms
✓ > should render "no API calls" message when there are no active models 435ms
✓ > should filter out invalid role names 412ms
[?2004h[?2004h[?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/messages/ToolMessage.test.tsx (25 tests) 5586ms
✓ > renders basic tool information 591ms
✓ > JSON rendering > pretty printing 10kb JSON completes in <50ms 1250ms
✓ > renders emphasis correctly 384ms
✓ > Truncation > applies truncation for Kind.Agent when availableTerminalHeight is provided 451ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/EmptyWalletDialog.test.tsx (11 tests) 3951ms
✓ EmptyWalletDialog > rendering > should match snapshot with fallback available 658ms
✓ EmptyWalletDialog > rendering > should display the model name and usage limit message 328ms
✓ EmptyWalletDialog > rendering > should display reset time when provided 476ms
✓ EmptyWalletDialog > onChoice handling > should call onGetCredits and onChoice when get_credits is selected 325ms
✓ EmptyWalletDialog > onChoice handling > should call onChoice with use_fallback when selected 602ms
✓ EmptyWalletDialog > onChoice handling > should call onChoice with stop when selected 383ms
✓ src/ui/components/shared/Scrollable.test.tsx (9 tests) 3690ms
✓ > renders children 905ms
✓ > renders multiple children 752ms
✓ > keypress handling > 'scrolls down when overflow exists and…' 830ms
✓ > keypress handling > 'scrolls up when overflow exists and n…' 360ms
✓ src/ui/components/messages/Todo.test.tsx (14 tests) 3105ms
✓ (showFullTodos: true) > renders null when no todos are in the history 726ms
✓ (showFullTodos: true) > renders when todos exist but none are in progress 547ms
✓ (showFullTodos: true) > renders when todos exist and one is in progress 321ms
✓ (showFullTodos: true) > renders a todo list with long descriptions that wrap when full view is on 391ms
✓ src/ui/components/AnsiOutput.test.tsx (16 tests) 2001ms
✓ > renders a large AnsiOutput object without crashing 359ms
✓ src/ui/hooks/atCommandProcessor.test.ts (59 tests) 2000ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/shared/TabHeader.test.tsx (13 tests) 2501ms
✓ TabHeader > rendering > renders all tab headers 515ms
✓ TabHeader > status icons > shows special icon for special tabs 316ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/auth/BannedAccountDialog.test.tsx (10 tests) 1450ms
✓ BannedAccountDialog > renders the suspension message from accountSuspensionInfo 604ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/EditorSettingsDialog.test.tsx (5 tests) 1335ms
✓ EditorSettingsDialog > renders correctly 541ms
[?2004h[?2004h[?2004h ✓ src/ui/privacy/CloudFreePrivacyNotice.test.tsx (9 tests) 1396ms
✓ CloudFreePrivacyNotice > renders correctly in 'loading state' 320ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/PermissionsModifyTrustDialog.test.tsx (7 tests) 1210ms
✓ PermissionsModifyTrustDialog > should render the main dialog with current trust level 365ms
[?2004h ✓ src/ui/components/SessionSummaryDisplay.test.tsx (6 tests) 1413ms
✓ > renders the summary display with a title 515ms
WARNING: Workspace policies changed or are new. Automatically accepting and loading them.
✓ src/config/workspace-policy-cli.test.ts (8 tests) 1857ms
✓ Workspace-Level Policy CLI Integration > should pass workspacePoliciesDir to createPolicyEngineConfig when folder is trusted 416ms
✓ Workspace-Level Policy CLI Integration > should NOT pass workspacePoliciesDir to createPolicyEngineConfig when folder is NOT trusted 506ms
✓ src/ui/hooks/useInputHistoryStore.test.ts (14 tests) 1057ms
✓ src/ui/hooks/useInputHistory.test.ts (14 tests) 1011ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ToastDisplay.test.tsx (19 tests) 1094ms
[?2004h[?2004h ✓ src/ui/components/views/ExtensionRegistryView.test.tsx (6 tests) 1688ms
✓ ExtensionRegistryView > should render extensions 396ms
✓ ExtensionRegistryView > should call onSelect when extension is selected and Enter is pressed in details 382ms
✓ src/ui/hooks/useSessionResume.test.ts (14 tests) 1559ms
✓ src/services/BuiltinCommandLoader.test.ts (17 tests) 1555ms
✓ BuiltinCommandLoader profile > should not include profile command when isDevelopment is false 792ms
✓ BuiltinCommandLoader profile > should include profile command when isDevelopment is true 719ms
✓ src/ui/components/ProQuotaDialog.test.tsx (10 tests) 1638ms
✓ ProQuotaDialog > for flash model failures > should render "Keep trying" and "Stop" options 461ms
✓ ProQuotaDialog > for non-flash model failures > when it is a terminal quota error > should render switch, upgrade, and stop options for LOGIN_WITH_GOOGLE 369ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/LogoutConfirmationDialog.test.tsx (5 tests) 908ms
✓ LogoutConfirmationDialog > should render the dialog with title, description, and hint 432ms
[?2004h ✓ src/ui/hooks/usePermissionsModifyTrust.test.ts (13 tests) 822ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/IdeTrustChangeDialog.test.tsx (6 tests) 1009ms
✓ IdeTrustChangeDialog > renders the correct message for CONNECTION_CHANGE 385ms
✓ src/ui/hooks/useHistoryManager.test.ts (14 tests) 805ms
✓ src/ui/hooks/useShellHistory.test.ts (7 tests) 562ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/auth/ApiAuthDialog.test.tsx (6 tests) 2347ms
✓ ApiAuthDialog > renders correctly 1668ms
✓ src/config/settings.test.ts (101 tests) 26555ms
✓ LoadedSettings Isolation and Serializability > setValue Serializability > should handle circular references (structuredClone supports them, but deepMerge may not) 25798ms
✓ src/ui/components/views/ExtensionsList.test.tsx (11 tests) 917ms
✓ src/ui/components/ChecklistItem.test.tsx (7 tests) 648ms
✓ src/ui/components/ToolStatsDisplay.test.tsx (5 tests) 876ms
✓ src/ui/hooks/useToolScheduler.test.ts (13 tests) 850ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/utils/devtoolsService.test.ts (19 tests) 517ms
✓ src/ui/components/messages/ToolMessageRawMarkdown.test.tsx (6 tests) 2061ms
✓ - Raw Markdown Display Snapshots > renders with renderMarkdown=true, useAlternateBuffer=false '(default, regular buffer)' 729ms
✓ - Raw Markdown Display Snapshots > renders with renderMarkdown=false, useAlternateBuffer=false '(raw markdown, regular buffer)' 549ms
[?2004h ✓ src/ui/components/messages/SubagentProgressDisplay.test.tsx (9 tests) 1390ms
✓ > renders correctly with description in args 505ms
[?2004h[?2004h ✓ src/ui/components/messages/SubagentGroupDisplay.test.tsx (3 tests) 867ms
✓ > expands when availableTerminalHeight is undefined 381ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?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/NewAgentsNotification.test.tsx (3 tests) 1614ms
✓ NewAgentsNotification > renders agent list 943ms
✓ NewAgentsNotification > truncates list if more than 5 agents 323ms
✓ NewAgentsNotification > shows processing state when an option is selected 345ms
[?2004h ✓ src/ui/components/AboutBox.test.tsx (6 tests) 2575ms
✓ AboutBox > renders with required props 1007ms
✓ AboutBox > renders optional prop gcpProject 467ms
✓ AboutBox > renders Auth Method with email when userEmail is provided 332ms
✓ AboutBox > renders Auth Method correctly when not oauth 437ms
✓ src/ui/hooks/useKeypress.test.tsx (22 tests) 2855ms
✓ useKeypress > should correctly identify alt+enter (meta key) 360ms
✓ useKeypress > in 'PASTE_WORKAROUND false' > should handle back to back pastes 307ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ShowMoreLines.test.tsx (8 tests) 1559ms
✓ ShowMoreLines > renders nothing when: overflow=Set{}, streaming=idle, constrain=true 446ms
✓ src/ui/components/messages/ToolGroupMessage.compact.test.tsx (4 tests) 1708ms
✓ ToolGroupMessage Compact Rendering > renders consecutive compact tools without empty lines between them 793ms
✓ ToolGroupMessage Compact Rendering > does not add an extra empty line between a compact tool and a standard tool 551ms
✓ src/ui/components/ConsentPrompt.test.tsx (5 tests) 922ms
✓ ConsentPrompt > renders a string prompt with MarkdownDisplay 501ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/messages/GeminiMessage.test.tsx (5 tests) 1054ms
✓ - Raw Markdown Display Snapshots > renders with renderMarkdown=true '(default)' 527ms
✓ src/ui/components/views/SkillsList.test.tsx (6 tests) 1451ms
✓ SkillsList Component > should render enabled and disabled skills separately 455ms
✓ SkillsList Component > should not render descriptions when showDescriptions is false 411ms
✓ src/ui/hooks/useEditorSettings.test.tsx (10 tests) 1130ms
[?2004h ✓ src/ui/components/shared/MaxSizedBox.test.tsx (13 tests) 2349ms
✓ > does not leak content after hidden indicator with bottom overflow 398ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/GradientRegression.test.tsx (5 tests) 1249ms
✓ Gradient Crash Regression Tests > should not crash when theme.ui.gradient is empty 618ms
✓ src/ui/hooks/useExtensionUpdates.test.tsx (4 tests) 902ms
✓ useExtensionUpdates > should check for updates and log a message if an update is available 355ms
[?2004h ✓ src/ui/hooks/useBackgroundTaskManager.test.tsx (6 tests) 703ms
[?2004h[?2004h[?2004h ✓ src/ui/components/RewindConfirmation.test.tsx (4 tests) 871ms
✓ RewindConfirmation > renders correctly with stats 400ms
✓ src/config/trustedFolders.test.ts (32 tests) 1063ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/PolicyUpdateDialog.test.tsx (4 tests) 1682ms
✓ PolicyUpdateDialog > renders correctly and matches snapshot 641ms
✓ PolicyUpdateDialog > handles ACCEPT correctly 506ms
✓ src/ui/components/Header.test.tsx (7 tests) 1952ms
✓ > renders the long logo on a wide terminal 650ms
✓ > renders with a gradient when theme.ui.gradient has two or more colors 388ms
✓ src/config/policy-engine.integration.test.ts (19 tests) 1381ms
✓ src/ui/components/StatusDisplay.test.tsx (7 tests) 1219ms
✓ StatusDisplay > renders nothing by default if context summary is hidden via props 319ms
✓ StatusDisplay > renders ContextSummaryDisplay by default 320ms
✓ StatusDisplay > renders system md indicator if env var is set 372ms
✓ src/ui/auth/AuthInProgress.test.tsx (5 tests) 1031ms
✓ AuthInProgress > renders initial state with spinner 725ms
[?2004h[?2004h[?2004h ✓ src/ui/components/messages/ToolResultDisplayOverflow.test.tsx (3 tests) 968ms
✓ ToolResultDisplay Overflow > shows the head of the content when overflowDirection is bottom (string) 607ms
✓ src/ui/hooks/useGitBranchName.test.tsx (7 tests) 693ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useFocus.test.tsx (7 tests) 729ms
✓ src/ui/contexts/ToolActionsContext.test.tsx (8 tests) 607ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/shared/SectionHeader.test.tsx (4 tests) 778ms
✓ > 'renders correctly with a standard tit…' 526ms
[?2004h[?2004h ✓ src/ui/components/messages/ToolOverflowConsistencyChecks.test.tsx (2 tests) 1116ms
✓ ToolOverflowConsistencyChecks: ToolGroupMessage and ToolResultDisplay synchronization > should ensure ToolGroupMessage correctly reports overflow to the global state in Alternate Buffer (ASB) mode 792ms
✓ ToolOverflowConsistencyChecks: ToolGroupMessage and ToolResultDisplay synchronization > should ensure ToolGroupMessage correctly reports overflow in Standard mode 322ms
✓ src/config/extensions/extensionSettings.test.ts (33 tests) 1222ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ShortcutsHelp.test.tsx (5 tests) 1150ms
✓ ShortcutsHelp > renders correctly in 'wide' mode on 'mac' 459ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/AdminSettingsChangedDialog.test.tsx (4 tests) 659ms
✓ AdminSettingsChangedDialog > renders correctly 336ms
[?2004h ✓ src/ui/components/BubblingRegression.test.tsx (1 test) 751ms
✓ Key Bubbling Regression > does not navigate when pressing "j" or "k" in a focused text input 749ms
✓ src/ui/hooks/useSettingsNavigation.test.ts (8 tests) 670ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/messages/TopicMessage.test.tsx (6 tests) 1009ms
✓ > renders title and intent by default (collapsed) 388ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useAgentStream.test.tsx (6 tests) 537ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/DetailedMessagesDisplay.test.tsx (5 tests) 1055ms
✓ DetailedMessagesDisplay > renders messages correctly 392ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/messages/ToolMessageFocusHint.test.tsx (5 tests) 1409ms
✓ Focus Hint > 'ToolMessage' > shows focus hint after delay even with NO output 415ms
✓ Focus Hint > 'ShellToolMessage' > shows focus hint after delay even with NO output 412ms
✓ src/ui/hooks/useBatchedScroll.test.ts (7 tests) 469ms
(node:78886) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 11 abort listeners added to [AbortSignal]. MaxListeners is 10. Use events.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
✓ src/services/FileCommandLoader.test.ts (44 tests) 941ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ContextUsageDisplay.test.tsx (5 tests) 647ms
✓ ContextUsageDisplay > renders correct percentage used 315ms
[?2004h[?2004h[?2004h ✓ src/ui/components/StatusRow.test.tsx (3 tests) 728ms
✓ > renders status and tip correctly when they both fit 426ms
✓ src/ui/components/ApprovalModeIndicator.test.tsx (6 tests) 671ms
✓ src/ui/hooks/useMessageQueue.test.tsx (15 tests) 861ms
✓ src/ui/hooks/useIncludeDirsTrust.test.tsx (6 tests) 505ms
✓ src/ui/hooks/usePhraseCycler.test.tsx (11 tests) 1283ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ConfigInitDisplay.test.tsx (4 tests) 643ms
✓ ConfigInitDisplay > renders initial state 371ms
✓ src/ui/components/messages/ToolShared.test.tsx (5 tests) 676ms
✓ McpProgressIndicator > renders determinate progress at 50% 460ms
✓ src/ui/hooks/useFlickerDetector.test.ts (6 tests) 522ms
✓ src/ui/components/Checklist.test.tsx (5 tests) 668ms
✓ src/ui/contexts/SettingsContext.test.tsx (5 tests) 496ms
✓ src/utils/skillUtils.test.ts (11 tests) 676ms
✓ src/config/extension-manager-themes.spec.ts (2 tests) 606ms
✓ ExtensionManager theme loading > should revert to default theme when extension is stopped 485ms
✓ src/ui/components/shared/SlicingMaxSizedBox.test.tsx (5 tests) 755ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/messages/ToolGroupMessageRegression.test.tsx (4 tests) 1162ms
✓ ToolGroupMessage Regression Tests > Agent Case: suppresses the bottom border box for ongoing agents (no vertical ticks) 581ms
✓ src/ui/components/QueuedMessageDisplay.test.tsx (5 tests) 684ms
✓ src/ui/components/Help.test.tsx (3 tests) 1043ms
✓ Help Component > should not render hidden commands 613ms
✓ src/ui/privacy/PrivacyNotice.test.tsx (4 tests) 860ms
✓ PrivacyNotice > renders 'GeminiPrivacyNotice' when authType is 'gemini-api-key' 369ms
✓ src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.tsx (5 tests) 375ms
✓ src/ui/hooks/useIdeTrustListener.test.tsx (5 tests) 486ms
✓ src/utils/sandbox.test.ts (16 tests) 351ms
[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/ProgressBar.test.tsx (4 tests) 806ms
✓ > renders 0% correctly 470ms
[?2004h ✓ src/ui/components/ColorsDisplay.test.tsx (1 test) 859ms
✓ ColorsDisplay > renders correctly 858ms
✓ src/ui/components/GeminiRespondingSpinner.test.tsx (5 tests) 321ms
[?2004h[?2004h ✓ src/ui/components/shared/DescriptiveRadioButtonSelect.test.tsx (2 tests) 871ms
✓ DescriptiveRadioButtonSelect > should render correctly with default props 651ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/components/shared/RadioButtonSelect.test.tsx (5 tests) 433ms
TEST: calling prompt
TEST: waiting for streamStarted
TEST: asyncStream started
TEST: waiting for read
TEST: streamStarted
TEST: cancelled
TEST: stream closed
TEST: read returned done=true
TEST: releasing lock
TEST: result received {"stopReason":"cancelled"}
✓ src/acp/acpClient.test.ts (60 tests) 1369ms
✓ src/ui/components/QuotaDisplay.test.tsx (9 tests) 383ms
✓ src/ui/hooks/useMcpStatus.test.tsx (4 tests) 342ms
✓ src/ui/hooks/useRewind.test.ts (5 tests) 473ms
[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useReverseSearchCompletion.test.tsx (10 tests) 1180ms
✓ src/ui/contexts/SessionContext.test.tsx (5 tests) 394ms
✓ src/ui/components/ExitWarning.test.tsx (4 tests) 559ms
[?2004h[?2004h[?2004h ✓ src/ui/components/views/ToolsList.test.tsx (3 tests) 675ms
✓ > renders correctly with descriptions 471ms
✓ src/ui/hooks/useBanner.test.ts (5 tests) 371ms
✓ src/ui/utils/clipboardUtils.test.ts (44 tests) 506ms
✓ src/ui/hooks/useInlineEditBuffer.test.ts (9 tests) 556ms
[?2004h[?2004h[?2004h ✓ src/ui/hooks/useTips.test.ts (3 tests) 385ms
✓ src/ui/components/shared/vim-buffer-actions.test.ts (196 tests) 361ms
✓ src/ui/privacy/GeminiPrivacyNotice.test.tsx (2 tests) 728ms
✓ GeminiPrivacyNotice > renders correctly 604ms
✓ src/ui/components/ConsoleSummaryDisplay.test.tsx (3 tests) 795ms
✓ ConsoleSummaryDisplay > renders correct message for 1 errors 366ms
✓ src/ui/auth/LoginWithGoogleRestartDialog.test.tsx (4 tests) 790ms
✓ LoginWithGoogleRestartDialog > renders correctly 329ms
✓ src/ui/commands/setupGithubCommand.test.ts (10 tests) 482ms
✓ setupGithubCommand > downloads workflows, updates gitignore, and includes pipefail on non-windows 362ms
✓ src/ui/utils/commandUtils.test.ts (33 tests) 300ms
✓ src/ui/layouts/DefaultAppLayout.test.tsx (3 tests) 585ms
✓ src/ui/privacy/CloudPaidPrivacyNotice.test.tsx (2 tests) 647ms
✓ CloudPaidPrivacyNotice > renders correctly 476ms
✓ src/ui/components/views/ChatList.test.tsx (3 tests) 585ms
✓ > renders correctly with a list of chats 313ms
✓ src/config/settings_validation_warning.test.ts (3 tests) 29ms
[?2004h[?2004h ✓ src/ui/components/LoopDetectionConfirmation.test.tsx (2 tests) 789ms
✓ LoopDetectionConfirmation > renders correctly 485ms
✓ LoopDetectionConfirmation > contains the expected options 302ms
✓ src/ui/contexts/TerminalContext.test.tsx (2 tests) 596ms
✓ TerminalContext > should handle partial chunks 309ms
✓ src/ui/hooks/useLoadingIndicator.test.tsx (11 tests) 843ms
✓ src/utils/sessionCleanup.integration.test.ts (6 tests) 253ms
✓ src/ui/commands/restoreCommand.test.ts (13 tests) 333ms
✓ src/ui/hooks/useAtCompletion_agents.test.ts (2 tests) 385ms
✓ useAtCompletion with Agents > should include agent suggestions 302ms
✓ src/ui/components/SessionBrowser/SessionBrowserStates.test.tsx (3 tests) 376ms
✓ src/ui/hooks/useMouse.test.ts (4 tests) 420ms
✓ src/ui/components/messages/InfoMessage.test.tsx (3 tests) 461ms
✓ InfoMessage > renders with the correct default prefix and text 307ms
(node:78886) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [EventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
✓ src/ui/hooks/useHookDisplayState.test.ts (6 tests) 492ms
✓ useHookDisplayState > should initialize with empty hooks 301ms
✓ src/config/extensions/github.test.ts (34 tests) 223ms
✓ src/ui/contexts/ScrollProvider.test.tsx (12 tests) 803ms
✓ src/ui/hooks/usePrivacySettings.test.tsx (4 tests) 347ms
✓ src/ui/hooks/useMouseClick.test.ts (2 tests) 466ms
✓ src/ui/hooks/vim-passthrough.test.tsx (4 tests) 387ms
✓ src/commands/mcp/list.test.ts (8 tests) 147ms
✓ src/ui/components/MemoryUsageDisplay.test.tsx (2 tests) 588ms
✓ MemoryUsageDisplay > renders memory usage 307ms
✓ src/ui/hooks/useTerminalTheme.test.tsx (9 tests) 536ms
✓ src/ui/components/ContextSummaryDisplay.test.tsx (3 tests) 679ms
✓ > should render on a single line on a wide screen 427ms
✓ src/ui/hooks/useSessionBrowser.test.ts (9 tests) 485ms
✓ src/ui/commands/chatCommand.test.ts (33 tests) 463ms
✓ src/ui/components/messages/WarningMessage.test.tsx (2 tests) 535ms
✓ WarningMessage > renders with the correct prefix and text 433ms
[?2004h[?2004h ✓ src/ui/components/StickyHeader.test.tsx (2 tests) 466ms
✓ StickyHeader > renders children with isFirst=true 351ms
[?2004h[?2004h[?2004h[?2004h[?2004h ✓ src/ui/hooks/useSnowfall.test.tsx (5 tests) 439ms
✓ src/ui/components/ShowMoreLinesLayout.test.tsx (2 tests) 324ms
✓ src/ui/commands/extensionsCommand.test.ts (58 tests) 490ms
✓ src/ui/components/QuittingDisplay.test.tsx (2 tests) 372ms
✓ src/ui/components/Tips.test.tsx (2 tests) 453ms
✓ Tips > 'renders all tips including GEMINI.md …' 337ms
✓ src/ui/hooks/useTurnActivityMonitor.test.ts (4 tests) 413ms
✓ src/utils/sessionUtils.test.ts (27 tests) 310ms
[?2004h[?2004h ✓ src/ui/components/CopyModeWarning.test.tsx (2 tests) 437ms
✓ src/ui/hooks/useModelCommand.test.tsx (3 tests) 228ms
✓ src/ui/hooks/useShellCompletion.test.ts (34 tests) 455ms
✓ src/ui/components/RawMarkdownIndicator.test.tsx (2 tests) 329ms
[?2004h[?2004h ✓ src/ui/components/CliSpinner.test.tsx (2 tests) 523ms
✓ > should increment debugNumAnimatedComponents on mount and decrement on unmount 352ms
✓ src/ui/hooks/useAlternateBuffer.test.ts (5 tests) 374ms
✓ src/ui/components/messages/ErrorMessage.test.tsx (2 tests) 383ms
✓ src/ui/hooks/creditsFlowHandler.test.ts (14 tests) 269ms
✓ src/commands/extensions/validate.test.ts (5 tests) 636ms
✓ src/services/prompt-processors/atFileProcessor.test.ts (11 tests) 251ms
✓ src/ui/hooks/useFolderTrust.test.ts (13 tests) 903ms
✓ src/ui/commands/skillsCommand.test.ts (23 tests) 649ms
✓ src/utils/settingsUtils.test.ts (49 tests) 39ms
✓ src/ui/hooks/useSuspend.test.ts (3 tests) 877ms
✓ useSuspend > cleans terminal state on suspend and restores/repaints on resume in alternate screen mode 652ms
✓ src/commands/mcp/add.test.ts (20 tests) 238ms
✓ src/ui/hooks/useAnimatedScrollbar.test.tsx (7 tests) 776ms
✓ src/commands/mcp/remove.test.ts (6 tests) 360ms
✓ src/commands/skills/install.test.ts (6 tests) 40ms
✓ src/ui/contexts/ScrollProvider.drag.test.tsx (6 tests) 623ms
✓ src/services/prompt-processors/shellProcessor.test.ts (34 tests) 305ms
✓ src/ui/key/keyBindings.test.ts (20 tests) 276ms
✓ src/ui/components/UpdateNotification.test.tsx (1 test) 370ms
✓ UpdateNotification > renders message 368ms
✓ src/ui/hooks/useConsoleMessages.test.tsx (8 tests) 664ms
✓ src/config/sandboxConfig.test.ts (43 tests) 206ms
✓ src/ui/utils/textUtils.test.ts (76 tests) 118ms
✓ src/config/policy.test.ts (10 tests) 553ms
✓ src/ui/components/ThemedGradient.test.tsx (1 test) 322ms
✓ ThemedGradient > renders children 319ms
✓ src/ui/utils/terminalCapabilityManager.test.ts (30 tests) 85ms
✓ src/acp/acpResume.test.ts (2 tests) 403ms
✓ src/ui/components/DebugProfiler.test.tsx (15 tests) 423ms
✓ src/ui/hooks/useTimer.test.tsx (8 tests) 1091ms
✓ src/ui/components/ShellModeIndicator.test.tsx (1 test) 265ms
✓ src/utils/userStartupWarnings.test.ts (9 tests) 97ms
✓ src/ui/hooks/useShellInactivityStatus.test.ts (4 tests) 335ms
✓ src/ui/commands/compressCommand.test.ts (6 tests) 66ms
✓ src/utils/sandboxUtils.test.ts (17 tests) 129ms
✓ src/commands/extensions/enable.test.ts (9 tests) 37ms
✓ src/validateNonInterActiveAuth.test.ts (17 tests) 140ms
✓ src/ui/commands/modelCommand.test.ts (8 tests) 73ms
✓ src/ui/commands/upgradeCommand.test.ts (6 tests) 60ms
✓ src/ui/hooks/shellReducer.test.ts (17 tests) 149ms
✓ src/utils/errors.test.ts (26 tests) 41ms
✓ src/deferred.test.ts (9 tests) 194ms
✓ src/ui/hooks/useLogger.test.tsx (1 test) 296ms
✓ src/ui/commands/hooksCommand.test.ts (33 tests) 477ms
✓ src/ui/commands/toolsCommand.test.ts (9 tests) 84ms
✓ src/utils/toolOutputCleanup.test.ts (10 tests) 297ms
✓ src/utils/commentJson.test.ts (12 tests) 149ms
✓ src/ui/hooks/atCommandProcessor_agents.test.ts (3 tests) 308ms
✓ src/ui/commands/memoryCommand.test.ts (14 tests) 129ms
✓ src/services/McpPromptLoader.test.ts (31 tests) 119ms
✓ src/commands/extensions/configure.test.ts (9 tests) 210ms
✓ src/ui/hooks/useMemoryMonitor.test.tsx (3 tests) 343ms
✓ src/ui/commands/aboutCommand.test.ts (6 tests) 135ms
✓ src/ui/commands/rewindCommand.test.tsx (13 tests) 149ms
✓ src/config/settings_repro.test.ts (1 test) 79ms
✓ src/ui/commands/permissionsCommand.test.ts (7 tests) 51ms
✓ src/config/extension-manager-permissions.test.ts (3 tests) 266ms
✓ src/commands/extensions/new.test.ts (4 tests) 161ms
✓ src/services/SlashCommandResolver.test.ts (14 tests) 168ms
✓ src/commands/extensions/list.test.ts (8 tests) 32ms
✓ src/ui/commands/policiesCommand.test.ts (5 tests) 66ms
✓ src/ui/commands/planCommand.test.ts (7 tests) 73ms
✓ src/commands/extensions/disable.test.ts (12 tests) 166ms
✓ src/commands/extensions/update.test.ts (10 tests) 352ms
✓ src/ui/themes/theme-manager.test.ts (24 tests) 226ms
✓ src/ui/commands/statsCommand.test.ts (4 tests) 58ms
✓ src/config/settingsSchema.test.ts (27 tests) 84ms
✓ src/config/extension-manager-scope.test.ts (3 tests) 196ms
✓ src/utils/gitUtils.test.ts (24 tests) 163ms
✓ src/ui/commands/agentsCommand.test.ts (20 tests) 255ms
✓ src/utils/handleAutoUpdate.test.ts (26 tests) 111ms
✓ src/ui/themes/color-utils.test.ts (40 tests) 53ms
✓ src/gemini_cleanup.test.tsx (2 tests | 1 skipped) 52ms
✓ src/ui/utils/terminalSetup.test.ts (12 tests) 171ms
✓ src/ui/commands/copyCommand.test.ts (11 tests) 88ms
✓ src/config/extensions/extensionEnablement.test.ts (48 tests) 87ms
✓ src/ui/commands/mcpCommand.test.ts (7 tests) 108ms
✓ src/commands/extensions/install.test.ts (14 tests) 207ms
✓ src/ui/commands/directoryCommand.test.tsx (21 tests) 78ms
✓ src/ui/commands/ideCommand.test.ts (8 tests) 89ms
✓ src/utils/skillSettings.test.ts (10 tests) 53ms
✓ src/commands/extensions/uninstall.test.ts (12 tests) 96ms
✓ src/config/extensions/update.test.ts (14 tests) 30ms
✓ src/ui/commands/bugCommand.test.ts (3 tests) 118ms
✓ src/ui/utils/formatters.test.ts (32 tests) 74ms
✓ src/utils/hookSettings.test.ts (8 tests) 20ms
✓ src/test-utils/mockCommandContext.test.ts (3 tests) 20ms
✓ src/ui/key/keyMatchers.test.ts (62 tests) 221ms
✓ src/ui/commands/authCommand.test.ts (9 tests) 179ms
✓ src/config/extensions/storage.test.ts (5 tests) 179ms
✓ src/utils/relaunch.test.ts (8 tests) 32ms
✓ src/commands/extensions/link.test.ts (5 tests) 41ms
✓ src/config/extensionRegistryClient.test.ts (13 tests) 25ms
✓ src/ui/utils/markdownParsingUtils.test.ts (17 tests) 142ms
✓ src/utils/startupWarnings.test.ts (4 tests) 8ms
✓ src/utils/readStdin.test.ts (6 tests) 67ms
✓ src/config/mcp/mcpServerEnablement.test.ts (14 tests) 110ms
✓ src/ui/commands/commandsCommand.test.ts (2 tests) 17ms
✓ src/ui/hooks/shell-completions/gitProvider.test.ts (5 tests) 15ms
✓ src/commands/mcp.test.ts (3 tests) 92ms
✓ src/config/settings-validation.test.ts (25 tests) 60ms
✓ src/services/CommandService.test.ts (5 tests) 32ms
✓ src/ui/key/keybindingUtils.test.ts (38 tests) 20ms
✓ src/ui/utils/ConsolePatcher.test.ts (12 tests) 27ms
✓ src/ui/utils/highlight.test.ts (22 tests) 30ms
✓ src/services/SlashCommandConflictHandler.test.ts (7 tests) 97ms
✓ src/ui/utils/textOutput.test.ts (10 tests) 16ms
✓ src/ui/themes/theme.test.ts (14 tests) 13ms
✓ src/ui/commands/initCommand.test.ts (3 tests) 71ms
✓ src/utils/envVarResolver.test.ts (21 tests) 22ms
✓ src/utils/installationInfo.test.ts (18 tests) 54ms
✓ src/ui/utils/updateCheck.test.ts (10 tests) 90ms
✓ src/ui/utils/rewindFileOps.test.ts (9 tests) 96ms
✓ src/utils/worktreeSetup.test.ts (4 tests) 169ms
✓ src/ui/utils/mouse.test.ts (17 tests) 11ms
✓ src/core/auth.test.ts (6 tests) 79ms
✓ src/acp/fileSystemService.test.ts (10 tests) 32ms
✓ src/commands/skills/link.test.ts (3 tests) 20ms
✓ src/config/extensions/extensionUpdates.test.ts (2 tests) 26ms
✓ src/utils/agentSettings.test.ts (6 tests) 51ms
✓ src/ui/utils/computeStats.test.ts (12 tests) 10ms
✓ src/ui/commands/clearCommand.test.ts (2 tests) 67ms
✓ src/ui/commands/docsCommand.test.ts (3 tests) 110ms
✓ src/ui/hooks/toolMapping.test.ts (22 tests) 27ms
✓ src/commands/skills/list.test.ts (5 tests) 26ms
✓ src/utils/featureToggleUtils.test.ts (7 tests) 15ms
✓ src/ui/commands/quitCommand.test.ts (1 test) 20ms
✓ src/utils/deepMerge.test.ts (17 tests) 35ms
✓ src/commands/skills/uninstall.test.ts (5 tests) 34ms
✓ src/utils/terminalNotifications.test.ts (8 tests) 13ms
✓ src/ui/hooks/shell-completions/npmProvider.test.ts (5 tests) 18ms
✓ src/services/SkillCommandLoader.test.ts (8 tests) 39ms
✓ src/ui/utils/directoryUtils.test.ts (17 tests | 1 skipped) 17ms
✓ src/core/initializer.test.ts (5 tests) 55ms
✓ src/ui/commands/helpCommand.test.ts (2 tests) 71ms
✓ src/services/prompt-processors/injectionParser.test.ts (21 tests) 17ms
✓ src/commands/skills/enable.test.ts (4 tests) 66ms
✓ src/ui/commands/themeCommand.test.ts (2 tests) 13ms
✓ src/ui/commands/settingsCommand.test.ts (2 tests) 14ms
✓ src/utils/sessions.test.ts (17 tests) 70ms
✓ src/utils/persistentState.test.ts (5 tests) 94ms
✓ src/config/extensions/github_fetch.test.ts (8 tests) 12ms
✓ src/ui/commands/corgiCommand.test.ts (2 tests) 17ms
✓ src/ui/commands/privacyCommand.test.ts (2 tests) 14ms
✓ src/utils/commands.test.ts (18 tests) 100ms
✓ src/ui/state/extensions.test.ts (15 tests) 11ms
✓ src/services/prompt-processors/argumentProcessor.test.ts (2 tests) 20ms
✓ src/commands/extensions.test.tsx (3 tests) 65ms
✓ src/ui/commands/editorCommand.test.ts (2 tests) 27ms
✓ src/config/auth.test.ts (8 tests) 9ms
✓ src/config/settingPaths.test.ts (2 tests) 31ms
✓ src/utils/logCleanup.test.ts (4 tests) 44ms
✓ src/config/extensions/variables.test.ts (13 tests) 96ms
✓ src/utils/windowTitle.test.ts (14 tests) 9ms
✓ src/utils/readStdin_safety.test.ts (2 tests) 15ms
✓ src/commands/skills.test.tsx (3 tests) 84ms
✓ src/utils/jsonoutput.test.ts (15 tests) 11ms
✓ src/commands/skills/disable.test.ts (4 tests) 66ms
✓ src/ui/utils/toolLayoutUtils.test.ts (15 tests) 7ms
✓ src/ui/utils/urlSecurityUtils.test.ts (9 tests) 13ms
✓ src/commands/utils.test.ts (2 tests) 32ms
✓ src/utils/dialogScopeUtils.test.ts (4 tests) 19ms
✓ src/ui/components/SessionBrowser/utils.test.ts (9 tests) 9ms
✓ src/ui/utils/pendingAttentionNotification.test.ts (3 tests) 7ms
✓ src/utils/activityLogger.test.ts (6 tests) 6ms
✓ src/core/theme.test.ts (3 tests) 10ms
✓ src/utils/processUtils.test.ts (1 test) 13ms
✓ src/ui/utils/markdownUtilities.test.ts (7 tests) 6ms
✓ src/ui/commands/terminalSetupCommand.test.ts (5 tests) 8ms
✓ src/acp/commandHandler.test.ts (1 test) 6ms
✓ src/ui/commands/resumeCommand.test.ts (3 tests) 21ms
✓ src/ui/commands/tasksCommand.test.ts (3 tests) 18ms
✓ src/acp/acpErrors.test.ts (7 tests) 10ms
✓ src/acp/commands/help.test.ts (1 test) 10ms
✓ src/utils/updateEventEmitter.test.ts (1 test) 7ms
✓ src/ui/utils/displayUtils.test.ts (8 tests) 16ms
✓ src/ui/utils/ui-sizing.test.ts (4 tests) 5ms
✓ src/utils/math.test.ts (7 tests) 6ms
✓ src/ui/utils/input.test.ts (6 tests) 8ms
✓ src/utils/resolvePath.test.ts (7 tests) 7ms
✓ src/utils/hookUtils.test.ts (8 tests) 7ms
✓ src/utils/events.test.ts (2 tests) 6ms
✓ src/utils/agentUtils.test.ts (8 tests) 8ms
✓ src/utils/tierUtils.test.ts (3 tests) 6ms
✓ src/ui/utils/clipboardUtils.windows.test.ts (1 test) 10ms
⎯⎯⎯⎯⎯⎯ Failed Suites 2 ⎯⎯⎯⎯⎯⎯⎯
FAIL src/config/footerItems.test.ts [ src/config/footerItems.test.ts ]
Error: [vitest-worker]: Timeout calling "fetch" with "["/@fs/Users/mattkorwel/dev/gemini-cli/main/packages/core/dist/src/sandbox/utils/sandboxReadWriteUtils.js","ssr"]"
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/167]⎯
FAIL src/commands/hooks/migrate.test.ts [ src/commands/hooks/migrate.test.ts ]
Error: [vitest-worker]: Timeout calling "fetch" with "["/@fs/Users/mattkorwel/dev/gemini-cli/main/packages/core/dist/src/utils/fileDiffUtils.js","ssr"]"
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/167]⎯
⎯⎯⎯⎯⎯⎯ Failed Tests 165 ⎯⎯⎯⎯⎯⎯
FAIL src/nonInteractiveCli.test.ts > runNonInteractive > should handle cancellation (Ctrl+C)
AssertionError: promise resolved "undefined" instead of rejecting
[32m- Expected:[39m
Error {
"message": "rejected promise",
}
[31m+ Received:[39m
undefined
❯ src/nonInteractiveCli.test.ts:1138:28
1136| // Let's just check that the promise rejects with 'Aborted' for no…
1137| // which proves the abortion signal reached the stream.
1138| await expect(runPromise).rejects.toThrow('Aborted');
| ^
1139|
1140| expect(
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/167]⎯
FAIL src/nonInteractiveCliAgentSession.test.ts > runNonInteractive > should handle cancellation (Ctrl+C)
AssertionError: promise resolved "undefined" instead of rejecting
[32m- Expected:[39m
Error {
"message": "rejected promise",
}
[31m+ Received:[39m
undefined
❯ src/nonInteractiveCliAgentSession.test.ts:1246:28
1244| }
1245|
1246| await expect(runPromise).rejects.toThrow('Operation cancelled.');
| ^
1247|
1248| expect(
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/167]⎯
FAIL src/ui/IdeIntegrationNudge.test.tsx > IdeIntegrationNudge > handles Escape key press
AssertionError: expected "spy" to be called with arguments: [ { userSelection: 'no', …(1) } ][90m
Number of calls: [1m0[22m
[39m
❯ src/ui/IdeIntegrationNudge.test.tsx:156:24
154| });
155|
156| expect(onComplete).toHaveBeenCalledWith({
| ^
157| userSelection: 'no',
158| isExtensionPreInstalled: false,
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/167]⎯
FAIL src/ui/ToolConfirmationFullFrame.test.tsx > Full Terminal Tool Confirmation Snapshot > renders tool confirmation box in the frame of the entire terminal
Error: Snapshot `Full Terminal Tool Confirmation Snapshot > renders tool confirmation box in the frame of the entire terminal 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,6 +1,6 @@[39m
[32m- " > Can you edit InputPrompt.tsx for me?[7m [27m[39m
[31m+ " > Can you edit InputPrompt.tsx for me?[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m ╭─────────────────────────────────────────────────────────────────────────────────────────────────╮[22m
[2m │ ? Edit packages/.../InputPrompt.tsx: return kittyProtocolSupporte... => return kittyProto… │[22m
[2m │ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │[22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:73:34
71|
72| // Assert the text matches standard snapshot, stripping ANSI for sta…
73| expect(stripAnsi(textContent)).toMatchSnapshot();
| ^
74|
75| // Assert the SVG matches the file snapshot
❯ src/ui/ToolConfirmationFullFrame.test.tsx:174:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/167]⎯
FAIL src/utils/cleanup.test.ts > signal and TTY handling > setupSignalHandlers > should gracefully shutdown when SIGHUP is received
AssertionError: expected 0 to be greater than 0
❯ src/utils/cleanup.test.ts:214:37
212|
213| const sighupHandlers = processOnHandlers.get('SIGHUP') || [];
214| expect(sighupHandlers.length).toBeGreaterThan(0);
| ^
215|
216| await sighupHandlers[0]?.();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/167]⎯
FAIL src/utils/cleanup.test.ts > signal and TTY handling > setupSignalHandlers > should register SIGTERM handler that can trigger shutdown
AssertionError: expected 0 to be greater than 0
❯ src/utils/cleanup.test.ts:225:38
223|
224| const sigtermHandlers = processOnHandlers.get('SIGTERM') || [];
225| expect(sigtermHandlers.length).toBeGreaterThan(0);
| ^
226| // eslint-disable-next-line no-restricted-syntax
227| expect(typeof sigtermHandlers[0]).toBe('function');
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/167]⎯
FAIL src/config/extensions/consent.test.ts > consent > maybeRequestConsentOrFail > consent string generation > should generate a consent string with all fields
Error: Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should generate a consent string with all fields 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -8,11 +8,11 @@[39m
[2m This extension will run the following MCP servers: [22m
[2m * server1 (local): npm start [22m
[2m * server2 (remote): https://remote.com [22m
[2m This extension will append info to your gemini.md context using my-context.md [22m
[2m This extension will exclude the following core tools: tool1,tool2 [22m
[32m- The extension you are about to install may have been created by a third-party developer and sourced[39m
[31m+ The extension you are about to install may have been created by a third-party developer and sourced[7m [27m[39m
[32m- from a public repository. Google does not vet, endorse, or guarantee the functionality or security[39m
[31m+ from a public repository. Google does not vet, endorse, or guarantee the functionality or security[7m [27m[39m
[32m- of extensions. Please carefully inspect any extension and its source code before installing to[39m
[31m+ of extensions. Please carefully inspect any extension and its source code before installing to[7m [27m[39m
[32m- understand the permissions it requires and the actions it may perform.[39m
[31m+ understand the permissions it requires and the actions it may perform.[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ expectConsentSnapshot src/config/extensions/consent.test.ts:65:3
❯ src/config/extensions/consent.test.ts:211:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/167]⎯
FAIL src/config/extensions/consent.test.ts > consent > maybeRequestConsentOrFail > consent string generation > should include warning when hooks are present
Error: Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should include warning when hooks are present 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -4,11 +4,11 @@[39m
[2m [22m
[2m [22m
[2m [22m
[2m Installing extension "test-ext". [22m
[2m ⚠️ This extension contains Hooks which can automatically execute commands. [22m
[32m- The extension you are about to install may have been created by a third-party developer and sourced[39m
[31m+ The extension you are about to install may have been created by a third-party developer and sourced[7m [27m[39m
[32m- from a public repository. Google does not vet, endorse, or guarantee the functionality or security[39m
[31m+ from a public repository. Google does not vet, endorse, or guarantee the functionality or security[7m [27m[39m
[32m- of extensions. Please carefully inspect any extension and its source code before installing to[39m
[31m+ of extensions. Please carefully inspect any extension and its source code before installing to[7m [27m[39m
[32m- understand the permissions it requires and the actions it may perform.[39m
[31m+ understand the permissions it requires and the actions it may perform.[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ expectConsentSnapshot src/config/extensions/consent.test.ts:65:3
❯ src/config/extensions/consent.test.ts:276:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/167]⎯
FAIL src/config/extensions/consent.test.ts > consent > maybeRequestConsentOrFail > consent string generation > should request consent if extension is migrated
Error: Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should request consent if extension is migrated 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -3,11 +3,11 @@[39m
[2m text { font-family: Consolas, "Courier New", monospace; font-size: 14px; dominant-baseline: text-before-edge; white-space: pre; }[22m
[2m [22m
[2m [22m
[2m [22m
[2m Migrating extension "old-ext" to a new repository, renaming to "test-ext", and installing updates. [22m
[32m- The extension you are about to install may have been created by a third-party developer and sourced[39m
[31m+ The extension you are about to install may have been created by a third-party developer and sourced[7m [27m[39m
[32m- from a public repository. Google does not vet, endorse, or guarantee the functionality or security[39m
[31m+ from a public repository. Google does not vet, endorse, or guarantee the functionality or security[7m [27m[39m
[32m- of extensions. Please carefully inspect any extension and its source code before installing to[39m
[31m+ of extensions. Please carefully inspect any extension and its source code before installing to[7m [27m[39m
[32m- understand the permissions it requires and the actions it may perform.[39m
[31m+ understand the permissions it requires and the actions it may perform.[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ expectConsentSnapshot src/config/extensions/consent.test.ts:65:3
❯ src/config/extensions/consent.test.ts:307:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/167]⎯
FAIL src/config/extensions/consent.test.ts > consent > maybeRequestConsentOrFail > consent string generation > should request consent if skills change
Error: Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should request consent if skills change 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -8,25 +8,21 @@[39m
[2m This extension will run the following MCP servers: [22m
[2m * server1 (local): npm start [22m
[2m * server2 (remote): https://remote.com [22m
[2m This extension will append info to your gemini.md context using my-context.md [22m
[2m This extension will exclude the following core tools: tool1,tool2 [22m
[32m- Agent Skills:[27m[39m
[31m+ Agent Skills: [27m[39m
[2m This extension will install the following agent skills: [22m
[32m- * [7m[27m[39m
[32m- skill1[39m
[32m- [7m [27m: desc1 [39m
[31m+ * [7mskill1[27m: desc1 [39m
[2m (Source: /mock/temp/dir/skill1/SKILL.md) (2 items in directory) [22m
[32m- * [7m[27m[39m
[32m- skill2[39m
[32m- [7m [27m: desc2 [39m
[31m+ * [7mskill2[27m: desc2 [39m
[2m (Source: /mock/temp/dir/skill2/SKILL.md) (1 items in directory) [22m
[32m- The extension you are about to install may have been created by a third-party developer and sourced[39m
[31m+ The extension you are about to install may have been created by a third-party developer and sourced[7m [27m[39m
[32m- from a public repository. Google does not vet, endorse, or guarantee the functionality or security[39m
[31m+ from a public repository. Google does not vet, endorse, or guarantee the functionality or security[7m [27m[39m
[32m- of extensions. Please carefully inspect any extension and its source code before installing to[39m
[31m+ of extensions. Please carefully inspect any extension and its source code before installing to[7m [27m[39m
[32m- understand the permissions it requires and the actions it may perform.[39m
[31m+ understand the permissions it requires and the actions it may perform.[7m [27m[39m
[32m- Agent skills inject specialized instructions and domain-specific knowledge into the agent's system[39m
[31m+ Agent skills inject specialized instructions and domain-specific knowledge into the agent's system[7m [27m[39m
[32m- prompt. This can change how the agent interprets your requests and interacts with your environment.[39m
[31m+ prompt. This can change how the agent interprets your requests and interacts with your environment.[7m [27m[39m
[32m- Review the skill definitions at the location(s) provided below to ensure they meet your security[39m
[31m+ Review the skill definitions at the location(s) provided below to ensure they meet your security[7m [27m[39m
[32m- standards.[39m
[31m+ standards.[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ expectConsentSnapshot src/config/extensions/consent.test.ts:65:3
❯ src/config/extensions/consent.test.ts:354:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/167]⎯
FAIL src/config/extensions/consent.test.ts > consent > maybeRequestConsentOrFail > consent string generation > should show a warning if the skill directory cannot be read
Error: Snapshot `consent > maybeRequestConsentOrFail > consent string generation > should show a warning if the skill directory cannot be read 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -3,22 +3,19 @@[39m
[2m text { font-family: Consolas, "Courier New", monospace; font-size: 14px; dominant-baseline: text-before-edge; white-space: pre; }[22m
[2m [22m
[2m [22m
[2m [22m
[2m Installing extension "test-ext". [22m
[32m- Agent Skills:[27m[39m
[31m+ Agent Skills: [27m[39m
[2m This extension will install the following agent skills: [22m
[32m- * [7m[27m[39m
[32m- locked-skill[39m
[32m- [7m [27m: A skill in a locked dir [39m
[31m+ * [7mlocked-skill[27m: A skill in a locked dir [39m
[32m- (Source: /mock/temp/dir/locked/SKILL.md) [7m[27m[39m
[32m- [7m [27m⚠️ (Could not count items in directory)[39m
[31m+ (Source: /mock/temp/dir/locked/SKILL.md) ⚠️ (Could not count items in directory)[7m [27m[39m
[32m- The extension you are about to install may have been created by a third-party developer and sourced[39m
[31m+ The extension you are about to install may have been created by a third-party developer and sourced[7m [27m[39m
[32m- from a public repository. Google does not vet, endorse, or guarantee the functionality or security[39m
[31m+ from a public repository. Google does not vet, endorse, or guarantee the functionality or security[7m [27m[39m
[32m- of extensions. Please carefully inspect any extension and its source code before installing to[39m
[31m+ of extensions. Please carefully inspect any extension and its source code before installing to[7m [27m[39m
[32m- understand the permissions it requires and the actions it may perform.[39m
[31m+ understand the permissions it requires and the actions it may perform.[7m [27m[39m
[32m- Agent skills inject specialized instructions and domain-specific knowledge into the agent's system[39m
[31m+ Agent skills inject specialized instructions and domain-specific knowledge into the agent's system[7m [27m[39m
[32m- prompt. This can change how the agent interprets your requests and interacts with your environment.[39m
[31m+ prompt. This can change how the agent interprets your requests and interacts with your environment.[7m [27m[39m
[32m- Review the skill definitions at the location(s) provided below to ensure they meet your security[39m
[31m+ Review the skill definitions at the location(s) provided below to ensure they meet your security[7m [27m[39m
[32m- standards.[39m
[31m+ standards.[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ expectConsentSnapshot src/config/extensions/consent.test.ts:65:3
❯ src/config/extensions/consent.test.ts:389:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/167]⎯
FAIL src/config/extensions/consent.test.ts > consent > skillsConsentString > should generate a consent string for skills
Error: Snapshot `consent > skillsConsentString > should generate a consent string for skills 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -4,16 +4,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[2m Installing agent skill(s) from "https://example.com/repo.git". [22m
[2m The following agent skill(s) will be installing: [22m
[32m- * [7m[27m[39m
[32m- skill1[39m
[32m- [7m [27m: desc1 [39m
[31m+ * [7mskill1[27m: desc1 [39m
[2m (Source: /mock/temp/dir/skill1/SKILL.md) (1 items in directory) [22m
[2m Install Destination: /mock/target/dir [22m
[32m- Agent skills inject specialized instructions and domain-specific knowledge into the agent's system[39m
[31m+ Agent skills inject specialized instructions and domain-specific knowledge into the agent's system[7m [27m[39m
[32m- prompt. This can change how the agent interprets your requests and interacts with your environment.[39m
[31m+ prompt. This can change how the agent interprets your requests and interacts with your environment.[7m [27m[39m
[32m- Review the skill definitions at the location(s) provided below to ensure they meet your security[39m
[31m+ Review the skill definitions at the location(s) provided below to ensure they meet your security[7m [27m[39m
[32m- standards.[39m
[31m+ standards.[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ expectConsentSnapshot src/config/extensions/consent.test.ts:65:3
❯ src/config/extensions/consent.test.ts:415:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/167]⎯
FAIL src/ui/components/AlternateBufferQuittingDisplay.test.tsx > AlternateBufferQuittingDisplay > renders with user and gemini messages
Error: Snapshot `AlternateBufferQuittingDisplay > renders with user and gemini messages > with_user_gemini_messages 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -12,9 +12,9 @@[39m
[2m 1. Create GEMINI.md files to customize your interactions[22m
[2m 2. /help for more information[22m
[2m 3. Ask coding questions, edit code or run commands[22m
[2m 4. Be specific for the best results[22m
[2m ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Hello Gemini[7m [27m[39m
[31m+ > Hello Gemini[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m ✦ Hello User![22m
[2m "[22m
❯ src/ui/components/AlternateBufferQuittingDisplay.test.tsx:228:25
226| },
227| );
228| expect(lastFrame()).toMatchSnapshot('with_user_gemini_messages');
| ^
229| unmount();
230| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/167]⎯
FAIL src/ui/components/AppHeaderIcon.test.tsx > AppHeader Icon Rendering > renders the default icon in standard terminals
Error: Snapshot `AppHeader Icon Rendering > renders the default icon in standard terminals 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,33 +2,17 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- [7m▝[27m[39m
[32m- ▜[39m
[32m- ▄[39m
[32m- ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛[39m
[32m- ▝[39m
[32m- ▜[39m
[32m- [7m ▄[27m[39m
[31m+ [7m ▝▜▄ ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛ [27m[39m
[32m- █▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m[27m[39m
[32m- ▗[39m
[32m- ▟[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▝▜▄ [27m█▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m [27m[39m
[32m- ▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m[27m[39m
[32m- ▝[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▗▟▀ [27m▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m [27m[39m
[32m- ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[39m
[31m+ [7m ▝▀ [27m ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[7m [27m[39m
[32m- Gemini CLI[27m[39m
[32m- [7m v1.0.0[27m[39m
[31m+ Gemini CLI v1.0.0 [27m[39m
[32m- Tips for getting started:[7m[27m[39m
[32m- [7m 1. Create[27m [39m
[31m+ Tips for getting started:[7m [27m [39m
[32m- GEMINI.md[27m[39m
[32m- files to customize your interactions[39m
[32m- 2. [39m
[32m- [7m /help[27m[39m
[31m+ 1. Create GEMINI.md files to customize your interactions [27m[39m
[32m- for more information[39m
[31m+ [7m2. /help[27m for more information[7m [27m[39m
[32m- 3. Ask coding questions, edit code or run commands[39m
[31m+ 3. Ask coding questions, edit code or run commands[7m [27m[39m
[32m- 4. Be specific for the best results[39m
[31m+ 4. Be specific for the best results[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/AppHeaderIcon.test.tsx:38:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/167]⎯
FAIL src/ui/components/AppHeaderIcon.test.tsx > AppHeader Icon Rendering > renders the symmetric icon in Apple Terminal
Error: Snapshot `AppHeader Icon Rendering > renders the symmetric icon in Apple Terminal 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,34 +2,17 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ▝[27m[39m
[32m- ▜[39m
[32m- [7m [7m▄[27m[39m
[32m- ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛[39m
[32m- ▝[39m
[32m- ▜[39m
[32m- [7m ▄[27m[39m
[31m+ [7m ▝▜▄ ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛ [27m[39m
[32m- █▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m[27m[39m
[32m- ▗[39m
[32m- ▟[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▝▜▄ [27m█▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m [27m[39m
[32m- ▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m[27m[39m
[32m- ▗[39m
[32m- ▟[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▗▟▀ [27m▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m [27m[39m
[32m- ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[39m
[31m+ [7m ▗▟▀ [27m ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[7m [27m[39m
[32m- Gemini CLI[7m[27m[39m
[32m- [7m v1.0.0[27m[39m
[31m+ [7m [27mGemini CLI[7m v1.0.0 [27m[39m
[32m- Tips for getting started:[7m[27m[39m
[32m- [7m 1. Create[27m [39m
[31m+ Tips for getting started:[7m [27m [39m
[32m- GEMINI.md[27m[39m
[32m- files to customize your interactions[39m
[32m- 2. [39m
[32m- [7m /help[27m[39m
[31m+ 1. Create GEMINI.md files to customize your interactions [27m[39m
[32m- for more information[39m
[31m+ [7m2. /help[27m for more information[7m [27m[39m
[32m- 3. Ask coding questions, edit code or run commands[39m
[31m+ 3. Ask coding questions, edit code or run commands[7m [27m[39m
[32m- 4. Be specific for the best results[39m
[31m+ 4. Be specific for the best results[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/AppHeaderIcon.test.tsx:47:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/167]⎯
FAIL src/ui/components/AskUserDialog.test.tsx > AskUserDialog > renders question and options
Error: Snapshot `AskUserDialog > renders question and options 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,9 +1,9 @@[39m
[2m "Which authentication method should we use?[22m
[32m- ● 1. OAuth 2.0[7m [27m[39m
[32m- Industry standard, supports SSO [39m
[31m+ ● 1. OAuth 2.0[39m
[31m+ Industry standard, supports SSO[39m
[2m 2. JWT tokens[22m
[2m Stateless, good for APIs[22m
[2m 3. Enter a custom value[22m
[2m Enter to select · ↑/↓ to navigate · Esc to cancel[22m
❯ src/ui/components/AskUserDialog.test.tsx:61:25
59| );
60|
61| expect(lastFrame()).toMatchSnapshot();
| ^
62| });
63|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/167]⎯
FAIL src/ui/components/AskUserDialog.test.tsx > AskUserDialog > shows progress header for multiple questions
Error: Snapshot `AskUserDialog > shows progress header for multiple questions 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,11 +1,11 @@[39m
[2m "← □ Database │ □ ORM │ ≡ Review →[22m
[2m Which database should we use?[22m
[32m- ● 1. PostgreSQL[7m [27m[39m
[32m- Relational database [39m
[31m+ ● 1. PostgreSQL[39m
[31m+ Relational database[39m
[2m 2. MongoDB[22m
[2m Document database[22m
[2m 3. Enter a custom value[22m
[2m Enter to select · ←/→ to switch questions · Esc to cancel[22m
❯ src/ui/components/AskUserDialog.test.tsx:409:25
407| );
408|
409| expect(lastFrame()).toMatchSnapshot();
| ^
410| });
411|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/167]⎯
FAIL src/ui/components/AskUserDialog.test.tsx > AskUserDialog > hides progress header for single question
Error: Snapshot `AskUserDialog > hides progress header for single question 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,9 +1,9 @@[39m
[2m "Which authentication method should we use?[22m
[32m- ● 1. OAuth 2.0[7m [27m[39m
[32m- Industry standard, supports SSO [39m
[31m+ ● 1. OAuth 2.0[39m
[31m+ Industry standard, supports SSO[39m
[2m 2. JWT tokens[22m
[2m Stateless, good for APIs[22m
[2m 3. Enter a custom value[22m
[2m Enter to select · ↑/↓ to navigate · Esc to cancel[22m
❯ src/ui/components/AskUserDialog.test.tsx:423:25
421| );
422|
423| expect(lastFrame()).toMatchSnapshot();
| ^
424| });
425|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/167]⎯
FAIL src/ui/components/AskUserDialog.test.tsx > AskUserDialog > shows keyboard hints
Error: Snapshot `AskUserDialog > shows keyboard hints 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,9 +1,9 @@[39m
[2m "Which authentication method should we use?[22m
[32m- ● 1. OAuth 2.0[7m [27m[39m
[32m- Industry standard, supports SSO [39m
[31m+ ● 1. OAuth 2.0[39m
[31m+ Industry standard, supports SSO[39m
[2m 2. JWT tokens[22m
[2m Stateless, good for APIs[22m
[2m 3. Enter a custom value[22m
[2m Enter to select · ↑/↓ to navigate · Esc to cancel[22m
❯ src/ui/components/AskUserDialog.test.tsx:437:25
435| );
436|
437| expect(lastFrame()).toMatchSnapshot();
| ^
438| });
439|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/167]⎯
FAIL src/ui/components/AskUserDialog.test.tsx > AskUserDialog > shows Review tab in progress header for multiple questions
Error: Snapshot `AskUserDialog > shows Review tab in progress header for multiple questions 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,11 +1,11 @@[39m
[2m "← □ Framework │ □ Styling │ ≡ Review →[22m
[2m Which framework?[22m
[32m- ● 1. React[7m [27m[39m
[32m- Component library [39m
[31m+ ● 1. React[39m
[31m+ Component library[39m
[2m 2. Vue[22m
[2m Progressive framework[22m
[2m 3. Enter a custom value[22m
[2m Enter to select · ←/→ to switch questions · Esc to cancel[22m
❯ src/ui/components/AskUserDialog.test.tsx:590:25
588| );
589|
590| expect(lastFrame()).toMatchSnapshot();
| ^
591| });
592|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/167]⎯
FAIL src/ui/components/Banner.test.tsx > Banner > renders in warning mode
Error: Snapshot `Banner > renders in warning mode 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,12 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- Warning Message[27m[39m
[32m- [7m │[27m[39m
[31m+ │ Warning Message │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Banner.test.tsx:21:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/167]⎯
FAIL src/ui/components/Banner.test.tsx > Banner > renders in info mode
Error: Snapshot `Banner > renders in info mode 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,22 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[7m[27m[39m
[32m- │[39m
[32m- [7m I[27m[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- [7mn[27m[39m
[32m- f[39m
[32m- o[39m
[32m- M[39m
[32m- e[39m
[32m- s[39m
[32m- s[39m
[32m- a[39m
[32m- g[39m
[32m- e[39m
[32m- [7m │[27m[39m
[31m+ [7m│ Info Message │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Banner.test.tsx:21:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[24/167]⎯
FAIL src/ui/components/Banner.test.tsx > Banner > renders in multi-line warning
Error: Snapshot `Banner > renders in multi-line warning 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,18 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- Title Line[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ Title Line │ [27m[39m
[32m- Body Line 1[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mBody Line 1[7m │ [27m[39m
[32m- Body Line 2[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mBody Line 2[7m │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Banner.test.tsx:21:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[25/167]⎯
FAIL src/ui/components/Banner.test.tsx > Banner > handles newlines in text
Error: Snapshot `Banner > handles newlines in text 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,19 +2,11 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- │[7m[27m[39m
[32m- L[39m
[32m- i[39m
[32m- n[39m
[32m- e[39m
[32m- 1[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │[7m Line 1 │ [27m[39m
[32m- Line 2[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mLine 2[7m │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Banner.test.tsx:31:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[26/167]⎯
FAIL src/ui/components/ExitPlanModeDialog.test.tsx > ExitPlanModeDialog > useAlternateBuffer: true > renders correctly with plan content
Error: Snapshot `ExitPlanModeDialog > useAlternateBuffer: true > renders correctly with plan content 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -12,12 +12,12 @@[39m
[2m Files to Modify[22m
[2m - src/index.ts - Add auth middleware[22m
[2m - src/config.ts - Add auth configuration options[22m
[32m- ● 1. Yes, automatically accept edits[7m [27m[39m
[31m+ ● 1. Yes, automatically accept edits[39m
[32m- Approves plan and allows tools to run automatically[7m [27m[39m
[31m+ Approves plan and allows tools to run automatically[39m
[2m 2. Yes, manually accept edits[22m
[2m Approves plan but requires confirmation for each tool[22m
[2m 3. Type your feedback...[22m
[2m Enter to select · ↑/↓ to navigate · Ctrl+G to edit plan · Esc to cancel[22m
❯ src/ui/components/ExitPlanModeDialog.test.tsx:207:29
205| });
206|
207| expect(lastFrame()).toMatchSnapshot();
| ^
208| });
209|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[27/167]⎯
FAIL src/ui/components/ExitPlanModeDialog.test.tsx > ExitPlanModeDialog > useAlternateBuffer: true > handles long plan content appropriately
Error: Snapshot `ExitPlanModeDialog > useAlternateBuffer: true > handles long plan content appropriately 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -33,12 +33,12 @@[39m
[2m - Unit tests for each auth provider[22m
[2m - Integration tests for full auth flows[22m
[2m - Security penetration testing[22m
[2m - Load testing for session management[22m
[32m- ● 1. Yes, automatically accept edits[7m [27m[39m
[31m+ ● 1. Yes, automatically accept edits[39m
[32m- Approves plan and allows tools to run automatically[7m [27m[39m
[31m+ Approves plan and allows tools to run automatically[39m
[2m 2. Yes, manually accept edits[22m
[2m Approves plan but requires confirmation for each tool[22m
[2m 3. Type your feedback...[22m
[2m Enter to select · ↑/↓ to navigate · Ctrl+G to edit plan · Esc to cancel[22m
❯ src/ui/components/ExitPlanModeDialog.test.tsx:366:29
364| });
365|
366| expect(lastFrame()).toMatchSnapshot();
| ^
367| });
368|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[28/167]⎯
FAIL src/ui/components/ExitPlanModeDialog.test.tsx > ExitPlanModeDialog > useAlternateBuffer: false > renders correctly with plan content
Error: Snapshot `ExitPlanModeDialog > useAlternateBuffer: false > renders correctly with plan content 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -12,12 +12,12 @@[39m
[2m Files to Modify[22m
[2m - src/index.ts - Add auth middleware[22m
[2m - src/config.ts - Add auth configuration options[22m
[32m- ● 1. Yes, automatically accept edits[7m [27m[39m
[31m+ ● 1. Yes, automatically accept edits[39m
[32m- Approves plan and allows tools to run automatically[7m [27m[39m
[31m+ Approves plan and allows tools to run automatically[39m
[2m 2. Yes, manually accept edits[22m
[2m Approves plan but requires confirmation for each tool[22m
[2m 3. Type your feedback...[22m
[2m Enter to select · ↑/↓ to navigate · Ctrl+G to edit plan · Esc to cancel[22m
❯ src/ui/components/ExitPlanModeDialog.test.tsx:207:29
205| });
206|
207| expect(lastFrame()).toMatchSnapshot();
| ^
208| });
209|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[29/167]⎯
FAIL src/ui/components/ExitPlanModeDialog.test.tsx > ExitPlanModeDialog > useAlternateBuffer: false > handles long plan content appropriately
Error: Snapshot `ExitPlanModeDialog > useAlternateBuffer: false > handles long plan content appropriately 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -12,12 +12,12 @@[39m
[2m 6. Add LDAP provider support in src/auth/providers/LDAPProvider.ts[22m
[2m 7. Create token refresh mechanism in src/auth/TokenManager.ts[22m
[2m 8. Add multi-factor authentication in src/auth/MFAService.ts[22m
[2m ... last 22 lines hidden (Ctrl+O to show) ...[22m
[32m- ● 1. Yes, automatically accept edits[7m [27m[39m
[31m+ ● 1. Yes, automatically accept edits[39m
[32m- Approves plan and allows tools to run automatically[7m [27m[39m
[31m+ Approves plan and allows tools to run automatically[39m
[2m 2. Yes, manually accept edits[22m
[2m Approves plan but requires confirmation for each tool[22m
[2m 3. Type your feedback...[22m
[2m Enter to select · ↑/↓ to navigate · Ctrl+G to edit plan · Esc to cancel[22m
❯ src/ui/components/ExitPlanModeDialog.test.tsx:366:29
364| });
365|
366| expect(lastFrame()).toMatchSnapshot();
| ^
367| });
368|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[30/167]⎯
FAIL src/ui/components/FooterConfigDialog.test.tsx > > renders correctly with default settings
Error: Snapshot ` > renders correctly with default settings 3` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,159 +2,49 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Configure Footer[27m[39m
[32m- [7m [27m│[39m
[31m+ │ Configure Footer [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Select which items to display in the footer.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSelect which items to display in the footer.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- >[39m
[32m- [39m
[32m- [39m
[32m- [✓][39m
[32m- [7m [39m
[31m+ │[7m │[39m
[32m- [7m workspace[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ > [✓] workspace │[39m
[32m- Current working directory[7m[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current working directory[7m │[27m[39m
[32m- git-branch[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m git-branch[7m [27m│[39m
[32m- Current git branch name (not shown when unavailable)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current git branch name (not shown when unavailable)[7m │[27m[39m
[32m- [7m sandbox[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] sandbox [27m│[39m
[32m- Sandbox type and trust indicator[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Sandbox type and trust indicator[7m │[27m[39m
[32m- model-name[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m model-name[7m [27m│[39m
[32m- Current model identifier[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current model identifier[7m │[27m[39m
[32m- [7m quota[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] quota [27m│[39m
[32m- Percentage of daily limit used (not shown when unavailable)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Percentage of daily limit used (not shown when unavailable)[7m │[27m[39m
[32m- context-used[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m context-used[7m [27m│[39m
[32m- Percentage of context window used[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Percentage of context window used[7m │[27m[39m
[32m- memory-usage[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m memory-usage[7m [27m│[39m
[32m- Memory used by the application[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Memory used by the application[7m │[27m[39m
[32m- session-id[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m session-id[7m [27m│[39m
[32m- Unique identifier for the current session[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Unique identifier for the current session[7m │[27m[39m
[32m- [7m auth[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ] auth [27m│[39m
[32m- Current authentication info[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Current authentication info[7m │[27m[39m
[32m- code-changes[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m code-changes[7m [27m│[39m
[32m- Lines added/removed in the session (not shown when zero)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Lines added/removed in the session (not shown when zero)[7m │[27m[39m
[32m- token-count[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m token-count[7m [27m│[39m
[32m- Total tokens used in the session (not shown when zero)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Total tokens used in the session (not shown when zero)[7m │[27m[39m
[32m- Show footer labels[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m Show footer labels[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Reset to default footer[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mReset to default footer[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ┌────────────────────────────────────────────────────────────────────────────────────────────┐[39m
[31m+ [7m│ [27m┌────────────────────────────────────────────────────────────────────────────────────────────┐[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Preview:[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [39m
[31m+ │[7m │ Preview: │ │[39m
[32m- workspace (/directory)[7m[27m[39m
[32m- branch[39m
[32m- sandbox[39m
[32m- /model[39m
[32m- quota[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m ~/project/path[7m[27m[39m
[32m- [39m
[32m- main[39m
[32m- docker[39m
[32m- gemini-2.5-pro[39m
[32m- 42% used[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ │ [27mworkspace (/directory)[7m branch sandbox /model quota │ │[27m[39m
[31m+ [7m [7m│ │ [27m~/project/path[7m main docker gemini-2.5-pro 42% used │ [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m└────────────────────────────────────────────────────────────────────────────────────────────┘[39m
[31m+ │[7m [27m└────────────────────────────────────────────────────────────────────────────────────────────┘[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/FooterConfigDialog.test.tsx:34:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[31/167]⎯
FAIL src/ui/components/FooterConfigDialog.test.tsx > > highlights the active item in the preview
Error: Snapshot ` > highlights the active item in the preview 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,164 +2,49 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Configure Footer[27m[39m
[32m- [7m [27m│[39m
[31m+ │ Configure Footer [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Select which items to display in the footer.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSelect which items to display in the footer.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ │[7m │[27m[39m
[32m- [7m workspace[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] workspace [27m│[39m
[32m- Current working directory[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current working directory[7m │[27m[39m
[32m- git-branch[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m git-branch[7m [27m│[39m
[32m- Current git branch name (not shown when unavailable)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current git branch name (not shown when unavailable)[7m │[27m[39m
[32m- [7m sandbox[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] sandbox [27m│[39m
[32m- Sandbox type and trust indicator[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Sandbox type and trust indicator[7m │[27m[39m
[32m- model-name[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m model-name[7m [27m│[39m
[32m- Current model identifier[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current model identifier[7m │[27m[39m
[32m- [7m quota[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] quota [27m│[39m
[32m- Percentage of daily limit used (not shown when unavailable)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Percentage of daily limit used (not shown when unavailable)[7m │[27m[39m
[32m- context-used[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m context-used[7m [27m│[39m
[32m- Percentage of context window used[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Percentage of context window used[7m │[27m[39m
[32m- memory-usage[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m memory-usage[7m [27m│[39m
[32m- Memory used by the application[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Memory used by the application[7m │[27m[39m
[32m- session-id[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m session-id[7m [27m│[39m
[32m- Unique identifier for the current session[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Unique identifier for the current session[7m │[27m[39m
[32m- [7m auth[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ] auth [27m│[39m
[32m- Current authentication info[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- >[39m
[32m- [39m
[32m- [39m
[32m- [✓][39m
[32m- [7m [39m
[31m+ [7m│ [27m Current authentication info[7m │[39m
[32m- [7m code-changes[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ > [✓] code-changes │[39m
[32m- Lines added/removed in the session (not shown when zero)[7m[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Lines added/removed in the session (not shown when zero)[7m │[27m[39m
[32m- token-count[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m token-count[7m [27m│[39m
[32m- Total tokens used in the session (not shown when zero)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Total tokens used in the session (not shown when zero)[7m │[27m[39m
[32m- Show footer labels[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m Show footer labels[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Reset to default footer[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mReset to default footer[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ┌────────────────────────────────────────────────────────────────────────────────────────────┐[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m Preview:[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- workspace (/directory)[39m
[32m- branch[39m
[32m- sandbox[39m
[32m- /model[39m
[32m- quota[39m
[32m- [7m[39m
[31m+ [7m│ [27m┌────────────────────────────────────────────────────────────────────────────────────────────┐[7m │[27m[39m
[31m+ [7m │ │ Preview: [27m [7m│[27m [7m│[39m
[32m- [7mdiff[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ │ workspace (/directory) branch sandbox /model quota diff │ [27m│[39m
[32m- ~/project/path[7m[27m[39m
[32m- main[39m
[32m- docker[39m
[32m- gemini-2.5-pro[39m
[32m- 42% used[39m
[32m- [39m
[32m- +12[39m
[32m- [39m
[32m- [39m
[32m- -4[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ │ [27m~/project/path[7m main docker gemini-2.5-pro 42% used +12 -4 │ [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m└────────────────────────────────────────────────────────────────────────────────────────────┘[39m
[31m+ │[7m [27m└────────────────────────────────────────────────────────────────────────────────────────────┘[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/FooterConfigDialog.test.tsx:141:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[32/167]⎯
FAIL src/ui/components/FooterConfigDialog.test.tsx > > updates the preview when Show footer labels is toggled off
Error: Snapshot ` > updates the preview when Show footer labels is toggled off 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,149 +2,48 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Configure Footer[27m[39m
[32m- [7m [27m│[39m
[31m+ │ Configure Footer [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Select which items to display in the footer.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSelect which items to display in the footer.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ │[7m │[27m[39m
[32m- workspace[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m workspace[7m [27m│[39m
[32m- Current working directory[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current working directory[7m │[27m[39m
[32m- git-branch[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m git-branch[7m [27m│[39m
[32m- Current git branch name (not shown when unavailable)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current git branch name (not shown when unavailable)[7m │[27m[39m
[32m- [7m sandbox[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] sandbox [27m│[39m
[32m- Sandbox type and trust indicator[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Sandbox type and trust indicator[7m │[27m[39m
[32m- model-name[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓][27m model-name[7m [27m│[39m
[32m- Current model identifier[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [✓][27m[39m
[31m+ [7m│ [27m Current model identifier[7m │[27m[39m
[32m- [7m quota[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [✓] quota [27m│[39m
[32m- Percentage of daily limit used (not shown when unavailable)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Percentage of daily limit used (not shown when unavailable)[7m │[27m[39m
[32m- context-used[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m context-used[7m [27m│[39m
[32m- Percentage of context window used[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Percentage of context window used[7m │[27m[39m
[32m- memory-usage[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m memory-usage[7m [27m│[39m
[32m- Memory used by the application[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Memory used by the application[7m │[27m[39m
[32m- session-id[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m session-id[7m [27m│[39m
[32m- Unique identifier for the current session[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Unique identifier for the current session[7m │[27m[39m
[32m- [7m auth[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ] auth [27m│[39m
[32m- Current authentication info[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Current authentication info[7m │[27m[39m
[32m- code-changes[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m code-changes[7m [27m│[39m
[32m- Lines added/removed in the session (not shown when zero)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [ ][27m[39m
[31m+ [7m│ [27m Lines added/removed in the session (not shown when zero)[7m │[27m[39m
[32m- token-count[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [ ][27m token-count[7m [27m│[39m
[32m- Total tokens used in the session (not shown when zero)[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [39m
[31m+ [7m│ [27m Total tokens used in the session (not shown when zero)[7m │[39m
[32m- >[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- [ ][39m
[32m- [39m
[32m- Show footer labels[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m>[7m [ ] Show footer labels [27m│[39m
[32m- │[7m[27m[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Reset to default footer[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mReset to default footer[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ┌────────────────────────────────────────────────────────────────────────────────────────────┐[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m┌────────────────────────────────────────────────────────────────────────────────────────────┐[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- Preview:[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ~/project/path[39m
[32m- · [39m
[32m- [7m main[27m[39m
[31m+ │[7m │ Preview: │ │[27m[39m
[32m- [7m · [27m[39m
[32m- docker[39m
[32m- · [39m
[32m- gemini-2.5-pro[39m
[32m- · [39m
[32m- 42% used[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ │ ~/project/path · main · docker · gemini-2.5-pro · 42% used │ [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m└────────────────────────────────────────────────────────────────────────────────────────────┘[39m
[31m+ │[7m [27m└────────────────────────────────────────────────────────────────────────────────────────────┘[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/FooterConfigDialog.test.tsx:262:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[33/167]⎯
FAIL src/ui/components/HistoryItemDisplay.test.tsx > > thinking items > renders "Thinking..." header when isFirstThinking is true
Error: Snapshot ` > thinking items > renders "Thinking..." header when isFirstThinking is true 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Thinking[22m
[2m │ test[22m
[2m "[22m
❯ src/ui/components/HistoryItemDisplay.test.tsx:295:27
293|
294| expect(lastFrame()).toContain(' Thinking...');
295| expect(lastFrame()).toMatchSnapshot();
| ^
296| unmount();
297| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[34/167]⎯
FAIL src/ui/components/HistoryItemDisplay.test.tsx > > gemini items (alternateBuffer=false) > should render a truncated gemini_content item
Error: Snapshot ` > gemini items (alternateBuffer=false) > should render a truncated gemini_content item 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m " Example code block:[22m
[32m- ... 4[7m2[27m hidden (Ctrl+O) ...[39m
[31m+ ... 4[7m1[27m hidden (Ctrl+O) ...[39m
[31m+ 42 Line 42[39m
[2m 43 Line 43[22m
[2m 44 Line 44[22m
[2m 45 Line 45[22m
[2m 46 Line 46[22m
[2m 47 Line 47[22m
[2m 48 Line 48[22m
[2m 49 Line 49[22m
[32m- 50 Line 50[39m
[2m "[22m
❯ src/ui/components/HistoryItemDisplay.test.tsx:388:29
386| },
387| );
388| expect(lastFrame()).toMatchSnapshot();
| ^
389| unmount();
390| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[35/167]⎯
FAIL src/ui/components/HookStatusDisplay.test.tsx > > matches SVG snapshot for single hook
Error: Snapshot ` > matches SVG snapshot for single hook 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,8 +2,8 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- Executing Hook: test-hook[39m
[31m+ Executing Hook: test-hook[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/HookStatusDisplay.test.tsx:90:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[36/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'mid-word'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'mid-word' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,16 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- hel[39m
[32m- [39m
[32m- l[39m
[32m- o world[39m
[32m- [7m [27m│[39m
[31m+ │[7m > hello world [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[37/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the beginning of the line'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the beginning of the line' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,15 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- [39m
[32m- h[39m
[32m- ello[39m
[32m- [7m [27m│[39m
[31m+ │[7m > hello [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[38/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of the line'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of the line' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,14 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- hello[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ │[7m > hello [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[39/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a highlighted token'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a highlighted token' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,17 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- run [39m
[32m- @path[39m
[32m- [39m
[32m- /[39m
[32m- to/file[39m
[32m- [7m [27m│[39m
[31m+ │[7m > run @path/to/file [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[40/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'for multi-byte unicode characters'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'for multi-byte unicode characters' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,16 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- hello [39m
[32m- [39m
[32m- 👍[39m
[32m- world[39m
[32m- [7m │[27m[39m
[31m+ │[7m > hello 👍 world │ [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[41/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'after multi-byte unicode characters'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'after multi-byte unicode characters' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,15 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- 👍[39m
[32m- [39m
[32m- A[39m
[32m- [7m │[27m[39m
[31m+ │[7m > 👍A │ [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[42/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a line with unicode cha…'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a line with unicode cha…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,13 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- hello 👍[39m
[32m- [7m │[27m[39m
[31m+ │[7m > hello 👍 │ [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[43/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a short line with unico…'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'at the end of a short line with unico…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,14 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- 👍[39m
[32m- [39m
[32m- [7m │[27m[39m
[31m+ │[7m > 👍 │ [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[44/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on an empty line'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on an empty line' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,14 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[27m[39m
[32m- [7m > [7m[27m[39m
[32m- [39m
[32m- Type your message or @path/to/file[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m> [7m Type your message or @path/to/file [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[45/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a space between words'
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > single-line scenarios > should display cursor correctly 'on a space between words' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,15 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- hello[39m
[32m- [39m
[32m- world[39m
[32m- [7m [27m│[39m
[31m+ │[7m > hello world [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2340:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[46/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'in the middle of a line' in a multiline block
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'in the middle of a line' in a multiline block 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,22 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- first line[39m
[32m- │[39m
[32m- │[39m
[32m- sec[39m
[32m- [39m
[32m- [7m o[27m[39m
[31m+ │[7m > first line │[27m[39m
[32m- [7mnd line[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ second line [27m│[39m
[32m- third line[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mthird line[7m [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2393:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[47/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the beginning of a line' in a multiline block
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the beginning of a line' in a multiline block 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,18 +2,11 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- first line[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m s[27m[39m
[31m+ │[7m > first line │[27m[39m
[32m- econd line[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ s[27mecond line[7m [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2393:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[48/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the end of a line' in a multiline block
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor correctly 'at the end of a line' in a multiline block 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,17 +2,11 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- > [39m
[32m- first line[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m > first line [27m│[39m
[32m- second line[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27msecond line[7m [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2393:11
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[49/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor on a blank line in a multiline block
Error: Snapshot `InputPrompt > Highlighting and Cursor Display > multi-line scenarios > should display cursor on a blank line in a multiline block 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,19 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- [7m > [27m[39m
[31m+ │[7m > first line │[27m[39m
[32m- [7mfirst line[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m│[39m
[32m- third line[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mthird line[7m [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2416:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[50/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > multiline rendering > should correctly render multiline input including blank lines
Error: Snapshot `InputPrompt > multiline rendering > should correctly render multiline input including blank lines 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,19 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- │[7m[27m[39m
[32m- [7m > [27m[39m
[31m+ │[7m > hello │[27m[39m
[32m- [7mhello[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m│[39m
[32m- world[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mworld[7m [27m│[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/InputPrompt.test.tsx:2544:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[51/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows
Error: Snapshot `InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows > command-search-render-expanded-match 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- (r:) Type your message or @path/to/file[7m [27m[39m
[31m+ (r:) Type your message or @path/to/file[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[32m- lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll ←[7m [27m[39m
[31m+ lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll ←[39m
[32m- lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll[7m [27m[39m
[31m+ lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll[39m
[32m- llllllllllllllllllllllllllllllllllllllllllllllllll[7m [27m[39m
[31m+ llllllllllllllllllllllllllllllllllllllllllllllllll[39m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:3428:34
3426| expect(clean(stdout.lastFrame())).toContain('←');
3427| });
3428| expect(stdout.lastFrame()).toMatchSnapshot(
| ^
3429| 'command-search-render-expanded-match',
3430| );
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[52/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > command search (Ctrl+R when not in shell) > renders match window and expanded view (snapshots)
Error: Snapshot `InputPrompt > command search (Ctrl+R when not in shell) > renders match window and expanded view (snapshots) > command-search-render-collapsed-match 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- (r:) commit[7m [27m[39m
[31m+ (r:) commit[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[32m- git commit -m "feat: add search" in src/app[7m [27m[39m
[31m+ git commit -m "feat: add search" in src/app[39m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:3470:34
3468| expect(stdout.lastFrame()).toContain('(r:)');
3469| });
3470| expect(stdout.lastFrame()).toMatchSnapshot(
| ^
3471| 'command-search-render-collapsed-match',
3472| );
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[53/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > snapshots > should render correctly in shell mode
Error: Snapshot `InputPrompt > snapshots > should render correctly in shell mode 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- ! Type your message or @path/to/file[7m [27m[39m
[31m+ ! Type your message or @path/to/file[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:4184:34
4182| );
4183| await waitFor(() => expect(stdout.lastFrame()).toContain('!'));
4184| expect(stdout.lastFrame()).toMatchSnapshot();
| ^
4185| unmount();
4186| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[54/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > snapshots > should render correctly when accepting edits
Error: Snapshot `InputPrompt > snapshots > should render correctly when accepting edits 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Type your message or @path/to/file[7m [27m[39m
[31m+ > Type your message or @path/to/file[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:4194:34
4192| );
4193| await waitFor(() => expect(stdout.lastFrame()).toContain('>'));
4194| expect(stdout.lastFrame()).toMatchSnapshot();
| ^
4195| unmount();
4196| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[55/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > snapshots > should render correctly in yolo mode
Error: Snapshot `InputPrompt > snapshots > should render correctly in yolo mode 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- * Type your message or @path/to/file[7m [27m[39m
[31m+ * Type your message or @path/to/file[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:4204:34
4202| );
4203| await waitFor(() => expect(stdout.lastFrame()).toContain('*'));
4204| expect(stdout.lastFrame()).toMatchSnapshot();
| ^
4205| unmount();
4206| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[56/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > snapshots > should not show inverted cursor when shell is focused
Error: Snapshot `InputPrompt > snapshots > should not show inverted cursor when shell is focused 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Type your message or @path/to/file[7m [27m[39m
[31m+ > Type your message or @path/to/file[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"[22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:73:34
71|
72| // Assert the text matches standard snapshot, stripping ANSI for sta…
73| expect(stripAnsi(textContent)).toMatchSnapshot();
| ^
74|
75| // Assert the SVG matches the file snapshot
❯ src/ui/components/InputPrompt.test.tsx:4214:34
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > image path transformation snapshots > should snapshot collapsed image path
Error: Snapshot `InputPrompt > image path transformation snapshots > should snapshot collapsed image path 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > [Image ...reenshot2x.png][7m [27m[39m
[31m+ > [Image ...reenshot2x.png][39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:4521:34
4519| expect(stdout.lastFrame()).toContain('[Image');
4520| });
4521| expect(stdout.lastFrame()).toMatchSnapshot();
| ^
4522| unmount();
4523| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > image path transformation snapshots > should snapshot expanded image path when cursor is on it
Error: Snapshot `InputPrompt > image path transformation snapshots > should snapshot expanded image path when cursor is on it 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > @/path/to/screenshots/screenshot2x.png[7m [27m[39m
[31m+ > @/path/to/screenshots/screenshot2x.png[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:4540:34
4538| expect(stdout.lastFrame()).toContain('@/path/to/screenshots');
4539| });
4540| expect(stdout.lastFrame()).toMatchSnapshot();
| ^
4541| unmount();
4542| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[59/167]⎯
FAIL src/ui/components/InputPrompt.test.tsx > InputPrompt > History Navigation and Completion Suppression > should not render suggestions during history navigation
Error: Snapshot `InputPrompt > History Navigation and Completion Suppression > should not render suggestions during history navigation 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > second message[7m [27m[39m
[31m+ > second message[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/InputPrompt.test.tsx:4933:34
4931| });
4932|
4933| expect(stdout.lastFrame()).toMatchSnapshot();
| ^
4934| unmount();
4935| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[60/167]⎯
FAIL src/ui/components/MainContent.test.tsx > MainContent > renders mixed history items (user + gemini) with single line padding between them
Error: Snapshot `MainContent > renders mixed history items (user + gemini) with single line padding between them 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,9 +1,9 @@[39m
[2m "ScrollableList[22m
[2m AppHeader(full)[22m
[2m ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > User message[7m [27m[39m
[31m+ > User message[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m ✦ Gemini response[22m
[2m Gemini response[22m
[2m Gemini response[22m
[2m Gemini response[22m
❯ src/ui/components/MainContent.test.tsx:514:20
512|
513| const output = lastFrame();
514| expect(output).toMatchSnapshot();
| ^
515| unmount();
516| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[61/167]⎯
FAIL src/ui/components/MainContent.test.tsx > MainContent > renders a subagent with a complete box including bottom border
Error: Snapshot `MainContent > renders a subagent with a complete box including bottom border 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,8 +1,8 @@[39m
[2m "AppHeader(full)[22m
[2m ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Investigate[7m [27m[39m
[31m+ > Investigate[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m ╭──────────────────────────────────────────────────────────────────────────╮[22m
[2m │ ≡ Running Agent... (ctrl+o to collapse) │[22m
[2m │ │[22m
❯ src/ui/components/MainContent.test.tsx:562:25
560| });
561|
562| expect(lastFrame()).toMatchSnapshot();
| ^
563| unmount();
564| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[62/167]⎯
FAIL src/ui/components/MainContent.test.tsx > MainContent > renders a ToolConfirmationQueue without an extra line when preceded by hidden tools
Error: Snapshot `MainContent > renders a ToolConfirmationQueue without an extra line when preceded by hidden tools 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,8 +1,8 @@[39m
[2m "AppHeader(full)[22m
[2m ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Apply plan[7m [27m[39m
[31m+ > Apply plan[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m ╭──────────────────────────────────────────────────────────────────────────────╮[22m
[2m │ Ready to start implementation? │[22m
[2m │ │[22m
❯ src/ui/components/MainContent.test.tsx:689:25
687|
688| // Snapshot will reveal if there are extra blank lines
689| expect(lastFrame()).toMatchSnapshot();
| ^
690| unmount();
691| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[63/167]⎯
FAIL src/ui/components/MainContent.test.tsx > MainContent > renders a spurious line when a tool group has only hidden tools and borderBottom true
Error: Snapshot `MainContent > renders a spurious line when a tool group has only hidden tools and borderBottom true 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "AppHeader(full)[22m
[2m ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Apply plan[7m [27m[39m
[31m+ > Apply plan[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/MainContent.test.tsx:727:25
725|
726| // This snapshot will show no spurious line because the group is n…
727| expect(lastFrame()).toMatchSnapshot();
| ^
728| unmount();
729| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[64/167]⎯
FAIL src/ui/components/MainContent.test.tsx > MainContent > renders multiple thinking messages sequentially correctly
Error: Snapshot `MainContent > renders multiple thinking messages sequentially correctly 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,11 +1,11 @@[39m
[2m "ScrollableList[22m
[2m AppHeader(full)[22m
[2m ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Plan a solution[7m [27m[39m
[31m+ > Plan a solution[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[32m- Thinking...[7m [27m[39m
[31m+ Thinking...[39m
[2m │[22m
[2m │ Initial analysis[22m
[2m │ This is a multiple line paragraph for the first thinking message of how the[22m
[2m │ model analyzes the problem.[22m
[2m │[22m
❯ src/ui/components/MainContent.test.tsx:783:20
781| expect(output).toContain('Planning execution');
782| expect(output).toContain('Refining approach');
783| expect(output).toMatchSnapshot();
| ^
784| await expect(renderResult).toMatchSvgSnapshot();
785| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[65/167]⎯
FAIL src/ui/components/MainContent.test.tsx > MainContent > MainContent Tool Output Height Logic > 'ASB mode - Focused shell should expand'
AssertionError: expected 'ScrollableList\nAppHeader(full)\n\n╭─…' not to match /\bLine 1\b/
[32m- Expected:[39m
/\bLine 1\b/
[31m+ Received:[39m
"ScrollableList
AppHeader(full)
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⠋ Shell Command Running a long command... │
│ │
│ Line 1 █ │
│ Line 2 █ │
│ Line 3 █ │
│ Line 4 █ │
│ Line 5 █ │
│ Line 6 │
│ Line 7 │
│ Line 8 │
│ Line 9 │
│ Line 10 │
╰──────────────────────────────────────────────────────────────────────────────────────────────╯
"
❯ src/ui/components/MainContent.test.tsx:898:30
896| expect(output).toMatch(line1Regex);
897| } else {
898| expect(output).not.toMatch(line1Regex);
| ^
899| }
900|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[66/167]⎯
FAIL src/ui/components/ModelDialog.test.tsx > > Preview Models > shows Gemini 3 models in manual view when Gemini 3.1 is NOT launched
AssertionError: expected '╭────────────────────────────────────…' to contain 'gemini-3-pro-preview'
[32m- Expected[39m
[31m+ Received[39m
[32m- gemini-3-pro-preview[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ │[39m
[31m+ │ Select Model │[39m
[31m+ │ │[39m
[31m+ │ 1. Auto (Preview) │[39m
[31m+ │ Let Gemini CLI decide the best model for the task: gemini-3-pro, gemini-3-flash │[39m
[31m+ │ 2. Auto (Gemini 2.5) │[39m
[31m+ │ Let Gemini CLI decide the best model for the task: gemini-2.5-pro, gemini-2.5-flash │[39m
[31m+ │ ● 3. Manual │[39m
[31m+ │ Manually select a model │[39m
[31m+ │ │[39m
[31m+ │ Remember model for future sessions: false (Press Tab to toggle) │[39m
[31m+ │ > To use a specific Gemini model on startup, use the --model flag. │[39m
[31m+ │ │[39m
[31m+ │ (Press Esc to close) │[39m
[31m+ │ │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+[39m
❯ src/ui/components/ModelDialog.test.tsx:392:22
390|
391| const output = lastFrame();
392| expect(output).toContain(PREVIEW_GEMINI_MODEL);
| ^
393| expect(output).toContain(PREVIEW_GEMINI_FLASH_MODEL);
394| unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[67/167]⎯
FAIL src/ui/components/ModelDialog.test.tsx > > Preview Models > shows Gemini 3.1 models in manual view when Gemini 3.1 IS launched
AssertionError: expected '╭────────────────────────────────────…' to contain 'gemini-3.1-pro-preview'
[32m- Expected[39m
[31m+ Received[39m
[32m- gemini-3.1-pro-preview[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ │[39m
[31m+ │ Select Model │[39m
[31m+ │ │[39m
[31m+ │ 1. Auto (Preview) │[39m
[31m+ │ Let Gemini CLI decide the best model for the task: gemini-3.1-pro, gemini-3-flash │[39m
[31m+ │ 2. Auto (Gemini 2.5) │[39m
[31m+ │ Let Gemini CLI decide the best model for the task: gemini-2.5-pro, gemini-2.5-flash │[39m
[31m+ │ ● 3. Manual │[39m
[31m+ │ Manually select a model │[39m
[31m+ │ │[39m
[31m+ │ Remember model for future sessions: false (Press Tab to toggle) │[39m
[31m+ │ > To use a specific Gemini model on startup, use the --model flag. │[39m
[31m+ │ │[39m
[31m+ │ (Press Esc to close) │[39m
[31m+ │ │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+[39m
❯ src/ui/components/ModelDialog.test.tsx:413:22
411|
412| const output = lastFrame();
413| expect(output).toContain(PREVIEW_GEMINI_3_1_MODEL);
| ^
414| expect(output).toContain(PREVIEW_GEMINI_FLASH_MODEL);
415| unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[68/167]⎯
FAIL src/ui/components/ModelQuotaDisplay.test.tsx > > renders quota information when buckets are provided
Error: Snapshot ` > renders quota information when buckets are provided 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "[22m
[2m ────────────────────────────────────────────────────────────────────────────────────────────────────[22m
[2m Model usage[22m
[32m- Pro ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ 25% Resets: [7m1[27m:30 [7mP[27mM (1h 30m)[7m [27m[39m
[31m+ Pro ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ 25% Resets: [7m5[27m:30 [7mA[27mM (1h 30m)[39m
[2m "[22m
❯ src/ui/components/ModelQuotaDisplay.test.tsx:45:20
43| expect(output).toContain('25%');
44| expect(output).toContain('Resets:');
45| expect(output).toMatchSnapshot();
| ^
46|
47| vi.useRealTimers();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[69/167]⎯
FAIL src/ui/components/Notifications.test.tsx > Notifications > dismisses warnings on keypress
AssertionError: expected '\n⚠ High priority 1\n' not to contain 'High priority 1'
[32m- Expected[39m
[31m+ Received[39m
[32m- High priority 1[39m
[31m+[39m
[31m+ [7m⚠ [27mHigh priority 1[39m
[31m+[39m
❯ src/ui/components/Notifications.test.tsx:237:49
235| await waitUntilReady();
236|
237| expect(lastFrame({ allowEmpty: true })).not.toContain('High priori…
| ^
238| unmount();
239| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[70/167]⎯
FAIL src/ui/components/SessionBrowser.test.tsx > SessionBrowser component > renders a list of sessions and marks current session as disabled
Error: Snapshot `SessionBrowser component > renders a list of sessions and marks current session as disabled 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m " Chat Sessions (2 total) sorted by date desc[22m
[2m Navigate: ↑/↓ Resume: Enter Search: / Delete: x Quit: q[22m
[2m Sort: s Reverse: r First/Last: g/G[22m
[2m Index │ Msgs │ Age │ Name[22m
[32m- ❯ #1 │ 5 │ 10mo │ Second conversation about dogs (current)[7m [27m[39m
[31m+ ❯ #1 │ 5 │ 10mo │ Second conversation about dogs (current)[39m
[2m #2 │ 2 │ 10mo │ First conversation about cats[22m
[2m ▼[22m
[2m "[22m
❯ src/ui/components/SessionBrowser.test.tsx:204:25
202| );
203|
204| expect(lastFrame()).toMatchSnapshot();
| ^
205| });
206|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[71/167]⎯
FAIL src/ui/components/SessionBrowser.test.tsx > SessionBrowser component > enters search mode, filters sessions, and renders match snippets
Error: Snapshot `SessionBrowser component > enters search mode, filters sessions, and renders match snippets 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m " Chat Sessions (1 total, filtered) sorted by date desc[22m
[2m Search: query (Esc to cancel)[22m
[2m Index │ Msgs │ Age │ Match[22m
[32m- ❯ #1 │ 1 │ 10mo │ You: Query is here a… (+1 more)[7m [27m[39m
[31m+ ❯ #1 │ 1 │ 10mo │ You: Query is here a… (+1 more)[39m
[2m ▼[22m
[2m "[22m
❯ src/ui/components/SessionBrowser.test.tsx:281:25
279| expect(lastFrame()).toContain('Chat Sessions (1 total, filtered'…
280| });
281| expect(lastFrame()).toMatchSnapshot();
| ^
282| });
283|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[72/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Initial Rendering > should render settings list with visual indicators
Error: Snapshot `SettingsDialog > Initial Rendering > should render settings list with visual indicators 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- false[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m false │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:305:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[73/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'default state' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'default state' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- false[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m false │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[74/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'various boolean settings enabled' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'various boolean settings enabled' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- true*[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m true* │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- false*[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m false* [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[75/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'mixed boolean and number settings' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'mixed boolean and number settings' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- false*[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m false* │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- false*[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m false* [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[76/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'focused on scope selector' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'focused on scope selector' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,138 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Settings [39m
[31m+ [7m│[27m Settings [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Search to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▲ [27m│[39m
[32m- Vim Mode[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mVim Mode[7m false [27m│[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Apply To[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- 1.[39m
[32m- [39m
[32m- [7m [39m
[31m+ │ > Apply To │[39m
[32m- User Settings[7m[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- [7m 2.[27m[39m
[31m+ [7m│ ● 1. [27mUser Settings[7m │[27m[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m 3.[27m[39m
[31m+ [7m│ 2. [27mWorkspace Settings[7m │[27m[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ 3. [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[77/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'accessibility settings enabled' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'accessibility settings enabled' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- true*[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m true* │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[78/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'file filtering settings configured' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'file filtering settings configured' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- false[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m false │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[79/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'tools and security settings' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'tools and security settings' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- false[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m false │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[80/167]⎯
FAIL src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Snapshot Tests > should render 'all boolean settings disabled' correctly
Error: Snapshot `SettingsDialog > Snapshot Tests > should render 'all boolean settings disabled' correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,144 +2,50 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- > Settings [27m[39m
[32m- [7m [27m│[39m
[31m+ │ > Settings [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ [7m│ [27m╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- S[39m
[32m- earch to filter[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m │ Search to filter │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▲[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ▲ │[39m
[32m- Vim Mode[7m[27m[39m
[32m- [39m
[32m- [39m
[32m- false*[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [7m [39m
[31m+ [7m│ ● [27mVim Mode[7m false* │[39m
[32m- Enable Vim keybindings[7m[27m[39m
[32m- [39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Vim keybindings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Default Approval Mode[7m[27m[39m
[32m- Default[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mDefault Approval Mode[7m Default [27m│[39m
[32m- The default approval mode for tool execution. 'default' prompts for approval, 'au…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe default approval mode for tool execution. 'default' prompts for approval, 'au…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Auto Update[7m[27m[39m
[32m- true*[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Auto Update[7m true* [27m│[39m
[32m- Enable automatic updates.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable automatic updates.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Notifications[7m[27m[39m
[32m- false[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Notifications[7m false [27m│[39m
[32m- Enable run-event notifications for action-required prompts and session completion.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable run-event notifications for action-required prompts and session completion.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Enable Plan Mode[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode[7m true [27m│[39m
[32m- Enable Plan Mode for read-only safety during planning.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mEnable Plan Mode for read-only safety during planning.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Directory[7m[27m[39m
[32m- undefined[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Directory[7m undefined [27m│[39m
[32m- The directory where planning artifacts are stored. If not specified, defaults t…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mThe directory where planning artifacts are stored. If not specified, defaults t…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Plan Model Routing[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mPlan Model Routing[7m true [27m│[39m
[32m- Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mAutomatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Retry Fetch Errors[7m[27m[39m
[32m- true[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry Fetch Errors[7m true [27m│[39m
[32m- Retry on "exception TypeError: fetch failed sending request" errors.[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mRetry on "exception TypeError: fetch failed sending request" errors.[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- [7m▼[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ▼ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Apply To [39m
[31m+ [7m│[27m Apply To [7m│[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- User Settings[39m
[32m- [39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m ● User Settings [27m│[39m
[32m- Workspace Settings[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mWorkspace Settings[7m [27m│[39m
[32m- System Settings[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27mSystem Settings[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- (Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ [27m(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/SettingsDialog.test.tsx:1784:9
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[81/167]⎯
FAIL src/ui/components/SuggestionsDisplay.test.tsx > SuggestionsDisplay > renders suggestions list
Error: Snapshot `SuggestionsDisplay > renders suggestions list 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " command1 Description 1[7m [27m[39m
[31m+ " command1 Description 1[39m
[2m command2 Description 2[22m
[2m command3 Description 3[22m
[2m "[22m
❯ src/ui/components/SuggestionsDisplay.test.tsx:61:25
59| />,
60| );
61| expect(lastFrame()).toMatchSnapshot();
| ^
62| });
63|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[82/167]⎯
FAIL src/ui/components/SuggestionsDisplay.test.tsx > SuggestionsDisplay > highlights active item
Error: Snapshot `SuggestionsDisplay > highlights active item 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m " command1 Description 1[22m
[32m- command2 Description 2[7m [27m[39m
[31m+ command2 Description 2[39m
[2m command3 Description 3[22m
[2m "[22m
❯ src/ui/components/SuggestionsDisplay.test.tsx:78:25
76| />,
77| );
78| expect(lastFrame()).toMatchSnapshot();
| ^
79| });
80|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[83/167]⎯
FAIL src/ui/components/SuggestionsDisplay.test.tsx > SuggestionsDisplay > handles scrolling
Error: Snapshot `SuggestionsDisplay > handles scrolling 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,11 +2,11 @@[39m
[2m Cmd 5 Description 5[22m
[2m Cmd 6 Description 6[22m
[2m Cmd 7 Description 7[22m
[2m Cmd 8 Description 8[22m
[2m Cmd 9 Description 9[22m
[32m- Cmd 10 Description 10[7m [27m[39m
[31m+ Cmd 10 Description 10[39m
[2m Cmd 11 Description 11[22m
[2m Cmd 12 Description 12[22m
[2m ▼[22m
[2m (11/20)[22m
[2m "[22m
❯ src/ui/components/SuggestionsDisplay.test.tsx:99:25
97| />,
98| );
99| expect(lastFrame()).toMatchSnapshot();
| ^
100| });
101|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[84/167]⎯
FAIL src/ui/components/SuggestionsDisplay.test.tsx > SuggestionsDisplay > renders MCP tag for MCP prompts
Error: Snapshot `SuggestionsDisplay > renders MCP tag for MCP prompts 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " mcp-tool [MCP][7m [27m[39m
[31m+ " mcp-tool [MCP][39m
[2m "[22m
❯ src/ui/components/SuggestionsDisplay.test.tsx:122:25
120| />,
121| );
122| expect(lastFrame()).toMatchSnapshot();
| ^
123| });
124|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[85/167]⎯
FAIL src/ui/components/Table.test.tsx > Table > should render headers and data correctly
Error: Snapshot `Table > should render headers and data correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,14 +2,11 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ID[27m[39m
[32m- [7m Name[27m[39m
[31m+ ID Name [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- 1[7m[27m[39m
[32m- [7m Alice[27m[39m
[31m+ 1[7m Alice [27m[39m
[32m- 2[7m[27m[39m
[32m- [7m Bob[27m[39m
[31m+ 2[7m Bob [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Table.test.tsx:35:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[86/167]⎯
FAIL src/ui/components/Table.test.tsx > Table > should support custom cell rendering
Error: Snapshot `Table > should support custom cell rendering 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,10 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- Value[27m[39m
[31m+ Value [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- 20[39m
[31m+ 20[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Table.test.tsx:59:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[87/167]⎯
FAIL src/ui/components/Table.test.tsx > Table > should support inverse text rendering
Error: Snapshot `Table > should support inverse text rendering 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,11 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- Status[27m[39m
[31m+ Status [27m[39m
[32m- ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[31m+ ────────────────────────────────────────────────────────────────────────────────────────────────────[39m
[32m- <[7mrec[27mt x="0" y="3[7m4" width="54" height="17[27m" fill="#fffff[7mf[27m[7m" />[27m[39m
[32m- [7m Active[39m
[31m+ <[7mtex[27mt x="0" y="3[7m6[27m" fill="#fffff[7mf[27m" textLength="[7m900[27m" lengthAdjust="spacingAndGlyphs">Active[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/Table.test.tsx:94:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[88/167]⎯
FAIL src/ui/components/ToolConfirmationQueue.test.tsx > ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large edit diffs
Error: Snapshot `ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large edit diffs 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,543 +2,46 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[39m
[32m- ? replace [39m
[32m- Replaces content in a file[39m
[32m- │[39m
[32m- │[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ... 13 hidden (Ctrl+O) ...[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [39m
[32m- 7[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine7 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [39m
[32m- 8[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine8 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [39m
[32m- 8[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine8 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [39m
[32m- 9[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine9 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- [39m
[32m- 9[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine9 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 10[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine10 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 10[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine10 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 11[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine11 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 11[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine11 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 12[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine12 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 12[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine12 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 13[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine13 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 13[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine13 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 14[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine14 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 14[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine14 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 15[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine15 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 15[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine15 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 16[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine16 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 16[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine16 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 17[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine17 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 17[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine17 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 18[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine18 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 18[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine18 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 19[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine19 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 19[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine19 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 20[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- oldLine20 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- 20[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- const[39m
[32m- [39m
[32m- newLine20 = [39m
[32m- [39m
[32m- true[39m
[32m- [39m
[32m- ;[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────╯[39m
[32m- │[39m
[32m- │[39m
[32m- Apply this change?[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- 1.[39m
[32m- [39m
[32m- [39m
[32m- Allow once[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- 2.[39m
[32m- Allow for this session[39m
[32m- │[39m
[32m- │[39m
[32m- 3.[39m
[32m- Modify with external editor[39m
[32m- │[39m
[32m- │[39m
[32m- 4.[39m
[32m- No, suggest changes (esc)[39m
[32m- │[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ ? replace Replaces content in a file │[39m
[31m+ │ ╭──────────────────────────────────────────────────────────────────────────╮ │[39m
[31m+ │ │ ... 13 hidden (Ctrl+O) ... │ │[39m
[31m+ │ │ 7 + const newLine7 = true; │ │[39m
[31m+ │ │ 8 - const oldLine8 = true; │ │[39m
[31m+ │ │ 8 + const newLine8 = true; │ │[39m
[31m+ │ │ 9 - const oldLine9 = true; │ │[39m
[31m+ │ │ 9 + const newLine9 = true; │ │[39m
[31m+ │ │ 10 - const oldLine10 = true; │ │[39m
[31m+ │ │ 10 + const newLine10 = true; │ │[39m
[31m+ │ │ 11 - const oldLine11 = true; │ │[39m
[31m+ │ │ 11 + const newLine11 = true; │ │[39m
[31m+ │ │ 12 - const oldLine12 = true; │ │[39m
[31m+ │ │ 12 + const newLine12 = true; │ │[39m
[31m+ │ │ 13 - const oldLine13 = true; │ │[39m
[31m+ │ │ 13 + const newLine13 = true; │ │[39m
[31m+ │ │ 14 - const oldLine14 = true; │ │[39m
[31m+ │ │ 14 + const newLine14 = true; │ │[39m
[31m+ │ │ 15 - const oldLine15 = true; │ │[39m
[31m+ │ │ 15 + const newLine15 = true; │ │[39m
[31m+ │ │ 16 - const oldLine16 = true; │ │[39m
[31m+ │ │ 16 + const newLine16 = true; │ │[39m
[31m+ │ │ 17 - const oldLine17 = true; │ │[39m
[31m+ │ │ 17 + const newLine17 = true; │ │[39m
[31m+ │ │ 18 - const oldLine18 = true; │ │[39m
[31m+ │ │ 18 + const newLine18 = true; │ │[39m
[31m+ │ │ 19 - const oldLine19 = true; │ │[39m
[31m+ │ │ 19 + const newLine19 = true; │ │[39m
[31m+ │ │ 20 - const oldLine20 = true; │ │[39m
[31m+ │ │ 20 + const newLine20 = true; │ │[39m
[31m+ │ ╰──────────────────────────────────────────────────────────────────────────╯ │[39m
[31m+ │ Apply this change? │[39m
[31m+ │ │[39m
[31m+ │ ● 1. Allow once │[39m
[31m+ │ 2. Allow for this session │[39m
[31m+ │ 3. Modify with external editor │[39m
[31m+ │ 4. No, suggest changes (esc) │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/ToolConfirmationQueue.test.tsx:455:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[89/167]⎯
FAIL src/ui/components/ToolConfirmationQueue.test.tsx > ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large exec commands
Error: Snapshot `ToolConfirmationQueue > height allocation and layout > should render the full queue wrapper with borders and content for large exec commands 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,219 +2,46 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[39m
[32m- ? Shell [39m
[32m- Executes a bash command[39m
[32m- 2 of 3[39m
[32m- │[39m
[32m- │[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ... 22 hidden (Ctrl+O) ...[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 23"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 24"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 25"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 26"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 27"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 28"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 29"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 30"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 31"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 32"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 33"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 34"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 35"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 36"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 37"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 38"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 39"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 40"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 41"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 42"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 43"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 44"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 45"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 46"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 47"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 48"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 49"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- echo[39m
[32m- "Line 50"[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────╯[39m
[32m- │[39m
[32m- │[39m
[32m- Allow execution of [39m
[32m- [echo][39m
[32m- ? [39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- 1.[39m
[32m- [39m
[32m- [39m
[32m- Allow once[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- 2.[39m
[32m- Allow for this session[39m
[32m- │[39m
[32m- │[39m
[32m- 3.[39m
[32m- No, suggest changes (esc)[39m
[32m- │[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ ? Shell Executes a bash command 2 of 3 │[39m
[31m+ │ ╭──────────────────────────────────────────────────────────────────────────╮ │[39m
[31m+ │ │ ... 22 hidden (Ctrl+O) ... │ │[39m
[31m+ │ │ echo "Line 23" │ │[39m
[31m+ │ │ echo "Line 24" │ │[39m
[31m+ │ │ echo "Line 25" │ │[39m
[31m+ │ │ echo "Line 26" │ │[39m
[31m+ │ │ echo "Line 27" │ │[39m
[31m+ │ │ echo "Line 28" │ │[39m
[31m+ │ │ echo "Line 29" │ │[39m
[31m+ │ │ echo "Line 30" │ │[39m
[31m+ │ │ echo "Line 31" │ │[39m
[31m+ │ │ echo "Line 32" │ │[39m
[31m+ │ │ echo "Line 33" │ │[39m
[31m+ │ │ echo "Line 34" │ │[39m
[31m+ │ │ echo "Line 35" │ │[39m
[31m+ │ │ echo "Line 36" │ │[39m
[31m+ │ │ echo "Line 37" │ │[39m
[31m+ │ │ echo "Line 38" │ │[39m
[31m+ │ │ echo "Line 39" │ │[39m
[31m+ │ │ echo "Line 40" │ │[39m
[31m+ │ │ echo "Line 41" │ │[39m
[31m+ │ │ echo "Line 42" │ │[39m
[31m+ │ │ echo "Line 43" │ │[39m
[31m+ │ │ echo "Line 44" │ │[39m
[31m+ │ │ echo "Line 45" │ │[39m
[31m+ │ │ echo "Line 46" │ │[39m
[31m+ │ │ echo "Line 47" │ │[39m
[31m+ │ │ echo "Line 48" │ │[39m
[31m+ │ │ echo "Line 49" │ │[39m
[31m+ │ │ echo "Line 50" │ │[39m
[31m+ │ ╰──────────────────────────────────────────────────────────────────────────╯ │[39m
[31m+ │ Allow execution of [echo]? │[39m
[31m+ │ │[39m
[31m+ │ ● 1. Allow once │[39m
[31m+ │ 2. Allow for this session │[39m
[31m+ │ 3. No, suggest changes (esc) │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/ToolConfirmationQueue.test.tsx:503:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[90/167]⎯
FAIL src/ui/components/ToolConfirmationQueue.test.tsx > ToolConfirmationQueue > height allocation and layout > should handle security warning height correctly
Error: Snapshot `ToolConfirmationQueue > height allocation and layout > should handle security warning height correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,112 +2,31 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────╮[39m
[32m- │[27m[39m
[32m- [7m ? Shell [27m[39m
[32m- Executes a bash command with a deceptive URL[39m
[32m- 3 of 3[39m
[32m- │[39m
[32m- │[39m
[32m- [7m ... 6 hidden (Ctrl+O) ...[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ │ ? Shell Executes a bash command with a deceptive URL 3 of 3 │[27m[39m
[31m+ [7m [7m│ [27m... 6 hidden (Ctrl+O) ...[7m │[27m[39m
[32m- "Line 44"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ [7m│ │ echo [27m"Line 44"[7m │ │[27m[39m
[32m- "Line 45"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ [7m│ │ echo [27m"Line 45"[7m │ │[27m[39m
[32m- "Line 46"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ [7m│ │ echo [27m"Line 46"[7m │ │[27m[39m
[32m- "Line 47"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ [7m│ │ echo [27m"Line 47"[7m │ │[27m[39m
[32m- "Line 48"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ [7m│ │ echo [27m"Line 48"[7m │ │[27m[39m
[32m- "Line 49"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m echo[27m[39m
[31m+ [7m│ │ echo [27m"Line 49"[7m │ │[27m[39m
[32m- "Line 50"[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ │ echo [27m"Line 50"[7m │ [27m│[39m
[32m- curl https://täst.com[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ [7m│ │ [27mcurl https://täst.com[7m │ [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────╯[39m
[31m+ [7m│ [27m╰──────────────────────────────────────────────────────────────────────────╯[7m │[27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ⚠ [39m
[32m- [7m Warning:[27m[39m
[31m+ │[7m │[27m[39m
[32m- Deceptive URL(s) detected:[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ ⚠ Warning:[27m Deceptive URL(s) detected:[7m [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Original:[27m[39m
[32m- https://täst.com/[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │ Original: https://täst.com/ [27m│[39m
[32m- [27mActual Host (Punycode):[7m[27m[39m
[32m- https://xn--tst-qla.com/[39m
[32m- [7m [27m│[39m
[31m+ │ [27mActual Host (Punycode):[7m https://xn--tst-qla.com/ [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m [27m│[39m
[31m+ │[7m [27m│[39m
[32m- Allow execution of [7m[27m[39m
[32m- [echo][39m
[32m- ? [39m
[32m- [7m [27m│[39m
[31m+ [7m│[27m Allow execution of [7m[echo]? [27m│[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [39m
[32m- ●[39m
[32m- [39m
[32m- [39m
[32m- 1.[39m
[32m- [39m
[32m- [7m [39m
[31m+ │[7m │[39m
[32m- Allow once[7m[27m[39m
[32m- [39m
[32m- │[39m
[32m- │[39m
[32m- [7m 2.[27m[39m
[31m+ [7m│ ● 1. [27mAllow once[7m │[27m[39m
[32m- Allow for this session[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m 3.[27m[39m
[31m+ [7m│ 2. [27mAllow for this session[7m │[27m[39m
[32m- No, suggest changes (esc)[7m[27m[39m
[32m- [7m [27m│[39m
[31m+ [7m│ 3. [27mNo, suggest changes (esc)[7m [27m│[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────╯[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/ToolConfirmationQueue.test.tsx:552:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[91/167]⎯
FAIL src/ui/components/UserIdentity.test.tsx > > should render the user email on the very first frame (regression test)
AssertionError: expected 'Signed in with Google /auth' to contain 'test@example.com'
Expected: [32m"test@example.com"[39m
Received: [31m"Signed in with Google /auth"[39m
❯ src/ui/components/UserIdentity.test.tsx:67:20
65| // Assert immediately on the first available frame before any asyn…
66| const output = lastFrameRaw();
67| expect(output).toContain('test@example.com');
| ^
68| unmount();
69| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[92/167]⎯
FAIL src/ui/components/UserIdentity.test.tsx > > should render plan name and upgrade indicator
AssertionError: expected 'Signed in with Google /auth\nPlan: Pr…' to contain 'Signed in with Google: test@example.c…'
[32m- Expected[39m
[31m+ Received[39m
[32m- Signed in with Google[7m: test@example.com[27m[39m
[31m+ Signed in with Google[7m /auth[27m[39m
[31m+ Plan: Premium Plan /upgrade[39m
[31m+[39m
❯ src/ui/components/UserIdentity.test.tsx:112:20
110|
111| const output = lastFrame();
112| expect(output).toContain('Signed in with Google: test@example.com'…
| ^
113| expect(output).toContain('/auth');
114| expect(output).toContain('Plan: Premium Plan');
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[93/167]⎯
FAIL src/ui/components/ValidationDialog.test.tsx > ValidationDialog > onChoice handling > should open browser and transition to waiting state when verify is selected with a link
AssertionError: expected '╭────────────────────────────────────…' to contain 'Waiting for verification...'
[32m- Expected[39m
[31m+ Received[39m
[32m- Waiting for verification...[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ │[39m
[31m+ │ Further action is required to use this service. │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+[39m
❯ src/ui/components/ValidationDialog.test.tsx:189:27
187| 'https://accounts.google.com/verify',
188| );
189| expect(lastFrame()).toContain('Waiting for verification...');
| ^
190| unmount();
191| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[94/167]⎯
FAIL src/ui/components/ValidationDialog.test.tsx > ValidationDialog > error state > should show error and options when browser fails to open
AssertionError: expected '╭────────────────────────────────────…' to contain 'Browser not found'
[32m- Expected[39m
[31m+ Received[39m
[32m- Browser not found[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ │[39m
[31m+ │ Further action is required to use this service. │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+[39m
❯ src/ui/components/ValidationDialog.test.tsx:235:27
233| await waitUntilReady();
234|
235| expect(lastFrame()).toContain('Browser not found');
| ^
236| // RadioButtonSelect should be rendered again with options in er…
237| expect((RadioButtonSelect as Mock).mock.calls.length).toBeGreate…
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[95/167]⎯
FAIL src/ui/utils/CodeColorizer.test.tsx > colorizeCode > does not let colors from ansi escape codes leak into colorized code
Error: Snapshot `colorizeCode > does not let colors from ansi escape codes leak into colorized code 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,15 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- line [7m[27m[39m
[32m- 1[39m
[32m- line [39m
[32m- 2[39m
[32m- [7m with[27m[39m
[31m+ line [7m1 [27m[39m
[32m- red background[39m
[31m+ [7mline 2 with[27m red background[7m [27m[39m
[32m- line [7m[27m[39m
[32m- [7m 3[27m[39m
[31m+ line [7m3 [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/CodeColorizer.test.tsx:79:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[96/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > renders a 3x3 table correctly
Error: Snapshot `TableRenderer > renders a 3x3 table correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,38 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌──────────────┬──────────────┬──────────────┐[7m[27m[39m
[32m- │[39m
[32m- Header 1[39m
[32m- [7m │[27m[39m
[31m+ ┌──────────────┬──────────────┬──────────────┐[7m [27m[39m
[32m- Header 2[27m[39m
[32m- │[39m
[32m- Header 3[39m
[32m- [7m │[27m[39m
[31m+ │ Header 1 │ Header 2 │ Header 3 │ [27m[39m
[32m- ├──────────────┼──────────────┼──────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├──────────────┼──────────────┼──────────────┤[7m [27m[39m
[32m- Row 1, Col 1[7m[27m[39m
[32m- │[39m
[32m- Row 1, Col 2[39m
[32m- │[39m
[32m- Row 1, Col 3[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mRow 1, Col 1[7m │ Row 1, Col 2 │ Row 1, Col 3 │ [27m[39m
[32m- Row 2, Col 1[7m[27m[39m
[32m- │[39m
[32m- Row 2, Col 2[39m
[32m- │[39m
[32m- Row 2, Col 3[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mRow 2, Col 1[7m │ Row 2, Col 2 │ Row 2, Col 3 │ [27m[39m
[32m- Row 3, Col 1[7m[27m[39m
[32m- │[39m
[32m- Row 3, Col 2[39m
[32m- │[39m
[32m- Row 3, Col 3[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mRow 3, Col 1[7m │ Row 3, Col 2 │ Row 3, Col 3 │ [27m[39m
[32m- └──────────────┴──────────────┴──────────────┘[39m
[31m+ └──────────────┴──────────────┴──────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:32:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[97/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > renders a table with long headers and 4 columns correctly
Error: Snapshot `TableRenderer > renders a table with long headers and 4 columns correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,62 +2,16 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────────────┬───────────────┬──────────────────┬──────────────────┐[7m[27m[39m
[32m- │[39m
[32m- Very Long[39m
[32m- [7m │[27m[39m
[31m+ ┌───────────────┬───────────────┬──────────────────┬──────────────────┐[7m [27m[39m
[32m- Very Long[27m[39m
[32m- │[39m
[32m- Very Long Column[39m
[32m- │[39m
[32m- Very Long Column[39m
[32m- [7m │[27m[39m
[31m+ │ Very Long │ Very Long │ Very Long Column │ Very Long Column │ [27m[39m
[32m- │[7m[27m[39m
[32m- Column Header[39m
[32m- │[39m
[32m- Column Header[39m
[32m- │[39m
[32m- [7m Header Three[27m[39m
[31m+ │[7m Column Header │ Column Header │ Header Three │ Header Four │ [27m[39m
[32m- │[7m[27m[39m
[32m- Header Four[39m
[32m- │[39m
[32m- │[39m
[32m- One[39m
[32m- │[39m
[32m- Two[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │[7m One │ Two │ │ │ [27m[39m
[32m- ├───────────────┼───────────────┼──────────────────┼──────────────────┤[7m[27m[39m
[32m- │[39m
[32m- Data 1.1[39m
[32m- [7m │[27m[39m
[31m+ ├───────────────┼───────────────┼──────────────────┼──────────────────┤[7m [27m[39m
[32m- Data 1.[7m2[27m[39m
[32m- │[39m
[32m- Data 1.3[39m
[32m- │[39m
[32m- Data 1.4[39m
[32m- │[39m
[32m- │[39m
[32m- Data 2.1[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData 1.[7m1 │ Data 1.2 │ Data 1.3 │ Data 1.4 │ [27m[39m
[32m- Data 2.[7m2[27m[39m
[32m- │[39m
[32m- Data 2.3[39m
[32m- │[39m
[32m- Data 2.4[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData 2.[7m1 │ Data 2.2 │ Data 2.3 │ Data 2.4 │ [27m[39m
[32m- Data 3.1[7m[27m[39m
[32m- │[39m
[32m- Data 3.2[39m
[32m- │[39m
[32m- Data 3.3[39m
[32m- │[39m
[32m- Data 3.4[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData 3.1[7m │ Data 3.2 │ Data 3.3 │ Data 3.4 │ [27m[39m
[32m- └───────────────┴───────────────┴──────────────────┴──────────────────┘[39m
[31m+ └───────────────┴───────────────┴──────────────────┴──────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:63:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[98/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > wraps long cell content correctly
Error: Snapshot `TableRenderer > wraps long cell content correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,34 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────┬─────────────────────────────┬───────┐[7m[27m[39m
[32m- │[39m
[32m- Col 1[39m
[32m- [7m │[27m[39m
[31m+ ┌───────┬─────────────────────────────┬───────┐[7m [27m[39m
[32m- Col 2[27m[39m
[32m- │[39m
[32m- Col 3[39m
[32m- [7m │[27m[39m
[31m+ │ Col 1 │ Col 2 │ Col 3 │ [27m[39m
[32m- ├───────┼─────────────────────────────┼───────┤[7m[27m[39m
[32m- │[39m
[32m- Short[39m
[32m- [7m │[27m[39m
[31m+ ├───────┼─────────────────────────────┼───────┤[7m [27m[39m
[32m- This is a very long cell[7m[27m[39m
[32m- │[39m
[32m- Short[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ Short │ [27mThis is a very long cell[7m │ Short │ [27m[39m
[32m- content that should wrap to[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ │ [27mcontent that should wrap to[7m │ │ [27m[39m
[32m- multiple lines[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ │ [27mmultiple lines[7m │ │ [27m[39m
[32m- └───────┴─────────────────────────────┴───────┘[39m
[31m+ └───────┴─────────────────────────────┴───────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:89:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[99/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > wraps all long columns correctly
Error: Snapshot `TableRenderer > wraps all long columns correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,51 +2,16 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌────────────────┬────────────────┬─────────────────┐[7m[27m[39m
[32m- │[39m
[32m- Col 1[39m
[32m- [7m │[27m[39m
[31m+ ┌────────────────┬────────────────┬─────────────────┐[7m [27m[39m
[32m- Col 2[27m[39m
[32m- │[39m
[32m- Col 3[39m
[32m- [7m │[27m[39m
[31m+ │ Col 1 │ Col 2 │ Col 3 │ [27m[39m
[32m- ├────────────────┼────────────────┼─────────────────┤[7m[27m[39m
[32m- │[39m
[32m- This is a very[39m
[32m- [7m │[27m[39m
[31m+ ├────────────────┼────────────────┼─────────────────┤[7m [27m[39m
[32m- This is a[7mlso a[27m[39m
[32m- │[39m
[32m- And this is the[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mThis is a[7m very │ This is also a │ And this is the │ [27m[39m
[32m- long text that[7m[27m[39m
[32m- │[39m
[32m- very long text[39m
[32m- │[39m
[32m- third long text[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mlong text that[7m │ very long text │ third long text │ [27m[39m
[32m- needs wrapping[7m[27m[39m
[32m- │[39m
[32m- that needs[39m
[32m- │[39m
[32m- that needs[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mneeds wrapping[7m │ that needs │ that needs │ [27m[39m
[32m- in column 1[7m[27m[39m
[32m- │[39m
[32m- wrapping in[39m
[32m- │[39m
[32m- wrapping in[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27min column 1[7m │ wrapping in │ wrapping in │ [27m[39m
[32m- [7mcolumn 2[27m[39m
[32m- │[39m
[32m- column 3[39m
[32m- [7m │[27m[39m
[31m+ [7m│ │ column 2 │ column 3 │ [27m[39m
[32m- └────────────────┴────────────────┴─────────────────┘[39m
[31m+ └────────────────┴────────────────┴─────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:114:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[100/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > wraps mixed long and short columns correctly
Error: Snapshot `TableRenderer > wraps mixed long and short columns correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,35 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────┬──────────────────────────┬────────┐[7m[27m[39m
[32m- │[39m
[32m- Short[39m
[32m- [7m │[27m[39m
[31m+ ┌───────┬──────────────────────────┬────────┐[7m [27m[39m
[32m- Long[27m[39m
[32m- │[39m
[32m- Medium[39m
[32m- [7m │[27m[39m
[31m+ │ Short │ Long │ Medium │ [27m[39m
[32m- ├───────┼──────────────────────────┼────────┤[7m[27m[39m
[32m- │[39m
[32m- Tiny[39m
[32m- [7m │[27m[39m
[31m+ ├───────┼──────────────────────────┼────────┤[7m [27m[39m
[32m- This is a very long text[7m[27m[39m
[32m- │[39m
[32m- Not so[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ Tiny │ [27mThis is a very long text[7m │ Not so │ [27m[39m
[32m- that definitely needs to[7m[27m[39m
[32m- │[39m
[32m- long[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ │ [27mthat definitely needs to[7m │ long │ [27m[39m
[32m- wrap to the next line[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ │ [27mwrap to the next line[7m │ │ [27m[39m
[32m- └───────┴──────────────────────────┴────────┘[39m
[31m+ └───────┴──────────────────────────┴────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:140:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[101/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > wraps columns with punctuation correctly
Error: Snapshot `TableRenderer > wraps columns with punctuation correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,50 +2,16 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────────────────┬───────────────┬─────────────────┐[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ┌───────────────────┬───────────────┬─────────────────┐[7m [27m[39m
[32m- Punctuation 1[27m[39m
[32m- │[39m
[32m- Punctuation 2[39m
[32m- │[39m
[32m- Punctuation 3[39m
[32m- [7m │[27m[39m
[31m+ │ Punctuation 1 │ Punctuation 2 │ Punctuation 3 │ [27m[39m
[32m- ├───────────────────┼───────────────┼─────────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├───────────────────┼───────────────┼─────────────────┤[7m [27m[39m
[32m- Start. Stop.[7m[27m[39m
[32m- │[39m
[32m- Semi; colon:[39m
[32m- │[39m
[32m- At@ Hash#[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mStart. Stop.[7m │ Semi; colon: │ At@ Hash# │ [27m[39m
[32m- Comma, separated.[7m[27m[39m
[32m- │[39m
[32m- Pipe| Slash/[39m
[32m- │[39m
[32m- Dollar$[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mComma, separated.[7m │ Pipe| Slash/ │ Dollar$ │ [27m[39m
[32m- Exclamation![7m[27m[39m
[32m- │[39m
[32m- Backslash\[39m
[32m- │[39m
[32m- Percent% Caret^[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mExclamation![7m │ Backslash\ │ Percent% Caret^ │ [27m[39m
[32m- Question?[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Ampersand&[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mQuestion?[7m │ │ Ampersand& │ [27m[39m
[32m- hyphen-ated[7m[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Asterisk*[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mhyphen-ated[7m │ │ Asterisk* │ [27m[39m
[32m- └───────────────────┴───────────────┴─────────────────┘[39m
[31m+ └───────────────────┴───────────────┴─────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:166:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[102/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > strips bold markers from headers and renders them correctly
Error: Snapshot `TableRenderer > strips bold markers from headers and renders them correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,24 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌─────────────┬───────────────┬──────────────┐[7m[27m[39m
[32m- │[39m
[32m- Bold Header[39m
[32m- [7m │[27m[39m
[31m+ ┌─────────────┬───────────────┬──────────────┐[7m [27m[39m
[32m- Normal Header[27m[39m
[32m- │[39m
[32m- Another Bold[39m
[32m- [7m │[27m[39m
[31m+ │ Bold Header │ Normal Header │ Another Bold │ [27m[39m
[32m- ├─────────────┼───────────────┼──────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├─────────────┼───────────────┼──────────────┤[7m [27m[39m
[32m- Data 1[7m[27m[39m
[32m- │[39m
[32m- Data 2[39m
[32m- │[39m
[32m- Data 3[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData 1[7m │ Data 2 │ Data 3 │ [27m[39m
[32m- └─────────────┴───────────────┴──────────────┘[39m
[31m+ └─────────────┴───────────────┴──────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:187:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[103/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > handles wrapped bold headers without showing markers
Error: Snapshot `TableRenderer > handles wrapped bold headers without showing markers 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,46 +2,16 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌─────────────┬───────┬─────────┐[7m[27m[39m
[32m- │[39m
[32m- Very Long[39m
[32m- │[39m
[32m- Short[39m
[32m- [7m │[27m[39m
[31m+ ┌─────────────┬───────┬─────────┐[7m [27m[39m
[32m- Another[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ Very Long │ Short │ Another │ [27m[39m
[32m- Bold Header[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Long[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ Bold Header │ │ Long │ [27m[39m
[32m- That Will[27m[39m
[32m- │[39m
[32m- [7m│[27m[39m
[32m- Header[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ That Will │ │ Header[27m [7m│[27m [7m [27m[39m
[32m- Wrap[27m[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ Wrap │ │ │ [27m[39m
[32m- ├─────────────┼───────┼─────────┤[7m[27m[39m
[32m- │[39m
[32m- Data 1[39m
[32m- [7m │[27m[39m
[31m+ ├─────────────┼───────┼─────────┤[7m [27m[39m
[32m- Data[7m[27m[39m
[32m- │[39m
[32m- Data 3[39m
[32m- │[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData[7m 1 │ Data │ Data 3 │ [27m[39m
[32m- [7m2[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ │ 2 │ │ [27m[39m
[32m- └─────────────┴───────┴─────────┘[39m
[31m+ └─────────────┴───────┴─────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:212:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[104/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > renders a complex table with mixed content lengths correctly
Error: Snapshot `TableRenderer > renders a complex table with mixed content lengths correctly 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,400 +2,41 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌─────────────────────────────┬──────────────────────────────┬─────────────────────────────┬──────────────────────────────┬─────┬────────┬─────────┬───────┐[39m
[32m- │[39m
[32m- Comprehensive Architectural[39m
[32m- │[39m
[32m- Implementation Details for[39m
[32m- │[39m
[32m- Longitudinal Performance[39m
[32m- │[39m
[32m- Strategic Security Framework[39m
[32m- │[39m
[32m- Key[39m
[32m- │[39m
[32m- Status[39m
[32m- │[39m
[32m- Version[39m
[32m- │[39m
[32m- Owner[39m
[32m- │[39m
[32m- │[39m
[32m- Specification for the[39m
[32m- │[39m
[32m- the High-Throughput[39m
[32m- │[39m
[32m- Analysis Across[39m
[32m- │[39m
[32m- for Mitigating Sophisticated[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Distributed Infrastructure[39m
[32m- │[39m
[32m- Asynchronous Message[39m
[32m- │[39m
[32m- Multi-Regional Cloud[39m
[32m- │[39m
[32m- Cross-Site Scripting[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Layer[39m
[32m- │[39m
[32m- Processing Pipeline with[39m
[32m- │[39m
[32m- Deployment Clusters[39m
[32m- │[39m
[32m- Vulnerabilities[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Extended Scalability[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Features and Redundancy[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Protocols[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- ├─────────────────────────────┼──────────────────────────────┼─────────────────────────────┼──────────────────────────────┼─────┼────────┼─────────┼───────┤[39m
[32m- │[39m
[32m- The primary architecture[39m
[32m- │[39m
[32m- Each message is processed[39m
[32m- │[39m
[32m- Historical data indicates a[39m
[32m- │[39m
[32m- A multi-layered defense[39m
[32m- │[39m
[32m- INF[39m
[32m- │[39m
[32m- Active[39m
[32m- │[39m
[32m- v2.4[39m
[32m- │[39m
[32m- J.[39m
[32m- │[39m
[32m- │[39m
[32m- utilizes a decoupled[39m
[32m- │[39m
[32m- through a series of[39m
[32m- │[39m
[32m- significant reduction in[39m
[32m- │[39m
[32m- strategy incorporates[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Doe[39m
[32m- │[39m
[32m- │[39m
[32m- microservices approach,[39m
[32m- │[39m
[32m- specialized workers that[39m
[32m- │[39m
[32m- tail latency when utilizing[39m
[32m- │[39m
[32m- content security policies,[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- leveraging container[39m
[32m- │[39m
[32m- handle data transformation,[39m
[32m- │[39m
[32m- edge computing nodes closer[39m
[32m- │[39m
[32m- input sanitization[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- orchestration for[39m
[32m- │[39m
[32m- validation, and persistent[39m
[32m- │[39m
[32m- to the geographic location[39m
[32m- │[39m
[32m- libraries, and regular[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- scalability and fault[39m
[32m- │[39m
[32m- storage using a persistent[39m
[32m- │[39m
[32m- of the end-user base.[39m
[32m- │[39m
[32m- automated penetration[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- tolerance in high-load[39m
[32m- │[39m
[32m- queue.[39m
[32m- │[39m
[32m- │[39m
[32m- testing routines.[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- scenarios.[39m
[32m- │[39m
[32m- │[39m
[32m- Monitoring tools have[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- The pipeline features[39m
[32m- │[39m
[32m- captured a steady increase[39m
[32m- │[39m
[32m- Developers are required to[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- This layer provides the[39m
[32m- │[39m
[32m- built-in retry mechanisms[39m
[32m- │[39m
[32m- in throughput efficiency[39m
[32m- │[39m
[32m- undergo mandatory security[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- fundamental building blocks[39m
[32m- │[39m
[32m- with exponential backoff to[39m
[32m- │[39m
[32m- since the introduction of[39m
[32m- │[39m
[32m- training focusing on the[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- for service discovery, load[39m
[32m- │[39m
[32m- ensure message delivery[39m
[32m- │[39m
[32m- the vectorized query engine[39m
[32m- │[39m
[32m- OWASP Top Ten to ensure that[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- balancing, and[39m
[32m- │[39m
[32m- integrity even during[39m
[32m- │[39m
[32m- in the primary data[39m
[32m- │[39m
[32m- security is integrated into[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- inter-service communication[39m
[32m- │[39m
[32m- transient network or service[39m
[32m- │[39m
[32m- warehouse.[39m
[32m- │[39m
[32m- the initial design phase.[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- via highly efficient[39m
[32m- │[39m
[32m- failures.[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- protocol buffers.[39m
[32m- │[39m
[32m- │[39m
[32m- Resource utilization[39m
[32m- │[39m
[32m- The implementation of a[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Horizontal autoscaling is[39m
[32m- │[39m
[32m- metrics demonstrate that[39m
[32m- │[39m
[32m- robust Identity and Access[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- Advanced telemetry and[39m
[32m- │[39m
[32m- triggered automatically[39m
[32m- │[39m
[32m- the transition to[39m
[32m- │[39m
[32m- Management system ensures[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- logging integrations allow[39m
[32m- │[39m
[32m- based on the depth of the[39m
[32m- │[39m
[32m- serverless compute for[39m
[32m- │[39m
[32m- that the principle of least[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- for real-time monitoring of[39m
[32m- │[39m
[32m- processing queue, ensuring[39m
[32m- │[39m
[32m- intermittent tasks has[39m
[32m- │[39m
[32m- privilege is strictly[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- system health and rapid[39m
[32m- │[39m
[32m- consistent performance[39m
[32m- │[39m
[32m- resulted in a thirty[39m
[32m- │[39m
[32m- enforced across all[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- identification of[39m
[32m- │[39m
[32m- during unexpected traffic[39m
[32m- │[39m
[32m- percent cost optimization.[39m
[32m- │[39m
[32m- environments.[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- bottlenecks within the[39m
[32m- │[39m
[32m- spikes.[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- service mesh.[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- │[39m
[32m- └─────────────────────────────┴──────────────────────────────┴─────────────────────────────┴──────────────────────────────┴─────┴────────┴─────────┴───────┘[39m
[31m+ ┌─────────────────────────────┬──────────────────────────────┬─────────────────────────────┬──────────────────────────────┬─────┬────────┬─────────┬───────┐ [39m
[31m+ │ Comprehensive Architectural │ Implementation Details for │ Longitudinal Performance │ Strategic Security Framework │ Key │ Status │ Version │ Owner │ [39m
[31m+ │ Specification for the │ the High-Throughput │ Analysis Across │ for Mitigating Sophisticated │ │ │ │ │ [39m
[31m+ │ Distributed Infrastructure │ Asynchronous Message │ Multi-Regional Cloud │ Cross-Site Scripting │ │ │ │ │ [39m
[31m+ │ Layer │ Processing Pipeline with │ Deployment Clusters │ Vulnerabilities │ │ │ │ │ [39m
[31m+ │ │ Extended Scalability │ │ │ │ │ │ │ [39m
[31m+ │ │ Features and Redundancy │ │ │ │ │ │ │ [39m
[31m+ │ │ Protocols │ │ │ │ │ │ │ [39m
[31m+ ├─────────────────────────────┼──────────────────────────────┼─────────────────────────────┼──────────────────────────────┼─────┼────────┼─────────┼───────┤ [39m
[31m+ │ The primary architecture │ Each message is processed │ Historical data indicates a │ A multi-layered defense │ INF │ Active │ v2.4 │ J. │ [39m
[31m+ │ utilizes a decoupled │ through a series of │ significant reduction in │ strategy incorporates │ │ │ │ Doe │ [39m
[31m+ │ microservices approach, │ specialized workers that │ tail latency when utilizing │ content security policies, │ │ │ │ │ [39m
[31m+ │ leveraging container │ handle data transformation, │ edge computing nodes closer │ input sanitization │ │ │ │ │ [39m
[31m+ │ orchestration for │ validation, and persistent │ to the geographic location │ libraries, and regular │ │ │ │ │ [39m
[31m+ │ scalability and fault │ storage using a persistent │ of the end-user base. │ automated penetration │ │ │ │ │ [39m
[31m+ │ tolerance in high-load │ queue. │ │ testing routines. │ │ │ │ │ [39m
[31m+ │ scenarios. │ │ Monitoring tools have │ │ │ │ │ │ [39m
[31m+ │ │ The pipeline features │ captured a steady increase │ Developers are required to │ │ │ │ │ [39m
[31m+ │ This layer provides the │ built-in retry mechanisms │ in throughput efficiency │ undergo mandatory security │ │ │ │ │ [39m
[31m+ │ fundamental building blocks │ with exponential backoff to │ since the introduction of │ training focusing on the │ │ │ │ │ [39m
[31m+ │ for service discovery, load │ ensure message delivery │ the vectorized query engine │ OWASP Top Ten to ensure that │ │ │ │ │ [39m
[31m+ │ balancing, and │ integrity even during │ in the primary data │ security is integrated into │ │ │ │ │ [39m
[31m+ │ inter-service communication │ transient network or service │ warehouse. │ the initial design phase. │ │ │ │ │ [39m
[31m+ │ via highly efficient │ failures. │ │ │ │ │ │ │ [39m
[31m+ │ protocol buffers. │ │ Resource utilization │ The implementation of a │ │ │ │ │ [39m
[31m+ │ │ Horizontal autoscaling is │ metrics demonstrate that │ robust Identity and Access │ │ │ │ │ [39m
[31m+ │ Advanced telemetry and │ triggered automatically │ the transition to │ Management system ensures │ │ │ │ │ [39m
[31m+ │ logging integrations allow │ based on the depth of the │ serverless compute for │ that the principle of least │ │ │ │ │ [39m
[31m+ │ for real-time monitoring of │ processing queue, ensuring │ intermittent tasks has │ privilege is strictly │ │ │ │ │ [39m
[31m+ │ system health and rapid │ consistent performance │ resulted in a thirty │ enforced across all │ │ │ │ │ [39m
[31m+ │ identification of │ during unexpected traffic │ percent cost optimization. │ environments. │ │ │ │ │ [39m
[31m+ │ bottlenecks within the │ spikes. │ │ │ │ │ │ │ [39m
[31m+ │ service mesh. │ │ │ │ │ │ │ │ [39m
[31m+ └─────────────────────────────┴──────────────────────────────┴─────────────────────────────┴──────────────────────────────┴─────┴────────┴─────────┴───────┘ [39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:264:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[105/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'handles non-ASCII characters (emojis …'
Error: Snapshot `TableRenderer > 'handles non-ASCII characters (emojis …' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,31 +2,13 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌──────────────┬────────────┬───────────────┐[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ┌──────────────┬────────────┬───────────────┐[7m [27m[39m
[32m- Emoji 😃[27m[39m
[32m- │[39m
[32m- Asian 汉字[39m
[32m- │[39m
[32m- Mixed 🚀 Text[39m
[32m- [7m │[27m[39m
[31m+ │ Emoji 😃 │ Asian 汉字 │ Mixed 🚀 Text │ [27m[39m
[32m- ├──────────────┼────────────┼───────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├──────────────┼────────────┼───────────────┤[7m [27m[39m
[32m- Start 🌟 End[7m[27m[39m
[32m- │[39m
[32m- 你好世界[39m
[32m- │[39m
[32m- Rocket 🚀 Man[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mStart 🌟 End[7m │ 你好世界 │ Rocket 🚀 Man │ [27m[39m
[32m- Thumbs 👍 Up[7m[27m[39m
[32m- │[39m
[32m- こんにちは[39m
[32m- │[39m
[32m- Fire 🔥[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mThumbs 👍 Up[7m │ こんにちは │ Fire 🔥 │ [27m[39m
[32m- └──────────────┴────────────┴───────────────┘[39m
[31m+ └──────────────┴────────────┴───────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:323:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[106/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'renders a table with only emojis and …'
Error: Snapshot `TableRenderer > 'renders a table with only emojis and …' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,31 +2,13 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌──────────┬───────────┬──────────┐[7m[27m[39m
[32m- │[39m
[32m- Happy 😀[39m
[32m- [7m │[27m[39m
[31m+ ┌──────────┬───────────┬──────────┐[7m [27m[39m
[32m- Rocket 🚀[27m[39m
[32m- │[39m
[32m- Heart ❤️[39m
[32m- [7m │[27m[39m
[31m+ │ Happy 😀 │ Rocket 🚀 │ Heart ❤️ │ [27m[39m
[32m- ├──────────┼───────────┼──────────┤[7m[27m[39m
[32m- │[39m
[32m- Smile 😃[39m
[32m- [7m │[27m[39m
[31m+ ├──────────┼───────────┼──────────┤[7m [27m[39m
[32m- [7mFire 🔥[27m[39m
[32m- │[39m
[32m- Love 💖[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ Smile 😃 │ Fire 🔥 │ Love 💖 │ [27m[39m
[32m- Cool 😎[7m[27m[39m
[32m- │[39m
[32m- Star ⭐[39m
[32m- │[39m
[32m- Blue 💙[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mCool 😎[7m │ Star ⭐ │ Blue 💙 │ [27m[39m
[32m- └──────────┴───────────┴──────────┘[39m
[31m+ └──────────┴───────────┴──────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:323:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[107/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'renders a table with only Asian chara…'
Error: Snapshot `TableRenderer > 'renders a table with only Asian chara…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,31 +2,13 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌──────────────┬─────────────────┬───────────────┐[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ┌──────────────┬─────────────────┬───────────────┐[7m [27m[39m
[32m- Chinese 中文[27m[39m
[32m- │[39m
[32m- Japanese 日本語[39m
[32m- │[39m
[32m- Korean 한국어[39m
[32m- [7m │[27m[39m
[31m+ │ Chinese 中文 │ Japanese 日本語 │ Korean 한국어 │ [27m[39m
[32m- ├──────────────┼─────────────────┼───────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├──────────────┼─────────────────┼───────────────┤[7m [27m[39m
[32m- [7m你好[27m[39m
[32m- │[39m
[32m- こんにちは[39m
[32m- │[39m
[32m- 안녕하세요[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ 你好 │ こんにちは │ 안녕하세요 │ [27m[39m
[32m- [7m世界[27m[39m
[32m- │[39m
[32m- 世界[39m
[32m- │[39m
[32m- 세계[39m
[32m- [7m │[27m[39m
[31m+ [7m│ 世界 │ 世界 │ 세계 │ [27m[39m
[32m- └──────────────┴─────────────────┴───────────────┘[39m
[31m+ └──────────────┴─────────────────┴───────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:323:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[108/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'renders a table with mixed emojis, As…'
Error: Snapshot `TableRenderer > 'renders a table with mixed emojis, As…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,31 +2,13 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────────────┬───────────────────┬────────────────┐[7m[27m[39m
[32m- │[39m
[32m- Mixed 😃 中文[39m
[32m- [7m │[27m[39m
[31m+ ┌───────────────┬───────────────────┬────────────────┐[7m [27m[39m
[32m- Complex 🚀 日本語[27m[39m
[32m- │[39m
[32m- Text 📝 한국어[39m
[32m- [7m │[27m[39m
[31m+ │ Mixed 😃 中文 │ Complex 🚀 日本語 │ Text 📝 한국어 │ [27m[39m
[32m- ├───────────────┼───────────────────┼────────────────┤[7m[27m[39m
[32m- │[39m
[32m- 你好 😃[39m
[32m- [7m │[27m[39m
[31m+ ├───────────────┼───────────────────┼────────────────┤[7m [27m[39m
[32m- [7mこんにちは 🚀[27m[39m
[32m- │[39m
[32m- 안녕하세요 📝[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ 你好 😃 │ こんにちは 🚀 │ 안녕하세요 📝 │ [27m[39m
[32m- World 🌍[7m[27m[39m
[32m- │[39m
[32m- Code 💻[39m
[32m- │[39m
[32m- Pizza 🍕[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mWorld 🌍[7m │ Code 💻 │ Pizza 🍕 │ [27m[39m
[32m- └───────────────┴───────────────────┴────────────────┘[39m
[31m+ └───────────────┴───────────────────┴────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:323:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[109/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'renders correctly when headers are em…'
Error: Snapshot `TableRenderer > 'renders correctly when headers are em…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,18 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌────────┬────────┐[39m
[31m+ ┌────────┬────────┐[7m [27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │[7m │ │ [27m[39m
[32m- ├────────┼────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├────────┼────────┤[7m [27m[39m
[32m- Data 1[7m[27m[39m
[32m- │[39m
[32m- Data 2[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData 1[7m │ Data 2 │ [27m[39m
[32m- └────────┴────────┘[39m
[31m+ └────────┴────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:355:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[110/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'renders correctly when there are more…'
Error: Snapshot `TableRenderer > 'renders correctly when there are more…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,23 +2,12 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌──────────┬──────────┬──────────┐[7m[27m[39m
[32m- │[39m
[32m- Header 1[39m
[32m- [7m │[27m[39m
[31m+ ┌──────────┬──────────┬──────────┐[7m [27m[39m
[32m- Header 2[27m[39m
[32m- │[39m
[32m- Header 3[39m
[32m- [7m │[27m[39m
[31m+ │ Header 1 │ Header 2 │ Header 3 │ [27m[39m
[32m- ├──────────┼──────────┼──────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├──────────┼──────────┼──────────┤[7m [27m[39m
[32m- Data 1[7m[27m[39m
[32m- │[39m
[32m- Data 2[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mData 1[7m │ Data 2 │ │ [27m[39m
[32m- └──────────┴──────────┴──────────┘[39m
[31m+ └──────────┴──────────┴──────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:355:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[111/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'renders complex markdown in rows and …'
Error: Snapshot `TableRenderer > 'renders complex markdown in rows and …' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,52 +2,18 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────────────┬─────────────────────────────┐[7m[27m[39m
[32m- │[39m
[32m- Feature[39m
[32m- [7m │[27m[39m
[31m+ ┌───────────────┬─────────────────────────────┐[7m [27m[39m
[32m- Markdown[27m[39m
[32m- [7m │[27m[39m
[31m+ │ Feature │ Markdown │ [27m[39m
[32m- ├───────────────┼─────────────────────────────┤[7m[27m[39m
[32m- │[39m
[32m- Bold[39m
[32m- [7m │[27m[39m
[31m+ ├───────────────┼─────────────────────────────┤[7m [27m[39m
[32m- Bold Text[27m[39m
[32m- [7m│[27m[39m
[32m- │[39m
[32m- Italic[39m
[32m- [7m │[27m[39m
[31m+ │ Bold │ Bold T[27mext [7m │ [27m[39m
[32m- Italic Text[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Combined[39m
[32m- [7m │[27m[39m
[31m+ │ Italic │ Italic Text │ [27m[39m
[32m- Bold and Italic[27m[39m
[32m- │[39m
[32m- │[39m
[32m- Link[39m
[32m- [7m │[27m[39m
[31m+ │ Combined │ Bold and Italic │ [27m[39m
[32m- [7mGoogle ([27m[39m
[32m- https://google.com[39m
[32m- )[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ Link │ Google (https://google.com) │ [27m[39m
[32m- Code[7m[27m[39m
[32m- │[39m
[32m- const x = 1[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mCode[7m │ const x = 1 │ [27m[39m
[32m- Strikethrough[7m[27m[39m
[32m- │[39m
[32m- Strike[39m
[32m- │[39m
[32m- │[39m
[32m- Underline[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mStrikethrough[7m │ Strike │ [27m[39m
[32m- [27mUnderline[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ │ U[27mnderline[7m │ [27mUnderline[7m │ [27m[39m
[32m- └───────────────┴─────────────────────────────┘[39m
[31m+ └───────────────┴─────────────────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:483:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[112/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'calculates column widths based on ren…'
Error: Snapshot `TableRenderer > 'calculates column widths based on ren…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,38 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌────────┬────────┬────────┐[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ┌────────┬────────┬────────┐[7m [27m[39m
[32m- Col 1[27m[39m
[32m- │[39m
[32m- Col 2[39m
[32m- [7m │[27m[39m
[31m+ │ Col 1 │ Col 2 │ Col 3 │ [27m[39m
[32m- Col 3[27m[39m
[32m- │[39m
[32m- ├────────┼────────┼────────┤[39m
[32m- [7m │[27m[39m
[31m+ ├────────┼────────┼────────┤ [27m[39m
[32m- 123456[27m[39m
[32m- │[39m
[32m- Normal[39m
[32m- │[39m
[32m- Short[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ 123456 │ Normal │ Short │ [27m[39m
[32m- Short[7m[27m[39m
[32m- │[39m
[32m- 123456[39m
[32m- │[39m
[32m- Normal[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mShort[7m │ 123456 │ Normal │ [27m[39m
[32m- Normal[7m[27m[39m
[32m- │[39m
[32m- Short[39m
[32m- │[39m
[32m- 123456[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mNormal[7m │ Short │ 123456 │ [27m[39m
[32m- └────────┴────────┴────────┘[39m
[31m+ └────────┴────────┴────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:483:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[113/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'handles nested markdown styles recurs…'
Error: Snapshot `TableRenderer > 'handles nested markdown styles recurs…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,44 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌─────────────────────────────┬─────────────────────────────┬─────────────────────────────┐[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ┌─────────────────────────────┬─────────────────────────────┬─────────────────────────────┐[7m [27m[39m
[32m- Header 1[27m[39m
[32m- │[39m
[32m- Header 2[39m
[32m- │[39m
[32m- Header 3[39m
[32m- [7m │[27m[39m
[31m+ │ Header 1 │ Header 2 │ Header 3 │ [27m[39m
[32m- ├─────────────────────────────┼─────────────────────────────┼─────────────────────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├─────────────────────────────┼─────────────────────────────┼─────────────────────────────┤[7m [27m[39m
[32m- Bold with [27m[39m
[32m- Italic[39m
[32m- and Strike[39m
[32m- │[39m
[32m- Normal[39m
[32m- │[39m
[32m- Short[39m
[32m- │[39m
[32m- │[39m
[32m- Short[39m
[32m- [7m │[27m[39m
[31m+ │ Bold with Italic and Strike │ Normal │ Short │ [27m[39m
[32m- Bold with [27m[39m
[32m- Italic[39m
[32m- and Strike[39m
[32m- │[39m
[32m- Normal[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │ Short │ Bold with Italic and Strike │ Normal │ [27m[39m
[32m- Normal[7m[27m[39m
[32m- │[39m
[32m- Short[39m
[32m- │[39m
[32m- Bold with [39m
[32m- Italic[39m
[32m- and Strike[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mNormal[7m │ Short │ Bold with Italic and Strike │ [27m[39m
[32m- └─────────────────────────────┴─────────────────────────────┴─────────────────────────────┘[39m
[31m+ └─────────────────────────────┴─────────────────────────────┴─────────────────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:483:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[114/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'calculates width correctly for conten…'
Error: Snapshot `TableRenderer > 'calculates width correctly for conten…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,44 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌───────────────────────────────────┬───────────────────────────────┬─────────────────────────────────┐[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ┌───────────────────────────────────┬───────────────────────────────┬─────────────────────────────────┐[7m [27m[39m
[32m- Col 1[27m[39m
[32m- │[39m
[32m- Col 2[39m
[32m- │[39m
[32m- Col 3[39m
[32m- [7m │[27m[39m
[31m+ │ Col 1 │ Col 2 │ Col 3 │ [27m[39m
[32m- ├───────────────────────────────────┼───────────────────────────────┼─────────────────────────────────┤[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ├───────────────────────────────────┼───────────────────────────────┼─────────────────────────────────┤[7m [27m[39m
[32m- Visit Google ([7m[27m[39m
[32m- https://google.com[39m
[32m- )[39m
[32m- │[39m
[32m- Plain Text[39m
[32m- │[39m
[32m- More Info[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mVisit Google ([7mhttps://google.com) │ Plain Text │ More Info │ [27m[39m
[32m- Info Here[7m[27m[39m
[32m- │[39m
[32m- Visit Bing ([39m
[32m- https://bing.com[39m
[32m- )[39m
[32m- │[39m
[32m- Links[39m
[32m- [7m│[27m[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mInfo Here[7m │ Visit Bing (https://bing.com) │ Links [27m [7m│[27m [7m [27m[39m
[32m- Check This[7m[27m[39m
[32m- │[39m
[32m- Search[39m
[32m- │[39m
[32m- Visit Yahoo ([39m
[32m- https://yahoo.com[39m
[32m- )[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mCheck This[7m │ Search │ Visit Yahoo (https://yahoo.com) │ [27m[39m
[32m- └───────────────────────────────────┴───────────────────────────────┴─────────────────────────────────┘[39m
[31m+ └───────────────────────────────────┴───────────────────────────────┴─────────────────────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:483:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[115/167]⎯
FAIL src/ui/utils/TableRenderer.test.tsx > TableRenderer > 'does not parse markdown inside code s…'
Error: Snapshot `TableRenderer > 'does not parse markdown inside code s…' 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,39 +2,14 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ┌─────────────────┬──────────────────────┬──────────────────┐[7m[27m[39m
[32m- │[39m
[32m- Col 1[39m
[32m- [7m │[27m[39m
[31m+ ┌─────────────────┬──────────────────────┬──────────────────┐[7m [27m[39m
[32m- Col 2[27m[39m
[32m- │[39m
[32m- Col 3[39m
[32m- [7m │[27m[39m
[31m+ │ Col 1 │ Col 2 │ Col 3 │ [27m[39m
[32m- ├─────────────────┼──────────────────────┼──────────────────┤[7m[27m[39m
[32m- │[39m
[32m- **not bold**[39m
[32m- [7m │[27m[39m
[31m+ ├─────────────────┼──────────────────────┼──────────────────┤[7m [27m[39m
[32m- [7m_not italic_[27m[39m
[32m- │[39m
[32m- ~~not strike~~[39m
[32m- │[39m
[32m- │[39m
[32m- [not link](url)[39m
[32m- [7m │[27m[39m
[31m+ [7m│ **not bold** │ _not italic_ │ ~~not strike~~ │ [27m[39m
[32m- <u>not underline</u>[7m[27m[39m
[32m- │[39m
[32m- https://not.link[39m
[32m- │[39m
[32m- │[39m
[32m- Normal Text[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [not link](url) │ [27m<u>not underline</u>[7m │ https://not.link │ [27m[39m
[32m- [7mMore Code: [27m[39m
[32m- *test*[39m
[32m- │[39m
[32m- ***nested***[39m
[32m- [7m │[27m[39m
[31m+ [7m│ Normal Text │ More Code: *test* │ ***nested*** │ [27m[39m
[32m- └─────────────────┴──────────────────────┴──────────────────┘[39m
[31m+ └─────────────────┴──────────────────────┴──────────────────┘[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/TableRenderer.test.tsx:483:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[116/167]⎯
FAIL src/ui/utils/borderStyles.test.tsx > MainContent tool group border SVG snapshots > should render SVG snapshot for a pending search dialog (google_web_search)
Error: Snapshot `MainContent tool group border SVG snapshots > should render SVG snapshot for a pending search dialog (google_web_search) 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,44 +2,22 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ▝[27m[39m
[32m- ▜[39m
[32m- [7m [7m▄[27m[39m
[32m- ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛[39m
[32m- ▝[39m
[32m- ▜[39m
[32m- [7m ▄[27m[39m
[31m+ [7m ▝▜▄ ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛ [27m[39m
[32m- █▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m[27m[39m
[32m- ▗[39m
[32m- ▟[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▝▜▄ [27m█▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m [27m[39m
[32m- ▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m[27m[39m
[32m- ▝[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▗▟▀ [27m▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m [27m[39m
[32m- ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[39m
[31m+ [7m ▝▀ [27m ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[7m [27m[39m
[32m- Gemini CLI[27m[39m
[32m- [7m v1.2.3[27m[39m
[31m+ Gemini CLI v1.2.3 [27m[39m
[32m- Tips for getting started:[7m[27m[39m
[32m- [7m 1. Create[27m [39m
[31m+ Tips for getting started:[7m [27m [39m
[32m- GEMINI.md[27m[39m
[32m- files to customize your interactions[39m
[32m- 2. [39m
[32m- [7m /help[27m[39m
[31m+ 1. Create GEMINI.md files to customize your interactions [27m[39m
[32m- for more information[39m
[31m+ [7m2. /help[27m for more information[7m [27m[39m
[32m- 3. Ask coding questions, edit code or run commands[39m
[31m+ 3. Ask coding questions, edit code or run commands[7m [27m[39m
[32m- 4. Be specific for the best results[39m
[31m+ 4. Be specific for the best results[7m [27m[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- [7m⊶[27m[39m
[32m- google_web_search[39m
[32m- [7m │[27m[39m
[31m+ [7m│ ⊶ google_web_search │ [27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │[7m │ [27m[39m
[32m- Searching...[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mSearching...[7m │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/borderStyles.test.tsx:134:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[117/167]⎯
FAIL src/ui/utils/borderStyles.test.tsx > MainContent tool group border SVG snapshots > should render SVG snapshot for an empty slice following a search tool
Error: Snapshot `MainContent tool group border SVG snapshots > should render SVG snapshot for an empty slice following a search tool 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,44 +2,22 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ▝[27m[39m
[32m- ▜[39m
[32m- [7m [7m▄[27m[39m
[32m- ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛[39m
[32m- ▝[39m
[32m- ▜[39m
[32m- [7m ▄[27m[39m
[31m+ [7m ▝▜▄ ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛ [27m[39m
[32m- █▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m[27m[39m
[32m- ▗[39m
[32m- ▟[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▝▜▄ [27m█▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m [27m[39m
[32m- ▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m[27m[39m
[32m- ▝[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▗▟▀ [27m▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m [27m[39m
[32m- ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[39m
[31m+ [7m ▝▀ [27m ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[7m [27m[39m
[32m- Gemini CLI[27m[39m
[32m- [7m v1.2.3[27m[39m
[31m+ Gemini CLI v1.2.3 [27m[39m
[32m- Tips for getting started:[7m[27m[39m
[32m- [7m 1. Create[27m [39m
[31m+ Tips for getting started:[7m [27m [39m
[32m- GEMINI.md[27m[39m
[32m- files to customize your interactions[39m
[32m- 2. [39m
[32m- [7m /help[27m[39m
[31m+ 1. Create GEMINI.md files to customize your interactions [27m[39m
[32m- for more information[39m
[31m+ [7m2. /help[27m for more information[7m [27m[39m
[32m- 3. Ask coding questions, edit code or run commands[39m
[31m+ 3. Ask coding questions, edit code or run commands[7m [27m[39m
[32m- 4. Be specific for the best results[39m
[31m+ 4. Be specific for the best results[7m [27m[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- [7m⊶[27m[39m
[32m- google_web_search[39m
[32m- [7m │[27m[39m
[31m+ [7m│ ⊶ google_web_search │ [27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │[7m │ [27m[39m
[32m- Searching...[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mSearching...[7m │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/borderStyles.test.tsx:163:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[118/167]⎯
FAIL src/ui/utils/borderStyles.test.tsx > MainContent tool group border SVG snapshots > should render SVG snapshot for a shell tool
Error: Snapshot `MainContent tool group border SVG snapshots > should render SVG snapshot for a shell tool 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,44 +2,22 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- [7m▝[27m[39m
[32m- ▜[39m
[32m- ▄[39m
[32m- ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛[39m
[32m- ▝[39m
[32m- ▜[39m
[32m- [7m ▄[27m[39m
[31m+ [7m ▝▜▄ ▗█▀▀▜▙▝█▛▀▀▌▜██▖▟██▘▜█▘▜██▖▝█▛▝█▛ [27m[39m
[32m- █▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m[27m[39m
[32m- ▗[39m
[32m- ▟[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▝▜▄ [27m█▌ █▙▟ ▐█▝█▛▐█ ▐█ ▐█▝█▖█▌ █▌[7m [27m[39m
[32m- ▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m[27m[39m
[32m- ▝[39m
[32m- [7m ▀[27m[39m
[31m+ [7m ▗▟▀ [27m▜▙ ▝█▛ █▌▝ ▖▐█ ▐█ ▐█ ▐█ ▝██▌ █▌[7m [27m[39m
[32m- ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[39m
[31m+ [7m ▝▀ [27m ▀▀▀▀▘▝▀▀▀▀▘▀▀▘ ▀▀▘▀▀▘▀▀▘ ▝▀▀▝▀▀[7m [27m[39m
[32m- Gemini CLI[27m[39m
[32m- [7m v1.2.3[27m[39m
[31m+ Gemini CLI v1.2.3 [27m[39m
[32m- Tips for getting started:[7m[27m[39m
[32m- [7m 1. Create[27m [39m
[31m+ Tips for getting started:[7m [27m [39m
[32m- GEMINI.md[27m[39m
[32m- files to customize your interactions[39m
[32m- 2. [39m
[32m- [7m /help[27m[39m
[31m+ 1. Create GEMINI.md files to customize your interactions [27m[39m
[32m- for more information[39m
[31m+ [7m2. /help[27m for more information[7m [27m[39m
[32m- 3. Ask coding questions, edit code or run commands[39m
[31m+ 3. Ask coding questions, edit code or run commands[7m [27m[39m
[32m- 4. Be specific for the best results[39m
[31m+ 4. Be specific for the best results[7m [27m[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────╮[7m [27m[39m
[32m- │[27m[39m
[32m- [7m [7m⊶[27m[39m
[32m- run_shell_command[39m
[32m- [7m │[27m[39m
[31m+ [7m│ ⊶ run_shell_command │ [27m[39m
[32m- │[7m[27m[39m
[32m- │[39m
[32m- [7m │[27m[39m
[31m+ │[7m │ [27m[39m
[32m- Running command...[7m[27m[39m
[32m- [7m │[27m[39m
[31m+ [7m│ [27mRunning command...[7m │ [27m[39m
[32m- ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/utils/borderStyles.test.tsx:188:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[119/167]⎯
FAIL src/ui/components/shared/BaseSelectionList.test.tsx > BaseSelectionList > Scrolling and Pagination (maxItemsToShow) > should handle dynamic scrolling through multiple activeIndex changes
Error: 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.
❯ lastFrame src/test-utils/render.tsx:201:13
199|
200| if (normalized === '' && !options.allowEmpty) {
201| throw new Error(
| ^
202| 'lastFrame() returned an empty string. If this is intentional,…
203| 'Otherwise, ensure you are calling await waitUntilReady() an…
❯ src/ui/components/shared/BaseSelectionList.test.tsx:413:16
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[120/167]⎯
FAIL src/ui/components/shared/EnumSelector.test.tsx > > renders with single option and matches snapshot
Error: Snapshot ` > renders with single option and matches snapshot 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Only Option[7m [27m[39m
[31m+ " Only Option[39m
[2m "[22m
❯ src/ui/components/shared/EnumSelector.test.tsx:78:25
76| />,
77| );
78| expect(lastFrame()).toMatchSnapshot();
| ^
79| unmount();
80| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[121/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > renders plain label when no match (short label)
Error: Snapshot `ExpandableText > renders plain label when no match (short label) 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,8 +2,8 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- simple command[39m
[31m+ simple command[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:26:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[122/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > truncates long label when collapsed and no match
Error: Snapshot `ExpandableText > truncates long label when collapsed and no match 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,9 +2,9 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[39m
[31m+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[39m
[32m- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...[39m
[31m+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:45:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[123/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > shows full long label when expanded and no match
Error: Snapshot `ExpandableText > shows full long label when expanded and no match 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,9 +2,9 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[39m
[31m+ yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[39m
[32m- yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[39m
[31m+ yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:63:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[124/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > highlights matched substring when expanded (text only visible)
Error: Snapshot `ExpandableText > highlights matched substring when expanded (text only visible) 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,11 +2,8 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- run: git [7m[27m[39m
[32m- [39m
[32m- commit[39m
[32m- [7m -m "feat: add search"[27m[39m
[31m+ run: git [7mcommit -m "feat: add search" [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:82:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[125/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > creates centered window around match when collapsed
Error: Snapshot `ExpandableText > creates centered window around match when collapsed 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,12 +2,9 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ...ry/long/path/that/keeps/going/cd_/very/long/path/that/keeps/going/[7m[27m[39m
[32m- [39m
[32m- search-here[39m
[32m- [7m [27m/and/then/some/more/[39m
[31m+ ...ry/long/path/that/keeps/going/cd_/very/long/path/that/keeps/going/[7msearch-here[27m/and/then/some/more/[39m
[32m- components//and/then/some/more/components//and/...[39m
[31m+ components//and/then/some/more/components//and/...[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:108:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[126/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > truncates match itself when match is very long
Error: Snapshot `ExpandableText > truncates match itself when match is very long 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,11 +2,9 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- [39m
[32m- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[39m
[31m+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[39m
[32m- [39m
[32m- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...[39m
[31m+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:134:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[127/167]⎯
FAIL src/ui/components/shared/ExpandableText.test.tsx > ExpandableText > respects custom maxWidth
Error: Snapshot `ExpandableText > respects custom maxWidth 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,8 +2,8 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...[39m
[31m+ zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...[7m [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/shared/ExpandableText.test.tsx:155:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[128/167]⎯
FAIL src/ui/components/shared/HalfLinePaddedBox.test.tsx > > renders standard background and blocks when not iTerm2
Error: Snapshot ` > renders standard background and blocks when not iTerm2 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀[22m
[32m- Content[7m [27m[39m
[31m+ Content[39m
[2m ▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/shared/HalfLinePaddedBox.test.tsx:38:25
36| );
37|
38| expect(lastFrame()).toMatchSnapshot();
| ^
39|
40| unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[129/167]⎯
FAIL src/ui/components/shared/HalfLinePaddedBox.test.tsx > > renders iTerm2-specific blocks when iTerm2 is detected
Error: Snapshot ` > renders iTerm2-specific blocks when iTerm2 is detected 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▄▄▄▄▄▄▄▄▄▄[22m
[32m- Content[7m [27m[39m
[31m+ Content[39m
[2m ▀▀▀▀▀▀▀▀▀▀[22m
[2m "[22m
❯ src/ui/components/shared/HalfLinePaddedBox.test.tsx:53:25
51| );
52|
53| expect(lastFrame()).toMatchSnapshot();
| ^
54|
55| unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[130/167]⎯
FAIL src/ui/components/shared/SearchableList.test.tsx > SearchableList > should reset selection to top when items change if resetSelectionOnItemsChange is true
Error: Snapshot `SearchableList > should reset selection to top when items change if resetSelectionOnItemsChange is true 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,14 +2,14 @@[39m
[2m ╭────────────────────────────────────────────────────────────────────────────────────────────────╮[22m
[2m │ Search... │[22m
[2m ╰────────────────────────────────────────────────────────────────────────────────────────────────╯[22m
[32m- Item One[7m [27m[39m
[31m+ Item One[39m
[2m Description for item one[22m
[32m- ● Item Two[7m [27m[39m
[31m+ ● Item Two[39m
[2m Description for item two[22m
[2m Item Three[22m
[2m Description for item three[22m
[2m "[22m
❯ src/ui/components/shared/SearchableList.test.tsx:123:25
121| expect(frame).toContain('● Item Two');
122| });
123| expect(lastFrame()).toMatchSnapshot();
| ^
124|
125| await React.act(async () => {
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[131/167]⎯
FAIL src/ui/components/shared/SearchableList.test.tsx > SearchableList > should match snapshot
Error: Snapshot `SearchableList > should match snapshot 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,14 +2,14 @@[39m
[2m ╭────────────────────────────────────────────────────────────────────────────────────────────────╮[22m
[2m │ Search... │[22m
[2m ╰────────────────────────────────────────────────────────────────────────────────────────────────╯[22m
[32m- ● Item One[7m [27m[39m
[31m+ ● Item One[39m
[2m Description for item one[22m
[32m- Item Two[7m [27m[39m
[31m+ Item Two[39m
[2m Description for item two[22m
[2m Item Three[22m
[2m Description for item three[22m
[2m "[22m
❯ src/ui/components/shared/SearchableList.test.tsx:220:25
218| it('should match snapshot', async () => {
219| const { lastFrame } = await renderList();
220| expect(lastFrame()).toMatchSnapshot();
| ^
221| });
222| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[132/167]⎯
FAIL src/ui/components/shared/VirtualizedList.test.tsx > > with 10px height and 100 items > scrolls down to show new items when requested via ref
AssertionError: expected '╭────────────────────────────────────…' to contain 'Item 0'
[32m- Expected[39m
[31m+ Received[39m
[32m- Item 0[39m
[31m+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮[39m
[31m+ │ █│[39m
[31m+ │ ▀│[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ │ │[39m
[31m+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[39m
[31m+[39m
❯ src/ui/components/shared/VirtualizedList.test.tsx:132:27
130| );
131|
132| expect(lastFrame()).toContain('Item 0');
| ^
133|
134| // Scroll to bottom via ref
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[133/167]⎯
FAIL src/ui/components/shared/VirtualizedList.test.tsx > > renders more items when a visible item shrinks via context update
Error: 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.
❯ lastFrame src/test-utils/render.tsx:201:13
199|
200| if (normalized === '' && !options.allowEmpty) {
201| throw new Error(
| ^
202| 'lastFrame() returned an empty string. If this is intentional,…
203| 'Otherwise, ensure you are calling await waitUntilReady() an…
❯ src/ui/components/shared/VirtualizedList.test.tsx:259:12
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[134/167]⎯
FAIL src/ui/components/shared/VirtualizedList.test.tsx > > renders correctly in copyModeEnabled when scrolled
Error: 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.
❯ lastFrame src/test-utils/render.tsx:201:13
199|
200| if (normalized === '' && !options.allowEmpty) {
201| throw new Error(
| ^
202| 'lastFrame() returned an empty string. If this is intentional,…
203| 'Otherwise, ensure you are calling await waitUntilReady() an…
❯ src/ui/components/shared/VirtualizedList.test.tsx:340:12
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[135/167]⎯
FAIL src/ui/components/messages/DenseToolMessage.test.tsx > DenseToolMessage > Visual Regression > matches SVG snapshot for an Accepted file edit with diff stats
Error: Snapshot `DenseToolMessage > Visual Regression > matches SVG snapshot for an Accepted file edit with diff stats 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,32 +2,10 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- [7m✓[27m[39m
[32m- [7medit [27m[39m
[32m- test.ts[39m
[32m- → Accepted[39m
[32m- ([39m
[32m- +1[39m
[32m- , [39m
[32m- [7m -1[27m[39m
[31m+ [7m✓[27m [7medit test.ts → Accepted (+1, -1) [27m[39m
[32m- [7m)[27m[39m
[32m- [39m
[32m- 1[39m
[32m- [39m
[32m- [39m
[32m- -[39m
[32m- [39m
[32m- [39m
[32m- old[39m
[32m- [7m [39m
[31m+ [7m 1 - old [39m
[32m- [7m1[27m[39m
[32m- [39m
[32m- [39m
[32m- +[39m
[32m- [39m
[32m- [39m
[32m- [7m new[27m[39m
[31m+ [7m 1 + new [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/messages/DenseToolMessage.test.tsx:599:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[136/167]⎯
FAIL src/ui/components/messages/DenseToolMessage.test.tsx > DenseToolMessage > Visual Regression > matches SVG snapshot for a Rejected tool call
Error: Snapshot `DenseToolMessage > Visual Regression > matches SVG snapshot for a Rejected tool call 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,10 +2,8 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- -[27m[39m
[32m- read_file [39m
[32m- [7m Reading important.txt[27m[39m
[31m+ - read_file Reading important.txt [27m[39m
[2m [22m
[2m [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/messages/DenseToolMessage.test.tsx:614:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[137/167]⎯
FAIL src/ui/components/messages/RedirectionConfirmation.test.tsx > ToolConfirmationMessage Redirection > should display redirection warning and tip for redirected commands
Error: Snapshot `ToolConfirmationMessage Redirection > should display redirection warning and tip for redirected commands 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,9 +2,9 @@[39m
[2m │ echo "hello" > test.txt │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯[22m
[2m Allow execution of [echo]?[22m
[2m Redirection detected. To auto-accept, press Shift+Tab[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/RedirectionConfirmation.test.tsx:50:20
48|
49| const output = lastFrame();
50| expect(output).toMatchSnapshot();
| ^
51| unmount();
52| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[138/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > renders subject line with vertical rule and "Thinking..." header
Error: Snapshot `ThinkingMessage > renders subject line with vertical rule and "Thinking..." header 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Planning[22m
[2m │ test[22m
[2m "[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:27:20
25| expect(output).toContain('│');
26| expect(output).toContain('Planning');
27| expect(output).toMatchSnapshot();
| ^
28| await expect(renderResult).toMatchSvgSnapshot();
29| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[139/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > uses description when subject is empty
Error: Snapshot `ThinkingMessage > uses description when subject is empty 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Processing details[22m
[2m "[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:45:20
43| expect(output).toContain('Processing details');
44| expect(output).toContain('│');
45| expect(output).toMatchSnapshot();
| ^
46| await expect(renderResult).toMatchSvgSnapshot();
47| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[140/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > renders full mode with left border and full text
Error: Snapshot `ThinkingMessage > renders full mode with left border and full text 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Planning[22m
[2m │ I am planning the solution.[22m
[2m "[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:67:20
65| expect(output).toContain('Planning');
66| expect(output).toContain('I am planning the solution.');
67| expect(output).toMatchSnapshot();
| ^
68| await expect(renderResult).toMatchSvgSnapshot();
69| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[141/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > renders "Thinking..." header when isFirstThinking is true
Error: Snapshot `ThinkingMessage > renders "Thinking..." header when isFirstThinking is true 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Summary line[22m
[2m │ First body line[22m
[2m "[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:89:20
87| expect(output).toContain('Summary line');
88| expect(output).toContain('│');
89| expect(output).toMatchSnapshot();
| ^
90| await expect(renderResult).toMatchSvgSnapshot();
91| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[142/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > normalizes escaped newline tokens
Error: Snapshot `ThinkingMessage > normalizes escaped newline tokens 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Matching the Blocks[22m
[2m │ Some more text[22m
[2m "[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:107:38
105| await renderResult.waitUntilReady();
106|
107| expect(renderResult.lastFrame()).toMatchSnapshot();
| ^
108| await expect(renderResult).toMatchSvgSnapshot();
109| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[143/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > renders multiple thinking messages sequentially correctly
Error: Snapshot `ThinkingMessage > renders multiple thinking messages sequentially correctly 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -1,6 +1,6 @@[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Initial analysis[22m
[2m │ This is a multiple line paragraph for the first thinking message of how the[22m
[2m │ model analyzes the problem.[22m
[2m │[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:158:38
156| await renderResult.waitUntilReady();
157|
158| expect(renderResult.lastFrame()).toMatchSnapshot();
| ^
159| await expect(renderResult).toMatchSvgSnapshot();
160| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[144/167]⎯
FAIL src/ui/components/messages/ThinkingMessage.test.tsx > ThinkingMessage > filters out progress dots and empty lines
Error: Snapshot `ThinkingMessage > filters out progress dots and empty lines 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- " Thinking...[7m [27m[39m
[31m+ " Thinking...[39m
[2m │[22m
[2m │ Thinking[22m
[2m │ Done[22m
[2m "[22m
❯ src/ui/components/messages/ThinkingMessage.test.tsx:176:38
174| expect(output).toContain('Thinking');
175| expect(output).toContain('Done');
176| expect(renderResult.lastFrame()).toMatchSnapshot();
| ^
177| await expect(renderResult).toMatchSvgSnapshot();
178| renderResult.unmount();
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[145/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > should not display urls if prompt and url are the same
Error: Snapshot `ToolConfirmationMessage > should not display urls if prompt and url are the same 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "https://example.com[22m
[2m Do you want to proceed?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:69:25
67| );
68|
69| expect(lastFrame()).toMatchSnapshot();
| ^
70| unmount();
71| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[146/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > should display urls if prompt and url are different
Error: Snapshot `ToolConfirmationMessage > should display urls if prompt and url are different 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,9 +2,9 @@[39m
[2m URLs to fetch:[22m
[2m - https://raw.githubusercontent.com/google/gemini-react/main/README.md[22m
[2m Do you want to proceed?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:96:25
94| );
95|
96| expect(lastFrame()).toMatchSnapshot();
| ^
97| unmount();
98| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[147/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > should display multiple commands for exec type when provided
Error: Snapshot `ToolConfirmationMessage > should display multiple commands for exec type when provided 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -5,9 +5,9 @@[39m
[2m │ │[22m
[2m │ whoami │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Allow execution of [echo, ls, whoami]?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:242:20
240| expect(output).toContain('ls -la');
241| expect(output).toContain('whoami');
242| expect(output).toMatchSnapshot();
| ^
243| unmount();
244| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[148/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > should render multiline shell scripts with correct newlines and syntax highlighting
Error: Snapshot `ToolConfirmationMessage > should render multiline shell scripts with correct newlines and syntax highlighting 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -4,8 +4,8 @@[39m
[2m │ echo $i │[22m
[2m │ done │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Allow execution of [echo]?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)"[22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:73:34
71|
72| // Assert the text matches standard snapshot, stripping ANSI for sta…
73| expect(stripAnsi(textContent)).toMatchSnapshot();
| ^
74|
75| // Assert the SVG matches the file snapshot
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:274:26
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[149/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should show "allow always" when folder is trusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should show "allow always" when folder is trusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -3,10 +3,10 @@[39m
[2m │ No changes detected. │[22m
[2m │ │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Apply this change?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. Modify with external editor[22m
[2m 4. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:353:29
351| );
352|
353| expect(lastFrame()).toMatchSnapshot();
| ^
354| unmount();
355| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[150/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should NOT show "allow always" when folder is untrusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for edit confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -3,9 +3,9 @@[39m
[2m │ No changes detected. │[22m
[2m │ │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Apply this change?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Modify with external editor[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:377:29
375| );
376|
377| expect(lastFrame()).toMatchSnapshot();
| ^
378| unmount();
379| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[151/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should show "allow always" when folder is trusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should show "allow always" when folder is trusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "╭──────────────────────────────────────────────────────────────────────────────╮[22m
[2m │ echo "hello" │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Allow execution of [echo]?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:353:29
351| );
352|
353| expect(lastFrame()).toMatchSnapshot();
| ^
354| unmount();
355| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[152/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should NOT show "allow always" when folder is untrusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for exec confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "╭──────────────────────────────────────────────────────────────────────────────╮[22m
[2m │ echo "hello" │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Allow execution of [echo]?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:377:29
375| );
376|
377| expect(lastFrame()).toMatchSnapshot();
| ^
378| unmount();
379| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[153/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for info confirmations' > should show "allow always" when folder is trusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for info confirmations' > should show "allow always" when folder is trusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "https://example.com[22m
[2m Do you want to proceed?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:353:29
351| );
352|
353| expect(lastFrame()).toMatchSnapshot();
| ^
354| unmount();
355| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[154/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for info confirmations' > should NOT show "allow always" when folder is untrusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for info confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "https://example.com[22m
[2m Do you want to proceed?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:377:29
375| );
376|
377| expect(lastFrame()).toMatchSnapshot();
| ^
378| unmount();
379| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[155/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should show "allow always" when folder is trusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should show "allow always" when folder is trusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "MCP Server: test-server[22m
[2m Tool: test-tool[22m
[2m Allow execution of MCP tool "test-tool" from server "test-server"?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow tool for this session[22m
[2m 3. Allow all server tools for this session[22m
[2m 4. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:353:29
351| );
352|
353| expect(lastFrame()).toMatchSnapshot();
| ^
354| unmount();
355| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[156/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should NOT show "allow always" when folder is untrusted
Error: Snapshot `ToolConfirmationMessage > with folder trust > 'for mcp confirmations' > should NOT show "allow always" when folder is untrusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "MCP Server: test-server[22m
[2m Tool: test-tool[22m
[2m Allow execution of MCP tool "test-tool" from server "test-server"?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:377:29
375| );
376|
377| expect(lastFrame()).toMatchSnapshot();
| ^
378| unmount();
379| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[157/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > enablePermanentToolApproval setting > should show "Allow for all future sessions" when trusted
Error: Snapshot `ToolConfirmationMessage > enablePermanentToolApproval setting > should show "Allow for all future sessions" when trusted 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -3,11 +3,11 @@[39m
[2m │ No changes detected. │[22m
[2m │ │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Apply this change?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. Allow for this file in all future sessions ~/.gemini/policies/auto-saved.toml[22m
[2m 4. Modify with external editor[22m
[2m 5. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:449:22
447| expect(output).toContain('future sessions');
448| // Verify it is the default selection (matching the indicator in…
449| expect(output).toMatchSnapshot();
| ^
450| unmount();
451| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[158/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > should strip BiDi characters from MCP tool and server names
Error: Snapshot `ToolConfirmationMessage > should strip BiDi characters from MCP tool and server names 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "MCP Server: testserver[22m
[2m Tool: testtool[22m
[2m Allow execution of MCP tool "testtool" from server "testserver"?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow tool for this session[22m
[2m 3. Allow all server tools for this session[22m
[2m 4. No, suggest changes (esc)[22m
[2m "[22m
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:590:20
588| expect(output).toContain('Allow execution of MCP tool "testtool"');
589| expect(output).toContain('from server "testserver"?');
590| expect(output).toMatchSnapshot();
| ^
591| unmount();
592| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[159/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > height allocation and layout > should expand to available height for large exec commands
Error: Snapshot `ToolConfirmationMessage > height allocation and layout > should expand to available height for large exec commands 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -32,9 +32,9 @@[39m
[2m │ echo "Line 49" │[22m
[2m │ echo "Line 50" │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Allow execution of [echo]?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. No, suggest changes (esc)[22m
[2m "[22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:73:34
71|
72| // Assert the text matches standard snapshot, stripping ANSI for sta…
73| expect(stripAnsi(textContent)).toMatchSnapshot();
| ^
74|
75| // Assert the SVG matches the file snapshot
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:702:48
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[160/167]⎯
FAIL src/ui/components/messages/ToolConfirmationMessage.test.tsx > ToolConfirmationMessage > height allocation and layout > should expand to available height for large edit diffs
Error: Snapshot `ToolConfirmationMessage > height allocation and layout > should expand to available height for large edit diffs 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -31,10 +31,10 @@[39m
[2m │ 20 - const oldLine20 = true; │[22m
[2m │ 20 + const newLine20 = true; │[22m
[2m ╰──────────────────────────────────────────────────────────────────────────────╯[22m
[2m Apply this change?[22m
[32m- ● 1. Allow once[7m [27m[39m
[31m+ ● 1. Allow once[39m
[2m 2. Allow for this session[22m
[2m 3. Modify with external editor[22m
[2m 4. No, suggest changes (esc)[22m
[2m "[22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:73:34
71|
72| // Assert the text matches standard snapshot, stripping ANSI for sta…
73| expect(stripAnsi(textContent)).toMatchSnapshot();
| ^
74|
75| // Assert the SVG matches the file snapshot
❯ src/ui/components/messages/ToolConfirmationMessage.test.tsx:743:48
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[161/167]⎯
FAIL src/ui/components/messages/ToolGroupMessage.test.tsx > > Golden Snapshots > renders two tool groups where only the last line of the previous group is visible
Error: Snapshot ` > Golden Snapshots > renders two tool groups where only the last line of the previous group is visible 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[32m- "[7m╰──────────────────────────────────────────────────────────────────────────╯[27m[39m
[32m- ╭──────────────────────────────────────────────────────────────────────────╮[39m
[31m+ "╭──────────────────────────────────────────────────────────────────────────╮[7m █[27m[39m
[32m- │ ✓ tool-[7m2[27m Description [7m2[27m │[39m
[31m+ │ ✓ tool-[7m1[27m Description [7m1[27m │[7m █[27m[39m
[32m- │ │ [7m▄[27m[39m
[31m+ │ │ [7m▀[27m[39m
[32m- │ line1 │[7m [27m [7m█[27m[39m
[32m- [7m╰──────────────────────────────────────────────────────────────────────────╯[27m [7m█[27m[39m
[31m+ │ line1 │[39m
[31m+ [7m│ line2[27m [7m │[27m[39m
[31m+ [7m│ line3 [27m [7m│[27m[39m
[2m "[22m
❯ src/ui/components/messages/ToolGroupMessage.test.tsx:585:47
583| },
584| );
585| expect(lastFrame({ allowEmpty: true })).toMatchSnapshot();
| ^
586| unmount();
587| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[162/167]⎯
FAIL src/ui/components/messages/ToolResultDisplay.test.tsx > ToolResultDisplay > truncates ANSI output when maxLines is provided, even if availableTerminalHeight is undefined
Error: Snapshot `ToolResultDisplay > truncates ANSI output when maxLines is provided, even if availableTerminalHeight is undefined 2` mismatched
[32m- Expected[39m
[31m+ Received[39m
[33m@@ -2,11 +2,11 @@[39m
[2m [22m
[2m [22m
[2m [22m
[32m- ... 26 hidden (Ctrl+O) ...[39m
[31m+ ... 26 hidden (Ctrl+O) ...[7m [27m[39m
[2m Line 27 [22m
[2m Line 28 [22m
[2m Line 29 [22m
[2m Line 30 [22m
[2m Line 31 [22m
❯ Object.toMatchSvgSnapshot src/test-utils/customMatchers.ts:76:3
74|
75| // Assert the SVG matches the file snapshot
76| await expect(svgContent).toMatchFileSnapshot(svgFilePath);
| ^
77|
78| return { pass: true, message: () => '' };
❯ src/ui/components/messages/ToolResultDisplay.test.tsx:393:5
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[163/167]⎯
FAIL src/ui/components/messages/UserMessage.test.tsx > UserMessage > renders normal user message with correct prefix
Error: Snapshot `UserMessage > renders normal user message with correct prefix 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Hello Gemini[7m [27m[39m
[31m+ > Hello Gemini[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/messages/UserMessage.test.tsx:24:20
22| const output = lastFrame();
23|
24| expect(output).toMatchSnapshot();
| ^
25| unmount();
26| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[164/167]⎯
FAIL src/ui/components/messages/UserMessage.test.tsx > UserMessage > renders slash command message
Error: Snapshot `UserMessage > renders slash command message 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > /help[7m [27m[39m
[31m+ > /help[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/messages/UserMessage.test.tsx:35:20
33| const output = lastFrame();
34|
35| expect(output).toMatchSnapshot();
| ^
36| unmount();
37| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[165/167]⎯
FAIL src/ui/components/messages/UserMessage.test.tsx > UserMessage > renders multiline user message
Error: Snapshot `UserMessage > renders multiline user message 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Line 1[7m [27m[39m
[32m- Line 2 [39m
[31m+ > Line 1[39m
[31m+ Line 2[39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/messages/UserMessage.test.tsx:47:20
45| const output = lastFrame();
46|
47| expect(output).toMatchSnapshot();
| ^
48| unmount();
49| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[166/167]⎯
FAIL src/ui/components/messages/UserMessage.test.tsx > UserMessage > transforms image paths in user message
Error: Snapshot `UserMessage > transforms image paths in user message 1` mismatched
[32m- Expected[39m
[31m+ Received[39m
[2m "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[22m
[32m- > Check out this image: [Image my-image.png][7m [27m[39m
[31m+ > Check out this image: [Image my-image.png][39m
[2m ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[22m
[2m "[22m
❯ src/ui/components/messages/UserMessage.test.tsx:60:20
58|
59| expect(output).toContain('[Image my-image.png]');
60| expect(output).toMatchSnapshot();
| ^
61| unmount();
62| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[167/167]⎯
Snapshots 160 failed
14 obsolete
↳ src/ui/components/MainContent.test.tsx
· MainContent > MainContent Tool Output Height Logic > 'ASB mode - Focused shell should expand' 1
· MainContent > renders multiple thinking messages sequentially correctly 2
↳ src/ui/components/shared/SearchableList.test.tsx
· SearchableList > should reset selection to top when items change if resetSelectionOnItemsChange is true 2
· SearchableList > should reset selection to top when items change if resetSelectionOnItemsChange is true 3
↳ src/ui/components/messages/ThinkingMessage.test.tsx
· ThinkingMessage > filters out progress dots and empty lines 2
· ThinkingMessage > normalizes escaped newline tokens 2
· ThinkingMessage > renders "Thinking..." header when isFirstThinking is true 2
· ThinkingMessage > renders full mode with left border and full text 2
· ThinkingMessage > renders multiple thinking messages sequentially correctly 2
· ThinkingMessage > renders subject line with vertical rule and "Thinking..." header 2
· ThinkingMessage > uses description when subject is empty 2
↳ src/ui/components/InputPrompt.test.tsx
· InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows > command-search-render-collapsed-match 1
· InputPrompt > command search (Ctrl+R when not in shell) > renders match window and expanded view (snapshots) > command-search-render-expanded-match 1
↳ src/ui/components/messages/DiffRenderer.test.tsx
· > with useAlternateBuffer = false > should not render a gap indicator for small gaps (<= MAX_CONTEXT_LINES_WITHOUT_GAP) 2
Test Files 44 failed | 390 passed (434)
Tests 165 failed | 6257 passed | 4 skipped (6426)
Start at 22:56:26
Duration 1160.03s (transform 41.26s, setup 5142.07s, collect 612.16s, tests 965.31s, environment 189ms, prepare 199.99s)
JUNIT report written to /Users/mattkorwel/dev/gemini-cli/main/packages/cli/junit.xml
npm error Lifecycle script `test` failed with error:
npm error code 1
npm error path /Users/mattkorwel/dev/gemini-cli/main/packages/cli
npm error workspace @google/gemini-cli@0.39.0-nightly.20260408.e77b22e63
npm error location /Users/mattkorwel/dev/gemini-cli/main/packages/cli
npm error command failed
npm error command sh -c vitest run --pool=threads