I'm not sure if it was ever intended to be a part of public API.

It's not documented, and its naming is misleading because it actually doesn't simulate a native event (oops!). It only simulates what React would do if it *received* that native event. It does that in a way that's very tightly coupled to the event system internals which is unfortunate. It is much better if we can educate people how to dispatch actual browser events in tests instead.

I think we should just deprecate it. We've removed most tests relying on it, and can leave a test or two until it can be deleted in the next major.
validateClassInstance(root, 'findRenderedComponentWithType');
  const all = scryRenderedComponentsWithType(root, componentType);
  if (all.length !== 1) {
    throw new Error(
      'Did not find exactly one match (found: ' +
        all.length +
        ') ' +
        'for componentType:' +
        componentType,
    );
  }
  return all[0];
}
/**
 * Pass a mocked component module to this method to augment it with
 * useful methods that allow it to be used as a dummy React component.
 * Instead of rendering as usual, the component will become a simple
 * <div> containing any provided children.
 *
 * @param {object} module the mock function object exported from a
 *                        module that defines the component to be mocked
 * @param {?string} mockTagName optional dummy root tag name to return
 *                              from render method (overrides
 *                              module.mockTagName if provided)
 * @return {object} the ReactTestUtils object (for chaining)
 */
function mockComponent(module, mockTagName) {