diff --git a/spec/events-helpers.js b/spec/events-helpers.js new file mode 100644 index 000000000000..9bbd3da899ff --- /dev/null +++ b/spec/events-helpers.js @@ -0,0 +1,29 @@ +/** + * @fileoverview A set of helper functions to make it easier to work + * with events in async/await manner. + */ + +/** + * @param {!EventTarget} target + * @param {string} eventName + * @return {!Promise} + */ +const waitForEvent = (target, eventName) => { + return new Promise(resolve => { + target.addEventListener(eventName, resolve, {once: true}) + }) +} + +/** + * @param {!EventEmitter} emitter + * @param {string} eventName + * @return {!Promise} With Event as the first item. + */ +const emittedOnce = (emitter, eventName) => { + return new Promise(resolve => { + emitter.once(eventName, (...args) => resolve(args)) + }) +} + +exports.emittedOnce = emittedOnce +exports.waitForEvent = waitForEvent