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