@@ -49,29 +49,43 @@ const textInputEventsIgnoringEditableProp = new Set([
49
49
'onScroll' ,
50
50
] ) ;
51
51
52
- export function isEventEnabled (
52
+ type EventHandlerState = {
53
+ enabled : boolean ;
54
+ reason ?: string ;
55
+ } ;
56
+
57
+ function getEventHandlerState (
53
58
element : ReactTestInstance ,
54
59
eventName : string ,
55
60
nearestTouchResponder ?: ReactTestInstance ,
56
- ) {
61
+ ) : EventHandlerState {
57
62
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' } ;
62
72
}
63
73
64
74
if ( eventsAffectedByPointerEventsProp . has ( eventName ) && ! isPointerEventEnabled ( element ) ) {
65
- return false ;
75
+ return { enabled : false , reason : '"pointerEvents" prop' } ;
66
76
}
67
77
68
78
const touchStart = nearestTouchResponder ?. props . onStartShouldSetResponder ?.( ) ;
69
79
const touchMove = nearestTouchResponder ?. props . onMoveShouldSetResponder ?.( ) ;
70
80
if ( touchStart || touchMove ) {
71
- return true ;
81
+ return { enabled : true } ;
72
82
}
73
83
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' } ;
75
89
}
76
90
77
91
function findEventHandler (
@@ -83,13 +97,15 @@ function findEventHandler(
83
97
84
98
const handler = getEventHandler ( element , eventName ) ;
85
99
if ( handler ) {
86
- if ( isEventEnabled ( element , eventName , touchResponder ) ) {
100
+ const handlerState = getEventHandlerState ( element , eventName , touchResponder ) ;
101
+
102
+ if ( handlerState . enabled ) {
87
103
return handler ;
88
104
} else {
89
105
logger . warn (
90
- `FireEvent "${ eventName } ": event handler is disabled on ${ formatElement ( element , {
106
+ `FireEvent: "${ eventName } " event handler is disabled on ${ formatElement ( element , {
91
107
minimal : true ,
92
- } ) } `,
108
+ } ) } ( ${ handlerState . reason } ). `,
93
109
) ;
94
110
}
95
111
}
@@ -142,9 +158,9 @@ function fireEvent(element: ReactTestInstance, eventName: EventName, ...data: un
142
158
const handler = findEventHandler ( element , eventName ) ;
143
159
if ( ! handler ) {
144
160
logger . warn (
145
- `FireEvent " ${ eventName } " : no event handler found on ${ formatElement ( element , {
161
+ `FireEvent: no enabled event handler for " ${ eventName } " found on ${ formatElement ( element , {
146
162
minimal : true ,
147
- } ) } or its ancestors`,
163
+ } ) } or its ancestors. `,
148
164
) ;
149
165
return ;
150
166
}
0 commit comments