patrol
A powerful, multiplatform E2E UI testing framework for Flutter apps that overcomes the limitations of integration_test by handling native interactions.
4.9.0
458K downloads/mo
#542 most downloaded on pub.dev
leancodepl/patrol
What this package is like to depend on
Last release 11 days ago
12 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 124 of 125 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
163 releases · first in 2022
20 releases in the last 12 months
see the full history below
Release timeline
163 releases · Sep 2022 to Aug 2026Releases
latest 60 of 163-
4.9.012 Aug 2026Release notes
Open source →- Fix macOS builds failing with
module 'PatrolImpl' not foundunder Swift Package Manager (#3177). The publicpatrolmodule no longer@imports the Swift implementation;PatrolPluginis 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. - Add Marathon integration for running Patrol tests on Android and iOS simulators. See the Marathon integration guide.
- Support build-time test discovery: add the static iOS runner macros
(
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) - Fix
AndroidNativeView.visibleBoundsalways having zero height. (#3202) - Collect Chrome JavaScript coverage in the web runner when
patrol test --coverageruns on the web platform.
- Fix macOS builds failing with
-
4.8.024 Jul 2026Release notes
Open source →- Wire additional Playwright browser launch and context options into the web runner config, configurable through the matching
patrol_cli--web-*flags: (#3155)- channel
- executable path
- slow-mo
- Chromium sandbox
- downloads path
- ignore default args
- proxy
- browser timeout
- traces dir
- bypass CSP
- ignore HTTPS errors
- offline
- HTTP credentials
- extra HTTP headers
- screenshot
- trace
- storage state
- accept downloads
- Add support for Patrol extensions. (#3160)
- Bump ktor packages. (#3187)
- Fix incorrect test description in the failure log entry when a test fails in
patrol develop(hot restart) mode. (#3167)
- Wire additional Playwright browser launch and context options into the web runner config, configurable through the matching
-
4.7.114 Jul 2026 -
4.7.013 Jul 2026Release notes
Open source →- Add Swift Package Manager (SPM) support for iOS and macOS. CocoaPods remains supported for projects that have not migrated to SPM.
- Fix iOS/macOS regular app builds failing with undefined XCTest symbols when using SPM.
- Add multi-tab browser support for web tests:
openNewPage,closePage,switchToPage,switchToInitialPage,getPages,getCurrentPage,getCurrentPageUrl,waitForPopup. (#2871) - Fix
patrol developon iOS Simulator timing out after ~6 minutes with "Test runner never began executing tests after launching". Requires a matchingpatrol_cliversion that setsPATROL_DEVELOP. (#3139) - Fix iOS tests failing on devices whose name contains a comma.
- Fix a crash when an
IOSSelectorhas no arguments needed for creatingNSPredicatefor textfield. (#3053) - Fix macOS build by implementing
sendKeyboardEnterinMacOSAutomator. (#3105) - Add
sendKeyboardEntermethod forMobileAutomator. (#2748) - Add Japanese (ja) language support for native OS interactions.
- Migrate Japanese text resources to SPM (#3128)
- Use HttpMultiServer and Ktor for handling raw HTTP requests. (#2645)
- Migrate to built-in Kotlin (#3084).
- Bump
equatableto^2.1.0and migrate generated platform contracts from deprecatedEquatableMixintowith Equatable. - Bump
patrol_findersto^3.6.0. - Bump
patrol_logto^0.10.0.
This version requires version
4.5.0ofpatrol_clipackage.Release notes
Open source →-
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)
-
4.7.0-dev.309 Jul 2026 pre-releaseNothing published for this version
-
4.7.0-dev.206 Jul 2026 pre-releaseNothing published for this version
-
4.7.0-dev.119 Jun 2026 pre-releaseNothing published for this version
-
4.6.126 May 2026Release notes
Open source →-
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)
-
-
4.6.021 May 2026Release notes
Open source →- Fix generated API docs links for public Patrol types.
- Add
tapBackToPreviousAppButtonmethod to$.platform.ios. (#3015) - Bump
patrol_logto^0.9.0. - Bump
patrol_findersto^3.4.0. - Add
allowPermissionmethod toAndroidAutomator.
Release notes
Open source →-
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.
-
4.5.025 Mar 2026Release notes
Open source →- Fix
appIdnot being passed down on$.platform.mobile.enterTextand$.platform.mobile.enterTextByIndex(#2992) - Bump
patrol_logto^0.8.0. - Signal develop session completion via
ConfigEntry.developCompletedKey.
Release notes
Open source →-
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.
- Fix
-
4.4.024 Mar 2026Release notes
Open source →- Add support for emulators with API lvl 36 for pickMultipleImagesFromGallery method. (#2977)
- Fix
tapOnNotificationon iOS physical devices to Open button when tapping on notification. (#2972) - Fix
takeCameraPhotodo not accept location permission dialog on Pixel physical devices. (#2972) - Fix
takeCameraPhotoon Android to use fallback button if done button is not visible. (#2974) - Reflect failed tests in Playwright report. (#2970)
- Add
stopMockLocationmethod toPlatformAutomatorand make mockLocation method less flaky (#2937) - Fix matching test entries to produce test summary. (#2998)
Release notes
Open source →-
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)
-
4.3.006 Mar 2026Release notes
Open source →- Fix WASM compatibility by migrating conditional imports from
dart.library.htmltodart.library.js_interop. (#2960)
Release notes
Open source →-
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)
- Fix WASM compatibility by migrating conditional imports from
-
4.2.004 Mar 2026Release notes
Open source →- Improve setup error reporting for Patrol Web failures. (#2928)
- Fix
tapOnNotificationByIndexandgetNotificationson iOS 18+ to use consistent indexing with other systems. (#2899) - Fix Android native automator error logs to use
AndroidAutomatorClientExceptioninstead ofIosAutomatorClientException. - Allow to pass additional web browser args through
web-browser-args. (#2932)
4.1.1
- Fix Android permission dialog not being tapped with
grantPermissionWhenInUse.(#2876) - Fix iOS
tapOnNotificationBySelectorto supporttextparameter. (#2898) - Bump
patrol_logto0.7.0. (#2917) - Bump
patrol_findersto3.1.0. (#2917)
Release notes
Open source →-
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)
-
4.1.109 Feb 2026Nothing published for this version
-
4.1.023 Dec 2025Release notes
Open source →-
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)
-
-
4.0.110 Dec 2025 -
4.0.008 Dec 2025Release notes
Open source →Patrol 4.0 is here!
Read the article announcing Patrol 4.0 here.
-
New API for native/platform interactions:
- Introduce new way of communicating with platform (
PlatformAutomator). (#2789) - Deprecate
NativeAutomatorandNativeAutomator2. (#2789)
- Introduce new way of communicating with platform (
-
Add support for running Patrol tests on Web:
- Create
WebAutomatorthat 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.
- 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.
- Create
-
Add support for configurable test directory via
test_directoryoption inpubspec.yaml. (#2728) -
Introduces experimental
--full-isolationflag that uninstall the app between each run on iOS Simulator. (#2803) -
Bump
patrol_logto0.6.0. -
BREAKING CHANGE
- Change default test directory from
integration_testtopatrol_test. (#2728)
- Change default test directory from
This version requires version
4.0.0ofpatrol_clipackage.Release notes
Open source →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
- Change default test directory from integration_test to patrol_test . (#2728)
This version requires version 4.0.0 of patrol package.
-
-
4.0.0-dev.205 Dec 2025 pre-releaseNothing published for this version
-
4.0.0-dev.101 Dec 2025 pre-releaseNothing published for this version
-
3.20.014 Nov 2025Release notes
Open source →- Add
--build-nameand--build-numberflags topatrol test,patrol develop, andpatrol buildcommands. (#2590) - Extend
$.native.enterText()on Android to supportAutoCompleteTextView. (#1162) - Add support for enabling/disabling wifi on iOS 18. (#2719)
This version requires version 3.11.0 of
patrol_clipackage. - Add
-
3.19.005 Aug 2025Release notes
Open source →- 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)
- Fix logging for
-
3.18.022 Jul 2025Release notes
Open source →- Bump
leancode_lintto17.0.0. - Bump
patrol_logto0.5.0. - Bump minimum Dart SDK to version 3.8.0.
- Bump
-
3.17.007 Jul 2025Release notes
Open source →- 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)
- Add
-
3.16.1-dev.112 Jun 2025 pre-releaseNothing published for this version
-
3.16.017 Jun 2025Release notes
Open source →- 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.16.0-dev.210 Jun 2025 pre-releaseNothing published for this version
-
3.16.0-dev.106 May 2025 pre-releaseNothing published for this version
-
3.15.222 May 2025 -
3.15.126 Mar 2025Release notes
Open source →- Fix
$.enterText()issues (#2570) - Add
setMockLocationmethod. (#2547) - Bump
custom_lintto0.7.0andleancode_lintto14.3.0. (#2574) - Upgrade
http4kto 5.47.0.0. (#2559)
- Fix
-
3.15.1-dev.123 Mar 2025 pre-releaseNothing published for this version
-
3.14.209 Jun 2025 -
3.14.127 Feb 2025Release notes
Open source →- 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.017 Jan 2025Release notes
Open source →- 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)
- Remove
-
3.13.223 Dec 2024Release notes
Open source →- Bump
patrol_findersandpatrol_log- use version with patched enterText. (#2468)
- Bump
-
3.13.106 Dec 2024 -
3.13.022 Nov 2024Release notes
Open source →- 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_clipackage. - Add support for the
-
3.13.0-dev.420 Nov 2024 pre-releaseNothing published for this version
-
3.13.0-dev.314 Nov 2024 pre-releaseNothing published for this version
-
3.13.0-dev.209 Nov 2024 pre-releaseNothing published for this version
-
3.13.0-dev.108 Nov 2024 pre-releaseNothing published for this version
-
3.12.005 Nov 2024Release notes
Open source →- Add
clear-permissionsflag on ios commands. (#2367)
This version requires version 3.3.0 of
patrol_clipackage. - Add
-
3.11.221 Oct 2024 -
3.11.108 Oct 2024 -
3.11.018 Sep 2024Release notes
Open source →- 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_clipackage.Release notes
Open source →-
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.
-
3.11.0-dev.109 Sep 2024 pre-releaseNothing published for this version
-
3.10.007 Aug 2024Release notes
Open source →- 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)
Release notes
Open source →-
Add help command h to patrol develop . (#2701)
-
Add printing paths to the APKs after patrol build command. (#2685)
- Implement
-
3.9.025 Jun 2024Release notes
Open source →- 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.
Release notes
Open source →-
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.
-
3.9.0-dev.120 Jun 2024 pre-releaseNothing published for this version
-
3.8.013 Jun 2024Release notes
Open source →- Add
openUrl(String url)method, for testing deeplinks. (#2219) - Add
pressVolumeUpandpressVolumeDown(). (#2223)
Release notes
Open source →-
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)
- Add
-
3.7.306 Jun 2024 -
3.7.223 May 2024Release notes
Open source →- Bump
test_apidependency to 0.7.0. - Bump
patrol_devtools_extensiondependencies. - Bump min Flutter SDK to 3.22
- Bump
-
3.7.123 May 2024Release notes
Open source →- Revert: Bump
patrol_devtools_extensiondependencies. - Revert: Bump
test_apidependency to 0.7.0.
- Revert: Bump
-
3.7.020 May 2024Release notes
Open source →- Bump
test_apidependency to 0.7.0. - Bump
patrol_devtools_extensiondependencies. - Support customization of doubleTap delay (Android only). (#2165)
Release notes
Open source →-
Bump min Flutter SDK to 3.32.0 (#2649)
-
Introduce check-compatibility flag to allow disabling the compatibility check. (#2649)
- Bump
-
3.7.0-dev.214 May 2024 pre-releaseNothing published for this version
-
3.7.0-dev.122 Apr 2024 pre-releaseNothing published for this version
-
3.6.128 Mar 2024 -
3.6.018 Mar 2024Release notes
Open source →- 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).
Release notes
Open source →-
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)
-
3.5.219 Feb 2024 -
3.5.116 Feb 2024Release notes
Open source →- Make more
Selectorproperties work on iOS (#2030). - Fix handling denying Android permissions when invoked second time (#2112).
Release notes
Open source →-
Gracefully handle when analytics fail to send. (#2460)
-
Handle uninstallation of the app after tests finish when using AGP 8.2+. (#2535)
-
Add --coverage-packages flag to patrol test that specifies which packages should be included in the coverage report. (#2536)
-
Fix skipping tests with coverage collection enabled. (#2539)
- Make more
-
3.5.030 Jan 2024Release notes
Open source →- 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).
Release notes
Open source →-
Add PATROL_ANALYTICS_ENABLED environment variable to disable analytics. (#2483)
-
Enable analytics by default. (#2483)