From 56c2c3d04c8f063a19f4bce34dcb068f545e44d8 Mon Sep 17 00:00:00 2001 From: eps1lon Date: Sun, 2 Oct 2022 11:58:18 +0200 Subject: [PATCH] Update float test with server assertions --- .../src/__tests__/ReactDOMFloat-test.js | 85 ++++++++++--------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/packages/react-dom/src/__tests__/ReactDOMFloat-test.js b/packages/react-dom/src/__tests__/ReactDOMFloat-test.js index 3484c172c4cf2..5d2d4c8a03e55 100644 --- a/packages/react-dom/src/__tests__/ReactDOMFloat-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMFloat-test.js @@ -5,11 +5,13 @@ * LICENSE file in the root directory of this source tree. * * @emails react-core + * @jest-environment node */ 'use strict'; let JSDOM; +let JSDOMVirtualConsole; let Stream; let Scheduler; let React; @@ -18,7 +20,6 @@ let ReactDOMClient; let ReactDOMFizzServer; let Suspense; let textCache; -let document; let writable; const CSPnonce = null; let container; @@ -26,28 +27,45 @@ let buffer = ''; let hasErrored = false; let fatalError = undefined; +function resetModules(markup) { + jest.resetModules(); + + // Test Environment + ({JSDOM, VirtualConsole: JSDOMVirtualConsole} = require('jsdom')); + const virtualConsole = new JSDOMVirtualConsole(); + virtualConsole.sendTo(console, { + omitJSDOMErrors: true, + }); + virtualConsole.on('jsdomError', error => { + console.error(error); + }); + const jsdom = new JSDOM(markup, { + runScripts: 'dangerously', + virtualConsole, + }); + + 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'); + ReactDOM = require('react-dom'); + ReactDOMClient = require('react-dom/client'); + ReactDOMFizzServer = require('react-dom/server'); + Stream = require('stream'); + Suspense = React.Suspense; +} + describe('ReactDOMFloat', () => { beforeEach(() => { - jest.resetModules(); - JSDOM = require('jsdom').JSDOM; - Scheduler = require('scheduler'); - React = require('react'); - ReactDOM = require('react-dom'); - ReactDOMClient = require('react-dom/client'); - ReactDOMFizzServer = require('react-dom/server'); - Stream = require('stream'); - Suspense = React.Suspense; + resetModules( + '
', + ); textCache = new Map(); - // Test Environment - const jsdom = new JSDOM( - '
', - { - runScripts: 'dangerously', - }, - ); - document = jsdom.window.document; container = document.getElementById('container'); buffer = ''; @@ -129,10 +147,8 @@ describe('ReactDOMFloat', () => { // We assume that we have now received a proper fragment of HTML. const bufferedContent = buffer; // Test Environment - const jsdom = new JSDOM(bufferedContent, { - runScripts: 'dangerously', - }); - document = jsdom.window.document; + resetModules(bufferedContent); + container = document; buffer = ''; } @@ -394,16 +410,14 @@ describe('ReactDOMFloat', () => { ReactDOM.preload('foo', {as: 'style'}); ReactDOMClient.createRoot(container); ReactDOM.preload('bar', {as: 'style'}); - // We need to use global.document because preload falls back - // to the window.document global when no other documents have been used - // The way the JSDOM runtim is created for these tests the local document - // global does not point to the global.document - expect(getVisibleChildren(global.document)).toEqual( + expect(getVisibleChildren(document)).toEqual( - + +
+ , ); }); @@ -470,7 +484,6 @@ describe('ReactDOMFloat', () => { foo - , ); @@ -537,16 +550,14 @@ describe('ReactDOMFloat', () => { ReactDOM.preinit('foo', {as: 'style'}); ReactDOMClient.hydrateRoot(container, null); ReactDOM.preinit('bar', {as: 'style'}); - // We need to use global.document because preload falls back - // to the window.document global when no other documents have been used - // The way the JSDOM runtim is created for these tests the local document - // global does not point to the global.document - expect(getVisibleChildren(global.document)).toEqual( + expect(getVisibleChildren(document)).toEqual( - + +
+ , ); }); @@ -1695,8 +1706,6 @@ describe('ReactDOMFloat', () => {
Hello
loading...
- - , ); @@ -1713,8 +1722,6 @@ describe('ReactDOMFloat', () => {
Hello
bar
- - , );