appium / appium-ios-device

Tools for interacting with iOS devices
Apache License 2.0
115 stars 26 forks source link

iOS 17, Xcode 15 (RemoteXPC) #123

Open KazuCocoa opened 10 months ago

KazuCocoa commented 10 months ago

appium-ios-device related thing (if needed)

https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md

We should send message via the RemoteXPC, remoted. We maybe detect if it is necessary by checking the response of UsesRemoteXPC https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md#remotexpc-services

KazuCocoa commented 8 months ago

xcrun devicectl is promising. potentially we could use that for iOS 17 x Xcode 15 environment in some use cases instead. e.g. https://github.com/appium/appium-xcuitest-driver/pull/1997

But it is worth adding via remoted call as this library, of course.

KazuCocoa commented 8 months ago

Perhaps this module should handle ipv6 as well for iOS 17. (Core Device Tunnel stuff)

e.g. https://github.com/doronz88/pymobiledevice3/tree/master?tab=readme-ov-file

tomriddly commented 8 months ago

The original way requires sudo privilege. Will this be a problem? https://github.com/doronz88/pymobiledevice3/blob/6545f5966bedd444d6b06f656e70a93f4b18b70f/pymobiledevice3/cli/remote.py#L71 Besides, I'm still unable to reproduce a valid demo on js ;{

KazuCocoa commented 8 months ago

Hm, we should not run with sudo in appium process wide, but I wonder if we could do with sudo privilege in appium-ios-device wide...

It would be great if we could find a way to avoid it though. cc @mykola-mokhnach

mykola-mokhnach commented 8 months ago

I agree there is no way to spin up TUN/TAP interface without having sudo privileges Probably, we'd have to split this stuff into a separate process running with sudo privileges and isolate it properly

chmiiller commented 8 months ago

sorry if I'm sounding dumb, but pymobiledevice3 is a Python package. How would integrate all these RemoteXPC stuff into appium-iOS-device? Would you re-write what they did? Isn't easier to wait until libimobiledevice makes some progress on supporting iOS 17?

mykola-mokhnach commented 8 months ago

sorry if I'm sounding dumb, but pymobiledevice3 is a Python package. How would integrate all these RemoteXPC stuff into appium-iOS-device? Would you re-write what they did? Isn't easier to wait until libimobiledevice makes some progress on supporting iOS 17?

We are not talking about integration, but rather switching completely to the new toolchain and deprecating appium-ios-device as it has no maintainers who would like to further develop and evolve the package.

tomriddly commented 8 months ago

sorry if I'm sounding dumb, but pymobiledevice3 is a Python package. How would integrate all these RemoteXPC stuff into appium-iOS-device? Would you re-write what they did? Isn't easier to wait until libimobiledevice makes some progress on supporting iOS 17?

I'm trying to migrate the remoteXPC to js. Unfortunately I'm still unable to create a valid demo. Besides, this requires a sudo privilege to create a new tunnel which is nothing like what we did before. What a mess...

KazuCocoa commented 7 months ago

Maybe to start XCTest session, https://github.com/appium/appium-ios-device/blob/5735774b79dffc7f2b4afa60cd8132e16a6385ca/lib/xctest.js#L189 should be for com.apple.dt.testmanagerd.remote service over the remoted connection

KazuCocoa commented 3 months ago

Noticed quic for nodejs core is a draft pr

KazuCocoa commented 3 months ago

webinspector needs to be com.apple.webinspector.shim.remote

KazuCocoa commented 1 month ago

Possibly iOS 17.4+'s remote service discovery lockdown method will help