So, What’s This I Hear About Appium Automating Desktop Apps?

Posted by Dan Cuellar in AppiumGuest Blog PostsMobileMobile Development & Testing

As of you may have read in my last blog post, Appium is spreading the use of Selenium JSON-wire protocol beyond the world of web and mobile and into new and exciting spaces.

Windows

Windows has finally arrived after steadily marching forward for the last few years. I wrote a prototype at the end of 2014 for using the Microsoft test automation APIs to drive Windows Phone applications. I took my prototype to a meetup in London, where I was referred to a few folks from a company named 2GIS who were already in the process of writing a full-fledged version of what I had prototyped, along with 2 other implementations - one for Windows Store apps, and one that worked with Windows Desktop apps. I invited Nick Abalov from 2GIS out to the Appium meetup in London early in 2015 where he gave a presentation of how it all worked. You can find out more about the project here.

Toward the end of that year, I received a mail from Microsoft expressing their interest in integrating their UI automation more tightly with Appium. Earlier in 2016, Microsoft completed a WebDriver implementation for Windows Apps, called WinAppDriver, which is now available for you to use on GitHub. Microsoft has now taken the reins for their platform and is maintaining the Windows universal platform implementation of Appium. WinAppDriver does not support older kinds of Windows applications, so for that I'd still recommend giving Winium a try.

Mac

As for the Mac platform, progress has been less consistent. I pushed a working proof of concept to GitHub all the way back in 2013. It worked by leveraging the OS X Assistive Device APIs that Apple provides for manufacturers of accessibility devices, such as screen-readers for those who are visually impaired. These APIs can be re-purposed for UI automation as they were designed for a similar purpose; they are called through a layer of middleware which provides a unified and consistent API across multiple OS versions.

Bill Cheeseman of Pfiddlesoft was kind enough to create this excellent framework and license it as free for personal and non-commercial use. You can find out more about these frameworks, and some of the other Mac automation solutions provided by Pfiddlesoft, at http://pfiddlesoft.com/index.html.

Anyway, once I pushed the code to GitHub, I didn't hear much about it. Maybe once or twice a year, I'd get a question about it in my inbox, but in general I assumed that no one was really using it. Since it was discussed at SeleniumConf this year, I've received a few emails from numerous people interested in contributing back all sorts of the improvements they have made over the years they have been using it. Recently, Stuart Russell of Intuit merged a few years' worth of changes that I think will finally make Appium for Mac a viable automation solution. You can check out all the goodness at https://github.com/appium/appium-for-mac. Have a look at the readme and start off by running the calculator.py script in the examples folder.

We still need to write a small Javascript wrapper to fully integrate it with Appium, but I'm sure I'll make time for that over the holidays.

WHAT NOW?

So, what's next for Appium? Now that Desktop apps are under the umbrella, what's the next big challenge? Perhaps better support for IoT devices like Apple Watch and Android Wear? I'm not sure, but no worries, there's still plenty of work to do in the meantime - things like making Appium easier to install and get going, and updating it with each major iOS and Android update. I hope that one day, as with web browsers for Selenium and Microsoft for Appium, the vendors themselves will write the Appium integration, so that the users have a more reliable, tightly-coupled experience. Until then, we'll just have to wait and see!

Discuss: So, What’s This I Hear About Appium Automating Desktop Apps?
0 Comments

Free Trial

Get access to a free 14-day trial version, or contact Sales for more information.