# Awesome Appium

> A curated list of delightful Appium resources.

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

Inspired by the awesome list thing.

## Contents

- Server
- Clients
- Inspectors
- Tutorials
- Appium Pro
- Blogs
- Workshops
- Cloud and Docker Solutions
- Git Books
- Test Frameworks
- Community
- Tips

## Server

- Appium - 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
- Python
- Java
- JavaScript
- Objective C
- PHP
- C# (.NET)
- RobotFramework

## Inspectors

- Appium Desktop - Appium Server and Inspector in Desktop GUIs for Mac, Windows, and Linux.
- WebDriverAgent Inspector - A WebDriver server for iOS that runs inside the Simulator.
- Selendroid Inspector - The web app which is embedded inside your selendroid test server.
- Appium iOS Inspector - The tool for iOS elements location based on the original source of Selendroid Inspector.
- app-inspector - Macacajs App Inspector.

## Become an Appium Pro

- Seeding the iOS simulator with test photos
- Seeding an Android device with test photos
- Running arbitrary ADB commands via Appium
- Using Appium for Testing Mobile Web Apps
- Performance Testing of Android Apps
- Testing iOS App Upgrades
- Speeding Up Tests With Deep Links
- How to Find Elements in iOS (Not) By XPath
- Testing Android App Upgrades
- Anatomy of Logging in Appium
- Simulating SMS Messages on Android
- Capturing Performance Data for Native iOS Apps
- Switching Between iOS Apps During a Test
- How to Automate a Pop Rock Band
- Testing iOS Push Notifications
- Automating the Clipboard on iOS and Android
- Automating Cross-Platform Hybrid Apps
- Using Espresso With Appium
- Making Your Appium Tests Fast and Reliable, Part 1: Test Flakiness
- Making Your Appium Tests Fast and Reliable, Part 2: Finding Elements
- Making Your Appium Tests Fast and Reliable, Part 3: Waiting for App States
- Making Your Appium Tests Fast and Reliable, Part 4: Dealing With Unfindable Elements
- Making Your Appium Tests Fast and Reliable, Part 5: Setting Up App State
- Making Your Appium Tests Fast and Reliable, Part 6: Tuning Your Capabilities
- Making Your Appium Tests Fast and Reliable, Part 7: Disabling Animations
- Making Your Appium Tests Fast and Reliable, Part 8: Mocking External Services
- Making Your Appium Tests Fast and Reliable, Part 9: When Things Go Wrong
- Running Multiple Appium Tests in Parallel
- Automating Complex Gestures with the W3C Actions API
- iOS-Specific Touch Action Methods
- Automating Custom Alert Buttons on iOS
- Finding Elements By Image, Part 1
- Finding Elements By Image, Part 2
- Simulating Hardware Keys And Key Events On Android
- Writing XPath Queries That Work
- Using The ‘nativeWebTap’ Capability
- Capturing Browser Errors and Logs in iOS Web/Hybrid Apps
- Capturing Browser Errors and Logs in Android Web/Hybrid Apps
- Early-Stage AI for Appium Test Automation
- How To Test On Real iOS Devices With Appium, Part 1
- How To Test Real iOS Devices With Appium, Part 2
- Simulating Incoming Phone Calls On Android
- How To Automatically Grant iOS App Permissions Using Appium
- Working With Web Components (Shadow DOM)
- How to Automate Siri Voice Commands Using Appium
- Sending Arbitrary Keystrokes With The Actions API
- Running Appium From Source (Or The Latest Beta)
- How To Flash Elements On Screen While Debugging Appium Tests
- How To Spread Some Holiday Cheer Using Appium
- Special Capabilities for Speeding up Android Test Initialization
- Calling Methods Inside Your App From Appium
- Automating Mac Apps with Appium
- Accessing Android Logcat Logs with Appium
- Using Appium With Selenium Grid
- Using Mobile Execution Commands to Continuously Stream Device Logs with Appium
- What Appium Users Need to Know about Android Activities and Intents
- How to Determine Element Locators For Mobile Web and Hybrid Apps
- How to Test on Headless Emulators and Simulators with Appium
- How to Automate Picker Wheel Controls
- How to Pick the Right Locator Strategy
- How to Accurately Select Webviews Using the fullContextList Capability
- Capturing iOS Simulator Network Traffic with Appium
- Capturing Android Emulator Network Traffic with Appium
- Validating Android Toast Messages
- Capturing Network Traffic in Java with Appium
- Automating System Apps with Appium
- Generating Touch Gestures to Zoom In and Out on Google Maps
- Automating Physical Buttons on iOS Devices
- Capturing Audio Output During Testing: Part 1
- Capturing Audio Output During Testing: Part 2
- Starting an Appium Server Programmatically Using AppiumServiceBuilder
- Simulating Slow Internet Connections on Android Emulators with Appium
- Working with Multile Webviews in Android Hybrid Apps
- Automating Custom IoT Devices With Appium, Part 1
- Automating Custom IoT Devices With Appium, Part 2
- Testing React Native Apps with Appium
- Optimizing WebDriverAgent Startup Performance
- Attaching Appium Clients to Existing Sessions
- Converting Java Tests to Kotlin
- Testing iOS Face ID with Appium
- Testing Windows Desktop Apps With Appium
- Streaming Video from iOS Devices
- Speeding Up Android Screenshots With MJPEG Servers
- Reliably Opening Deep Links Across Platforms and Devices
- Batching Appium Commands Using Execute Driver Script to Speed Up Tests
- Connecting Directly to Appium Hosts in Distributed Environments
- Working With Android 10
- Saving Test Data To Make Debugging Easier Java
- Understanding Appium Drivers (And How To Choose Which One To Use)
- Optimizing Image Element Thresholds
- Getting Started With Appium For Android On Windows
- Using AI-based Object Detection For Finding Elements
- Managing Chromedriver for Android Chrome and Webview Testing
- Using the Appium Events API
- The ‘Android Data Matcher’ Locator Strategy
- Working With Cookies
- Capturing App Launch Metrics On Android
- Visual Testing With Appium, Part 1
- Visual Testing With Appium, Part 2
- Visual Testing With Appium, Part 3
- AI for Appium–and Selenium!
- Mobile App Performance Testing
- Free Tools For Mobile App Performance Testing With Appium
- Simulating Different Network Conditions For Virtual Devices
- Paid Tools And Services For Mobile App Performance Testing

## Tutorials

- TOOLSQA - Appium tutorial for beginners (Android & iOS).
- GURU99 - Appium tutorial for beginners.
- QTPSELENIUM - Appium tutorials.
- Testing Diaries - Appium Tutorial for Complete Beginners.
- Appium Bootcamp - Appium Bootcamp by Sauce.
- Appium Mobile Grid Setup - The Mobile Grid – Getting Started for Android & iOS.
- Selenium Camp 2016 - Selenium Camp 2016.

## Blogs

- All about Appium Desired Capabilities - All about Appium’s desired capabilities.
- Appium Architecture & Appium Desktop - Appium Architecture, settings, etc (Updated)
- Appium Architecture - Architecture of Appium.
- All about Appium - All about Appium in Wordpress.
- Appium with Image Recognition - Appium with Image Recognition - Simon Kaz.
- Automate Android Actions using Appium - Automate Android Actions using Appium - kkashyap1707.
- Network Connection in Appium - How to deal with Network Connection from Appium 4.0.0 - Elias Nogueira.
- How to change language in Appium - Appium Tips — Changing the app Language - Elias Nogueira.
- Automated UI testing of a UWP app using Appium - Windows Application driver makes UWP Apps compatible using Appium - Yassine benabbas.
- Context Switching in Appium Switching to a Dynamically Named Context Handle with Appium and Java - Kevin Berg.
- A Robot Should Be Running Your Appium Tests - How to run Appium Tests using Robots. - Dan Cuellar.
- Appium Tests on Buddybuild - Automates building, deploying and gathering feedback for mobile apps - Stipe Kolovrat.
- Android setup Linux - 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 - 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 - MOBILE GAME TESTING – PART #2: UI AND FUNCTIONALITY + IMAGE RECOGNITION
- WinAppDriver - WinAppDriver - Test any app with Appium’s Selenium-like tests on Windows
- IMAGE RECOGNITION WITH APPIUM - USING APPIUM FOR MOBILE GAME TESTING
- Uncover invisible changes in automated tests - By KazuCocoa
- Adding AI to Appium - By test.ai

## Workshops

- Appium Workshop Selnium Conf 2016 - Repo for Appium Workshop at the 2016 Selenium Conference - Justin Ison.

## Cloud and Docker Solutions

- Appium Tests in AWS Device Farm - Sample Appium tests runs on AWS Device Farm.
- Appium Tests in OpenSTF Device Farm - Sample Appium tests runs on STF Device Farm.
- Official Appium Docker Images - DockerFile for Appium Android Real Devices.
- Appium Docker Images - DockerFile for Appium Android.
- Appium Docker File - DockerFile for Appium Android.
- Appium Docker File - DockerFile for Appium Android.
- TestingBot - Cloud based Device Farm, run Appium tests on physical Android and iOS devices.

## Git Books

- Appium Essentials - Explore mobile automation with Appium and discover new ways to test native, web, and hybrid applications - Manoj Hans.
- 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 - Sample Appium Cucumber Project.
- Appium-Native-Crawler - Appium Native Crawler CLI - Features include: Screenshots, Performance, Accessibility Detection, Google Translate, Applitools, Monkey Tester.
- 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 - Cucumber based Mobile Automation Framework, which supports test parallelization.
- PageObject Pattern Framework - Sample Page Object Pattern Framework to use directly.
- Parallel Framework Java-Client - Run appium tests in parallel across iOS and Android devices.

## Community

- Discuss
- Stack Overflow
- `@appiumdevs` on Twitter
- `#appium` on Slack

## Tips

Contribute some ;)

## Contribute

Contributions welcome! Read the contribution guidelines first.

## License

To the extent possible under law, Srinivasan Sekar has waived all copyright and related or neighboring rights to this work.