NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #479 most downloaded on pub.dev
A powerful, multiplatform E2E UI testing framework for Flutter apps that overcomes the limitations of integration_test by handling native interactions.
Last release 18 days ago
20 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
165 releases · first in 2022
See changelog on pub.dev
See changelog on pub.dev
STATIC_BEGIN/_END pair in
RunnerUITests.m with PATROL_INTEGRATION_TEST_IOS_RUNNER_STATIC_BASE(RunnerUITests). Requires
patrol_cli 4.8.0 or newer. See the
docs.patrolTargetPlatform, for deciding whether a test is registered. (#3241)$.takeNativeScreenshot('tag') on Android. Requires
patrol_cli 4.8.0 or newer. See the
docs. (#3222)AccessibilityServices being suppressed during the test session, which regressed
in 4.8.0. Configurable with AndroidAutomatorConfig.dontSuppressAccessibilityServices. (#3227)/ crashing Android Test Orchestrator. (#3259)Failure.details being null for exceptions thrown after the test body. (#3252)pickImageFromGallery on Android API 36. (#3254)patrol develop. (#3200)One column per quarter.
See changelog on pub.dev
module 'PatrolImpl' not found under Swift Package Manager (#3177). The public patrol module no longer @imports the Swift implementation; PatrolPlugin is ObjC and macro-facing types are declared as ObjC interfaces in the umbrella, so app builds and RunnerUITests keep working with a single @import patrol / import patrol.PATROL_INTEGRATION_TEST_IOS_RUNNER_STATIC_BEGIN/_END), so each Dart test can be compiled
into a real native test instead of being registered after the app launches. (#3197)AndroidNativeView.visibleBounds always having zero height. (#3202)patrol test --coverage runs on the web platform.See changelog on pub.dev
patrol_cli --web-* flags: (#3155)
patrol develop (hot restart) mode. (#3167)Build-time test discovery (experimental) now generates one native test class per Dart test file, which renames every generated native test — regenerate any saved shard lists, native test filters or dashboard mappings. Requires patrol 4.10.0 or newer. See the docs .
Add patrol build android --develop , which builds the APKs a develop session needs so they can be handed to another machine. (#3266)
Add patrol develop --use-prebuilt-apks <dir> (Android only), which runs a develop session against those APKs instead of building with Gradle. (#3266)
Add support for a test file path in --only , which runs the whole file.
Add native screenshots on Android, enabled with screenshot_on_failure in the pubspec's patrol section and collected by patrol test into <test-directory>/screenshots . Requires patrol 4.10.0 or newer. See the docs . (#3222)
Allow the latest package_config , cli_completion and pub_updater . (#3225)
Constrain platform below 3.2.0, which ships a non-backwards-compatible API. (#3288)
Report --only entries that match nothing instead of dropping them silently.
Report a RunnerUITests.m that disagrees with the build-time discovery setting, instead of failing the build on a missing .inc .
Fix patrolTargetPlatform reporting the host's platform during build-time discovery. (#3241)
Fix patrol develop ignoring build-time test discovery.
Fix looking for the .xctestrun file in the wrong place when building iOS tests from outside the project root. (#3250)
Fix hot restart dying on flavored patrol develop , which regressed in 4.6.1. (#3223)
Fix flavored iOS patrol develop losing logs on devices and failing on simulators. (#2465, #3279)
Fix patrol develop crashing on hosts whose terminal modes can't be changed. (#3278)
See changelog on pub.dev
Bump equatable to ^2.1.0 and migrate generated platform contracts from deprecated EquatableMixin to with Equatable.
openNewPage, closePage, switchToPage, switchToInitialPage, getPages, getCurrentPage, getCurrentPageUrl, waitForPopup. (#2871)patrol develop on iOS Simulator timing out after ~6 minutes with "Test runner never began executing tests after launching". Requires a matching patrol_cli version that sets PATROL_DEVELOP. (#3139)IOSSelector has no arguments needed for creating NSPredicate for textfield. (#3053)sendKeyboardEnter in MacOSAutomator. (#3105)sendKeyboardEnter method for MobileAutomator. (#2748)equatable to ^2.1.0 and migrate generated platform contracts from deprecated EquatableMixin to with Equatable.patrol_finders to ^3.6.0.patrol_log to ^0.10.0.This version requires version 4.5.0 of patrol_cli package.
Requires patrol 4.9.0 or newer.
Pass -Ppatrol-enabled=true to Android Gradle builds so apps can detect a Patrol build.
Support running Patrol tests on multiple iOS simulators in parallel, by reading the native automation ports at runtime in the generated test bundle. See the Marathon integration guide .
Add experimental build-time test discovery, enabled with patrol.emit_test_manifest in pubspec.yaml (or --emit-test-manifest ): Dart tests are discovered while building and each one becomes a real, individually-selectable native test, which makes per-test sharding on device farms possible. (#3197)
Add patrol test-without-building , which runs the tests from a previous patrol build without rebuilding, optionally just one of them with --only . Requires build-time test discovery. (#3197)
Add --record-video flag to patrol test and patrol develop to record a video per test case (Android and iOS simulators). (#2741)
Fix patrol test / patrol develop not reading logs from iOS simulators, by streaming the simulator's log via simctl spawn . (#3198)
Nothing published for this version
Nothing published for this version
Nothing published for this version
- Fix changelog
Fix patrol develop printing "You must specify a --flavor option" on iOS/macOS projects with schemes, by passing the flavor to flutter attach .
Fail fast with a clear error instead of hanging on gradlew when the Android SDK can't be located ( sdk.dir missing from android/local.properties after the config-only build). (#3168)
Fix generated API docs links for public Patrol types.
tapBackToPreviousAppButton method to $.platform.ios. (#3015)patrol_log to ^0.9.0.patrol_finders to ^3.4.0.allowPermission method to AndroidAutomator.Download only Chromium instead of all default Playwright browsers during web runner setup. (#3156)
Fix patrol develop not reporting completion when the app shuts down before the tests finish, causing patrol_mcp to hang until its timeout. The backend exit is now detected independently of flutter attach .
Fix patrol test -d chrome failing with No devices attached on machines without a system Chrome installation. (#3172)
Add browser launch and context options for web tests: (#3155)
--web-channel
--web-executable-path
--web-slow-mo
--web-chromium-sandbox
--web-downloads-path
--web-ignore-default-args
--web-proxy
--web-browser-timeout
--web-traces-dir
--web-bypass-csp
--web-ignore-https-errors
--web-offline
--web-http-credentials
--web-extra-http-headers
--web-screenshot
--web-trace
--web-storage-state
--web-accept-downloads
Convert --web-headless to a flag. Use --web-headless / --no-web-headless instead of --web-headless true/false . The old syntax still works, but is deprecated and will be removed in a future release. (#3155)
Fix --web-* options being silently overridden by a same-named variable already set in the host shell environment when running web tests. (#3155)
Add patrol test --coverage support for the web platform, producing the same coverage/patrol_lcov.info report as mobile. Requires a debug build (the default); Chromium only.
Fix appId not being passed down on $.platform.mobile.enterText and $.platform.mobile.enterTextByIndex
appId not being passed down on $.platform.mobile.enterText and $.platform.mobile.enterTextByIndex (#2992)patrol_log to ^0.8.0.ConfigEntry.developCompletedKey.Add -weak_framework XCTest linker flags to iOS and macOS build-for-testing to support Swift Package Manager integration.
Fix patrol develop on iOS Simulator timing out after ~6 minutes with "Test runner never began executing tests after launching". Requires a matching patrol version that enables the develop-specific native test runner path. (#3139)
Fix patrol test / patrol develop hanging on Windows at gradlew :app:dependencies by also draining the gradle process stderr stream during orchestrator-version detection. (#2565)
Fix --exclude not working. (#2990)
Fix --clear-permissions being ignored by patrol build ios . The flag was wired into patrol test but dropped from build ios , so prebuilt iOS test bundles (e.g. for BrowserStack/Firebase Test Lab) never had CLEAR_PERMISSIONS enabled.
Fix wrong import path being generated on Windows for commands like patrol test -t .\patrol_test\example_test.dart .
Fix test_bundle.dart generating a broken absolute import (and an invalid import alias containing characters such as - ) when the test target lives outside the configured test_directory . The import is now computed relative to the bundle and the alias is sanitized. (#3104)
Don't listen for SIGTERM on Windows, where it is not supported and throws an unhandled SignalException . (#3035)
Bump equatable to ^2.1.0 and migrate PatrolPubspecConfig and related config classes from deprecated EquatableMixin to with Equatable .
Bump patrol_log to ^0.10.0 .
This version requires version 4.7.0 of patrol package.
Add support for emulators with API lvl 36 for pickMultipleImagesFromGallery method.
tapOnNotification on iOS physical devices to Open button when tapping on notification. (#2972)takeCameraPhoto do not accept location permission dialog on Pixel physical devices. (#2972)takeCameraPhoto on Android to use fallback button if done button is not visible. (#2974)stopMockLocation method to PlatformAutomator and make mockLocation method less flaky (#2937)Fix iOS Simulator test crash on Xcode 26.4+ caused by missing platform frameworks path in xctestrun.
Bump patrol_log to ^0.9.0 .
Add --app-name flag to override app_name from pubspec.yaml. (#2557)
Fix patrol test --coverage crashing with PathNotFoundException in Pub workspaces by resolving .dart_tool/package_config.json from the workspace root. (#2844)
Add --coverage-workspace flag to include every package declared under the workspace root's workspace: key in the coverage report.
Fix a bug when running tests with iOS and Android specific flavors based on the configuration in pubspec. (#3046)
Fix WASM compatibility by migrating conditional imports from dart.library.html to dart.library.js_interop.
dart.library.html to dart.library.js_interop. (#2960)Bump patrol_log to ^0.8.0 .
Refactor develop command into reusable components and expose public API for programmatic usage.
Reflect failed tests in Playwright report. (#2970)
Improve setup error reporting for Patrol Web failures.
tapOnNotificationByIndex and getNotifications on iOS 18+ to use consistent indexing with other systems. (#2899)AndroidAutomatorClientException instead of IosAutomatorClientException.web-browser-args. (#2932)grantPermissionWhenInUse.(#2876)tapOnNotificationBySelector to support text parameter. (#2898)patrol_log to 0.7.0. (#2917)patrol_finders to 3.1.0. (#2917)Add support for --web-port option to specify the port for the web server when running web tests with patrol test . (#2832)
Add --web-server-timeout flag to configure the web server startup timeout (default: 120s). (#2948)
Fix running devtools after moving test to patrol_test/ . (#2922)
Fix listen to stdout/stderr streams in buildApkConfigOnly to prevent hang on Windows. (#2905)
Fix bug that --exclude was not working for directories. (#2918)
Allow to pass additional web browser args through web-browser-args . (#2932)
Correctly compose devtools link on new Flutter version. (#2957)
Nothing published for this version
Add PlatformAutomator to exports.
PlatformAutomator to exports. (#2833)Fix bug when running web tests with relative imports from integration_test directory. (#2906)
Fix a bug when user set a nested test_directory (eg. test/e2e), TestFinder was searching for test files in parent directory instead of project's root. (#2858)
Add support for --no-tree-shake-icons flag in cli commands. (#2704)
Fix PATROL_FLUTTER_COMMAND not being used when building web app. (#2857)
Remove unused import in test_bundle.dart files. (#2885)
Bump patrol_log to 0.7.0 . (#2917)
- Remove dependency on js.
js. (#2831)Deprecate NativeAutomator and NativeAutomator2.
Patrol 4.0 is here!
Read the article announcing Patrol 4.0 here.
New API for native/platform interactions:
PlatformAutomator). (#2789)NativeAutomator and NativeAutomator2. (#2789)Add support for running Patrol tests on Web:
WebAutomator that handles numerous interactions with native browser:
enableDarkMode, disableDarkMode,tap,enterText,scrollTo,grantPermissions, clearPermissions,addCookie, getCookies, clearCookies,pressKey, pressKeyCombo,uploadFile, verifyFileDownloads,goBack, goForward,acceptNextDialog, dismissNextDialog,resizeWindow,setClipboard, getClipboard.--web-results-dir, --web-report-dir, --web-reporter,--web-timeout, --web-global-timeout, --web-retries,--web-workers, --web-shard,--web-video, --web-headless,--web-locale, --web-timezone, --web-color-scheme,--web-geolocation, --web-permissions,--web-user-agent, --web-viewport.Add support for configurable test directory via test_directory option in pubspec.yaml. (#2728)
Introduces experimental --full-isolation flag that uninstall the app between each run on iOS Simulator. (#2803)
Bump patrol_log to 0.6.0.
BREAKING CHANGE
integration_test to patrol_test. (#2728)This version requires version 4.0.0 of patrol_cli package.
Patrol 4.0 is here!
Read the article announcing Patrol 4.0 here .
Add support for running Patrol tests on Web:
Introduce support for web-related flags:
--web-results-dir , --web-report-dir , --web-reporter ,
--web-timeout , --web-global-timeout , --web-retries ,
--web-workers , --web-shard ,
--web-video , --web-headless ,
--web-locale , --web-timezone , --web-color-scheme ,
--web-geolocation , --web-permissions ,
--web-user-agent , --web-viewport .
Add support for configurable test directory via test_directory option in pubspec.yaml . (#2728)
Introduces experimental --full-isolation flag that uninstall the app between each run on iOS Simulator.
Bump patrol_log to 0.6.0 .
Read Patrol version from pubspec.lock instead of pubspec.yaml for compatibility checks. Fix edge cases for compatibility checks. (#2709)
BREAKING CHANGE
This version requires version 4.0.0 of patrol package.
Nothing published for this version
Nothing published for this version
Add --build-name and --build-number flags to patrol test, patrol develop, and patrol build commands.
--build-name and --build-number flags to patrol test, patrol develop, and patrol build commands. (#2590)$.native.enterText() on Android to support AutoCompleteTextView. (#1162)This version requires version 3.11.0 of patrol_cli package.
Fix logging for $.native.pullToRefresh() and $.native.swipeBack().
$.native.pullToRefresh() and $.native.swipeBack(). (#2707)$.native.enableDarkMode() and $.native.disableDarkMode() on iOS 18 simulators. (#2705)Bump minimum Dart SDK to version 3.8.0.
leancode_lint to 17.0.0.patrol_log to 0.5.0.Add pickImageFromGallery method
takeCameraPhoto method. (#2660)pickImageFromGallery method (#2660)pickMultipleImagesFromGallery (#2660)isVirtualDevice method (#2660)getOsVersion method (#2660)$.native.getNativeViews() (#2660)$.native.swipeBack() method (#2608)$.native.pullToRefresh() method (#2665)Nothing published for this version
Make activity aliases work in PatrolJUnitRunner
Nothing published for this version
Nothing published for this version
Bump vm_service dependency to 15.0.0
vm_service dependency to 15.0.0 (#2636)Bump custom_lint to 0.7.0 and leancode_lint to 14.3.0.
$.enterText() issues (#2570)setMockLocation method. (#2547)custom_lint to 0.7.0 and leancode_lint to 14.3.0. (#2574)http4k to 5.47.0.0. (#2559)Nothing published for this version
Make activity aliases work in PatrolJUnitRunner
Bump patrol plugin iOS and macOS deployment targets to 12.0.
$.native.tap() not working with Selector having instance set. (#2501)Remove exception from StepEntry. When it was too long, it caused crash because of badly formed JSON.
exception from StepEntry. When it was too long, it caused crash because of badly formed JSON. (#2481)patrol_finders and patrol_log versions.Bump patrol_finders and patrol_log - use version with patched enterText.
patrol_finders and patrol_log - use version with patched enterText. (#2468)Remove whitespace replacement on Android test name.
Add support for the patrol_log package.
patrol_log package. (#2387)patrol_finders and enable logging.This version requires version 3.4.0 of patrol_cli package.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add clear-permissions flag on ios commands.
clear-permissions flag on ios commands. (#2367)This version requires version 3.3.0 of patrol_cli package.
Bump min Flutter SDK to 3.24.0 and Dart SDK to 3.5.0
Replace whitespace in test case name in PatrolJUnitRunner.java.
PatrolJUnitRunner.java. (#2361)Add code coverage collection support.
selectFineLocation when it's already selected. (#2302)enterText and enterTextByIndex (#2312)This version requires version 3.2.0 of patrol_cli package.
Add --build-name and --build-number flags to patrol test , patrol develop , and patrol build commands. (#2590)
Fix report path generation for Android. (#2724)
Fix issue that sometimes logs causes test crashes. (#2742)
Add support for interactive device selection when running patrol. (#2722)
Fix PATROL_FLUTTER_COMMAND not being used when using --coverage flag. (#2781)
This version requires version 3.20.0 of patrol package.
Nothing published for this version
Implement enableBluetooth and disableBluetooth methods for Android > 11.
enableBluetooth and disableBluetooth methods for Android > 11. (#2254)enableAirplaneMode and disableAirplaneMode methods for Android. (#2254)enableLocation and disableLocation methods for Android. (#2259)tags and exclude-tags. (#2286)Add help command h to patrol develop . (#2701)
Add printing paths to the APKs after patrol build command. (#2685)
Add privacy manifest for Apple.
Re-land: Do not pass flavor as dart-define when building. (#2636)
Wait for generating gradlew - fix race condition (#2678)
Bump leancode_lint to 17.0.0 .
Bump patrol_log to 0.5.0 .
Bump minimum Dart SDK to version 3.8.0.
Nothing published for this version
Add openUrl(String url) method, for testing deeplinks.
openUrl(String url) method, for testing deeplinks. (#2219)pressVolumeUp and pressVolumeDown(). (#2223)Remove --wait argument from patrol develop command (#2671 & #2691)
Add support for comments in .patrol.env files. (#2653)
Skip update check when the patrol_cli binary is triggered for shell completion only (#2512)
Revert: Do not pass flavor as dart-define when building. (#2636)
Try closing system dialog when disabling wifi on iOS.
Bump test_api dependency to 0.7.0.
test_api dependency to 0.7.0.patrol_devtools_extension dependencies.Revert: Bump patrol_devtools_extension dependencies.
patrol_devtools_extension dependencies.test_api dependency to 0.7.0.Bump test_api dependency to 0.7.0.
test_api dependency to 0.7.0.patrol_devtools_extension dependencies.Bump min Flutter SDK to 3.32.0 (#2649)
Introduce check-compatibility flag to allow disabling the compatibility check. (#2649)
Nothing published for this version
Nothing published for this version
Fix clearing textfield before entering text on iOS (#2158).
Add clearing textfield before entering text on iOS (#2145).
Improve patrol test error messaging when compatibility check fails, added same compatibility check and error messaging to patrol build command (#2597)
Improve patrol update messaging by showing incompatibility warning when applicable, sharing compatibility table (#2579)
Add ability to quit the patrol develop process by pressing q on the keyboard (#2577)
Fix issue with reading logs on iOS devices in release. (#2569)
Add --ios flag to patrol test that specifies the iOS version to use. (#2540)
Bump custom_lint to 0.7.0 and leancode_lint to 14.3.0 . (#2574)
Display the name of the default device instead of its ID. (#2581)
Do not pass flavor as dart-define when building. (#2636)
Bump vm_service dependency to 15.0.0 (#2636)
Fix reporting fail cause to native on ios in release mode (#2114).
Your coding agent can read these notes before it upgrades. Set up the MCP server →