About the course
Lead the mobile test automation effort from the
design phase
No prior knowledge of Appium or want
to upskill
Design test automation frameworks
Serious learner
Appium
Introduction
Introduction
Architecture
Different Types of Mobile Apps
Setup Possibilities
JAVA Essentials
Basics – Class, Method, Variable, Constructor, Strings, Constants,
Enums, etc.
Control Structures – Switch, For, If .. Else,
For
OOPEach
Concepts – Inheritance, Abstraction, Interface,
Polymorphism, etc.
Access Modifiers – Private,
Public, etc.
Exception
Handling
File Operations
Appium Setup on
Windows
Emulator
Real
Device
Create Android Virtual
Device
Enable USB Debugging on Real
Device
Create new Driver Session
Appium Setup on MAC -
iOS
Simulator
Understand the Role of WebDriverAgent
Server
Understand Apple’s Code Signing
Process
Real Device Setup using Free
Account
Real Device Setup using Paid
Account
Join the Apple Developer Program
Build and Distribute the Application IPA for Real
Device
Appium Setup on MAC -
Android
Emulator
Real
Device
Create Android Virtual
Device
Enable USB Debugging on Real
Device
Create new Driver Session
First Appium
Project
Create a JAVA Project using
Maven
Why use Build Automation
Tool
What are Desired Capabilities
Create New Driver Session from JAVA
Program
How to retrieve Android Application appPackage and
appActivity
How to retrieve iOS Application bundleId
How to Launch Android Emulator Automatically
How to set Time Out for iOS Simulator Launch
Native Apps Automation -
Basics
Appium Inspector
Walkthrough
Attaching Appium Inspector to an Existing
Session
Understanding XML and Element Attributes
Locator Strategies and Best
Practices
Finding Elements using Different Locators
Finding Elements using UiAutomator2/iOS
Predicates
Different Ways of Defining Native Elements
How to Perform Basic Element Actions
How to Fetch Element Attributes
Synchronization Using Waits and Best Practices
Native Apps Automation -
Gestures
Tap
Press and Long Press
Swipe
Native Apps Automation – Device
Commands
Interacting with App – installApp, activateApp,
CloseApp, etc.
Interacting with Keys
Lock/Unlock Android Device
Hybrid and Mobile Web Apps
Automation
Understand WebView
How to Inspect WebView Elements Natively
Using Safari Inspector to Inspect WebView Elements
Using Chrome Debugger to Inspect WebView
Elements
How to Switch Driver Context
Automate WebView Elements
For Android, using Compatible Chrome Driver
Version
Mobile Browser: Create new Driver Session
Mobile Browser: Automate tesla.com Website
For Android, Auto discovery of Chrome Driver
TDD Framework
Design
Framework plan: Tools/
Technologies
Page Object Model design
Centralized Wait and Driver commands • Eclipse
Explicit Waits • Appium
Modular, independent test cases • Maven
Exception handling • Java
Parameterization • TestNG
Abstraction layer for test data • Log4J2
Abstraction layer for static text • Extent
Multiple platform support – iOS and Reporting
Android • JSON
Logging framework • XML
Reporting framework • GitHub
Capture Screenshots/Videos • Jenkins
Different Scrolling Mechanisms
Parallel Execution on Android and iOS
Programmatically start the Appium
Server
Integrating with Git
Integrating with Jenkins
BaseTest.java
com.qa.base • Initialize Driver
BaseTest.ja • Initialize Config properties [Global variables]
va
BasePage.ja • Exit Driver
com.qa.page va
s BasePage.java
LoginPage.ja
• Explicit Wait
va
ProductsPage.ja • Page factory initialization
va
ProductsDetailsPage.j • Driver commands – click(), sendkeys(), etc.
com.qa.tests ava
com.qa.pages
LoginTests.jav
Page Objects – UI Element definations and Methods
a
ProductTests.ja
va com.qa.tests: Test classes
com.qa.utils
TestUtils.java com.qa.utils: Common utilities
src/main/
resources config.properties: Global parameters like Appium
config.properti server URL, AppPackage, BundleID, etc.
es
log4j.propertie
src/test/ s log4j.properties: Log4J specific properties
resources
app/.ap App/: Application builds [APKs, IPAs]
k
data/
loginUsers.json
strings/ Data/: Test data files [json]
strings.xml
Strings/: Static texts [xml]
BDD Framework
Design
Framework plan: Tools/
Technologies
Page Object Model design
Behavioral driven • Appium
Supports CI/CD integration • Cucumber
Supports iOS and Android • Gherkin
Supports Parallel execution using JUnit • Maven
and TestNG • Java
Capture Screenshot • JUnit
Video recording • TestNG
Logging framework • Log4J2
Start Appium server programmatically • JSON
Supports Cucumber-HTML-Reporter • XML
plugin • IntelliJ
Supports command line execution using
Maven
Desired Capabilities
Driver Initialization
Initialize Global Parameters
Load Config Properties
Start and Stop Appium Server
Utilities
Start and Stop Video Recording
Config Properties
Log4j2 Configuration
Page Objects
JUnit/TestNG Runner Class
Cucumber Hooks
Step Definitions
iOS App (Built for Simulators)
Android App
Cucumber Feature Files
CI/CD
Implementation
What is CI/CD and Why it should be Implemented
Configure Maven Surefire Plugin
Create GitHub Repository for the Automation Framework
Fork and Clone SauceLab’s Demo App GitHub
Repository
Setup React Native Environment and Build Apps
manually
Install Jenkins
Create Build and Test Jobs
Trigger Build using SCM Polling
Trigger Build using WebHooks
Trigger Build using Build Periodically