diff --git a/src/__tests__/components/WithChildComponent/Child.vue b/src/__tests__/components/WithChildComponent/Child.vue
new file mode 100644
index 00000000..9b51fd10
--- /dev/null
+++ b/src/__tests__/components/WithChildComponent/Child.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/src/__tests__/components/WithChildComponent/Parent.vue b/src/__tests__/components/WithChildComponent/Parent.vue
new file mode 100644
index 00000000..66be3f73
--- /dev/null
+++ b/src/__tests__/components/WithChildComponent/Parent.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/src/__tests__/vue-custom-event.js b/src/__tests__/vue-custom-event.js
new file mode 100644
index 00000000..068803bc
--- /dev/null
+++ b/src/__tests__/vue-custom-event.js
@@ -0,0 +1,14 @@
+import {render, fireEvent} from '@testing-library/vue'
+import '@testing-library/jest-dom/extend-expect'
+import Component from './components/WithChildComponent/Parent.vue'
+
+test('Custom vue events handling', async () => {
+ const payload = {foo: 'bar'}
+ const {getByTestId, emitted} = render(Component)
+
+ expect(emitted.custom).toBeUndefined()
+
+ await fireEvent.emit(getByTestId('child'), 'custom', payload)
+
+ expect(emitted().custom).toEqual([[payload]])
+})
diff --git a/src/fire-event.js b/src/fire-event.js
index 6a87d7ac..b270e53c 100644
--- a/src/fire-event.js
+++ b/src/fire-event.js
@@ -80,6 +80,20 @@ fireEvent.update = (elem, value) => {
return null
}
+// fireEvent.emit is a syntax sugar to fire custom events on vue-elements.
+// Custom events can't be fired just with fireEvent, event it has the same name
+// as native one.
+// Examples: https://github.com/testing-library/vue-testing-library/blob/master/src/__tests__/vue-custom-event.js
+fireEvent.emit = async (elem, eventName, value) => {
+ if (!elem.__vue__) {
+ throw new Error(
+ `Unable to fire a ${eventName} event – please provide a VUE component.`,
+ )
+ }
+
+ await elem.__vue__.$emit(eventName, value)
+}
+
function warnOnChangeOrInputEventCalledDirectly(eventValue, eventKey) {
if (process.env.VTL_SKIP_WARN_EVENT_UPDATE) return