---
name: Tap
short_description: Single tap on the touch enabled device
   
example_usage:
  java:
    |
      TouchActions action = new TouchActions(driver);
      action.singleTap(element);
      action.perform();
  python:
    |
      actions = TouchActions(driver)
      actions.tap(element)
      actions.perform()
  javascript_wd:
    |
      // Using tapElement method
      await driver.tapElement(elementOne);

      // Using touch actions
      let action = new wd.TouchAction();
      action.tap({el: element});
      action.perform();
      await driver.performTouchAction(action);

  javascript_wdio:
    |
      driver.touchPerform({
        action: 'tap',
        options: {
          element: element
        }
      });
  ruby:
    |
      @driver.touch_action.single_tap(element).perform
  php:
    |
      // TODO PHP sample
  csharp:
    |
      // TODO C# sample

client_docs:
  java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#singleTap-org.openqa.selenium.WebElement-"
  python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap"
  javascript_wdio: "http://webdriver.io/api/mobile/touchPerform.html"
  javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531"
  ruby: "http://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:single_tap"
  php: "https://github.com/appium/php-client/" # TODO PHP documentation link
  csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link

# Driver support by platform
driver_support:
  ios:
    xcuitest: true
    uiautomation: true
  android:
    uiautomator2: true
    uiautomator: true
  mac:
    mac: true # TODO Confirm this that mouse movements
  windows:
    windows: true # TODO Confirm this
client_support:
  java: true
  python: true
  ruby: true
  php: true
  csharp: true
  javascript_wd: true
  javascript_wdio: true
  

# Information about the HTTP endpoints
endpoint:
  url: /session/:session_id/touch/click
  method: POST
  url_parameters:
    - name: session_id
      description: ID of the session to route the command to
  json_parameters:
    - name: element
      type: number
      description: ID of the element to double tap on

# Links to specifications. Should link to at least one specification
specifications:
  jsonwp: https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidtouchclick
