You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add CHANGELOG entry for v1.0.9 with all new features and fixes
- Update README: web platform, browser CDP driver, DeviceLab driver,
install specific version, web testing guide link
- Bump version to 1.0.9
- Fix banner: remove Unicode box-drawing, strip OSC 8 hyperlinks in CI
Copy file name to clipboardExpand all lines: CHANGELOG.md
+31Lines changed: 31 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
+
## [1.0.9] - 2026-03-11
11
+
10
12
### Added
13
+
-**Desktop browser testing** — new `--platform web` with built-in CDP driver for Chrome/Chromium. Headless by default, `--headed` for visible browser. Supports parallel browser execution
14
+
```bash
15
+
maestro-runner --platform web test flow.yaml
16
+
maestro-runner --platform web --headed --browser chrome test flow.yaml
17
+
maestro-runner --platform web test --parallel 3 flows/
-**Browser selectors** — `css` and `xpath` selectors for web elements, in addition to `text` and `id`
21
+
```yaml
22
+
- tapOn:
23
+
css: "button.submit"
24
+
- inputText:
25
+
id: "username"
26
+
text: "hello"
27
+
```
28
+
- `--no-app-install` flag — skip app installation even if `--app-file` is provided. Useful when the app is already installed
29
+
```bash
30
+
maestro-runner --no-app-install --app-file app.apk test flow.yaml
31
+
```
32
+
- `--no-driver-install`flag — skip driver installation (UIAutomator2, WDA, DeviceLab). Useful when drivers are already installed on the device
33
+
```bash
34
+
maestro-runner --no-driver-install test flow.yaml
35
+
```
11
36
- Flutter VM Service fallback for element finding — when the native driver (WDA/UIAutomator2) can't find a Flutter element, automatically discovers the Dart VM Service and searches the semantics/widget trees in parallel. Works on Android and iOS simulators. Non-Flutter apps pay only one log read on first miss, then fully bypassed. Disable with `--no-flutter-fallback`
12
37
- Flutter widget tree cross-reference — when semantics tree search fails, falls back to widget tree analysis (hint text, identifiers, suffix icons) and cross-references with semantics nodes for coordinates
13
38
- DeviceLab Android driver — WebSocket-based on-device automation with bounds stabilization for animated elements and special character handling. ~2x faster than UIAutomator2
@@ -74,6 +99,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
74
99
- Cloud Providers section in README with TestingBot setup guide
75
100
76
101
### Fixed
102
+
- iOS simulator no longer requires `--team-id` — simulators don't need code signing, so the validation now only enforces `--team-id` for real devices
103
+
```bash
104
+
# Before: required --team-id even for simulators
105
+
# Now: just works
106
+
maestro-runner --platform ios --start-simulator <UDID> test flow.yaml
107
+
```
77
108
- `runFlow: when` conditions with variable expressions (e.g., `${output.element.id}`) were never expanded, causing conditions to always evaluate as false and silently skip conditional blocks
78
109
- iOS real device: `acceptAlertButtonSelector`matched "Don't Allow" instead of "Allow" — `CONTAINS[c] 'Allow'` matched both buttons, causing WDA to reject permission dialogs. Changed to `BEGINSWITH[c] 'Allow'` with `OK` fallback for older iOS versions
79
110
- `AllocatePort`was ignoring existing port allocations and `assertCondition` had duplicate `timeout` yaml tag
Copy file name to clipboardExpand all lines: README.md
+12-4Lines changed: 12 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,11 @@
4
4
5
5
---
6
6
7
-
**Fast mobile UI test automation for Android, iOS, React Native, Flutter & Expo**
7
+
**Fast UI test automation for Android, iOS, Web, React Native, Flutter & Expo**
8
8
<br>
9
9
*Open-source Maestro alternative — single binary, no JVM. 100% free, no features behind a paywall.*
10
10
<br>
11
-
*Supports real iOS devices, simulators, emulators, and cloud providers.*
11
+
*Supports real iOS devices, simulators, emulators, desktop browsers, and cloud providers.*
12
12
13
13

14
14
@@ -25,22 +25,26 @@
25
25
26
26
---
27
27
28
-
- Runs Maestro YAML flows on real devices, emulators, and simulators
29
-
- Supports Android (UIAutomator2), iOS (WebDriverAgent), and cloud (Appium)
28
+
- Runs Maestro YAML flows on real devices, emulators, simulators, and desktop browsers
29
+
- Supports Android (UIAutomator2), iOS (WebDriverAgent), Web (Chrome CDP), and cloud (Appium)
30
30
- Built-in parallel execution, HTML/JUnit/Allure reports, and JavaScript scripting
31
31
- Addresses [78% of the top 100 most-discussed open issues](docs/maestro-issues-analysis.md) on Maestro's GitHub
-**Desktop browser testing** — Run Maestro flows on Chrome/Chromium via CDP. Supports `css`, `xpath`, `id`, and `text` selectors with `--platform web`[Guide →](https://devicelab.dev/open-source/maestro-runner/docs/web-testing)
54
59
-**React Native & Flutter** — Smart element finding for RN testIDs and Flutter semantics [Guide →](https://devicelab.dev/blog/flutter-testing-maestro-patrol-appium)
55
60
-**DeviceLab driver** — Optional on-device Android driver via WebSocket, ~2x faster than UIAutomator2 and ~5x faster than Maestro CLI. Just add `--driver devicelab`
56
61
-**Parallel execution** — Dynamic work distribution across devices, not static sharding. Faster devices pick up more tests automatically, so no device sits idle
- **Cloud & Appium testing:** Appium 2.x or 3.x — works with local Appium servers and cloud providers (BrowserStack, Sauce Labs, LambdaTest, TestingBot)
0 commit comments