[iOS] Slider doesn't trigger onValueChange/onSlidingComplete when adjusted with Detox adjustSliderToPosition()
Environment
❯ react-native info info Fetching system and libraries information... System: OS: macOS 12.1 CPU: (10) arm64 Apple M1 Pro Memory: 201.50 MB / 16.00 GB Shell: 5.8 - /bin/zsh Binaries: Node: 16.13.2 - /var/folders/51/8pncdp0x14d04bbk454szsnw0000gn/T/fnm_multishells/16782_1643016955991/bin/node Yarn: 1.22.5 - ~/.yarn/bin/yarn npm: 8.1.2 - /var/folders/51/8pncdp0x14d04bbk454szsnw0000gn/T/fnm_multishells/16782_1643016955991/bin/npm Watchman: 2022.01.03.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.11.2 - /Users/moox/.gem/bin/pod SDKs: iOS SDK: Platforms: DriverKit 21.2, iOS 15.2, macOS 12.1, tvOS 15.2, watchOS 8.3 Android SDK: Not Found IDEs: Android Studio: Not Found Xcode: 13.2.1/13C100 - /usr/bin/xcodebuild Languages: Java: 11.0.10 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: ^17.0.2 => 17.0.2 react-native: 0.67.0-rc.6 => 0.67.0-rc.6 react-native-macos: Not Found npmGlobalPackages: react-native: Not Found
Description
I am using detox to automated some tests and just faced the fact that using adjustSliderToPosition() API doesn't trigger onValueChange nor onSlidingComplete, so in my case it's like the slider hasn't been moved (it is, visually, but programmatically, no call have been made)
Reproducible Demo
I can't really do a quick demo :/
Hello @MoOx! It's always good to specify the version you are using, so I can analyse this right away instead of bothering you with asking about it. Especially, there's been a 4.2.0 release just yesterday.
I tried this version right now, I am facing the same problem.
@MoOx Thanks! I will take a look into that.
Thanks a lot!
Just in case somebody is looking for a workaround: just use Detox swipe() method with the proper argument so it works for you (in my case a simple await element(by.id('GoalEdit_durationSlider')).swipe('right', 'slow', 0.3, 0); did the trick.
@MoOx I am getting the same issue but above trick not working for me. Do you have any other solution? (I am guessing GoalEdit_durationSlider is you slider view testID)
Anyone else having any solution for this?
I didn't look for any other solution since the previous one works for me perfectly.
I'm seeing the same issue.
Try to use the longPressAndDrag, for example:
# sliderElem and targetElem could be the same element
const sliderElem = element(by.id('elementToDrag'))
const targetElem = element(by.id('targetElem'))
const duration = 2000
const endingPosition = 0.9
await sliderElem.longPressAndDrag(duration, NaN, NaN, targetElem, endingPosition, NaN, 'slow', 0)