Released on 2024-10-15
Features:
-
Feature: add
--shard-split
and--shard-all
options tomaestro test
(#1955 by Tarek Belkahia)The
--shard
is now deprecated and superseded by--shard-split
. -
Feature: allow for passing multiple flow files to
maestro test
(#1995 by Tarek Belkahia) -
Feature: add the
optional
argument to all commands (#1946 by Tarek Belkahia)This new command-level
optional
argument supersededs the (now removed) selector-leveloptional
argument. No behavior changes are expected.When command with
optional: true
fails, its status is now "warned⚠️ " instead of "skipped ⚪️" -
Feature: add changelog to the update prompt when new Maestro version is available (#1950 by Tarek Belkahia)
-
Feature: add back the
--platform
option (#1954 by Tarek Belkahia) -
Feature: expose current flow name as
MAESTRO_FILENAME
env var (#1945 by Tarek Belkahia)
Fixes:
- Fix: Warnings generated by AI-powered commands aren't formatted nicely (#2043) (#2044)
- Fix: not working when iOS simulator is in landscape orientation (caveats apply) (#1974)
- Fix: confusing error message "BlockingCoroutine is cancelling" (#2036)
- Fix: AI-powered commands crashing when Anthropic is used (#2033)
- Fix: display warnings generated by AI-powered commands in CLI output when
optional: true
(#2026) - Fix: visual bug with emojis having slightly different length in
maestro test
's interactive CLI output (#2016) - Fix: no tests being run when flowsOrder specified all tests in the workspace (#2003)
- Fix: using integers from JavaScript outputs causing a deserialization error (#1788 by Muhammed Furkan Boran)
- Fix: delete temporary APKs after using them (#1947 by Tarek Belkahia)
- Fix: allow env vars in
setLocation
andtravel
commands (#1988 by Prasanta Biswas) - Fix: error message when specifying
--format
together with--continuous
#1948 (#1948 by Tarek Belkahia)
Chores:
- Chore: clean up logging, make log format configurable with 2 new env vars (#2041)
- Chore: make Maestro build & compile on Java 17 (#2008)
- Chore: Migrate all Gradle buildscripts to Gradle Kotlin DSL (#1994)
Released on 2024-08-30
- New experimental AI-powered commands for screenshot testing: assertWithAI and assertNoDefectsWithAI (#1906)
- Enable basic support for Maestro uploads while keeping Maestro Cloud functioning (#1970)
Released on 2024-08-15
- Revert iOS landscape mode fix (#1916)
Released on 2024-08-14
- Fix sharding on Android failing on all but one devices (quick hotfix) (#1867)
- Fix CLI crash when flow is canceled on Maestro Cloud (#1912)
- Fix iOS landscape mode (caveats apply) (#1809)
- Skip search engine selection when running on the web (#1869)
Released on 2024-08-03
- Fix cryptic "Socket Exception" when
CI
env var is set, once and for all (#1882)
Released on 2024-08-02
- Print stack trace on 3rd retry (#1877)
Released on 2024-08-02
- Fix cryptic "SocketException" when API token is invalid (#1871)
Released on 2024-07-30
- Don't ask for analytics permission on CI + add
MAESTRO_CLI_NO_ANALYTICS
env var (#1848)
Released on 2024-07-29
- Fix
FileNotFoundException: ~.maestro/sessions
(#1843)
- Fix
UnsupportedOperationException: Empty collection can't be reduced
(#1840)
- Fix crash when
flutter
orxcodebuild
is not installed (#1839)
-
Sharding tests for parallel execution on many devices 🎉 (#1732 by Kaan)
You can now pass
--shards
argument tomaestro test
to split up your test suite into chunks that run in parallel. If you have feedback or suggestions about this huge new feature, please share them with us in issue #1818. -
Reports in HTML (#1750 by Depa Panjie Purnama)
To see it, run
maestro test --format HTML <your-flow.yaml>
-
Homebrew is back!
If you prefer to switch your installation of Maestro to use Homebrew:
rm -rf ~/.maestro
brew tap mobile-dev-inc/tap && brew install maestro
🎉
Script install method is still supported.
-
Current platform exposed in JavaScript (#1747 by Dan Caseley)
In JavaScript, you can now access
maestro.platform
to express logic that depends on whether the test runs on iOS or Android. -
Control airplane mode (#1672 by NyCodeGHG)
New commands:
setAirplaneMode
andtoggleAirplaneMode
. Android-only because of iOS simulator restrictions. -
New
killApp
command (#1727 by Alexandre Favre)To trigger a System-Initiated Process Death on Android. On iOS, works the same as
stopApp
.
- Fix cleaning up retries in iOS driver (#1669)
- Fix some commands not respecting custom labels (#1762 by Dan Caseley)
- Fix “Protocol family unavailable” when rerunning iOS tests (#1671 by Stanisław Chmiela)
- Feature: Add support for extra keys to Android TV
- Feature: Add support for pressing tab key on Android
- Feature: Add status and time to report.xml
- Fix: Extend retry to handle 404 in upload status call
- Fix: Crashes caused by toasts on Android API < 30
- Change: Adds view class to Android hierarchy output
- Change: Improves description of maestro start-device command to include device locale as well
- Change: Adds scrollable attribute to Android view hierarchy output
- Feature: Adds childOf attribute to selector to select from children of a container
- Feature: Adds label attribute to customize the CLI output of maestro commands
- Fix: Fixing “Unsupported architecture UNKNOWN” on linux environment when calling maestro attempts to create devices
- Fix: Allow maestro to work below API level 25 for Android
- Fix: IllegalArgumentException on swipe operation for iOS if the coordinates beyond device width and height are selected
- Feature: Adds a parameter to exclude all the keyboard elements from hierarchy
- Fix: Failures due to swipe ranges going beyond screen dimensions
- Change: Adding escape key in
pressKey
API - Tweak: Avoid returning
Result
in IOSDriver install and clearAppState
- Tweak: Include scrollable attribute in view hierarchy from Android Driver
- Feature: Custom labels for readability of maestro commands
- Feature: Adding childOf selector
- Tweak: Message of start-device command to show locale as well
- Tweak: Include view class in view hierarchy attributes from the Android driver
- Feature: add support
--device-locale
parameter formaestro cloud
command - Feature: add support iOS17 for
maestro start-device
command - Feature: add support Android API level 34 for
maestro start-device
command
- Feature: support
--device-locale
parameter formaestro start-device
- Feature: add
centerElement
parameter forscrollUntilVisible
. Center element will attempt to stop scrolling when the element is near the center of the screen. - Feature: add
power
button support forpressKey
on Android - Change: add
tapOn
parameterwaitToSettleTimeoutMs
to control how long it waits to move on to the next command. Helpful for animation heavy apps. - Change: improve executionOrder planning
- Change: improve retry mechanism to ensure openness of XCUITest Server
- Fix: improve
TimeoutException
for driver startup
- Feature: support for multipart form data file upload in Javascript, thanks @maciejkrolik
- Fix: setPermissions produces error on Xcode 15
- Fix: Maestro studio - include enter key in command editor on initial paste
- Feature: Adds MAESTRO_DRIVER_STARTUP_TIMEOUT to iOS driver to configure timeout to start iOS driver, used in CI/CD environment with performance limitations. Thanks, Jesse Farsong for contributing.
- Feature: Introducing the "addMedia" command that enables adding images and videos directly to the devices.
- Change: Improved Studio's user interface:
- Updated fonts to align with company branding.
- Introduced a distinct loading animation for better clarity when AI is processing commands.
- Fix: Crash resulting in Error: No matches found for first query match sequence:
Children matching type Other
due to resolving root element for a snapshot operation on iOS - Fix: Android driver getting stuck when the device was disconnected
- Fix: XCTestUnreachable exceptions due to missing IPv6 config on /etc/hosts
- Fix: Handling app crash errors from XCUITest drivers gracefully
- Fix: Timeouts can be separated with
_
. For example 10_000 for 10000
Studio
- Feature: Support writing Flows using AI (more info to come 🚀)
- Feature: Maestro Studio can now run in multiple tabs simultaneously
- Feature: Added element id and copy option for it
- Tweak: Hide action buttons till command is hovered
- Tweak: Hide Unnecessary Scrollbars
- Tweak: Repl view scroll improvements
- Tweak: Improve Maestro Studio performance
- Fix: Selected element size
- Fix: Performance issues with maestro studio device refresh
- Fix: Fixed dark mode for element id
CLI
- Feature: New command to start or create a Maestro recommended device (docs)
- Feature: Support id selection for testID with react-native-web (community contribution)
- Feature: Control if browser automatically opens when running Maestro Studio via --no-window (community contribution)
- Tweak: Show cancellation reason when available (Maestro Cloud)
- Tweak: Update selenium-java and remove webdrivermanager to support Chrome 116+
- Tweak: Show device type when running on Maestro Cloud
- Tweak: Added better messaging and recovery options for Maestro Cloud uploads (useful for CI)
- Tweak: Added better error messages for missing workspace and yaml validation errors
- Tweak: Added file name and line number in yaml parsing error messages
- Fix: Input text and erase text stability improvements for iOS
- Fix: Leaking response body on iOS & better error handling for iOS Driver
- Fix: Fixed Maestro Cloud wrong exit code when flow failed
- Fix: Debug commands parsing would crash maestro
- Fix: Cleaning up debug logs
- Fix: Warning shown from OkHttp for leaking response bodies on CLI
- Closing response bodies for retries done on the XCUITest driver
- Closing response bodies for permissions
- Removing different thread execution done on hideKeyboard
- Fix: Scroll for React native apps on screens with large view hierarchies on iOS
- Fix: Showing more descriptive errors on flow file not found during maestro cloud command.
- Fix: Input text characters being skipped or being appended later in the test on iOS
- Fix: Crash in debug output generation when maestro flow contains "/"’
- Fix: Resolved issue where tapping on the device in maestro studio produced inaccurate click locations due to incorrect coordinates. Now fixed for accurate device interaction
- Fix: In Maestro Studio, the issue of window resizing causing devices to overflow off the screen has been resolved.
- Feature: Add headers to HTTP response for API calls done with Maestro. Thanks, Jesse Willoughby! for this contribution.
- Feature: Now it is possible to configure the path with the –debug-output option for debugging information that maestro dumps in the user directory by default.
- Feature: Enhanced Maestro Studio with keyboard accessibility, streamlining navigation and facilitating the copy, run, and edit commands using the keyboard.
- Change: Fail the test if any of the onFlowStart or onFlowComplete hooks fail
- Change: Removed IDB on iOS. This may impact the performance of maestro commands like tapOn and assertVisible on iOS screens with large view hierarchies.
- Studio and CLI will now provide insights and warnings in case the hierarchy of these screens becomes extensive.
- Change: In Maestro Studio, we've integrated screenshots of selected elements alongside their corresponding commands.
- Change: In Maestro Studio, double-clicking will now execute the command.
- Fix: correctly resolve external parameters for onStart/Complete hooks
- Fix: reuse JSEngine for all executeCommands (hooks, main commands, subflows) actions
- Update: Maestro Studio revamp improvements
- wrapped element names in sidebar
- sidebar text always visible
- add "hintText" and "accesbilityText" in sidebar
- improve sidebar search
- fixed highlight issues in search
- various other small improvements
- Revert connection improvements (from 1.30.1)
- Fix: Allow running
maestro studio
andmaestro test
simultaneusly - Fix: Connection improvements
- Feature: onFlowStart / onFlowComplete hooks
- Feature: Maestro Studio revamp
- improved design
- search components panel
- improved drag-and-drop
- Feature: Introduce
--app-binary-id
parameter for Maestro Cloud upload action to be able to re-use a previously uploaded app for different flows - Feature: Implement Experimental GraalJsEngine (ECMAScript 2022 compliant)
- Fix: Save xctest xcodebuild logs output to system temp dir
- Fix: Close existing screen recording if it was left open.
- Thanks, @carlosmuvi, for the contribution!
- Fix: Execute sequential Flows even if no other Flows are present
- Fix: Various XCTestClient connection improvements
- Deprecate:
assertOutgoingRequestsCommand
- Deprecate: Network Mocking feature
- Deprecate: Maestro Mock Server feature
- Feature: Add test duration measurement and display
- Feature: New screen recording commands
- Thanks, @tokou, for the contribution!
- Feature: Add support for sequential execution
- Feature: Add support for double taps + multiple taps in tapOn
- Feature: Add support for custom Android driver startup timeout
- Thanks, @arildojr7, for the contribution!
- Fix: Validate workspace prior to upload to Maestro Cloud
- Fix: Resolve Android scrollUntilVisible flakiness
- Fix: Resolve inputText flakiness
- Fix: iOS url arguments
- Thanks, @tokou, for the contribution!
- Feature: runScript command now support conditional execution
- Feature: Improved debug output:
- Shows failure reason when command fails
- Generates screenshot when command fails
- Unified most logs under ~/.maestro/tests//maestro.log
- Change: Launch arguments support for long values
- Tweak: JUnit report naming changes. Local and Cloud should now have the same naming convention.
- Tweak: Added deprecation notice for experimental features
- Fix: maestro record command was not working on iOS
- Fix: WebDriver, only scroll to elements outside of the window before tapping
- Fix: close request leaking body
- Fix: maestro cloud now will fail on timeout if configured as such
- Feature: Adds assertOutgoingRequests to assert the network requests from the app
- Feature: Add platform condition in runFlow command to do platform-specific orchestration. Thanks, Larry Ng for your contribution!
- Feature: Adds a new selector containsDescendants. Thanks, Larry Ng for your contribution!
- Feature: iOS and Android launch arguments
- Change: Include the update command instead of update instructions in the update message. Thanks @bobpozun for your contribution!
- Fix: Fixes swipe flakiness caused due to waiting for animations to complete on XCTest
- Fix: Correctly resolving
maestro.copiedText
- Fix: Using deviceId instead of booted, potentially resolving XCTestUnreachable exceptions.
- Fix: Improving waitForAppToSettle for Android by accounting window updates. Resolves maestro command interaction in Android 13.
- Fix: Notification permissions not getting granted
- Fix: Use correct documentation URLs in Studio
- Fix: hideKeyboard crashing on react native apps because swipe fails on some screens
- Feature: Adds Travel command to mock motion for app
- Feature: Adds a capability to match the toast messages
- Feature: Add support for console.log in javascript
- Feature: Allow writing inline flows with runFlow command
- Change: Adds sms permission to permission names which can be used to allow/deny: android.permission.READ_SMS, android.permission.RECIEVE_SMS, android.permission.SEND_SMS. Thanks, @depapp for the contribution.
- Change: Maestro can now also match hint text and values of text field.
- Change: Maestro can now also match elements with their accessibility text.
- Commands moved away from IDB:
- Long press is now done with XCTest instead of idb
- Installation of app is now done with simctl commands
- Hide keyboard with help of XCTest. We now scroll up and down from the middle of the screen to close the keyboard.
- Press key now is done with XCTest.
- Note that with this change pressKey: Enter now only wraps on new line - earlier it also closed the keyboard
- Erase text is now done with XCTest.
- Use simctl to record screen
- Fix: Web driver no longer crashes when using latest Chrome
- Fix: Fixes hideKeyboard on android by appropriately dispatching proper event. Thanks, @nhaarman for contribution
- Fix: Properly shutting down studio by listening to SIGTSP signal
- Fix: Update granting of notifications and health permissions causing simulator restarts and XCTestUnreachableExceptions.
- Fix: Shell environment variables can no longer crash the javascript runtime
- Fix: XCTestRunner and IDB are restarted on connection error
- Feature: Add support for setLocation
- Change: LaunchApp command sets all app permissions to allow (documentation)
- Feature: LaunchApp supports specifying app permission state
- Feature: On Android it is now possible to force links to be opened in the browser
- Fix: Autocorrect is no longer applied to inputText on iOS
- Fix: iOS apps with big view hierarchies (common with ReactNative and Flutter) caused an error in XCTest.framework
- Fix: Studio UI fixes for Firefox and Safari
- Fix: Element selection behavior in Maestro Studio
- Feature: Maestro Studio - Action Modal
- Feature: Maestro Studio - Dark Mode
- Feature: assertion on
enabled
,selected
,checked
,focused
properties (documentation) - Feature: running tests in a deterministic order (documentation)
- Feature: default global tags can now be set in
config.yaml
(documentation) - Feature: allow to configure what flows should be included into a run at
config.yaml
level (documentation) - Tweak: considerable speed-up of iOS tests due to removal of unnecessary hierarchy polling
- Tweak: wait for app to settle before proceeding with iOS test
- Tweak: UX improvements in "delete command" confirmation dialog
- Tweak: using
xcrun
for uninstall command on iOS - Tweak: using
xcrun
for clearKeychain command on iOS - Tweak: using
.maestro
directory by default for mockserver deploy command - Fix: errors were clipped in Maestro Studio
- Fix: use element title as id in Web driver
- Fix: Repeat-while-true did not work properly with JavaScript conditions
- Fix: Repeat-times did not work properly with JavaScript input
- Fix: added artificial delay after key presses (i.e. "back" key) on Android
- Early Access Feature: Maestro Mock Server and Maestro SDK (Android preview)
- Tweak: added visibility threshold and scroll speed to
scrollUntilVisible
command - Tweak: speed up
tapOn
command on iOS - Fix: removing view hierarchy elements that are out of screen bounds
- Fix:
inputText
command skipping characters on iOS - Fix: Reworked
clearAppState
behaviour on iOS, solving issue that caused crashes after clearing the state - Fix: crash when running multiple Maestro sessions in parallel while using iOS device
- Fix: a rare crash in React Native apps when trying to input a long string on iOS
- Fix: properly handling linebreaks in Maestro Studio
- Fix:
scrollUntilVisible
was not always working on iOS - Tweak: speed up tests by skipping an unnecessary hierarchy poll
- Tweak: iOS screenshot no longer depends on IDB and is faster
- Hotfix: Move iOS tap() implementation back to IDB to resolve problems with React Native apps
- Fix: running multiple Maestro instances would sometimes result in Connection exception
- Fix: support JS injection in
scrollUntilVisible
command
- Fix: Increase typing speed for iOS text input
- Feature: Next evolution of Maestro Studio
- Fix: More robust implementation of inputText on iOS
- Fix: More robust implementation of tap on iOS
- Experimental: Added web driver
- Feature: Maestro Studio - use percentage-based swiping
- Feature: Scroll until view element is visible
- Feature: Relatively swipe with percentage based start and end coordinates
- Fix: Android tap was not always working
- Fix: Bottom of Android hierarchy was cut off
- Fix: idb_companion fails to start due to gRPC timeout exception
- Tweak: Improve Android Screenshot Internal Logic
- Tweak: Change the end coordinates for swipe element
- Tweak: Update sample flows
- Fix: inputText was not working on iOS React Native apps
- Fix: Maestro fails to launch on iOS if --device parameter is present
- Fix: Evaluate JS scripts with element selector in swipe command
- Tweak: added tags to sample flows
- Tweak: indicating whether build is running on CI in analytics
- Hotfix: Maestro Studio was not working
- Feature: generating test report from
maestro cloud
output - Fix: in rare cases, maestro cloud was computing progress bar as negative value
- Fix: local test suite included non-flow files
- Fix: some special characters were not allowed in env variables (i.e.
&
) - Fix: vertical scrolling was sometimes not working on iOS
- Fix: if a text string is an invalid regex, treat it as a regular string instead
- Fix: scroll and swipe commands on iOS were throwing an error when running in parallel with Maestro Studio
- Tweak: print out valid inputs for
--format
parameter inmaestro test
andmaestro upload
- Tweak: removed Maestro Studio warning related to parallel execution
- Refactor: making XCTestDriver configurable
- Feature: iOS unicode input support + non-English keyboards
- Feature:
swipe
command now supportsfrom
argument to swipe from a given view - Feature:
repeat
command now supportswhile
condition - Feature: Allowing
extendedWaitUntil
command to use env values intimeout
property - Tweak: assert commands now respect
optional
flag - Tweak: error analytics
- Fix: scroll not working reliably on iOS
- Fix:
openLink
was opening Google Maps on Android - Fix: sub-flows are now included regardless of their tags
- Fix: Maestro Studio was not always computing
index
field correctly - Fix:
maestro upload
was ignoring JS files - Fix:
openLink
command now supports query parameters
- Feature: tags
- Tweak: allow running other maestro commands alongside Maestro Studio
- Tweak: improved matching for strings with linebreaks
- Fix: creating maestro logs directory was not always working properly
- Fix: maestro studio was not working properly on Kubuntu
- XCUITest driver improvements and fixes:
- Close the response when validating server up
- Add logs to uninstall of runner
- Remove redundant import and library from maestro-ios
- Kills the process before we uninstall it
- Redirect runner logs in xctest_runner_logs directory
- Fix: Wait for XCUITest server to start before proceeding
- Fix: Create XCUITest driver HTTP server on loopback address
- Fix: Create parity with idb for
text
attribute with following priority:- Title
- Label
- Value
- Feature: Adds new XcUITest driver to capture view hierarchy on iOS.
- Fixes stability issues on iOS 16
- Fixes not identified bottom navigation tabs
- Gets view hierarchy natively from XCUITest
- Fix: Missing letter j and y in inputRandomText command
- Tweak: Un-deprecate the hierarchy command, inform about Studio
- Tweak: Match negative bounds as well in maestro studio
- Feature: Adds replay functionality in maestro studio
- Feature: Adding device interaction to interact page in Maestro Studio
- Fix: Maestro commands were failing if Android SDK wasn't installed
- Feature: no-ansi version for terminals that do not ANSI
- Feature: Android Maven artifact for setting up network mocking
- Fix: Android emulator was not discovered properly if it wasn't on PATH
- Fix: missing favicon
- Tweak: Deprecate hierachy and query CLI commands
- Tweak: Remove Maestro Studio icon from Mac dock
- Tweak: Prefer port 9999 for Maestro Studio app
- Fix: Fix Maestro Studio conditional code snippet
- Feature: Maestro Studio
- Feature: Print a message when an update is available
- Feature: Support percentages for tapOn
- Fix: Maestro commands execute faster now
- Fix: Fix environment variable substitution in certain cases
- Fix: Use actual android device screen size (including nav bar)
- Fix: Add error message for when an Android screen recording fails
- Fix: Fix iOS
clearState
not working in certain cases - Fix: Fix
maestro record
not capturing full launch screen recording
- Fix: older version of Maestro Driver on Android was not always updated
- Feature:
maestro record
command - Fix:
z
character was not inputted correctly on Android
- Feature: Javascript injection support
runScript
andevalScript
commands to run scriptsassertTrue
command to assert based on JavascriptrunFlow
can be launched based on Javascript conditioncopyTextFrom
now also stores result inmaestro.copiedText
variable- Env parameters are now treated as Javascript variables
- Feature: HTTP(s) requests
http.request()
Javascript API that allows to make HTTP requests as part of Maestro flows
- Feature: Maestro Cloud
--android-api-level
parameter to select API version to be used - Feature:
waitForAnimationToEnd
command to wait until animations/videos are finished - Tweak: test reports can now be generated for single test runs (and not just folders)
- Tweak:
inputText
on Android was reworked to increase speed and input stability - Tweak:
eraseText
is now much faster - Tweak:
maestro cloud
will automatically retry upload up to 3 times - Fix: running on Samsung devices was sometimes failing because of wrong user being used
- Feature: run all tests in a folder as a suite
- Feature: XML test report in JUnit-compatible format
- Feature:
copyTextFrom
command for copying text from a view - Feature:
maestro bugreport
command for capturing Maestro logs - Breaking change: Removed
clipboardPaste
command in favour of newpasteText
command - Fix: Java 8 compatibility issue for M1 users
- Fix:
_
character was mapped incorrectly on iOS - Fix: first
tapOn
command was failing unless it was preceeded bylaunchApp
oropenLink
- Tweak: Maestro no longer kills running
idb_companion
processes - Tweak: updated gRPC version to 1.52.0
- Fix: passing env parameters to subflows and other env params
- Speeding up maestro flows
- Checking in maestro sample flows and adds sample updating guide
- Maestro is now compatible with java 8!
- Launching app without stopping the app
- Fixing launching app when resolving launcher activity throws
NullPointerException
- Fix: Fallback properly on monkey when start-activity command fails, when launching app.
- Fix: Fix maestro hanging with message "Waiting for idb service to start.."
- Fix: Fix clearState operation not working on iOS
- Feature: Option to set direction and speed for swipe command
- Fix: Fix duplicate and unavailable iOS simulators in list
- Fix: Longer timeout for iOS simulator boot
- Feature:
maestro cloud
command added
- Fix: Use absolute path to prevent NullPointerException when .app folder is in the cwd
- Fix: Create parent directory if not exists when generating adb key pair, updates dadb to 1.2.6
- Fix: Opening of leak canary app
- Tweak: send agent: ci when known CI environment variables are set
- Fix: updating to dadb 1.2.4
- Fix: updating to dadb 1.2.3 to fix an occassional device connection issue
- Fix: injecting
env
parameters into conditions (i.e. inrunFlow
)
- Fix: closing
idb_companion
aftermaestro
completes
- Feature:
maestro
will offer user to select a device if one is not running already - Feature:
env
variables can be inlined in flow file or inrunFlow
command - Breaking change:
--platform
option is deprecated. CLI now prompts user to pick a device. - Tweak: auto-starting
idb_companion
. No need to start it manually anymore. - Tweak: tripled Android Driver launch timeout
- Tweak: customisable error resolution in Orchestra
- Fix:
maestro upload
was not ignoring-e
parameters
- 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)