diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
index 4a3edfd3c4e86..8890dbd5920a6 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
@@ -5,12 +5,10 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
-let JSDOM;
let Stream;
let Scheduler;
let React;
@@ -24,7 +22,7 @@ let PropTypes;
let textCache;
let writable;
let CSPnonce = null;
-let container;
+let container = null;
let buffer = '';
let hasErrored = false;
let fatalError = undefined;
@@ -32,19 +30,6 @@ let fatalError = undefined;
describe('ReactDOMFizzServer', () => {
beforeEach(() => {
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
Scheduler = require('scheduler');
React = require('react');
ReactDOMClient = require('react-dom/client');
@@ -75,7 +60,8 @@ describe('ReactDOMFizzServer', () => {
textCache = new Map();
- container = document.getElementById('container');
+ container = document.createElement('div');
+ document.body.appendChild(container);
buffer = '';
hasErrored = false;
@@ -91,6 +77,11 @@ describe('ReactDOMFizzServer', () => {
});
});
+ afterEach(() => {
+ container?.remove();
+ container = null
+ });
+
async function act(callback) {
await callback();
// Await one turn around the event loop.
diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzShellHydration-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzShellHydration-test.js
index 64cd78021611f..3dd7c42e72106 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzShellHydration-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzShellHydration-test.js
@@ -5,10 +5,8 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
-let JSDOM;
let React;
let ReactDOMClient;
let Scheduler;
@@ -16,7 +14,7 @@ let clientAct;
let ReactDOMFizzServer;
let Stream;
let writable;
-let container;
+let container = null;
let buffer = '';
let hasErrored = false;
let fatalError = undefined;
@@ -25,19 +23,6 @@ let textCache;
describe('ReactDOMFizzShellHydration', () => {
beforeEach(() => {
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOMClient = require('react-dom/client');
Scheduler = require('scheduler');
@@ -47,7 +32,8 @@ describe('ReactDOMFizzShellHydration', () => {
textCache = new Map();
- container = document.getElementById('container');
+ container = document.createElement('div');
+ document.body.appendChild(container);
buffer = '';
hasErrored = false;
@@ -63,6 +49,11 @@ describe('ReactDOMFizzShellHydration', () => {
});
});
+ afterEach(() => {
+ container?.remove();
+ container = null;
+ });
+
async function serverAct(callback) {
await callback();
// Await one turn around the event loop.
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js
index 8b69fd1f4c926..63517899187dd 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js
@@ -5,7 +5,6 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
@@ -13,7 +12,6 @@
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
const ReactFeatureFlags = require('shared/ReactFeatureFlags');
-let JSDOM;
let React;
let ReactDOM;
let ReactTestUtils;
@@ -22,19 +20,6 @@ let ReactDOMServer;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationBasic-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationBasic-test.js
index 671534c880f16..b29a4fd1e4210 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationBasic-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationBasic-test.js
@@ -5,7 +5,6 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
@@ -14,7 +13,6 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
const TEXT_NODE_TYPE = 3;
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -23,19 +21,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationCheckbox-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationCheckbox-test.js
index 039eb6415062e..1fa65a64a869c 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationCheckbox-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationCheckbox-test.js
@@ -14,7 +14,6 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
// Set by `yarn test-fire`.
const {disableInputAttributeSyncing} = require('shared/ReactFeatureFlags');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -23,19 +22,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationClassContextType-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationClassContextType-test.js
index e0492d42bbd4d..0f8c9e7f10367 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationClassContextType-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationClassContextType-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
index 758ab3a704ec1..ec0100c0f7da9 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
@@ -5,7 +5,6 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
@@ -14,7 +13,6 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
const TEXT_NODE_TYPE = 3;
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -22,19 +20,6 @@ let ReactTestUtils;
function initModules() {
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
@@ -58,7 +43,7 @@ const {
clientRenderOnServerString,
} = ReactDOMServerIntegrationUtils(initModules);
-describe('ReactDOMServerIntegration', () => {
+describe('ReactDOMServerIntegrationElements', () => {
beforeEach(() => {
resetModules();
});
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationFragment-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationFragment-test.js
index ead62bb27559a..14bd0211c9e7f 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationFragment-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationFragment-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.js
index 2a9e4e4a22550..73ed436633347 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.js
@@ -5,7 +5,6 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
/* eslint-disable no-func-assign */
@@ -14,7 +13,6 @@
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -38,19 +36,6 @@ let clearYields;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
@@ -93,7 +78,7 @@ const {
serverRender,
} = ReactDOMServerIntegrationUtils(initModules);
-describe('ReactDOMServerHooks', () => {
+describe('ReactDOMServerIntegrationHooks', () => {
beforeEach(() => {
resetModules();
});
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationInput-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationInput-test.js
index 502c46ee0e3b9..6bd249008fdfa 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationInput-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationInput-test.js
@@ -5,7 +5,6 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
@@ -14,7 +13,6 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
// Set by `yarn test-fire`.
const {disableInputAttributeSyncing} = require('shared/ReactFeatureFlags');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -23,19 +21,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContext-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContext-test.js
index 3c0a9796acf9d..b43daf1c15a1d 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContext-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContext-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let PropTypes;
let React;
let ReactDOM;
@@ -22,19 +20,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
PropTypes = require('prop-types');
React = require('react');
ReactDOM = require('react-dom');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContextDisabled-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContextDisabled-test.internal.js
index 4aa94075c662e..80e3fa6c2e677 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContextDisabled-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContextDisabled-test.internal.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactFeatureFlags;
@@ -22,19 +20,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js
index af4e8308639b0..5a36d917429f9 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js
index cbba0578cd063..4050a3663a2d3 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- JSDOM = require('jsdom').JSDOM;
- // Creating mixed environment for `react-dom` + `react-dom/server`
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSelect-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSelect-test.js
index 4fe8f8c0e2e19..f5ec475b8d37e 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSelect-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSelect-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js
index f0f1763e8d132..1c8af62e7a9e6 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -26,19 +24,6 @@ let clearYields;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationTextarea-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationTextarea-test.js
index 6f98fb2b5fcd9..2a4f59ae90c9d 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationTextarea-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationTextarea-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationUntrustedURL-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationUntrustedURL-test.internal.js
index ce0e9020130e2..9fc3200e5062c 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationUntrustedURL-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationUntrustedURL-test.internal.js
@@ -5,7 +5,6 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
/* eslint-disable no-script-url */
@@ -14,7 +13,6 @@
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -152,19 +150,6 @@ function runTests(itRenders, itRejectsRendering, expectToReject) {
describe('ReactDOMServerIntegration - Untrusted URLs', () => {
function initModules() {
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
@@ -199,20 +184,6 @@ describe('ReactDOMServerIntegration - Untrusted URLs - disableJavaScriptURLs', (
jest.resetModules();
const ReactFeatureFlags = require('shared/ReactFeatureFlags');
ReactFeatureFlags.disableJavaScriptURLs = true;
-
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/packages/react-dom/src/__tests__/ReactDOMUseId-test.js b/packages/react-dom/src/__tests__/ReactDOMUseId-test.js
index 229b4696c28f6..45690b46b87cc 100644
--- a/packages/react-dom/src/__tests__/ReactDOMUseId-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMUseId-test.js
@@ -5,10 +5,8 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
-let JSDOM;
let React;
let ReactDOMClient;
let Scheduler;
@@ -27,20 +25,6 @@ let fatalError = undefined;
describe('useId', () => {
beforeEach(() => {
jest.resetModules();
- JSDOM = require('jsdom').JSDOM;
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOMClient = require('react-dom/client');
Scheduler = require('scheduler');
@@ -51,7 +35,8 @@ describe('useId', () => {
useId = React.useId;
useState = React.useState;
- container = document.getElementById('container');
+ container = document.createElement('div')
+ document.body.appendChild(container)
buffer = '';
hasErrored = false;
@@ -67,6 +52,11 @@ describe('useId', () => {
});
});
+ afterEach(() => {
+ container?.remove()
+ container = null
+ })
+
async function serverAct(callback) {
await callback();
// Await one turn around the event loop.
diff --git a/packages/react-dom/src/__tests__/ReactDOMserverIntegrationProgress-test.js b/packages/react-dom/src/__tests__/ReactDOMserverIntegrationProgress-test.js
index b05df4ae06276..e4b165836cc37 100644
--- a/packages/react-dom/src/__tests__/ReactDOMserverIntegrationProgress-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMserverIntegrationProgress-test.js
@@ -5,14 +5,12 @@
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
- * @jest-environment node
*/
'use strict';
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
-let JSDOM;
let React;
let ReactDOM;
let ReactDOMServer;
@@ -21,19 +19,6 @@ let ReactTestUtils;
function initModules() {
// Reset warning cache.
jest.resetModules();
- // Creating mixed environment for `react-dom` + `react-dom/server`
- JSDOM = require('jsdom').JSDOM;
- const jsdom = new JSDOM(
- '
',
- {
- runScripts: 'dangerously',
- },
- );
- global.window = jsdom.window;
- global.document = jsdom.window.document;
- global.navigator = jsdom.window.navigator;
- global.Node = jsdom.window.Node;
-
React = require('react');
ReactDOM = require('react-dom');
ReactDOMServer = require('react-dom/server');
diff --git a/scripts/jest/JestEnvironmentJSDOMLegacy.js b/scripts/jest/JestEnvironmentJSDOMLegacy.js
new file mode 100644
index 0000000000000..a9bb230474edb
--- /dev/null
+++ b/scripts/jest/JestEnvironmentJSDOMLegacy.js
@@ -0,0 +1,20 @@
+'use strict';
+
+const JSDOMEnvironment = require('jest-environment-jsdom');
+/**
+ * Some tests rely on a mixed server/browser environment e.g. by using `setImmediate`.
+ */
+class JSDOMLegacyEnvironment extends JSDOMEnvironment {
+ constructor(config, context) {
+ super(config, context);
+ }
+ async setup() {
+ await super.setup();
+ }
+
+ async teardown() {
+ await super.teardown();
+ }
+}
+
+module.exports = JSDOMLegacyEnvironment;