From 7b33efa044171c25c81915a42caf6e5f09cd1aa7 Mon Sep 17 00:00:00 2001 From: Eyal Roth Date: Wed, 28 May 2025 18:27:18 +0300 Subject: [PATCH] #15632 Fix destruction of builtin node globals that was introduced in #15215 --- .../src/__tests__/node_environment.test.ts | 4 ++++ .../src/__tests__/node_environment_2.test.ts | 12 ++++++++++++ packages/jest-environment-node/src/index.ts | 1 + 3 files changed, 17 insertions(+) create mode 100644 packages/jest-environment-node/src/__tests__/node_environment_2.test.ts diff --git a/packages/jest-environment-node/src/__tests__/node_environment.test.ts b/packages/jest-environment-node/src/__tests__/node_environment.test.ts index bd29974e2b8f..fa176ffe5a31 100644 --- a/packages/jest-environment-node/src/__tests__/node_environment.test.ts +++ b/packages/jest-environment-node/src/__tests__/node_environment.test.ts @@ -87,4 +87,8 @@ describe('NodeEnvironment', () => { test('TextEncoder references the same global Uint8Array constructor', () => { expect(new TextEncoder().encode('abc')).toBeInstanceOf(Uint8Array); }); + + test('dispatch event', () => { + new EventTarget().dispatchEvent(new Event('foo')); + }); }); diff --git a/packages/jest-environment-node/src/__tests__/node_environment_2.test.ts b/packages/jest-environment-node/src/__tests__/node_environment_2.test.ts new file mode 100644 index 000000000000..3ac0d3f29073 --- /dev/null +++ b/packages/jest-environment-node/src/__tests__/node_environment_2.test.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +describe('NodeEnvironment 2', () => { + test('dispatch event', () => { + new EventTarget().dispatchEvent(new Event('foo')); + }); +}); diff --git a/packages/jest-environment-node/src/index.ts b/packages/jest-environment-node/src/index.ts index 4e3fec5fa82c..9689aa7afe93 100644 --- a/packages/jest-environment-node/src/index.ts +++ b/packages/jest-environment-node/src/index.ts @@ -102,6 +102,7 @@ export default class NodeEnvironment implements JestEnvironment { Object.getOwnPropertyNames(global) as GlobalProperties, ); for (const [nodeGlobalsKey, descriptor] of nodeGlobals) { + protectProperties(globalThis[nodeGlobalsKey]); if (!contextGlobals.has(nodeGlobalsKey)) { if (descriptor.configurable) { Object.defineProperty(global, nodeGlobalsKey, {