<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. The returned matrix will not yet contain the executions that will be created for this matrix. Execution creation happens later on and will require a call to GetTestMatrix. 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 and the executions once they are created. The test matrix will contain the list of test executions to run if and only if the resultStorage.toolResultsExecution fields have been populated. Note: Flaky test executions may be added to the matrix at a later stage. 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. The returned matrix will not yet contain the executions that will be created for this matrix. Execution creation happens later on and will require a call to GetTestMatrix. 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;estimatedShardDuration&quot;: &quot;A String&quot;, # Output only. The estimated shard duration based on previous test case timing records, if available.
        &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. Only set for manual sharding.
          &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 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.1 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 manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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 test_targets must be greater than 0.
                    &quot;A String&quot;,
                  ],
                },
              ],
            },
            &quot;smartSharding&quot;: { # Shards test based on previous test case timing records. # Shards test based on previous test case timing records.
              &quot;targetedShardDuration&quot;: &quot;A String&quot;, # The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &lt;= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota.
            },
            &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to &quot;-e numShard&quot; and &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. # Uniformly shards test cases given a total number of shards.
              &quot;numShards&quot;: 42, # Required. The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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. # 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;roboMode&quot;: &quot;A String&quot;, # The mode in which Robo should run. Most clients should allow the server to populate this field automatically.
          &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;noActivity&quot;: { # Skips the starting activity # Skips the starting 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;iosRoboTest&quot;: { # A test that explores an iOS application on an iOS device. # An iOS Robo test.
          &quot;appBundleId&quot;: &quot;A String&quot;, # The bundle ID for the app-under-test. This is determined by examining the application&#x27;s &quot;Info.plist&quot; file.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The ipa stored at this file should be used to run the test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
          &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        },
        &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 (such as /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (such as /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. These will be installed after the app under test. 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;initialSetupApks&quot;: [ # Optional. Initial setup APKs to install before the app under test is installed. 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;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. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.
            &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.1 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 manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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 test_targets must be greater than 0.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;smartSharding&quot;: { # Shards test based on previous test case timing records. # Shards test based on previous test case timing records.
          &quot;targetedShardDuration&quot;: &quot;A String&quot;, # The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &lt;= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota.
        },
        &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to &quot;-e numShard&quot; and &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. # Uniformly shards test cases given a total number of shards.
          &quot;numShards&quot;: 42, # Required. The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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. # 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;roboMode&quot;: &quot;A String&quot;, # The mode in which Robo should run. Most clients should allow the server to populate this field automatically.
      &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;noActivity&quot;: { # Skips the starting activity # Skips the starting 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;iosRoboTest&quot;: { # A test that explores an iOS application on an iOS device. # An iOS Robo test.
      &quot;appBundleId&quot;: &quot;A String&quot;, # The bundle ID for the app-under-test. This is determined by examining the application&#x27;s &quot;Info.plist&quot; file.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The ipa stored at this file should be used to run the test.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
      },
      &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
      },
    },
    &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 (such as /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (such as /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. These will be installed after the app under test. 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;initialSetupApks&quot;: [ # Optional. Initial setup APKs to install before the app under test is installed. 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;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. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.
        &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;estimatedShardDuration&quot;: &quot;A String&quot;, # Output only. The estimated shard duration based on previous test case timing records, if available.
        &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. Only set for manual sharding.
          &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 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.1 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 manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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 test_targets must be greater than 0.
                    &quot;A String&quot;,
                  ],
                },
              ],
            },
            &quot;smartSharding&quot;: { # Shards test based on previous test case timing records. # Shards test based on previous test case timing records.
              &quot;targetedShardDuration&quot;: &quot;A String&quot;, # The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &lt;= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota.
            },
            &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to &quot;-e numShard&quot; and &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. # Uniformly shards test cases given a total number of shards.
              &quot;numShards&quot;: 42, # Required. The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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. # 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;roboMode&quot;: &quot;A String&quot;, # The mode in which Robo should run. Most clients should allow the server to populate this field automatically.
          &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;noActivity&quot;: { # Skips the starting activity # Skips the starting 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;iosRoboTest&quot;: { # A test that explores an iOS application on an iOS device. # An iOS Robo test.
          &quot;appBundleId&quot;: &quot;A String&quot;, # The bundle ID for the app-under-test. This is determined by examining the application&#x27;s &quot;Info.plist&quot; file.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The ipa stored at this file should be used to run the test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
          &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        },
        &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 (such as /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (such as /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. These will be installed after the app under test. 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;initialSetupApks&quot;: [ # Optional. Initial setup APKs to install before the app under test is installed. 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;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. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.
            &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.1 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 manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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 test_targets must be greater than 0.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;smartSharding&quot;: { # Shards test based on previous test case timing records. # Shards test based on previous test case timing records.
          &quot;targetedShardDuration&quot;: &quot;A String&quot;, # The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &lt;= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota.
        },
        &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to &quot;-e numShard&quot; and &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. # Uniformly shards test cases given a total number of shards.
          &quot;numShards&quot;: 42, # Required. The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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. # 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;roboMode&quot;: &quot;A String&quot;, # The mode in which Robo should run. Most clients should allow the server to populate this field automatically.
      &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;noActivity&quot;: { # Skips the starting activity # Skips the starting 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;iosRoboTest&quot;: { # A test that explores an iOS application on an iOS device. # An iOS Robo test.
      &quot;appBundleId&quot;: &quot;A String&quot;, # The bundle ID for the app-under-test. This is determined by examining the application&#x27;s &quot;Info.plist&quot; file.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The ipa stored at this file should be used to run the test.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
      },
      &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
      },
    },
    &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 (such as /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (such as /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. These will be installed after the app under test. 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;initialSetupApks&quot;: [ # Optional. Initial setup APKs to install before the app under test is installed. 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;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. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.
        &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 and the executions once they are created. The test matrix will contain the list of test executions to run if and only if the resultStorage.toolResultsExecution fields have been populated. Note: Flaky test executions may be added to the matrix at a later stage. 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;estimatedShardDuration&quot;: &quot;A String&quot;, # Output only. The estimated shard duration based on previous test case timing records, if available.
        &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. Only set for manual sharding.
          &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 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.1 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 manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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 test_targets must be greater than 0.
                    &quot;A String&quot;,
                  ],
                },
              ],
            },
            &quot;smartSharding&quot;: { # Shards test based on previous test case timing records. # Shards test based on previous test case timing records.
              &quot;targetedShardDuration&quot;: &quot;A String&quot;, # The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &lt;= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota.
            },
            &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to &quot;-e numShard&quot; and &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. # Uniformly shards test cases given a total number of shards.
              &quot;numShards&quot;: 42, # Required. The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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. # 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;roboMode&quot;: &quot;A String&quot;, # The mode in which Robo should run. Most clients should allow the server to populate this field automatically.
          &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;noActivity&quot;: { # Skips the starting activity # Skips the starting 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;iosRoboTest&quot;: { # A test that explores an iOS application on an iOS device. # An iOS Robo test.
          &quot;appBundleId&quot;: &quot;A String&quot;, # The bundle ID for the app-under-test. This is determined by examining the application&#x27;s &quot;Info.plist&quot; file.
          &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The ipa stored at this file should be used to run the test.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
          &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts.
            &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
          },
        },
        &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 (such as /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (such as /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. These will be installed after the app under test. 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;initialSetupApks&quot;: [ # Optional. Initial setup APKs to install before the app under test is installed. 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;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. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.
            &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.1 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 manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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 test_targets must be greater than 0.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;smartSharding&quot;: { # Shards test based on previous test case timing records. # Shards test based on previous test case timing records.
          &quot;targetedShardDuration&quot;: &quot;A String&quot;, # The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &lt;= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota.
        },
        &quot;uniformSharding&quot;: { # Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to &quot;-e numShard&quot; and &quot;-e shardIndex&quot; AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. # Uniformly shards test cases given a total number of shards.
          &quot;numShards&quot;: 42, # Required. The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be &lt;= 50. When you select one or more ARM virtual devices, it must be &lt;= 200. When you select only x86 virtual devices, it must be &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. # 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;roboMode&quot;: &quot;A String&quot;, # The mode in which Robo should run. Most clients should allow the server to populate this field automatically.
      &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;noActivity&quot;: { # Skips the starting activity # Skips the starting 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;iosRoboTest&quot;: { # A test that explores an iOS application on an iOS device. # An iOS Robo test.
      &quot;appBundleId&quot;: &quot;A String&quot;, # The bundle ID for the app-under-test. This is determined by examining the application&#x27;s &quot;Info.plist&quot; file.
      &quot;appIpa&quot;: { # A reference to a file, used for user inputs. # Required. The ipa stored at this file should be used to run the test.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
      },
      &quot;roboScript&quot;: { # A reference to a file, used for user inputs. # An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts.
        &quot;gcsPath&quot;: &quot;A String&quot;, # A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)
      },
    },
    &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 (such as /private/var/mobile/Media) or within an accessible directory inside the app&#x27;s filesystem (such as /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. These will be installed after the app under test. 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;initialSetupApks&quot;: [ # Optional. Initial setup APKs to install before the app under test is installed. 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;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. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.
        &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>