@@ -52,6 +52,12 @@ export const click = defineTool({
5252 handler : async ( request , response , context ) => {
5353 const uid = request . params . uid ;
5454 const handle = await context . getElementByUid ( uid ) ;
55+ const page = context . getSelectedPage ( ) ;
56+ let popupOpened = false ;
57+ const popupListener = ( ) => {
58+ popupOpened = true ;
59+ } ;
60+ page . on ( 'popup' , popupListener ) ;
5561 try {
5662 await context . waitForEventsAfterAction ( async ( ) => {
5763 await handle . asLocator ( ) . click ( {
@@ -63,12 +69,16 @@ export const click = defineTool({
6369 ? `Successfully double clicked on the element`
6470 : `Successfully clicked on the element` ,
6571 ) ;
72+ if ( popupOpened ) {
73+ response . setIncludePages ( true ) ;
74+ }
6675 if ( request . params . includeSnapshot ) {
6776 response . includeSnapshot ( ) ;
6877 }
6978 } catch ( error ) {
7079 handleActionError ( error , uid ) ;
7180 } finally {
81+ page . off ( 'popup' , popupListener ) ;
7282 void handle . dispose ( ) ;
7383 }
7484 } ,
@@ -90,18 +100,30 @@ export const clickAt = defineTool({
90100 } ,
91101 handler : async ( request , response , context ) => {
92102 const page = context . getSelectedPage ( ) ;
93- await context . waitForEventsAfterAction ( async ( ) => {
94- await page . mouse . click ( request . params . x , request . params . y , {
95- clickCount : request . params . dblClick ? 2 : 1 ,
103+ let popupOpened = false ;
104+ const popupListener = ( ) => {
105+ popupOpened = true ;
106+ } ;
107+ page . on ( 'popup' , popupListener ) ;
108+ try {
109+ await context . waitForEventsAfterAction ( async ( ) => {
110+ await page . mouse . click ( request . params . x , request . params . y , {
111+ clickCount : request . params . dblClick ? 2 : 1 ,
112+ } ) ;
96113 } ) ;
97- } ) ;
98- response . appendResponseLine (
99- request . params . dblClick
100- ? `Successfully double clicked at the coordinates`
101- : `Successfully clicked at the coordinates` ,
102- ) ;
103- if ( request . params . includeSnapshot ) {
104- response . includeSnapshot ( ) ;
114+ response . appendResponseLine (
115+ request . params . dblClick
116+ ? `Successfully double clicked at the coordinates`
117+ : `Successfully clicked at the coordinates` ,
118+ ) ;
119+ if ( popupOpened ) {
120+ response . setIncludePages ( true ) ;
121+ }
122+ if ( request . params . includeSnapshot ) {
123+ response . includeSnapshot ( ) ;
124+ }
125+ } finally {
126+ page . off ( 'popup' , popupListener ) ;
105127 }
106128 } ,
107129} ) ;
0 commit comments