<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>