Playwright-style authoring
Use fixtures, locators, assertions, retries, and reports that already feel completely natural to Playwright users.
Astur bypasses the WebDriver proxy layer using high-speed native agents on Android and iOS. Inspect layout trees in real-time, record gestures instantly, and author tests with clean Playwright ergonomics.
Astur drives the real app on Android and iOS — built with native SDKs, Flutter, or React Native — through fast native agents, the Dart VM service for deep Flutter widget-tree inspection on Android, and DOM-level control of in-app WebViews from the same test API.
Astur keeps the authoring surface tight: stream the device, inspect the semantic tree, record the flow, and export reusable @astur-mobile/test code without adding an Appium or WebDriver layer.
01 INSTALL$npminstall-D@astur-mobile/testastur-mobile02 INSPECT$npxastur-mobileinspector–android–deviceemulator-5554// semantic tree mirrored, gestures visible, locators ranked03 AUTHOR$npxastur-mobilecodegen–android–deviceemulator-5554// export Playwright-style flows you can keep and refine04 SHIP$npmtestUse fixtures, locators, assertions, retries, and reports that already feel completely natural to Playwright users.
Android runs through UIAutomator and iOS through XCUITest. Flutter apps add deep widget-tree inspection through the Dart VM service on Android, and React Native rides the native agents directly.
Mirror the physical device, rank semantic locators, record actions, and export starter flows without leaving the docs workflow.
Drivers, agents, test API, CLI, examples, and docs evolve together inside a single monorepo instead of splitting across disconnected tooling.
Astur keeps tests small while the runtime and native agents absorb device selection, waits, gestures, screenshots, diagnostics, and inspector state.
Astur is named after the astrolabe: a portable, historic astronomical instrument that compressed complex calculations and sky observations into something small enough to hold.
Astur brings that same philosophy to handheld-device automation: a compact, high-performance test API backed by a lightning-fast native runtime that handles device lifecycle, network orchestration, and screenshot-diagnostics under the hood.
Codegen gets you to a working test quickly. After that, keep the exported Playwright-style spec in source control and extend it with fixtures, helpers, and stronger assertions.
import { expect, test } from‘@astur-mobile/test’;test(‘login’, async ({ device }) => {awaitdevice.getByLabel(‘Email’).fill(‘qa@example.com’);awaitdevice.getByLabel(‘Password’).fill(‘secret’);awaitdevice.getByRole(‘button’, { name: ‘Login’ }).tap();awaitexpect(device.getByText(‘Welcome’)).toBeVisible();});