← Back to list

Astur: Mobile Automation Can’t Get Any Easier

Have you been involved in writing a mobile automation test? No doubt mobile automation testing is a super interesting thing to do, but I…

Amr Salem · 2026-07-06 19:08 · 0 claps · 7.2 min read
#mobile-app-development #quality-assurance #playwright-test #appium #mobile-automation-testing
Open on Medium ↗

Astur: Mobile Automation Can’t Get Any Easier

Have you been involved in writing a mobile automation test? No doubt mobile automation testing is a super interesting thing to do, but I think no one will disagree with how much it can also be a struggle, sometimes super complicated, and often flaky.Unlike web automation testing, where you are dealing with a single tool and a browser with instant and minimal setup effort, and everything is ready so you can mainly focus on writing the test itself, mobile automation is always a different story.

With mobile automation, we are not just setting up the environment and prerequisites, but we are also dealing with physical hardware, different platforms, and different types of app architecture. All of these factors add more levels of complexity to the framework you are building and subsequently lead to less stable tests.

Idea Was Born

In 2023 before the AI revamp i have been imagining how nice it will be if we manage to simplify the mobile automation test to be easy like web automation test very minimal setup less effort fast execution more reliable results, have started POC of using playwright to test against physical device and utilize the extendability and the powerfullness of playwright and fixture to have proper handling for the mobile device using shell commands and built my own binding that wrapping the adb shell commands in backgroun quite immature solution (find it here).

I had a rough idea of how it could be better with a more sophisticated architecture, but in order to do so, quite some effort needed to be invested.

Principle

My main goal and principle was to provide a simple, reliable, and efficient solution that would decrease dependencies on external drivers such as Appium, and bypass them to reduce the multilayer communication, while owning the end-to-end communication between the framework and the target device.

Astur is live.

The idea came back again earlier in 2026 to continue what I had started, utilizing AI to do the hard work while I stayed engaged in the loop, guiding the required architecture.

[embed]

[embed]Astur - One Script to Test Any Mobile App (No Appium, No WebDriver) One script runs across Android, iOS, Flutter and React Native - native or hybrid, it doesn't matter. No Appium. No…amr-salem.com

The name Astur comes after the scientist Mariam al-Asturlabi, an astronomer and engineer from Aleppo, Syria. She was well known for designing complex astrolabe designs with compact size and high accuracy. These designs were used for different purposes such as navigation, timekeeping, and locating the stars.

Astur follows the same idea: a standalone tool that provides high reliability, puts all the puzzle pieces together, and gives you faster execution with easier setup.

What is Astur?

Astur is an open-source, modern mobile automation framework that utilizes the advantages and powerfulness of Playwright, making the learning curve quite minimal. It is considered the evolution of the POC that I had been working on.

The idea is to make the transition from web automation testing to mobile automation testing easy. This means if you know how to write and use Playwright, then you already know how to use Astur, as they share almost everything, starting from setup, configs, test structure, bindings, and assertions, which makes the tool quite easy to start with.

How Astur Wroks?

In a nutshell: it gives you a Playwright-style API for Android and iOS apps, but instead of using Appium/WebDriver, it talks directly to native platform automation engines.

await device.getByLabel('Email').fill('qa@example.com');
await device.getByRole('button', { name: 'Login' }).tap();
await expect(device.getByText('Welcome')).toBeVisible();

Astur has three main layers. Users write tests through the Test API using @astur-mobile/test, with a Playwright-like experience for mobile testing. The Core Runtime manages the main execution logic, such as locators, auto-waiting, retries, assertions, gestures, and sessions. The Native Platform Agents then run the actions directly on Android and iOS using UIAutomator and XCUITest, allowing tests to interact with real apps on devices, emulators, or simulators.

So after we have provided brief info about the common challenges in mobile automation and the idea behind Astur, now let’s speak about the actual setup for Astur to get it running.

Get started

Setting up Astur is basically the same as setting up Playwright. All what you need to do is run: npx astur-mobile init

Or you can follow the getting started guide: https://astur-mobile.github.io/Astur/getting-started/

Astur comes with an intuitive CLI that will make your life easier by identifying any missing setup or problems before you hop into the test execution, as shown in the doctor command.

Configuration

After setting up the Astur test library using: npm i @astur-mobile/test

All what you need to do is set your configuration, the same like in Playwright, except that there are new properties that have been added to support the mobile device approach.

For example, the device object, through which you can define the kind of device, whether it is an emulator or real device, the udid in case multiple devices are connected, autoBoot, headless, bootTimeout, and more.

You can review the entire configs here: https://astur-mobile.github.io/Astur/configuration/

Astur Inspector/Codegen

Of course, you are wondering how I will be able to write tests without defining the element locator strategy. Because I have been carefully building this open-source tool, I have been putting in all my previous years of experience, common issues, and problems to provide a tool that is built to overcome such hurdles.

Therefore, we have mimicked the exact same behavior of codegen in Playwright, but this time for mobile, whether it is Android or iOS, simulator or emulator, React Native or Flutter. All can be handled with one simple command: npx astur-mobile codegen

Check the demo below:

[embed]

Astur Inspector is not just for inspecting the element, but also for providing you with a ranking approach for the best element to use, the ability to interact live with the device, and a cool feature to perform step recording and have your test ready with the relevant assertions, saving a lot of time and effort needed when using other tools.

Test Writing

Test case writing is pretty straightforward, the same as if you are using Playwright. You can utilize the entire Playwright capabilities, such as fixtures, test steps, test.skip, fail, reports, and so on.

[embed]

You can build your test script using the Page Object Model or whatever approach you prefer; it does not matter.

Test Execution

The most interesting part is that Astur is a very efficient tool, especially when it comes to test execution time. Due to the unique architecture of Astur, the way communication is being handled, and the elimination of the middle-layer proxy of the Appium driver, the execution time has significantly dropped and test reliability has increased.

Astur supports native execution against Android and iOS, whether it is a real device or not. Of course, you will still need a provisioned profile for iOS. Astur also supports parallel tests against all platforms and device types, or a mix between both.

Basically, from one single test script, you can test against either iOS or Android with no problem and with zero flakiness.

Bindings

Astur gives you rich mobile bindings with a simple Playwright-style API: native locators, taps, fills, gestures, app lifecycle, screenshots, and built-in assertions through expect. You can drive native Android/iOS screens directly, then switch into WebView content with webContext() when the app embeds web UI. That means one test can move naturally between native context and web context without changing tools or adding an Appium/WebDriver layer.

Astur Demo App & Boilerplate

In order to make it easier to grasp and experience the powerfulness of Astur with zero effort, we have built an Astur demo app to be used for demonstrating Astur capabilities and practicing on it.

The app has been built for both platforms, Android and iOS, and with both frameworks, React Native and Flutter.

The boilerplate provides a working example that is ready to play with, including all tests against the app, so you can review and learn how the tests are being built and how they can be executed against the app within the same framework.

Summary

Astur is a powerful tool with great potential, built on top of the challenges and limitations I have seen in other mobile automation tools. The goal is to provide a reliable, simple, and efficient experience for the QA community, especially for those who struggle with mobile automation and want a more stable solution with a Playwright flavor.

Astur is not only about running mobile tests faster. It is about making the whole mobile automation experience easier, starting from setup and configuration, to writing tests, inspecting elements, recording steps, executing against Android and iOS, and running tests in parallel across different device types and frameworks.

The idea behind Astur is to reduce unnecessary complexity, remove dependency on heavy middle layers, and give testers a tool that feels familiar, practical, and easy to start with. If you already know Playwright, Astur should feel natural for you.

We are looking forward to support from the QA community through feedback, suggestions, ideas, and real usage. And of course, if you find Astur useful and would like us to continue supporting and improving it, we would be glad if you stopped by our repo and gave us a star.

References

https://astur-mobile.github.io/Astur/ https://www.npmjs.com/package/@astur-mobile/test Github repo: https://github.com/Astur-mobile Boilerplate repo: https://github.com/Astur-mobile/astur-boilerplate For support: https://ko-fi.com/asturmobile

Thank you for taking the time to read my blog — I hope it provided some insight and value into your project. Stay tuned for the new upcoming interesting blogs…


메타데이터
post_id
61b3d648cf3d
slug
astur-mobile-automation-cant-get-any-easier-61b3d648cf3d
url
https://medium.com/@Amr.sa/astur-mobile-automation-cant-get-any-easier-61b3d648cf3d
canonical_url
https://medium.com/@Amr.sa/astur-mobile-automation-cant-get-any-easier-61b3d648cf3d
author_url
https://medium.com/@Amr.sa
status
ok
fetched_at
2026-07-08 19:15:55