-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
What happened?
I have tried to integrate it into a test in my app which involves a draggable flatlist from https://www.npmjs.com/package/react-native-draggable-flatlist. This flatlist has its list items wrapped inTouchableHighlight
elements with onLongPress={drag}
. When running the tests it seems that it tries to press but it isn't detected by the system, then it does the drag (which doesn't accomplish much). After the longPressAndDrag
, it looks like a press is then detected.
I removed the dependency of react-native-draggable-flatlist
and logged when the onLongPress
on the TouchableHighlight
is called and it's not called until after the longPressAndDrag
action finishes. I tried a normal longPress
and that worked as expected and was detected by the system.
Disabling/dabbling around with synchronization produced no results.
What was the expected behaviour?
The Detox test interacts with the UI like a user would. Long press is not detected until after the whole action finishes and therefore the drag doesn't result in anything.
Was it tested on latest Detox?
- I have tested this issue on the latest Detox release and it still reproduces.
Did your test throw out a timeout?
- I have followed the instructions under Identifying which synchronization mechanism causes us to wait too much.
Help us reproduce this issue!
- Clone simplified repo https://github.com/tanakaderoy/detoxIssueRepro/
- Checkout branch
longPressAndDragRepro
- Use a compatible version of
node
(e.g.16.10.0
) yarn install
andyarn setup
to install dependenciesyarn start
to run Metroyarn e2e-build ios.debug
to build for Detoxyarn e2e-run ios.debug
to run the singular test that does thelongPressAndDrag
If you want to run it locally then do:
- Steps 1-5 above are completed
- Open
ios/detoxIssueRepro.xcworkspace
in Xcode - Build and run
- In app, long press on a list item and then drag -> see it works as expected
In what environment did this happen?
Detox version: 20.1.0
React Native version: 18.0.0
Has Fabric (React Native's new rendering system) enabled: no
Node version: 16.10.0
Device model: iPhone 14 Pro
iOS version: 12.4
macOS version: 12.6.2 on Apple Silicon
Xcode version: 14.1
Test-runner (select one): jest
Detox logs
Github was returning the error There was an error creating your Issue: body is too long (maximum is 65536 characters).
when I had the log in here so I put it in pastebin.
Device logs
Device logs
arron.ault@HUD040087 detoxIssueRepro % yarn e2e-run ios.debug --record-logs all
yarn run v1.22.19
$ detox test -c ios.debug --record-logs all
17:40:49.876 detox[43451] B jest --config e2e/jest.config.js
watchman warning: Recrawled this watch 5 times, most recently because:
MustScanSubDirs UserDroppedTo resolve, please review the information on
https://facebook.github.io/watchman/docs/troubleshooting.html#recrawl
To clear this warning, run:
`watchman watch-del '/Users/arron.ault/detoxIssueRepro' ; watchman watch-project '/Users/arron.ault/detoxIssueRepro'`
17:40:54.203 detox[43453] i drag.e2e.ts is assigned to 1B71F80E-EEC3-49A8-A570-B4A8F58A2249 (iPhone 12)
17:40:56.075 detox[43453] i org.reactjs.native.example.detoxIssueRepro launched. To watch simulator logs, run:
/usr/bin/xcrun simctl spawn 1B71F80E-EEC3-49A8-A570-B4A8F58A2249 log stream --level debug --style compact --predicate 'process == "detoxIssueRepro"'
17:40:57.936 detox[43453] i Drag: should drag and rearrange
17:41:03.602 detox[43453] i Drag: should drag and rearrange [OK]
PASS e2e/drag.e2e.ts (13.11 s)
Drag
✓ should drag and rearrange (5601 ms)
✨ Done in 14.38s.
arron.ault@HUD040087 detoxIssueRepro %