<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. This call returns immediately and cancellation proceeds asynchronously. 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</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(projectId, body=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates and runs a matrix of tests according to the given specifications. Unsupported environments will be returned in the state UNSUPPORTED. A test matrix is limited to use at most 2000 devices in parallel. 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 tries to use too many simultaneous devices.</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. 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</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 asynchronously. 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.
    &quot;testState&quot;: &quot;A String&quot;, # 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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(projectId, body=None, 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. A test matrix is limited to use at most 2000 devices in parallel. 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 tries to use too many simultaneous devices.

Args:
  projectId: string, The GCE project under which this job will run. (required)
  body: object, The request body.
    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.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
  &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
  &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
  &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
  &quot;failFast&quot;: True or False, # If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.
  &quot;flakyTestAttempts&quot;: 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.
  &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.
  &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
    &quot;toolResultsHistory&quot;: { # 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.
      &quot;projectId&quot;: &quot;A String&quot;, # Required. The cloud project that owns the tool results history.
      &quot;historyId&quot;: &quot;A String&quot;, # Required. A tool results history ID.
    },
    &quot;googleCloudStorage&quot;: { # A storage location within Google cloud storage (GCS). # Required.
      &quot;gcsPath&quot;: &quot;A String&quot;, # 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.
    },
    &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. This has the results of a TestMatrix. # Output only. The tool results execution that results are written to.
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
      &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
      &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
    },
    &quot;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
  },
  &quot;projectId&quot;: &quot;A String&quot;, # The cloud project that owns the test matrix.
  &quot;clientInfo&quot;: { # Information about the client which invoked the test. # Information about the client which invoked the test.
    &quot;name&quot;: &quot;A String&quot;, # Required. Client name, such as gcloud.
    &quot;clientInfoDetails&quot;: [ # The list of detailed information about client.
      { # Key-value pair of detailed information about the client which invoked the test. Examples: {&#x27;Version&#x27;, &#x27;1.0&#x27;}, {&#x27;Release Track&#x27;, &#x27;BETA&#x27;}.
        &quot;key&quot;: &quot;A String&quot;, # Required. The key of detailed client information.
        &quot;value&quot;: &quot;A String&quot;, # Required. The value of detailed client information.
      },
    ],
  },
  &quot;testExecutions&quot;: [ # Output only. The list of test executions that the service creates for this matrix.
    { # A single test executed in a single environment.
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
      &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
        &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress. For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;. During the course of execution new data may be appended to the end of progress_messages.
          &quot;A String&quot;,
        ],
        &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain human-readable details about the error.
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
        &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap scripts.
          &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
            { # A single device file description.
              &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
                &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
                &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
              },
              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. 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. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way.
                &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            },
          ],
          &quot;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
          &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device.
            &quot;A String&quot;,
          ],
          &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested. Currently capped at 100.
            { # An Android package file to install.
              &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed. Value is determined by examining the application&#x27;s manifest.
              &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
          ],
          &quot;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
            &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
          },
          &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
          &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for instrumentation tests).
            { # A key-value pair passed as an environment variable to the test.
              &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
              &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
            },
          ],
          &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
            &quot;googleAuto&quot;: { # Enables automatic Google account login. 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. # An automatic google login account.
            },
          },
        },
        &quot;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
          &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
          &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
              &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
          ],
          &quot;additionalIpas&quot;: [ # iOS apps to install in addition to those being directly tested.
            { # A reference to a file, used for user inputs.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          ],
          &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
              &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
          ],
        },
        &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
        &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min.
        &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, 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. # An iOS XCTest, via an .xctestrun file.
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;testsZip&quot;: { # 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.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;xctestrun&quot;: { # 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.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;testSpecialEntitlements&quot;: True or False, # The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement.
          &quot;xcodeVersion&quot;: &quot;A String&quot;, # 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.
        },
        &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. The intent \ will be implicitly added, since Games is the only user of this api, for the time being. # An Android Application with a Test Loop.
          &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. The default is all test loops, derived from the application&#x27;s manifest.
            42,
          ],
          &quot;scenarioLabels&quot;: [ # The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application&#x27;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.
            &quot;A String&quot;,
          ],
          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
          &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default is determined by examining the application&#x27;s manifest.
        },
        &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially. # An iOS application with a test loop.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
            42,
          ],
        },
        &quot;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
        &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component 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 for more information on types of Android tests. # An Android instrumentation test.
          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
          &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
            &quot;A String&quot;,
          ],
          &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.
          &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed. The default value is determined by examining the application&#x27;s manifest.
          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
          &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
          &quot;testApk&quot;: { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
            &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid. # Shards test cases into the specified groups of packages, classes, and/or methods.
              &quot;testTargetsForShard&quot;: [ # Required. Group of packages, classes, and/or test methods to be run for each shard. When any physical devices are selected, the number of test_targets_for_shard must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
                { # Test targets for a shard.
                  &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
                    &quot;A String&quot;,
                  ],
                },
              ],
            },
            &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to &quot;-e numShard&quot; &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid. # Uniformly shards test cases given a total number of shards.
              &quot;numShards&quot;: 42, # Required. Total number of shards. When any physical devices are selected, the number must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
            },
          },
        },
        &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes. Next tag: 30 # An Android robo test.
          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
          &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
          &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
          &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50.
          &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
            { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
              &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name.
              &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the &quot;foo&quot; part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html
              &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
            },
          ],
          &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
            &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
          &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
            { # Message for specifying the start activities to crawl.
              &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
                &quot;categories&quot;: [ # Intent categories to set on the intent.
                  &quot;A String&quot;,
                ],
                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
                &quot;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
              },
              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
              &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
              },
            },
          ],
          &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
          &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue for the crawl.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
      },
      &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
        &quot;numShards&quot;: 42, # Output only. The total number of shards.
        &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
          &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
            &quot;A String&quot;,
          ],
        },
        &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
      },
      &quot;toolResultsStep&quot;: { # Represents a tool results step resource. This has the results of a TestExecution. # Output only. Where the results for this execution are written.
        &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results step.
        &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
        &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
        &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
      },
      &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
      &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
      &quot;environment&quot;: { # The environment in which the test is run. # Output only. How the host machine(s) are configured.
        &quot;androidDevice&quot;: { # A single Android device. # An Android device which must be used with an Android test.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
        },
        &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
          &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;iosVersionId&quot;: &quot;A String&quot;, # Required. The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      },
    },
  ],
  &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
    &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap scripts.
      &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
        { # A single device file description.
          &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
            &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
          },
          &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
            &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. 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. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way.
            &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        },
      ],
      &quot;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
      &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device.
        &quot;A String&quot;,
      ],
      &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested. Currently capped at 100.
        { # An Android package file to install.
          &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed. Value is determined by examining the application&#x27;s manifest.
          &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
      ],
      &quot;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
        &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
      },
      &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
      &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for instrumentation tests).
        { # A key-value pair passed as an environment variable to the test.
          &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
          &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
        },
      ],
      &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
        &quot;googleAuto&quot;: { # Enables automatic Google account login. 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. # An automatic google login account.
        },
      },
    },
    &quot;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
      &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
      &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
          &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
      ],
      &quot;additionalIpas&quot;: [ # iOS apps to install in addition to those being directly tested.
        { # A reference to a file, used for user inputs.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
      ],
      &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
          &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
      ],
    },
    &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
    &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min.
    &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, 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. # An iOS XCTest, via an .xctestrun file.
      &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;testsZip&quot;: { # 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.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;xctestrun&quot;: { # 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.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;testSpecialEntitlements&quot;: True or False, # The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement.
      &quot;xcodeVersion&quot;: &quot;A String&quot;, # 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.
    },
    &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. The intent \ will be implicitly added, since Games is the only user of this api, for the time being. # An Android Application with a Test Loop.
      &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. The default is all test loops, derived from the application&#x27;s manifest.
        42,
      ],
      &quot;scenarioLabels&quot;: [ # The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application&#x27;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.
        &quot;A String&quot;,
      ],
      &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
        &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
      },
      &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default is determined by examining the application&#x27;s manifest.
    },
    &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially. # An iOS application with a test loop.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
        42,
      ],
    },
    &quot;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
    &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component 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 for more information on types of Android tests. # An Android instrumentation test.
      &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
      &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
        &quot;A String&quot;,
      ],
      &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.
      &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed. The default value is determined by examining the application&#x27;s manifest.
      &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
        &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
      },
      &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
      &quot;testApk&quot;: { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
        &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid. # Shards test cases into the specified groups of packages, classes, and/or methods.
          &quot;testTargetsForShard&quot;: [ # Required. Group of packages, classes, and/or test methods to be run for each shard. When any physical devices are selected, the number of test_targets_for_shard must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
            { # Test targets for a shard.
              &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to &quot;-e numShard&quot; &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid. # Uniformly shards test cases given a total number of shards.
          &quot;numShards&quot;: 42, # Required. Total number of shards. When any physical devices are selected, the number must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
        },
      },
    },
    &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes. Next tag: 30 # An Android robo test.
      &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
      &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
      &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
      &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50.
      &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
        { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
          &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name.
          &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the &quot;foo&quot; part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html
          &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
        },
      ],
      &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
        &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
      },
      &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
        { # Message for specifying the start activities to crawl.
          &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
            &quot;categories&quot;: [ # Intent categories to set on the intent.
              &quot;A String&quot;,
            ],
            &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
            &quot;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
          },
          &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
          &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
          },
        },
      ],
      &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
      &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue for the crawl.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
        },
    },
  },
  &quot;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
    &quot;iosDeviceList&quot;: { # A list of iOS device configurations in which the test is to be executed. # A list of iOS devices.
      &quot;iosDevices&quot;: [ # Required. A list of iOS devices.
        { # A single iOS device.
          &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;iosVersionId&quot;: &quot;A String&quot;, # Required. The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
    &quot;androidMatrix&quot;: { # A set of Android device configuration permutations is defined by the 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. # A matrix of Android devices.
      &quot;androidVersionIds&quot;: [ # Required. The ids of the set of Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
        &quot;A String&quot;,
      ],
      &quot;androidModelIds&quot;: [ # Required. The ids of the set of Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
        &quot;A String&quot;,
      ],
      &quot;locales&quot;: [ # Required. The set of locales the test device will enable for testing. Use the TestEnvironmentDiscoveryService to get supported options.
        &quot;A String&quot;,
      ],
      &quot;orientations&quot;: [ # Required. The set of orientations to test with. Use the TestEnvironmentDiscoveryService to get supported options.
        &quot;A String&quot;,
      ],
    },
    &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
      &quot;androidDevices&quot;: [ # Required. A list of Android devices.
        { # A single Android device.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
  },
}

  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.
    &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
    &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
    &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
    &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
    &quot;failFast&quot;: True or False, # If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.
    &quot;flakyTestAttempts&quot;: 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.
    &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.
    &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
      &quot;toolResultsHistory&quot;: { # 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.
        &quot;projectId&quot;: &quot;A String&quot;, # Required. The cloud project that owns the tool results history.
        &quot;historyId&quot;: &quot;A String&quot;, # Required. A tool results history ID.
      },
      &quot;googleCloudStorage&quot;: { # A storage location within Google cloud storage (GCS). # Required.
        &quot;gcsPath&quot;: &quot;A String&quot;, # 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.
      },
      &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. This has the results of a TestMatrix. # Output only. The tool results execution that results are written to.
        &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
        &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
        &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
      },
      &quot;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # The cloud project that owns the test matrix.
    &quot;clientInfo&quot;: { # Information about the client which invoked the test. # Information about the client which invoked the test.
      &quot;name&quot;: &quot;A String&quot;, # Required. Client name, such as gcloud.
      &quot;clientInfoDetails&quot;: [ # The list of detailed information about client.
        { # Key-value pair of detailed information about the client which invoked the test. Examples: {&#x27;Version&#x27;, &#x27;1.0&#x27;}, {&#x27;Release Track&#x27;, &#x27;BETA&#x27;}.
          &quot;key&quot;: &quot;A String&quot;, # Required. The key of detailed client information.
          &quot;value&quot;: &quot;A String&quot;, # Required. The value of detailed client information.
        },
      ],
    },
    &quot;testExecutions&quot;: [ # Output only. The list of test executions that the service creates for this matrix.
      { # A single test executed in a single environment.
        &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
        &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
        &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
          &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress. For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;. During the course of execution new data may be appended to the end of progress_messages.
            &quot;A String&quot;,
          ],
          &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain human-readable details about the error.
        },
        &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
        &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
          &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap scripts.
            &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
              { # A single device file description.
                &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
                  &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                    },
                  &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
                },
                &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                  &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. 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. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way.
                  &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                    },
                },
              },
            ],
            &quot;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
            &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device.
              &quot;A String&quot;,
            ],
            &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested. Currently capped at 100.
              { # An Android package file to install.
                &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed. Value is determined by examining the application&#x27;s manifest.
                &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            ],
            &quot;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
              &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
            },
            &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
            &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for instrumentation tests).
              { # A key-value pair passed as an environment variable to the test.
                &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
                &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
              },
            ],
            &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
              &quot;googleAuto&quot;: { # Enables automatic Google account login. 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. # An automatic google login account.
              },
            },
          },
          &quot;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
            &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
            &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
              { # A file or directory to install on the device before the test starts.
                &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
                &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            ],
            &quot;additionalIpas&quot;: [ # iOS apps to install in addition to those being directly tested.
              { # A reference to a file, used for user inputs.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            ],
            &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
              { # A file or directory to install on the device before the test starts.
                &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
                &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            ],
          },
          &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
          &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min.
          &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, 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. # An iOS XCTest, via an .xctestrun file.
            &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            &quot;testsZip&quot;: { # 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.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;xctestrun&quot;: { # 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.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;testSpecialEntitlements&quot;: True or False, # The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement.
            &quot;xcodeVersion&quot;: &quot;A String&quot;, # 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.
          },
          &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. The intent \ will be implicitly added, since Games is the only user of this api, for the time being. # An Android Application with a Test Loop.
            &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. The default is all test loops, derived from the application&#x27;s manifest.
              42,
            ],
            &quot;scenarioLabels&quot;: [ # The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application&#x27;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.
              &quot;A String&quot;,
            ],
            &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
              &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
            &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default is determined by examining the application&#x27;s manifest.
          },
          &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially. # An iOS application with a test loop.
            &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
              42,
            ],
          },
          &quot;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
          &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component 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 for more information on types of Android tests. # An Android instrumentation test.
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
            &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
              &quot;A String&quot;,
            ],
            &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.
            &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed. The default value is determined by examining the application&#x27;s manifest.
            &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
              &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
            &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
            &quot;testApk&quot;: { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
              &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid. # Shards test cases into the specified groups of packages, classes, and/or methods.
                &quot;testTargetsForShard&quot;: [ # Required. Group of packages, classes, and/or test methods to be run for each shard. When any physical devices are selected, the number of test_targets_for_shard must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
                  { # Test targets for a shard.
                    &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
                      &quot;A String&quot;,
                    ],
                  },
                ],
              },
              &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to &quot;-e numShard&quot; &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid. # Uniformly shards test cases given a total number of shards.
                &quot;numShards&quot;: 42, # Required. Total number of shards. When any physical devices are selected, the number must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
              },
            },
          },
          &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes. Next tag: 30 # An Android robo test.
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
            &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
            &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
            &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50.
            &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
              { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
                &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name.
                &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the &quot;foo&quot; part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html
                &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
              },
            ],
            &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
              &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
            &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
              { # Message for specifying the start activities to crawl.
                &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
                  &quot;categories&quot;: [ # Intent categories to set on the intent.
                    &quot;A String&quot;,
                  ],
                  &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
                  &quot;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                },
                &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
                &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
                },
              },
            ],
            &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue for the crawl.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        },
        &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
          &quot;numShards&quot;: 42, # Output only. The total number of shards.
          &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
            &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
              &quot;A String&quot;,
            ],
          },
          &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
        },
        &quot;toolResultsStep&quot;: { # Represents a tool results step resource. This has the results of a TestExecution. # Output only. Where the results for this execution are written.
          &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results step.
          &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
          &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
          &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
        },
        &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
        &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
        &quot;environment&quot;: { # The environment in which the test is run. # Output only. How the host machine(s) are configured.
          &quot;androidDevice&quot;: { # A single Android device. # An Android device which must be used with an Android test.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
          &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
            &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;iosVersionId&quot;: &quot;A String&quot;, # Required. The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        },
      },
    ],
    &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
      &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap scripts.
        &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
          { # A single device file description.
            &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
              &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
              &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
            },
            &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
              &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. 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. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way.
              &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
          },
        ],
        &quot;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
        &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device.
          &quot;A String&quot;,
        ],
        &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested. Currently capped at 100.
          { # An Android package file to install.
            &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed. Value is determined by examining the application&#x27;s manifest.
            &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        ],
        &quot;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
          &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
        },
        &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
        &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for instrumentation tests).
          { # A key-value pair passed as an environment variable to the test.
            &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
            &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
          },
        ],
        &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
          &quot;googleAuto&quot;: { # Enables automatic Google account login. 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. # An automatic google login account.
          },
        },
      },
      &quot;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
        &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
        &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
          { # A file or directory to install on the device before the test starts.
            &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
            &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        ],
        &quot;additionalIpas&quot;: [ # iOS apps to install in addition to those being directly tested.
          { # A reference to a file, used for user inputs.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        ],
        &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
          { # A file or directory to install on the device before the test starts.
            &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
            &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        ],
      },
      &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
      &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min.
      &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, 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. # An iOS XCTest, via an .xctestrun file.
        &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        &quot;testsZip&quot;: { # 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.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;xctestrun&quot;: { # 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.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;testSpecialEntitlements&quot;: True or False, # The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement.
        &quot;xcodeVersion&quot;: &quot;A String&quot;, # 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.
      },
      &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. The intent \ will be implicitly added, since Games is the only user of this api, for the time being. # An Android Application with a Test Loop.
        &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. The default is all test loops, derived from the application&#x27;s manifest.
          42,
        ],
        &quot;scenarioLabels&quot;: [ # The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application&#x27;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.
          &quot;A String&quot;,
        ],
        &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
          &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
        &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default is determined by examining the application&#x27;s manifest.
      },
      &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially. # An iOS application with a test loop.
        &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
          42,
        ],
      },
      &quot;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
      &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component 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 for more information on types of Android tests. # An Android instrumentation test.
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
        &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
          &quot;A String&quot;,
        ],
        &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.
        &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed. The default value is determined by examining the application&#x27;s manifest.
        &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
          &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
        &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
        &quot;testApk&quot;: { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
          &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid. # Shards test cases into the specified groups of packages, classes, and/or methods.
            &quot;testTargetsForShard&quot;: [ # Required. Group of packages, classes, and/or test methods to be run for each shard. When any physical devices are selected, the number of test_targets_for_shard must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
              { # Test targets for a shard.
                &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
                  &quot;A String&quot;,
                ],
              },
            ],
          },
          &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to &quot;-e numShard&quot; &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid. # Uniformly shards test cases given a total number of shards.
            &quot;numShards&quot;: 42, # Required. Total number of shards. When any physical devices are selected, the number must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
          },
        },
      },
      &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes. Next tag: 30 # An Android robo test.
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
        &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
        &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
        &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50.
        &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
          { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
            &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name.
            &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the &quot;foo&quot; part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html
            &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
          },
        ],
        &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
          &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
        &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
          { # Message for specifying the start activities to crawl.
            &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
              &quot;categories&quot;: [ # Intent categories to set on the intent.
                &quot;A String&quot;,
              ],
              &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              &quot;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
            },
            &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
            },
          },
        ],
        &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue for the crawl.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
      },
    },
    &quot;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
      &quot;iosDeviceList&quot;: { # A list of iOS device configurations in which the test is to be executed. # A list of iOS devices.
        &quot;iosDevices&quot;: [ # Required. A list of iOS devices.
          { # A single iOS device.
            &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;iosVersionId&quot;: &quot;A String&quot;, # Required. The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        ],
      },
      &quot;androidMatrix&quot;: { # A set of Android device configuration permutations is defined by the 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. # A matrix of Android devices.
        &quot;androidVersionIds&quot;: [ # Required. The ids of the set of Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
        &quot;androidModelIds&quot;: [ # Required. The ids of the set of Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
        &quot;locales&quot;: [ # Required. The set of locales the test device will enable for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
        &quot;orientations&quot;: [ # Required. The set of orientations to test with. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
      },
      &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
        &quot;androidDevices&quot;: [ # Required. A list of Android devices.
          { # A single Android device.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        ],
      },
    },
  }</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.
    &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
    &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
    &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
    &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
    &quot;failFast&quot;: True or False, # If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.
    &quot;flakyTestAttempts&quot;: 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.
    &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.
    &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
      &quot;toolResultsHistory&quot;: { # 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.
        &quot;projectId&quot;: &quot;A String&quot;, # Required. The cloud project that owns the tool results history.
        &quot;historyId&quot;: &quot;A String&quot;, # Required. A tool results history ID.
      },
      &quot;googleCloudStorage&quot;: { # A storage location within Google cloud storage (GCS). # Required.
        &quot;gcsPath&quot;: &quot;A String&quot;, # 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.
      },
      &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. This has the results of a TestMatrix. # Output only. The tool results execution that results are written to.
        &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
        &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
        &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
      },
      &quot;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # The cloud project that owns the test matrix.
    &quot;clientInfo&quot;: { # Information about the client which invoked the test. # Information about the client which invoked the test.
      &quot;name&quot;: &quot;A String&quot;, # Required. Client name, such as gcloud.
      &quot;clientInfoDetails&quot;: [ # The list of detailed information about client.
        { # Key-value pair of detailed information about the client which invoked the test. Examples: {&#x27;Version&#x27;, &#x27;1.0&#x27;}, {&#x27;Release Track&#x27;, &#x27;BETA&#x27;}.
          &quot;key&quot;: &quot;A String&quot;, # Required. The key of detailed client information.
          &quot;value&quot;: &quot;A String&quot;, # Required. The value of detailed client information.
        },
      ],
    },
    &quot;testExecutions&quot;: [ # Output only. The list of test executions that the service creates for this matrix.
      { # A single test executed in a single environment.
        &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
        &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
        &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
          &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress. For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;. During the course of execution new data may be appended to the end of progress_messages.
            &quot;A String&quot;,
          ],
          &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain human-readable details about the error.
        },
        &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
        &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
          &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap scripts.
            &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
              { # A single device file description.
                &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
                  &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                    },
                  &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
                },
                &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                  &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. 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. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way.
                  &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                    },
                },
              },
            ],
            &quot;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
            &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device.
              &quot;A String&quot;,
            ],
            &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested. Currently capped at 100.
              { # An Android package file to install.
                &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed. Value is determined by examining the application&#x27;s manifest.
                &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            ],
            &quot;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
              &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
            },
            &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
            &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for instrumentation tests).
              { # A key-value pair passed as an environment variable to the test.
                &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
                &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
              },
            ],
            &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
              &quot;googleAuto&quot;: { # Enables automatic Google account login. 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. # An automatic google login account.
              },
            },
          },
          &quot;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
            &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
            &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
              { # A file or directory to install on the device before the test starts.
                &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
                &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            ],
            &quot;additionalIpas&quot;: [ # iOS apps to install in addition to those being directly tested.
              { # A reference to a file, used for user inputs.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            ],
            &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
              { # A file or directory to install on the device before the test starts.
                &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
                &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
              },
            ],
          },
          &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
          &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min.
          &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, 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. # An iOS XCTest, via an .xctestrun file.
            &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            &quot;testsZip&quot;: { # 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.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;xctestrun&quot;: { # 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.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;testSpecialEntitlements&quot;: True or False, # The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement.
            &quot;xcodeVersion&quot;: &quot;A String&quot;, # 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.
          },
          &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. The intent \ will be implicitly added, since Games is the only user of this api, for the time being. # An Android Application with a Test Loop.
            &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. The default is all test loops, derived from the application&#x27;s manifest.
              42,
            ],
            &quot;scenarioLabels&quot;: [ # The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application&#x27;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.
              &quot;A String&quot;,
            ],
            &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
              &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
            &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default is determined by examining the application&#x27;s manifest.
          },
          &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially. # An iOS application with a test loop.
            &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
              42,
            ],
          },
          &quot;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
          &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component 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 for more information on types of Android tests. # An Android instrumentation test.
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
            &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
              &quot;A String&quot;,
            ],
            &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.
            &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed. The default value is determined by examining the application&#x27;s manifest.
            &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
              &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
            &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
            &quot;testApk&quot;: { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
              &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid. # Shards test cases into the specified groups of packages, classes, and/or methods.
                &quot;testTargetsForShard&quot;: [ # Required. Group of packages, classes, and/or test methods to be run for each shard. When any physical devices are selected, the number of test_targets_for_shard must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
                  { # Test targets for a shard.
                    &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
                      &quot;A String&quot;,
                    ],
                  },
                ],
              },
              &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to &quot;-e numShard&quot; &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid. # Uniformly shards test cases given a total number of shards.
                &quot;numShards&quot;: 42, # Required. Total number of shards. When any physical devices are selected, the number must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
              },
            },
          },
          &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes. Next tag: 30 # An Android robo test.
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
            &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
            &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
            &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50.
            &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
              { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
                &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name.
                &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the &quot;foo&quot; part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html
                &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
              },
            ],
            &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
              &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
            &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
              { # Message for specifying the start activities to crawl.
                &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
                  &quot;categories&quot;: [ # Intent categories to set on the intent.
                    &quot;A String&quot;,
                  ],
                  &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
                  &quot;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                },
                &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
                &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
                },
              },
            ],
            &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
            &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue for the crawl.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        },
        &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
          &quot;numShards&quot;: 42, # Output only. The total number of shards.
          &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
            &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
              &quot;A String&quot;,
            ],
          },
          &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
        },
        &quot;toolResultsStep&quot;: { # Represents a tool results step resource. This has the results of a TestExecution. # Output only. Where the results for this execution are written.
          &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results step.
          &quot;executionId&quot;: &quot;A String&quot;, # Output only. A tool results execution ID.
          &quot;historyId&quot;: &quot;A String&quot;, # Output only. A tool results history ID.
          &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
        },
        &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
        &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
        &quot;environment&quot;: { # The environment in which the test is run. # Output only. How the host machine(s) are configured.
          &quot;androidDevice&quot;: { # A single Android device. # An Android device which must be used with an Android test.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
          &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
            &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;iosVersionId&quot;: &quot;A String&quot;, # Required. The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        },
      },
    ],
    &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
      &quot;testSetup&quot;: { # A description of how to set up the Android device prior to running the test. # Test setup requirements for Android e.g. files to install, bootstrap scripts.
        &quot;filesToPush&quot;: [ # List of files to push to the device before starting the test.
          { # A single device file description.
            &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
              &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
              &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
            },
            &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
              &quot;devicePath&quot;: &quot;A String&quot;, # Required. Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. 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. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way.
              &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
            },
          },
        ],
        &quot;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
        &quot;directoriesToPull&quot;: [ # List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device.
          &quot;A String&quot;,
        ],
        &quot;additionalApks&quot;: [ # APKs to install in addition to those being directly tested. Currently capped at 100.
          { # An Android package file to install.
            &quot;packageName&quot;: &quot;A String&quot;, # The java package for the APK to be installed. Value is determined by examining the application&#x27;s manifest.
            &quot;location&quot;: { # A reference to a file, used for user inputs. # The path to an APK to be installed on the device before the test begins.
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        ],
        &quot;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
          &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
        },
        &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
        &quot;environmentVariables&quot;: [ # Environment variables to set for the test (only applicable for instrumentation tests).
          { # A key-value pair passed as an environment variable to the test.
            &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
            &quot;key&quot;: &quot;A String&quot;, # Key for the environment variable.
          },
        ],
        &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
          &quot;googleAuto&quot;: { # Enables automatic Google account login. 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. # An automatic google login account.
          },
        },
      },
      &quot;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
        &quot;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
        &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
          { # A file or directory to install on the device before the test starts.
            &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
            &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        ],
        &quot;additionalIpas&quot;: [ # iOS apps to install in addition to those being directly tested.
          { # A reference to a file, used for user inputs.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        ],
        &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
          { # A file or directory to install on the device before the test starts.
            &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
            &quot;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            &quot;content&quot;: { # A reference to a file, used for user inputs. # The source file
                &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
              },
          },
        ],
      },
      &quot;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
      &quot;testTimeout&quot;: &quot;A String&quot;, # Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min.
      &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, 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. # An iOS XCTest, via an .xctestrun file.
        &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        &quot;testsZip&quot;: { # 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.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;xctestrun&quot;: { # 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.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;testSpecialEntitlements&quot;: True or False, # The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement.
        &quot;xcodeVersion&quot;: &quot;A String&quot;, # 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.
      },
      &quot;androidTestLoop&quot;: { # A test of an Android Application with a Test Loop. The intent \ will be implicitly added, since Games is the only user of this api, for the time being. # An Android Application with a Test Loop.
        &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. The default is all test loops, derived from the application&#x27;s manifest.
          42,
        ],
        &quot;scenarioLabels&quot;: [ # The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application&#x27;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.
          &quot;A String&quot;,
        ],
        &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
          &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
        &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default is determined by examining the application&#x27;s manifest.
      },
      &quot;iosTestLoop&quot;: { # A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially. # An iOS application with a test loop.
        &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        &quot;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
          42,
        ],
      },
      &quot;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
      &quot;androidInstrumentationTest&quot;: { # A test of an Android application that can control an Android component 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 for more information on types of Android tests. # An Android instrumentation test.
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
        &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
          &quot;A String&quot;,
        ],
        &quot;orchestratorOption&quot;: &quot;A String&quot;, # The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.
        &quot;testPackageId&quot;: &quot;A String&quot;, # The java package for the test to be executed. The default value is determined by examining the application&#x27;s manifest.
        &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
          &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
        &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
        &quot;testApk&quot;: { # A reference to a file, used for user inputs. # Required. The APK containing the test code to be executed.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;shardingOption&quot;: { # Options for enabling sharding. # The option to run tests in multiple shards in parallel.
          &quot;manualSharding&quot;: { # Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid. # Shards test cases into the specified groups of packages, classes, and/or methods.
            &quot;testTargetsForShard&quot;: [ # Required. Group of packages, classes, and/or test methods to be run for each shard. When any physical devices are selected, the number of test_targets_for_shard must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
              { # Test targets for a shard.
                &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &quot;package com.my.packages&quot; &quot;class com.my.package.MyClass&quot;. The number of shard_test_targets must be greater than 0.
                  &quot;A String&quot;,
                ],
              },
            ],
          },
          &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to &quot;-e numShard&quot; &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid. # Uniformly shards test cases given a total number of shards.
            &quot;numShards&quot;: 42, # Required. Total number of shards. When any physical devices are selected, the number must be &gt;= 1 and &lt;= 50. When no physical devices are selected, the number must be &gt;= 1 and &lt;= 500.
          },
        },
      },
      &quot;androidRoboTest&quot;: { # A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes. Next tag: 30 # An Android robo test.
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
        &quot;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
        &quot;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
        &quot;maxDepth&quot;: 42, # The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50.
        &quot;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
          { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
            &quot;inputText&quot;: &quot;A String&quot;, # The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name.
            &quot;resourceName&quot;: &quot;A String&quot;, # Required. The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the &quot;foo&quot; part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html
            &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
          },
        ],
        &quot;appBundle&quot;: { # An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles. # A multi-apk app bundle for the application under test.
          &quot;bundleLocation&quot;: { # A reference to a file, used for user inputs. # .aab file representing the app bundle under test.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
        },
        &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
          { # Message for specifying the start activities to crawl.
            &quot;startActivity&quot;: { # A starting intent specified by an action, uri, and categories. # An intent that starts an activity with specific details.
              &quot;categories&quot;: [ # Intent categories to set on the intent.
                &quot;A String&quot;,
              ],
              &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              &quot;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
            },
            &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
            },
          },
        ],
        &quot;appApk&quot;: { # A reference to a file, used for user inputs. # The APK for the application under test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # A JSON file with a sequence of actions Robo should perform as a prologue for the crawl.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
      },
    },
    &quot;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
      &quot;iosDeviceList&quot;: { # A list of iOS device configurations in which the test is to be executed. # A list of iOS devices.
        &quot;iosDevices&quot;: [ # Required. A list of iOS devices.
          { # A single iOS device.
            &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;iosVersionId&quot;: &quot;A String&quot;, # Required. The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        ],
      },
      &quot;androidMatrix&quot;: { # A set of Android device configuration permutations is defined by the 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. # A matrix of Android devices.
        &quot;androidVersionIds&quot;: [ # Required. The ids of the set of Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
        &quot;androidModelIds&quot;: [ # Required. The ids of the set of Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
        &quot;locales&quot;: [ # Required. The set of locales the test device will enable for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
        &quot;orientations&quot;: [ # Required. The set of orientations to test with. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;A String&quot;,
        ],
      },
      &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
        &quot;androidDevices&quot;: [ # Required. A list of Android devices.
          { # A single Android device.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        ],
      },
    },
  }</pre>
</div>

</body></html>