<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="firebaseappdistribution_v1alpha.html">Firebase App Distribution API</a> . <a href="firebaseappdistribution_v1alpha.projects.html">projects</a> . <a href="firebaseappdistribution_v1alpha.projects.apps.html">apps</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="firebaseappdistribution_v1alpha.projects.apps.releases.html">releases()</a></code>
</p>
<p class="firstline">Returns the releases Resource.</p>

<p class="toc_element">
  <code><a href="firebaseappdistribution_v1alpha.projects.apps.testCases.html">testCases()</a></code>
</p>
<p class="firstline">Returns the testCases Resource.</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="#getTestConfig">getTestConfig(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets configuration for automated tests.</p>
<p class="toc_element">
  <code><a href="#updateTestConfig">updateTestConfig(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates automated test configuration.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="getTestConfig">getTestConfig(name, x__xgafv=None)</code>
  <pre>Gets configuration for automated tests.

Args:
  name: string, Required. The name of the `TestConfig` resource to retrieve. Format: `projects/{project_number}/apps/{app_id}/testConfig` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configuration for automated tests
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. Display name of the AI driven test. Required if the release test is created with multiple goals.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app_id}/testConfig`
  &quot;roboCrawler&quot;: { # Configuration for Robo crawler # Optional. Configuration for Robo crawler
    &quot;aiInstructions&quot;: { # Optional. Instructions for AI driven test
      &quot;steps&quot;: [ # Required. Steps to be accomplished by the AI
        { # A step to be accomplished by the AI
          &quot;assertion&quot;: &quot;A String&quot;, # An assertion to be checked by the AI
          &quot;goal&quot;: &quot;A String&quot;, # A goal to be accomplished by the AI
          &quot;hint&quot;: &quot;A String&quot;, # Optional. Hint text containing suggestions to help the agent accomplish the goal
          &quot;successCriteria&quot;: &quot;A String&quot;, # Optional. A description of criteria the agent should use to determine if the goal has been successfully completed
          &quot;testCase&quot;: &quot;A String&quot;, # Output only. The test case that contained this step. Note: The test case may have changed or been deleted since this step was created. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`
        },
      ],
    },
    &quot;loginCredential&quot;: { # Login credential for automated tests # Optional. Login credential for automated tests
      &quot;fieldHints&quot;: { # Hints to the crawler for identifying input fields # Optional. Hints to the crawler for identifying input fields
        &quot;passwordResourceName&quot;: &quot;A String&quot;, # Required. The Android resource name of the password 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;usernameResourceName&quot;: &quot;A String&quot;, # Required. The Android resource name of the username 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;google&quot;: True or False, # Optional. Are these credentials for Google?
      &quot;password&quot;: &quot;A String&quot;, # Optional. Password for automated tests
      &quot;username&quot;: &quot;A String&quot;, # Optional. Username for automated tests
    },
  },
  &quot;testDevices&quot;: [ # Optional. Tests will be run on this list of devices
    { # A device on which automated tests can be run.
      &quot;locale&quot;: &quot;A String&quot;, # Optional. The locale of the device (e.g. &quot;en_US&quot; for US English) during the test.
      &quot;model&quot;: &quot;A String&quot;, # Required. The device model.
      &quot;orientation&quot;: &quot;A String&quot;, # Optional. The orientation of the device during the test.
      &quot;version&quot;: &quot;A String&quot;, # Required. The version of the device (API level on Android).
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="updateTestConfig">updateTestConfig(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates automated test configuration.

Args:
  name: string, Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app_id}/testConfig` (required)
  body: object, The request body.
    The object takes the form of:

{ # Configuration for automated tests
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. Display name of the AI driven test. Required if the release test is created with multiple goals.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app_id}/testConfig`
  &quot;roboCrawler&quot;: { # Configuration for Robo crawler # Optional. Configuration for Robo crawler
    &quot;aiInstructions&quot;: { # Optional. Instructions for AI driven test
      &quot;steps&quot;: [ # Required. Steps to be accomplished by the AI
        { # A step to be accomplished by the AI
          &quot;assertion&quot;: &quot;A String&quot;, # An assertion to be checked by the AI
          &quot;goal&quot;: &quot;A String&quot;, # A goal to be accomplished by the AI
          &quot;hint&quot;: &quot;A String&quot;, # Optional. Hint text containing suggestions to help the agent accomplish the goal
          &quot;successCriteria&quot;: &quot;A String&quot;, # Optional. A description of criteria the agent should use to determine if the goal has been successfully completed
          &quot;testCase&quot;: &quot;A String&quot;, # Output only. The test case that contained this step. Note: The test case may have changed or been deleted since this step was created. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`
        },
      ],
    },
    &quot;loginCredential&quot;: { # Login credential for automated tests # Optional. Login credential for automated tests
      &quot;fieldHints&quot;: { # Hints to the crawler for identifying input fields # Optional. Hints to the crawler for identifying input fields
        &quot;passwordResourceName&quot;: &quot;A String&quot;, # Required. The Android resource name of the password 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;usernameResourceName&quot;: &quot;A String&quot;, # Required. The Android resource name of the username 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;google&quot;: True or False, # Optional. Are these credentials for Google?
      &quot;password&quot;: &quot;A String&quot;, # Optional. Password for automated tests
      &quot;username&quot;: &quot;A String&quot;, # Optional. Username for automated tests
    },
  },
  &quot;testDevices&quot;: [ # Optional. Tests will be run on this list of devices
    { # A device on which automated tests can be run.
      &quot;locale&quot;: &quot;A String&quot;, # Optional. The locale of the device (e.g. &quot;en_US&quot; for US English) during the test.
      &quot;model&quot;: &quot;A String&quot;, # Required. The device model.
      &quot;orientation&quot;: &quot;A String&quot;, # Optional. The orientation of the device during the test.
      &quot;version&quot;: &quot;A String&quot;, # Required. The version of the device (API level on Android).
    },
  ],
}

  updateMask: string, Optional. The list of fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configuration for automated tests
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. Display name of the AI driven test. Required if the release test is created with multiple goals.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app_id}/testConfig`
  &quot;roboCrawler&quot;: { # Configuration for Robo crawler # Optional. Configuration for Robo crawler
    &quot;aiInstructions&quot;: { # Optional. Instructions for AI driven test
      &quot;steps&quot;: [ # Required. Steps to be accomplished by the AI
        { # A step to be accomplished by the AI
          &quot;assertion&quot;: &quot;A String&quot;, # An assertion to be checked by the AI
          &quot;goal&quot;: &quot;A String&quot;, # A goal to be accomplished by the AI
          &quot;hint&quot;: &quot;A String&quot;, # Optional. Hint text containing suggestions to help the agent accomplish the goal
          &quot;successCriteria&quot;: &quot;A String&quot;, # Optional. A description of criteria the agent should use to determine if the goal has been successfully completed
          &quot;testCase&quot;: &quot;A String&quot;, # Output only. The test case that contained this step. Note: The test case may have changed or been deleted since this step was created. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`
        },
      ],
    },
    &quot;loginCredential&quot;: { # Login credential for automated tests # Optional. Login credential for automated tests
      &quot;fieldHints&quot;: { # Hints to the crawler for identifying input fields # Optional. Hints to the crawler for identifying input fields
        &quot;passwordResourceName&quot;: &quot;A String&quot;, # Required. The Android resource name of the password 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;usernameResourceName&quot;: &quot;A String&quot;, # Required. The Android resource name of the username 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;google&quot;: True or False, # Optional. Are these credentials for Google?
      &quot;password&quot;: &quot;A String&quot;, # Optional. Password for automated tests
      &quot;username&quot;: &quot;A String&quot;, # Optional. Username for automated tests
    },
  },
  &quot;testDevices&quot;: [ # Optional. Tests will be run on this list of devices
    { # A device on which automated tests can be run.
      &quot;locale&quot;: &quot;A String&quot;, # Optional. The locale of the device (e.g. &quot;en_US&quot; for US English) during the test.
      &quot;model&quot;: &quot;A String&quot;, # Required. The device model.
      &quot;orientation&quot;: &quot;A String&quot;, # Optional. The orientation of the device during the test.
      &quot;version&quot;: &quot;A String&quot;, # Required. The version of the device (API level on Android).
    },
  ],
}</pre>
</div>

</body></html>