April 10, 2017

SeConf2017: Rethinking Appium’s Code Base, Notes

Even though I have been a QA Engineer for quite some time, I am rather new to automation development. Lately, I've been trying to figure out how to use the open-source tool, Appium, to automate the mobile test suites that I have been writing for my current position.

Luckily for me, the Selenium Conference 2017 has just posted videos of its lectures online, with many of them providing good background information about Appium.

Rethinking Appium’s Code Base
Moiz Virani – Software Engineer, Sauce Labs


Moiz Virani ( @moizjv ), a Software Engineer at Saucelabs and contributor on the Appium project talked a bit about how the Appium project was re-written and restructured. They took a monolithic project and converted it into smaller microservices.

More that iOS and Android, they now have drivers for Windows and UIDriver, helping you automate your TV apps. It still uses the JSON Wire protocol, still iis open source and always will be open source.

Originally it was written in Node.js with very hard to read logs, difficult to read developer documentation. They have rewritten the JavaScript, updating it to E6 and E7, the current version of JavaScript, limiting the scope of variables with let and const.

Prior to 1.5, they had a Client which then talked to a Main Appium Controller then branched off into either the IOS driver or Android driver. Then it went into iOS UIAutomation or Android UIAutomator. There would always be redundant code.

When it came to test organization, there were not many unit tests The test suites were hard to run, hard to set up, and didn’t have good told to talk about test coverage. If you wanted to run all the tests they had, it took a whole day.

They wanted in the re-write strong encapsulation, well defined interfaces, explicit dependencies. One selenium package, two appium packages, a IOS package, Android packages. Every repo to have a good README.

How to contribute to the project?

Appium has a contribution page. There is sprint planning session with a zoom channel. You can report bugs. Fix bugs. Be a contributor!

Happy Testing!

-T.J. Maher
Twitter | LinkedIn | GitHub

// Sr. QA Engineer, Software Engineer in Test, Software Tester since 1996.
// Contributing Writer for TechBeacon.
// "Looking to move away from manual QA? Follow Adventures in Automation on Facebook!"