diff --git a/src/__tests__/fireEvent.test.js b/src/__tests__/fireEvent.test.js
index edb73dfc8..340f4cb42 100644
--- a/src/__tests__/fireEvent.test.js
+++ b/src/__tests__/fireEvent.test.js
@@ -29,6 +29,12 @@ const CustomEventComponent = ({ onCustomEvent }) => (
);
+const DoublePressComponent = ({ onDoublePress }) => (
+
+ Click me
+
+);
+
describe('fireEvent', () => {
test('should invoke specified event', () => {
const onPressMock = jest.fn();
@@ -70,6 +76,18 @@ describe('fireEvent', () => {
expect(handlerMock).toHaveBeenCalledWith(EVENT_DATA);
});
+
+ test('should not bubble event to root element', () => {
+ const onPressMock = jest.fn();
+ const { getByTestId } = render(
+
+ Content
+
+ );
+
+ expect(() => fireEvent.press(getByTestId('test'))).toThrowError();
+ expect(onPressMock).not.toHaveBeenCalled();
+ });
});
test('fireEvent.press', () => {
@@ -104,11 +122,8 @@ test('fireEvent.scroll', () => {
test('fireEvent.doublePress', () => {
const onDoublePressMock = jest.fn();
-
const { getByTestId } = render(
-
- Click me
-
+
);
fireEvent.doublePress(getByTestId('button-text'));
diff --git a/src/fireEvent.js b/src/fireEvent.js
index ddf908d1c..070b24c59 100644
--- a/src/fireEvent.js
+++ b/src/fireEvent.js
@@ -8,7 +8,8 @@ const findEventHandler = (element: ReactTestInstance, eventName: string) => {
return element.props[eventHandler];
}
- if (element.parent === null) {
+ // Do not bubble event to the root element
+ if (element.parent === null || element.parent.parent === null) {
throw new ErrorWithStack(
`No handler function found for event: ${eventName}`,
invokeEvent