Skip to content

Commit cce722e

Browse files
committed
Fix asynchronous test will fail due to timeout issue.
* Send error event to Node.js process.
1 parent afb4bf5 commit cce722e

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

  • packages/jest-environment-jsdom/src

packages/jest-environment-jsdom/src/index.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class JSDOMEnvironment {
1919
document: ?Object;
2020
fakeTimers: ?FakeTimers<number>;
2121
global: ?Global;
22+
errorEventListener: ?Function;
2223
moduleMocker: ?ModuleMocker;
2324

2425
constructor(config: ProjectConfig): void {
@@ -43,6 +44,13 @@ class JSDOMEnvironment {
4344
};
4445
}
4546

47+
this.errorEventListener = event => {
48+
if (event.error) {
49+
process.emit('uncaughtException', event.error);
50+
}
51+
};
52+
global.addEventListener('error', this.errorEventListener);
53+
4654
this.moduleMocker = new mock.ModuleMocker(global);
4755

4856
const timerConfig = {
@@ -63,8 +71,12 @@ class JSDOMEnvironment {
6371
this.fakeTimers.dispose();
6472
}
6573
if (this.global) {
74+
if (this.errorEventListener) {
75+
this.global.removeEventListener('error', this.errorEventListener);
76+
}
6677
this.global.close();
6778
}
79+
this.errorEventListener = null;
6880
this.global = null;
6981
this.document = null;
7082
this.fakeTimers = null;

0 commit comments

Comments
 (0)