@@ -13,9 +13,81 @@ describe('console', () => {
1313 describe ( 'list_console_messages' , ( ) => {
1414 it ( 'list messages' , async ( ) => {
1515 await withBrowser ( async ( response , context ) => {
16- await consoleTool . handler ( { params : { } } , response , context ) ;
16+ await consoleTool . handler ( { params : { tail : 50 } } , response , context ) ;
1717 assert . ok ( response . includeConsoleData ) ;
1818 } ) ;
1919 } ) ;
20+
21+ it ( 'uses default tail of 50 messages' , async ( ) => {
22+ await withBrowser ( async ( response , context ) => {
23+ // Generate 60 console messages
24+ const page = context . getSelectedPage ( ) ;
25+ await page . evaluate ( ( ) => {
26+ for ( let i = 1 ; i <= 60 ; i ++ ) {
27+ console . log ( `Message ${ i } ` ) ;
28+ }
29+ } ) ;
30+
31+ // Call handler without tail param (should default to 50)
32+ await consoleTool . handler ( { params : { tail : 50 } } , response , context ) ;
33+
34+ const result = await response . handle ( 'test' , context ) ;
35+ const text = ( result [ 0 ] as any ) . text . toString ( ) ;
36+
37+ // Should include message 11 (first of last 50)
38+ assert . ok ( text . includes ( 'Message 11' ) , 'Should include Message 11' ) ;
39+ // Should include message 60 (last message)
40+ assert . ok ( text . includes ( 'Message 60' ) , 'Should include Message 60' ) ;
41+ // Should NOT include message 10 (51st from end)
42+ assert . ok ( ! text . includes ( 'Message 10' ) , 'Should NOT include Message 10' ) ;
43+ } ) ;
44+ } ) ;
45+
46+ it ( 'respects custom tail parameter' , async ( ) => {
47+ await withBrowser ( async ( response , context ) => {
48+ // Generate 20 console messages
49+ const page = context . getSelectedPage ( ) ;
50+ await page . evaluate ( ( ) => {
51+ for ( let i = 1 ; i <= 20 ; i ++ ) {
52+ console . log ( `Message ${ i } ` ) ;
53+ }
54+ } ) ;
55+
56+ // Call handler with tail=5
57+ await consoleTool . handler ( { params : { tail : 5 } } , response , context ) ;
58+
59+ const result = await response . handle ( 'test' , context ) ;
60+ const text = ( result [ 0 ] as any ) . text . toString ( ) ;
61+
62+ // Should include messages 16-20 (last 5)
63+ assert . ok ( text . includes ( 'Message 16' ) , 'Should include Message 16' ) ;
64+ assert . ok ( text . includes ( 'Message 20' ) , 'Should include Message 20' ) ;
65+ // Should NOT include message 15
66+ assert . ok ( ! text . includes ( 'Message 15' ) , 'Should NOT include Message 15' ) ;
67+ } ) ;
68+ } ) ;
69+
70+ it ( 'returns only last 10 messages with default tail when less than 50 exist' , async ( ) => {
71+ await withBrowser ( async ( response , context ) => {
72+ // Generate 10 console messages
73+ const page = context . getSelectedPage ( ) ;
74+ await page . evaluate ( ( ) => {
75+ for ( let i = 1 ; i <= 10 ; i ++ ) {
76+ console . log ( `Message ${ i } ` ) ;
77+ }
78+ } ) ;
79+
80+ // Call handler with default tail (50, but only 10 messages exist)
81+ await consoleTool . handler ( { params : { tail : 50 } } , response , context ) ;
82+
83+ const result = await response . handle ( 'test' , context ) ;
84+ const text = ( result [ 0 ] as any ) . text . toString ( ) ;
85+
86+ // Should include all 10 messages since there are less than 50
87+ for ( let i = 1 ; i <= 10 ; i ++ ) {
88+ assert . ok ( text . includes ( `Message ${ i } ` ) , `Should include Message ${ i } ` ) ;
89+ }
90+ } ) ;
91+ } ) ;
2092 } ) ;
2193} ) ;
0 commit comments