docs: docs update (#911)

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/google-api-python-client/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕
diff --git a/docs/dyn/toolresults_v1beta3.environments.html b/docs/dyn/toolresults_v1beta3.environments.html
new file mode 100644
index 0000000..0149b98
--- /dev/null
+++ b/docs/dyn/toolresults_v1beta3.environments.html
@@ -0,0 +1,1015 @@
+<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.environments.html">environments</a></h1>
+<h2>Instance Methods</h2>
+<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.</p>
+<p class="toc_element">
+  <code><a href="#list">list(projectId, historyId, executionId, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists Environments for a given Execution.</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="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;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # Output only. The time when the Environment was created.
+        # 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.
+      &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;environmentResult&quot;: { # Merged test result for environment. # Merged result of the 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.
+      &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;name&quot;: &quot;A String&quot;, # The name of the test suite.
+              #
+              # - In create/response: always set
+              # - In update request: never
+          &quot;elapsedTime&quot;: { #  # Elapsed time of test suite.
+              # 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.
+            &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;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;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;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;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;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;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;state&quot;: &quot;A String&quot;, # State of the resource
+      &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
+        &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
+            #
+            # Required
+        &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;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+              # start.
+          &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;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
+          &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
+          &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
+        },
+        &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;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;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;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
+            #
+            # Returns INVALID_ARGUMENT if this field is set
+            # but the summary is not SUCCESS.
+            #
+            # Optional
+            # LINT.IfChange
+          &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
+        },
+        &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;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
+          &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
+        },
+      },
+    },
+    &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;value&quot;: &quot;A String&quot;,
+        &quot;key&quot;: &quot;A String&quot;,
+      },
+    ],
+    &quot;projectId&quot;: &quot;A String&quot;, # Output only. A Project id.
+    &quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # Output only. The time when the Environment status was set to complete.
+        #
+        # This value will be set automatically when state transitions to
+        # COMPLETE.
+        # 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.
+      &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;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. # Merged result of the shard.
+            #
+            # 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.
+          &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;name&quot;: &quot;A String&quot;, # The name of the test suite.
+                  #
+                  # - In create/response: always set
+                  # - In update request: never
+              &quot;elapsedTime&quot;: { #  # Elapsed time of test suite.
+                  # 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.
+                &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;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;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;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;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;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;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;state&quot;: &quot;A String&quot;, # State of the resource
+          &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
+            &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
+                #
+                # Required
+            &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;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+                  # start.
+              &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;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
+              &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
+              &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
+            },
+            &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;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;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;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
+                #
+                # Returns INVALID_ARGUMENT if this field is set
+                # but the summary is not SUCCESS.
+                #
+                # Optional
+                # LINT.IfChange
+              &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
+            },
+            &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;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
+              &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
+            },
+          },
+        },
+      },
+    ],
+    &quot;executionId&quot;: &quot;A String&quot;, # Output only. An Execution 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;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;historyId&quot;: &quot;A String&quot;, # Output only. A History id.
+    &quot;environmentId&quot;: &quot;A String&quot;, # Output only. An Environment id.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(projectId, historyId, executionId, pageToken=None, pageSize=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)
+  pageToken: string, A continuation token to resume the query at the next item.
+  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.
+  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;executionId&quot;: &quot;A String&quot;, # A Execution 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;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;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # Output only. The time when the Environment was created.
+            # 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.
+          &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;environmentResult&quot;: { # Merged test result for environment. # Merged result of the 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.
+          &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;name&quot;: &quot;A String&quot;, # The name of the test suite.
+                  #
+                  # - In create/response: always set
+                  # - In update request: never
+              &quot;elapsedTime&quot;: { #  # Elapsed time of test suite.
+                  # 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.
+                &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;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;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;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;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;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;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;state&quot;: &quot;A String&quot;, # State of the resource
+          &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
+            &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
+                #
+                # Required
+            &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;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+                  # start.
+              &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;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
+              &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
+              &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
+            },
+            &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;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;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;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
+                #
+                # Returns INVALID_ARGUMENT if this field is set
+                # but the summary is not SUCCESS.
+                #
+                # Optional
+                # LINT.IfChange
+              &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
+            },
+            &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;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
+              &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
+            },
+          },
+        },
+        &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;value&quot;: &quot;A String&quot;,
+            &quot;key&quot;: &quot;A String&quot;,
+          },
+        ],
+        &quot;projectId&quot;: &quot;A String&quot;, # Output only. A Project id.
+        &quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # Output only. The time when the Environment status was set to complete.
+            #
+            # This value will be set automatically when state transitions to
+            # COMPLETE.
+            # 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.
+          &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;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. # Merged result of the shard.
+                #
+                # 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.
+              &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;name&quot;: &quot;A String&quot;, # The name of the test suite.
+                      #
+                      # - In create/response: always set
+                      # - In update request: never
+                  &quot;elapsedTime&quot;: { #  # Elapsed time of test suite.
+                      # 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.
+                    &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;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;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;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;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;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;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;state&quot;: &quot;A String&quot;, # State of the resource
+              &quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
+                &quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
+                    #
+                    # Required
+                &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;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+                      # start.
+                  &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;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
+                  &quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
+                  &quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
+                },
+                &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;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;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;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
+                    #
+                    # Returns INVALID_ARGUMENT if this field is set
+                    # but the summary is not SUCCESS.
+                    #
+                    # Optional
+                    # LINT.IfChange
+                  &quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
+                },
+                &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;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
+                  &quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
+                },
+              },
+            },
+          },
+        ],
+        &quot;executionId&quot;: &quot;A String&quot;, # Output only. An Execution 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;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;historyId&quot;: &quot;A String&quot;, # Output only. A History id.
+        &quot;environmentId&quot;: &quot;A String&quot;, # Output only. An Environment id.
+      },
+    ],
+    &quot;projectId&quot;: &quot;A String&quot;, # A Project id.
+        #
+        # Always set.
+    &quot;historyId&quot;: &quot;A String&quot;, # A History 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>
\ No newline at end of file