mobile-dev-inc / maestro

Painless Mobile UI Automation
https://maestro.mobile.dev/
Apache License 2.0
5.89k stars 281 forks source link

Support real iOS devices #686

Open lsaudon opened 1 year ago

lsaudon commented 1 year ago

Hello,

I wanted to know if any work had been started on supporting real iOS devices.

Thank you in advance.

dmitry-zaitsev commented 1 year ago

Hey, we are gradually working towards that goal. One of the requirements for that is to move away from IDB dependency and switch over to our newest XCUITest driver. A rough estimation for real device support is Q2 2023

apaolino commented 1 year ago

Are there any news about this feature? Having a real device it's a requirement for testing in-app purchases on iOS

lsaudon commented 1 year ago

I've seen commits go by where IDB is replaced, but I think it's not over yet.

LoC743 commented 1 year ago

@dmitry-zaitsev Hey, are there any updates about moving away from IDB?

tomoakley commented 1 year ago

@dmitry-zaitsev we're currently evaluating UI testing for real devices for our mobile app. iOS real device support is a big deal. We need to have some sort of idea or estimate of when this might be available, especially as Q2 has been and gone. Are you able to provide this? Your silence after @LoC743's comment is slightly worrying.

zacharyfmarion commented 1 year ago

+1, this project looks great but without physical iOS support my team can't migrate to using it

zacharyfmarion commented 1 year ago

@amanjeetsingh150 does this PR move us closer to iOS device support? https://github.com/mobile-dev-inc/maestro/pull/1319?

tomoakley commented 1 year ago

@zacharyfmarion just fyi, I believe @dmitry-zaitsev left mobile.dev earlier this year. So that'll be why he's not replying.

I emailed Maestro support and asked about iOS and they told me:

We looked into it and it was going to be a much larger investment in time and resources than initially anticipated but absolutely still on our radar for the future. Many customers haven't had a hard requirement for it to run their testing so we are just trying to prioritize what is most urgent for our users. Dev experience and time saved on testing is definitely the biggest factor for folks moving forward with Maestro.

Which is disappointing- but understandable.

I don't know about that PR but it looks interesting.

amanjeetsingh150 commented 1 year ago

Hey, @zacharyfmarion yes that's right it was huge blocker for real device support getting rid of IDB moves us one step closer to the real device.

Now as @tomoakley said it is definitely a larger investment, I could name some of the blockers that still remain for physical device from maestro side:

  1. Having XCTest support for the implementations that still rely on simctl here: https://github.com/mobile-dev-inc/maestro/blob/main/maestro-ios/src/main/java/ios/simctl/SimctlIOSDevice.kt for example screen recording, launching app etc.
  2. Getting rid of applesimutils: https://github.com/mobile-dev-inc/maestro/blob/5684c215d6979e64890b89e6fa5a3d24d40bd55c/maestro-ios-driver/src/main/kotlin/util/LocalSimulatorUtils.kt#L321 Right now the way how it works is: apart from notifications permissions every permission is auto granted from applesimutils which again needs an alternative implementation for physical device. For this one, we can auto grant every permission to similar to how notifications work from this request here: https://github.com/mobile-dev-inc/maestro/blob/main/maestro-ios-xctest-runner/maestro-driver-iosUITests/Routes/Helpers/SystemPermissionHelper.swift#L6.

Contributions are welcome on this let me know if you need help 🙌

VuchenichD-Roche commented 1 year ago

Hey, @amanjeetsingh150 has anyone looked into go-ios (https://github.com/danielpaulus/go-ios) as a possible solution for implementing real iOS device support into Maestro?

NilPascual commented 1 year ago

Hey, any news on this topic? We are waiting for this feature and it was estimated for Q2. Thanks a lot!

lucasoliveiraw00 commented 10 months ago

Hi, any news on this topic?

tristian-azuara-sh commented 4 months ago

Any progress on this? or in lieu of that any materials to share that could entice contributors to try and help with this?

nalexn commented 2 months ago

Maestro docs claim real iOS devices are supported through Facebook's IDB:

Maestro CLI can run Flows on any Android device/emulator that supports ADB connections and any iOS device/simulator that supports Facebook's IDB. You can manually orchestrate your Flow execution against any provider that supports these protocols. Just use the Maestro CLI to run your Flows like you would locally.

After running idb connect <UDID> and idb_companion --udid <UDID>, the idb is able to successfully operate on both simulators AND real devices, but maestro doesn't see the device by UDID, outputing the error "Device with id ... is not connected"

Can someone confirm this is supported or not? Is a way to make the real iOS device a valid target for running maestro on, at least through idb?