-
Notifications
You must be signed in to change notification settings - Fork 450
Description
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:
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 4723Then I run wdio using this command
npx wdio run wdio.conf.jsbut 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.