How Appium Architecture Works

Updated 18 October 2023


With Appium as your guide, you’ll conquer the complexity of mobile app testing, delivering polished user experiences in the dynamic digital landscape.

You may also check our Flutter app development services.

Before diving, into the details of the Appium architecture let’s start by understanding the concepts associated with it.

Appium Client-Server Architecture:

The server operates on a client-server architecture.

The Appium client consists of automated code written in a language of your choice like Java, C#, Javascript, Python, Ruby, etc. Client libraries send requests using the W3C WebDriver Protocol to communicate with the Appium server.

The Appium server itself is an HTTP server developed using Node.js. It listens Appium client code for connection and command requests in JSON format.

Appium Sessions:

A session encloses all “testing” activities. When the client sends the initial request to the server, it establishes a session.
The client sends post requests to the server, and these are known as session requests. These requests contain data formatted as JSON Objects.

WebDriverAgent is an implementation of a WebDriver server specifically designed for the iOS platform.

It allows control of iOS devices by enabling actions such, as launching and terminating applications, tapping, scrolling views, and more.

We achieve this by linking the XCUITest framework and utilizing Apple’s API to execute commands on devices or simulators.
When Appium initially interacts with a device or simulator it verifies the existence of If the app is not found, it proceeds to first install

WebDriver Protocol:

The WebDriver protocol is central in Appium. Originally, it was developed to automate the browser. Selenium, on which Appium is based, uses this protocol.
It allows us to access some commands, which can mirror the user behavior. WebDriver can fulfill behaviors like clicking or swiping.
The WebDriver protocol receives data in a POST request. Here, in the POST request body, it receives the JSON format object containing data.

Wire Protocol for JSON:

Appium uses the mobile JSON Wire Protocol, a modified version of the JSON Wire Protocol, to streamline client-server communication.

The client software creates a JSON object and sends it to the server when the client wants to deliver data. The server then responds to the client.

Note: The W3C WebDriver Protocol, a standard that Appium has long supported, serves as the foundation for its API.

Selenium and Appium both made use of previous protocols, specifically “JSONWP” (JSON Wire Protocol) and “MJSONWP” (Mobile JSON Wire Protocol), before the W3C WebDriver Protocol became a web standard. For more information

Let’s now examine the Appium architecture in more detail.

Using Appium Architecture

The Appium server functions as an HTTP server, receiving JSON-formatted HTTP requests from client libraries and forwarding them to the respective platform.

The server recognizes these requests and starts a session of automation with the relevant end device. After establishing the session, the Appium server starts running test cases on the end device.

The Appium server handles requests differently depending on whether it is working with iOS or Android.

Appium Architecture for Android Device:

Android smartphones use the UI Automator framework.To interact with the UI components of the Application Under Test (AUT), Appium uses UI Automator APIs.

Appium Architecture for iOS Device:

iOS devices use the XCUITest framework. To interact with the UI components of the Application Under Test (AUT), Appium uses Apple’s XCUITest API.


Unquestionably, one of the best platforms for testing mobile applications is Appium. You now have a better understanding of the Appium architecture’s overview, its process, and how it works on both iOS and Android platforms.

The perfect tool before you debug your app!

Thanks for reading this blog. You can read more interesting blogs by Mobikul

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*

Be the first to comment.

Start a Project

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home