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$ npm install -D @astur-mobile/test astur-mobile
02 INSPECT$ npx astur-mobile inspector —android —device emulator-5554// semantic tree mirrored, gestures visible, locators ranked
03 AUTHOR$ npx astur-mobile codegen —android —device emulator-5554// export Playwright-style flows you can keep and refine
04 SHIP$ npm testUse 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 }) => {
await device.getByLabel(‘Email’).fill(‘qa@example.com’);
await device.getByLabel(‘Password’).fill(‘secret’);
await device.getByRole(‘button’, { name: ‘Login’ }).tap();
await expect(device.getByText(‘Welcome’)).toBeVisible();
});