diff --git a/src/config.js b/src/config.js index 37ab986b1..44b51146d 100644 --- a/src/config.js +++ b/src/config.js @@ -14,6 +14,7 @@ let config = { // react-testing-library to use. For that reason, this feature will remain // undocumented. asyncWrapper: cb => cb(), + eventWrapper: cb => cb(), // default value for the `hidden` option in `ByRole` queries defaultHidden: false, // showOriginalStackTrace flag to show the full error stack traces for async errors diff --git a/src/events.js b/src/events.js index c54ec5890..6d19c1fac 100644 --- a/src/events.js +++ b/src/events.js @@ -1,16 +1,21 @@ +import {getConfig} from './config' import {getWindowFromNode} from './helpers' import {eventMap, eventAliasMap} from './event-map' function fireEvent(element, event) { - if (!event) { - throw new Error(`Unable to fire an event - please provide an event object.`) - } - if (!element) { - throw new Error( - `Unable to fire a "${event.type}" event - please provide a DOM element.`, - ) - } - return element.dispatchEvent(event) + return getConfig().eventWrapper(() => { + if (!event) { + throw new Error( + `Unable to fire an event - please provide an event object.`, + ) + } + if (!element) { + throw new Error( + `Unable to fire a "${event.type}" event - please provide a DOM element.`, + ) + } + return element.dispatchEvent(event) + }) } const createEvent = {} @@ -64,11 +69,11 @@ Object.keys(eventMap).forEach(key => { /* istanbul ignore if */ if (typeof window.DataTransfer === 'function') { Object.defineProperty(event, 'dataTransfer', { - value: Object.assign(new window.DataTransfer(), dataTransfer) + value: Object.assign(new window.DataTransfer(), dataTransfer), }) } else { Object.defineProperty(event, 'dataTransfer', { - value: dataTransfer + value: dataTransfer, }) } }