<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="toolresults_v1beta3.html">Cloud Tool Results API</a> . <a href="toolresults_v1beta3.projects.html">projects</a> . <a href="toolresults_v1beta3.projects.histories.html">histories</a> . <a href="toolresults_v1beta3.projects.histories.executions.html">executions</a> . <a href="toolresults_v1beta3.projects.histories.executions.environments.html">environments</a></h1>
<h2>Instance Methods</h2>
<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="#get">get(projectId, historyId, executionId, environmentId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an Environment. 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 Environment does not exist</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, historyId, executionId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Environments for a given Execution. The Environments are sorted by display name. 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 containing Execution does not exist</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="get">get(projectId, historyId, executionId, environmentId, x__xgafv=None)</code>
  <pre>Gets an Environment. 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 Environment does not exist

Args:
  projectId: string, Required. A Project id. (required)
  historyId: string, Required. A History id. (required)
  executionId: string, Required. An Execution id. (required)
  environmentId: string, Required. An Environment id. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Environment represents the set of test runs (Steps) from the parent Execution that are configured with the same set of dimensions (Model, Version, Locale, and Orientation). Multiple such runs occur particularly because of features like sharding (splitting up a test suite to run in parallel across devices) and reruns (running a test multiple times to check for different outcomes).
  &quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Output only. The time when the Environment status was set to complete. This value will be set automatically when state transitions to COMPLETE.
    &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive.
    &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
  },
  &quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Output only. The time when the Environment was created.
    &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive.
    &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
  },
  &quot;dimensionValue&quot;: [ # Dimension values describing the environment. Dimension values always consist of &quot;Model&quot;, &quot;Version&quot;, &quot;Locale&quot;, and &quot;Orientation&quot;. - In response: always set - In create request: always set - In update request: never set
    {
      &quot;key&quot;: &quot;A String&quot;,
      &quot;value&quot;: &quot;A String&quot;,
    },
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI. Maximum of 100 characters. For example: Nexus 5, API 27.
  &quot;environmentId&quot;: &quot;A String&quot;, # Output only. An Environment id.
  &quot;environmentResult&quot;: { # Merged test result for environment. If the environment has only one step (no reruns or shards), then the merged result is the same as the step result. If the environment has multiple shards and/or reruns, then the results of shards and reruns that belong to the same environment are merged into one environment result. # Merged result of the environment.
    &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
      &quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE. Optional
        &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
        &quot;deviceOutOfMemory&quot;: True or False, # If the device ran out of memory during a test, causing the test to crash.
        &quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a Roboscript action or assertion failed or a Roboscript action could not be matched during the entire crawl.
        &quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform.
        &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
        &quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
        &quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
      },
      &quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE. Optional
        &quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be determined. For example, the user pressed ctrl-c which sent a kill signal to the test runner while the test was running.
        &quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of infrastructure failures
        &quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test depends on a component other than the system under test which failed. For example, a mobile test requires provisioning a device where the test executes, and that provisioning can fail.
      },
      &quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED. Optional
        &quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
        &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
        &quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
      },
      &quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. LINT.IfChange # More information about a SUCCESS outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS. Optional
        &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
      },
      &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result. Required
    },
    &quot;state&quot;: &quot;A String&quot;, # State of the resource
    &quot;testSuiteOverviews&quot;: [ # The combined and rolled-up result of each test suite that was run as part of this environment. Combining: When the test cases from a suite are run in different steps (sharding), the results are added back together in one overview. (e.g., if shard1 has 2 failures and shard2 has 1 failure than the overview failure_count = 3). Rollup: When test cases from the same suite are run multiple times (flaky), the results are combined (e.g., if testcase1.run1 fails, testcase1.run2 passes, and both testcase2.run1 and testcase2.run2 fail then the overview flaky_count = 1 and failure_count = 1).
      { # A summary of a test suite result either parsed from XML or uploaded directly by a user. Note: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.
        &quot;elapsedTime&quot;: { #  A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years. # Elapsed time of test suite.
          &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive.
          &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
        },
        &quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
        &quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the xml_source. May also be set by the user. - In create/response: always set - In update request: never
        &quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test attempts. Present only for rollup test suite overview at environment level. A step cannot have flaky test cases.
        &quot;name&quot;: &quot;A String&quot;, # The name of the test suite. - In create/response: always set - In update request: never
        &quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
        &quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
        &quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original XML file is stored. Note: Multiple test suites can share the same xml_source Returns INVALID_ARGUMENT if the uri format is not supported. - In create/response: optional - In update request: never
          &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
        },
      },
    ],
  },
  &quot;executionId&quot;: &quot;A String&quot;, # Output only. An Execution id.
  &quot;historyId&quot;: &quot;A String&quot;, # Output only. A History id.
  &quot;projectId&quot;: &quot;A String&quot;, # Output only. A Project id.
  &quot;resultsStorage&quot;: { # The storage for test results. # The location where output files are stored in the user bucket.
    &quot;resultsStoragePath&quot;: { # A reference to a file. # The root directory for test results.
      &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
    },
    &quot;xunitXmlFile&quot;: { # A reference to a file. # The path to the Xunit XML file.
      &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
    },
  },
  &quot;shardSummaries&quot;: [ # Output only. Summaries of shards. Only one shard will present unless sharding feature is enabled in TestExecutionService.
    { # Result summary for a shard in an environment.
      &quot;runs&quot;: [ # Summaries of the steps belonging to the shard. With flaky_test_attempts enabled from TestExecutionService, more than one run (Step) can present. And the runs will be sorted by multistep_number.
        { # Lightweight summary of a step within this execution.
        },
      ],
      &quot;shardResult&quot;: { # Merged test result for environment. If the environment has only one step (no reruns or shards), then the merged result is the same as the step result. If the environment has multiple shards and/or reruns, then the results of shards and reruns that belong to the same environment are merged into one environment result. # Merged result of the shard.
        &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
          &quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE. Optional
            &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
            &quot;deviceOutOfMemory&quot;: True or False, # If the device ran out of memory during a test, causing the test to crash.
            &quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a Roboscript action or assertion failed or a Roboscript action could not be matched during the entire crawl.
            &quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform.
            &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
            &quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
            &quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
          },
          &quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE. Optional
            &quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be determined. For example, the user pressed ctrl-c which sent a kill signal to the test runner while the test was running.
            &quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of infrastructure failures
            &quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test depends on a component other than the system under test which failed. For example, a mobile test requires provisioning a device where the test executes, and that provisioning can fail.
          },
          &quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED. Optional
            &quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
            &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
            &quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
          },
          &quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. LINT.IfChange # More information about a SUCCESS outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS. Optional
            &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
          },
          &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result. Required
        },
        &quot;state&quot;: &quot;A String&quot;, # State of the resource
        &quot;testSuiteOverviews&quot;: [ # The combined and rolled-up result of each test suite that was run as part of this environment. Combining: When the test cases from a suite are run in different steps (sharding), the results are added back together in one overview. (e.g., if shard1 has 2 failures and shard2 has 1 failure than the overview failure_count = 3). Rollup: When test cases from the same suite are run multiple times (flaky), the results are combined (e.g., if testcase1.run1 fails, testcase1.run2 passes, and both testcase2.run1 and testcase2.run2 fail then the overview flaky_count = 1 and failure_count = 1).
          { # A summary of a test suite result either parsed from XML or uploaded directly by a user. Note: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.
            &quot;elapsedTime&quot;: { #  A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years. # Elapsed time of test suite.
              &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive.
              &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
            },
            &quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
            &quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the xml_source. May also be set by the user. - In create/response: always set - In update request: never
            &quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test attempts. Present only for rollup test suite overview at environment level. A step cannot have flaky test cases.
            &quot;name&quot;: &quot;A String&quot;, # The name of the test suite. - In create/response: always set - In update request: never
            &quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
            &quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
            &quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original XML file is stored. Note: Multiple test suites can share the same xml_source Returns INVALID_ARGUMENT if the uri format is not supported. - In create/response: optional - In update request: never
              &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
            },
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, historyId, executionId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists Environments for a given Execution. The Environments are sorted by display name. 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 containing Execution does not exist

Args:
  projectId: string, Required. A Project id. (required)
  historyId: string, Required. A History id. (required)
  executionId: string, Required. An Execution id. (required)
  pageSize: integer, The maximum number of Environments to fetch. Default value: 25. The server will use this default if the field is not set or has a value of 0.
  pageToken: string, A continuation token to resume the query at the next item.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for EnvironmentService.ListEnvironments.
  &quot;environments&quot;: [ # Environments. Always set.
    { # An Environment represents the set of test runs (Steps) from the parent Execution that are configured with the same set of dimensions (Model, Version, Locale, and Orientation). Multiple such runs occur particularly because of features like sharding (splitting up a test suite to run in parallel across devices) and reruns (running a test multiple times to check for different outcomes).
      &quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Output only. The time when the Environment status was set to complete. This value will be set automatically when state transitions to COMPLETE.
        &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
      },
      &quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Output only. The time when the Environment was created.
        &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
      },
      &quot;dimensionValue&quot;: [ # Dimension values describing the environment. Dimension values always consist of &quot;Model&quot;, &quot;Version&quot;, &quot;Locale&quot;, and &quot;Orientation&quot;. - In response: always set - In create request: always set - In update request: never set
        {
          &quot;key&quot;: &quot;A String&quot;,
          &quot;value&quot;: &quot;A String&quot;,
        },
      ],
      &quot;displayName&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI. Maximum of 100 characters. For example: Nexus 5, API 27.
      &quot;environmentId&quot;: &quot;A String&quot;, # Output only. An Environment id.
      &quot;environmentResult&quot;: { # Merged test result for environment. If the environment has only one step (no reruns or shards), then the merged result is the same as the step result. If the environment has multiple shards and/or reruns, then the results of shards and reruns that belong to the same environment are merged into one environment result. # Merged result of the environment.
        &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
          &quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE. Optional
            &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
            &quot;deviceOutOfMemory&quot;: True or False, # If the device ran out of memory during a test, causing the test to crash.
            &quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a Roboscript action or assertion failed or a Roboscript action could not be matched during the entire crawl.
            &quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform.
            &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
            &quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
            &quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
          },
          &quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE. Optional
            &quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be determined. For example, the user pressed ctrl-c which sent a kill signal to the test runner while the test was running.
            &quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of infrastructure failures
            &quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test depends on a component other than the system under test which failed. For example, a mobile test requires provisioning a device where the test executes, and that provisioning can fail.
          },
          &quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED. Optional
            &quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
            &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
            &quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
          },
          &quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. LINT.IfChange # More information about a SUCCESS outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS. Optional
            &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
          },
          &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result. Required
        },
        &quot;state&quot;: &quot;A String&quot;, # State of the resource
        &quot;testSuiteOverviews&quot;: [ # The combined and rolled-up result of each test suite that was run as part of this environment. Combining: When the test cases from a suite are run in different steps (sharding), the results are added back together in one overview. (e.g., if shard1 has 2 failures and shard2 has 1 failure than the overview failure_count = 3). Rollup: When test cases from the same suite are run multiple times (flaky), the results are combined (e.g., if testcase1.run1 fails, testcase1.run2 passes, and both testcase2.run1 and testcase2.run2 fail then the overview flaky_count = 1 and failure_count = 1).
          { # A summary of a test suite result either parsed from XML or uploaded directly by a user. Note: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.
            &quot;elapsedTime&quot;: { #  A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years. # Elapsed time of test suite.
              &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive.
              &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
            },
            &quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
            &quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the xml_source. May also be set by the user. - In create/response: always set - In update request: never
            &quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test attempts. Present only for rollup test suite overview at environment level. A step cannot have flaky test cases.
            &quot;name&quot;: &quot;A String&quot;, # The name of the test suite. - In create/response: always set - In update request: never
            &quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
            &quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
            &quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original XML file is stored. Note: Multiple test suites can share the same xml_source Returns INVALID_ARGUMENT if the uri format is not supported. - In create/response: optional - In update request: never
              &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
            },
          },
        ],
      },
      &quot;executionId&quot;: &quot;A String&quot;, # Output only. An Execution id.
      &quot;historyId&quot;: &quot;A String&quot;, # Output only. A History id.
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. A Project id.
      &quot;resultsStorage&quot;: { # The storage for test results. # The location where output files are stored in the user bucket.
        &quot;resultsStoragePath&quot;: { # A reference to a file. # The root directory for test results.
          &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
        },
        &quot;xunitXmlFile&quot;: { # A reference to a file. # The path to the Xunit XML file.
          &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
        },
      },
      &quot;shardSummaries&quot;: [ # Output only. Summaries of shards. Only one shard will present unless sharding feature is enabled in TestExecutionService.
        { # Result summary for a shard in an environment.
          &quot;runs&quot;: [ # Summaries of the steps belonging to the shard. With flaky_test_attempts enabled from TestExecutionService, more than one run (Step) can present. And the runs will be sorted by multistep_number.
            { # Lightweight summary of a step within this execution.
            },
          ],
          &quot;shardResult&quot;: { # Merged test result for environment. If the environment has only one step (no reruns or shards), then the merged result is the same as the step result. If the environment has multiple shards and/or reruns, then the results of shards and reruns that belong to the same environment are merged into one environment result. # Merged result of the shard.
            &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
              &quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE. Optional
                &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
                &quot;deviceOutOfMemory&quot;: True or False, # If the device ran out of memory during a test, causing the test to crash.
                &quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a Roboscript action or assertion failed or a Roboscript action could not be matched during the entire crawl.
                &quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform.
                &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
                &quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
                &quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
              },
              &quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE. Optional
                &quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be determined. For example, the user pressed ctrl-c which sent a kill signal to the test runner while the test was running.
                &quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of infrastructure failures
                &quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test depends on a component other than the system under test which failed. For example, a mobile test requires provisioning a device where the test executes, and that provisioning can fail.
              },
              &quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED. Optional
                &quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
                &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
                &quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
              },
              &quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. LINT.IfChange # More information about a SUCCESS outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS. Optional
                &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
              },
              &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result. Required
            },
            &quot;state&quot;: &quot;A String&quot;, # State of the resource
            &quot;testSuiteOverviews&quot;: [ # The combined and rolled-up result of each test suite that was run as part of this environment. Combining: When the test cases from a suite are run in different steps (sharding), the results are added back together in one overview. (e.g., if shard1 has 2 failures and shard2 has 1 failure than the overview failure_count = 3). Rollup: When test cases from the same suite are run multiple times (flaky), the results are combined (e.g., if testcase1.run1 fails, testcase1.run2 passes, and both testcase2.run1 and testcase2.run2 fail then the overview flaky_count = 1 and failure_count = 1).
              { # A summary of a test suite result either parsed from XML or uploaded directly by a user. Note: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.
                &quot;elapsedTime&quot;: { #  A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years. # Elapsed time of test suite.
                  &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive.
                  &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
                },
                &quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
                &quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the xml_source. May also be set by the user. - In create/response: always set - In update request: never
                &quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test attempts. Present only for rollup test suite overview at environment level. A step cannot have flaky test cases.
                &quot;name&quot;: &quot;A String&quot;, # The name of the test suite. - In create/response: always set - In update request: never
                &quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
                &quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
                &quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original XML file is stored. Note: Multiple test suites can share the same xml_source Returns INVALID_ARGUMENT if the uri format is not supported. - In create/response: optional - In update request: never
                  &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set
                },
              },
            ],
          },
        },
      ],
    },
  ],
  &quot;executionId&quot;: &quot;A String&quot;, # A Execution id Always set.
  &quot;historyId&quot;: &quot;A String&quot;, # A History id. Always set.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A continuation token to resume the query at the next item. Will only be set if there are more Environments to fetch.
  &quot;projectId&quot;: &quot;A String&quot;, # A Project id. Always set.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>