- Fix: login command fails with java.lang.IllegalStateException: closed
- Feature:
repeat
command that allows to create loops - Feature: conditional
runFlow
execution that allows to create if-conditions - Feature:
inputRandomText
,inputRandomNumber
,inputRandomEmail
andinputRandomPersonName
commands (thanks @ttpho !) - Feature:
clipboardPaste
command (thanks @depapp !) - Feature: Added
enabled
property to element selector - Feature: Added
download-samples
command to allow quickstart without having to build your own app - Feature: Added
login
andlogout
commands for interacting with mobile.dev - Breaking change:
upload
now takes 1 less argument.uploadName
parameter was replaced with--name
optional argument - Tweak:
upload
command automatically zips iOS apps - Tweak: sending
agent: cli
value alongsideupload
andlogin
commands - Fix: properly compare fields that contain regex special symbols
- Fix: input text on Android was sometimes missing characters
- Feature: USB support for Android devices
- Fix: occasional crash when an iOS layout has a view group with a 0 width
- Fix: properly mapping top-level syntax errors
- Tweak: prioritise clickable elements over non-clickable ones
- Fix: close TCP forwarder if it is already in use
- Fix: hideKeyboard on Android did not always work
- Fix: Timeout exception while opening port for tcp forwarding
- Feature:
runFlow
command - Tweak: support of Tab Bar on iOS
- Tweak: added
--mapping
option toupload
CLI command - Fix: open the main launcher screen on Android instead of Leak Canary
- Fix: input character-by-character on Android to counter adb issue where not the whole text gets transferred to the device
- Fix:
tapOn
command was failing due to a failure during screenshot capture
- Feature:
clearState
command - Feature:
clearKeychain
command - Feature:
stopApp
command - Tweak: Maestro now compares screenshots to decide whether screen has been updated
- Tweak:
launchApp
command now supports env parameters
- Feature:
maestro upload
command for uploading your builds to mobile.dev - Feature:
takeScreenshot
command - Feature:
extendedWaitUntil
command - Fix: waiting for Android gRPC server to properly start before interacting with it
- Fix: brought back multi-window support on Android
- Fix:
hideKeyboard
command did not always work - Fix: make project buildable on Java 14
- Refactoring: make
MaestroCommand
serializable without custom adapters - Refactoring: migrated to JUnit 5
- Feature: hideKeyboard command
- Feature: add Android TV Remote navigation
- Tweak: allowing to skip package name when searching by
id
- Fix: Android WebView contents were sometimes not reported as part of the view hierarchy
- Fix: iOS inputText race condition
- Fix: populate iOS accessibility value
- Refactoring: simplified
MaestroCommand
serialization
- Temporary fix: showing an error when unicode characters are passed to
inputText
- Feature:
eraseText
command
- Fix: Android devices were not discoverable in some cases
- Fix: relative position selectors (i.e.
below
) were sometimes picking a wrong view - Fix: await channel termination when closing a gRPC ManagedChannel
- Fix: Android
inputText
did not work properly when a string had whitespaces in it - Fix: race condition in iOS
inputText
- Added
traits
selector. - Relative selectors (such as
above
,below
, etc.) are now picking the closest element. - Fix: continuous mode did not work for paths without a parent directory
- Fix: workaround for UiAutomator content descriptor crash
- Fix:
tapOn: {int}
did not work
- Added
longPressOn
command - Decreased wait time in apps that have a screen overlay
- Fixed CLI issue where status updates would not propagate correctly
- Fix: iOS accessibility was not propagated to Maestro
- Fix: env parameters did not work with init flows when using
Maestro
programmatically
- Added support for externally supplied parameters
- Added
openLink
command
- Fail launching an iOS app if the app is already running
- Add support for cli to specify what platform, host and port to connect to
- Added support of iOS state restoration
- Exposing
appId
field as part ofMaestroConfig
- Update
Orchestra
to support state restoration
- Update
YamlCommandReader
to accept Paths instead of Files to support zip Filesystems
- Config is now defined via a document separator
- launchApp no longer requires and appId
- initFlow config implemented
launchApp
command now can optionally clear app stateconfig
command to allow Orchestra consumers a higher degree of customization- Fixed a bug where
ElementNotFound
hierarchy field was not declared as public
- Initial Maestro release (formerly known as Conductor)