patrol 3.19.0 
patrol: ^3.19.0 copied to clipboard
Powerful Flutter-native UI testing framework overcoming limitations of existing Flutter testing tools. Ready for action!
3.19.0 #
- Fix logging for 
$.native.pullToRefresh()and$.native.swipeBack(). (#2707) - Fix 
$.native.enableDarkMode()and$.native.disableDarkMode()on iOS 18 simulators. (#2705) - Add support for de, fr and pl languages for native methods that operates on strings. (#2659)
 - Add support for gallery permission dialog on iOS 17. (#2659)
 - Keep the app running after last step in patrol develop. (#2693)
 
3.18.0 #
- Bump 
leancode_lintto17.0.0. - Bump 
patrol_logto0.5.0. - Bump minimum Dart SDK to version 3.8.0.
 
3.17.0 #
- Add 
takeCameraPhotomethod. (#2660) - Add 
pickImageFromGallerymethod (#2660) - Add 
pickMultipleImagesFromGallery(#2660) - Add 
isVirtualDevicemethod (#2660) - Add 
getOsVersionmethod (#2660) - Allow passing null to 
$.native.getNativeViews()(#2660) - Add 
$.native.swipeBack()method (#2608) - Add 
$.native.pullToRefresh()method (#2665) 
3.16.0 #
- Make activity aliases work in PatrolJUnitRunner
 - Update test reports to show all exceptions thrown in Flutter. (#2362)
 - Bump min Flutter SDK to 3.32.0 (#2649)
 
3.15.2 #
- Bump 
vm_servicedependency to15.0.0(#2636) 
3.15.1 #
- Fix 
$.enterText()issues (#2570) - Add 
setMockLocationmethod. (#2547) - Bump 
custom_lintto0.7.0andleancode_lintto14.3.0. (#2574) - Upgrade 
http4kto 5.47.0.0. (#2559) 
3.14.2 #
- Make activity aliases work in PatrolJUnitRunner
 
3.14.1 #
- Bump patrol plugin iOS and macOS deployment targets to 12.0. (#2514)
 - Bump Gradle version in the example app so it's possible to build them on the latest JDK 23 (#2503)
 - Fix 
$.native.tap()not working withSelectorhavinginstanceset. (#2501) - Fix not disposed semantics issue in Flutter 3.29.0 (#2530)
 
3.14.0 #
- Remove 
exceptionfromStepEntry. When it was too long, it caused crash because of badly formed JSON. (#2481) - Bump 
patrol_findersandpatrol_logversions. - Bump compileSdk to 35. (#2488)
 - Bump Gradle to 8.9.0. (#2488)
 - Make Patrol works with Java 21. (#2488)
 
3.13.2 #
- Bump 
patrol_findersandpatrol_log- use version with patched enterText. (#2468) 
3.13.1 #
- Remove whitespace replacement on Android test name. (#2437)
 
3.13.0 #
- Add support for the 
patrol_logpackage. (#2387) - Fix tapping on notification on iOS 18. (#2394)
 - Fix macos functionality. (#2408)
 - Bump 
patrol_findersand enable logging. 
This version requires version 3.4.0 of patrol_cli package.
3.12.0 #
- Add 
clear-permissionsflag on ios commands. (#2367) 
This version requires version 3.3.0 of patrol_cli package.
3.11.2 #
- Bump min Flutter SDK to 3.24.0 and Dart SDK to 3.5.0 (#2371)
 
3.11.1 #
- Replace whitespace in test case name in 
PatrolJUnitRunner.java. (#2361) 
3.11.0 #
- Add code coverage collection support. (#2294)
 - No throw error in 
selectFineLocationwhen it's already selected. (#2302) - Add option to select tap location in 
enterTextandenterTextByIndex(#2312) 
This version requires version 3.2.0 of patrol_cli package.
3.10.0 #
- Implement 
enableBluetoothanddisableBluetoothmethods for Android > 11. (#2254) - Implement 
enableAirplaneModeanddisableAirplaneModemethods for Android. (#2254) - Implement 
enableLocationanddisableLocationmethods for Android. (#2259) - Fix opening settings app with clean state on iOS. (#2275)
 - Add native skip. (#2278)
 - Add 
tagsandexclude-tags. (#2286) 
3.9.0 #
- Add privacy manifest for Apple.
 - Disabled use of system proxy in iOS/macOS (could lead to broken tests).
 - Fix complete breakage of MacOS automations introduced in #2219.
 
3.8.0 #
- Add 
openUrl(String url)method, for testing deeplinks. (#2219) - Add 
pressVolumeUpandpressVolumeDown(). (#2223) 
3.7.3 #
- Try closing system dialog when disabling wifi on iOS. (#2123)
 
3.7.2 #
- Bump 
test_apidependency to 0.7.0. - Bump 
patrol_devtools_extensiondependencies. - Bump min Flutter SDK to 3.22
 
3.7.1 #
- Revert: Bump 
patrol_devtools_extensiondependencies. - Revert: Bump 
test_apidependency to 0.7.0. 
3.7.0 #
- Bump 
test_apidependency to 0.7.0. - Bump 
patrol_devtools_extensiondependencies. - Support customization of doubleTap delay (Android only). (#2165)
 
3.6.1 #
- Fix clearing textfield before entering text on iOS (#2158).
 
3.6.0 #
- Add clearing textfield before entering text on iOS (#2145).
 - Added the NativeAutomator2, which allows to interact with native using selectors designated for a specific platform (AndroidSelector and IOSSelector) (#2132).
 - Add support for --app-server-port and --test-server-port on Android (#2154).
 
3.5.2 #
- Fix reporting fail cause to native on ios in release mode (#2114).
 
3.5.1 #
- Make more 
Selectorproperties work on iOS (#2030). - Fix handling denying Android permissions when invoked second time (#2112).
 
3.5.0 #
- Add optional timeout parameter to native methods (#2042).
 - Add 
$.native.tapAt()(#2053) - Fix 
native.enterTextinteracting with first EditText regardless ofSelectorpassed (Android-only) (#2072) - Print link to devtools regardless of open-devtools flag (#2076).
 
3.4.0 #
- 
Allow for changing the port when running on iOS (#2027).
To do so, pass
test-server-port(default 8081) andapp-server-port(default 8082) to Patrol CLI commands (e.gpatrol test) - 
Fix
patrolSetUp()andpatrolTearDown()not working inpatrol develop(#2023). 
This version requires version 2.6.0 of patrol_cli package.
3.3.0 #
- Enable selecting individual tests with 
xcodebuild's-only-testingoption. Currently iOS only, does not support macOS (#2001) - Fix being unable to interact with the running app during testing with a finger (#2008)
 - Fix non-ASCII characters displaying as gibberish in Patrol's DevTools extension (#2010)
 - Fix Dart-side crash in test causing test suite to hang on iOS (#2013)
 
3.2.0 #
- Add support for running patrol tests on macOS (alpha) (#1847)
 
3.1.0 #
- Implement 
patrolSetUp()andpatrolTearDown(), which are equivalents of vanillasetUp()andtearDown()but work with Patrol's native automation and test bundling feature (#1967) (#1721) 
3.0.3 #
- Implement 
$.native.swipe()on iOS (#1927) 
3.0.2+1 #
- Add screenshots to 
pubspec.yaml(#1917) 
3.0.2 #
- Bump dependencies for Flutter 3.16 and Dart 3.2
 - Populate 
topicsin pubspec 
3.0.1 #
- Fix extension code not being bundled by GitHub Actions workflow (#1902)
 
3.0.0 #
Give a warm welcome to the new Patrol DevTools Extension!
Patrol DevTools extension allows you to explore the native view hierarchy when
developing tests with patrol develop. Now you can easily see what Android /
iOS views are currently visible and discover their properties so that they can
be used in native selectors like $.native.tap(). You don't have to use any
external tools for that. This is just the beginning, and we plan to add more
features to our extension in the future.
Other changes:
- 
Bump minimum supported Flutter version to 3.16
 - 
BREAKING:
- Remove 
bindingTypeparameter frompatrolTest()function. Now onlyPatrolBindingis used and it's automatically initialized (#1882) - Remove 
nativeAutomationparameter frompatrolTest()function. Now it's enabled by default (#1882) - This release also depends on patrol_finders v2 and includes its breaking changes.
 
 - Remove 
 - 
Remove dependency on
integration_testplugin (#1882) 
This version requires version 2.3.0 of patrol_cli package.
2.3.2 #
- Add 
PatrolFinder.longPress()(#1825) 
2.3.1 #
- Add support for iOS 11 and 12 (#1733)
 - Fix build-time and run-time crashes when app doesn't use Kotlin 1.8.x (#1782)
 
2.3.0 #
- Add support for nested test hierarchies using 
group()s (#1634) - Replace Protocol Buffers and gRPC with a custom code generation solution that is more lightweight (#1681)
 - Fix test name label blocking hit testing (#1731)
 
This version requires version 2.2.0 of patrol_cli package.
2.2.5 #
- Fix 
grantPermissionOnlyThisTime()crashing on Android <11 (#1698) 
2.2.4 #
- Remove deprecation of 
nativeAutomationand add message about migration topatrol_finders(#1670) 
2.2.3 #
- Make 
KeyboardBehavior.alternativenot automatically try to hide the keyboard on iOS (#1638) 
2.2.2 #
- Fix deprecation message for 
andSettle(settleBehavior -> settlePolicy) (#1622) 
2.2.1 #
- Fix 
appIdparameter missing fromNativeAutomator.waitUntilVisible()(#1611) - Fix tests crashing by stopping depending on 
dart:iowhen running withflutter_driveron the Web (#1578) 
2.2.0 #
- Use proper context in 
PatrolJUnitRunner(#1591) - Make 
Selector.instancework on iOS (#1569) - Ignore calls to 
select[Fine|Coarse]Location()on iOS < 14 (#1564) - Add support for 
getNativeViewson iOS (#1553) 
2.1.0 #
- Add 
$.native.waitUntilVisible()(#1543) - Add 
KeyboardBehaviorenum to native enterText() methods (#1511) 
2.0.7 #
- Add an alternative 
BrowserstackPatrolJUnitRunner, which implements a fix to make tests run on BrowserStack (#1402) 
2.0.6 #
- Implement 
$.native.openQuickSettings()for iPhones without notch (#1510) 
2.0.5 #
- Fix occasional cryptic failures of Gradle builds (#1509)
 
2.0.4 #
- Fix tests occasionally failing on iOS because of dangling 
SemanticsHandles (#1491) 
2.0.3 #
- Remove dependency on 
package:http(#1485) 
2.0.2 #
- Fix 
enterText()not working when running withflutter_driveron the web (#1459) 
2.0.1 #
- Fix WebViews on modern Android versions (#1398). See #244 for more details.
 - Implement a proper fix for tests failing when using native automation on Android + Flutter 3.10 (#1398). This replaces a workaround implemented in #1352
 - Bump dependencies (#1446)
 
This version requires version 2.0.1 of patrol_cli package.
2.0.0 #
1.1.5 #
- Fix tests failing when using native automation on Android + Flutter 3.10 (#1352)
 
1.1.4 #
- Fix build with Android Gradle Plugin v8 (#1276)
 
1.1.3 #
- Fix 
which()not taking previous finder(s) into account (#1271) 
1.1.2 #
- Fix crashing when using Gradle 8 (#1262)
 
1.1.1 #
- Add support for Flutter 3.10 (#1254)
 
1.1.0 #
This version marks the official release of Hot Restart. Learn more here.
1.0.9 #
This version requires version 1.1.4 of the patrol_cli package
- Rewrite native test reporting (#1178)
 
1.0.8 #
- Fix App Store warnings about non-public selectors from 
patrol.framework(#1096) 
1.0.7 #
- Fix 
tap()sometimes not being able to tap on a widget that was previously found and scrolled to byscrollTo()(#1072) 
1.0.6 #
- Add preliminary support for 
patrol develop. Requires version 1.0.6 ofpatrol_cli. 
1.0.5+1 #
- Update small typo in pub.dev listing (#1034)
 
1.0.5 #
- Fix build of example app for Android when building on Windows (#998)
 
1.0.4 #
- Remove unnecessary dependency on 
vm_service(#986) 
1.0.3 #
- Fix 
PATROL_WAIT(passed through--waitargument topatrol test) preventing frames from being pumped (#959) - Fix tapping on notification crashing on iPads (#963)
 - Remove no longer functional methods from 
PatrolBinding(#970) 
1.0.2 #
- 
Make
NativeAutomator.enterTextByIndex()have a default timeout, just likeNativeAutomator.enterText()(#943)Documentation of these 2 methods has also been updated to explain the behavior in more detail.
 - 
Use automated publishing with GitHub Actions on pub.dev (#953) (#955) (#956) (#957)
 
1.0.1 #
- Fix IndexOutOfBounds exception when waiting for native views on Android (#939)
 - Fix 
flutter runnot working in example app because of an error in Gradle build file (#940) 
1.0.0 #
0.10.12 #
- Minor documentation fixes (#912)
 
0.10.11 #
- Remove unnecessary dependency on 
json_serializableandjson_annotation(#904) 
0.10.10 #
- Fix crash 
Instrumentation run failed due to Process crashedon Android (#902) 
0.10.9 #
- Improve error message when trying to use 
NativeAutomator, but it's not initialized (#856) 
0.10.8 #
- Add GitHub Actions showing to run Patrol tests natively on both Android and iOS (#747, #752)
 - Add 
PatrolTestRunnerclass, which should be used instead ofFlutterTestRunnerinMainActivityTest.javafile (#754) 
0.10.7 #
- Strip out code that App Store is angry about by default in release iOS builds (#727)
 
0.10.6 #
- Make it possible to change 
LiveTestWidgetsFlutterBindingFramePolicyinpatrolTest()(#716) 
0.10.5 #
- Add support for test label overlay in PatrolBinding (#701)
 
0.10.4 #
- Migrate to lite Protocol Buffers and gRPC to avoid conflicts with Firebase on Android (#688)
 
0.10.3 #
- Fix Android dependencies leaking into dependent apps (#683)
 
0.10.2 #
- Fix breaking iOS builds by migrating off 
CGVectorMake(), which is unavailable in Swift (#676) 
0.10.1 #
- Fix breaking iOS builds by setting minimum iOS version to 13.0 (#674)
 
0.10.0 #
- Allow for running as native Android/iOS instrumented test (Patrol Next) (#646, #671)
 
0.9.1 #
- Add 
NativeAutomator.swipe()to enable simple swiping (#669) 
0.9.0 #
- Breaking: Remove 
PatrolTester.log()- it did not fit in there and was rarely used (#665) - Breaking: Remove 
PatrolTesterConfig.appName- it's only usage was inPatrolTester.log(), and since it was removed, this field is removed as well (#665) 
0.8.0 #
- Breaking: Change signature of 
PatrolTester.pumpAndSettle()method to use named arguments (#657) - Fix 
PatrolTester.dragUntilVisible()not callingfirston itsFinder viewparameter (#656) 
0.7.6 #
- Make it possible to configure loggers of 
NativeAutomatorandHostAutomator(#644) - Throw 
PatrolFinderExceptionwhenPatrolFinder.textfails (#644) 
0.7.5 #
- Revamp configuration of testers, letting for more granural setup (#640):
- Rename 
PatrolTestConfigtoPatrolTesterConfig - Introduce 
NativeAutomatorConfig - Introduce 
HostAutomatorConfig 
 - Rename 
 - Introduce 
HostAutomator.run()method, which lets you run programs on your computer from within your Flutter integration tests (#630) 
0.7.4 #
- Fix minor bug with custom binding initialization (#636)
 
0.7.3 #
- Add 
patrolIntegrationDriver, which extends the defaultintegrationDriverwith cool features like taking screenshots. More features enabled bypatrolIntegrationDriverare coming soon! (#593) - Warn when package name and bundle identifier is not set in 
PatrolTestConfig(#591) 
0.7.2 #
- Add 
PatrolFinder.which()(#571) 
0.7.1 #
- Add 
andSettleparam toPatrolFinder.scrollTo()(#501) - Add more integration tests to the example app (#491)
 
0.7.0 #
In this release, we've focused on stability, reliability, and reducing flakiness.
- Add timeouts when interacting with native UI (#437)
 - Implement 
isPermissionDialogVisible()method (#448) 
0.6.12 #
- Add useBinding flag to 
patrolTest(#419) 
0.6.11 #
- Breaking: Rename 
NativeAutomator.forTest()constructor to an unnamed constructor (#410) - Add 
useBindingflag toNativeAutomatorconstructor. Defaults to true, which means thatPatrolBindingis initialized during the constructor call (#410) - Fix 
timeoutargument toNativeAutomatorbeing ignored (#410) 
0.6.10 #
- Make 
$()accept aWidgetas an argument (#402) 
0.6.9 #
- Remove the unused 
appIdargument from most methods (#399) - Breaking: Rename 
getNativeWidgets()togetNativeViews()(#399) 
0.6.8 #
- Fix handling permission prompts now working in some edge cases (#383)
 
0.6.7+1 #
- Fix package score on pub.dev (#375)
 
0.6.7 #
- Implement enabling and disabling cellular on iOS (#371)
 
0.6.6 #
- Make 
openApp()open the app under test when noappIdis passed (#338) - Implement 
enableWifi(),disableWifi(), andopenRecentApps()on iOS (#338) - Completely rewrite communication with native automation servers (#338)
 
0.6.5 #
- Implement enabling and disabling dark mode on iOS (#345)
 
0.6.4+1 #
- Fix spelling of "cellular" (was "celluar") (#336)
 - Fix a typo in docs (#337)
 - Fix README and docs mentioning the removed 
Patrolclass (#349) 
0.6.4 #
- A bunch of post-release fixes (#330)
 
0.6.3 #
- Stop re-exporting 
package:flutter_test(#308) 
0.6.2 #
- Don't require 
hostandportto be defined inpatrol.tomlor passed in as command-line arguments (#301) - Rename 
PatroltoNativeAutomatorand embed it inPatrolTester(#297) - Print cleaner, more readable logs when native action fails (#295)
 
0.6.1 #
- Fix handling native permission request dialogs on older Android versions (#260)
 - Populate 
homepagefield inpubspec.yaml(#254) 
0.6.0 #
- Rename to patrol (#258)
 - Remove 
sleepfromMaestroTestConfig. Use the new--waitargument available in the CLI (#251) 
0.5.5 #
- Bring more functionality to iOS (#246)
- Implement native 
tap(),enterText(), andhandlePermission()methods on iOS Maestro.forTest(): add optionalpackageNameandbundleIdarguments
 - Implement native 
 
0.5.4 #
- Add support for handling native permission request dialogs on Android (#232)
 - Attempt to fix a weird issue with scroll not working in some rare cases (#237)
 - Re-export 
package:flutter_test 
0.5.3 #
- Make 
MaestroFinder.textgetter more robust 
0.5.2 #
- Fix a problem with 
StateErrorbeing thrown when MaestroTester.dragUntilVisible found more than 1 finder after dragging to it (#228) 
0.5.1 #
- Some fixes to the scrolling and dragging
 
0.5.0+1 #
- Set minimum Dart version to 2.17 (#224)
 
0.5.0 #
- 
Revamp scrolling and dragging (#217)
- New 
MaestroTester.dragUntilExists() - Fixed 
MaestroTester.dragUntilVisible()'s behavior - New 
MaestroTester.scrollUntilExistsmethod - New 
MaestroTester.scrollUntilVisiblemethod MaestroFinder.dragTowas renamed toMaestroFinder.scrollToand now also scrolls to widgets that are not yet built (e.g in a lazily-builtListView)
 - New 
 - 
Allow for more fine-grained control over timeouts (#191)
settleTimeout, which is used forMaestroTester.pumpAndSettle(which forwards it toWidgetTester.pumpAndSettle)existsTimeout, which is used forMaestroFinder.waitUntilExistsvisibleTimeout(previouslyfindTimeout), which is used byMaestroFinder.waitUntilVisible(which is then used internally byMaestroFinder.tap()andMaestroFinder.enterText().
 
0.4.6 #
- Downgrade 
package:freezedto v1 beacuse customer project is not able to update to v2 
0.4.5 #
- Create 
MaestroTestConfigclass which is accepted bymaestroTestfunction. Use it to share common configuration across all tests - Upgrade 
package:freezedto v2. Dependent projects should also make this change 
0.4.4 #
MaestroFinder:
- Rename 
visiblemethod towaitUntilVisible - Add 
waitUntilExistsmethod - Add 
existsgetter - Add 
visiblegetter 
0.4.3 #
- Add 
MaestroFinder.dragTo - Remove unused 
MaestroTester.dragandMaestroTester.dragFrom 
0.4.2 #
- Convert 
MaestroFinder.visiblegetter to a method, which now also takes a timeout - Rename 
MAESTRO_ARTIFACT_PATHenvironment variable to `MAESTRO_CACHE - Fix 
MaestroTester.dragUntilVisiblenot waiting for the scrollable to appear - Fix 
MaestroFinder.allCandidatesreturning incorrect results 
0.4.1 #
- Throw 
MaestroFinderFoundNothingExceptionwhen [MaestroFinder.visible] doesn't find any widget during [MaestroTester.findTimeout] 
0.4.0 #
MaestroFinder:
- Now 
tap()andenterText()wait for the widget to become visible. The timeout can be configured by settingfindTimeoutinmaestroTest() - Remove 
indexparameter fromtap()andenterText(). The new way to select the widget to be tapped is to useat()before tapping. Same goes for entering text - Add 
bool andSettleparameter tomaestroTestfunction. This lets you globally configure whether to callpumpAndSettleafter actions such astap()orenterText() - Refactor 
MaestroTester.dragUntilVisibleto be simpler to use - Rename 
withDescendant()tocontaining() 
Native:
- Make 
Maestro.openNotifications()andMaestro.openQuickSettings()more robust 
0.3.3 #
- Make it possible to pass Flutter's 
Finderto$ - Make 
MaestroFinder.first,MaestroFinder.last,MaestroFinder.at()returnMaestroFinder, notFinder 
0.3.2 #
- 
Improve selector engine:
- Make it possible to pass a 
KeyasmatchingtoMaestroTester.call(dynamic matching)andMaestroFinder.$(dynamic matching) 
 - Make it possible to pass a 
 - 
Add
sleepparameter formaestroTestmethod - 
Make
WidgetTester's forwarded methods inMaestroTesteraccept less arguments - 
Add more in-code documentation
 
0.3.1 #
- 
Improve selector engine:
- Make it possible to pass a 
MaestroFinderasmatchingtoMaestroTester.call(dynamic matching)andMaestroFinder.$(dynamic matching) - Fix a bug which caused chaining 
MaestroFinders (e.g$(Scaffold).$(Container).$(#someText)) to not work. 
 - Make it possible to pass a 
 - 
Add more in-code documentation and improve README
 
0.3.0 #
- Add selector engine
 
0.2.0 #
- 
Introduce
Selectorclass, which can be passed intoMaestro.tap(selector). - 
Add more platform functionality:
Maestro.enableWifi()andMaestro.disableWifi()Maestro.enableCellular()andMaestro.disableCellular()Maestro.enableDarkMode()andMaestro.disableDarkMode()Maestro.getNotifications(),Maestro.getFirstNotification(), andMaestro.tapOnNotification(int index)
 - 
Make
Maestro.forTest()automatically callIntegrationTestWidgetsFlutterBinding.ensureInitialized() - 
Fix many smaller issues
 
0.1.4 #
- Allow for running on many devices simultaneously
 - Rename class 
AutomatortoMaestro - Simpified test-side initialization. Now all you need is 
Maestro.forTest() - Simpified driver-side initialization. Now all you need is
Maestro.forDriver() 
0.1.3 #
- Add support for enabling/disabling Bluetooth
 
0.1.2 #
- Be more noisy when an error occurs
 
0.1.1 #
- Fix minor logging bug
 
0.1.0 #
- Add basic means of controlling platform-native Widgets (
TextView,EditText, andButtonon Android). This also applies to WebView. - Add enabling and disabling of Wi-Fi, Cellular, and Night Mode
 - Improve stability
 
0.0.6 #
- Set minimum Dart version to 2.16
 - Fix links to 
package:leancode_lintin README 
0.0.5 #
- Update broken link in README.
 
0.0.4 #
- Update README
 
0.0.3 #
- Rename from 
maestrotomaestro_test 
0.0.2 #
- Split 
maestroandmaestro_cliinto separate packages 
0.0.1 #
- Initial version