@@ -12,20 +12,20 @@ const mockAgent = {
1212
1313test ( "App renders header and status bar" , ( ) => {
1414 const emitter = new EventEmitter ( ) ;
15- const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } /> ) ;
15+ const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } sessionTitle = "" /> ) ;
1616 expect ( lastFrame ( ) ) . toContain ( "interchange-code" ) ;
1717 expect ( lastFrame ( ) ) . toContain ( "Ctrl+C" ) ;
1818} ) ;
1919
2020test ( "App renders chat input" , ( ) => {
2121 const emitter = new EventEmitter ( ) ;
22- const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } /> ) ;
22+ const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } sessionTitle = "" /> ) ;
2323 expect ( lastFrame ( ) ) . toContain ( "> " ) ;
2424} ) ;
2525
2626test ( "App renders events after they are emitted" , async ( ) => {
2727 const emitter = new EventEmitter ( ) ;
28- const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } /> ) ;
28+ const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } sessionTitle = "" /> ) ;
2929
3030 const event : ReactorEmittedEvent = {
3131 type : "inference.tool_call.start" ,
@@ -40,6 +40,28 @@ test("App renders events after they are emitted", async () => {
4040
4141test ( "App renders running status initially" , ( ) => {
4242 const emitter = new EventEmitter ( ) ;
43- const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } /> ) ;
43+ const { lastFrame } = render ( < App eventEmitter = { emitter } maxTurns = { 30 } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } sessionTitle = "" /> ) ;
4444 expect ( lastFrame ( ) ) . toContain ( "running" ) ;
4545} ) ;
46+
47+ test ( "App keeps header and footer visible after many events" , async ( ) => {
48+ const emitter = new EventEmitter ( ) ;
49+ const { lastFrame } = render (
50+ < App eventEmitter = { emitter } agent = { mockAgent as unknown as import ( "@intx/agent" ) . Agent } sessionTitle = "scroll test" /> ,
51+ { stdout : { columns : 100 , rows : 12 } } ,
52+ ) ;
53+
54+ for ( let i = 0 ; i < 25 ; i ++ ) {
55+ emitter . emit ( "event" , {
56+ type : "inference.tool_call.start" ,
57+ seq : i + 1 ,
58+ data : { name : `tool_${ i } ` , callId : `call_${ i } ` } as unknown as ReactorEmittedEvent [ "data" ] ,
59+ } satisfies ReactorEmittedEvent ) ;
60+ }
61+
62+ await new Promise ( ( resolve ) => setTimeout ( resolve , 10 ) ) ;
63+ expect ( lastFrame ( ) ) . toContain ( "interchange-code" ) ;
64+ expect ( lastFrame ( ) ) . toContain ( "scroll test" ) ;
65+ expect ( lastFrame ( ) ) . toContain ( "> " ) ;
66+ expect ( lastFrame ( ) ) . toContain ( "Ctrl+C" ) ;
67+ } ) ;
0 commit comments