Scrolling using 'long press' and 'move to' doesn't seem to work on Espresso Driver


#1

I have a very simple test that scrolls down on a list of elements and works well when I use the UIAutomator2 driver for Android or XCUITest driver for iOS, but it fails as soon as I switch to the Espresso driver.

I opened an issue directly on the Espresso Driver Github page since it works on the other 2 drivers but not when using the Espresso driver.

But I’m also curious if someone else has dealt with this issue and if they have a suggestion on an effective way to scroll down a list of elements that works reliably with XCUITest and Espresso drivers. For what is worth the app is written on React Native but I’m not convinced that makes much of a difference since it seems to work well with UIAutomator2.

I’m using the Python client and this is a simplified version of my code:

top_element = get_element('top-cell')
bottom_element = get_element('bottom-cell')
actions = TouchAction(driver)
(actions.long_press(bottom_element)
         .move_to(top_element)
         .release()

def get_element(element_id):
        element_ready = expected_conditions.presence_of_element_located(
            (MobileBy.ACCESSIBILITY_ID, element_id))
        return self.wait.until(element_ready)

And these are the relevant Appium Server logs. There are no errors on the logs as you can see, but the app simply doesn’t scroll. Any suggestions?

[JSONWP Proxy] Proxying [POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element/fdf24285-b9c2-4723-9e62-42d9a311b401/click] to [POST http://localhost:8080/session/0c5eb84a-7ec8-491f-b30f-d7b1d429438d/element/fdf24285-b9c2-4723-9e62-42d9a311b401/click] with body: {"id":"fdf24285-b9c2-4723-9e62-42d9a311b401","sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[JSONWP Proxy] Got response with status 200: {"id":"f95ef160-e24d-4916-bdeb-893af2139dba","sessionId":"0c5eb84a-7ec8-491f-b30f-d7b1d429438d","status":0,"value":null}
[JSONWP Proxy] Replacing sessionId 0c5eb84a-7ec8-491f-b30f-d7b1d429438d with b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29
[HTTP] <-- POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element/fdf24285-b9c2-4723-9e62-42d9a311b401/click 200 419 ms - 120
[HTTP] 
[HTTP] --> POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element
[HTTP] {"using":"accessibility id","value":"top-cell","sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[W3C] Driver proxy active, passing request on via HTTP proxy
[JSONWP Proxy] Matched '/wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element' to command name 'findElement'
[JSONWP Proxy] Proxying [POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element] to [POST http://localhost:8080/session/0c5eb84a-7ec8-491f-b30f-d7b1d429438d/element] with body: {"using":"accessibility id","value":"top-cell","sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[JSONWP Proxy] Got response with status 200: {"id":"62c6e291-5ef1-4543-908c-e301166b3f00","sessionId":"0c5eb84a-7ec8-491f-b30f-d7b1d429438d","status":0,"value":{"ELEMENT":"6be7e18b-e62a-4ec1-8c7c-cb9976845b59"}}
[JSONWP Proxy] Replacing sessionId 0c5eb84a-7ec8-491f-b30f-d7b1d429438d with b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29
[HTTP] <-- POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element 200 57 ms - 166
[HTTP] 
[HTTP] --> POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element
[HTTP] {"using":"accessibility id","value":"bottom-cell","sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[W3C] Driver proxy active, passing request on via HTTP proxy
[JSONWP Proxy] Matched '/wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element' to command name 'findElement'
[JSONWP Proxy] Proxying [POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element] to [POST http://localhost:8080/session/0c5eb84a-7ec8-491f-b30f-d7b1d429438d/element] with body: {"using":"accessibility id","value":"bottom-cell","sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[JSONWP Proxy] Got response with status 200: {"id":"49a5d26d-daa1-4fbb-a796-9887aa8b17c7","sessionId":"0c5eb84a-7ec8-491f-b30f-d7b1d429438d","status":0,"value":{"ELEMENT":"51fd0f10-715c-463a-8259-82f32b0ad454"}}
[JSONWP Proxy] Replacing sessionId 0c5eb84a-7ec8-491f-b30f-d7b1d429438d with b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29
[HTTP] <-- POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/element 200 57 ms - 166
[HTTP] 
[HTTP] --> POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/touch/perform
[HTTP] {"actions":[{"action":"longPress","options":{"element":"51fd0f10-715c-463a-8259-82f32b0ad454","duration":1000}},{"action":"moveTo","options":{"element":"6be7e18b-e62a-4ec1-8c7c-cb9976845b59"}},{"action":"release","options":{}}],"sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[W3C] Driver proxy active, passing request on via HTTP proxy
[JSONWP Proxy] Matched '/wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/touch/perform' to command name 'performTouch'
[JSONWP Proxy] Proxying [POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/touch/perform] to [POST http://localhost:8080/session/0c5eb84a-7ec8-491f-b30f-d7b1d429438d/touch/perform] with body: {"actions":[{"action":"longPress","options":{"element":"51fd0f10-715c-463a-8259-82f32b0ad454","duration":1000}},{"action":"moveTo","options":{"element":"6be7e18b-e62a-4ec1-8c7c-cb9976845b59"}},{"action":"release","options":{}}],"sessionId":"b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29"}
[JSONWP Proxy] Got response with status 200: {"id":"40ebf152-76eb-40a9-bf33-36f1a99f87a9","sessionId":"0c5eb84a-7ec8-491f-b30f-d7b1d429438d","status":0,"value":null}
[JSONWP Proxy] Replacing sessionId 0c5eb84a-7ec8-491f-b30f-d7b1d429438d with b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29
[HTTP] <-- POST /wd/hub/session/b8d1d506-c81d-4b1c-b4ee-ff7c1a677b29/touch/perform 200 599 ms - 120