title: Appium TouchActions not registering for WebGL Game in Selenium
body: <p>I have a simple javascript game (created with cocos2d-html5) that runs using WebGL / Canvas.  I'm able to simulate user interaction for desktop browsers (Chrome, Firefox) using x,y coordinate clicks etc, however when I try to use Selenium (Java) and Appium's TouchActions for iphone testing, it doesn't register a single tap or press.  </p>
  
  <p>There is a start screen for mobile to capture user input for audio etc to work, clickable anywhere - and nothing I do triggers the screen.  Users are able to interact using mobile devices, so I know the screen works.  It appears that it's just the touch actions that aren't working, or I'm doing it wrong.</p>
  
  <p>Appium driver setup is:</p>
  
  <pre><code>DesiredCapabilities capabilities = getCapabilities();
  URL url = new URL("http://localhost:4723/wd/hub");
  driver = new AppiumDriver(url, capabilities);
  </code></pre>
  
  <p>I've tried:</p>
  
  <pre><code>TouchAction touchAction = new TouchAction((PerformsTouchActions) driver);
  touchAction.press(PointOption.point(200, 200))                 
             .waitAction(WaitOptions.waitOptions(Duration.ofMillis(100)))
             .release()
             .perform();
  </code></pre>
  
  <p>and </p>
  
  <pre><code>TouchAction touchAction = new TouchAction((PerformsTouchActions) driver);
  TapOptions tapOptions = TapOptions.tapOptions()
      .withElement(ElementOption.element(gameCanvas()))
      .withPosition(PointOption.point(100, 100));
  touchAction.tap(tapOptions);
  </code></pre>
  
  <p>where <code>gameCanvas()</code> returns <code>driver.findElement(By.id("gameCanvas"));</code></p>
  
  <p>I see the following Appium log output that seems relevant, but it's pretty noisy, and I'm not sure what else to look for: </p>
  
  <pre><code>[XCUITest] Executing command 'performTouch'
  [XCUITest] Received the following touch action: tap(options={"x":187,"y":179})
  [XCUITest] Found matching gesture: tap
  [JSONWP Proxy] Proxying [POST /wda/tap/0] to [POST http://localhost:8100/session/F4AF63A8-89F0-4ECD-832E-8F4D3BB27001/wda/tap/0] with body: {"x":187,"y":179}
  [JSONWP Proxy] Got response with status 200: {"value":{},"sessionId":"F4AF63A8-89F0-4ECD-832E-8F4D3BB27001","status":0}
  [MJSONWP] Responding to client with driver.performTouch() result: null
  </code></pre>
  
  <p>Am I missing something?  What am I doing wrong?</p>