MCPcopy Index your code
hub / github.com/AppiumTestDistribution/appium-gestures-plugin

github.com/AppiumTestDistribution/appium-gestures-plugin @4.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 4.0.1 ↗ · + Follow
19 symbols 31 edges 11 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AppiumGestures

appium-gestures-plugin npm version

This is an Appium plugin designed to perform basic gestures using W3C Actions.

Prerequisite

Appium version 2.0

Installation - Server

Install the plugin using Appium's plugin CLI, either as a named plugin or via NPM:

appium plugin install --source=npm appium-gestures-plugin

Activation

The plugin will not be active unless turned on when invoking the Appium server:

appium --use-plugins=gestures

Usage

Sample app used to demonstrate below gesture is available here

Swipe Left

RemoteWebElement carousel = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Carousel")));

driver.executeScript("gesture: swipe", Map.of("elementId", carousel.getId(), "percentage", 50, "direction", "left"));

Swipe Right

RemoteWebElement carousel = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Carousel")));

driver.executeScript("gesture: swipe", Map.of("elementId", carousel.getId(), "percentage", 50, "direction", "right"));

Swipe Up

RemoteWebElement scrollView = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Swipe-screen")));

driver.executeScript("gesture: swipe", Map.of("elementId", scrollView.getId(),
                "percentage", 50,
                "direction", "up"));

Swipe Down

RemoteWebElement scrollView = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Swipe-screen")));

driver.executeScript("gesture: swipe", Map.of("elementId", scrollView.getId(),
                "percentage", 50,
                "direction", "down"));

scrollElementIntoView

RemoteWebElement scrollView = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Swipe-screen")));

driver.executeScript("gesture: scrollElementIntoView", Map.of("scrollableView", scrollView.getId(),
    "strategy", "accessibility id",
    "selector", "WebdriverIO logo",
    "percentage", 50,
    "direction", "up",
    "maxCount", 3));

Sample app used to demonstrate below gesture is available here

Drag and Drop

RemoteWebElement source = (RemoteWebElement) wait.until(elementToBeClickable(AppiumBy.accessibilityId("dragMe")));
RemoteWebElement destination = (RemoteWebElement) wait.until(elementToBeClickable(AppiumBy.accessibilityId("dropzone")));

driver.executeScript("gesture: dragAndDrop", Map.of("sourceId", source.getId(), "destinationId", destination.getId()));

Double Tap

RemoteWebElement doubleTapMe = (RemoteWebElement) driver.findElement(AppiumBy.accessibilityId("doubleTapMe"));

driver.executeScript("gesture: doubleTap", Map.of("elementId", doubleTapMe.getId()));

Long Press

Pressure has to be between 0 and 1.

RemoteWebElement longPress = (RemoteWebElement) driver.findElement(AppiumBy.accessibilityId("longpress"));

driver.executeScript("gesture: longPress", Map.of("elementId", longPress.getId(), "pressure", 0.5, "duration", 800));

WDIO

await driver.execute('gesture: dragAndDrop', { sourceId, destinationId });

Supported

  • Swipe Left, right, up and down
  • scrollElementIntoView
  • Drag and Drop
  • Double Tap
  • Long Press

TODO

  • zoom
  • multi finger swipe

Core symbols most depended-on inside this repo

swipe
called by 2
src/gestures/swipe.js
dragAndDrop
called by 1
src/gestures/dragAndDrop.js
scrollElementIntoView
called by 1
src/gestures/swipe.js
getDirectionActions
called by 1
src/gestures/swipe.js
getActionsData
called by 1
src/gestures/swipe.js
isElementFound
called by 1
src/gestures/swipe.js
doubleTap
called by 1
src/gestures/doubleTap.js
longPress
called by 1
src/gestures/longPress.js

Shape

Function 10
Method 7
Class 2

Languages

TypeScript100%

Modules by API surface

src/plugin.js9 symbols
src/gestures/swipe.js5 symbols
src/sessionInfo.js1 symbols
src/gestures/longPress.js1 symbols
src/gestures/dragAndDrop.js1 symbols
src/gestures/doubleTap.js1 symbols
src/element.js1 symbols

For agents

$ claude mcp add appium-gestures-plugin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact