docs: update docs (#916)

* fix: re-run script

* test: fix noxfile
diff --git a/docs/dyn/testing_v1.projects.testMatrices.html b/docs/dyn/testing_v1.projects.testMatrices.html
index f9f6fb0..2127e7c 100644
--- a/docs/dyn/testing_v1.projects.testMatrices.html
+++ b/docs/dyn/testing_v1.projects.testMatrices.html
@@ -134,10 +134,6 @@
 { # TestMatrix captures all details about a test. It contains the environment
       # configuration, test specification, test executions and overall state and
       # outcome.
-    "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
-        # Only useful for matrices in the INVALID state.
-    "outcomeSummary": "A String", # Output Only. The overall outcome of the test.
-        # Only set when the test matrix state is FINISHED.
     "testSpecification": { # A description of how to run the test. # Required. How to run the test.
       "iosXcTest": { # A test of an iOS application that uses the XCTest framework. # An iOS XCTest, via an .xctestrun file.
           # Xcode supports the option to "build for testing", which generates an
@@ -170,15 +166,15 @@
       "iosTestLoop": { # A test of an iOS application that implements one or more game loop scenarios. # An iOS application with a test loop.
           # This test type accepts an archived application (.ipa file) and a list of
           # integer scenarios that will be executed on the app sequentially.
+        "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
+            # single scenario 0 if unspecified.
+          42,
+        ],
         "appBundleId": "A String", # Output only. The bundle id for the application under test.
         "appIpa": { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
             "gcsPath": "A String", # A path to a file in Google Cloud Storage.
                 # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
           },
-        "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
-            # single scenario 0 if unspecified.
-          42,
-        ],
       },
       "testTimeout": "A String", # Max time a test execution is allowed to run before it is
           # automatically cancelled.
@@ -189,162 +185,6 @@
             # NETWORK_CONFIGURATION environment type when calling
             # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
       },
-      "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
-          # or physical Android Device, finding culprits and crashes as it goes.
-        "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
-            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-          },
-        "appPackageId": "A String", # The java package for the application under test.
-            # The default value is determined by examining the application's manifest.
-        "startingIntents": [ # The intents used to launch the app for the crawl.
-            # If none are provided, then the main launcher activity is launched.
-            # If some are provided, then only those provided are launched (the main
-            # launcher activity must be provided explicitly).
-          { # Message for specifying the start activities to crawl.
-            "timeout": "A String", # Timeout in seconds for each intent.
-            "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
-              "action": "A String", # Action name.
-                  # Required for START_ACTIVITY.
-              "uri": "A String", # URI for the action.
-              "categories": [ # Intent categories to set on the intent.
-                "A String",
-              ],
-            },
-            "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
-            },
-          },
-        ],
-        "appInitialActivity": "A String", # The initial activity that should be used to start the app.
-        "maxSteps": 42, # The max number of steps Robo can execute.
-            # Default is no limit.
-        "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-            # a base module directory, zero or more dynamic feature module directories.
-            # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-            # building App Bundles.
-          "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-            },
-        },
-        "roboDirectives": [ # A set of directives Robo should apply during the crawl.
-            # This allows users to customize the crawl. For example, the username and
-            # password for a test account can be provided.
-          { # Directs Robo to interact with a specific UI element if it is encountered
-              # during the crawl. Currently, Robo can perform text entry or element click.
-            "actionType": "A String", # Required. The type of action that Robo should perform on the specified
-                # element.
-            "resourceName": "A String", # Required. The android resource name of the target UI element.
-                # For example,
-                #    in Java: R.string.foo
-                #    in xml: @string/foo
-                # Only the "foo" part is needed.
-                # Reference doc:
-                # https://developer.android.com/guide/topics/resources/accessing-resources.html
-            "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
-                # treated as a CLICK on the element matching the resource_name.
-          },
-        ],
-        "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
-            # for the crawl.
-            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-          },
-        "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
-            # 2 to make Robo explore the app beyond the first activity.
-            # Default is 50.
-      },
-      "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
-          # scripts.
-        "systrace": { # Systrace configuration for the run.
-            # If set a systrace will be taken, starting on test start and lasting for the
-            # configured duration. The systrace file thus obtained is put in the results
-            # bucket together with the other artifacts from the run.
-          "durationSeconds": 42, # Systrace duration in seconds.
-              # Should be between 1 and 30 seconds. 0 disables systrace.
-        },
-        "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
-          "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
-              # If set, the service automatically generates a Google test account and adds
-              # it to the device, before executing the test. Note that test accounts might be
-              # reused.
-              # Many applications show their full set of functionalities when an account is
-              # present on the device. Logging into the device with these generated accounts
-              # allows testing more functionalities.
-          },
-        },
-        "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
-            # they must be absolute paths under /sdcard or /data/local/tmp.
-            # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
-            #
-            # Note: The paths /sdcard and /data will be made available and treated as
-            # implicit path substitutions. E.g. if /sdcard on a particular device does
-            # not map to external storage, the system will replace it with the external
-            # storage path prefix for that device.
-          "A String",
-        ],
-        "networkProfile": "A String", # The network traffic profile used for running the test.
-            # Available network profiles can be queried by using the
-            # NETWORK_CONFIGURATION environment type when calling
-            # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
-        "environmentVariables": [ # Environment variables to set for the test (only applicable for
-            # instrumentation tests).
-          { # A key-value pair passed as an environment variable to the test.
-            "value": "A String", # Value for the environment variable.
-            "key": "A String", # Key for the environment variable.
-          },
-        ],
-        "additionalApks": [ # APKs to install in addition to those being directly tested.
-            # Currently capped at 100.
-          { # An Android package file to install.
-            "packageName": "A String", # The java package for the APK to be installed.
-                # Value is determined by examining the application's manifest.
-            "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
-                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-          },
-        ],
-        "filesToPush": [ # List of files to push to the device before starting the test.
-          { # A single device file description.
-            "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
-              "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-              "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
-                  # Android
-                  # e.g. [main|patch].0300110.com.example.android.obb
-                  # which will be installed into
-                  #   \<shared-storage\>/Android/obb/\<package-name\>/
-                  # on the device.
-            },
-            "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
-              "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
-                  # whitelisted path. If the file exists, it will be replaced.
-                  # The following device-side directories and any of their subdirectories are
-                  # whitelisted:
-                  # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
-                  # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
-                  # <p>Specifying a path outside of these directory trees is invalid.
-                  #
-                  # <p> The paths /sdcard and /data will be made available and treated as
-                  # implicit path substitutions. E.g. if /sdcard on a particular device does
-                  # not map to external storage, the system will replace it with the external
-                  # storage path prefix for that device and copy the file there.
-                  #
-                  # <p> It is strongly advised to use the <a href=
-                  # "http://developer.android.com/reference/android/os/Environment.html">
-                  # Environment API</a> in app and test code to access files on the device in a
-                  # portable way.
-              "content": { # A reference to a file, used for user inputs. # Required. The source file.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-            },
-          },
-        ],
-      },
       "androidTestLoop": { # A test of an Android Application with a Test Loop. # An Android Application with a Test Loop.
           # The intent \<intent-name\> will be implicitly added, since Games is the only
           # user of this api, for the time being.
@@ -378,6 +218,162 @@
           "A String",
         ],
       },
+      "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
+          # scripts.
+        "filesToPush": [ # List of files to push to the device before starting the test.
+          { # A single device file description.
+            "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
+              "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
+                  # Android
+                  # e.g. [main|patch].0300110.com.example.android.obb
+                  # which will be installed into
+                  #   \<shared-storage\>/Android/obb/\<package-name\>/
+                  # on the device.
+              "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+            },
+            "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
+              "content": { # A reference to a file, used for user inputs. # Required. The source file.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
+                  # whitelisted path. If the file exists, it will be replaced.
+                  # The following device-side directories and any of their subdirectories are
+                  # whitelisted:
+                  # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
+                  # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
+                  # <p>Specifying a path outside of these directory trees is invalid.
+                  #
+                  # <p> The paths /sdcard and /data will be made available and treated as
+                  # implicit path substitutions. E.g. if /sdcard on a particular device does
+                  # not map to external storage, the system will replace it with the external
+                  # storage path prefix for that device and copy the file there.
+                  #
+                  # <p> It is strongly advised to use the <a href=
+                  # "http://developer.android.com/reference/android/os/Environment.html">
+                  # Environment API</a> in app and test code to access files on the device in a
+                  # portable way.
+            },
+          },
+        ],
+        "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
+          "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
+              # If set, the service automatically generates a Google test account and adds
+              # it to the device, before executing the test. Note that test accounts might be
+              # reused.
+              # Many applications show their full set of functionalities when an account is
+              # present on the device. Logging into the device with these generated accounts
+              # allows testing more functionalities.
+          },
+        },
+        "systrace": { # Systrace configuration for the run.
+            # If set a systrace will be taken, starting on test start and lasting for the
+            # configured duration. The systrace file thus obtained is put in the results
+            # bucket together with the other artifacts from the run.
+          "durationSeconds": 42, # Systrace duration in seconds.
+              # Should be between 1 and 30 seconds. 0 disables systrace.
+        },
+        "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
+            # they must be absolute paths under /sdcard or /data/local/tmp.
+            # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+            #
+            # Note: The paths /sdcard and /data will be made available and treated as
+            # implicit path substitutions. E.g. if /sdcard on a particular device does
+            # not map to external storage, the system will replace it with the external
+            # storage path prefix for that device.
+          "A String",
+        ],
+        "networkProfile": "A String", # The network traffic profile used for running the test.
+            # Available network profiles can be queried by using the
+            # NETWORK_CONFIGURATION environment type when calling
+            # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+        "environmentVariables": [ # Environment variables to set for the test (only applicable for
+            # instrumentation tests).
+          { # A key-value pair passed as an environment variable to the test.
+            "value": "A String", # Value for the environment variable.
+            "key": "A String", # Key for the environment variable.
+          },
+        ],
+        "additionalApks": [ # APKs to install in addition to those being directly tested.
+            # Currently capped at 100.
+          { # An Android package file to install.
+            "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+            "packageName": "A String", # The java package for the APK to be installed.
+                # Value is determined by examining the application's manifest.
+          },
+        ],
+      },
+      "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
+          # or physical Android Device, finding culprits and crashes as it goes.
+        "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
+            # 2 to make Robo explore the app beyond the first activity.
+            # Default is 50.
+        "appPackageId": "A String", # The java package for the application under test.
+            # The default value is determined by examining the application's manifest.
+        "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
+            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+          },
+        "startingIntents": [ # The intents used to launch the app for the crawl.
+            # If none are provided, then the main launcher activity is launched.
+            # If some are provided, then only those provided are launched (the main
+            # launcher activity must be provided explicitly).
+          { # Message for specifying the start activities to crawl.
+            "timeout": "A String", # Timeout in seconds for each intent.
+            "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
+              "uri": "A String", # URI for the action.
+              "categories": [ # Intent categories to set on the intent.
+                "A String",
+              ],
+              "action": "A String", # Action name.
+                  # Required for START_ACTIVITY.
+            },
+            "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
+            },
+          },
+        ],
+        "maxSteps": 42, # The max number of steps Robo can execute.
+            # Default is no limit.
+        "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+        "roboDirectives": [ # A set of directives Robo should apply during the crawl.
+            # This allows users to customize the crawl. For example, the username and
+            # password for a test account can be provided.
+          { # Directs Robo to interact with a specific UI element if it is encountered
+              # during the crawl. Currently, Robo can perform text entry or element click.
+            "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                # element.
+            "resourceName": "A String", # Required. The android resource name of the target UI element.
+                # For example,
+                #    in Java: R.string.foo
+                #    in xml: @string/foo
+                # Only the "foo" part is needed.
+                # Reference doc:
+                # https://developer.android.com/guide/topics/resources/accessing-resources.html
+            "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
+                # treated as a CLICK on the element matching the resource_name.
+          },
+        ],
+        "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+            # a base module directory, zero or more dynamic feature module directories.
+            # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+            # building App Bundles.
+          "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+        },
+        "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
+            # for the crawl.
+            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+          },
+      },
       "androidInstrumentationTest": { # A test of an Android application that can control an Android component # An Android instrumentation test.
           # independently of its normal lifecycle.
           # Android instrumentation tests run an application APK and test APK inside the
@@ -387,6 +383,15 @@
           #
           # See <http://developer.android.com/tools/testing/testing_android.html> for
           # more information on types of Android tests.
+        "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+            # a base module directory, zero or more dynamic feature module directories.
+            # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+            # building App Bundles.
+          "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+        },
         "orchestratorOption": "A String", # The option of whether running each test within its own invocation of
             # instrumentation with Android Test Orchestrator or not.
             # ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
@@ -401,15 +406,6 @@
             # for more information about Android Test Orchestrator.
             #
             # If not set, the test will be run without the orchestrator.
-        "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-            # a base module directory, zero or more dynamic feature module directories.
-            # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-            # building App Bundles.
-          "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-            },
-        },
         "testTargets": [ # Each target must be fully qualified with the package name or class name,
             # in one of these formats:
             #  - "package package_name"
@@ -426,6 +422,13 @@
         "testRunnerClass": "A String", # The InstrumentationTestRunner class.
             # The default value is determined by examining the application's manifest.
         "shardingOption": { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
+          "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
+              #
+              # For Instrumentation test, it will be translated to “-e numShard” “-e
+              # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
+              # specifying these sharding arguments via environment_variables is invalid.
+            "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
+          },
           "manualSharding": { # Shards test cases into the specified groups of packages, classes, and/or # Shards test cases into the specified groups of packages, classes, and/or
               # methods.
               # methods.
@@ -445,13 +448,6 @@
               },
             ],
           },
-          "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
-              #
-              # For Instrumentation test, it will be translated to “-e numShard” “-e
-              # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
-              # specifying these sharding arguments via environment_variables is invalid.
-            "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
-          },
         },
         "testPackageId": "A String", # The java package for the test to be executed.
             # The default value is determined by examining the application's manifest.
@@ -486,32 +482,6 @@
     "testExecutions": [ # Output only. The list of test executions that the service creates for
         # this matrix.
       { # A single test executed in a single environment.
-        "timestamp": "A String", # Output only. The time this test execution was initially created.
-        "shard": { # Output only. Details about the shard. # Output only. Details about the shard.
-          "shardIndex": 42, # Output only. The index of the shard among all the shards.
-          "testTargetsForShard": { # Test targets for a shard. # Output only. Test targets for each shard.
-            "testTargets": [ # Group of packages, classes, and/or test methods to be run for each shard.
-                # The targets need to be specified in AndroidJUnitRunner argument format. For
-                # example, “package com.my.packages” “class com.my.package.MyClass”.
-                #
-                # The number of shard_test_targets must be greater than 0.
-              "A String",
-            ],
-          },
-          "numShards": 42, # Output only. The total number of shards.
-        },
-        "matrixId": "A String", # Output only. Id of the containing TestMatrix.
-        "testDetails": { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
-          "progressMessages": [ # Output only. Human-readable, detailed descriptions of the test's progress.
-              # For example: "Provisioning a device", "Starting Test".
-              #
-              # During the course of execution new data may be appended
-              # to the end of progress_messages.
-            "A String",
-          ],
-          "errorMessage": "A String", # Output only. If the TestState is ERROR, then this string will contain
-              # human-readable details about the error.
-        },
         "environment": { # The environment in which the test is run. # Output only. How the host machine(s) are configured.
           "iosDevice": { # A single iOS device. # An iOS device which must be used with an iOS test.
             "orientation": "A String", # Required. How the device is oriented during the test.
@@ -524,14 +494,14 @@
                 # Use the TestEnvironmentDiscoveryService to get supported options.
           },
           "androidDevice": { # A single Android device. # An Android device which must be used with an Android test.
-            "androidModelId": "A String", # Required. The id of the Android device to be used.
-                # Use the TestEnvironmentDiscoveryService to get supported options.
-            "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
-                # Use the TestEnvironmentDiscoveryService to get supported options.
             "orientation": "A String", # Required. How the device is oriented during the test.
                 # Use the TestEnvironmentDiscoveryService to get supported options.
             "locale": "A String", # Required. The locale the test device used for testing.
                 # Use the TestEnvironmentDiscoveryService to get supported options.
+            "androidModelId": "A String", # Required. The id of the Android device to be used.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+            "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
           },
         },
         "state": "A String", # Output only. Indicates the current progress of the test execution
@@ -539,10 +509,10 @@
         "toolResultsStep": { # Represents a tool results step resource. # Output only. Where the results for this execution are written.
             #
             # This has the results of a TestExecution.
-          "executionId": "A String", # Output only. A tool results execution ID.
-          "stepId": "A String", # Output only. A tool results step ID.
           "projectId": "A String", # Output only. The cloud project that owns the tool results step.
           "historyId": "A String", # Output only. A tool results history ID.
+          "executionId": "A String", # Output only. A tool results execution ID.
+          "stepId": "A String", # Output only. A tool results step ID.
         },
         "projectId": "A String", # Output only. The cloud project that owns the test execution.
         "testSpecification": { # A description of how to run the test. # Output only. How to run the test.
@@ -577,15 +547,15 @@
           "iosTestLoop": { # A test of an iOS application that implements one or more game loop scenarios. # An iOS application with a test loop.
               # This test type accepts an archived application (.ipa file) and a list of
               # integer scenarios that will be executed on the app sequentially.
+            "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
+                # single scenario 0 if unspecified.
+              42,
+            ],
             "appBundleId": "A String", # Output only. The bundle id for the application under test.
             "appIpa": { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
                 "gcsPath": "A String", # A path to a file in Google Cloud Storage.
                     # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
               },
-            "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
-                # single scenario 0 if unspecified.
-              42,
-            ],
           },
           "testTimeout": "A String", # Max time a test execution is allowed to run before it is
               # automatically cancelled.
@@ -596,162 +566,6 @@
                 # NETWORK_CONFIGURATION environment type when calling
                 # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
           },
-          "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
-              # or physical Android Device, finding culprits and crashes as it goes.
-            "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
-                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-            "appPackageId": "A String", # The java package for the application under test.
-                # The default value is determined by examining the application's manifest.
-            "startingIntents": [ # The intents used to launch the app for the crawl.
-                # If none are provided, then the main launcher activity is launched.
-                # If some are provided, then only those provided are launched (the main
-                # launcher activity must be provided explicitly).
-              { # Message for specifying the start activities to crawl.
-                "timeout": "A String", # Timeout in seconds for each intent.
-                "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
-                  "action": "A String", # Action name.
-                      # Required for START_ACTIVITY.
-                  "uri": "A String", # URI for the action.
-                  "categories": [ # Intent categories to set on the intent.
-                    "A String",
-                  ],
-                },
-                "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
-                },
-              },
-            ],
-            "appInitialActivity": "A String", # The initial activity that should be used to start the app.
-            "maxSteps": 42, # The max number of steps Robo can execute.
-                # Default is no limit.
-            "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-                # a base module directory, zero or more dynamic feature module directories.
-                # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-                # building App Bundles.
-              "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-            },
-            "roboDirectives": [ # A set of directives Robo should apply during the crawl.
-                # This allows users to customize the crawl. For example, the username and
-                # password for a test account can be provided.
-              { # Directs Robo to interact with a specific UI element if it is encountered
-                  # during the crawl. Currently, Robo can perform text entry or element click.
-                "actionType": "A String", # Required. The type of action that Robo should perform on the specified
-                    # element.
-                "resourceName": "A String", # Required. The android resource name of the target UI element.
-                    # For example,
-                    #    in Java: R.string.foo
-                    #    in xml: @string/foo
-                    # Only the "foo" part is needed.
-                    # Reference doc:
-                    # https://developer.android.com/guide/topics/resources/accessing-resources.html
-                "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
-                    # treated as a CLICK on the element matching the resource_name.
-              },
-            ],
-            "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
-                # for the crawl.
-                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-            "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
-                # 2 to make Robo explore the app beyond the first activity.
-                # Default is 50.
-          },
-          "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
-              # scripts.
-            "systrace": { # Systrace configuration for the run.
-                # If set a systrace will be taken, starting on test start and lasting for the
-                # configured duration. The systrace file thus obtained is put in the results
-                # bucket together with the other artifacts from the run.
-              "durationSeconds": 42, # Systrace duration in seconds.
-                  # Should be between 1 and 30 seconds. 0 disables systrace.
-            },
-            "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
-              "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
-                  # If set, the service automatically generates a Google test account and adds
-                  # it to the device, before executing the test. Note that test accounts might be
-                  # reused.
-                  # Many applications show their full set of functionalities when an account is
-                  # present on the device. Logging into the device with these generated accounts
-                  # allows testing more functionalities.
-              },
-            },
-            "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
-                # they must be absolute paths under /sdcard or /data/local/tmp.
-                # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
-                #
-                # Note: The paths /sdcard and /data will be made available and treated as
-                # implicit path substitutions. E.g. if /sdcard on a particular device does
-                # not map to external storage, the system will replace it with the external
-                # storage path prefix for that device.
-              "A String",
-            ],
-            "networkProfile": "A String", # The network traffic profile used for running the test.
-                # Available network profiles can be queried by using the
-                # NETWORK_CONFIGURATION environment type when calling
-                # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
-            "environmentVariables": [ # Environment variables to set for the test (only applicable for
-                # instrumentation tests).
-              { # A key-value pair passed as an environment variable to the test.
-                "value": "A String", # Value for the environment variable.
-                "key": "A String", # Key for the environment variable.
-              },
-            ],
-            "additionalApks": [ # APKs to install in addition to those being directly tested.
-                # Currently capped at 100.
-              { # An Android package file to install.
-                "packageName": "A String", # The java package for the APK to be installed.
-                    # Value is determined by examining the application's manifest.
-                "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
-                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
-            ],
-            "filesToPush": [ # List of files to push to the device before starting the test.
-              { # A single device file description.
-                "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
-                  "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
-                      "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                    },
-                  "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
-                      # Android
-                      # e.g. [main|patch].0300110.com.example.android.obb
-                      # which will be installed into
-                      #   \<shared-storage\>/Android/obb/\<package-name\>/
-                      # on the device.
-                },
-                "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
-                  "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
-                      # whitelisted path. If the file exists, it will be replaced.
-                      # The following device-side directories and any of their subdirectories are
-                      # whitelisted:
-                      # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
-                      # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
-                      # <p>Specifying a path outside of these directory trees is invalid.
-                      #
-                      # <p> The paths /sdcard and /data will be made available and treated as
-                      # implicit path substitutions. E.g. if /sdcard on a particular device does
-                      # not map to external storage, the system will replace it with the external
-                      # storage path prefix for that device and copy the file there.
-                      #
-                      # <p> It is strongly advised to use the <a href=
-                      # "http://developer.android.com/reference/android/os/Environment.html">
-                      # Environment API</a> in app and test code to access files on the device in a
-                      # portable way.
-                  "content": { # A reference to a file, used for user inputs. # Required. The source file.
-                      "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                    },
-                },
-              },
-            ],
-          },
           "androidTestLoop": { # A test of an Android Application with a Test Loop. # An Android Application with a Test Loop.
               # The intent \<intent-name\> will be implicitly added, since Games is the only
               # user of this api, for the time being.
@@ -785,6 +599,162 @@
               "A String",
             ],
           },
+          "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
+              # scripts.
+            "filesToPush": [ # List of files to push to the device before starting the test.
+              { # A single device file description.
+                "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
+                  "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
+                      # Android
+                      # e.g. [main|patch].0300110.com.example.android.obb
+                      # which will be installed into
+                      #   \<shared-storage\>/Android/obb/\<package-name\>/
+                      # on the device.
+                  "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
+                      "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                    },
+                },
+                "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
+                  "content": { # A reference to a file, used for user inputs. # Required. The source file.
+                      "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                    },
+                  "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
+                      # whitelisted path. If the file exists, it will be replaced.
+                      # The following device-side directories and any of their subdirectories are
+                      # whitelisted:
+                      # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
+                      # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
+                      # <p>Specifying a path outside of these directory trees is invalid.
+                      #
+                      # <p> The paths /sdcard and /data will be made available and treated as
+                      # implicit path substitutions. E.g. if /sdcard on a particular device does
+                      # not map to external storage, the system will replace it with the external
+                      # storage path prefix for that device and copy the file there.
+                      #
+                      # <p> It is strongly advised to use the <a href=
+                      # "http://developer.android.com/reference/android/os/Environment.html">
+                      # Environment API</a> in app and test code to access files on the device in a
+                      # portable way.
+                },
+              },
+            ],
+            "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
+              "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
+                  # If set, the service automatically generates a Google test account and adds
+                  # it to the device, before executing the test. Note that test accounts might be
+                  # reused.
+                  # Many applications show their full set of functionalities when an account is
+                  # present on the device. Logging into the device with these generated accounts
+                  # allows testing more functionalities.
+              },
+            },
+            "systrace": { # Systrace configuration for the run.
+                # If set a systrace will be taken, starting on test start and lasting for the
+                # configured duration. The systrace file thus obtained is put in the results
+                # bucket together with the other artifacts from the run.
+              "durationSeconds": 42, # Systrace duration in seconds.
+                  # Should be between 1 and 30 seconds. 0 disables systrace.
+            },
+            "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
+                # they must be absolute paths under /sdcard or /data/local/tmp.
+                # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+                #
+                # Note: The paths /sdcard and /data will be made available and treated as
+                # implicit path substitutions. E.g. if /sdcard on a particular device does
+                # not map to external storage, the system will replace it with the external
+                # storage path prefix for that device.
+              "A String",
+            ],
+            "networkProfile": "A String", # The network traffic profile used for running the test.
+                # Available network profiles can be queried by using the
+                # NETWORK_CONFIGURATION environment type when calling
+                # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+            "environmentVariables": [ # Environment variables to set for the test (only applicable for
+                # instrumentation tests).
+              { # A key-value pair passed as an environment variable to the test.
+                "value": "A String", # Value for the environment variable.
+                "key": "A String", # Key for the environment variable.
+              },
+            ],
+            "additionalApks": [ # APKs to install in addition to those being directly tested.
+                # Currently capped at 100.
+              { # An Android package file to install.
+                "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
+                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+                "packageName": "A String", # The java package for the APK to be installed.
+                    # Value is determined by examining the application's manifest.
+              },
+            ],
+          },
+          "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
+              # or physical Android Device, finding culprits and crashes as it goes.
+            "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
+                # 2 to make Robo explore the app beyond the first activity.
+                # Default is 50.
+            "appPackageId": "A String", # The java package for the application under test.
+                # The default value is determined by examining the application's manifest.
+            "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+            "startingIntents": [ # The intents used to launch the app for the crawl.
+                # If none are provided, then the main launcher activity is launched.
+                # If some are provided, then only those provided are launched (the main
+                # launcher activity must be provided explicitly).
+              { # Message for specifying the start activities to crawl.
+                "timeout": "A String", # Timeout in seconds for each intent.
+                "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
+                  "uri": "A String", # URI for the action.
+                  "categories": [ # Intent categories to set on the intent.
+                    "A String",
+                  ],
+                  "action": "A String", # Action name.
+                      # Required for START_ACTIVITY.
+                },
+                "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
+                },
+              },
+            ],
+            "maxSteps": 42, # The max number of steps Robo can execute.
+                # Default is no limit.
+            "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+            "roboDirectives": [ # A set of directives Robo should apply during the crawl.
+                # This allows users to customize the crawl. For example, the username and
+                # password for a test account can be provided.
+              { # Directs Robo to interact with a specific UI element if it is encountered
+                  # during the crawl. Currently, Robo can perform text entry or element click.
+                "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                    # element.
+                "resourceName": "A String", # Required. The android resource name of the target UI element.
+                    # For example,
+                    #    in Java: R.string.foo
+                    #    in xml: @string/foo
+                    # Only the "foo" part is needed.
+                    # Reference doc:
+                    # https://developer.android.com/guide/topics/resources/accessing-resources.html
+                "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
+                    # treated as a CLICK on the element matching the resource_name.
+              },
+            ],
+            "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+                # a base module directory, zero or more dynamic feature module directories.
+                # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+                # building App Bundles.
+              "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+            },
+            "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
+                # for the crawl.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+          },
           "androidInstrumentationTest": { # A test of an Android application that can control an Android component # An Android instrumentation test.
               # independently of its normal lifecycle.
               # Android instrumentation tests run an application APK and test APK inside the
@@ -794,6 +764,15 @@
               #
               # See <http://developer.android.com/tools/testing/testing_android.html> for
               # more information on types of Android tests.
+            "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+                # a base module directory, zero or more dynamic feature module directories.
+                # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+                # building App Bundles.
+              "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+            },
             "orchestratorOption": "A String", # The option of whether running each test within its own invocation of
                 # instrumentation with Android Test Orchestrator or not.
                 # ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
@@ -808,15 +787,6 @@
                 # for more information about Android Test Orchestrator.
                 #
                 # If not set, the test will be run without the orchestrator.
-            "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-                # a base module directory, zero or more dynamic feature module directories.
-                # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-                # building App Bundles.
-              "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-            },
             "testTargets": [ # Each target must be fully qualified with the package name or class name,
                 # in one of these formats:
                 #  - "package package_name"
@@ -833,6 +803,13 @@
             "testRunnerClass": "A String", # The InstrumentationTestRunner class.
                 # The default value is determined by examining the application's manifest.
             "shardingOption": { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
+              "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
+                  #
+                  # For Instrumentation test, it will be translated to “-e numShard” “-e
+                  # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
+                  # specifying these sharding arguments via environment_variables is invalid.
+                "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
+              },
               "manualSharding": { # Shards test cases into the specified groups of packages, classes, and/or # Shards test cases into the specified groups of packages, classes, and/or
                   # methods.
                   # methods.
@@ -852,13 +829,6 @@
                   },
                 ],
               },
-              "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
-                  #
-                  # For Instrumentation test, it will be translated to “-e numShard” “-e
-                  # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
-                  # specifying these sharding arguments via environment_variables is invalid.
-                "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
-              },
             },
             "testPackageId": "A String", # The java package for the test to be executed.
                 # The default value is determined by examining the application's manifest.
@@ -873,24 +843,35 @@
           "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
         },
         "id": "A String", # Output only. Unique id set by the service.
+        "timestamp": "A String", # Output only. The time this test execution was initially created.
+        "shard": { # Output only. Details about the shard. # Output only. Details about the shard.
+          "shardIndex": 42, # Output only. The index of the shard among all the shards.
+          "testTargetsForShard": { # Test targets for a shard. # Output only. Test targets for each shard.
+            "testTargets": [ # Group of packages, classes, and/or test methods to be run for each shard.
+                # The targets need to be specified in AndroidJUnitRunner argument format. For
+                # example, “package com.my.packages” “class com.my.package.MyClass”.
+                #
+                # The number of shard_test_targets must be greater than 0.
+              "A String",
+            ],
+          },
+          "numShards": 42, # Output only. The total number of shards.
+        },
+        "matrixId": "A String", # Output only. Id of the containing TestMatrix.
+        "testDetails": { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
+          "errorMessage": "A String", # Output only. If the TestState is ERROR, then this string will contain
+              # human-readable details about the error.
+          "progressMessages": [ # Output only. Human-readable, detailed descriptions of the test's progress.
+              # For example: "Provisioning a device", "Starting Test".
+              #
+              # During the course of execution new data may be appended
+              # to the end of progress_messages.
+            "A String",
+          ],
+        },
       },
     ],
     "environmentMatrix": { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
-      "androidDeviceList": { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified
-          # devices.
-        "androidDevices": [ # Required. A list of Android devices.
-          { # A single Android device.
-            "androidModelId": "A String", # Required. The id of the Android device to be used.
-                # Use the TestEnvironmentDiscoveryService to get supported options.
-            "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
-                # Use the TestEnvironmentDiscoveryService to get supported options.
-            "orientation": "A String", # Required. How the device is oriented during the test.
-                # Use the TestEnvironmentDiscoveryService to get supported options.
-            "locale": "A String", # Required. The locale the test device used for testing.
-                # Use the TestEnvironmentDiscoveryService to get supported options.
-          },
-        ],
-      },
       "androidMatrix": { # A set of Android device configuration permutations is defined by the # A matrix of Android devices.
           # the cross-product of the given axes. Internally, the given AndroidMatrix
           # will be expanded into a set of AndroidDevices.
@@ -928,8 +909,30 @@
           },
         ],
       },
+      "androidDeviceList": { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified
+          # devices.
+        "androidDevices": [ # Required. A list of Android devices.
+          { # A single Android device.
+            "orientation": "A String", # Required. How the device is oriented during the test.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+            "locale": "A String", # Required. The locale the test device used for testing.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+            "androidModelId": "A String", # Required. The id of the Android device to be used.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+            "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+          },
+        ],
+      },
     },
     "resultStorage": { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
+      "toolResultsExecution": { # Represents a tool results execution resource. # Output only. The tool results execution that results are written to.
+          #
+          # This has the results of a TestMatrix.
+        "projectId": "A String", # Output only. The cloud project that owns the tool results execution.
+        "historyId": "A String", # Output only. A tool results history ID.
+        "executionId": "A String", # Output only. A tool results execution ID.
+      },
       "resultsUrl": "A String", # Output only. URL to the results in the Firebase Web Console.
       "toolResultsHistory": { # Represents a tool results history resource. # The tool results history that contains the tool results execution that
           # results are written to.
@@ -944,15 +947,12 @@
             # The requesting user must have write access on the bucket in the supplied
             # path.
       },
-      "toolResultsExecution": { # Represents a tool results execution resource. # Output only. The tool results execution that results are written to.
-          #
-          # This has the results of a TestMatrix.
-        "projectId": "A String", # Output only. The cloud project that owns the tool results execution.
-        "historyId": "A String", # Output only. A tool results history ID.
-        "executionId": "A String", # Output only. A tool results execution ID.
-      },
     },
     "testMatrixId": "A String", # Output only. Unique id set by the service.
+    "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
+        # Only useful for matrices in the INVALID state.
+    "outcomeSummary": "A String", # Output Only. The overall outcome of the test.
+        # Only set when the test matrix state is FINISHED.
   }
 
   requestId: string, A string id used to detect duplicated requests.
@@ -972,10 +972,6 @@
     { # TestMatrix captures all details about a test. It contains the environment
         # configuration, test specification, test executions and overall state and
         # outcome.
-      "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
-          # Only useful for matrices in the INVALID state.
-      "outcomeSummary": "A String", # Output Only. The overall outcome of the test.
-          # Only set when the test matrix state is FINISHED.
       "testSpecification": { # A description of how to run the test. # Required. How to run the test.
         "iosXcTest": { # A test of an iOS application that uses the XCTest framework. # An iOS XCTest, via an .xctestrun file.
             # Xcode supports the option to "build for testing", which generates an
@@ -1008,15 +1004,15 @@
         "iosTestLoop": { # A test of an iOS application that implements one or more game loop scenarios. # An iOS application with a test loop.
             # This test type accepts an archived application (.ipa file) and a list of
             # integer scenarios that will be executed on the app sequentially.
+          "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
+              # single scenario 0 if unspecified.
+            42,
+          ],
           "appBundleId": "A String", # Output only. The bundle id for the application under test.
           "appIpa": { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
               "gcsPath": "A String", # A path to a file in Google Cloud Storage.
                   # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
             },
-          "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
-              # single scenario 0 if unspecified.
-            42,
-          ],
         },
         "testTimeout": "A String", # Max time a test execution is allowed to run before it is
             # automatically cancelled.
@@ -1027,162 +1023,6 @@
               # NETWORK_CONFIGURATION environment type when calling
               # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
         },
-        "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
-            # or physical Android Device, finding culprits and crashes as it goes.
-          "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
-              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-            },
-          "appPackageId": "A String", # The java package for the application under test.
-              # The default value is determined by examining the application's manifest.
-          "startingIntents": [ # The intents used to launch the app for the crawl.
-              # If none are provided, then the main launcher activity is launched.
-              # If some are provided, then only those provided are launched (the main
-              # launcher activity must be provided explicitly).
-            { # Message for specifying the start activities to crawl.
-              "timeout": "A String", # Timeout in seconds for each intent.
-              "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
-                "action": "A String", # Action name.
-                    # Required for START_ACTIVITY.
-                "uri": "A String", # URI for the action.
-                "categories": [ # Intent categories to set on the intent.
-                  "A String",
-                ],
-              },
-              "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
-              },
-            },
-          ],
-          "appInitialActivity": "A String", # The initial activity that should be used to start the app.
-          "maxSteps": 42, # The max number of steps Robo can execute.
-              # Default is no limit.
-          "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-              # a base module directory, zero or more dynamic feature module directories.
-              # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-              # building App Bundles.
-            "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-          },
-          "roboDirectives": [ # A set of directives Robo should apply during the crawl.
-              # This allows users to customize the crawl. For example, the username and
-              # password for a test account can be provided.
-            { # Directs Robo to interact with a specific UI element if it is encountered
-                # during the crawl. Currently, Robo can perform text entry or element click.
-              "actionType": "A String", # Required. The type of action that Robo should perform on the specified
-                  # element.
-              "resourceName": "A String", # Required. The android resource name of the target UI element.
-                  # For example,
-                  #    in Java: R.string.foo
-                  #    in xml: @string/foo
-                  # Only the "foo" part is needed.
-                  # Reference doc:
-                  # https://developer.android.com/guide/topics/resources/accessing-resources.html
-              "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
-                  # treated as a CLICK on the element matching the resource_name.
-            },
-          ],
-          "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
-              # for the crawl.
-              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-            },
-          "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
-              # 2 to make Robo explore the app beyond the first activity.
-              # Default is 50.
-        },
-        "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
-            # scripts.
-          "systrace": { # Systrace configuration for the run.
-              # If set a systrace will be taken, starting on test start and lasting for the
-              # configured duration. The systrace file thus obtained is put in the results
-              # bucket together with the other artifacts from the run.
-            "durationSeconds": 42, # Systrace duration in seconds.
-                # Should be between 1 and 30 seconds. 0 disables systrace.
-          },
-          "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
-            "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
-                # If set, the service automatically generates a Google test account and adds
-                # it to the device, before executing the test. Note that test accounts might be
-                # reused.
-                # Many applications show their full set of functionalities when an account is
-                # present on the device. Logging into the device with these generated accounts
-                # allows testing more functionalities.
-            },
-          },
-          "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
-              # they must be absolute paths under /sdcard or /data/local/tmp.
-              # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
-              #
-              # Note: The paths /sdcard and /data will be made available and treated as
-              # implicit path substitutions. E.g. if /sdcard on a particular device does
-              # not map to external storage, the system will replace it with the external
-              # storage path prefix for that device.
-            "A String",
-          ],
-          "networkProfile": "A String", # The network traffic profile used for running the test.
-              # Available network profiles can be queried by using the
-              # NETWORK_CONFIGURATION environment type when calling
-              # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
-          "environmentVariables": [ # Environment variables to set for the test (only applicable for
-              # instrumentation tests).
-            { # A key-value pair passed as an environment variable to the test.
-              "value": "A String", # Value for the environment variable.
-              "key": "A String", # Key for the environment variable.
-            },
-          ],
-          "additionalApks": [ # APKs to install in addition to those being directly tested.
-              # Currently capped at 100.
-            { # An Android package file to install.
-              "packageName": "A String", # The java package for the APK to be installed.
-                  # Value is determined by examining the application's manifest.
-              "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-            },
-          ],
-          "filesToPush": [ # List of files to push to the device before starting the test.
-            { # A single device file description.
-              "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
-                "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
-                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-                "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
-                    # Android
-                    # e.g. [main|patch].0300110.com.example.android.obb
-                    # which will be installed into
-                    #   \<shared-storage\>/Android/obb/\<package-name\>/
-                    # on the device.
-              },
-              "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
-                "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
-                    # whitelisted path. If the file exists, it will be replaced.
-                    # The following device-side directories and any of their subdirectories are
-                    # whitelisted:
-                    # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
-                    # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
-                    # <p>Specifying a path outside of these directory trees is invalid.
-                    #
-                    # <p> The paths /sdcard and /data will be made available and treated as
-                    # implicit path substitutions. E.g. if /sdcard on a particular device does
-                    # not map to external storage, the system will replace it with the external
-                    # storage path prefix for that device and copy the file there.
-                    #
-                    # <p> It is strongly advised to use the <a href=
-                    # "http://developer.android.com/reference/android/os/Environment.html">
-                    # Environment API</a> in app and test code to access files on the device in a
-                    # portable way.
-                "content": { # A reference to a file, used for user inputs. # Required. The source file.
-                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
-            },
-          ],
-        },
         "androidTestLoop": { # A test of an Android Application with a Test Loop. # An Android Application with a Test Loop.
             # The intent \<intent-name\> will be implicitly added, since Games is the only
             # user of this api, for the time being.
@@ -1216,6 +1056,162 @@
             "A String",
           ],
         },
+        "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
+            # scripts.
+          "filesToPush": [ # List of files to push to the device before starting the test.
+            { # A single device file description.
+              "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
+                "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
+                    # Android
+                    # e.g. [main|patch].0300110.com.example.android.obb
+                    # which will be installed into
+                    #   \<shared-storage\>/Android/obb/\<package-name\>/
+                    # on the device.
+                "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
+                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+              },
+              "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
+                "content": { # A reference to a file, used for user inputs. # Required. The source file.
+                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+                "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
+                    # whitelisted path. If the file exists, it will be replaced.
+                    # The following device-side directories and any of their subdirectories are
+                    # whitelisted:
+                    # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
+                    # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
+                    # <p>Specifying a path outside of these directory trees is invalid.
+                    #
+                    # <p> The paths /sdcard and /data will be made available and treated as
+                    # implicit path substitutions. E.g. if /sdcard on a particular device does
+                    # not map to external storage, the system will replace it with the external
+                    # storage path prefix for that device and copy the file there.
+                    #
+                    # <p> It is strongly advised to use the <a href=
+                    # "http://developer.android.com/reference/android/os/Environment.html">
+                    # Environment API</a> in app and test code to access files on the device in a
+                    # portable way.
+              },
+            },
+          ],
+          "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
+            "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
+                # If set, the service automatically generates a Google test account and adds
+                # it to the device, before executing the test. Note that test accounts might be
+                # reused.
+                # Many applications show their full set of functionalities when an account is
+                # present on the device. Logging into the device with these generated accounts
+                # allows testing more functionalities.
+            },
+          },
+          "systrace": { # Systrace configuration for the run.
+              # If set a systrace will be taken, starting on test start and lasting for the
+              # configured duration. The systrace file thus obtained is put in the results
+              # bucket together with the other artifacts from the run.
+            "durationSeconds": 42, # Systrace duration in seconds.
+                # Should be between 1 and 30 seconds. 0 disables systrace.
+          },
+          "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
+              # they must be absolute paths under /sdcard or /data/local/tmp.
+              # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+              #
+              # Note: The paths /sdcard and /data will be made available and treated as
+              # implicit path substitutions. E.g. if /sdcard on a particular device does
+              # not map to external storage, the system will replace it with the external
+              # storage path prefix for that device.
+            "A String",
+          ],
+          "networkProfile": "A String", # The network traffic profile used for running the test.
+              # Available network profiles can be queried by using the
+              # NETWORK_CONFIGURATION environment type when calling
+              # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+          "environmentVariables": [ # Environment variables to set for the test (only applicable for
+              # instrumentation tests).
+            { # A key-value pair passed as an environment variable to the test.
+              "value": "A String", # Value for the environment variable.
+              "key": "A String", # Key for the environment variable.
+            },
+          ],
+          "additionalApks": [ # APKs to install in addition to those being directly tested.
+              # Currently capped at 100.
+            { # An Android package file to install.
+              "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "packageName": "A String", # The java package for the APK to be installed.
+                  # Value is determined by examining the application's manifest.
+            },
+          ],
+        },
+        "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
+            # or physical Android Device, finding culprits and crashes as it goes.
+          "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
+              # 2 to make Robo explore the app beyond the first activity.
+              # Default is 50.
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default value is determined by examining the application's manifest.
+          "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "startingIntents": [ # The intents used to launch the app for the crawl.
+              # If none are provided, then the main launcher activity is launched.
+              # If some are provided, then only those provided are launched (the main
+              # launcher activity must be provided explicitly).
+            { # Message for specifying the start activities to crawl.
+              "timeout": "A String", # Timeout in seconds for each intent.
+              "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
+                "uri": "A String", # URI for the action.
+                "categories": [ # Intent categories to set on the intent.
+                  "A String",
+                ],
+                "action": "A String", # Action name.
+                    # Required for START_ACTIVITY.
+              },
+              "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
+              },
+            },
+          ],
+          "maxSteps": 42, # The max number of steps Robo can execute.
+              # Default is no limit.
+          "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+          "roboDirectives": [ # A set of directives Robo should apply during the crawl.
+              # This allows users to customize the crawl. For example, the username and
+              # password for a test account can be provided.
+            { # Directs Robo to interact with a specific UI element if it is encountered
+                # during the crawl. Currently, Robo can perform text entry or element click.
+              "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                  # element.
+              "resourceName": "A String", # Required. The android resource name of the target UI element.
+                  # For example,
+                  #    in Java: R.string.foo
+                  #    in xml: @string/foo
+                  # Only the "foo" part is needed.
+                  # Reference doc:
+                  # https://developer.android.com/guide/topics/resources/accessing-resources.html
+              "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
+                  # treated as a CLICK on the element matching the resource_name.
+            },
+          ],
+          "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+              # a base module directory, zero or more dynamic feature module directories.
+              # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+              # building App Bundles.
+            "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+          },
+          "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
+              # for the crawl.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+        },
         "androidInstrumentationTest": { # A test of an Android application that can control an Android component # An Android instrumentation test.
             # independently of its normal lifecycle.
             # Android instrumentation tests run an application APK and test APK inside the
@@ -1225,6 +1221,15 @@
             #
             # See <http://developer.android.com/tools/testing/testing_android.html> for
             # more information on types of Android tests.
+          "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+              # a base module directory, zero or more dynamic feature module directories.
+              # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+              # building App Bundles.
+            "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+          },
           "orchestratorOption": "A String", # The option of whether running each test within its own invocation of
               # instrumentation with Android Test Orchestrator or not.
               # ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
@@ -1239,15 +1244,6 @@
               # for more information about Android Test Orchestrator.
               #
               # If not set, the test will be run without the orchestrator.
-          "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-              # a base module directory, zero or more dynamic feature module directories.
-              # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-              # building App Bundles.
-            "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-          },
           "testTargets": [ # Each target must be fully qualified with the package name or class name,
               # in one of these formats:
               #  - "package package_name"
@@ -1264,6 +1260,13 @@
           "testRunnerClass": "A String", # The InstrumentationTestRunner class.
               # The default value is determined by examining the application's manifest.
           "shardingOption": { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
+            "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
+                #
+                # For Instrumentation test, it will be translated to “-e numShard” “-e
+                # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
+                # specifying these sharding arguments via environment_variables is invalid.
+              "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
+            },
             "manualSharding": { # Shards test cases into the specified groups of packages, classes, and/or # Shards test cases into the specified groups of packages, classes, and/or
                 # methods.
                 # methods.
@@ -1283,13 +1286,6 @@
                 },
               ],
             },
-            "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
-                #
-                # For Instrumentation test, it will be translated to “-e numShard” “-e
-                # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
-                # specifying these sharding arguments via environment_variables is invalid.
-              "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
-            },
           },
           "testPackageId": "A String", # The java package for the test to be executed.
               # The default value is determined by examining the application's manifest.
@@ -1324,32 +1320,6 @@
       "testExecutions": [ # Output only. The list of test executions that the service creates for
           # this matrix.
         { # A single test executed in a single environment.
-          "timestamp": "A String", # Output only. The time this test execution was initially created.
-          "shard": { # Output only. Details about the shard. # Output only. Details about the shard.
-            "shardIndex": 42, # Output only. The index of the shard among all the shards.
-            "testTargetsForShard": { # Test targets for a shard. # Output only. Test targets for each shard.
-              "testTargets": [ # Group of packages, classes, and/or test methods to be run for each shard.
-                  # The targets need to be specified in AndroidJUnitRunner argument format. For
-                  # example, “package com.my.packages” “class com.my.package.MyClass”.
-                  #
-                  # The number of shard_test_targets must be greater than 0.
-                "A String",
-              ],
-            },
-            "numShards": 42, # Output only. The total number of shards.
-          },
-          "matrixId": "A String", # Output only. Id of the containing TestMatrix.
-          "testDetails": { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
-            "progressMessages": [ # Output only. Human-readable, detailed descriptions of the test's progress.
-                # For example: "Provisioning a device", "Starting Test".
-                #
-                # During the course of execution new data may be appended
-                # to the end of progress_messages.
-              "A String",
-            ],
-            "errorMessage": "A String", # Output only. If the TestState is ERROR, then this string will contain
-                # human-readable details about the error.
-          },
           "environment": { # The environment in which the test is run. # Output only. How the host machine(s) are configured.
             "iosDevice": { # A single iOS device. # An iOS device which must be used with an iOS test.
               "orientation": "A String", # Required. How the device is oriented during the test.
@@ -1362,14 +1332,14 @@
                   # Use the TestEnvironmentDiscoveryService to get supported options.
             },
             "androidDevice": { # A single Android device. # An Android device which must be used with an Android test.
-              "androidModelId": "A String", # Required. The id of the Android device to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
               "orientation": "A String", # Required. How the device is oriented during the test.
                   # Use the TestEnvironmentDiscoveryService to get supported options.
               "locale": "A String", # Required. The locale the test device used for testing.
                   # Use the TestEnvironmentDiscoveryService to get supported options.
+              "androidModelId": "A String", # Required. The id of the Android device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
             },
           },
           "state": "A String", # Output only. Indicates the current progress of the test execution
@@ -1377,10 +1347,10 @@
           "toolResultsStep": { # Represents a tool results step resource. # Output only. Where the results for this execution are written.
               #
               # This has the results of a TestExecution.
-            "executionId": "A String", # Output only. A tool results execution ID.
-            "stepId": "A String", # Output only. A tool results step ID.
             "projectId": "A String", # Output only. The cloud project that owns the tool results step.
             "historyId": "A String", # Output only. A tool results history ID.
+            "executionId": "A String", # Output only. A tool results execution ID.
+            "stepId": "A String", # Output only. A tool results step ID.
           },
           "projectId": "A String", # Output only. The cloud project that owns the test execution.
           "testSpecification": { # A description of how to run the test. # Output only. How to run the test.
@@ -1415,15 +1385,15 @@
             "iosTestLoop": { # A test of an iOS application that implements one or more game loop scenarios. # An iOS application with a test loop.
                 # This test type accepts an archived application (.ipa file) and a list of
                 # integer scenarios that will be executed on the app sequentially.
+              "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
+                  # single scenario 0 if unspecified.
+                42,
+              ],
               "appBundleId": "A String", # Output only. The bundle id for the application under test.
               "appIpa": { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
                   "gcsPath": "A String", # A path to a file in Google Cloud Storage.
                       # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
                 },
-              "scenarios": [ # The list of scenarios that should be run during the test. Defaults to the
-                  # single scenario 0 if unspecified.
-                42,
-              ],
             },
             "testTimeout": "A String", # Max time a test execution is allowed to run before it is
                 # automatically cancelled.
@@ -1434,162 +1404,6 @@
                   # NETWORK_CONFIGURATION environment type when calling
                   # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
             },
-            "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
-                # or physical Android Device, finding culprits and crashes as it goes.
-              "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-              "appPackageId": "A String", # The java package for the application under test.
-                  # The default value is determined by examining the application's manifest.
-              "startingIntents": [ # The intents used to launch the app for the crawl.
-                  # If none are provided, then the main launcher activity is launched.
-                  # If some are provided, then only those provided are launched (the main
-                  # launcher activity must be provided explicitly).
-                { # Message for specifying the start activities to crawl.
-                  "timeout": "A String", # Timeout in seconds for each intent.
-                  "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
-                    "action": "A String", # Action name.
-                        # Required for START_ACTIVITY.
-                    "uri": "A String", # URI for the action.
-                    "categories": [ # Intent categories to set on the intent.
-                      "A String",
-                    ],
-                  },
-                  "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
-                  },
-                },
-              ],
-              "appInitialActivity": "A String", # The initial activity that should be used to start the app.
-              "maxSteps": 42, # The max number of steps Robo can execute.
-                  # Default is no limit.
-              "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-                  # a base module directory, zero or more dynamic feature module directories.
-                  # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-                  # building App Bundles.
-                "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
-              "roboDirectives": [ # A set of directives Robo should apply during the crawl.
-                  # This allows users to customize the crawl. For example, the username and
-                  # password for a test account can be provided.
-                { # Directs Robo to interact with a specific UI element if it is encountered
-                    # during the crawl. Currently, Robo can perform text entry or element click.
-                  "actionType": "A String", # Required. The type of action that Robo should perform on the specified
-                      # element.
-                  "resourceName": "A String", # Required. The android resource name of the target UI element.
-                      # For example,
-                      #    in Java: R.string.foo
-                      #    in xml: @string/foo
-                      # Only the "foo" part is needed.
-                      # Reference doc:
-                      # https://developer.android.com/guide/topics/resources/accessing-resources.html
-                  "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
-                      # treated as a CLICK on the element matching the resource_name.
-                },
-              ],
-              "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
-                  # for the crawl.
-                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-              "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
-                  # 2 to make Robo explore the app beyond the first activity.
-                  # Default is 50.
-            },
-            "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
-                # scripts.
-              "systrace": { # Systrace configuration for the run.
-                  # If set a systrace will be taken, starting on test start and lasting for the
-                  # configured duration. The systrace file thus obtained is put in the results
-                  # bucket together with the other artifacts from the run.
-                "durationSeconds": 42, # Systrace duration in seconds.
-                    # Should be between 1 and 30 seconds. 0 disables systrace.
-              },
-              "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
-                "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
-                    # If set, the service automatically generates a Google test account and adds
-                    # it to the device, before executing the test. Note that test accounts might be
-                    # reused.
-                    # Many applications show their full set of functionalities when an account is
-                    # present on the device. Logging into the device with these generated accounts
-                    # allows testing more functionalities.
-                },
-              },
-              "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
-                  # they must be absolute paths under /sdcard or /data/local/tmp.
-                  # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
-                  #
-                  # Note: The paths /sdcard and /data will be made available and treated as
-                  # implicit path substitutions. E.g. if /sdcard on a particular device does
-                  # not map to external storage, the system will replace it with the external
-                  # storage path prefix for that device.
-                "A String",
-              ],
-              "networkProfile": "A String", # The network traffic profile used for running the test.
-                  # Available network profiles can be queried by using the
-                  # NETWORK_CONFIGURATION environment type when calling
-                  # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
-              "environmentVariables": [ # Environment variables to set for the test (only applicable for
-                  # instrumentation tests).
-                { # A key-value pair passed as an environment variable to the test.
-                  "value": "A String", # Value for the environment variable.
-                  "key": "A String", # Key for the environment variable.
-                },
-              ],
-              "additionalApks": [ # APKs to install in addition to those being directly tested.
-                  # Currently capped at 100.
-                { # An Android package file to install.
-                  "packageName": "A String", # The java package for the APK to be installed.
-                      # Value is determined by examining the application's manifest.
-                  "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
-                      "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                    },
-                },
-              ],
-              "filesToPush": [ # List of files to push to the device before starting the test.
-                { # A single device file description.
-                  "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
-                    "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
-                        "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                      },
-                    "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
-                        # Android
-                        # e.g. [main|patch].0300110.com.example.android.obb
-                        # which will be installed into
-                        #   \<shared-storage\>/Android/obb/\<package-name\>/
-                        # on the device.
-                  },
-                  "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
-                    "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
-                        # whitelisted path. If the file exists, it will be replaced.
-                        # The following device-side directories and any of their subdirectories are
-                        # whitelisted:
-                        # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
-                        # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
-                        # <p>Specifying a path outside of these directory trees is invalid.
-                        #
-                        # <p> The paths /sdcard and /data will be made available and treated as
-                        # implicit path substitutions. E.g. if /sdcard on a particular device does
-                        # not map to external storage, the system will replace it with the external
-                        # storage path prefix for that device and copy the file there.
-                        #
-                        # <p> It is strongly advised to use the <a href=
-                        # "http://developer.android.com/reference/android/os/Environment.html">
-                        # Environment API</a> in app and test code to access files on the device in a
-                        # portable way.
-                    "content": { # A reference to a file, used for user inputs. # Required. The source file.
-                        "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                      },
-                  },
-                },
-              ],
-            },
             "androidTestLoop": { # A test of an Android Application with a Test Loop. # An Android Application with a Test Loop.
                 # The intent \<intent-name\> will be implicitly added, since Games is the only
                 # user of this api, for the time being.
@@ -1623,6 +1437,162 @@
                 "A String",
               ],
             },
+            "testSetup": { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
+                # scripts.
+              "filesToPush": [ # List of files to push to the device before starting the test.
+                { # A single device file description.
+                  "obbFile": { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
+                    "obbFileName": "A String", # Required. OBB file name which must conform to the format as specified by
+                        # Android
+                        # e.g. [main|patch].0300110.com.example.android.obb
+                        # which will be installed into
+                        #   \<shared-storage\>/Android/obb/\<package-name\>/
+                        # on the device.
+                    "obb": { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
+                        "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                      },
+                  },
+                  "regularFile": { # A file or directory to install on the device before the test starts. # A reference to a regular file.
+                    "content": { # A reference to a file, used for user inputs. # Required. The source file.
+                        "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                      },
+                    "devicePath": "A String", # Required. Where to put the content on the device. Must be an absolute,
+                        # whitelisted path. If the file exists, it will be replaced.
+                        # The following device-side directories and any of their subdirectories are
+                        # whitelisted:
+                        # <p>${EXTERNAL_STORAGE}, or /sdcard</p>
+                        # <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
+                        # <p>Specifying a path outside of these directory trees is invalid.
+                        #
+                        # <p> The paths /sdcard and /data will be made available and treated as
+                        # implicit path substitutions. E.g. if /sdcard on a particular device does
+                        # not map to external storage, the system will replace it with the external
+                        # storage path prefix for that device and copy the file there.
+                        #
+                        # <p> It is strongly advised to use the <a href=
+                        # "http://developer.android.com/reference/android/os/Environment.html">
+                        # Environment API</a> in app and test code to access files on the device in a
+                        # portable way.
+                  },
+                },
+              ],
+              "account": { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
+                "googleAuto": { # Enables automatic Google account login. # An automatic google login account.
+                    # If set, the service automatically generates a Google test account and adds
+                    # it to the device, before executing the test. Note that test accounts might be
+                    # reused.
+                    # Many applications show their full set of functionalities when an account is
+                    # present on the device. Logging into the device with these generated accounts
+                    # allows testing more functionalities.
+                },
+              },
+              "systrace": { # Systrace configuration for the run.
+                  # If set a systrace will be taken, starting on test start and lasting for the
+                  # configured duration. The systrace file thus obtained is put in the results
+                  # bucket together with the other artifacts from the run.
+                "durationSeconds": 42, # Systrace duration in seconds.
+                    # Should be between 1 and 30 seconds. 0 disables systrace.
+              },
+              "directoriesToPull": [ # List of directories on the device to upload to GCS at the end of the test;
+                  # they must be absolute paths under /sdcard or /data/local/tmp.
+                  # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+                  #
+                  # Note: The paths /sdcard and /data will be made available and treated as
+                  # implicit path substitutions. E.g. if /sdcard on a particular device does
+                  # not map to external storage, the system will replace it with the external
+                  # storage path prefix for that device.
+                "A String",
+              ],
+              "networkProfile": "A String", # The network traffic profile used for running the test.
+                  # Available network profiles can be queried by using the
+                  # NETWORK_CONFIGURATION environment type when calling
+                  # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+              "environmentVariables": [ # Environment variables to set for the test (only applicable for
+                  # instrumentation tests).
+                { # A key-value pair passed as an environment variable to the test.
+                  "value": "A String", # Value for the environment variable.
+                  "key": "A String", # Key for the environment variable.
+                },
+              ],
+              "additionalApks": [ # APKs to install in addition to those being directly tested.
+                  # Currently capped at 100.
+                { # An Android package file to install.
+                  "location": { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
+                      "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                    },
+                  "packageName": "A String", # The java package for the APK to be installed.
+                      # Value is determined by examining the application's manifest.
+                },
+              ],
+            },
+            "androidRoboTest": { # A test of an android application that explores the application on a virtual # An Android robo test.
+                # or physical Android Device, finding culprits and crashes as it goes.
+              "maxDepth": 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
+                  # 2 to make Robo explore the app beyond the first activity.
+                  # Default is 50.
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default value is determined by examining the application's manifest.
+              "appApk": { # A reference to a file, used for user inputs. # The APK for the application under test.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "startingIntents": [ # The intents used to launch the app for the crawl.
+                  # If none are provided, then the main launcher activity is launched.
+                  # If some are provided, then only those provided are launched (the main
+                  # launcher activity must be provided explicitly).
+                { # Message for specifying the start activities to crawl.
+                  "timeout": "A String", # Timeout in seconds for each intent.
+                  "startActivity": { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
+                    "uri": "A String", # URI for the action.
+                    "categories": [ # Intent categories to set on the intent.
+                      "A String",
+                    ],
+                    "action": "A String", # Action name.
+                        # Required for START_ACTIVITY.
+                  },
+                  "launcherActivity": { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
+                  },
+                },
+              ],
+              "maxSteps": 42, # The max number of steps Robo can execute.
+                  # Default is no limit.
+              "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+              "roboDirectives": [ # A set of directives Robo should apply during the crawl.
+                  # This allows users to customize the crawl. For example, the username and
+                  # password for a test account can be provided.
+                { # Directs Robo to interact with a specific UI element if it is encountered
+                    # during the crawl. Currently, Robo can perform text entry or element click.
+                  "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                      # element.
+                  "resourceName": "A String", # Required. The android resource name of the target UI element.
+                      # For example,
+                      #    in Java: R.string.foo
+                      #    in xml: @string/foo
+                      # Only the "foo" part is needed.
+                      # Reference doc:
+                      # https://developer.android.com/guide/topics/resources/accessing-resources.html
+                  "inputText": "A String", # The text that Robo is directed to set. If left empty, the directive will be
+                      # treated as a CLICK on the element matching the resource_name.
+                },
+              ],
+              "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+                  # a base module directory, zero or more dynamic feature module directories.
+                  # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+                  # building App Bundles.
+                "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+              },
+              "roboScript": { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
+                  # for the crawl.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+            },
             "androidInstrumentationTest": { # A test of an Android application that can control an Android component # An Android instrumentation test.
                 # independently of its normal lifecycle.
                 # Android instrumentation tests run an application APK and test APK inside the
@@ -1632,6 +1602,15 @@
                 #
                 # See <http://developer.android.com/tools/testing/testing_android.html> for
                 # more information on types of Android tests.
+              "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+                  # a base module directory, zero or more dynamic feature module directories.
+                  # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
+                  # building App Bundles.
+                "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+              },
               "orchestratorOption": "A String", # The option of whether running each test within its own invocation of
                   # instrumentation with Android Test Orchestrator or not.
                   # ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
@@ -1646,15 +1625,6 @@
                   # for more information about Android Test Orchestrator.
                   #
                   # If not set, the test will be run without the orchestrator.
-              "appBundle": { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-                  # a base module directory, zero or more dynamic feature module directories.
-                  # <p>See https://developer.android.com/guide/app-bundle/build for guidance on
-                  # building App Bundles.
-                "bundleLocation": { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                    "gcsPath": "A String", # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
               "testTargets": [ # Each target must be fully qualified with the package name or class name,
                   # in one of these formats:
                   #  - "package package_name"
@@ -1671,6 +1641,13 @@
               "testRunnerClass": "A String", # The InstrumentationTestRunner class.
                   # The default value is determined by examining the application's manifest.
               "shardingOption": { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
+                "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
+                    #
+                    # For Instrumentation test, it will be translated to “-e numShard” “-e
+                    # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
+                    # specifying these sharding arguments via environment_variables is invalid.
+                  "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
+                },
                 "manualSharding": { # Shards test cases into the specified groups of packages, classes, and/or # Shards test cases into the specified groups of packages, classes, and/or
                     # methods.
                     # methods.
@@ -1690,13 +1667,6 @@
                     },
                   ],
                 },
-                "uniformSharding": { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
-                    #
-                    # For Instrumentation test, it will be translated to “-e numShard” “-e
-                    # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
-                    # specifying these sharding arguments via environment_variables is invalid.
-                  "numShards": 42, # Required. Total number of shards. The number must be >= 1 and <= 50.
-                },
               },
               "testPackageId": "A String", # The java package for the test to be executed.
                   # The default value is determined by examining the application's manifest.
@@ -1711,24 +1681,35 @@
             "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
           },
           "id": "A String", # Output only. Unique id set by the service.
+          "timestamp": "A String", # Output only. The time this test execution was initially created.
+          "shard": { # Output only. Details about the shard. # Output only. Details about the shard.
+            "shardIndex": 42, # Output only. The index of the shard among all the shards.
+            "testTargetsForShard": { # Test targets for a shard. # Output only. Test targets for each shard.
+              "testTargets": [ # Group of packages, classes, and/or test methods to be run for each shard.
+                  # The targets need to be specified in AndroidJUnitRunner argument format. For
+                  # example, “package com.my.packages” “class com.my.package.MyClass”.
+                  #
+                  # The number of shard_test_targets must be greater than 0.
+                "A String",
+              ],
+            },
+            "numShards": 42, # Output only. The total number of shards.
+          },
+          "matrixId": "A String", # Output only. Id of the containing TestMatrix.
+          "testDetails": { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
+            "errorMessage": "A String", # Output only. If the TestState is ERROR, then this string will contain
+                # human-readable details about the error.
+            "progressMessages": [ # Output only. Human-readable, detailed descriptions of the test's progress.
+                # For example: "Provisioning a device", "Starting Test".
+                #
+                # During the course of execution new data may be appended
+                # to the end of progress_messages.
+              "A String",
+            ],
+          },
         },
       ],
       "environmentMatrix": { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
-        "androidDeviceList": { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified
-            # devices.
-          "androidDevices": [ # Required. A list of Android devices.
-            { # A single Android device.
-              "androidModelId": "A String", # Required. The id of the Android device to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              "orientation": "A String", # Required. How the device is oriented during the test.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              "locale": "A String", # Required. The locale the test device used for testing.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-            },
-          ],
-        },
         "androidMatrix": { # A set of Android device configuration permutations is defined by the # A matrix of Android devices.
             # the cross-product of the given axes. Internally, the given AndroidMatrix
             # will be expanded into a set of AndroidDevices.
@@ -1766,8 +1747,30 @@
             },
           ],
         },
+        "androidDeviceList": { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified
+            # devices.
+          "androidDevices": [ # Required. A list of Android devices.
+            { # A single Android device.
+              "orientation": "A String", # Required. How the device is oriented during the test.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "androidModelId": "A String", # Required. The id of the Android device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "androidVersionId": "A String", # Required. The id of the Android OS version to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+            },
+          ],
+        },
       },
       "resultStorage": { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
+        "toolResultsExecution": { # Represents a tool results execution resource. # Output only. The tool results execution that results are written to.
+            #
+            # This has the results of a TestMatrix.
+          "projectId": "A String", # Output only. The cloud project that owns the tool results execution.
+          "historyId": "A String", # Output only. A tool results history ID.
+          "executionId": "A String", # Output only. A tool results execution ID.
+        },
         "resultsUrl": "A String", # Output only. URL to the results in the Firebase Web Console.
         "toolResultsHistory": { # Represents a tool results history resource. # The tool results history that contains the tool results execution that
             # results are written to.
@@ -1782,15 +1785,12 @@
               # The requesting user must have write access on the bucket in the supplied
               # path.
         },
-        "toolResultsExecution": { # Represents a tool results execution resource. # Output only. The tool results execution that results are written to.
-            #
-            # This has the results of a TestMatrix.
-          "projectId": "A String", # Output only. The cloud project that owns the tool results execution.
-          "historyId": "A String", # Output only. A tool results history ID.
-          "executionId": "A String", # Output only. A tool results execution ID.
-        },
       },
       "testMatrixId": "A String", # Output only. Unique id set by the service.
+      "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
+          # Only useful for matrices in the INVALID state.
+      "outcomeSummary": "A String", # Output Only. The overall outcome of the test.
+          # Only set when the test matrix state is FINISHED.
     }</pre>
 </div>
 
@@ -1818,10 +1818,6 @@
     { # TestMatrix captures all details about a test. It contains the environment
         # configuration, test specification, test executions and overall state and
         # outcome.
-      &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid.
-          # Only useful for matrices in the INVALID state.
-      &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test.
-          # Only set when the test matrix state is FINISHED.
       &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
         &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. # An iOS XCTest, via an .xctestrun file.
             # Xcode supports the option to &quot;build for testing&quot;, which generates an
@@ -1854,15 +1850,15 @@
         &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. # An iOS application with a test loop.
             # This test type accepts an archived application (.ipa file) and a list of
             # integer scenarios that will be executed on the app sequentially.
+          &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the
+              # single scenario 0 if unspecified.
+            42,
+          ],
           &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
           &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
               &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
                   # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
             },
-          &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the
-              # single scenario 0 if unspecified.
-            42,
-          ],
         },
         &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is
             # automatically cancelled.
@@ -1873,162 +1869,6 @@
               # NETWORK_CONFIGURATION environment type when calling
               # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
         },
-        &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual # An Android robo test.
-            # or physical Android Device, finding culprits and crashes as it goes.
-          &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
-              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-            },
-          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test.
-              # The default value is determined by examining the application&#x27;s manifest.
-          &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl.
-              # If none are provided, then the main launcher activity is launched.
-              # If some are provided, then only those provided are launched (the main
-              # launcher activity must be provided explicitly).
-            { # Message for specifying the start activities to crawl.
-              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
-              &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
-                &quot;action&quot;: &quot;A String&quot;, # Action name.
-                    # Required for START_ACTIVITY.
-                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
-                &quot;categories&quot;: [ # Intent categories to set on the intent.
-                  &quot;A String&quot;,
-                ],
-              },
-              &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
-              },
-            },
-          ],
-          &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
-          &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute.
-              # Default is no limit.
-          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-              # a base module directory, zero or more dynamic feature module directories.
-              # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
-              # building App Bundles.
-            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-          },
-          &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl.
-              # This allows users to customize the crawl. For example, the username and
-              # password for a test account can be provided.
-            { # Directs Robo to interact with a specific UI element if it is encountered
-                # during the crawl. Currently, Robo can perform text entry or element click.
-              &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified
-                  # element.
-              &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element.
-                  # For example,
-                  #    in Java: R.string.foo
-                  #    in xml: @string/foo
-                  # Only the &quot;foo&quot; part is needed.
-                  # Reference doc:
-                  # https://developer.android.com/guide/topics/resources/accessing-resources.html
-              &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be
-                  # treated as a CLICK on the element matching the resource_name.
-            },
-          ],
-          &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
-              # for the crawl.
-              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-            },
-          &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
-              # 2 to make Robo explore the app beyond the first activity.
-              # Default is 50.
-        },
-        &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
-            # scripts.
-          &quot;systrace&quot;: { # Systrace configuration for the run.
-              # If set a systrace will be taken, starting on test start and lasting for the
-              # configured duration. The systrace file thus obtained is put in the results
-              # bucket together with the other artifacts from the run.
-            &quot;durationSeconds&quot;: 42, # Systrace duration in seconds.
-                # Should be between 1 and 30 seconds. 0 disables systrace.
-          },
-          &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
-            &quot;googleAuto&quot;: { # Enables automatic Google account login. # An automatic google login account.
-                # If set, the service automatically generates a Google test account and adds
-                # it to the device, before executing the test. Note that test accounts might be
-                # reused.
-                # Many applications show their full set of functionalities when an account is
-                # present on the device. Logging into the device with these generated accounts
-                # allows testing more functionalities.
-            },
-          },
-          &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test;
-              # they must be absolute paths under /sdcard or /data/local/tmp.
-              # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
-              #
-              # Note: The paths /sdcard and /data will be made available and treated as
-              # implicit path substitutions. E.g. if /sdcard on a particular device does
-              # not map to external storage, the system will replace it with the external
-              # storage path prefix for that device.
-            &quot;A String&quot;,
-          ],
-          &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test.
-              # Available network profiles can be queried by using the
-              # NETWORK_CONFIGURATION environment type when calling
-              # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
-          &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for
-              # instrumentation tests).
-            { # A key-value pair passed as an environment variable to the test.
-              &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
-              &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
-            },
-          ],
-          &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested.
-              # Currently capped at 100.
-            { # An Android package file to install.
-              &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed.
-                  # Value is determined by examining the application&#x27;s manifest.
-              &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
-                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-            },
-          ],
-          &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
-            { # A single device file description.
-              &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
-                &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
-                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-                &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by
-                    # Android
-                    # e.g. [main|patch].0300110.com.example.android.obb
-                    # which will be installed into
-                    #   \&lt;shared-storage\&gt;/Android/obb/\&lt;package-name\&gt;/
-                    # on the device.
-              },
-              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
-                &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute,
-                    # whitelisted path. If the file exists, it will be replaced.
-                    # The following device-side directories and any of their subdirectories are
-                    # whitelisted:
-                    # &lt;p&gt;${EXTERNAL_STORAGE}, or /sdcard&lt;/p&gt;
-                    # &lt;p&gt;${ANDROID_DATA}/local/tmp, or /data/local/tmp&lt;/p&gt;
-                    # &lt;p&gt;Specifying a path outside of these directory trees is invalid.
-                    #
-                    # &lt;p&gt; The paths /sdcard and /data will be made available and treated as
-                    # implicit path substitutions. E.g. if /sdcard on a particular device does
-                    # not map to external storage, the system will replace it with the external
-                    # storage path prefix for that device and copy the file there.
-                    #
-                    # &lt;p&gt; It is strongly advised to use the &lt;a href=
-                    # &quot;http://developer.android.com/reference/android/os/Environment.html&quot;&gt;
-                    # Environment API&lt;/a&gt; in app and test code to access files on the device in a
-                    # portable way.
-                &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
-                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
-            },
-          ],
-        },
         &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. # An Android Application with a Test Loop.
             # The intent \&lt;intent-name\&gt; will be implicitly added, since Games is the only
             # user of this api, for the time being.
@@ -2062,6 +1902,162 @@
             &quot;A String&quot;,
           ],
         },
+        &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
+            # scripts.
+          &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
+            { # A single device file description.
+              &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
+                &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by
+                    # Android
+                    # e.g. [main|patch].0300110.com.example.android.obb
+                    # which will be installed into
+                    #   \&lt;shared-storage\&gt;/Android/obb/\&lt;package-name\&gt;/
+                    # on the device.
+                &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
+                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+              },
+              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
+                &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
+                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+                &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute,
+                    # whitelisted path. If the file exists, it will be replaced.
+                    # The following device-side directories and any of their subdirectories are
+                    # whitelisted:
+                    # &lt;p&gt;${EXTERNAL_STORAGE}, or /sdcard&lt;/p&gt;
+                    # &lt;p&gt;${ANDROID_DATA}/local/tmp, or /data/local/tmp&lt;/p&gt;
+                    # &lt;p&gt;Specifying a path outside of these directory trees is invalid.
+                    #
+                    # &lt;p&gt; The paths /sdcard and /data will be made available and treated as
+                    # implicit path substitutions. E.g. if /sdcard on a particular device does
+                    # not map to external storage, the system will replace it with the external
+                    # storage path prefix for that device and copy the file there.
+                    #
+                    # &lt;p&gt; It is strongly advised to use the &lt;a href=
+                    # &quot;http://developer.android.com/reference/android/os/Environment.html&quot;&gt;
+                    # Environment API&lt;/a&gt; in app and test code to access files on the device in a
+                    # portable way.
+              },
+            },
+          ],
+          &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
+            &quot;googleAuto&quot;: { # Enables automatic Google account login. # An automatic google login account.
+                # If set, the service automatically generates a Google test account and adds
+                # it to the device, before executing the test. Note that test accounts might be
+                # reused.
+                # Many applications show their full set of functionalities when an account is
+                # present on the device. Logging into the device with these generated accounts
+                # allows testing more functionalities.
+            },
+          },
+          &quot;systrace&quot;: { # Systrace configuration for the run.
+              # If set a systrace will be taken, starting on test start and lasting for the
+              # configured duration. The systrace file thus obtained is put in the results
+              # bucket together with the other artifacts from the run.
+            &quot;durationSeconds&quot;: 42, # Systrace duration in seconds.
+                # Should be between 1 and 30 seconds. 0 disables systrace.
+          },
+          &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test;
+              # they must be absolute paths under /sdcard or /data/local/tmp.
+              # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+              #
+              # Note: The paths /sdcard and /data will be made available and treated as
+              # implicit path substitutions. E.g. if /sdcard on a particular device does
+              # not map to external storage, the system will replace it with the external
+              # storage path prefix for that device.
+            &quot;A String&quot;,
+          ],
+          &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test.
+              # Available network profiles can be queried by using the
+              # NETWORK_CONFIGURATION environment type when calling
+              # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+          &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for
+              # instrumentation tests).
+            { # A key-value pair passed as an environment variable to the test.
+              &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
+              &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
+            },
+          ],
+          &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested.
+              # Currently capped at 100.
+            { # An Android package file to install.
+              &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
+                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed.
+                  # Value is determined by examining the application&#x27;s manifest.
+            },
+          ],
+        },
+        &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual # An Android robo test.
+            # or physical Android Device, finding culprits and crashes as it goes.
+          &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
+              # 2 to make Robo explore the app beyond the first activity.
+              # Default is 50.
+          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test.
+              # The default value is determined by examining the application&#x27;s manifest.
+          &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
+              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl.
+              # If none are provided, then the main launcher activity is launched.
+              # If some are provided, then only those provided are launched (the main
+              # launcher activity must be provided explicitly).
+            { # Message for specifying the start activities to crawl.
+              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
+              &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
+                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
+                &quot;categories&quot;: [ # Intent categories to set on the intent.
+                  &quot;A String&quot;,
+                ],
+                &quot;action&quot;: &quot;A String&quot;, # Action name.
+                    # Required for START_ACTIVITY.
+              },
+              &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
+              },
+            },
+          ],
+          &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute.
+              # Default is no limit.
+          &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
+          &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl.
+              # This allows users to customize the crawl. For example, the username and
+              # password for a test account can be provided.
+            { # Directs Robo to interact with a specific UI element if it is encountered
+                # during the crawl. Currently, Robo can perform text entry or element click.
+              &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified
+                  # element.
+              &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element.
+                  # For example,
+                  #    in Java: R.string.foo
+                  #    in xml: @string/foo
+                  # Only the &quot;foo&quot; part is needed.
+                  # Reference doc:
+                  # https://developer.android.com/guide/topics/resources/accessing-resources.html
+              &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be
+                  # treated as a CLICK on the element matching the resource_name.
+            },
+          ],
+          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+              # a base module directory, zero or more dynamic feature module directories.
+              # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
+              # building App Bundles.
+            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+          },
+          &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
+              # for the crawl.
+              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+        },
         &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component # An Android instrumentation test.
             # independently of its normal lifecycle.
             # Android instrumentation tests run an application APK and test APK inside the
@@ -2071,6 +2067,15 @@
             #
             # See &lt;http://developer.android.com/tools/testing/testing_android.html&gt; for
             # more information on types of Android tests.
+          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+              # a base module directory, zero or more dynamic feature module directories.
+              # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
+              # building App Bundles.
+            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+          },
           &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of
               # instrumentation with Android Test Orchestrator or not.
               # ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
@@ -2085,15 +2090,6 @@
               # for more information about Android Test Orchestrator.
               #
               # If not set, the test will be run without the orchestrator.
-          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-              # a base module directory, zero or more dynamic feature module directories.
-              # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
-              # building App Bundles.
-            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-              },
-          },
           &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name,
               # in one of these formats:
               #  - &quot;package package_name&quot;
@@ -2110,6 +2106,13 @@
           &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class.
               # The default value is determined by examining the application&#x27;s manifest.
           &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
+            &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
+                #
+                # For Instrumentation test, it will be translated to “-e numShard” “-e
+                # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
+                # specifying these sharding arguments via environment_variables is invalid.
+              &quot;numShards&quot;: 42, # Required. Total number of shards. The number must be &gt;= 1 and &lt;= 50.
+            },
             &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or # Shards test cases into the specified groups of packages, classes, and/or
                 # methods.
                 # methods.
@@ -2129,13 +2132,6 @@
                 },
               ],
             },
-            &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
-                #
-                # For Instrumentation test, it will be translated to “-e numShard” “-e
-                # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
-                # specifying these sharding arguments via environment_variables is invalid.
-              &quot;numShards&quot;: 42, # Required. Total number of shards. The number must be &gt;= 1 and &lt;= 50.
-            },
           },
           &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed.
               # The default value is determined by examining the application&#x27;s manifest.
@@ -2170,32 +2166,6 @@
       &quot;testExecutions&quot;: [ # Output only. The list of test executions that the service creates for
           # this matrix.
         { # A single test executed in a single environment.
-          &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
-          &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
-            &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
-            &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
-              &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard.
-                  # The targets need to be specified in AndroidJUnitRunner argument format. For
-                  # example, “package com.my.packages” “class com.my.package.MyClass”.
-                  #
-                  # The number of shard_test_targets must be greater than 0.
-                &quot;A String&quot;,
-              ],
-            },
-            &quot;numShards&quot;: 42, # Output only. The total number of shards.
-          },
-          &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
-          &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
-            &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress.
-                # For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;.
-                #
-                # During the course of execution new data may be appended
-                # to the end of progress_messages.
-              &quot;A String&quot;,
-            ],
-            &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain
-                # human-readable details about the error.
-          },
           &quot;environment&quot;: { # The environment in which the test is run. # Output only. How the host machine(s) are configured.
             &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
               &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test.
@@ -2208,14 +2178,14 @@
                   # Use the TestEnvironmentDiscoveryService to get supported options.
             },
             &quot;androidDevice&quot;: { # A single Android device. # An Android device which must be used with an Android test.
-              &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
               &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test.
                   # Use the TestEnvironmentDiscoveryService to get supported options.
               &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing.
                   # Use the TestEnvironmentDiscoveryService to get supported options.
+              &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
             },
           },
           &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution
@@ -2223,10 +2193,10 @@
           &quot;toolResultsStep&quot;: { # Represents a tool results step resource. # Output only. Where the results for this execution are written.
               #
               # This has the results of a TestExecution.
-            &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
-            &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
             &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results step.
             &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
+            &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
+            &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
           },
           &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
           &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
@@ -2261,15 +2231,15 @@
             &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. # An iOS application with a test loop.
                 # This test type accepts an archived application (.ipa file) and a list of
                 # integer scenarios that will be executed on the app sequentially.
+              &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the
+                  # single scenario 0 if unspecified.
+                42,
+              ],
               &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
               &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
                   &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
                       # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
                 },
-              &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the
-                  # single scenario 0 if unspecified.
-                42,
-              ],
             },
             &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is
                 # automatically cancelled.
@@ -2280,162 +2250,6 @@
                   # NETWORK_CONFIGURATION environment type when calling
                   # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
             },
-            &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual # An Android robo test.
-                # or physical Android Device, finding culprits and crashes as it goes.
-              &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
-                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-              &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test.
-                  # The default value is determined by examining the application&#x27;s manifest.
-              &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl.
-                  # If none are provided, then the main launcher activity is launched.
-                  # If some are provided, then only those provided are launched (the main
-                  # launcher activity must be provided explicitly).
-                { # Message for specifying the start activities to crawl.
-                  &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
-                  &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
-                    &quot;action&quot;: &quot;A String&quot;, # Action name.
-                        # Required for START_ACTIVITY.
-                    &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
-                    &quot;categories&quot;: [ # Intent categories to set on the intent.
-                      &quot;A String&quot;,
-                    ],
-                  },
-                  &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
-                  },
-                },
-              ],
-              &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
-              &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute.
-                  # Default is no limit.
-              &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-                  # a base module directory, zero or more dynamic feature module directories.
-                  # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
-                  # building App Bundles.
-                &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
-              &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl.
-                  # This allows users to customize the crawl. For example, the username and
-                  # password for a test account can be provided.
-                { # Directs Robo to interact with a specific UI element if it is encountered
-                    # during the crawl. Currently, Robo can perform text entry or element click.
-                  &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified
-                      # element.
-                  &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element.
-                      # For example,
-                      #    in Java: R.string.foo
-                      #    in xml: @string/foo
-                      # Only the &quot;foo&quot; part is needed.
-                      # Reference doc:
-                      # https://developer.android.com/guide/topics/resources/accessing-resources.html
-                  &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be
-                      # treated as a CLICK on the element matching the resource_name.
-                },
-              ],
-              &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
-                  # for the crawl.
-                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                },
-              &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
-                  # 2 to make Robo explore the app beyond the first activity.
-                  # Default is 50.
-            },
-            &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
-                # scripts.
-              &quot;systrace&quot;: { # Systrace configuration for the run.
-                  # If set a systrace will be taken, starting on test start and lasting for the
-                  # configured duration. The systrace file thus obtained is put in the results
-                  # bucket together with the other artifacts from the run.
-                &quot;durationSeconds&quot;: 42, # Systrace duration in seconds.
-                    # Should be between 1 and 30 seconds. 0 disables systrace.
-              },
-              &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
-                &quot;googleAuto&quot;: { # Enables automatic Google account login. # An automatic google login account.
-                    # If set, the service automatically generates a Google test account and adds
-                    # it to the device, before executing the test. Note that test accounts might be
-                    # reused.
-                    # Many applications show their full set of functionalities when an account is
-                    # present on the device. Logging into the device with these generated accounts
-                    # allows testing more functionalities.
-                },
-              },
-              &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test;
-                  # they must be absolute paths under /sdcard or /data/local/tmp.
-                  # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
-                  #
-                  # Note: The paths /sdcard and /data will be made available and treated as
-                  # implicit path substitutions. E.g. if /sdcard on a particular device does
-                  # not map to external storage, the system will replace it with the external
-                  # storage path prefix for that device.
-                &quot;A String&quot;,
-              ],
-              &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test.
-                  # Available network profiles can be queried by using the
-                  # NETWORK_CONFIGURATION environment type when calling
-                  # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
-              &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for
-                  # instrumentation tests).
-                { # A key-value pair passed as an environment variable to the test.
-                  &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
-                  &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
-                },
-              ],
-              &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested.
-                  # Currently capped at 100.
-                { # An Android package file to install.
-                  &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed.
-                      # Value is determined by examining the application&#x27;s manifest.
-                  &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
-                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                    },
-                },
-              ],
-              &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
-                { # A single device file description.
-                  &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
-                    &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
-                        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                      },
-                    &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by
-                        # Android
-                        # e.g. [main|patch].0300110.com.example.android.obb
-                        # which will be installed into
-                        #   \&lt;shared-storage\&gt;/Android/obb/\&lt;package-name\&gt;/
-                        # on the device.
-                  },
-                  &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
-                    &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute,
-                        # whitelisted path. If the file exists, it will be replaced.
-                        # The following device-side directories and any of their subdirectories are
-                        # whitelisted:
-                        # &lt;p&gt;${EXTERNAL_STORAGE}, or /sdcard&lt;/p&gt;
-                        # &lt;p&gt;${ANDROID_DATA}/local/tmp, or /data/local/tmp&lt;/p&gt;
-                        # &lt;p&gt;Specifying a path outside of these directory trees is invalid.
-                        #
-                        # &lt;p&gt; The paths /sdcard and /data will be made available and treated as
-                        # implicit path substitutions. E.g. if /sdcard on a particular device does
-                        # not map to external storage, the system will replace it with the external
-                        # storage path prefix for that device and copy the file there.
-                        #
-                        # &lt;p&gt; It is strongly advised to use the &lt;a href=
-                        # &quot;http://developer.android.com/reference/android/os/Environment.html&quot;&gt;
-                        # Environment API&lt;/a&gt; in app and test code to access files on the device in a
-                        # portable way.
-                    &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
-                        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                      },
-                  },
-                },
-              ],
-            },
             &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. # An Android Application with a Test Loop.
                 # The intent \&lt;intent-name\&gt; will be implicitly added, since Games is the only
                 # user of this api, for the time being.
@@ -2469,6 +2283,162 @@
                 &quot;A String&quot;,
               ],
             },
+            &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap
+                # scripts.
+              &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
+                { # A single device file description.
+                  &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
+                    &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by
+                        # Android
+                        # e.g. [main|patch].0300110.com.example.android.obb
+                        # which will be installed into
+                        #   \&lt;shared-storage\&gt;/Android/obb/\&lt;package-name\&gt;/
+                        # on the device.
+                    &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
+                        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                      },
+                  },
+                  &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
+                    &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
+                        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                            # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                      },
+                    &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute,
+                        # whitelisted path. If the file exists, it will be replaced.
+                        # The following device-side directories and any of their subdirectories are
+                        # whitelisted:
+                        # &lt;p&gt;${EXTERNAL_STORAGE}, or /sdcard&lt;/p&gt;
+                        # &lt;p&gt;${ANDROID_DATA}/local/tmp, or /data/local/tmp&lt;/p&gt;
+                        # &lt;p&gt;Specifying a path outside of these directory trees is invalid.
+                        #
+                        # &lt;p&gt; The paths /sdcard and /data will be made available and treated as
+                        # implicit path substitutions. E.g. if /sdcard on a particular device does
+                        # not map to external storage, the system will replace it with the external
+                        # storage path prefix for that device and copy the file there.
+                        #
+                        # &lt;p&gt; It is strongly advised to use the &lt;a href=
+                        # &quot;http://developer.android.com/reference/android/os/Environment.html&quot;&gt;
+                        # Environment API&lt;/a&gt; in app and test code to access files on the device in a
+                        # portable way.
+                  },
+                },
+              ],
+              &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
+                &quot;googleAuto&quot;: { # Enables automatic Google account login. # An automatic google login account.
+                    # If set, the service automatically generates a Google test account and adds
+                    # it to the device, before executing the test. Note that test accounts might be
+                    # reused.
+                    # Many applications show their full set of functionalities when an account is
+                    # present on the device. Logging into the device with these generated accounts
+                    # allows testing more functionalities.
+                },
+              },
+              &quot;systrace&quot;: { # Systrace configuration for the run.
+                  # If set a systrace will be taken, starting on test start and lasting for the
+                  # configured duration. The systrace file thus obtained is put in the results
+                  # bucket together with the other artifacts from the run.
+                &quot;durationSeconds&quot;: 42, # Systrace duration in seconds.
+                    # Should be between 1 and 30 seconds. 0 disables systrace.
+              },
+              &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test;
+                  # they must be absolute paths under /sdcard or /data/local/tmp.
+                  # Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+                  #
+                  # Note: The paths /sdcard and /data will be made available and treated as
+                  # implicit path substitutions. E.g. if /sdcard on a particular device does
+                  # not map to external storage, the system will replace it with the external
+                  # storage path prefix for that device.
+                &quot;A String&quot;,
+              ],
+              &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test.
+                  # Available network profiles can be queried by using the
+                  # NETWORK_CONFIGURATION environment type when calling
+                  # TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+              &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for
+                  # instrumentation tests).
+                { # A key-value pair passed as an environment variable to the test.
+                  &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
+                  &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
+                },
+              ],
+              &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested.
+                  # Currently capped at 100.
+                { # An Android package file to install.
+                  &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
+                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                          # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                    },
+                  &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed.
+                      # Value is determined by examining the application&#x27;s manifest.
+                },
+              ],
+            },
+            &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual # An Android robo test.
+                # or physical Android Device, finding culprits and crashes as it goes.
+              &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least
+                  # 2 to make Robo explore the app beyond the first activity.
+                  # Default is 50.
+              &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test.
+                  # The default value is determined by examining the application&#x27;s manifest.
+              &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
+                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl.
+                  # If none are provided, then the main launcher activity is launched.
+                  # If some are provided, then only those provided are launched (the main
+                  # launcher activity must be provided explicitly).
+                { # Message for specifying the start activities to crawl.
+                  &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
+                  &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
+                    &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
+                    &quot;categories&quot;: [ # Intent categories to set on the intent.
+                      &quot;A String&quot;,
+                    ],
+                    &quot;action&quot;: &quot;A String&quot;, # Action name.
+                        # Required for START_ACTIVITY.
+                  },
+                  &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
+                  },
+                },
+              ],
+              &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute.
+                  # Default is no limit.
+              &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
+              &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl.
+                  # This allows users to customize the crawl. For example, the username and
+                  # password for a test account can be provided.
+                { # Directs Robo to interact with a specific UI element if it is encountered
+                    # during the crawl. Currently, Robo can perform text entry or element click.
+                  &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified
+                      # element.
+                  &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element.
+                      # For example,
+                      #    in Java: R.string.foo
+                      #    in xml: @string/foo
+                      # Only the &quot;foo&quot; part is needed.
+                      # Reference doc:
+                      # https://developer.android.com/guide/topics/resources/accessing-resources.html
+                  &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be
+                      # treated as a CLICK on the element matching the resource_name.
+                },
+              ],
+              &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+                  # a base module directory, zero or more dynamic feature module directories.
+                  # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
+                  # building App Bundles.
+                &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+              },
+              &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue
+                  # for the crawl.
+                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+            },
             &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component # An Android instrumentation test.
                 # independently of its normal lifecycle.
                 # Android instrumentation tests run an application APK and test APK inside the
@@ -2478,6 +2448,15 @@
                 #
                 # See &lt;http://developer.android.com/tools/testing/testing_android.html&gt; for
                 # more information on types of Android tests.
+              &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
+                  # a base module directory, zero or more dynamic feature module directories.
+                  # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
+                  # building App Bundles.
+                &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
+                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
+                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                  },
+              },
               &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of
                   # instrumentation with Android Test Orchestrator or not.
                   # ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
@@ -2492,15 +2471,6 @@
                   # for more information about Android Test Orchestrator.
                   #
                   # If not set, the test will be run without the orchestrator.
-              &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, # A multi-apk app bundle for the application under test.
-                  # a base module directory, zero or more dynamic feature module directories.
-                  # &lt;p&gt;See https://developer.android.com/guide/app-bundle/build for guidance on
-                  # building App Bundles.
-                &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
-                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage.
-                        # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
-                  },
-              },
               &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name,
                   # in one of these formats:
                   #  - &quot;package package_name&quot;
@@ -2517,6 +2487,13 @@
               &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class.
                   # The default value is determined by examining the application&#x27;s manifest.
               &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
+                &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
+                    #
+                    # For Instrumentation test, it will be translated to “-e numShard” “-e
+                    # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
+                    # specifying these sharding arguments via environment_variables is invalid.
+                  &quot;numShards&quot;: 42, # Required. Total number of shards. The number must be &gt;= 1 and &lt;= 50.
+                },
                 &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or # Shards test cases into the specified groups of packages, classes, and/or
                     # methods.
                     # methods.
@@ -2536,13 +2513,6 @@
                     },
                   ],
                 },
-                &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. # Uniformly shards test cases given a total number of shards.
-                    #
-                    # For Instrumentation test, it will be translated to “-e numShard” “-e
-                    # shardIndex” AndroidJUnitRunner arguments. With uniform sharding enabled,
-                    # specifying these sharding arguments via environment_variables is invalid.
-                  &quot;numShards&quot;: 42, # Required. Total number of shards. The number must be &gt;= 1 and &lt;= 50.
-                },
               },
               &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed.
                   # The default value is determined by examining the application&#x27;s manifest.
@@ -2557,24 +2527,35 @@
             &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
           },
           &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
+          &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
+          &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
+            &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
+            &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
+              &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard.
+                  # The targets need to be specified in AndroidJUnitRunner argument format. For
+                  # example, “package com.my.packages” “class com.my.package.MyClass”.
+                  #
+                  # The number of shard_test_targets must be greater than 0.
+                &quot;A String&quot;,
+              ],
+            },
+            &quot;numShards&quot;: 42, # Output only. The total number of shards.
+          },
+          &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
+          &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
+            &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain
+                # human-readable details about the error.
+            &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress.
+                # For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;.
+                #
+                # During the course of execution new data may be appended
+                # to the end of progress_messages.
+              &quot;A String&quot;,
+            ],
+          },
         },
       ],
       &quot;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
-        &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified
-            # devices.
-          &quot;androidDevices&quot;: [ # Required. A list of Android devices.
-            { # A single Android device.
-              &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-              &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing.
-                  # Use the TestEnvironmentDiscoveryService to get supported options.
-            },
-          ],
-        },
         &quot;androidMatrix&quot;: { # A set of Android device configuration permutations is defined by the # A matrix of Android devices.
             # the cross-product of the given axes. Internally, the given AndroidMatrix
             # will be expanded into a set of AndroidDevices.
@@ -2612,8 +2593,30 @@
             },
           ],
         },
+        &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified
+            # devices.
+          &quot;androidDevices&quot;: [ # Required. A list of Android devices.
+            { # A single Android device.
+              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+            },
+          ],
+        },
       },
       &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
+        &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. # Output only. The tool results execution that results are written to.
+            #
+            # This has the results of a TestMatrix.
+          &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
+          &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
+          &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
+        },
         &quot;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
         &quot;toolResultsHistory&quot;: { # Represents a tool results history resource. # The tool results history that contains the tool results execution that
             # results are written to.
@@ -2628,15 +2631,12 @@
               # The requesting user must have write access on the bucket in the supplied
               # path.
         },
-        &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. # Output only. The tool results execution that results are written to.
-            #
-            # This has the results of a TestMatrix.
-          &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
-          &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
-          &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
-        },
       },
       &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
+      &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid.
+          # Only useful for matrices in the INVALID state.
+      &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test.
+          # Only set when the test matrix state is FINISHED.
     }</pre>
 </div>