/** * 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. * * @emails react-core * @jest-environment ./scripts/jest/ReactDOMServerIntegrationEnvironment */ 'use strict'; // Polyfills for test environment global.ReadableStream = require('web-streams-polyfill/ponyfill/es6').ReadableStream; global.TextEncoder = require('util').TextEncoder; describe('ReactDOMSrcObject', () => { let React; let ReactDOMClient; let ReactDOMFizzServer; let act; let container; let assertConsoleErrorDev; beforeEach(() => { jest.resetModules(); React = require('react'); ReactDOMClient = require('react-dom/client'); ReactDOMFizzServer = require('react-dom/server.edge'); act = require('internal-test-utils').act; assertConsoleErrorDev = require('internal-test-utils').assertConsoleErrorDev; container = document.createElement('div'); document.body.appendChild(container); }); afterEach(() => { document.body.removeChild(container); jest.restoreAllMocks(); }); // @gate enableSrcObject it('can render a Blob as an img src', async () => { const root = ReactDOMClient.createRoot(container); const ref = React.createRef(); const blob = new Blob(); await act(() => { root.render(); }); expect(ref.current.src).toMatch(/^blob:/); }); // @gate enableSrcObject it('can render a Blob as a picture img src', async () => { const root = ReactDOMClient.createRoot(container); const ref = React.createRef(); const blob = new Blob(); await act(() => { root.render( , ); }); expect(ref.current.src).toMatch(/^blob:/); }); // @gate enableSrcObject it('can render a Blob as a video and audio src', async () => { const root = ReactDOMClient.createRoot(container); const videoRef = React.createRef(); const audioRef = React.createRef(); const blob = new Blob(); await act(() => { root.render( <>