From a6b3d1ff95cc4cd208e3ebd1559bb4ba9afbeb62 Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Tue, 4 Aug 2020 21:03:04 +0200 Subject: [PATCH 1/4] test: Run CI with experimental React --- .travis.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index c2f47b7a..b7c19f9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,14 +9,14 @@ node_js: - 14 - node env: - - REACT_NEXT=false - - REACT_NEXT=true + - REACT_DIST=stable + - REACT_DIST=next + - REACT_DIST=experimental install: - npm install # as requested by the React team :) # https://reactjs.org/blog/2019/10/22/react-release-channels.html#using-the-next-channel-for-integration-testing - - if [ "$REACT_NEXT" = true ]; then npm install react@next - react-dom@next; fi + - npm install react@$REACT_DIST react-dom@$REACT_DIST script: - npm run validate - npx codecov@3 @@ -27,7 +27,8 @@ branches: jobs: allow_failures: - - env: REACT_NEXT=true + - REACT_DIST=next + - REACT_DIST=experimental include: - stage: release node_js: 14 From 771aa41a6f6a3a265c6d1b36a98b8a8efe95d38d Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Tue, 4 Aug 2020 21:12:03 +0200 Subject: [PATCH 2/4] stable -> latest --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b7c19f9f..eae48ee7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ node_js: - 14 - node env: - - REACT_DIST=stable + - REACT_DIST=latest - REACT_DIST=next - REACT_DIST=experimental install: From 3edf06339a8b6818916ab312bc551cf79b40948e Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Tue, 4 Aug 2020 21:29:43 +0200 Subject: [PATCH 3/4] fix(fireEvent): Make sure react dispatches focus/blur events --- src/fire-event.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/fire-event.js b/src/fire-event.js index 071aff8a..221bec52 100644 --- a/src/fire-event.js +++ b/src/fire-event.js @@ -28,6 +28,7 @@ const select = fireEvent.select fireEvent.select = (node, init) => { select(node, init) // React tracks this event only on focused inputs + // TODO probably need to fire focusin for JSDOM compat node.focus() // React creates this event when one of the following native events happens @@ -41,4 +42,18 @@ fireEvent.select = (node, init) => { fireEvent.keyUp(node, init) } +// React event system tracks native focusout/focusin events for +// running blur/focus handlers +// @link https://github.com/facebook/react/pull/19186 +const blur = fireEvent.blur +const focus = fireEvent.focus +fireEvent.blur = (...args) => { + fireEvent.focusOut(...args) + return blur(...args) +} +fireEvent.focus = (...args) => { + fireEvent.focusIn(...args) + return focus(...args) +} + export {fireEvent} From 40fbff1b6d55231f67d3696224378c53aaf342fd Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Tue, 4 Aug 2020 21:40:34 +0200 Subject: [PATCH 4/4] Remove todo --- src/fire-event.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/fire-event.js b/src/fire-event.js index 221bec52..b4e60928 100644 --- a/src/fire-event.js +++ b/src/fire-event.js @@ -28,7 +28,6 @@ const select = fireEvent.select fireEvent.select = (node, init) => { select(node, init) // React tracks this event only on focused inputs - // TODO probably need to fire focusin for JSDOM compat node.focus() // React creates this event when one of the following native events happens