Skip to content

Appium WDA is not working with third party tools like go-ios #1006

Description

@tareksalem

I have Ipad 2024 M4 11 inch running Ipad os 18 and I have linux machine, I managed to get the wdio ipa signed by personal account and I successfully installed it on my Ipad device using go-ios
The wdio is successfully installed and I have trusted my personal account to be able to have the apps running, I tried on different apps same signing way and installation way and it's working fine on the same device.

I have followed the documentation here for integrating with pre installed WDA using third party:

Image

Regarding Appium I have it installed on my linux (ubuntu) machine and I have a very simple wdio project as following:

Wdio config.js file

const { config } = require('@wdio/cli');

exports.config = {
  runner: "local",
  specs: ["./test/**/*.test.js"],
  maxInstances: 1,
  capabilities: [
    {
      platformName: "iOS",
      "appium:automationName": "XCUITest",
      "appium:deviceName": "iPad",
      "appium:platformVersion": "18.3.2",
      "appium:udid": process.env.DEVICE_UDID,
      "appium:bundleId": "com.apple.mobilesafari",
      "appium:noReset": true,
      "appium:newCommandTimeout": 300,
      "appium:useNativeCaching": false,
      "appium:skipXcodeInstall": true,
      "appium:usePreinstalledWDA": true,
      "appium:updatedWDABundleId": "com.tarek.WebDriverAgentRunner",
      "appium:webDriverAgentUrl": "http://localhost:8100",
    },
  ],
  logLevel: "info",
  baseUrl: "http://localhost",
  waitforTimeout: 10000,
  connectionRetryTimeout: 90000,
  connectionRetryCount: 3,
  framework: "mocha",
  reporters: ["spec"],
  protocol: "http",
  hostname: "localhost",
  port: 4723,
  path: "/",
  services: [],
  connectionRetryCount: 5,
  mochaOpts: {
    ui: "bdd",
    timeout: 60000,
  },
};

This one is using the webdriver agent url because it's pre installed and it I launch it using go-ios library.

And I have this testing file

launch.test.js

describe("Safari Browser Test", () => {
  it("should launch Safari and verify page", async () => {
    // Launch Safari directly through bundle ID
    await driver.launchApp();
    
    // Navigate to test page
    await driver.navigateTo("https://example.com");
    
    // Wait for page to load
    await driver.waitUntil(
      async () => (await driver.getTitle()) === "Example Domain",
      { timeout: 10000 }
    );
    
    // Verify elements
    const heading = await driver.$("h1");
    await expect(heading).toHaveText("Example Domain");
  });
});

First I launch wdio using go-ios. I tried also different libraries to do the same and all of them are working fine with other apps, except wda. Then I start using forward to forward localhost:8100 to the device tcp port 8100 and forwarding is working fine.

Then I run appium server using this command

npx appium --port 4723

Then I run wdio using this command

npx wdio run wdio.conf.js

Screenshot:
Image

but when the wdio script executes I am getting this error from appium server:

fcdc61][XCUITestDriver@528c] Starting WebDriverAgent initialization with the synchronization key 'XCUITestDriver'
[2efcdc61][XCUITestDriver@528c] Trying to start WebDriverAgent once since at least one of webDriverAgentUrl,usePreinstalledWDA capabilities is provided
[2efcdc61][XCUITestDriver@528c] Event 'wdaStartAttempted' logged at 1744902471750 (19:07:51 GMT+0400 (Gulf Standard Time))
[2efcdc61][XCUITestDriver@528c] The executable name for the bundle id 'com.tarek.WebDriverAgentRunner.xctrunner' was 'WebDriverAgentRunner-Runner'
[2efcdc61][XCUITestDriver@528c] Calling devicectl to kill the process
[2efcdc61][XCUITestDriver@528c] Executing xcrun devicectl device info processes --device 00008132-001A69DA2169001C --quiet --json-output -
[2efcdc61][XCUITestDriver@528c] Failed to kill 'com.tarek.WebDriverAgentRunner.xctrunner'. Original error: 'xcrun devicectl device info processes --device 00008132-001A69DA2169001C --quiet --json-output -' failed. Original error: 'xcrun' executable is not found neither in the process working folder (/media/tarek/B1/enbd/device-farm/wdio-test) nor in any folders specified in the PATH environment variable (/home/tarek/.npm/_npx/87826a530ba940cc/node_modules/.bin:/media/tarek/B1/enbd/device-farm/wdio-test/node_modules/.bin:/media/tarek/B1/enbd/device-farm/node_modules/.bin:/media/tarek/B1/enbd/node_modules/.bin:/media/tarek/B1/node_modules/.bin:/media/tarek/node_modules/.bin:/media/node_modules/.bin:/node_modules/.bin:/home/tarek/.nvm/versions/node/v20.18.3/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/home/tarek/.cargo/bin:/home/tarek/.gvm/pkgsets/go1.18/global/bin:/home/tarek/.gvm/gos/go1.18/bin:/home/tarek/.gvm/pkgsets/go1.18/global/overlay/bin:/home/tarek/.gvm/bin:/home/tarek/.cargo/bin:/home/tarek/.nvm/versions/node/v20.18.3/bin:/home/tarek/.local/bin:/home/tarek/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin)
[2efcdc61][XCUITestDriver@528c] Using provided WebdriverAgent at 'http://localhost:8100'
[2efcdc61][XCUITestDriver@528c] JWProxy options: {"server":"localhost","port":8100,"base":"","timeout":240000,"keepAlive":true,"scheme":"http","reqBasePath":"","sessionId":null}
[2efcdc61][XCUITestDriver@528c] NoSessionProxy options: {"server":"localhost","port":8100,"base":"","timeout":240000,"keepAlive":true,"scheme":"http","reqBasePath":"","sessionId":null}
[2efcdc61][WD Proxy] NoSessionProxy options: {"server":"localhost","port":"8100","base":"","timeout":3000,"scheme":"http","reqBasePath":"","sessionId":null}
[2efcdc61][WD Proxy] Matched '/status' to command name 'getStatus'
[2efcdc61][WD Proxy] Proxying [GET /status] to [GET http://localhost:8100/status] with no body
[2efcdc61][WD Proxy] read ECONNRESET
[2efcdc61][XCUITestDriver@528c] WDA is not listening at 'http://localhost:8100/'. Original error:: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: read ECONNRESET

Multiple questions please I have:

  • Why I am getting this error in appium
2efcdc61][XCUITestDriver@528c] Executing xcrun devicectl device info processes --device 00008132-001A69DA2169001C --quiet --json-output -
[2efcdc61][XCUITestDriver@528c] Failed to kill 'com.tarek.WebDriverAgentRunner.xctrunner'. Original error: 'xcrun devicectl device info processes --device 00008132-001A69DA2169001C --quiet --json-output -' failed. Original error: 'xcrun' executable is not found neither in the process working folder

Why it uses xcrun to run the wdio however I mentioned in the config to skipXCodeInstall, I am running on linux so no need for this command no? especially when using the webDriverAgentUrl capability

Second Question: What is wrong in my setup and implementation? did I miss anything?

Third Question: I tried to use the prebuiltWDAPath capability to let appium itself install the WDA and I give it the path for the WebDriverAgentRunner-Runner.app like this:

 capabilities: [
    {
      platformName: "iOS",
      "appium:automationName": "XCUITest",
      "appium:deviceName": "iPad",
      "appium:platformVersion": "18.3.2",
      "appium:udid": process.env.DEVICE_UDID,
      "appium:bundleId": "com.apple.mobilesafari",
      "appium:noReset": true,
      "appium:newCommandTimeout": 300,
      "appium:useNativeCaching": false,
      "appium:skipXcodeInstall": true,
      "appium:usePreinstalledWDA": true,
      "appium:updatedWDABundleId": "com.tarek.WebDriverAgentRunner",
      "appium:prebuiltWDAPath": "/home/tarek/Downloads/WebDriverAgent/WebDriverAgentRunner-Runner.app",
      "appium:usePrebuiltWDA": true,
    },
  ]

it succeeds to install WDA on my device and I can see it installed, but after that also fails with

failed. Original error: 'xcrun' executable is not found neither in the process working folder 

Anyone please can help, I have more than week struggling with this issue, Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions