diff --git a/.travis.yml b/.travis.yml
index 2e37c14ae..8c003413a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -101,7 +101,7 @@ matrix:
- node_js: "6"
env: REACT=0.13
env:
- - REACT=17.0
+ - REACT=17.0.0-rc.0
- REACT=16.13
- REACT=16.12
- REACT=16.11
diff --git a/env.js b/env.js
index c5c0ec0ec..5aae69079 100755
--- a/env.js
+++ b/env.js
@@ -86,6 +86,10 @@ function getAdapter(reactVersion) {
return '16.1';
}
}
+ // TODO: use Semver
+ if (reactVersion === '17.0.0-rc.0') {
+ return '17';
+ }
return null;
}
const reactVersion = version < 15 ? '0.' + version : version;
diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
index 98ab82001..c91bcb260 100644
--- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
+++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
@@ -39,12 +39,13 @@ import describeMethods from './_helpers/describeMethods';
import describeHooks from './_helpers/describeHooks';
import {
REACT16,
+ REACT17,
is,
} from './_helpers/version';
// The shallow renderer in react 16 does not yet support batched updates. When it does,
// we should be able to go un-skip all of the tests that are skipped with this flag.
-const BATCHING = !REACT16;
+const BATCHING = !REACT16 && !REACT17;
describe('shallow', () => {
describe('top level entry points', () => {
diff --git a/packages/enzyme-test-suite/test/_helpers/adapter.js b/packages/enzyme-test-suite/test/_helpers/adapter.js
index 3d339c6b4..b5d319fc3 100644
--- a/packages/enzyme-test-suite/test/_helpers/adapter.js
+++ b/packages/enzyme-test-suite/test/_helpers/adapter.js
@@ -27,6 +27,8 @@ if (process.env.ADAPTER) {
Adapter = require('enzyme-adapter-react-16.3');
} else if (is('^16.4.0-0')) {
Adapter = require('enzyme-adapter-react-16');
+} else if (is('^17.0.0-rc.0')) {
+ Adapter = require('enzyme-adapter-react-17');
}
module.exports = Adapter;
diff --git a/packages/enzyme-test-suite/test/_helpers/react-compat.js b/packages/enzyme-test-suite/test/_helpers/react-compat.js
index 900ad4c0b..320cf4f14 100644
--- a/packages/enzyme-test-suite/test/_helpers/react-compat.js
+++ b/packages/enzyme-test-suite/test/_helpers/react-compat.js
@@ -36,7 +36,7 @@ let useRef;
let useState;
let act;
-if (is('>=15.5 || ^16.0.0-alpha || ^16.3.0-alpha')) {
+if (is('>=15.5 || ^16.0.0-alpha || ^16.3.0-alpha || ^17.0.0-rc.0')) {
// eslint-disable-next-line import/no-extraneous-dependencies
createClass = require('create-react-class');
} else {
@@ -50,7 +50,7 @@ if (is('^0.13.0')) {
({ renderToString } = require('react-dom/server'));
}
-if (is('^16.0.0-0 || ^16.3.0-0')) {
+if (is('^16.0.0-0 || ^16.3.0-0 || ^17.0.0-rc.0')) {
({ createPortal } = require('react-dom'));
} else {
createPortal = null;
@@ -62,13 +62,13 @@ if (is('>=15.3')) {
PureComponent = null;
}
-if (is('^16.2.0-0')) {
+if (is('^16.2.0-0 || ^17.0.0-rc.0')) {
({ Fragment } = require('react'));
} else {
Fragment = null;
}
-if (is('^16.3.0-0')) {
+if (is('^16.3.0-0 || ^17.0.0-rc.0')) {
({
createContext,
createRef,
@@ -84,7 +84,7 @@ if (is('^16.3.0-0')) {
AsyncMode = null;
}
-if (is('^16.9.0-0')) {
+if (is('^16.9.0-0 || ^17.0.0-rc.0')) {
({ Profiler } = require('react'));
} else if (is('^16.4.0-0')) {
({
@@ -94,7 +94,7 @@ if (is('^16.9.0-0')) {
Profiler = null;
}
-if (is('^16.6.0-0')) {
+if (is('^16.6.0-0 || ^17.0.0-rc.0')) {
({
Suspense,
lazy,
@@ -122,7 +122,7 @@ if (is('^16.9.0-0')) {
createRoot = null;
}
-if (is('^16.8.0-0')) {
+if (is('^16.8.0-0 || ^17.0.0-rc.0')) {
({
useCallback,
useContext,
diff --git a/packages/enzyme-test-suite/test/_helpers/version.js b/packages/enzyme-test-suite/test/_helpers/version.js
index 5f2f37060..bae6905ff 100644
--- a/packages/enzyme-test-suite/test/_helpers/version.js
+++ b/packages/enzyme-test-suite/test/_helpers/version.js
@@ -11,3 +11,4 @@ export function is(range) {
}
export const REACT16 = is('16');
+export const REACT17 = is('^17.0.0-rc.0');
diff --git a/packages/enzyme-test-suite/test/staticRender-spec.jsx b/packages/enzyme-test-suite/test/staticRender-spec.jsx
index 6b9b8ad54..4947065bd 100644
--- a/packages/enzyme-test-suite/test/staticRender-spec.jsx
+++ b/packages/enzyme-test-suite/test/staticRender-spec.jsx
@@ -94,7 +94,7 @@ describeWithDOM('render', () => {
});
const getWrapper = (options) => render(, options);
- if (is('>= 16')) {
+ if (is('>= 16 || ^17.0.0-rc.0')) {
expect(getWrapper).to.not.throw();
const wrapper = getWrapper();
@@ -115,7 +115,7 @@ describeWithDOM('render', () => {
});
const getWrapper = (options) => render(, options);
- if (is('>= 16')) {
+ if (is('>= 16 || ^17.0.0-rc.0')) {
expect(getWrapper).to.not.throw();
const wrapper = getWrapper();
@@ -129,7 +129,7 @@ describeWithDOM('render', () => {
});
});
- describeIf(is('> 16.6'), 'suspense fallback option', () => {
+ describeIf(is('> 16.6 || ^17.0.0-rc.0'), 'suspense fallback option', () => {
it('throws if options.suspenseFallback is specified', () => {
class DynamicComponent extends React.Component {
render() {