# Cloud Tool Results API . projects . histories . executions . environments

## Instance Methods

Close httplib2 connections.

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

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

Retrieves the next page of results.

### Method Details

`close()`

    Close httplib2 connections.

`get(projectId, historyId, executionId, environmentId, x__xgafv=None)`

    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).
        "projectId": "A String", # Output only. A Project id.
        "creationTime": { # 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 "smeared" 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.
          "nanos": 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.
          "seconds": "A String", # 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.
        },
        "environmentResult": { # 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.
          "outcome": { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
            "summary": "A String", # The simplest way to interpret a result. Required
            "skippedDetail": { # 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
              "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
              "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
              "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
            },
            "inconclusiveDetail": { # 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
              "infrastructureFailure": 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.
              "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of infrastructure failures
              "abortedByUser": 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.
            },
            "successDetail": { # 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
              "otherNativeCrash": True or False, # If a native process other than the app crashed.
            },
            "failureDetail": { # 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
              "deviceOutOfMemory": True or False, # If the device ran out of memory during a test, causing the test to crash.
              "notInstalled": 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.
              "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
              "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
              "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
              "failedRoboscript": 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.
              "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
            },
          },
          "state": "A String", # State of the resource
          "testSuiteOverviews": [ # 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.
              "failureCount": 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
              "errorCount": 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
              "elapsedTime": { #  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 "day" or "month". 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.
                "seconds": "A String", # 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
                "nanos": 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.
              },
              "flakyCount": 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.
              "name": "A String", # The name of the test suite. - In create/response: always set - In update request: never
              "skippedCount": 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
              "totalCount": 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
              "xmlSource": { # 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
                "fileUri": "A String", # 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
              },
            },
          ],
        },
        "shardSummaries": [ # 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.
            "runs": [ # 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.
              },
            ],
            "shardResult": { # 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.
              "outcome": { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
                "summary": "A String", # The simplest way to interpret a result. Required
                "skippedDetail": { # 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
                  "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
                  "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
                  "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
                },
                "inconclusiveDetail": { # 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
                  "infrastructureFailure": 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.
                  "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of infrastructure failures
                  "abortedByUser": 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.
                },
                "successDetail": { # 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
                  "otherNativeCrash": True or False, # If a native process other than the app crashed.
                },
                "failureDetail": { # 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
                  "deviceOutOfMemory": True or False, # If the device ran out of memory during a test, causing the test to crash.
                  "notInstalled": 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.
                  "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
                  "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
                  "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
                  "failedRoboscript": 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.
                  "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
                },
              },
              "state": "A String", # State of the resource
              "testSuiteOverviews": [ # 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.
                  "failureCount": 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
                  "errorCount": 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
                  "elapsedTime": { #  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 "day" or "month". 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.
                    "seconds": "A String", # 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
                    "nanos": 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.
                  },
                  "flakyCount": 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.
                  "name": "A String", # The name of the test suite. - In create/response: always set - In update request: never
                  "skippedCount": 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
                  "totalCount": 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
                  "xmlSource": { # 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
                    "fileUri": "A String", # 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
                  },
                },
              ],
            },
          },
        ],
        "historyId": "A String", # Output only. A History id.
        "environmentId": "A String", # Output only. An Environment id.
        "resultsStorage": { # The storage for test results. # The location where output files are stored in the user bucket.
          "xunitXmlFile": { # A reference to a file. # The path to the Xunit XML file.
            "fileUri": "A String", # 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
          },
          "resultsStoragePath": { # A reference to a file. # The root directory for test results.
            "fileUri": "A String", # 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
          },
        },
        "completionTime": { # 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 "smeared" 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.
          "nanos": 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.
          "seconds": "A String", # 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.
        },
        "displayName": "A String", # A short human-readable name to display in the UI. Maximum of 100 characters. For example: Nexus 5, API 27.
        "executionId": "A String", # Output only. An Execution id.
        "dimensionValue": [ # Dimension values describing the environment. Dimension values always consist of "Model", "Version", "Locale", and "Orientation". - In response: always set - In create request: always set - In update request: never set
          {
            "key": "A String",
            "value": "A String",
          },
        ],
      }

`list(projectId, historyId, executionId, pageSize=None, pageToken=None, x__xgafv=None)`

    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.
        "executionId": "A String", # A Execution id Always set.
        "projectId": "A String", # A Project id. Always set.
        "nextPageToken": "A String", # A continuation token to resume the query at the next item. Will only be set if there are more Environments to fetch.
        "historyId": "A String", # A History id. Always set.
        "environments": [ # 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).
            "projectId": "A String", # Output only. A Project id.
            "creationTime": { # 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 "smeared" 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.
              "nanos": 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.
              "seconds": "A String", # 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.
            },
            "environmentResult": { # 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.
              "outcome": { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
                "summary": "A String", # The simplest way to interpret a result. Required
                "skippedDetail": { # 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
                  "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
                  "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
                  "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
                },
                "inconclusiveDetail": { # 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
                  "infrastructureFailure": 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.
                  "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of infrastructure failures
                  "abortedByUser": 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.
                },
                "successDetail": { # 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
                  "otherNativeCrash": True or False, # If a native process other than the app crashed.
                },
                "failureDetail": { # 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
                  "deviceOutOfMemory": True or False, # If the device ran out of memory during a test, causing the test to crash.
                  "notInstalled": 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.
                  "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
                  "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
                  "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
                  "failedRoboscript": 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.
                  "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
                },
              },
              "state": "A String", # State of the resource
              "testSuiteOverviews": [ # 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.
                  "failureCount": 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
                  "errorCount": 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
                  "elapsedTime": { #  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 "day" or "month". 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.
                    "seconds": "A String", # 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
                    "nanos": 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.
                  },
                  "flakyCount": 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.
                  "name": "A String", # The name of the test suite. - In create/response: always set - In update request: never
                  "skippedCount": 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
                  "totalCount": 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
                  "xmlSource": { # 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
                    "fileUri": "A String", # 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
                  },
                },
              ],
            },
            "shardSummaries": [ # 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.
                "runs": [ # 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.
                  },
                ],
                "shardResult": { # 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.
                  "outcome": { # Interprets a result so that humans and machines can act on it. # Outcome of the resource
                    "summary": "A String", # The simplest way to interpret a result. Required
                    "skippedDetail": { # 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
                      "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
                      "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
                      "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
                    },
                    "inconclusiveDetail": { # 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
                      "infrastructureFailure": 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.
                      "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of infrastructure failures
                      "abortedByUser": 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.
                    },
                    "successDetail": { # 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
                      "otherNativeCrash": True or False, # If a native process other than the app crashed.
                    },
                    "failureDetail": { # 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
                      "deviceOutOfMemory": True or False, # If the device ran out of memory during a test, causing the test to crash.
                      "notInstalled": 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.
                      "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
                      "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
                      "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
                      "failedRoboscript": 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.
                      "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not start.
                    },
                  },
                  "state": "A String", # State of the resource
                  "testSuiteOverviews": [ # 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.
                      "failureCount": 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
                      "errorCount": 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
                      "elapsedTime": { #  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 "day" or "month". 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.
                        "seconds": "A String", # 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
                        "nanos": 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.
                      },
                      "flakyCount": 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.
                      "name": "A String", # The name of the test suite. - In create/response: always set - In update request: never
                      "skippedCount": 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
                      "totalCount": 42, # Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never
                      "xmlSource": { # 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
                        "fileUri": "A String", # 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
                      },
                    },
                  ],
                },
              },
            ],
            "historyId": "A String", # Output only. A History id.
            "environmentId": "A String", # Output only. An Environment id.
            "resultsStorage": { # The storage for test results. # The location where output files are stored in the user bucket.
              "xunitXmlFile": { # A reference to a file. # The path to the Xunit XML file.
                "fileUri": "A String", # 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
              },
              "resultsStoragePath": { # A reference to a file. # The root directory for test results.
                "fileUri": "A String", # 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
              },
            },
            "completionTime": { # 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 "smeared" 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.
              "nanos": 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.
              "seconds": "A String", # 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.
            },
            "displayName": "A String", # A short human-readable name to display in the UI. Maximum of 100 characters. For example: Nexus 5, API 27.
            "executionId": "A String", # Output only. An Execution id.
            "dimensionValue": [ # Dimension values describing the environment. Dimension values always consist of "Model", "Version", "Locale", and "Orientation". - In response: always set - In create request: always set - In update request: never set
              {
                "key": "A String",
                "value": "A String",
              },
            ],
          },
        ],
      }

`list_next(previous_request, previous_response)`

    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 'execute()' on to request the next
      page. Returns None if there are no more items in the collection.