@@ -49,29 +49,43 @@ const textInputEventsIgnoringEditableProp = new Set([
4949  'onScroll' , 
5050] ) ; 
5151
52- export  function  isEventEnabled ( 
52+ type  EventHandlerState  =  { 
53+   enabled : boolean ; 
54+   reason ?: string ; 
55+ } ; 
56+ 
57+ function  getEventHandlerState ( 
5358  element : ReactTestInstance , 
5459  eventName : string , 
5560  nearestTouchResponder ?: ReactTestInstance , 
56- )  { 
61+ ) :  EventHandlerState  { 
5762  if  ( nearestTouchResponder  !=  null  &&  isHostTextInput ( nearestTouchResponder ) )  { 
58-     return  ( 
59-       isEditableTextInput ( nearestTouchResponder )  || 
60-       textInputEventsIgnoringEditableProp . has ( eventName ) 
61-     ) ; 
63+     if  ( isEditableTextInput ( nearestTouchResponder ) )  { 
64+       return  {  enabled : true  } ; 
65+     } 
66+ 
67+     if  ( textInputEventsIgnoringEditableProp . has ( eventName ) )  { 
68+       return  {  enabled : true  } ; 
69+     } 
70+ 
71+     return  {  enabled : false ,  reason : '"editable" prop'  } ; 
6272  } 
6373
6474  if  ( eventsAffectedByPointerEventsProp . has ( eventName )  &&  ! isPointerEventEnabled ( element ) )  { 
65-     return  false ; 
75+     return  {   enabled :  false ,   reason :  '"pointerEvents" prop'   } ; 
6676  } 
6777
6878  const  touchStart  =  nearestTouchResponder ?. props . onStartShouldSetResponder ?.( ) ; 
6979  const  touchMove  =  nearestTouchResponder ?. props . onMoveShouldSetResponder ?.( ) ; 
7080  if  ( touchStart  ||  touchMove )  { 
71-     return  true ; 
81+     return  {   enabled :  true   } ; 
7282  } 
7383
74-   return  touchStart  ===  undefined  &&  touchMove  ===  undefined ; 
84+   if  ( touchStart  ===  undefined  &&  touchMove  ===  undefined )  { 
85+     return  {  enabled : true  } ; 
86+   } 
87+ 
88+   return  {  enabled : false ,  reason : 'not a touch responder'  } ; 
7589} 
7690
7791function  findEventHandler ( 
@@ -83,13 +97,15 @@ function findEventHandler(
8397
8498  const  handler  =  getEventHandler ( element ,  eventName ) ; 
8599  if  ( handler )  { 
86-     if  ( isEventEnabled ( element ,  eventName ,  touchResponder ) )  { 
100+     const  handlerState  =  getEventHandlerState ( element ,  eventName ,  touchResponder ) ; 
101+ 
102+     if  ( handlerState . enabled )  { 
87103      return  handler ; 
88104    }  else  { 
89105      logger . warn ( 
90-         `FireEvent "${ eventName } :  event handler is disabled on ${ formatElement ( element ,  {  
106+         `FireEvent:  "${ eventName } ${ formatElement ( element ,  {  
91107          minimal : true ,  
92-         } ) }  `, 
108+         } ) }   ( ${ handlerState . reason } ). `, 
93109      ) ; 
94110    } 
95111  } 
@@ -142,9 +158,9 @@ function fireEvent(element: ReactTestInstance, eventName: EventName, ...data: un
142158  const  handler  =  findEventHandler ( element ,  eventName ) ; 
143159  if  ( ! handler )  { 
144160    logger . warn ( 
145-       `FireEvent " ${ eventName } " : no event handler found on ${ formatElement ( element ,  {  
161+       `FireEvent: no enabled  event handler for " ${ eventName } "  found on ${ formatElement ( element ,  {  
146162        minimal : true ,  
147-       } ) }   or its ancestors`, 
163+       } ) }   or its ancestors. `, 
148164    ) ; 
149165    return ; 
150166  } 
0 commit comments