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;