diff --git a/package.json b/package.json
index f77df337c1bdd..07ad96c217e9f 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,7 @@
"@babel/preset-react": "^7.10.4",
"@babel/traverse": "^7.11.0",
"abort-controller": "^3.0.0",
+ "abortcontroller-polyfill": "^1.7.3",
"art": "0.10.1",
"babel-eslint": "^10.0.3",
"babel-plugin-syntax-trailing-function-commas": "^6.5.0",
diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
index 1bc837d9e419d..d1323d8481231 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
@@ -4367,7 +4367,9 @@ describe('ReactDOMFizzServer', () => {
try {
expect(() => {
expect(Scheduler).toFlushWithoutYielding();
- }).toThrow('Invalid insertion of HTML node in #document node.');
+ }).toThrowErrorMatchingInlineSnapshot(
+ `"Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'."`,
+ );
} catch (e) {
console.log('e', e);
}
@@ -4379,14 +4381,17 @@ describe('ReactDOMFizzServer', () => {
],
{withoutStack: 1},
);
- expect(errors).toEqual([
- 'Hydration failed because the initial UI does not match what was rendered on the server.',
- 'There was an error while hydrating. Because the error happened outside of a Suspense boundary, the entire root will switch to client rendering.',
- ]);
- expect(getVisibleChildren(document)).toEqual();
+ expect(errors).toMatchInlineSnapshot(`Array []`);
+ expect(getVisibleChildren(document)).toMatchInlineSnapshot(`
+
+ a title
+
+ `);
expect(() => {
expect(Scheduler).toFlushWithoutYielding();
- }).toThrow('The node to be removed is not a child of this node.');
+ }).not.toThrow();
});
// @gate enableFloat
diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
index 5d204bb92c42c..47b0dc2b6fc45 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
@@ -20,6 +20,20 @@ describe('ReactDOMFizzStaticNode', () => {
React = require('react');
if (__EXPERIMENTAL__) {
ReactDOMFizzStatic = require('react-dom/static');
+ const AbortControllerPonyfill = require('abortcontroller-polyfill/dist/cjs-ponyfill')
+ .AbortController;
+ global.AbortController = class PatchedAbortController extends AbortControllerPonyfill {
+ abort(reason) {
+ // TODO: upstream this is a hack to work around lack of support for abortSignal.reason in the ponyfill
+ if (reason === undefined) {
+ this.signal.reason = new Error('This operation was aborted');
+ this.signal.reason.name = 'AbortError';
+ } else {
+ this.signal.reason = reason;
+ }
+ super.abort(reason);
+ }
+ };
}
Suspense = React.Suspense;
});
diff --git a/yarn.lock b/yarn.lock
index 3b634276a742d..1221bd429e619 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3349,6 +3349,11 @@ abort-controller@^3.0.0:
dependencies:
event-target-shim "^5.0.0"
+abortcontroller-polyfill@^1.7.3:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5"
+ integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==
+
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"