11import { testBothModes , renderInMode } from "./TUIChat.dualModeHelper.js" ;
2- import {
3- waitForFrameToContain ,
4- waitForFrameToNotContain ,
5- } from "./TUIChat.testHelper.js" ;
62
73/**
84 * Integration tests for the message edit feature in TUIChat
@@ -20,10 +16,9 @@ describe("TUIChat - Message Edit Feature", () => {
2016 const { lastFrame, stdin } = renderInMode ( mode ) ;
2117
2218 // Verify selector is not open initially
23- let frame = await waitForFrameToNotContain (
24- lastFrame ,
25- "No user messages to edit" ,
26- ) ;
19+ let frame = lastFrame ( ) ;
20+ expect ( frame ) . toBeDefined ( ) ;
21+ expect ( frame ) . not . toContain ( "No user messages to edit" ) ;
2722
2823 // Press Esc twice quickly (within 500ms)
2924 stdin . write ( "\u001b" ) ; // First Esc
@@ -33,7 +28,9 @@ describe("TUIChat - Message Edit Feature", () => {
3328 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
3429
3530 // Verify selector is now open
36- frame = await waitForFrameToContain ( lastFrame , "No user messages to edit" ) ;
31+ frame = lastFrame ( ) ;
32+ expect ( frame ) . toBeDefined ( ) ;
33+ expect ( frame ) . toContain ( "No user messages to edit" ) ;
3734 } ) ;
3835
3936 testBothModes ( "edit selector should handle navigation" , async ( mode ) => {
@@ -45,10 +42,9 @@ describe("TUIChat - Message Edit Feature", () => {
4542 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
4643
4744 // Verify selector is open
48- let frame = await waitForFrameToContain (
49- lastFrame ,
50- "No user messages to edit" ,
51- ) ;
45+ let frame = lastFrame ( ) ;
46+ expect ( frame ) . toBeDefined ( ) ;
47+ expect ( frame ) . toContain ( "No user messages to edit" ) ;
5248
5349 // Try navigation keys
5450 stdin . write ( "j" ) ; // Down
@@ -58,7 +54,9 @@ describe("TUIChat - Message Edit Feature", () => {
5854 await new Promise ( ( resolve ) => setTimeout ( resolve , 50 ) ) ;
5955
6056 // Verify selector is still open after navigation
61- frame = await waitForFrameToContain ( lastFrame , "No user messages to edit" ) ;
57+ frame = lastFrame ( ) ;
58+ expect ( frame ) . toBeDefined ( ) ;
59+ expect ( frame ) . toContain ( "No user messages to edit" ) ;
6260 } ) ;
6361
6462 testBothModes ( "edit selector should exit with Esc" , async ( mode ) => {
@@ -70,20 +68,18 @@ describe("TUIChat - Message Edit Feature", () => {
7068 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
7169
7270 // Verify edit selector is open
73- let frame = await waitForFrameToContain (
74- lastFrame ,
75- "No user messages to edit" ,
76- ) ;
71+ let frame = lastFrame ( ) ;
72+ expect ( frame ) . toBeDefined ( ) ;
73+ expect ( frame ) . toContain ( "No user messages to edit" ) ;
7774
7875 // Press Esc to exit
7976 stdin . write ( "\u001b" ) ;
8077 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
8178
8279 // Verify edit selector is closed
83- frame = await waitForFrameToNotContain (
84- lastFrame ,
85- "No user messages to edit" ,
86- ) ;
80+ frame = lastFrame ( ) ;
81+ expect ( frame ) . toBeDefined ( ) ;
82+ expect ( frame ) . not . toContain ( "No user messages to edit" ) ;
8783 } ) ;
8884
8985 testBothModes ( "should handle edit flow without crashing" , async ( mode ) => {
@@ -126,25 +122,22 @@ describe("TUIChat - Message Edit Feature", () => {
126122 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
127123
128124 // Verify selector opened
129- let frame = await waitForFrameToContain (
130- lastFrame ,
131- "No user messages to edit" ,
132- ) ;
125+ let frame = lastFrame ( ) ;
126+ expect ( frame ) . toBeDefined ( ) ;
127+ expect ( frame ) . toContain ( "No user messages to edit" ) ;
133128
134129 stdin . write ( "k" ) ; // Navigate (no-op with 0 messages)
135130 await new Promise ( ( resolve ) => setTimeout ( resolve , 50 ) ) ;
136131
137132 stdin . write ( "\u001b" ) ; // Close
138133 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
139134
140- frame = await waitForFrameToNotContain (
141- lastFrame ,
142- "No user messages to edit" ,
143- ) ;
135+ frame = lastFrame ( ) ;
144136
145137 // UI should remain stable and edit selector should be closed
146138 expect ( frame ) . toBeDefined ( ) ;
147139 expect ( frame ! . length ) . toBeGreaterThan ( 0 ) ;
140+ expect ( frame ) . not . toContain ( "No user messages to edit" ) ;
148141 } ,
149142 ) ;
150143} ) ;
@@ -214,19 +207,17 @@ describe("TUIChat - Edit Feature Edge Cases", () => {
214207 await new Promise ( ( resolve ) => setTimeout ( resolve , 600 ) ) ; // Wait longer than 500ms threshold
215208
216209 // Verify selector did not open
217- let frame = await waitForFrameToNotContain (
218- lastFrame ,
219- "No user messages to edit" ,
220- ) ;
210+ let frame = lastFrame ( ) ;
211+ expect ( frame ) . toBeDefined ( ) ;
212+ expect ( frame ) . not . toContain ( "No user messages to edit" ) ;
221213
222214 stdin . write ( "\u001b" ) ; // Another single Esc after timeout
223215 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
224216
225217 // Verify selector still did not open
226- frame = await waitForFrameToNotContain (
227- lastFrame ,
228- "No user messages to edit" ,
229- ) ;
218+ frame = lastFrame ( ) ;
219+ expect ( frame ) . toBeDefined ( ) ;
220+ expect ( frame ) . not . toContain ( "No user messages to edit" ) ;
230221 } ) ;
231222
232223 testBothModes (
0 commit comments