diff --git a/packages/react-dom/src/__tests__/ReactFlightIntegration-test.js b/packages/react-dom/src/__tests__/ReactFlightIntegration-test.js new file mode 100644 index 0000000000..7621513830 --- /dev/null +++ b/packages/react-dom/src/__tests__/ReactFlightIntegration-test.js @@ -0,0 +1,311 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @emails react-core + */ + +'use strict'; + +// Polyfills for test environment +global.ReadableStream = require('@mattiasbuelens/web-streams-polyfill/ponyfill/es6').ReadableStream; +global.TextDecoder = require('util').TextDecoder; + +// Don't wait before processing work on the server. +// TODO: we can replace this with FlightServer.act(). +global.setImmediate = cb => cb(); + +let act; +let Stream; +let React; +let ReactDOM; +let ReactFlightDOMServer; +let ReactFlightDOMClient; + +describe('ReactFlightIntegration', () => { + beforeEach(() => { + jest.resetModules(); + act = require('react-dom/test-utils').act; + Stream = require('stream'); + React = require('react'); + ReactDOM = require('react-dom'); + ReactFlightDOMServer = require('react-dom/unstable-flight-server'); + ReactFlightDOMClient = require('react-dom/unstable-flight-client'); + }); + + function getTestStream() { + let writable = new Stream.PassThrough(); + let readable = new ReadableStream({ + start(controller) { + writable.on('data', chunk => { + controller.enqueue(chunk); + }); + writable.on('end', () => { + controller.close(); + }); + }, + }); + return { + writable, + readable, + }; + } + + it.experimental('should resolve the root', async () => { + let {Suspense} = React; + + // Model + function Text({children}) { + return {children}; + } + function HTML() { + return ( +