Blog Status Toggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage


ew-cli 0.9.14

  • Fixed: ew-cli no longer prints garbage to standard out when the API is completely unavailable.
  • Improved error handling for unreachable API

gradle-plugin 0.13.0

  • Bumped default ew-cli to 0.9.14
  • Added testTargets option to the Gradle plugin

run-tests GitHub action v0.9.3

  • Bumped default ew-cli to 0.9.14


ew-cli 0.9.13

  • ew-cli now prints errors in a {"error": "some error message..."} object to standard out when running with the --json flag

gradle-plugin 0.12.1, 0.12.2

  • Added a printOutput option to the Gradle plugin which will print the output of the ew-cli command to standard out. This is useful for debugging issues with the plugin without having to resort to the noisy --info flag.
  • The Gradle plugin now shuttles errors from ew-cli correctly, displaying them at build failure.
  • Bumped default ew-cli to 0.9.13

run-tests action 0.9.2

  • Added --test-targets and --display-name options to the GitHub action.
  • Bumped default ew-cli to 0.9.13


ew-cli 0.9.12

  • ew-cli now fails early if your app or test apk minSdkVersion is not supported by the selected devices. This avoids wasting time on test runs that are guaranteed to fail.


ew-cli 0.9.11

  • Tests no longer error out when a device doesn’t have a directory specified by --directories-to-pull. This avoids marking tests as errors if only some shards produce the files to be pulled.

gradle-plugin 0.12.0

  • Gradle plugin no longer adds the repository if repositoryManagement is used from the settings.gradle or settings.gradle.kts file.
  • Added a project property (wtf.emulator.addrepository=false) to bypass adding the repository completely, even if the plugin would add the repository manually. When using this you should either add the repository manually or provide the ew-cli binary in some other way.

2023-05-18 web app

  • Scaleup plan upgrade is now available to all users via self-service. You can upgrade to this plan from the billing page in the web app
  • Added GitHub SSO support. Your GitHub team members can now access your organization directly without having to go through email invites (scaleup plan only).


ew-cli 0.9.10

  • The --test-targets-for-shard option now supports all the same operators as --test-targets: class, notClass, package, notPackage, annotation, notAnnotation, size.


Test results page

  • Fixed logcat not displaying correctly for timed out tests
  • Results page now jumps to the first timeout when both timeouts and failures were encountered in a test run


Test results page

  • Fixed flaky tests not being displayed correctly if a test suite spanned multiple devices and shards

ew-cli 0.9.9

  • Added the --async flag to ew-cli which will make it return immediately after starting the test run. The test results will be posted back to GitHub when GitHub integration is used. This is useful for CI systems where you want to save build minutes by running in parallel with other tasks.

GitHub integration

  • Added an option to log in with GitHub OAuth to web UI.
  • Fixed PR comments not showing up for GitHub Actions builds triggered with the pull_request option.

gradle-plugin 0.11.0

  • Added async option to Gradle plugin which will make it return immediately after starting the test run. The test results will be posted back to GitHub when GitHub integration is used. This is useful for CI systems where you want to save build minutes by running in parallel with other tasks.
  • Bumped default ew-cli to 0.9.9

GitHub run-tests action 0.9.1

  • Added async flag to the run-tests action, behaviour is similar to the ew-cli and gradle-plugin options above.
  • Bumped default ew-cli to 0.9.9


Organization settings page

Added a new organization settings page in web UI where you can:

  • Change the organization name
  • Link the organization with GitHub to enable various GitHub features. Read more here.


LLM powered test failure explanations

  • Added an “explain this error” button to failed test cases which will analyze the failure and provide a human-readable explanation of what went wrong and how to potentially solve it.


gradle-plugin 0.10.2

  • Bumped transitive org.json dependency to latest (20230227)

gradle-plugin 0.10.1

  • Fixed java.lang.NoClassDefFoundError: org/json/JSONObject on newer AGP versions


gradle-plugin 0.10.0

  • Fixed Gradle plugin incompatibility with Gradle 8.x and 6.x versions
  • Bumped default ew-cli to 0.9.8


ew-cli 0.9.8

  • Fixed APK file too large message for –library-test inputs.
  • Bumped max APK file size to 500MiB.


Gradle plugin 0.9.5

  • Added video recording to the Gradle plugin. This is disabled by default, but can be enabled by setting the recordVideo option to false in the emulatorwtf {} project extension.
  • Bumped default ew-cli in the Gradle plugin to 0.9.7

GitHub action emulator-wtf/run-tests v0.9.0

  • Added video recording to the GitHub action. This is disabled by default, but can be enabled by setting the recordVideo option to false in the emulatorwtf {} project extension.
  • Bumped default ew-cli in the GitHub action to 0.9.7
  • Brought possible inputs roughly on par with the Gradle plugin, full list of all new input options added:
    • library-test to run library module tests (no app apk)
    • outputs to filter what gets downloaded after the test, Defaults to merged_results_xml,coverage,pulled_dirs.
    • record-video to record a video of the test run
    • timeout to increase or decrease the default 15m test timeout. Minimum 60s, maximum 3h.
    • num-balanced-shards to use sharding based on historical test runtimes.
    • side-effects - your one stop shop to disable error retries and test result caching
    • num-flaky-test-attemtps to add repeats to failed shards/jobs
    • file-cache to disable the APK & test data cache (on by default)
    • file-cache-ttl to fine-tune how long we keep APK files in the cache (1h by default)
    • test-cache to disable the test result cache



  • Added to our outbound IPs


  • Improved video recording output on NexusLowRes and Tablet10 devices
  • Fixed first few frames of video recording being too blurry
  • Added model=Pixel7 devices - an emulator resembling the Pixel 7 phone with it’s 1080x2400 resolution, full list of emulators added:
    • device=Pixel7,version=23
    • device=Pixel7,version=24
    • device=Pixel7,version=27
    • device=Pixel7,version=29
    • device=Pixel7,version=30
    • device=Pixel7,version=31
    • device=Pixel7,version=33
    • device=Pixel7Atd,version=30
    • device=Pixel7Atd,version=31


ew-cli 0.9.7

  • Fixed a bug in ew-cli --test-targets-for-shard parameter where only the first target was picked from multiple ;-separated targets


ew-cli 0.9.6

  • Fixed a regression introduced in ew-cli 0.9.5 where pulling device dirs failed with a crash when downloading the test results

gradle-plugin 0.9.3

  • Added ignoreFailures option to the emulatorwtf {} project extension, which will cause the task to not fail the build if the test run fails. This is useful for CI builds where you want to run tests on multiple subprojects and don’t want to fail the build if one subproject fails.

    NOTE: you can discover whether the build was successfuly either by checking the JUnit XML files or configure the plugin to output a JSON summary of the test result.

gradle-plugin 0.9.4

  • Bumped default ew-cli in the Gradle plugin to 0.9.6


ew-cli 0.9.5

  • We switched our minify stack from Proguard to R8, resulting in a rough 33% reduction in the size of the ew-cli binary


ew-cli 0.9.3

  • broken release due to a bug in the Proguard minified, do not use

ew-cli 0.9.4

  • reverted changes introduced in 0.9.3


ew-cli 0.9.2

  • fixed ew-cli --prepare option not working with some API token formats
  • also fixed the --prepare option always returning a non-zero exit code


gradle-plugin 0.9.2

  • the Gradle plugin now runs different application variant tests in parallel using the Gradle workers
  • the plugin now creates a testWithEmulatorWtf anchor task depending on all of the possible test tasks
  • added variantFilter {} option to the plugin to selectively disable for certain variants, example usage:
    emulatorwtf {
      // Do not generate the test task for some specific variants
      variantFilter {
        if ( == 'release') {
          enabled = false


  • fixed really annoying browser back behaviour where it was hard to return from a results link
  • fixed incorrectly displaying failed tests as flaky with some test runs


ew-cli 0.9.1

  • added --num-balanced-shards [value] for fair, historical runtime based sharding: will store historical test runtime at a single test level and will assign tests to shards in the most even way possible, leading to shorter overall test times than --num-shards or --num-uniform-shards.

gradle-plugin 0.9.1

  • bumped default ew-cli to 0.9.1
  • added numBalancedShards property for fair, historical runtime based sharding, see the ew-cli release notes above


ew-cli 0.9.0

  • breaking! ew-cli now outputs a merged JUnit result XML file that combines all of the devices and shards into a single file.

    Separate JUnit result XML files, device logcat files or captured videos are no longer downloaded by default - this helps to cut down on ew-cli runtime, especially for larger test suites with many shards. Logcat and video will
    still be captured and viewable in the web UI.

    If you need to download these (to store in your CI artifacts for example) you can revert to the old behaviour by adding --outputs results_xml,coverage,pulled_dirs,logcat,captured_video.

gradle-plugin 0.9.0

  • Bumped default ew-cli version to 0.9.0
  • Added outputTypes option to the extension DSL



  • The test results web UI now displays flaky tests with a separate icon if test was run with --num-flaky-test-attempts and there were flakes discovered
Older changes ยป