@@ -34,7 +34,7 @@ afterEach(() => {
3434} ) ;
3535
3636describe ( 'UsageFooter' , ( ) => {
37- it ( 'renders emoji live status inline with footer stats and only animates while running ' , ( ) => {
37+ it ( 'renders idle, thinking, and running live status inline with footer stats' , ( ) => {
3838 const { container, rerender } = render (
3939 < UsageFooter
4040 usage = { {
@@ -55,6 +55,7 @@ describe('UsageFooter', () => {
5555 expect ( idleStatus ?. getAttribute ( 'aria-label' ) ) . toContain ( 'Agent idle' ) ;
5656 expect ( container . querySelector ( '.chat-thinking-dots' ) ) . toBeNull ( ) ;
5757 expect ( container . querySelector ( '.session-live-status-inline.idle .session-live-status-emoji.sleep' ) ) . toBeTruthy ( ) ;
58+ expect ( container . querySelector ( '.session-live-status-text' ) ) . toBeNull ( ) ;
5859
5960 rerender (
6061 < UsageFooter
@@ -72,13 +73,32 @@ describe('UsageFooter', () => {
7273
7374 const runningStatus = container . querySelector ( '.session-live-status-inline' ) as HTMLSpanElement | null ;
7475 expect ( runningStatus ?. textContent ) . toContain ( '🤖' ) ;
75- expect ( runningStatus ?. textContent ) . toContain ( '⚙️ ' ) ;
76+ expect ( runningStatus ?. textContent ) . toContain ( '💭 ' ) ;
7677 expect ( runningStatus ?. getAttribute ( 'aria-label' ) ) . toContain ( 'thinking' ) ;
77- expect ( container . querySelector ( '.session-live-status-inline.running' ) ) . toBeTruthy ( ) ;
78+ expect ( container . querySelector ( '.session-live-status-inline.thinking' ) ) . toBeTruthy ( ) ;
79+ expect ( container . querySelector ( '.session-live-status-inline.thinking .session-live-status-emoji.thought' ) ) . toBeTruthy ( ) ;
80+ expect ( container . querySelector ( '.session-live-status-text' ) ?. textContent ) . toContain ( 'thinking' ) ;
81+
82+ rerender (
83+ < UsageFooter
84+ usage = { {
85+ inputTokens : 0 ,
86+ cacheTokens : 0 ,
87+ contextWindow : 1_000_000 ,
88+ model : 'coder-model' ,
89+ } }
90+ sessionName = "deck_test_brain"
91+ sessionState = "running"
92+ /> ,
93+ ) ;
94+
95+ const plainRunningStatus = container . querySelector ( '.session-live-status-inline' ) as HTMLSpanElement | null ;
96+ expect ( plainRunningStatus ?. textContent ) . toContain ( '🤖' ) ;
97+ expect ( plainRunningStatus ?. textContent ) . toContain ( '⚙️' ) ;
7898 expect ( container . querySelector ( '.session-live-status-inline.running .session-live-status-emoji.gear' ) ) . toBeTruthy ( ) ;
7999 } ) ;
80100
81- it ( 'prefers explicit running status text in the live status row ' , ( ) => {
101+ it ( 'shows tool-call icon when explicit running status text is present ' , ( ) => {
82102 const { container } = render (
83103 < UsageFooter
84104 usage = { {
@@ -93,6 +113,9 @@ describe('UsageFooter', () => {
93113 /> ,
94114 ) ;
95115
116+ expect ( ( container . querySelector ( '.session-live-status-inline' ) as HTMLSpanElement | null ) ?. textContent ) . toContain ( '🔍' ) ;
117+ expect ( container . querySelector ( '.session-live-status-inline.tool .session-live-status-emoji.tool' ) ) . toBeTruthy ( ) ;
118+ expect ( container . querySelector ( '.session-live-status-text' ) ?. textContent ) . toBe ( 'Reading file...' ) ;
96119 expect ( ( container . querySelector ( '.session-live-status-inline' ) as HTMLSpanElement | null ) ?. getAttribute ( 'aria-label' ) ) . toBe ( 'Reading file...' ) ;
97120 } ) ;
98121
0 commit comments