<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;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;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
    &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
      &quot;androidDevices&quot;: [ # Required. A list of Android devices.
        { # A single Android device.
          &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
    &quot;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;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;orientations&quot;: [ # Required. The set of orientations to test with. 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;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. 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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
  },
  &quot;failFast&quot;: True or False, # If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.
  &quot;flakyTestAttempts&quot;: 42, # The number of times a TestExecution should be re-attempted if one or more of its test cases fail for any reason. The maximum number of reruns allowed is 10. Default is 0, which implies no reruns.
  &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
  &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.
  &quot;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;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;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
    &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;historyId&quot;: &quot;A String&quot;, # Required. A tool results history ID.
      &quot;projectId&quot;: &quot;A String&quot;, # Required. The cloud project that owns the tool results history.
    },
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
  &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;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;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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
        &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
          &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
      &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
        &quot;numShards&quot;: 42, # Output only. The total number of shards.
        &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
        &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
          &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &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;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
      &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain human-readable details about the error.
        &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress. For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;. During the course of execution new data may be appended to the end of progress_messages.
          &quot;A String&quot;,
        ],
      },
      &quot;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;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;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;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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
          &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
            &quot;A String&quot;,
          ],
        },
        &quot;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;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
          &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
          &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;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;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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                &quot;categories&quot;: [ # Intent categories to set on the intent.
                  &quot;A String&quot;,
                ],
                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              },
              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            },
          ],
        },
        &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
        &quot;disableVideoRecording&quot;: True or False, # Disables video 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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
          &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;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
          &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            },
          ],
          &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            },
          ],
        },
        &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests. # An iOS XCTest, via an .xctestrun file.
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;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;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;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;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;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;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;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;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
            { # A single device file description.
              &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
                &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
                &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
              },
              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                &quot;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;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;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;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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
      &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;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 step.
        &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
      },
    },
  ],
  &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
  &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;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;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;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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
      &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
        &quot;A String&quot;,
      ],
    },
    &quot;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;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
      &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
      &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;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;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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
            &quot;categories&quot;: [ # Intent categories to set on the intent.
              &quot;A String&quot;,
            ],
            &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
          },
          &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
        },
      ],
    },
    &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
    &quot;disableVideoRecording&quot;: True or False, # Disables video 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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
      &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;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
      &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
        },
      ],
      &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
        },
      ],
    },
    &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests. # An iOS XCTest, via an .xctestrun file.
      &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;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;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;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;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;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;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;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;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
        { # A single device file description.
          &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
            &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
            &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
          },
          &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
            &quot;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;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;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;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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
}

  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;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;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
    &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
      &quot;androidDevices&quot;: [ # Required. A list of Android devices.
        { # A single Android device.
          &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
    &quot;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;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;orientations&quot;: [ # Required. The set of orientations to test with. 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;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. 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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
  },
  &quot;failFast&quot;: True or False, # If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.
  &quot;flakyTestAttempts&quot;: 42, # The number of times a TestExecution should be re-attempted if one or more of its test cases fail for any reason. The maximum number of reruns allowed is 10. Default is 0, which implies no reruns.
  &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
  &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.
  &quot;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;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;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
    &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;historyId&quot;: &quot;A String&quot;, # Required. A tool results history ID.
      &quot;projectId&quot;: &quot;A String&quot;, # Required. The cloud project that owns the tool results history.
    },
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
  &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;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;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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
        &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
          &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
      &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
        &quot;numShards&quot;: 42, # Output only. The total number of shards.
        &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
        &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
          &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &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;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
      &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain human-readable details about the error.
        &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress. For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;. During the course of execution new data may be appended to the end of progress_messages.
          &quot;A String&quot;,
        ],
      },
      &quot;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;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;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;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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
          &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
            &quot;A String&quot;,
          ],
        },
        &quot;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;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
          &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
          &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;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;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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                &quot;categories&quot;: [ # Intent categories to set on the intent.
                  &quot;A String&quot;,
                ],
                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              },
              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            },
          ],
        },
        &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
        &quot;disableVideoRecording&quot;: True or False, # Disables video 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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
          &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;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
          &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            },
          ],
          &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            },
          ],
        },
        &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests. # An iOS XCTest, via an .xctestrun file.
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;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;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;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;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;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;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;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;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
            { # A single device file description.
              &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
                &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
                &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
              },
              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                &quot;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;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;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;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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
      &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;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 step.
        &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
      },
    },
  ],
  &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
  &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;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;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;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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
      &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
        &quot;A String&quot;,
      ],
    },
    &quot;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;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
      &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
      &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;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;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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
            &quot;categories&quot;: [ # Intent categories to set on the intent.
              &quot;A String&quot;,
            ],
            &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
          },
          &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
        },
      ],
    },
    &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
    &quot;disableVideoRecording&quot;: True or False, # Disables video 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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
      &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;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
      &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
        },
      ],
      &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
        },
      ],
    },
    &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests. # An iOS XCTest, via an .xctestrun file.
      &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;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;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;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;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;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;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;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;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
        { # A single device file description.
          &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
            &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
            &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
          },
          &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
            &quot;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;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;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;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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
}</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;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;environmentMatrix&quot;: { # The matrix of environments in which the test is to be executed. # Required. The devices the tests are being executed on.
    &quot;androidDeviceList&quot;: { # A list of Android device configurations in which the test is to be executed. # A list of Android devices; the test will be run only on the specified devices.
      &quot;androidDevices&quot;: [ # Required. A list of Android devices.
        { # A single Android device.
          &quot;androidModelId&quot;: &quot;A String&quot;, # Required. The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;androidVersionId&quot;: &quot;A String&quot;, # Required. The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
    &quot;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;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;orientations&quot;: [ # Required. The set of orientations to test with. 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;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. 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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      ],
    },
  },
  &quot;failFast&quot;: True or False, # If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.
  &quot;flakyTestAttempts&quot;: 42, # The number of times a TestExecution should be re-attempted if one or more of its test cases fail for any reason. The maximum number of reruns allowed is 10. Default is 0, which implies no reruns.
  &quot;invalidMatrixDetails&quot;: &quot;A String&quot;, # Output only. Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.
  &quot;outcomeSummary&quot;: &quot;A String&quot;, # Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.
  &quot;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;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;resultsUrl&quot;: &quot;A String&quot;, # Output only. URL to the results in the Firebase Web Console.
    &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;historyId&quot;: &quot;A String&quot;, # Required. A tool results history ID.
      &quot;projectId&quot;: &quot;A String&quot;, # Required. The cloud project that owns the tool results history.
    },
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test matrix.
  &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;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;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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
        &quot;iosDevice&quot;: { # A single iOS device. # An iOS device which must be used with an iOS test.
          &quot;iosModelId&quot;: &quot;A String&quot;, # Required. The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;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;locale&quot;: &quot;A String&quot;, # Required. The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options.
          &quot;orientation&quot;: &quot;A String&quot;, # Required. How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
      &quot;matrixId&quot;: &quot;A String&quot;, # Output only. Id of the containing TestMatrix.
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. The cloud project that owns the test execution.
      &quot;shard&quot;: { # Output only. Details about the shard. # Output only. Details about the shard.
        &quot;numShards&quot;: 42, # Output only. The total number of shards.
        &quot;shardIndex&quot;: 42, # Output only. The index of the shard among all the shards.
        &quot;testTargetsForShard&quot;: { # Test targets for a shard. # Output only. Test targets for each shard.
          &quot;testTargets&quot;: [ # Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, &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;state&quot;: &quot;A String&quot;, # Output only. Indicates the current progress of the test execution (e.g., FINISHED).
      &quot;testDetails&quot;: { # Additional details about the progress of the running test. # Output only. Additional details about the running test.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Output only. If the TestState is ERROR, then this string will contain human-readable details about the error.
        &quot;progressMessages&quot;: [ # Output only. Human-readable, detailed descriptions of the test&#x27;s progress. For example: &quot;Provisioning a device&quot;, &quot;Starting Test&quot;. During the course of execution new data may be appended to the end of progress_messages.
          &quot;A String&quot;,
        ],
      },
      &quot;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;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;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;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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
          &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
            &quot;A String&quot;,
          ],
        },
        &quot;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;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
          &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
          &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;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;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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
                &quot;categories&quot;: [ # Intent categories to set on the intent.
                  &quot;A String&quot;,
                ],
                &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
              },
              &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
            },
          ],
        },
        &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
        &quot;disableVideoRecording&quot;: True or False, # Disables video 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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
          &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;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
          &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            },
          ],
          &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
            { # A file or directory to install on the device before the test starts.
              &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
              &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
            },
          ],
        },
        &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests. # An iOS XCTest, via an .xctestrun file.
          &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
          &quot;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;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;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;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;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;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;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;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
            { # A single device file description.
              &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
                &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
                  &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
                },
                &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
              },
              &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
                &quot;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;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;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;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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test execution was initially created.
      &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;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 step.
        &quot;stepId&quot;: &quot;A String&quot;, # Output only. A tool results step ID.
      },
    },
  ],
  &quot;testMatrixId&quot;: &quot;A String&quot;, # Output only. Unique id set by the service.
  &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;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;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;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;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;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;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;testRunnerClass&quot;: &quot;A String&quot;, # The InstrumentationTestRunner class. The default value is determined by examining the application&#x27;s manifest.
      &quot;testTargets&quot;: [ # Each target must be fully qualified with the package name or class name, in one of these formats: - &quot;package package_name&quot; - &quot;class package_name.class_name&quot; - &quot;class package_name.class_name#method_name&quot; If empty, all targets in the module will be run.
        &quot;A String&quot;,
      ],
    },
    &quot;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;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;appInitialActivity&quot;: &quot;A String&quot;, # The initial activity that should be used to start the app.
      &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;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;maxSteps&quot;: 42, # The max number of steps Robo can execute. Default is no limit.
      &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;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;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;action&quot;: &quot;A String&quot;, # Action name. Required for START_ACTIVITY.
            &quot;categories&quot;: [ # Intent categories to set on the intent.
              &quot;A String&quot;,
            ],
            &quot;uri&quot;: &quot;A String&quot;, # URI for the action.
          },
          &quot;timeout&quot;: &quot;A String&quot;, # Timeout in seconds for each intent.
        },
      ],
    },
    &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;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;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;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;disablePerformanceMetrics&quot;: True or False, # Disables performance metrics recording. May reduce test latency.
    &quot;disableVideoRecording&quot;: True or False, # Disables video 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;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The .ipa of the application to test.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%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;iosTestSetup&quot;: { # A description of how to set up an iOS device prior to running the test. # Test setup requirements for iOS.
      &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;networkProfile&quot;: &quot;A String&quot;, # The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
      &quot;pullDirectories&quot;: [ # List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (e.g. /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (e.g. /Documents) by specifying the bundle id.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
        },
      ],
      &quot;pushFiles&quot;: [ # List of files to push to the device before starting the test.
        { # A file or directory to install on the device before the test starts.
          &quot;bundleId&quot;: &quot;A String&quot;, # The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device.
          &quot;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;devicePath&quot;: &quot;A String&quot;, # Location of the file on the device, inside the app&#x27;s sandboxed filesystem
        },
      ],
    },
    &quot;iosXcTest&quot;: { # A test of an iOS application that uses the XCTest framework. Xcode supports the option to &quot;build for testing&quot;, which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests. # An iOS XCTest, via an .xctestrun file.
      &quot;appBundleId&quot;: &quot;A String&quot;, # Output only. The bundle id for the application under test.
      &quot;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;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;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;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;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;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;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;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;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;filesToPush&quot;: [ # List of files to push to the device before starting the test.
        { # A single device file description.
          &quot;obbFile&quot;: { # An opaque binary blob file to install on the device before the test starts. # A reference to an opaque binary blob file.
            &quot;obb&quot;: { # A reference to a file, used for user inputs. # Required. Opaque Binary Blob (OBB) file(s) to install on the device.
              &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
            },
            &quot;obbFileName&quot;: &quot;A String&quot;, # Required. OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \/Android/obb/\/ on the device.
          },
          &quot;regularFile&quot;: { # A file or directory to install on the device before the test starts. # A reference to a regular file.
            &quot;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;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;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;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;timestamp&quot;: &quot;A String&quot;, # Output only. The time this test matrix was initially created.
}</pre>
</div>

</body></html>