# Awesome Appium [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) [![Build Status](https://travis-ci.org/SrinivasanTarget/awesome-appium.svg?branch=master)](https://travis-ci.org/SrinivasanTarget/awesome-appium)

[<img src="https://avatars3.githubusercontent.com/u/3221291?v=3&s=200" align="right" width="100">](http://appium.io)

> A curated list of delightful [Appium](http://appium.io/) [resources](#contents).

Feel free to add links via PRs and file issues to start discussions.

Inspired by the [awesome](https://github.com/sindresorhus/awesome) list thing.

## Contents

- [Server](#server)
- [Clients](#clients)
- [Inspectors](#inspectors)
- [Tutorials](#tutorials)
- [Appium Pro](#become-an-appium-pro)
- [Blogs](#blogs)
- [Workshops](#workshops)
- [Cloud and Docker Solutions](#cloud-and-docker-solutions)
- [Git Books](#git-books)
- [Test Frameworks](#test-frameworks)
- [Community](#community)
- [Tips](#tips)

## Server
- [Appium](https://github.com/appium/appium/blob/master/docs/en/about-appium/intro.md) - Appium is an open source, cross-platform test automation tool for native, hybrid and mobile web and desktop apps, tested on simulators (iOS), emulators (Android), and real devices (iOS, Android, Windows, Mac).

## Clients
- [Ruby](https://github.com/appium/ruby_lib)
- [Python](https://github.com/appium/python-client)
- [Java](https://github.com/appium/java-client)
- [JavaScript](http://webdriver.io/)
- [Objective C](https://github.com/appium/selenium-objective-c)
- [PHP](https://github.com/appium/php-client)
- [C# (.NET)](https://github.com/appium/appium-dotnet-driver)
- [RobotFramework](https://github.com/jollychang/robotframework-appiumlibrary)

## Inspectors
- [Appium Desktop](https://github.com/appium/appium-desktop) - Appium Server and Inspector in Desktop GUIs for Mac, Windows, and Linux.
- [WebDriverAgent Inspector](https://github.com/facebook/WebDriverAgent/wiki/Starting-WebDriverAgent) - A WebDriver server for iOS that runs inside the Simulator.
- [Selendroid Inspector](http://selendroid.io/inspector.html) - The web app which is embedded inside your selendroid test server.
- [Appium iOS Inspector](https://github.com/mykola-mokhnach/Appium-iOS-Inspector) - The tool for iOS elements location based on the original source of Selendroid Inspector.
- [app-inspector](https://github.com/macacajs/app-inspector) - Macacajs App Inspector.

## Become an Appium Pro
- [Seeding the iOS simulator with test photos](https://appiumpro.com/editions/1)
- [Seeding an Android device with test photos](https://appiumpro.com/editions/2)
- [Running arbitrary ADB commands via Appium](https://appiumpro.com/editions/3)
- [Using Appium for Testing Mobile Web Apps](https://appiumpro.com/editions/4)
- [Performance Testing of Android Apps](https://appiumpro.com/editions/5)
- [Testing iOS App Upgrades](https://appiumpro.com/editions/6)
- [Speeding Up Tests With Deep Links](https://appiumpro.com/editions/7)
- [How to Find Elements in iOS (Not) By XPath](https://appiumpro.com/editions/8)
- [Testing Android App Upgrades](https://appiumpro.com/editions/9)
- [Anatomy of Logging in Appium](https://appiumpro.com/editions/10)
- [Simulating SMS Messages on Android](https://appiumpro.com/editions/11)
- [Capturing Performance Data for Native iOS Apps](https://appiumpro.com/editions/12)
- [Switching Between iOS Apps During a Test](https://appiumpro.com/editions/13)
- [How to Automate a Pop Rock Band](https://appiumpro.com/editions/14)
- [Testing iOS Push Notifications](https://appiumpro.com/editions/15)
- [Automating the Clipboard on iOS and Android](https://appiumpro.com/editions/16)
- [Automating Cross-Platform Hybrid Apps](https://appiumpro.com/editions/17)
- [Using Espresso With Appium](https://appiumpro.com/editions/18)
- [Making Your Appium Tests Fast and Reliable, Part 1: Test Flakiness](https://appiumpro.com/editions/19)
- [Making Your Appium Tests Fast and Reliable, Part 2: Finding Elements](https://appiumpro.com/editions/20)
- [Making Your Appium Tests Fast and Reliable, Part 3: Waiting for App States](https://appiumpro.com/editions/21)
- [Making Your Appium Tests Fast and Reliable, Part 4: Dealing With Unfindable Elements](https://appiumpro.com/editions/22)
- [Making Your Appium Tests Fast and Reliable, Part 5: Setting Up App State](https://appiumpro.com/editions/23)
- [Making Your Appium Tests Fast and Reliable, Part 6: Tuning Your Capabilities](https://appiumpro.com/editions/24)
- [Making Your Appium Tests Fast and Reliable, Part 7: Disabling Animations](https://appiumpro.com/editions/25)
- [Making Your Appium Tests Fast and Reliable, Part 8: Mocking External Services](https://appiumpro.com/editions/26)
- [Making Your Appium Tests Fast and Reliable, Part 9: When Things Go Wrong](https://appiumpro.com/editions/27)
- [Running Multiple Appium Tests in Parallel](https://appiumpro.com/editions/28)
- [Automating Complex Gestures with the W3C Actions API](https://appiumpro.com/editions/29)
- [iOS-Specific Touch Action Methods](https://appiumpro.com/editions/30)
- [Automating Custom Alert Buttons on iOS](https://appiumpro.com/editions/31)
- [Finding Elements By Image, Part 1](https://appiumpro.com/editions/32)
- [Finding Elements By Image, Part 2](https://appiumpro.com/editions/33)
- [Simulating Hardware Keys And Key Events On Android](https://appiumpro.com/editions/34)
- [Writing XPath Queries That Work](https://appiumpro.com/editions/35)
- [Using The 'nativeWebTap' Capability](https://appiumpro.com/editions/36)
- [Capturing Browser Errors and Logs in iOS Web/Hybrid Apps](https://appiumpro.com/editions/37)
- [Capturing Browser Errors and Logs in Android Web/Hybrid Apps](https://appiumpro.com/editions/38)
- [Early-Stage AI for Appium Test Automation](https://appiumpro.com/editions/39)
- [How To Test On Real iOS Devices With Appium, Part 1](https://appiumpro.com/editions/40)
- [How To Test Real iOS Devices With Appium, Part 2](https://appiumpro.com/editions/41)
- [Simulating Incoming Phone Calls On Android](https://appiumpro.com/editions/42)
- [How To Automatically Grant iOS App Permissions Using Appium](https://appiumpro.com/editions/43)
- [Working With Web Components (Shadow DOM)](https://appiumpro.com/editions/44)
- [How to Automate Siri Voice Commands Using Appium](https://appiumpro.com/editions/45)
- [Sending Arbitrary Keystrokes With The Actions API](https://appiumpro.com/editions/46)
- [Running Appium From Source (Or The Latest Beta)](https://appiumpro.com/editions/47)
- [How To Flash Elements On Screen While Debugging Appium Tests](https://appiumpro.com/editions/48)
- [How To Spread Some Holiday Cheer Using Appium](https://appiumpro.com/editions/49)
- [Special Capabilities for Speeding up Android Test Initialization](https://appiumpro.com/editions/50)
- [Calling Methods Inside Your App From Appium](https://appiumpro.com/editions/51)
- [Automating Mac Apps with Appium](https://appiumpro.com/editions/52)
- [Accessing Android Logcat Logs with Appium](https://appiumpro.com/editions/53)
- [Using Appium With Selenium Grid](https://appiumpro.com/editions/54)
- [Using Mobile Execution Commands to Continuously Stream Device Logs with Appium](https://appiumpro.com/editions/55)
- [What Appium Users Need to Know about Android Activities and Intents](https://appiumpro.com/editions/56)
- [How to Determine Element Locators For Mobile Web and Hybrid Apps](https://appiumpro.com/editions/57)
- [How to Test on Headless Emulators and Simulators with Appium](https://appiumpro.com/editions/58)
- [How to Automate Picker Wheel Controls](https://appiumpro.com/editions/59)
- [How to Pick the Right Locator Strategy](https://appiumpro.com/editions/60)
- [How to Accurately Select Webviews Using the fullContextList Capability](https://appiumpro.com/editions/61)
- [Capturing iOS Simulator Network Traffic with Appium](https://appiumpro.com/editions/62)
- [Capturing Android Emulator Network Traffic with Appium](https://appiumpro.com/editions/63)
- [Validating Android Toast Messages](https://appiumpro.com/editions/64)
- [Capturing Network Traffic in Java with Appium](https://appiumpro.com/editions/65)
- [Automating System Apps with Appium](https://appiumpro.com/editions/66)
- [Generating Touch Gestures to Zoom In and Out on Google Maps](https://appiumpro.com/editions/67)
- [Automating Physical Buttons on iOS Devices](https://appiumpro.com/editions/68)
- [Capturing Audio Output During Testing: Part 1](https://appiumpro.com/editions/69)
- [Capturing Audio Output During Testing: Part 2](https://appiumpro.com/editions/70)
- [Starting an Appium Server Programmatically Using AppiumServiceBuilder](https://appiumpro.com/editions/71)
- [Simulating Slow Internet Connections on Android Emulators with Appium](https://appiumpro.com/editions/72)
- [Working with Multile Webviews in Android Hybrid Apps](https://appiumpro.com/editions/73)
- [Automating Custom IoT Devices With Appium, Part 1](https://appiumpro.com/editions/74)
- [Automating Custom IoT Devices With Appium, Part 2](https://appiumpro.com/editions/75)
- [Testing React Native Apps with Appium](https://appiumpro.com/editions/76)
- [Optimizing WebDriverAgent Startup Performance](https://appiumpro.com/editions/77)
- [Attaching Appium Clients to Existing Sessions](https://appiumpro.com/editions/78)
- [Converting Java Tests to Kotlin](https://appiumpro.com/editions/79)
- [Testing iOS Face ID with Appium](https://appiumpro.com/editions/80)
- [Testing Windows Desktop Apps With Appium](https://appiumpro.com/editions/81)
- [Streaming Video from iOS Devices](https://appiumpro.com/editions/82)
- [Speeding Up Android Screenshots With MJPEG Servers](https://appiumpro.com/editions/83)
- [Reliably Opening Deep Links Across Platforms and Devices](https://appiumpro.com/editions/84)
- [Batching Appium Commands Using Execute Driver Script to Speed Up Tests](https://appiumpro.com/editions/85)
- [Connecting Directly to Appium Hosts in Distributed Environments](https://appiumpro.com/editions/86)
- [Working With Android 10](https://appiumpro.com/editions/87)
- [Saving Test Data To Make Debugging Easier Java](https://appiumpro.com/editions/88)
- [Understanding Appium Drivers (And How To Choose Which One To Use)](https://appiumpro.com/editions/89)
- [Optimizing Image Element Thresholds](https://appiumpro.com/editions/90)
- [Getting Started With Appium For Android On Windows](https://appiumpro.com/editions/91)
- [Using AI-based Object Detection For Finding Elements](https://appiumpro.com/editions/92)
- [Managing Chromedriver for Android Chrome and Webview Testing](https://appiumpro.com/editions/93)
- [Using the Appium Events API](https://appiumpro.com/editions/94)
- [The 'Android Data Matcher' Locator Strategy](https://appiumpro.com/editions/95)
- [Working With Cookies](https://appiumpro.com/editions/96)
- [Capturing App Launch Metrics On Android](https://appiumpro.com/editions/97)
- [Visual Testing With Appium, Part 1](https://appiumpro.com/editions/98)
- [Visual Testing With Appium, Part 2](https://appiumpro.com/editions/99)
- [Visual Testing With Appium, Part 3](https://appiumpro.com/editions/100)
- [AI for Appium--and Selenium!](https://appiumpro.com/editions/101)
- [Mobile App Performance Testing](https://appiumpro.com/editions/102)
- [Free Tools For Mobile App Performance Testing With Appium](https://appiumpro.com/editions/103)
- [Simulating Different Network Conditions For Virtual Devices](https://appiumpro.com/editions/104)
- [Paid Tools And Services For Mobile App Performance Testing](https://appiumpro.com/editions/105)

## Tutorials
- [TOOLSQA](http://toolsqa.com/mobile-automation/appium/appium-tutorial/) - Appium tutorial for beginners (Android & iOS).
- [GURU99](http://www.guru99.com/introduction-to-appium.html) - Appium tutorial for beginners.
- [QTPSELENIUM](http://qtpselenium.com/home/course/training/mobile-automation-appium-tutorial) - Appium tutorials.
- [Testing Diaries](http://www.testingdiaries.com/appium-tutorial/) - Appium Tutorial for Complete Beginners.
- [Appium Bootcamp](https://saucelabs.com/resources/articles/appium-bootcamp-chapter-1) - Appium Bootcamp by Sauce.
- [Appium Mobile Grid Setup](http://www.slideshare.net/justinison75/mobile-selenium-grid-setup) - The Mobile Grid – Getting Started for Android & iOS.
- [Selenium Camp 2016](http://www.slideshare.net/justinison75/selenium-camp-2016) - Selenium Camp 2016.

## Blogs
 - [All about Appium Desired Capabilities](https://caps.cloudgrey.io/) - All about Appium's desired capabilities.
 - [Appium Architecture & Appium Desktop](https://www.zaizi.com/blog/appium-mobile-apps-automation-tool) - Appium Architecture, settings, etc (Updated)
 - [Appium Architecture](http://www.3pillarglobal.com/insights/appium-a-cross-browser-mobile-automation-tool) - Architecture of Appium.
 - [All about Appium](https://en.wordpress.com/tag/appium/) - All about Appium in Wordpress.
 - [Appium with Image Recognition](https://medium.com/@SimonKaz/appium-with-image-recognition-17a92abaa23d#.x19ffxwbk) - Appium with Image Recognition - Simon Kaz.
 - [Automate Android Actions using Appium](http://testingalert.com/automate-android-actions-using-appium/) - Automate Android Actions using Appium - kkashyap1707.
 - [Network Connection in Appium](https://medium.com/@eliasnogueira/how-to-deal-with-network-connection-in-appium-4-0-0-2134021fac25#.z5dfdv2jg) - How to deal with Network Connection from Appium 4.0.0 - Elias Nogueira.
 - [How to change language in Appium](https://medium.com/@eliasnogueira/appium-tips-changing-the-app-language-f0a1762dd927#.68mvqisri) - Appium Tips — Changing the app Language - Elias Nogueira.
 - [Automated UI testing of a UWP app using Appium](https://medium.com/@yostane/automated-ui-testing-of-a-uwp-app-using-appium-dc10d8df6631#.3efp60w1j) - Windows Application driver makes UWP Apps compatible using Appium - Yassine benabbas.
 - [Context Switching in Appium](https://medium.com/@kevinmarkvi/switching-to-a-dynamically-named-context-handle-with-appium-and-java-c78d2b972eb6#.2ylda6ul6) Switching to a Dynamically Named Context Handle with Appium and Java - Kevin Berg.
 - [A Robot Should Be Running Your Appium Tests](https://medium.com/devs-foodit/iphone-automation-with-a-one-fingered-robot-a2936c840285#.l37adndb3) - How to run Appium Tests using Robots. - Dan Cuellar.
 - [Appium Tests on Buddybuild](https://medium.com/@stipe.kolovrat/appium-cucumber-tests-up-running-on-buddybuild-8955a88ab589#.wsyazko3g) - Automates building, deploying and gathering feedback for mobile apps - Stipe Kolovrat.
 - [Android setup Linux](https://www.smashingmagazine.com/2016/04/from-zero-to-appium-guide-configuring-appium-android/) - From Zero To Appium: A How-To Guide For Configuring Appium With Android
 - [Useful Appium Series] (http://bitbar.com/tag/appium/) - Appium Tip Series
 - [Inspect iOS app's with Appium 1.6] (https://medium.com/@chenchaoyi/the-options-of-inspecting-ios-10-app-with-appium-1-6-534ba166b958#.ezq1q0iuo) - The options of inspecting iOS 10 app with Appium 1.6
 - [GraphWalker](http://graphwalker.github.io/appium-example/) - GraphWalker is a open source Model-based testing tool for test automation. It's designed to make it easy to design your tests using graphs
 - [Appium + Mobile Game Testing](http://bitbar.com/mobile-game-testing-part-2-ui-and-functionality-image-recognition/) - MOBILE GAME TESTING – PART #2: UI AND FUNCTIONALITY + IMAGE RECOGNITION
 - [WinAppDriver](http://www.hanselman.com/blog/WinAppDriverTestAnyAppWithAppiumsSeleniumlikeTestsOnWindows.aspx) - WinAppDriver - Test any app with Appium's Selenium-like tests on Windows
 - [IMAGE RECOGNITION WITH APPIUM](http://bitbar.com/appium-tip-27-using-appium-for-mobile-game-testing/) - USING APPIUM FOR MOBILE GAME TESTING
 - [Uncover invisible changes in automated tests](https://sourcediving.com/how-to-uncover-invisible-changes-in-automated-tests-b6a5dbff564e) - By KazuCocoa
  - [Adding AI to Appium](https://medium.com/testdotai/adding-ai-to-appium-f8db38ea4fac) - By test.ai
 

## Workshops
- [Appium Workshop Selnium Conf 2016](https://github.com/isonic1/appium-workshop) - Repo for Appium Workshop at the 2016 Selenium Conference - Justin Ison.

## Cloud and Docker Solutions
- [Appium Tests in AWS Device Farm](https://github.com/awslabs/aws-device-farm-appium-tests-for-sample-app) - Sample Appium tests runs on AWS Device Farm.
- [Appium Tests in OpenSTF Device Farm](https://github.com/openstf/stf-appium-example) - Sample Appium tests runs on STF Device Farm.
- [Official Appium Docker Images](https://github.com/appium/appium-docker-android) - DockerFile for Appium Android Real Devices.
- [Appium Docker Images](https://github.com/butomo1989/docker-android) - DockerFile for Appium Android.
- [Appium Docker File](https://github.com/aluedeke/appium-android) - DockerFile for Appium Android.
- [Appium Docker File](https://github.com/softsam/docker-appium) - DockerFile for Appium Android.
- [TestingBot](https://testingbot.com) - Cloud based Device Farm, run Appium tests on physical Android and iOS devices.

## Git Books
- [Appium Essentials](https://www.packtpub.com/application-development/appium-essentials/?utm_source=POD&utm_medium=referral&utm_campaign=1784392480) - Explore mobile automation with Appium and discover new ways to test native, web, and hybrid applications - Manoj Hans.
- [Appium for Android](https://www.gitbook.com/book/nishantverma/appium-for-android) - A quick reference book on how to use Appium for automating Android Application using Java - Nishant Verma.

## Test Frameworks 
- [Appium Cucumber Test](https://github.com/priyankshah217/AppiumCucumberTest) - Sample Appium Cucumber Project.
- [Appium-Native-Crawler](https://github.com/isonic1/Appium-Native-Crawler) - Appium Native Crawler CLI - Features include: Screenshots, Performance, Accessibility Detection, Google Translate, Applitools, Monkey Tester.
- [coteafs-appium](https://github.com/WasiqB/coteafs-appium) - A tester friendly Mobile Automation Framework built on top of Appium which supports testing web and native apps for Android, iOS and Windows real or emulator Mobiles and Tablets.
- [Optimus](https://github.com/testvagrant/optimusTemplate) - Cucumber based Mobile Automation Framework, which supports test parallelization.
- [PageObject Pattern Framework](https://github.com/saikrishna321/PageObjectPatternAppium) - Sample Page Object Pattern Framework to use directly.
- [Parallel Framework Java-Client](https://github.com/saikrishna321/AppiumTestDistribution) - Run appium tests in parallel across iOS and Android devices.

## Community
- [Discuss](https://discuss.appium.io)
- [Stack Overflow](http://stackoverflow.com/questions/tagged/appium)
- [`@appiumdevs` on Twitter](https://twitter.com/AppiumDevs)
- [`#appium` on Slack](http://appium.slack.com)

## Tips

Contribute some ;)


## Contribute

Contributions welcome! Read the [contribution guidelines](contributing.md) first.

## License

[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)

To the extent possible under law, [Srinivasan Sekar](https://github.com/SrinivasanTarget) has waived all copyright and related or neighboring rights to this work.
