facebook / idb

idb is a flexible command line interface for automating iOS simulators and devices
https://fbidb.io
MIT License
4.5k stars 432 forks source link

Automation framework? #526

Closed bootstraponline closed 5 years ago

bootstraponline commented 5 years ago

Is there any information you can share on what UI automation framework Facebook is using with idb now that WebDriverAgent is archived?

https://github.com/facebookarchive/WebDriverAgent/issues/1118

lawrencelomax commented 5 years ago

We're using idb directly for Simulators. The idb ui family of commands provides primitives for tapping and getting UI hierarchies which is enough to write a UI testing framework on top. XCUI basically operates in a similar way, but it has more direct access to hierarchies. This is all about optimizing performance and throughput but also mirrors how we do things for Android.

For devices we do things a little differently and have launch plain XCUITests with idb xctest run ui. This is just running a regular UI test, except this also works for devices.

bootstraponline commented 5 years ago

For devices we do things a little differently and have launch plain XCUITests with idb xctest run ui. This is just running a regular UI test, except this also works for devices.

To clarify, FB engineers are writing iOS UI device tests using the XCUITest APIs directly? There's no secret sauce reverse engineered magic like WDA? Or even a wrapper framework that abstracts away XCUITest?

lawrencelomax commented 5 years ago

To clarify, FB engineers are writing iOS UI device tests using the XCUITest APIs directly? There's no secret sauce reverse engineered magic like WDA? Or even a wrapper framework that abstracts away XCUITest?

There's no secret sauce magic.

For many cases there are higher level abstractions on top of an underlying framework. For more information on those you might find this talk interesting. One of the advantages of this higher level framework is that it means that tests do not have to be re-written to change the underlying driver from XCUI/WDA to something like idb.

bootstraponline commented 5 years ago

Thank you for all the info!