Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/testing_v1.projects.testMatrices.html b/docs/dyn/testing_v1.projects.testMatrices.html
new file mode 100644
index 0000000..247d9a3
--- /dev/null
+++ b/docs/dyn/testing_v1.projects.testMatrices.html
@@ -0,0 +1,2298 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="testing_v1.html">Cloud Testing API</a> . <a href="testing_v1.projects.html">projects</a> . <a href="testing_v1.projects.testMatrices.html">testMatrices</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#cancel">cancel(projectId, testMatrixId, x__xgafv=None)</a></code></p>
+<p class="firstline">Cancels unfinished test executions in a test matrix.</p>
+<p class="toc_element">
+  <code><a href="#create">create(projectId, body, requestId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates and runs a matrix of tests according to the given specifications.</p>
+<p class="toc_element">
+  <code><a href="#get">get(projectId, testMatrixId, x__xgafv=None)</a></code></p>
+<p class="firstline">Checks the status of a test matrix.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="cancel">cancel(projectId, testMatrixId, x__xgafv=None)</code>
+  <pre>Cancels unfinished test executions in a test matrix.
+This call returns immediately and cancellation proceeds asychronously.
+If the matrix is already final, this operation will have no effect.
+
+May return any of the following canonical error codes:
+
+- PERMISSION_DENIED - if the user is not authorized to read project
+- INVALID_ARGUMENT - if the request is malformed
+- NOT_FOUND - if the Test Matrix does not exist
+
+Args:
+  projectId: string, Cloud project that owns the test. (required)
+  testMatrixId: string, Test matrix that will be canceled. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response containing the current state of the specified test matrix.
+    "testState": "A String", # The current rolled-up state of the test matrix.
+        # If this state is already final, then the cancelation request will
+        # have no effect.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="create">create(projectId, body, requestId=None, x__xgafv=None)</code>
+  <pre>Creates and runs a matrix of tests according to the given specifications.
+Unsupported environments will be returned in the state UNSUPPORTED.
+Matrices are limited to at most 200 supported executions.
+
+May return any of the following canonical error codes:
+
+- PERMISSION_DENIED - if the user is not authorized to write to project
+- INVALID_ARGUMENT - if the request is malformed or if the matrix expands
+                     to more than 200 supported executions
+
+Args:
+  projectId: string, The GCE project under which this job will run. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # TestMatrix captures all details about a test. It contains the environment
+      # configuration, test specification, test executions and overall state and
+      # outcome.
+    "clientInfo": { # Information about the client which invoked the test. # Information about the client which invoked the test.
+      "clientInfoDetails": [ # The list of detailed information about client.
+        { # Key-value pair of detailed information about the client which invoked the
+            # test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.
+          "key": "A String", # Required. The key of detailed client information.
+          "value": "A String", # Required. The value of detailed client information.
+        },
+      ],
+      "name": "A String", # Required. Client name, such as gcloud.
+    },
+    "projectId": "A String", # The cloud project that owns the test matrix.
+    "resultStorage": { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
+      "toolResultsHistory": { # Represents a tool results history resource. # The tool results history that contains the tool results execution that
+          # results are written to.
+          #
+          # If not provided, the service will choose an appropriate value.
+        "projectId": "A String", # Required. The cloud project that owns the tool results history.
+        "historyId": "A String", # Required. A tool results history ID.
+      },
+      "googleCloudStorage": { # A storage location within Google cloud storage (GCS). # Required.
+        "gcsPath": "A String", # Required. The path to a directory in GCS that will
+            # eventually contain the results for this test.
+            # 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.
+        "executionId": "A String", # Output only. A tool results execution ID.
+        "historyId": "A String", # Output only. A tool results history ID.
+      },
+      "resultsUrl": "A String", # Output only. URL to the results in the Firebase Web Console.
+    },
+    "flakyTestAttempts": 42, # The number of times a TestExecution should be re-attempted if one or more
+        # of its test cases fail for any reason.
+        # The maximum number of reruns allowed is 10.
+        # 
+        # Default is 0, which implies no reruns.
+    "state": "A String", # Output only. Indicates the current progress of the test matrix.
+    "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.
+        "matrixId": "A String", # Output only. Id of the containing TestMatrix.
+        "testSpecification": { # A description of how to run the test. # Output only. How to run the test.
+          "iosTestSetup": { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
+            "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.
+          },
+          "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
+              # .xctestrun file that contains a test specification (arguments, test methods,
+              # etc). This test type accepts a zip file containing the .xctestrun file and
+              # the corresponding contents of the Build/Products directory that contains all
+              # the binaries needed to run the tests.
+            "xcodeVersion": "A String", # The Xcode version that should be used for the test.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+                # Defaults to the latest Xcode version Firebase Test Lab supports.
+            "xctestrun": { # A reference to a file, used for user inputs. # An .xctestrun file that will override the .xctestrun file in the
+                # tests zip. Because the .xctestrun file contains environment variables along
+                # with test methods to run and/or ignore, this can be useful for sharding
+                # tests. Default is taken from the tests zip.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+            "testsZip": { # A reference to a file, used for user inputs. # Required. The .zip containing the .xctestrun file and the contents of the
+                # DerivedData/Build/Products directory.
+                # The .xctestrun file in this zip is ignored if the xctestrun field is
+                # specified.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+            "appBundleId": "A String", # Output only. The bundle id for the application under test.
+          },
+          "testTimeout": "A String", # Max time a test execution is allowed to run before it is
+              # automatically cancelled.
+              # The default value is 5 min.
+          "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.
+            "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.
+              },
+            },
+            "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.
+            "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",
+            ],
+            "filesToPush": [ # List of files to push to the device before starting the test.
+              { # A single device file description.
+                "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.
+                },
+                "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
+                    },
+                },
+              },
+            ],
+            "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
+                  },
+              },
+            ],
+            "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.
+              },
+            ],
+          },
+          "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
+          "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.
+            "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
+                },
+            },
+            "scenarios": [ # The list of scenarios that should be run during the test.
+                # The default is all test loops, derived from the application's
+                # manifest.
+              42,
+            ],
+            "appPackageId": "A String", # The java package for the application under test.
+                # The default is determined by examining the application's manifest.
+            "scenarioLabels": [ # The list of scenario labels that should be run during the test.
+                # The scenario labels should map to labels defined in the application's
+                # manifest. For example, player_experience and
+                # com.google.test.loops.player_experience add all of the loops labeled in the
+                # manifest with the com.google.test.loops.player_experience name to the
+                # execution.
+                # Scenarios can also be specified in the scenarios field.
+              "A String",
+            ],
+            "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
+              },
+          },
+          "disablePerformanceMetrics": True or False, # Disables performance metrics recording. May reduce test latency.
+          "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.
+            "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.
+                "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.
+                "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
+                "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                    # element.
+              },
+            ],
+            "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
+              },
+            "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
+              },
+            "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.
+            "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.
+                "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",
+                  ],
+                },
+                "timeout": "A String", # Timeout in seconds for each intent.
+                "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.
+            "appPackageId": "A String", # The java package for the application under test.
+                # The default value is determined by examining the application's manifest.
+            "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+          },
+          "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
+              # same process on a virtual or physical AndroidDevice.  They also specify
+              # a test runner class, such as com.google.GoogleTestRunner, which can vary
+              # on the specific instrumentation framework chosen.
+              #
+              # 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
+                },
+            },
+            "testApk": { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
+                "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                    # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+              },
+            "testRunnerClass": "A String", # The InstrumentationTestRunner class.
+                # The default value is determined by examining the application's manifest.
+            "testPackageId": "A String", # The java package for the test to be executed.
+                # 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
+              },
+            "appPackageId": "A String", # The java package for the application under test.
+                # The default value is determined by examining the application's manifest.
+            "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
+                # higher! **
+                # Orchestrator offers the following benefits:
+                #  - No shared state
+                #  - Crashes are isolated
+                #  - Logs are scoped per test
+                #
+                # See
+                # <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+                # for more information about Android Test Orchestrator.
+                #
+                # If not set, the test will be run without the orchestrator.
+            "testTargets": [ # Each target must be fully qualified with the package name or class name,
+                # in one of these formats:
+                #  - "package package_name"
+                #  - "class package_name.class_name"
+                #  - "class package_name.class_name#method_name"
+                #
+                # If empty, all targets in the module will be run.
+              "A String",
+            ],
+          },
+        },
+        "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.
+            "locale": "A String", # Required. The locale the test device used for testing.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+            "iosVersionId": "A String", # Required. The id of the iOS major software 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.
+            "iosModelId": "A String", # Required. The id of the iOS device to be used.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+          },
+          "androidDevice": { # A single Android device. # An Android device which must be used with an Android test.
+            "locale": "A String", # Required. The locale the test device used for testing.
+                # 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.
+            "androidModelId": "A String", # Required. The id of the Android device 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.
+          },
+        },
+        "state": "A String", # Output only. Indicates the current progress of the test execution
+            # (e.g., FINISHED).
+        "projectId": "A String", # Output only. The cloud project that owns the test execution.
+        "toolResultsStep": { # Represents a tool results step resource. # Output only. Where the results for this execution are written.
+            #
+            # This has the results of a TestExecution.
+          "projectId": "A String", # Output only. The cloud project that owns the tool results step.
+          "executionId": "A String", # Output only. A tool results execution ID.
+          "stepId": "A String", # Output only. A tool results step ID.
+          "historyId": "A String", # Output only. A tool results history ID.
+        },
+        "id": "A String", # Output only. Unique id set by the service.
+      },
+    ],
+    "testSpecification": { # A description of how to run the test. # Required. How to run the test.
+      "iosTestSetup": { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
+        "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.
+      },
+      "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
+          # .xctestrun file that contains a test specification (arguments, test methods,
+          # etc). This test type accepts a zip file containing the .xctestrun file and
+          # the corresponding contents of the Build/Products directory that contains all
+          # the binaries needed to run the tests.
+        "xcodeVersion": "A String", # The Xcode version that should be used for the test.
+            # Use the TestEnvironmentDiscoveryService to get supported options.
+            # Defaults to the latest Xcode version Firebase Test Lab supports.
+        "xctestrun": { # A reference to a file, used for user inputs. # An .xctestrun file that will override the .xctestrun file in the
+            # tests zip. Because the .xctestrun file contains environment variables along
+            # with test methods to run and/or ignore, this can be useful for sharding
+            # tests. Default is taken from the tests zip.
+            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+          },
+        "testsZip": { # A reference to a file, used for user inputs. # Required. The .zip containing the .xctestrun file and the contents of the
+            # DerivedData/Build/Products directory.
+            # The .xctestrun file in this zip is ignored if the xctestrun field is
+            # specified.
+            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+          },
+        "appBundleId": "A String", # Output only. The bundle id for the application under test.
+      },
+      "testTimeout": "A String", # Max time a test execution is allowed to run before it is
+          # automatically cancelled.
+          # The default value is 5 min.
+      "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.
+        "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.
+          },
+        },
+        "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.
+        "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",
+        ],
+        "filesToPush": [ # List of files to push to the device before starting the test.
+          { # A single device file description.
+            "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.
+            },
+            "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
+                },
+            },
+          },
+        ],
+        "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
+              },
+          },
+        ],
+        "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.
+          },
+        ],
+      },
+      "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
+      "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.
+        "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
+            },
+        },
+        "scenarios": [ # The list of scenarios that should be run during the test.
+            # The default is all test loops, derived from the application's
+            # manifest.
+          42,
+        ],
+        "appPackageId": "A String", # The java package for the application under test.
+            # The default is determined by examining the application's manifest.
+        "scenarioLabels": [ # The list of scenario labels that should be run during the test.
+            # The scenario labels should map to labels defined in the application's
+            # manifest. For example, player_experience and
+            # com.google.test.loops.player_experience add all of the loops labeled in the
+            # manifest with the com.google.test.loops.player_experience name to the
+            # execution.
+            # Scenarios can also be specified in the scenarios field.
+          "A String",
+        ],
+        "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
+          },
+      },
+      "disablePerformanceMetrics": True or False, # Disables performance metrics recording. May reduce test latency.
+      "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.
+        "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.
+            "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.
+            "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
+            "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                # element.
+          },
+        ],
+        "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
+          },
+        "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
+          },
+        "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.
+        "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.
+            "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",
+              ],
+            },
+            "timeout": "A String", # Timeout in seconds for each intent.
+            "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.
+        "appPackageId": "A String", # The java package for the application under test.
+            # The default value is determined by examining the application's manifest.
+        "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+      },
+      "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
+          # same process on a virtual or physical AndroidDevice.  They also specify
+          # a test runner class, such as com.google.GoogleTestRunner, which can vary
+          # on the specific instrumentation framework chosen.
+          #
+          # 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
+            },
+        },
+        "testApk": { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
+            "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+          },
+        "testRunnerClass": "A String", # The InstrumentationTestRunner class.
+            # The default value is determined by examining the application's manifest.
+        "testPackageId": "A String", # The java package for the test to be executed.
+            # 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
+          },
+        "appPackageId": "A String", # The java package for the application under test.
+            # The default value is determined by examining the application's manifest.
+        "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
+            # higher! **
+            # Orchestrator offers the following benefits:
+            #  - No shared state
+            #  - Crashes are isolated
+            #  - Logs are scoped per test
+            #
+            # See
+            # <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+            # for more information about Android Test Orchestrator.
+            #
+            # If not set, the test will be run without the orchestrator.
+        "testTargets": [ # Each target must be fully qualified with the package name or class name,
+            # in one of these formats:
+            #  - "package package_name"
+            #  - "class package_name.class_name"
+            #  - "class package_name.class_name#method_name"
+            #
+            # If empty, all targets in the module will be run.
+          "A String",
+        ],
+      },
+    },
+    "testMatrixId": "A String", # Output only. Unique id set by the service.
+    "timestamp": "A String", # Output only. The time this test matrix was initially created.
+    "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
+        # Only useful for matrices in the INVALID state.
+    "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.
+            "locale": "A String", # Required. The locale the test device used for testing.
+                # 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.
+            "androidModelId": "A String", # Required. The id of the Android device 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.
+          },
+        ],
+      },
+      "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.
+          #
+          # Only supported permutations will be instantiated.  Invalid permutations
+          # (e.g., incompatible models/versions) are ignored.
+        "locales": [ # Required. The set of locales the test device will enable for testing.
+            # Use the TestEnvironmentDiscoveryService to get supported options.
+          "A String",
+        ],
+        "androidModelIds": [ # Required. The ids of the set of Android device to be used.
+            # Use the TestEnvironmentDiscoveryService to get supported options.
+          "A String",
+        ],
+        "androidVersionIds": [ # Required. The ids of the set of Android OS version to be used.
+            # Use the TestEnvironmentDiscoveryService to get supported options.
+          "A String",
+        ],
+        "orientations": [ # Required. The set of orientations to test with.
+            # Use the TestEnvironmentDiscoveryService to get supported options.
+          "A String",
+        ],
+      },
+      "iosDeviceList": { # A list of iOS device configurations in which the test is to be executed. # A list of iOS devices.
+        "iosDevices": [ # Required. A list of iOS devices.
+          { # A single iOS device.
+            "locale": "A String", # Required. The locale the test device used for testing.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+            "iosVersionId": "A String", # Required. The id of the iOS major software 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.
+            "iosModelId": "A String", # Required. The id of the iOS device to be used.
+                # Use the TestEnvironmentDiscoveryService to get supported options.
+          },
+        ],
+      },
+    },
+    "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.
+Ids are automatically scoped to a project, so
+users should ensure the ID is unique per-project.
+A UUID is recommended.
+
+Optional, but strongly recommended.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # TestMatrix captures all details about a test. It contains the environment
+        # configuration, test specification, test executions and overall state and
+        # outcome.
+      "clientInfo": { # Information about the client which invoked the test. # Information about the client which invoked the test.
+        "clientInfoDetails": [ # The list of detailed information about client.
+          { # Key-value pair of detailed information about the client which invoked the
+              # test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.
+            "key": "A String", # Required. The key of detailed client information.
+            "value": "A String", # Required. The value of detailed client information.
+          },
+        ],
+        "name": "A String", # Required. Client name, such as gcloud.
+      },
+      "projectId": "A String", # The cloud project that owns the test matrix.
+      "resultStorage": { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
+        "toolResultsHistory": { # Represents a tool results history resource. # The tool results history that contains the tool results execution that
+            # results are written to.
+            #
+            # If not provided, the service will choose an appropriate value.
+          "projectId": "A String", # Required. The cloud project that owns the tool results history.
+          "historyId": "A String", # Required. A tool results history ID.
+        },
+        "googleCloudStorage": { # A storage location within Google cloud storage (GCS). # Required.
+          "gcsPath": "A String", # Required. The path to a directory in GCS that will
+              # eventually contain the results for this test.
+              # 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.
+          "executionId": "A String", # Output only. A tool results execution ID.
+          "historyId": "A String", # Output only. A tool results history ID.
+        },
+        "resultsUrl": "A String", # Output only. URL to the results in the Firebase Web Console.
+      },
+      "flakyTestAttempts": 42, # The number of times a TestExecution should be re-attempted if one or more
+          # of its test cases fail for any reason.
+          # The maximum number of reruns allowed is 10.
+          #
+          # Default is 0, which implies no reruns.
+      "state": "A String", # Output only. Indicates the current progress of the test matrix.
+      "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.
+          "matrixId": "A String", # Output only. Id of the containing TestMatrix.
+          "testSpecification": { # A description of how to run the test. # Output only. How to run the test.
+            "iosTestSetup": { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
+              "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.
+            },
+            "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
+                # .xctestrun file that contains a test specification (arguments, test methods,
+                # etc). This test type accepts a zip file containing the .xctestrun file and
+                # the corresponding contents of the Build/Products directory that contains all
+                # the binaries needed to run the tests.
+              "xcodeVersion": "A String", # The Xcode version that should be used for the test.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+                  # Defaults to the latest Xcode version Firebase Test Lab supports.
+              "xctestrun": { # A reference to a file, used for user inputs. # An .xctestrun file that will override the .xctestrun file in the
+                  # tests zip. Because the .xctestrun file contains environment variables along
+                  # with test methods to run and/or ignore, this can be useful for sharding
+                  # tests. Default is taken from the tests zip.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "testsZip": { # A reference to a file, used for user inputs. # Required. The .zip containing the .xctestrun file and the contents of the
+                  # DerivedData/Build/Products directory.
+                  # The .xctestrun file in this zip is ignored if the xctestrun field is
+                  # specified.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "appBundleId": "A String", # Output only. The bundle id for the application under test.
+            },
+            "testTimeout": "A String", # Max time a test execution is allowed to run before it is
+                # automatically cancelled.
+                # The default value is 5 min.
+            "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.
+              "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.
+                },
+              },
+              "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.
+              "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",
+              ],
+              "filesToPush": [ # List of files to push to the device before starting the test.
+                { # A single device file description.
+                  "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.
+                  },
+                  "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
+                      },
+                  },
+                },
+              ],
+              "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
+                    },
+                },
+              ],
+              "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.
+                },
+              ],
+            },
+            "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
+            "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.
+              "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
+                  },
+              },
+              "scenarios": [ # The list of scenarios that should be run during the test.
+                  # The default is all test loops, derived from the application's
+                  # manifest.
+                42,
+              ],
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default is determined by examining the application's manifest.
+              "scenarioLabels": [ # The list of scenario labels that should be run during the test.
+                  # The scenario labels should map to labels defined in the application's
+                  # manifest. For example, player_experience and
+                  # com.google.test.loops.player_experience add all of the loops labeled in the
+                  # manifest with the com.google.test.loops.player_experience name to the
+                  # execution.
+                  # Scenarios can also be specified in the scenarios field.
+                "A String",
+              ],
+              "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
+                },
+            },
+            "disablePerformanceMetrics": True or False, # Disables performance metrics recording. May reduce test latency.
+            "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.
+              "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.
+                  "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.
+                  "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
+                  "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                      # element.
+                },
+              ],
+              "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
+                },
+              "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
+                },
+              "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.
+              "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.
+                  "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",
+                    ],
+                  },
+                  "timeout": "A String", # Timeout in seconds for each intent.
+                  "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.
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default value is determined by examining the application's manifest.
+              "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+            },
+            "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
+                # same process on a virtual or physical AndroidDevice.  They also specify
+                # a test runner class, such as com.google.GoogleTestRunner, which can vary
+                # on the specific instrumentation framework chosen.
+                #
+                # 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
+                  },
+              },
+              "testApk": { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "testRunnerClass": "A String", # The InstrumentationTestRunner class.
+                  # The default value is determined by examining the application's manifest.
+              "testPackageId": "A String", # The java package for the test to be executed.
+                  # 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
+                },
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default value is determined by examining the application's manifest.
+              "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
+                  # higher! **
+                  # Orchestrator offers the following benefits:
+                  #  - No shared state
+                  #  - Crashes are isolated
+                  #  - Logs are scoped per test
+                  #
+                  # See
+                  # <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+                  # for more information about Android Test Orchestrator.
+                  #
+                  # If not set, the test will be run without the orchestrator.
+              "testTargets": [ # Each target must be fully qualified with the package name or class name,
+                  # in one of these formats:
+                  #  - "package package_name"
+                  #  - "class package_name.class_name"
+                  #  - "class package_name.class_name#method_name"
+                  #
+                  # If empty, all targets in the module will be run.
+                "A String",
+              ],
+            },
+          },
+          "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.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "iosVersionId": "A String", # Required. The id of the iOS major software 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.
+              "iosModelId": "A String", # Required. The id of the iOS device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+            },
+            "androidDevice": { # A single Android device. # An Android device which must be used with an Android test.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # 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.
+              "androidModelId": "A String", # Required. The id of the Android device 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.
+            },
+          },
+          "state": "A String", # Output only. Indicates the current progress of the test execution
+              # (e.g., FINISHED).
+          "projectId": "A String", # Output only. The cloud project that owns the test execution.
+          "toolResultsStep": { # Represents a tool results step resource. # Output only. Where the results for this execution are written.
+              #
+              # This has the results of a TestExecution.
+            "projectId": "A String", # Output only. The cloud project that owns the tool results step.
+            "executionId": "A String", # Output only. A tool results execution ID.
+            "stepId": "A String", # Output only. A tool results step ID.
+            "historyId": "A String", # Output only. A tool results history ID.
+          },
+          "id": "A String", # Output only. Unique id set by the service.
+        },
+      ],
+      "testSpecification": { # A description of how to run the test. # Required. How to run the test.
+        "iosTestSetup": { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
+          "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.
+        },
+        "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
+            # .xctestrun file that contains a test specification (arguments, test methods,
+            # etc). This test type accepts a zip file containing the .xctestrun file and
+            # the corresponding contents of the Build/Products directory that contains all
+            # the binaries needed to run the tests.
+          "xcodeVersion": "A String", # The Xcode version that should be used for the test.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+              # Defaults to the latest Xcode version Firebase Test Lab supports.
+          "xctestrun": { # A reference to a file, used for user inputs. # An .xctestrun file that will override the .xctestrun file in the
+              # tests zip. Because the .xctestrun file contains environment variables along
+              # with test methods to run and/or ignore, this can be useful for sharding
+              # tests. Default is taken from the tests zip.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "testsZip": { # A reference to a file, used for user inputs. # Required. The .zip containing the .xctestrun file and the contents of the
+              # DerivedData/Build/Products directory.
+              # The .xctestrun file in this zip is ignored if the xctestrun field is
+              # specified.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "appBundleId": "A String", # Output only. The bundle id for the application under test.
+        },
+        "testTimeout": "A String", # Max time a test execution is allowed to run before it is
+            # automatically cancelled.
+            # The default value is 5 min.
+        "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.
+          "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.
+            },
+          },
+          "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.
+          "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",
+          ],
+          "filesToPush": [ # List of files to push to the device before starting the test.
+            { # A single device file description.
+              "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.
+              },
+              "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
+                  },
+              },
+            },
+          ],
+          "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
+                },
+            },
+          ],
+          "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.
+            },
+          ],
+        },
+        "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
+        "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.
+          "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
+              },
+          },
+          "scenarios": [ # The list of scenarios that should be run during the test.
+              # The default is all test loops, derived from the application's
+              # manifest.
+            42,
+          ],
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default is determined by examining the application's manifest.
+          "scenarioLabels": [ # The list of scenario labels that should be run during the test.
+              # The scenario labels should map to labels defined in the application's
+              # manifest. For example, player_experience and
+              # com.google.test.loops.player_experience add all of the loops labeled in the
+              # manifest with the com.google.test.loops.player_experience name to the
+              # execution.
+              # Scenarios can also be specified in the scenarios field.
+            "A String",
+          ],
+          "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
+            },
+        },
+        "disablePerformanceMetrics": True or False, # Disables performance metrics recording. May reduce test latency.
+        "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.
+          "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.
+              "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.
+              "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
+              "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                  # element.
+            },
+          ],
+          "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
+            },
+          "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
+            },
+          "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.
+          "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.
+              "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",
+                ],
+              },
+              "timeout": "A String", # Timeout in seconds for each intent.
+              "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.
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default value is determined by examining the application's manifest.
+          "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+        },
+        "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
+            # same process on a virtual or physical AndroidDevice.  They also specify
+            # a test runner class, such as com.google.GoogleTestRunner, which can vary
+            # on the specific instrumentation framework chosen.
+            #
+            # 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
+              },
+          },
+          "testApk": { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "testRunnerClass": "A String", # The InstrumentationTestRunner class.
+              # The default value is determined by examining the application's manifest.
+          "testPackageId": "A String", # The java package for the test to be executed.
+              # 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
+            },
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default value is determined by examining the application's manifest.
+          "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
+              # higher! **
+              # Orchestrator offers the following benefits:
+              #  - No shared state
+              #  - Crashes are isolated
+              #  - Logs are scoped per test
+              #
+              # See
+              # <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+              # for more information about Android Test Orchestrator.
+              #
+              # If not set, the test will be run without the orchestrator.
+          "testTargets": [ # Each target must be fully qualified with the package name or class name,
+              # in one of these formats:
+              #  - "package package_name"
+              #  - "class package_name.class_name"
+              #  - "class package_name.class_name#method_name"
+              #
+              # If empty, all targets in the module will be run.
+            "A String",
+          ],
+        },
+      },
+      "testMatrixId": "A String", # Output only. Unique id set by the service.
+      "timestamp": "A String", # Output only. The time this test matrix was initially created.
+      "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
+          # Only useful for matrices in the INVALID state.
+      "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.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # 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.
+              "androidModelId": "A String", # Required. The id of the Android device 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.
+            },
+          ],
+        },
+        "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.
+            #
+            # Only supported permutations will be instantiated.  Invalid permutations
+            # (e.g., incompatible models/versions) are ignored.
+          "locales": [ # Required. The set of locales the test device will enable for testing.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+          "androidModelIds": [ # Required. The ids of the set of Android device to be used.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+          "androidVersionIds": [ # Required. The ids of the set of Android OS version to be used.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+          "orientations": [ # Required. The set of orientations to test with.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+        },
+        "iosDeviceList": { # A list of iOS device configurations in which the test is to be executed. # A list of iOS devices.
+          "iosDevices": [ # Required. A list of iOS devices.
+            { # A single iOS device.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "iosVersionId": "A String", # Required. The id of the iOS major software 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.
+              "iosModelId": "A String", # Required. The id of the iOS device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+            },
+          ],
+        },
+      },
+      "outcomeSummary": "A String", # Output Only. The overall outcome of the test.
+          # Only set when the test matrix state is FINISHED.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(projectId, testMatrixId, x__xgafv=None)</code>
+  <pre>Checks the status of a test matrix.
+
+May return any of the following canonical error codes:
+
+- PERMISSION_DENIED - if the user is not authorized to read project
+- INVALID_ARGUMENT - if the request is malformed
+- NOT_FOUND - if the Test Matrix does not exist
+
+Args:
+  projectId: string, Cloud project that owns the test matrix. (required)
+  testMatrixId: string, Unique test matrix id which was assigned by the service. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # TestMatrix captures all details about a test. It contains the environment
+        # configuration, test specification, test executions and overall state and
+        # outcome.
+      "clientInfo": { # Information about the client which invoked the test. # Information about the client which invoked the test.
+        "clientInfoDetails": [ # The list of detailed information about client.
+          { # Key-value pair of detailed information about the client which invoked the
+              # test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.
+            "key": "A String", # Required. The key of detailed client information.
+            "value": "A String", # Required. The value of detailed client information.
+          },
+        ],
+        "name": "A String", # Required. Client name, such as gcloud.
+      },
+      "projectId": "A String", # The cloud project that owns the test matrix.
+      "resultStorage": { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
+        "toolResultsHistory": { # Represents a tool results history resource. # The tool results history that contains the tool results execution that
+            # results are written to.
+            #
+            # If not provided, the service will choose an appropriate value.
+          "projectId": "A String", # Required. The cloud project that owns the tool results history.
+          "historyId": "A String", # Required. A tool results history ID.
+        },
+        "googleCloudStorage": { # A storage location within Google cloud storage (GCS). # Required.
+          "gcsPath": "A String", # Required. The path to a directory in GCS that will
+              # eventually contain the results for this test.
+              # 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.
+          "executionId": "A String", # Output only. A tool results execution ID.
+          "historyId": "A String", # Output only. A tool results history ID.
+        },
+        "resultsUrl": "A String", # Output only. URL to the results in the Firebase Web Console.
+      },
+      "flakyTestAttempts": 42, # The number of times a TestExecution should be re-attempted if one or more
+          # of its test cases fail for any reason.
+          # The maximum number of reruns allowed is 10.
+          #
+          # Default is 0, which implies no reruns.
+      "state": "A String", # Output only. Indicates the current progress of the test matrix.
+      "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.
+          "matrixId": "A String", # Output only. Id of the containing TestMatrix.
+          "testSpecification": { # A description of how to run the test. # Output only. How to run the test.
+            "iosTestSetup": { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
+              "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.
+            },
+            "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
+                # .xctestrun file that contains a test specification (arguments, test methods,
+                # etc). This test type accepts a zip file containing the .xctestrun file and
+                # the corresponding contents of the Build/Products directory that contains all
+                # the binaries needed to run the tests.
+              "xcodeVersion": "A String", # The Xcode version that should be used for the test.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+                  # Defaults to the latest Xcode version Firebase Test Lab supports.
+              "xctestrun": { # A reference to a file, used for user inputs. # An .xctestrun file that will override the .xctestrun file in the
+                  # tests zip. Because the .xctestrun file contains environment variables along
+                  # with test methods to run and/or ignore, this can be useful for sharding
+                  # tests. Default is taken from the tests zip.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "testsZip": { # A reference to a file, used for user inputs. # Required. The .zip containing the .xctestrun file and the contents of the
+                  # DerivedData/Build/Products directory.
+                  # The .xctestrun file in this zip is ignored if the xctestrun field is
+                  # specified.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "appBundleId": "A String", # Output only. The bundle id for the application under test.
+            },
+            "testTimeout": "A String", # Max time a test execution is allowed to run before it is
+                # automatically cancelled.
+                # The default value is 5 min.
+            "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.
+              "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.
+                },
+              },
+              "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.
+              "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",
+              ],
+              "filesToPush": [ # List of files to push to the device before starting the test.
+                { # A single device file description.
+                  "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.
+                  },
+                  "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
+                      },
+                  },
+                },
+              ],
+              "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
+                    },
+                },
+              ],
+              "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.
+                },
+              ],
+            },
+            "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
+            "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.
+              "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
+                  },
+              },
+              "scenarios": [ # The list of scenarios that should be run during the test.
+                  # The default is all test loops, derived from the application's
+                  # manifest.
+                42,
+              ],
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default is determined by examining the application's manifest.
+              "scenarioLabels": [ # The list of scenario labels that should be run during the test.
+                  # The scenario labels should map to labels defined in the application's
+                  # manifest. For example, player_experience and
+                  # com.google.test.loops.player_experience add all of the loops labeled in the
+                  # manifest with the com.google.test.loops.player_experience name to the
+                  # execution.
+                  # Scenarios can also be specified in the scenarios field.
+                "A String",
+              ],
+              "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
+                },
+            },
+            "disablePerformanceMetrics": True or False, # Disables performance metrics recording. May reduce test latency.
+            "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.
+              "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.
+                  "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.
+                  "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
+                  "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                      # element.
+                },
+              ],
+              "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
+                },
+              "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
+                },
+              "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.
+              "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.
+                  "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",
+                    ],
+                  },
+                  "timeout": "A String", # Timeout in seconds for each intent.
+                  "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.
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default value is determined by examining the application's manifest.
+              "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+            },
+            "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
+                # same process on a virtual or physical AndroidDevice.  They also specify
+                # a test runner class, such as com.google.GoogleTestRunner, which can vary
+                # on the specific instrumentation framework chosen.
+                #
+                # 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
+                  },
+              },
+              "testApk": { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
+                  "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                      # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+                },
+              "testRunnerClass": "A String", # The InstrumentationTestRunner class.
+                  # The default value is determined by examining the application's manifest.
+              "testPackageId": "A String", # The java package for the test to be executed.
+                  # 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
+                },
+              "appPackageId": "A String", # The java package for the application under test.
+                  # The default value is determined by examining the application's manifest.
+              "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
+                  # higher! **
+                  # Orchestrator offers the following benefits:
+                  #  - No shared state
+                  #  - Crashes are isolated
+                  #  - Logs are scoped per test
+                  #
+                  # See
+                  # <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+                  # for more information about Android Test Orchestrator.
+                  #
+                  # If not set, the test will be run without the orchestrator.
+              "testTargets": [ # Each target must be fully qualified with the package name or class name,
+                  # in one of these formats:
+                  #  - "package package_name"
+                  #  - "class package_name.class_name"
+                  #  - "class package_name.class_name#method_name"
+                  #
+                  # If empty, all targets in the module will be run.
+                "A String",
+              ],
+            },
+          },
+          "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.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "iosVersionId": "A String", # Required. The id of the iOS major software 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.
+              "iosModelId": "A String", # Required. The id of the iOS device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+            },
+            "androidDevice": { # A single Android device. # An Android device which must be used with an Android test.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # 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.
+              "androidModelId": "A String", # Required. The id of the Android device 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.
+            },
+          },
+          "state": "A String", # Output only. Indicates the current progress of the test execution
+              # (e.g., FINISHED).
+          "projectId": "A String", # Output only. The cloud project that owns the test execution.
+          "toolResultsStep": { # Represents a tool results step resource. # Output only. Where the results for this execution are written.
+              #
+              # This has the results of a TestExecution.
+            "projectId": "A String", # Output only. The cloud project that owns the tool results step.
+            "executionId": "A String", # Output only. A tool results execution ID.
+            "stepId": "A String", # Output only. A tool results step ID.
+            "historyId": "A String", # Output only. A tool results history ID.
+          },
+          "id": "A String", # Output only. Unique id set by the service.
+        },
+      ],
+      "testSpecification": { # A description of how to run the test. # Required. How to run the test.
+        "iosTestSetup": { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
+          "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.
+        },
+        "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
+            # .xctestrun file that contains a test specification (arguments, test methods,
+            # etc). This test type accepts a zip file containing the .xctestrun file and
+            # the corresponding contents of the Build/Products directory that contains all
+            # the binaries needed to run the tests.
+          "xcodeVersion": "A String", # The Xcode version that should be used for the test.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+              # Defaults to the latest Xcode version Firebase Test Lab supports.
+          "xctestrun": { # A reference to a file, used for user inputs. # An .xctestrun file that will override the .xctestrun file in the
+              # tests zip. Because the .xctestrun file contains environment variables along
+              # with test methods to run and/or ignore, this can be useful for sharding
+              # tests. Default is taken from the tests zip.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "testsZip": { # A reference to a file, used for user inputs. # Required. The .zip containing the .xctestrun file and the contents of the
+              # DerivedData/Build/Products directory.
+              # The .xctestrun file in this zip is ignored if the xctestrun field is
+              # specified.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "appBundleId": "A String", # Output only. The bundle id for the application under test.
+        },
+        "testTimeout": "A String", # Max time a test execution is allowed to run before it is
+            # automatically cancelled.
+            # The default value is 5 min.
+        "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.
+          "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.
+            },
+          },
+          "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.
+          "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",
+          ],
+          "filesToPush": [ # List of files to push to the device before starting the test.
+            { # A single device file description.
+              "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.
+              },
+              "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
+                  },
+              },
+            },
+          ],
+          "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
+                },
+            },
+          ],
+          "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.
+            },
+          ],
+        },
+        "disableVideoRecording": True or False, # Disables video recording. May reduce test latency.
+        "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.
+          "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
+              },
+          },
+          "scenarios": [ # The list of scenarios that should be run during the test.
+              # The default is all test loops, derived from the application's
+              # manifest.
+            42,
+          ],
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default is determined by examining the application's manifest.
+          "scenarioLabels": [ # The list of scenario labels that should be run during the test.
+              # The scenario labels should map to labels defined in the application's
+              # manifest. For example, player_experience and
+              # com.google.test.loops.player_experience add all of the loops labeled in the
+              # manifest with the com.google.test.loops.player_experience name to the
+              # execution.
+              # Scenarios can also be specified in the scenarios field.
+            "A String",
+          ],
+          "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
+            },
+        },
+        "disablePerformanceMetrics": True or False, # Disables performance metrics recording. May reduce test latency.
+        "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.
+          "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.
+              "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.
+              "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
+              "actionType": "A String", # Required. The type of action that Robo should perform on the specified
+                  # element.
+            },
+          ],
+          "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
+            },
+          "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
+            },
+          "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.
+          "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.
+              "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",
+                ],
+              },
+              "timeout": "A String", # Timeout in seconds for each intent.
+              "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.
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default value is determined by examining the application's manifest.
+          "appInitialActivity": "A String", # The initial activity that should be used to start the app.
+        },
+        "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
+            # same process on a virtual or physical AndroidDevice.  They also specify
+            # a test runner class, such as com.google.GoogleTestRunner, which can vary
+            # on the specific instrumentation framework chosen.
+            #
+            # 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
+              },
+          },
+          "testApk": { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
+              "gcsPath": "A String", # A path to a file in Google Cloud Storage.
+                  # Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+            },
+          "testRunnerClass": "A String", # The InstrumentationTestRunner class.
+              # The default value is determined by examining the application's manifest.
+          "testPackageId": "A String", # The java package for the test to be executed.
+              # 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
+            },
+          "appPackageId": "A String", # The java package for the application under test.
+              # The default value is determined by examining the application's manifest.
+          "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
+              # higher! **
+              # Orchestrator offers the following benefits:
+              #  - No shared state
+              #  - Crashes are isolated
+              #  - Logs are scoped per test
+              #
+              # See
+              # <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+              # for more information about Android Test Orchestrator.
+              #
+              # If not set, the test will be run without the orchestrator.
+          "testTargets": [ # Each target must be fully qualified with the package name or class name,
+              # in one of these formats:
+              #  - "package package_name"
+              #  - "class package_name.class_name"
+              #  - "class package_name.class_name#method_name"
+              #
+              # If empty, all targets in the module will be run.
+            "A String",
+          ],
+        },
+      },
+      "testMatrixId": "A String", # Output only. Unique id set by the service.
+      "timestamp": "A String", # Output only. The time this test matrix was initially created.
+      "invalidMatrixDetails": "A String", # Output only. Describes why the matrix is considered invalid.
+          # Only useful for matrices in the INVALID state.
+      "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.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # 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.
+              "androidModelId": "A String", # Required. The id of the Android device 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.
+            },
+          ],
+        },
+        "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.
+            #
+            # Only supported permutations will be instantiated.  Invalid permutations
+            # (e.g., incompatible models/versions) are ignored.
+          "locales": [ # Required. The set of locales the test device will enable for testing.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+          "androidModelIds": [ # Required. The ids of the set of Android device to be used.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+          "androidVersionIds": [ # Required. The ids of the set of Android OS version to be used.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+          "orientations": [ # Required. The set of orientations to test with.
+              # Use the TestEnvironmentDiscoveryService to get supported options.
+            "A String",
+          ],
+        },
+        "iosDeviceList": { # A list of iOS device configurations in which the test is to be executed. # A list of iOS devices.
+          "iosDevices": [ # Required. A list of iOS devices.
+            { # A single iOS device.
+              "locale": "A String", # Required. The locale the test device used for testing.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+              "iosVersionId": "A String", # Required. The id of the iOS major software 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.
+              "iosModelId": "A String", # Required. The id of the iOS device to be used.
+                  # Use the TestEnvironmentDiscoveryService to get supported options.
+            },
+          ],
+        },
+      },
+      "outcomeSummary": "A String", # Output Only. The overall outcome of the test.
+          # Only set when the test matrix state is FINISHED.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file