diff --git a/src/__tests__/events-compat.js b/src/__tests__/events-compat.js
new file mode 100644
index 0000000..9687a4e
--- /dev/null
+++ b/src/__tests__/events-compat.js
@@ -0,0 +1,25 @@
+import { h } from 'preact' // required by render
+import { fireEvent, render } from '..'
+import 'preact/compat'
+
+test('calling `fireEvent` with `preact/compat` and onChange works too', () => {
+ const handler = jest.fn()
+
+ // Preact only matches React's aliasing of `onChange` when `preact/compat` is used
+ // This test ensures this is supported properly with `fireEvent.change()`
+ const {
+ container: { firstChild: input }
+ } = render()
+
+ const targetProperties = { value: 'a' }
+ const otherProperties = { isComposing: true }
+ const init = {
+ target: targetProperties,
+ ...otherProperties
+ }
+
+ expect(fireEvent.change(input, init)).toBe(true)
+
+ expect(handler).toHaveBeenCalledTimes(1)
+ expect(handler).toHaveBeenCalledWith(expect.objectContaining(otherProperties))
+})
diff --git a/src/__tests__/events.js b/src/__tests__/events.js
index 3cea179..f2ece94 100644
--- a/src/__tests__/events.js
+++ b/src/__tests__/events.js
@@ -30,7 +30,7 @@ const eventTypes = [
},
{
type: 'Focus',
- events: ['input', 'invalid'],
+ events: ['input', 'invalid', 'change'],
elementType: 'input'
},
{
@@ -200,8 +200,14 @@ test('calling `fireEvent` directly works too', () => {
})
test('`fireEvent` returns false when prevented', () => {
- const { container: { firstChild: button } } = render(
- (