patrol 3.9.0-dev.1
patrol: ^3.9.0-dev.1 copied to clipboard
Powerful Flutter-native UI testing framework overcoming limitations of existing Flutter testing tools. Ready for action!
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.flutter-io.cn 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.flutter-io.cn (#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.flutter-io.cn (#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