Patrol 3.0 is here!

Patrol 3.0 is the new major version of Patrol.

patrol v3 and DevTools extension#

The highlight of this release is the Patrol DevTools Extension. We created it to enhance your UI test development experience with patrol develop by making it much easier to explore the native view hierarchy. With Patrol's new DevTools extension, you can effortlessly inspect the currently visible Android/iOS views and discover their properties. This information can be then used in native selectors like $.native.tap(), eliminating the need for external tools.

Patrol is one of the first packages in the whole Flutter ecosystem to have a DevTools extension. We have started working on it as soon as the Flutter team has announced that they're working on making DevTools extensible. We immediately realized how powerful this feature is and how it can enable us to deliver better UI testing experience.

This is, of course, just the beginning, and we have plans to introduce more features in future updates of our DevTools extension.

Changes in patrol v3:#

The DevTools extension is not the only new feature in this release. Other changes include:

  • Minimum Flutter version: The minimum supported Flutter version has been bumped to 3.16 to make it compatible with a few breaking changes that were introduced to the flutter_test package that patrol and patrol_finders depend on. We hope you'll have an easy time upgrading to 3.16, but if not, you can always use Patrol v2 until you're ready to upgrade.

  • A few breaking changes:

    • The bindingType parameter has been removed from the patrolTest() function. Now, only PatrolBinding is used and it's also automatically initialized.
    • The nativeAutomation parameter has also been removed from the patrolTest() function. Now patrolTest() implies native automation and you can use patrolWidgetTest() if you don't need it.
    • PatrolTester class has been renamed to PatrolIntegrationTester. Now PatrolTester is used with patrolWidgetTest() without native automation and PatrolIntegrationTester is used with patrolTest() with native automation.
  • Patrol CLI version requirement: Patrol v3 requires Patrol CLI v2.3.0 or newer, so make sure to patrol update!

patrol_finders v2#

Along with patrol v3, we are releasing the v2 of patrol_finders. In case you missed it, we split patrol_finders from patrol a few months ago in response to our community members who loved Patrol's lean finders syntax, but weren't interested in developing integration tests. Here's the docs page about patrol_finders in case you missed it.

Changes in patrol_finders v2:#

  • Minimum Flutter version: The minimum supported Flutter version of patrol_finders has been bumped to 3.16, just like in patrol's case.
  • The deprecated andSettle method has been removed from all PatrolTester and PatrolFinder methods like tap(), enterText(), and so on. Developers should now use settlePolicy as a replacement, which has been available since June.
  • The default settlePolicy has been changed to SettlePolicy.trySettle.

Wrapping up#

As you can see, these updates have a little bit of everything - a large new feature, support for the latest Flutter version, and a clean-up of a few deprecations. We encourage you to explore our new DevTools extension and look forward to your feedback and ideas for new features as we continue to evolve the Patrol ecosystem. Meanwhile, we're getting back to work on Patrol, with a single goal in mind – to make it the go-to UI testing framework for Flutter apps.