Skip to content

Commit f7c0149

Browse files
committed
Fix FakeMouseEvent class after jsdom implemented missing MouseEvent properties
Previously MouseEvent in jsdom didn't have attributes like pageX,pageY. Now it supports it, but these properties only have getters and not setters. That's why we are overriding these properties with Object.defineProperties to fix the errors.
1 parent 3983fb2 commit f7c0149

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

src/test/fixtures/utils.js

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,35 @@ type FakeMouseEventInit = $Shape<{
7373
}>;
7474

7575
class FakeMouseEvent extends MouseEvent {
76-
offsetX: number;
77-
offsetY: number;
78-
pageX: number;
79-
pageY: number;
80-
x: number;
81-
y: number;
82-
8376
constructor(type: string, values: FakeMouseEventInit) {
8477
const { pageX, pageY, offsetX, offsetY, x, y, ...mouseValues } = values;
8578
super(type, (mouseValues: any));
8679

87-
Object.assign(this, {
88-
offsetX: offsetX || 0,
89-
offsetY: offsetY || 0,
90-
pageX: pageX || 0,
91-
pageY: pageY || 0,
92-
x: x || 0,
93-
y: y || 0,
80+
Object.defineProperties(this, {
81+
offsetX: {
82+
value: offsetX || 0,
83+
writable: false,
84+
},
85+
offsetY: {
86+
value: offsetY || 0,
87+
writable: false,
88+
},
89+
pageX: {
90+
value: pageX || 0,
91+
writable: false,
92+
},
93+
pageY: {
94+
value: pageY || 0,
95+
writable: false,
96+
},
97+
x: {
98+
value: x || 0,
99+
writable: false,
100+
},
101+
y: {
102+
value: y || 0,
103+
writable: false,
104+
},
94105
});
95106
}
96107
}

0 commit comments

Comments
 (0)