<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;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
    &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;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;orientations&quot;: [ # Required. The set of orientations to test with. 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;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;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;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;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &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;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;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
        &quot;androidDevices&quot;: [ # Required. A list of Android devices.
          { # A single Android device.
            &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          },
        ],
      },
    },
    &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
    &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;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;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;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
        &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
          &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;numShards&quot;: 42, # Output only. The total number of shards.
          &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
        },
        &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;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
            &quot;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;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
            &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
            &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;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;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
        &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
          &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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
            &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;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;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;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;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;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;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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            &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;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;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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
            &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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                &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;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;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
          &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;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
              42,
            ],
            &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          },
          &quot;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
              { # A single device file description.
                &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                  &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                      &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                    },
                  &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;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;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
              &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
            },
            &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
              &quot;googleAuto&quot;: { # Enables automatic Google account login. 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;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;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
            &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;key&quot;: &quot;A String&quot;, # Key for the environment variable.
                &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
              },
            ],
            &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
            &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
            &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
              { # Message for specifying the start activities to crawl.
                &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
                },
                &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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                  &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
                },
                &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
              },
            ],
            &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;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
              { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
                &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
                &quot;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
            &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;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;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;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;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;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;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;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;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
        },
        &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;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
          &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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
        &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
        &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      },
    ],
    &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;projectId&quot;: &quot;A String&quot;, # The cloud project that owns the test matrix.
    &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
      &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. This has the results of a TestMatrix. # Output only. The tool results execution that results are written to.
        &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;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
      },
      &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;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
      &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;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
    &quot;clientInfo&quot;: { # Information about the client which invoked the test. # Information about the client which invoked the test.
      &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;name&quot;: &quot;A String&quot;, # Required. Client name, such as gcloud.
    },
    &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
      &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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
        &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;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;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;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;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;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;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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        &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;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;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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
        &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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            &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;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;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
      &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;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
          42,
        ],
        &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      },
      &quot;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
          { # A single device file description.
            &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
              &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
              &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;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;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
          &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
        },
        &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
          &quot;googleAuto&quot;: { # Enables automatic Google account login. 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;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;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
        &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;key&quot;: &quot;A String&quot;, # Key for the environment variable.
            &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
          },
        ],
        &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
        &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
        &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
          { # Message for specifying the start activities to crawl.
            &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
            },
            &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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
              &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
            },
            &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
          },
        ],
        &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;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
          { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
            &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
            &quot;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
        &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;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;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;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;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;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;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;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;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
    },
    &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
    &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.
  }

  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;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      &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;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;orientations&quot;: [ # Required. The set of orientations to test with. 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;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;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;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;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &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;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;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
          &quot;androidDevices&quot;: [ # Required. A list of Android devices.
            { # A single Android device.
              &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            },
          ],
        },
      },
      &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
      &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;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;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;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
          &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
            &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;numShards&quot;: 42, # Output only. The total number of shards.
            &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
          },
          &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;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;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;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &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;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;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
          &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
            &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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
              &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;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;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;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;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;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;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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
              &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;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;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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
              &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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                  &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;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;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                  &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
            &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;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
                42,
              ],
              &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            },
            &quot;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
                { # A single device file description.
                  &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                    &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                      },
                    &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;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;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
                &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
              },
              &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
                &quot;googleAuto&quot;: { # Enables automatic Google account login. 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;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;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
              &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;key&quot;: &quot;A String&quot;, # Key for the environment variable.
                  &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
                },
              ],
              &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
              &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
              &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
                { # Message for specifying the start activities to crawl.
                  &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
                  },
                  &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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                    &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
                  },
                  &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
                },
              ],
              &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;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
                { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
                  &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
                  &quot;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
              &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;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;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;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;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;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;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;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;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
          },
          &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;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
            &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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
          &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
          &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
        },
      ],
      &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;projectId&quot;: &quot;A String&quot;, # The cloud project that owns the test matrix.
      &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
        &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. This has the results of a TestMatrix. # Output only. The tool results execution that results are written to.
          &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;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
        },
        &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;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
        &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;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
      &quot;clientInfo&quot;: { # Information about the client which invoked the test. # Information about the client which invoked the test.
        &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;name&quot;: &quot;A String&quot;, # Required. Client name, such as gcloud.
      },
      &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
        &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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
          &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;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;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;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;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;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;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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &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;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;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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
          &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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
              &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;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;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
              &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
        &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;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
            42,
          ],
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        },
        &quot;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
            { # A single device file description.
              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
                &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;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;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
            &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
          },
          &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
            &quot;googleAuto&quot;: { # Enables automatic Google account login. 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;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;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
          &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;key&quot;: &quot;A String&quot;, # Key for the environment variable.
              &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
            },
          ],
          &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
          &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
            { # Message for specifying the start activities to crawl.
              &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
              },
              &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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              },
              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            },
          ],
          &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;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
            { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
              &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
              &quot;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
          &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;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;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;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;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;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;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;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;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
      },
      &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
      &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.
    }</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;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      &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;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;orientations&quot;: [ # Required. The set of orientations to test with. 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;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;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;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;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &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;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;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
          &quot;androidDevices&quot;: [ # Required. A list of Android devices.
            { # A single Android device.
              &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
            },
          ],
        },
      },
      &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
      &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;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;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;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
          &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
            &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;numShards&quot;: 42, # Output only. The total number of shards.
            &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
          },
          &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;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
              &quot;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;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
              &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
              &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;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;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
          &quot;testSpecification&quot;: { # A description of how to run the test. # Output only. How to run the test.
            &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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
              &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;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;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;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;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;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;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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
              &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;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;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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
              &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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                  &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;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;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
                  &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
            &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;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
                42,
              ],
              &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
            },
            &quot;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
                { # A single device file description.
                  &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                    &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                      },
                    &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;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;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
                &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
              },
              &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
                &quot;googleAuto&quot;: { # Enables automatic Google account login. 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;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;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
              &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;key&quot;: &quot;A String&quot;, # Key for the environment variable.
                  &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
                },
              ],
              &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
              &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
              &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
                { # Message for specifying the start activities to crawl.
                  &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
                  },
                  &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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                    &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
                  },
                  &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
                },
              ],
              &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;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
                { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
                  &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
                  &quot;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
              &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;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;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;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;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;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;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;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;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
          },
          &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;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
            &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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
          &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
          &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
        },
      ],
      &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;projectId&quot;: &quot;A String&quot;, # The cloud project that owns the test matrix.
      &quot;resultStorage&quot;: { # Locations where the results of running the test are stored. # Required. Where the results for the matrix are written.
        &quot;toolResultsExecution&quot;: { # Represents a tool results execution resource. This has the results of a TestMatrix. # Output only. The tool results execution that results are written to.
          &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;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the tool results execution.
        },
        &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;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
        &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;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
      &quot;clientInfo&quot;: { # Information about the client which invoked the test. # Information about the client which invoked the test.
        &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;name&quot;: &quot;A String&quot;, # Required. Client name, such as gcloud.
      },
      &quot;testSpecification&quot;: { # A description of how to run the test. # Required. How to run the test.
        &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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
          &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;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;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;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;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;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;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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &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;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;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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
          &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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
              &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;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;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
              &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
        &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;scenarios&quot;: [ # The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified.
            42,
          ],
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
        },
        &quot;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
            { # A single device file description.
              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                &quot;content&quot;: { # A reference to a file, used for user inputs. # Required. The source file.
                    &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                  },
                &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;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;systrace&quot;: { # Systrace configuration for the run. If set a systrace will be taken, starting on test start and lasting for the configured duration. The systrace file thus obtained is put in the results bucket together with the other artifacts from the run.
            &quot;durationSeconds&quot;: 42, # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace.
          },
          &quot;account&quot;: { # Identifies an account and how to log into it. # The device will be logged in on this account for the duration of the test.
            &quot;googleAuto&quot;: { # Enables automatic Google account login. 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;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;dontAutograntPermissions&quot;: True or False, # Whether to prevent all runtime permissions to be granted at app install
          &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;key&quot;: &quot;A String&quot;, # Key for the environment variable.
              &quot;value&quot;: &quot;A String&quot;, # Value for the environment variable.
            },
          ],
          &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
          &quot;appPackageId&quot;: &quot;A String&quot;, # The java package for the application under test. The default value is determined by examining the application&#x27;s manifest.
          &quot;startingIntents&quot;: [ # The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly).
            { # Message for specifying the start activities to crawl.
              &quot;launcherActivity&quot;: { # Specifies an intent that starts the main launcher activity. # An intent that starts the main launcher activity.
              },
              &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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              },
              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            },
          ],
          &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;roboDirectives&quot;: [ # A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided.
            { # Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.
              &quot;actionType&quot;: &quot;A String&quot;, # Required. The type of action that Robo should perform on the specified element.
              &quot;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
          &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;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;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;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;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;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;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;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;disableVideoRecording&quot;: True or False, # Disables video recording. May reduce test latency.
      },
      &quot;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
      &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.
    }</pre>
</div>

</body></html>