@@ -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 } " event handler is disabled on ${ 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