google-apis-toolresults_v1beta3 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: dd5417eaae7ee863ece5ee445014fb7482d4c8db56a66b1d2f045e40fd2be779
4
+ data.tar.gz: 0e31c245b1f4561a81d74f009286979756fd00fdfa19c964877f67e773add9c8
5
+ SHA512:
6
+ metadata.gz: cb4ec96a1fc6d979f2179faf55391f9d6998437bdec2e334d6e8987cbec6381e13c247815adb2ecb901bea15c616996ee25b08879dcecaf67788a618669790eb
7
+ data.tar.gz: 54b7c261d121e0da436b81e25a797bb8a93c2230291067d489ea47a81675e37ccf72c5a8df2957e50407442ef4208ed51e878fb6b1538d5ce4366a4d4fa6b477
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-toolresults_v1beta3
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/toolresults_v1beta3/*.rb
9
+ lib/google/apis/toolresults_v1beta3.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-toolresults_v1beta3
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201029
7
+
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1beta3 of the Cloud Tool Results API
2
+
3
+ This is a simple client library for version V1beta3 of the Cloud Tool Results API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/toolresults.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-toolresults_v1beta3', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-toolresults_v1beta3
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/toolresults_v1beta3"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::ToolresultsV1beta3::ToolResultsService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Toolresults service in particular.)
67
+
68
+ For reference information on specific calls in the Cloud Tool Results API, see the {Google::Apis::ToolresultsV1beta3::ToolResultsService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-toolresults_v1beta3`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://firebase.google.com/docs/test-lab/) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "google/apis/toolresults_v1beta3"
@@ -0,0 +1,36 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/toolresults_v1beta3/service.rb'
16
+ require 'google/apis/toolresults_v1beta3/classes.rb'
17
+ require 'google/apis/toolresults_v1beta3/representations.rb'
18
+ require 'google/apis/toolresults_v1beta3/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Cloud Tool Results API
23
+ #
24
+ # API to publish and access results from developer tools.
25
+ #
26
+ # @see https://firebase.google.com/docs/test-lab/
27
+ module ToolresultsV1beta3
28
+ # Version of the Cloud Tool Results API this client connects to.
29
+ # This is NOT the gem version.
30
+ VERSION = 'V1beta3'
31
+
32
+ # View and manage your data across Google Cloud Platform services
33
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,3795 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module ToolresultsV1beta3
24
+
25
+ # Additional details for an ANR crash.
26
+ class Anr
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # A stacktrace.
30
+ # Corresponds to the JSON property `stackTrace`
31
+ # @return [Google::Apis::ToolresultsV1beta3::StackTrace]
32
+ attr_accessor :stack_trace
33
+
34
+ def initialize(**args)
35
+ update!(**args)
36
+ end
37
+
38
+ # Update properties of this object
39
+ def update!(**args)
40
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
41
+ end
42
+ end
43
+
44
+ # Android app information.
45
+ class AndroidAppInfo
46
+ include Google::Apis::Core::Hashable
47
+
48
+ # The name of the app. Optional
49
+ # Corresponds to the JSON property `name`
50
+ # @return [String]
51
+ attr_accessor :name
52
+
53
+ # The package name of the app. Required.
54
+ # Corresponds to the JSON property `packageName`
55
+ # @return [String]
56
+ attr_accessor :package_name
57
+
58
+ # The internal version code of the app. Optional.
59
+ # Corresponds to the JSON property `versionCode`
60
+ # @return [String]
61
+ attr_accessor :version_code
62
+
63
+ # The version name of the app. Optional.
64
+ # Corresponds to the JSON property `versionName`
65
+ # @return [String]
66
+ attr_accessor :version_name
67
+
68
+ def initialize(**args)
69
+ update!(**args)
70
+ end
71
+
72
+ # Update properties of this object
73
+ def update!(**args)
74
+ @name = args[:name] if args.key?(:name)
75
+ @package_name = args[:package_name] if args.key?(:package_name)
76
+ @version_code = args[:version_code] if args.key?(:version_code)
77
+ @version_name = args[:version_name] if args.key?(:version_name)
78
+ end
79
+ end
80
+
81
+ # A test of an Android application that can control an Android component
82
+ # independently of its normal lifecycle. See for more information on types of
83
+ # Android tests.
84
+ class AndroidInstrumentationTest
85
+ include Google::Apis::Core::Hashable
86
+
87
+ # The java package for the test to be executed. Required
88
+ # Corresponds to the JSON property `testPackageId`
89
+ # @return [String]
90
+ attr_accessor :test_package_id
91
+
92
+ # The InstrumentationTestRunner class. Required
93
+ # Corresponds to the JSON property `testRunnerClass`
94
+ # @return [String]
95
+ attr_accessor :test_runner_class
96
+
97
+ # Each target must be fully qualified with the package name or class name, in
98
+ # one of these formats: - "package package_name" - "class package_name.
99
+ # class_name" - "class package_name.class_name#method_name" If empty, all
100
+ # targets in the module will be run.
101
+ # Corresponds to the JSON property `testTargets`
102
+ # @return [Array<String>]
103
+ attr_accessor :test_targets
104
+
105
+ # The flag indicates whether Android Test Orchestrator will be used to run test
106
+ # or not.
107
+ # Corresponds to the JSON property `useOrchestrator`
108
+ # @return [Boolean]
109
+ attr_accessor :use_orchestrator
110
+ alias_method :use_orchestrator?, :use_orchestrator
111
+
112
+ def initialize(**args)
113
+ update!(**args)
114
+ end
115
+
116
+ # Update properties of this object
117
+ def update!(**args)
118
+ @test_package_id = args[:test_package_id] if args.key?(:test_package_id)
119
+ @test_runner_class = args[:test_runner_class] if args.key?(:test_runner_class)
120
+ @test_targets = args[:test_targets] if args.key?(:test_targets)
121
+ @use_orchestrator = args[:use_orchestrator] if args.key?(:use_orchestrator)
122
+ end
123
+ end
124
+
125
+ # A test of an android application that explores the application on a virtual or
126
+ # physical Android device, finding culprits and crashes as it goes.
127
+ class AndroidRoboTest
128
+ include Google::Apis::Core::Hashable
129
+
130
+ # The initial activity that should be used to start the app. Optional
131
+ # Corresponds to the JSON property `appInitialActivity`
132
+ # @return [String]
133
+ attr_accessor :app_initial_activity
134
+
135
+ # The java package for the bootstrap. Optional
136
+ # Corresponds to the JSON property `bootstrapPackageId`
137
+ # @return [String]
138
+ attr_accessor :bootstrap_package_id
139
+
140
+ # The runner class for the bootstrap. Optional
141
+ # Corresponds to the JSON property `bootstrapRunnerClass`
142
+ # @return [String]
143
+ attr_accessor :bootstrap_runner_class
144
+
145
+ # The max depth of the traversal stack Robo can explore. Optional
146
+ # Corresponds to the JSON property `maxDepth`
147
+ # @return [Fixnum]
148
+ attr_accessor :max_depth
149
+
150
+ # The max number of steps/actions Robo can execute. Default is no limit (0).
151
+ # Optional
152
+ # Corresponds to the JSON property `maxSteps`
153
+ # @return [Fixnum]
154
+ attr_accessor :max_steps
155
+
156
+ def initialize(**args)
157
+ update!(**args)
158
+ end
159
+
160
+ # Update properties of this object
161
+ def update!(**args)
162
+ @app_initial_activity = args[:app_initial_activity] if args.key?(:app_initial_activity)
163
+ @bootstrap_package_id = args[:bootstrap_package_id] if args.key?(:bootstrap_package_id)
164
+ @bootstrap_runner_class = args[:bootstrap_runner_class] if args.key?(:bootstrap_runner_class)
165
+ @max_depth = args[:max_depth] if args.key?(:max_depth)
166
+ @max_steps = args[:max_steps] if args.key?(:max_steps)
167
+ end
168
+ end
169
+
170
+ # An Android mobile test specification.
171
+ class AndroidTest
172
+ include Google::Apis::Core::Hashable
173
+
174
+ # Android app information.
175
+ # Corresponds to the JSON property `androidAppInfo`
176
+ # @return [Google::Apis::ToolresultsV1beta3::AndroidAppInfo]
177
+ attr_accessor :android_app_info
178
+
179
+ # A test of an Android application that can control an Android component
180
+ # independently of its normal lifecycle. See for more information on types of
181
+ # Android tests.
182
+ # Corresponds to the JSON property `androidInstrumentationTest`
183
+ # @return [Google::Apis::ToolresultsV1beta3::AndroidInstrumentationTest]
184
+ attr_accessor :android_instrumentation_test
185
+
186
+ # A test of an android application that explores the application on a virtual or
187
+ # physical Android device, finding culprits and crashes as it goes.
188
+ # Corresponds to the JSON property `androidRoboTest`
189
+ # @return [Google::Apis::ToolresultsV1beta3::AndroidRoboTest]
190
+ attr_accessor :android_robo_test
191
+
192
+ # Test Loops are tests that can be launched by the app itself, determining when
193
+ # to run by listening for an intent.
194
+ # Corresponds to the JSON property `androidTestLoop`
195
+ # @return [Google::Apis::ToolresultsV1beta3::AndroidTestLoop]
196
+ attr_accessor :android_test_loop
197
+
198
+ # A Duration represents a signed, fixed-length span of time represented as a
199
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
200
+ # independent of any calendar and concepts like "day" or "month". It is related
201
+ # to Timestamp in that the difference between two Timestamp values is a Duration
202
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
203
+ # 10,000 years.
204
+ # Corresponds to the JSON property `testTimeout`
205
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
206
+ attr_accessor :test_timeout
207
+
208
+ def initialize(**args)
209
+ update!(**args)
210
+ end
211
+
212
+ # Update properties of this object
213
+ def update!(**args)
214
+ @android_app_info = args[:android_app_info] if args.key?(:android_app_info)
215
+ @android_instrumentation_test = args[:android_instrumentation_test] if args.key?(:android_instrumentation_test)
216
+ @android_robo_test = args[:android_robo_test] if args.key?(:android_robo_test)
217
+ @android_test_loop = args[:android_test_loop] if args.key?(:android_test_loop)
218
+ @test_timeout = args[:test_timeout] if args.key?(:test_timeout)
219
+ end
220
+ end
221
+
222
+ # Test Loops are tests that can be launched by the app itself, determining when
223
+ # to run by listening for an intent.
224
+ class AndroidTestLoop
225
+ include Google::Apis::Core::Hashable
226
+
227
+ def initialize(**args)
228
+ update!(**args)
229
+ end
230
+
231
+ # Update properties of this object
232
+ def update!(**args)
233
+ end
234
+ end
235
+
236
+ # `Any` contains an arbitrary serialized protocol buffer message along with a
237
+ # URL that describes the type of the serialized message. Protobuf library
238
+ # provides support to pack/unpack Any values in the form of utility functions or
239
+ # additional generated methods of the Any type. Example 1: Pack and unpack a
240
+ # message in C++. Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.
241
+ # UnpackTo(&foo)) ` ... ` Example 2: Pack and unpack a message in Java. Foo foo =
242
+ # ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) ` foo = any.unpack(
243
+ # Foo.class); ` Example 3: Pack and unpack a message in Python. foo = Foo(...)
244
+ # any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
245
+ # Example 4: Pack and unpack a message in Go foo := &pb.Foo`...` any, err :=
246
+ # ptypes.MarshalAny(foo) ... foo := &pb.Foo`` if err := ptypes.UnmarshalAny(any,
247
+ # foo); err != nil ` ... ` The pack methods provided by protobuf library will by
248
+ # default use 'type.googleapis.com/full.type.name' as the type URL and the
249
+ # unpack methods only use the fully qualified type name after the last '/' in
250
+ # the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z". #
251
+ # JSON The JSON representation of an `Any` value uses the regular representation
252
+ # of the deserialized, embedded message, with an additional field `@type` which
253
+ # contains the type URL. Example: package google.profile; message Person `
254
+ # string first_name = 1; string last_name = 2; ` ` "@type": "type.googleapis.com/
255
+ # google.profile.Person", "firstName": , "lastName": ` If the embedded message
256
+ # type is well-known and has a custom JSON representation, that representation
257
+ # will be embedded adding a field `value` which holds the custom JSON in
258
+ # addition to the `@type` field. Example (for message google.protobuf.Duration):
259
+ # ` "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" `
260
+ class Any
261
+ include Google::Apis::Core::Hashable
262
+
263
+ # A URL/resource name that uniquely identifies the type of the serialized
264
+ # protocol buffer message. This string must contain at least one "/" character.
265
+ # The last segment of the URL's path must represent the fully qualified name of
266
+ # the type (as in `path/google.protobuf.Duration`). The name should be in a
267
+ # canonical form (e.g., leading "." is not accepted). In practice, teams usually
268
+ # precompile into the binary all types that they expect it to use in the context
269
+ # of Any. However, for URLs which use the scheme `http`, `https`, or no scheme,
270
+ # one can optionally set up a type server that maps type URLs to message
271
+ # definitions as follows: * If no scheme is provided, `https` is assumed. * An
272
+ # HTTP GET on the URL must yield a google.protobuf.Type value in binary format,
273
+ # or produce an error. * Applications are allowed to cache lookup results based
274
+ # on the URL, or have them precompiled into a binary to avoid any lookup.
275
+ # Therefore, binary compatibility needs to be preserved on changes to types. (
276
+ # Use versioned type names to manage breaking changes.) Note: this functionality
277
+ # is not currently available in the official protobuf release, and it is not
278
+ # used for type URLs beginning with type.googleapis.com. Schemes other than `
279
+ # http`, `https` (or the empty scheme) might be used with implementation
280
+ # specific semantics.
281
+ # Corresponds to the JSON property `typeUrl`
282
+ # @return [String]
283
+ attr_accessor :type_url
284
+
285
+ # Must be a valid serialized protocol buffer of the above specified type.
286
+ # Corresponds to the JSON property `value`
287
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
288
+ # @return [String]
289
+ attr_accessor :value
290
+
291
+ def initialize(**args)
292
+ update!(**args)
293
+ end
294
+
295
+ # Update properties of this object
296
+ def update!(**args)
297
+ @type_url = args[:type_url] if args.key?(:type_url)
298
+ @value = args[:value] if args.key?(:value)
299
+ end
300
+ end
301
+
302
+ #
303
+ class AppStartTime
304
+ include Google::Apis::Core::Hashable
305
+
306
+ # A Duration represents a signed, fixed-length span of time represented as a
307
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
308
+ # independent of any calendar and concepts like "day" or "month". It is related
309
+ # to Timestamp in that the difference between two Timestamp values is a Duration
310
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
311
+ # 10,000 years.
312
+ # Corresponds to the JSON property `fullyDrawnTime`
313
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
314
+ attr_accessor :fully_drawn_time
315
+
316
+ # A Duration represents a signed, fixed-length span of time represented as a
317
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
318
+ # independent of any calendar and concepts like "day" or "month". It is related
319
+ # to Timestamp in that the difference between two Timestamp values is a Duration
320
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
321
+ # 10,000 years.
322
+ # Corresponds to the JSON property `initialDisplayTime`
323
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
324
+ attr_accessor :initial_display_time
325
+
326
+ def initialize(**args)
327
+ update!(**args)
328
+ end
329
+
330
+ # Update properties of this object
331
+ def update!(**args)
332
+ @fully_drawn_time = args[:fully_drawn_time] if args.key?(:fully_drawn_time)
333
+ @initial_display_time = args[:initial_display_time] if args.key?(:initial_display_time)
334
+ end
335
+ end
336
+
337
+ # A suggestion to use deep links for a Robo run.
338
+ class AvailableDeepLinks
339
+ include Google::Apis::Core::Hashable
340
+
341
+ def initialize(**args)
342
+ update!(**args)
343
+ end
344
+
345
+ # Update properties of this object
346
+ def update!(**args)
347
+ end
348
+ end
349
+
350
+ # Encapsulates the metadata for basic sample series represented by a line chart
351
+ class BasicPerfSampleSeries
352
+ include Google::Apis::Core::Hashable
353
+
354
+ #
355
+ # Corresponds to the JSON property `perfMetricType`
356
+ # @return [String]
357
+ attr_accessor :perf_metric_type
358
+
359
+ #
360
+ # Corresponds to the JSON property `perfUnit`
361
+ # @return [String]
362
+ attr_accessor :perf_unit
363
+
364
+ #
365
+ # Corresponds to the JSON property `sampleSeriesLabel`
366
+ # @return [String]
367
+ attr_accessor :sample_series_label
368
+
369
+ def initialize(**args)
370
+ update!(**args)
371
+ end
372
+
373
+ # Update properties of this object
374
+ def update!(**args)
375
+ @perf_metric_type = args[:perf_metric_type] if args.key?(:perf_metric_type)
376
+ @perf_unit = args[:perf_unit] if args.key?(:perf_unit)
377
+ @sample_series_label = args[:sample_series_label] if args.key?(:sample_series_label)
378
+ end
379
+ end
380
+
381
+ # The request must provide up to a maximum of 5000 samples to be created; a
382
+ # larger sample size will cause an INVALID_ARGUMENT error
383
+ class BatchCreatePerfSamplesRequest
384
+ include Google::Apis::Core::Hashable
385
+
386
+ # The set of PerfSamples to create should not include existing timestamps
387
+ # Corresponds to the JSON property `perfSamples`
388
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>]
389
+ attr_accessor :perf_samples
390
+
391
+ def initialize(**args)
392
+ update!(**args)
393
+ end
394
+
395
+ # Update properties of this object
396
+ def update!(**args)
397
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
398
+ end
399
+ end
400
+
401
+ #
402
+ class BatchCreatePerfSamplesResponse
403
+ include Google::Apis::Core::Hashable
404
+
405
+ #
406
+ # Corresponds to the JSON property `perfSamples`
407
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>]
408
+ attr_accessor :perf_samples
409
+
410
+ def initialize(**args)
411
+ update!(**args)
412
+ end
413
+
414
+ # Update properties of this object
415
+ def update!(**args)
416
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
417
+ end
418
+ end
419
+
420
+ # A warning that Robo encountered a screen that was mostly blank; this may
421
+ # indicate a problem with the app.
422
+ class BlankScreen
423
+ include Google::Apis::Core::Hashable
424
+
425
+ # The screen id of the element
426
+ # Corresponds to the JSON property `screenId`
427
+ # @return [String]
428
+ attr_accessor :screen_id
429
+
430
+ def initialize(**args)
431
+ update!(**args)
432
+ end
433
+
434
+ # Update properties of this object
435
+ def update!(**args)
436
+ @screen_id = args[:screen_id] if args.key?(:screen_id)
437
+ end
438
+ end
439
+
440
+ #
441
+ class CpuInfo
442
+ include Google::Apis::Core::Hashable
443
+
444
+ # description of the device processor ie '1.8 GHz hexa core 64-bit ARMv8-A'
445
+ # Corresponds to the JSON property `cpuProcessor`
446
+ # @return [String]
447
+ attr_accessor :cpu_processor
448
+
449
+ # the CPU clock speed in GHz
450
+ # Corresponds to the JSON property `cpuSpeedInGhz`
451
+ # @return [Float]
452
+ attr_accessor :cpu_speed_in_ghz
453
+
454
+ # the number of CPU cores
455
+ # Corresponds to the JSON property `numberOfCores`
456
+ # @return [Fixnum]
457
+ attr_accessor :number_of_cores
458
+
459
+ def initialize(**args)
460
+ update!(**args)
461
+ end
462
+
463
+ # Update properties of this object
464
+ def update!(**args)
465
+ @cpu_processor = args[:cpu_processor] if args.key?(:cpu_processor)
466
+ @cpu_speed_in_ghz = args[:cpu_speed_in_ghz] if args.key?(:cpu_speed_in_ghz)
467
+ @number_of_cores = args[:number_of_cores] if args.key?(:number_of_cores)
468
+ end
469
+ end
470
+
471
+ # Crash dialog was detected during the test execution
472
+ class CrashDialogError
473
+ include Google::Apis::Core::Hashable
474
+
475
+ # The name of the package that caused the dialog.
476
+ # Corresponds to the JSON property `crashPackage`
477
+ # @return [String]
478
+ attr_accessor :crash_package
479
+
480
+ def initialize(**args)
481
+ update!(**args)
482
+ end
483
+
484
+ # Update properties of this object
485
+ def update!(**args)
486
+ @crash_package = args[:crash_package] if args.key?(:crash_package)
487
+ end
488
+ end
489
+
490
+ # A warning that device ran out of memory
491
+ class DeviceOutOfMemory
492
+ include Google::Apis::Core::Hashable
493
+
494
+ def initialize(**args)
495
+ update!(**args)
496
+ end
497
+
498
+ # Update properties of this object
499
+ def update!(**args)
500
+ end
501
+ end
502
+
503
+ # A Duration represents a signed, fixed-length span of time represented as a
504
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
505
+ # independent of any calendar and concepts like "day" or "month". It is related
506
+ # to Timestamp in that the difference between two Timestamp values is a Duration
507
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
508
+ # 10,000 years.
509
+ class Duration
510
+ include Google::Apis::Core::Hashable
511
+
512
+ # Signed fractions of a second at nanosecond resolution of the span of time.
513
+ # Durations less than one second are represented with a 0 `seconds` field and a
514
+ # positive or negative `nanos` field. For durations of one second or more, a non-
515
+ # zero value for the `nanos` field must be of the same sign as the `seconds`
516
+ # field. Must be from -999,999,999 to +999,999,999 inclusive.
517
+ # Corresponds to the JSON property `nanos`
518
+ # @return [Fixnum]
519
+ attr_accessor :nanos
520
+
521
+ # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,
522
+ # 000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/
523
+ # hr * 24 hr/day * 365.25 days/year * 10000 years
524
+ # Corresponds to the JSON property `seconds`
525
+ # @return [Fixnum]
526
+ attr_accessor :seconds
527
+
528
+ def initialize(**args)
529
+ update!(**args)
530
+ end
531
+
532
+ # Update properties of this object
533
+ def update!(**args)
534
+ @nanos = args[:nanos] if args.key?(:nanos)
535
+ @seconds = args[:seconds] if args.key?(:seconds)
536
+ end
537
+ end
538
+
539
+ # Additional details about encountered login screens.
540
+ class EncounteredLoginScreen
541
+ include Google::Apis::Core::Hashable
542
+
543
+ # Number of encountered distinct login screens.
544
+ # Corresponds to the JSON property `distinctScreens`
545
+ # @return [Fixnum]
546
+ attr_accessor :distinct_screens
547
+
548
+ # Subset of login screens.
549
+ # Corresponds to the JSON property `screenIds`
550
+ # @return [Array<String>]
551
+ attr_accessor :screen_ids
552
+
553
+ def initialize(**args)
554
+ update!(**args)
555
+ end
556
+
557
+ # Update properties of this object
558
+ def update!(**args)
559
+ @distinct_screens = args[:distinct_screens] if args.key?(:distinct_screens)
560
+ @screen_ids = args[:screen_ids] if args.key?(:screen_ids)
561
+ end
562
+ end
563
+
564
+ # Additional details about encountered screens with elements that are not
565
+ # Android UI widgets.
566
+ class EncounteredNonAndroidUiWidgetScreen
567
+ include Google::Apis::Core::Hashable
568
+
569
+ # Number of encountered distinct screens with non Android UI widgets.
570
+ # Corresponds to the JSON property `distinctScreens`
571
+ # @return [Fixnum]
572
+ attr_accessor :distinct_screens
573
+
574
+ # Subset of screens which contain non Android UI widgets.
575
+ # Corresponds to the JSON property `screenIds`
576
+ # @return [Array<String>]
577
+ attr_accessor :screen_ids
578
+
579
+ def initialize(**args)
580
+ update!(**args)
581
+ end
582
+
583
+ # Update properties of this object
584
+ def update!(**args)
585
+ @distinct_screens = args[:distinct_screens] if args.key?(:distinct_screens)
586
+ @screen_ids = args[:screen_ids] if args.key?(:screen_ids)
587
+ end
588
+ end
589
+
590
+ # An Environment represents the set of test runs (Steps) from the parent
591
+ # Execution that are configured with the same set of dimensions (Model, Version,
592
+ # Locale, and Orientation). Multiple such runs occur particularly because of
593
+ # features like sharding (splitting up a test suite to run in parallel across
594
+ # devices) and reruns (running a test multiple times to check for different
595
+ # outcomes).
596
+ class Environment
597
+ include Google::Apis::Core::Hashable
598
+
599
+ # A Timestamp represents a point in time independent of any time zone or local
600
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
601
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
602
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
603
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
604
+ # smeared" so that no leap second table is needed for interpretation, using a [
605
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
606
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
607
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
608
+ # ietf.org/rfc/rfc3339.txt) date strings.
609
+ # Corresponds to the JSON property `completionTime`
610
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
611
+ attr_accessor :completion_time
612
+
613
+ # A Timestamp represents a point in time independent of any time zone or local
614
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
615
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
616
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
617
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
618
+ # smeared" so that no leap second table is needed for interpretation, using a [
619
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
620
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
621
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
622
+ # ietf.org/rfc/rfc3339.txt) date strings.
623
+ # Corresponds to the JSON property `creationTime`
624
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
625
+ attr_accessor :creation_time
626
+
627
+ # Dimension values describing the environment. Dimension values always consist
628
+ # of "Model", "Version", "Locale", and "Orientation". - In response: always set -
629
+ # In create request: always set - In update request: never set
630
+ # Corresponds to the JSON property `dimensionValue`
631
+ # @return [Array<Google::Apis::ToolresultsV1beta3::EnvironmentDimensionValueEntry>]
632
+ attr_accessor :dimension_value
633
+
634
+ # A short human-readable name to display in the UI. Maximum of 100 characters.
635
+ # For example: Nexus 5, API 27.
636
+ # Corresponds to the JSON property `displayName`
637
+ # @return [String]
638
+ attr_accessor :display_name
639
+
640
+ # Output only. An Environment id.
641
+ # Corresponds to the JSON property `environmentId`
642
+ # @return [String]
643
+ attr_accessor :environment_id
644
+
645
+ # Merged test result for environment. If the environment has only one step (no
646
+ # reruns or shards), then the merged result is the same as the step result. If
647
+ # the environment has multiple shards and/or reruns, then the results of shards
648
+ # and reruns that belong to the same environment are merged into one environment
649
+ # result.
650
+ # Corresponds to the JSON property `environmentResult`
651
+ # @return [Google::Apis::ToolresultsV1beta3::MergedResult]
652
+ attr_accessor :environment_result
653
+
654
+ # Output only. An Execution id.
655
+ # Corresponds to the JSON property `executionId`
656
+ # @return [String]
657
+ attr_accessor :execution_id
658
+
659
+ # Output only. A History id.
660
+ # Corresponds to the JSON property `historyId`
661
+ # @return [String]
662
+ attr_accessor :history_id
663
+
664
+ # Output only. A Project id.
665
+ # Corresponds to the JSON property `projectId`
666
+ # @return [String]
667
+ attr_accessor :project_id
668
+
669
+ # The storage for test results.
670
+ # Corresponds to the JSON property `resultsStorage`
671
+ # @return [Google::Apis::ToolresultsV1beta3::ResultsStorage]
672
+ attr_accessor :results_storage
673
+
674
+ # Output only. Summaries of shards. Only one shard will present unless sharding
675
+ # feature is enabled in TestExecutionService.
676
+ # Corresponds to the JSON property `shardSummaries`
677
+ # @return [Array<Google::Apis::ToolresultsV1beta3::ShardSummary>]
678
+ attr_accessor :shard_summaries
679
+
680
+ def initialize(**args)
681
+ update!(**args)
682
+ end
683
+
684
+ # Update properties of this object
685
+ def update!(**args)
686
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
687
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
688
+ @dimension_value = args[:dimension_value] if args.key?(:dimension_value)
689
+ @display_name = args[:display_name] if args.key?(:display_name)
690
+ @environment_id = args[:environment_id] if args.key?(:environment_id)
691
+ @environment_result = args[:environment_result] if args.key?(:environment_result)
692
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
693
+ @history_id = args[:history_id] if args.key?(:history_id)
694
+ @project_id = args[:project_id] if args.key?(:project_id)
695
+ @results_storage = args[:results_storage] if args.key?(:results_storage)
696
+ @shard_summaries = args[:shard_summaries] if args.key?(:shard_summaries)
697
+ end
698
+ end
699
+
700
+ #
701
+ class EnvironmentDimensionValueEntry
702
+ include Google::Apis::Core::Hashable
703
+
704
+ #
705
+ # Corresponds to the JSON property `key`
706
+ # @return [String]
707
+ attr_accessor :key
708
+
709
+ #
710
+ # Corresponds to the JSON property `value`
711
+ # @return [String]
712
+ attr_accessor :value
713
+
714
+ def initialize(**args)
715
+ update!(**args)
716
+ end
717
+
718
+ # Update properties of this object
719
+ def update!(**args)
720
+ @key = args[:key] if args.key?(:key)
721
+ @value = args[:value] if args.key?(:value)
722
+ end
723
+ end
724
+
725
+ # An Execution represents a collection of Steps. For instance, it could
726
+ # represent: - a mobile test executed across a range of device configurations -
727
+ # a jenkins job with a build step followed by a test step The maximum size of an
728
+ # execution message is 1 MiB. An Execution can be updated until its state is set
729
+ # to COMPLETE at which point it becomes immutable.
730
+ class Execution
731
+ include Google::Apis::Core::Hashable
732
+
733
+ # A Timestamp represents a point in time independent of any time zone or local
734
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
735
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
736
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
737
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
738
+ # smeared" so that no leap second table is needed for interpretation, using a [
739
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
740
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
741
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
742
+ # ietf.org/rfc/rfc3339.txt) date strings.
743
+ # Corresponds to the JSON property `completionTime`
744
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
745
+ attr_accessor :completion_time
746
+
747
+ # A Timestamp represents a point in time independent of any time zone or local
748
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
749
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
750
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
751
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
752
+ # smeared" so that no leap second table is needed for interpretation, using a [
753
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
754
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
755
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
756
+ # ietf.org/rfc/rfc3339.txt) date strings.
757
+ # Corresponds to the JSON property `creationTime`
758
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
759
+ attr_accessor :creation_time
760
+
761
+ # The dimensions along which different steps in this execution may vary. This
762
+ # must remain fixed over the life of the execution. Returns INVALID_ARGUMENT if
763
+ # this field is set in an update request. Returns INVALID_ARGUMENT if the same
764
+ # name occurs in more than one dimension_definition. Returns INVALID_ARGUMENT if
765
+ # the size of the list is over 100. - In response: present if set by create - In
766
+ # create request: optional - In update request: never set
767
+ # Corresponds to the JSON property `dimensionDefinitions`
768
+ # @return [Array<Google::Apis::ToolresultsV1beta3::MatrixDimensionDefinition>]
769
+ attr_accessor :dimension_definitions
770
+
771
+ # A unique identifier within a History for this Execution. Returns
772
+ # INVALID_ARGUMENT if this field is set or overwritten by the caller. - In
773
+ # response always set - In create/update request: never set
774
+ # Corresponds to the JSON property `executionId`
775
+ # @return [String]
776
+ attr_accessor :execution_id
777
+
778
+ # Interprets a result so that humans and machines can act on it.
779
+ # Corresponds to the JSON property `outcome`
780
+ # @return [Google::Apis::ToolresultsV1beta3::Outcome]
781
+ attr_accessor :outcome
782
+
783
+ # The details about how to run the execution.
784
+ # Corresponds to the JSON property `specification`
785
+ # @return [Google::Apis::ToolresultsV1beta3::Specification]
786
+ attr_accessor :specification
787
+
788
+ # The initial state is IN_PROGRESS. The only legal state transitions is from
789
+ # IN_PROGRESS to COMPLETE. A PRECONDITION_FAILED will be returned if an invalid
790
+ # transition is requested. The state can only be set to COMPLETE once. A
791
+ # FAILED_PRECONDITION will be returned if the state is set to COMPLETE multiple
792
+ # times. If the state is set to COMPLETE, all the in-progress steps within the
793
+ # execution will be set as COMPLETE. If the outcome of the step is not set, the
794
+ # outcome will be set to INCONCLUSIVE. - In response always set - In create/
795
+ # update request: optional
796
+ # Corresponds to the JSON property `state`
797
+ # @return [String]
798
+ attr_accessor :state
799
+
800
+ # TestExecution Matrix ID that the TestExecutionService uses. - In response:
801
+ # present if set by create - In create: optional - In update: never set
802
+ # Corresponds to the JSON property `testExecutionMatrixId`
803
+ # @return [String]
804
+ attr_accessor :test_execution_matrix_id
805
+
806
+ def initialize(**args)
807
+ update!(**args)
808
+ end
809
+
810
+ # Update properties of this object
811
+ def update!(**args)
812
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
813
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
814
+ @dimension_definitions = args[:dimension_definitions] if args.key?(:dimension_definitions)
815
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
816
+ @outcome = args[:outcome] if args.key?(:outcome)
817
+ @specification = args[:specification] if args.key?(:specification)
818
+ @state = args[:state] if args.key?(:state)
819
+ @test_execution_matrix_id = args[:test_execution_matrix_id] if args.key?(:test_execution_matrix_id)
820
+ end
821
+ end
822
+
823
+ # Failed to install the APK.
824
+ class FailedToInstall
825
+ include Google::Apis::Core::Hashable
826
+
827
+ def initialize(**args)
828
+ update!(**args)
829
+ end
830
+
831
+ # Update properties of this object
832
+ def update!(**args)
833
+ end
834
+ end
835
+
836
+ # Details for an outcome with a FAILURE outcome summary.
837
+ class FailureDetail
838
+ include Google::Apis::Core::Hashable
839
+
840
+ # If the failure was severe because the system (app) under test crashed.
841
+ # Corresponds to the JSON property `crashed`
842
+ # @return [Boolean]
843
+ attr_accessor :crashed
844
+ alias_method :crashed?, :crashed
845
+
846
+ # If the device ran out of memory during a test, causing the test to crash.
847
+ # Corresponds to the JSON property `deviceOutOfMemory`
848
+ # @return [Boolean]
849
+ attr_accessor :device_out_of_memory
850
+ alias_method :device_out_of_memory?, :device_out_of_memory
851
+
852
+ # If the Roboscript failed to complete successfully, e.g., because a Roboscript
853
+ # action or assertion failed or a Roboscript action could not be matched during
854
+ # the entire crawl.
855
+ # Corresponds to the JSON property `failedRoboscript`
856
+ # @return [Boolean]
857
+ attr_accessor :failed_roboscript
858
+ alias_method :failed_roboscript?, :failed_roboscript
859
+
860
+ # If an app is not installed and thus no test can be run with the app. This
861
+ # might be caused by trying to run a test on an unsupported platform.
862
+ # Corresponds to the JSON property `notInstalled`
863
+ # @return [Boolean]
864
+ attr_accessor :not_installed
865
+ alias_method :not_installed?, :not_installed
866
+
867
+ # If a native process (including any other than the app) crashed.
868
+ # Corresponds to the JSON property `otherNativeCrash`
869
+ # @return [Boolean]
870
+ attr_accessor :other_native_crash
871
+ alias_method :other_native_crash?, :other_native_crash
872
+
873
+ # If the test overran some time limit, and that is why it failed.
874
+ # Corresponds to the JSON property `timedOut`
875
+ # @return [Boolean]
876
+ attr_accessor :timed_out
877
+ alias_method :timed_out?, :timed_out
878
+
879
+ # If the robo was unable to crawl the app; perhaps because the app did not start.
880
+ # Corresponds to the JSON property `unableToCrawl`
881
+ # @return [Boolean]
882
+ attr_accessor :unable_to_crawl
883
+ alias_method :unable_to_crawl?, :unable_to_crawl
884
+
885
+ def initialize(**args)
886
+ update!(**args)
887
+ end
888
+
889
+ # Update properties of this object
890
+ def update!(**args)
891
+ @crashed = args[:crashed] if args.key?(:crashed)
892
+ @device_out_of_memory = args[:device_out_of_memory] if args.key?(:device_out_of_memory)
893
+ @failed_roboscript = args[:failed_roboscript] if args.key?(:failed_roboscript)
894
+ @not_installed = args[:not_installed] if args.key?(:not_installed)
895
+ @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash)
896
+ @timed_out = args[:timed_out] if args.key?(:timed_out)
897
+ @unable_to_crawl = args[:unable_to_crawl] if args.key?(:unable_to_crawl)
898
+ end
899
+ end
900
+
901
+ # Additional details for a fatal exception.
902
+ class FatalException
903
+ include Google::Apis::Core::Hashable
904
+
905
+ # A stacktrace.
906
+ # Corresponds to the JSON property `stackTrace`
907
+ # @return [Google::Apis::ToolresultsV1beta3::StackTrace]
908
+ attr_accessor :stack_trace
909
+
910
+ def initialize(**args)
911
+ update!(**args)
912
+ end
913
+
914
+ # Update properties of this object
915
+ def update!(**args)
916
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
917
+ end
918
+ end
919
+
920
+ # A reference to a file.
921
+ class FileReference
922
+ include Google::Apis::Core::Hashable
923
+
924
+ # The URI of a file stored in Google Cloud Storage. For example: http://storage.
925
+ # googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/
926
+ # path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#
927
+ # 1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format
928
+ # is not supported. - In response: always set - In create/update request: always
929
+ # set
930
+ # Corresponds to the JSON property `fileUri`
931
+ # @return [String]
932
+ attr_accessor :file_uri
933
+
934
+ def initialize(**args)
935
+ update!(**args)
936
+ end
937
+
938
+ # Update properties of this object
939
+ def update!(**args)
940
+ @file_uri = args[:file_uri] if args.key?(:file_uri)
941
+ end
942
+ end
943
+
944
+ # Graphics statistics for the App. The information is collected from 'adb shell
945
+ # dumpsys graphicsstats'. For more info see: https://developer.android.com/
946
+ # training/testing/performance.html Statistics will only be present for API 23+.
947
+ class GraphicsStats
948
+ include Google::Apis::Core::Hashable
949
+
950
+ # Histogram of frame render times. There should be 154 buckets ranging from [5ms,
951
+ # 6ms) to [4950ms, infinity)
952
+ # Corresponds to the JSON property `buckets`
953
+ # @return [Array<Google::Apis::ToolresultsV1beta3::GraphicsStatsBucket>]
954
+ attr_accessor :buckets
955
+
956
+ # Total "high input latency" events.
957
+ # Corresponds to the JSON property `highInputLatencyCount`
958
+ # @return [Fixnum]
959
+ attr_accessor :high_input_latency_count
960
+
961
+ # Total frames with slow render time. Should be <= total_frames.
962
+ # Corresponds to the JSON property `jankyFrames`
963
+ # @return [Fixnum]
964
+ attr_accessor :janky_frames
965
+
966
+ # Total "missed vsync" events.
967
+ # Corresponds to the JSON property `missedVsyncCount`
968
+ # @return [Fixnum]
969
+ attr_accessor :missed_vsync_count
970
+
971
+ # 50th percentile frame render time in milliseconds.
972
+ # Corresponds to the JSON property `p50Millis`
973
+ # @return [Fixnum]
974
+ attr_accessor :p50_millis
975
+
976
+ # 90th percentile frame render time in milliseconds.
977
+ # Corresponds to the JSON property `p90Millis`
978
+ # @return [Fixnum]
979
+ attr_accessor :p90_millis
980
+
981
+ # 95th percentile frame render time in milliseconds.
982
+ # Corresponds to the JSON property `p95Millis`
983
+ # @return [Fixnum]
984
+ attr_accessor :p95_millis
985
+
986
+ # 99th percentile frame render time in milliseconds.
987
+ # Corresponds to the JSON property `p99Millis`
988
+ # @return [Fixnum]
989
+ attr_accessor :p99_millis
990
+
991
+ # Total "slow bitmap upload" events.
992
+ # Corresponds to the JSON property `slowBitmapUploadCount`
993
+ # @return [Fixnum]
994
+ attr_accessor :slow_bitmap_upload_count
995
+
996
+ # Total "slow draw" events.
997
+ # Corresponds to the JSON property `slowDrawCount`
998
+ # @return [Fixnum]
999
+ attr_accessor :slow_draw_count
1000
+
1001
+ # Total "slow UI thread" events.
1002
+ # Corresponds to the JSON property `slowUiThreadCount`
1003
+ # @return [Fixnum]
1004
+ attr_accessor :slow_ui_thread_count
1005
+
1006
+ # Total frames rendered by package.
1007
+ # Corresponds to the JSON property `totalFrames`
1008
+ # @return [Fixnum]
1009
+ attr_accessor :total_frames
1010
+
1011
+ def initialize(**args)
1012
+ update!(**args)
1013
+ end
1014
+
1015
+ # Update properties of this object
1016
+ def update!(**args)
1017
+ @buckets = args[:buckets] if args.key?(:buckets)
1018
+ @high_input_latency_count = args[:high_input_latency_count] if args.key?(:high_input_latency_count)
1019
+ @janky_frames = args[:janky_frames] if args.key?(:janky_frames)
1020
+ @missed_vsync_count = args[:missed_vsync_count] if args.key?(:missed_vsync_count)
1021
+ @p50_millis = args[:p50_millis] if args.key?(:p50_millis)
1022
+ @p90_millis = args[:p90_millis] if args.key?(:p90_millis)
1023
+ @p95_millis = args[:p95_millis] if args.key?(:p95_millis)
1024
+ @p99_millis = args[:p99_millis] if args.key?(:p99_millis)
1025
+ @slow_bitmap_upload_count = args[:slow_bitmap_upload_count] if args.key?(:slow_bitmap_upload_count)
1026
+ @slow_draw_count = args[:slow_draw_count] if args.key?(:slow_draw_count)
1027
+ @slow_ui_thread_count = args[:slow_ui_thread_count] if args.key?(:slow_ui_thread_count)
1028
+ @total_frames = args[:total_frames] if args.key?(:total_frames)
1029
+ end
1030
+ end
1031
+
1032
+ #
1033
+ class GraphicsStatsBucket
1034
+ include Google::Apis::Core::Hashable
1035
+
1036
+ # Number of frames in the bucket.
1037
+ # Corresponds to the JSON property `frameCount`
1038
+ # @return [Fixnum]
1039
+ attr_accessor :frame_count
1040
+
1041
+ # Lower bound of render time in milliseconds.
1042
+ # Corresponds to the JSON property `renderMillis`
1043
+ # @return [Fixnum]
1044
+ attr_accessor :render_millis
1045
+
1046
+ def initialize(**args)
1047
+ update!(**args)
1048
+ end
1049
+
1050
+ # Update properties of this object
1051
+ def update!(**args)
1052
+ @frame_count = args[:frame_count] if args.key?(:frame_count)
1053
+ @render_millis = args[:render_millis] if args.key?(:render_millis)
1054
+ end
1055
+ end
1056
+
1057
+ # A History represents a sorted list of Executions ordered by the
1058
+ # start_timestamp_millis field (descending). It can be used to group all the
1059
+ # Executions of a continuous build. Note that the ordering only operates on one-
1060
+ # dimension. If a repository has multiple branches, it means that multiple
1061
+ # histories will need to be used in order to order Executions per branch.
1062
+ class History
1063
+ include Google::Apis::Core::Hashable
1064
+
1065
+ # A short human-readable (plain text) name to display in the UI. Maximum of 100
1066
+ # characters. - In response: present if set during create. - In create request:
1067
+ # optional
1068
+ # Corresponds to the JSON property `displayName`
1069
+ # @return [String]
1070
+ attr_accessor :display_name
1071
+
1072
+ # A unique identifier within a project for this History. Returns
1073
+ # INVALID_ARGUMENT if this field is set or overwritten by the caller. - In
1074
+ # response always set - In create request: never set
1075
+ # Corresponds to the JSON property `historyId`
1076
+ # @return [String]
1077
+ attr_accessor :history_id
1078
+
1079
+ # A name to uniquely identify a history within a project. Maximum of 200
1080
+ # characters. - In response always set - In create request: always set
1081
+ # Corresponds to the JSON property `name`
1082
+ # @return [String]
1083
+ attr_accessor :name
1084
+
1085
+ # The platform of the test history. - In response: always set. Returns the
1086
+ # platform of the last execution if unknown.
1087
+ # Corresponds to the JSON property `testPlatform`
1088
+ # @return [String]
1089
+ attr_accessor :test_platform
1090
+
1091
+ def initialize(**args)
1092
+ update!(**args)
1093
+ end
1094
+
1095
+ # Update properties of this object
1096
+ def update!(**args)
1097
+ @display_name = args[:display_name] if args.key?(:display_name)
1098
+ @history_id = args[:history_id] if args.key?(:history_id)
1099
+ @name = args[:name] if args.key?(:name)
1100
+ @test_platform = args[:test_platform] if args.key?(:test_platform)
1101
+ end
1102
+ end
1103
+
1104
+ # An image, with a link to the main image and a thumbnail.
1105
+ class Image
1106
+ include Google::Apis::Core::Hashable
1107
+
1108
+ # The `Status` type defines a logical error model that is suitable for different
1109
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1110
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1111
+ # data: error code, error message, and error details. You can find out more
1112
+ # about this error model and how to work with it in the [API Design Guide](https:
1113
+ # //cloud.google.com/apis/design/errors).
1114
+ # Corresponds to the JSON property `error`
1115
+ # @return [Google::Apis::ToolresultsV1beta3::Status]
1116
+ attr_accessor :error
1117
+
1118
+ # A reference to a ToolExecution output file.
1119
+ # Corresponds to the JSON property `sourceImage`
1120
+ # @return [Google::Apis::ToolresultsV1beta3::ToolOutputReference]
1121
+ attr_accessor :source_image
1122
+
1123
+ # The step to which the image is attached. Always set.
1124
+ # Corresponds to the JSON property `stepId`
1125
+ # @return [String]
1126
+ attr_accessor :step_id
1127
+
1128
+ # A single thumbnail, with its size and format.
1129
+ # Corresponds to the JSON property `thumbnail`
1130
+ # @return [Google::Apis::ToolresultsV1beta3::Thumbnail]
1131
+ attr_accessor :thumbnail
1132
+
1133
+ def initialize(**args)
1134
+ update!(**args)
1135
+ end
1136
+
1137
+ # Update properties of this object
1138
+ def update!(**args)
1139
+ @error = args[:error] if args.key?(:error)
1140
+ @source_image = args[:source_image] if args.key?(:source_image)
1141
+ @step_id = args[:step_id] if args.key?(:step_id)
1142
+ @thumbnail = args[:thumbnail] if args.key?(:thumbnail)
1143
+ end
1144
+ end
1145
+
1146
+ # Additional details of in-app purchases encountered during the crawl.
1147
+ class InAppPurchasesFound
1148
+ include Google::Apis::Core::Hashable
1149
+
1150
+ # The total number of in-app purchases flows explored: how many times the robo
1151
+ # tries to buy a SKU.
1152
+ # Corresponds to the JSON property `inAppPurchasesFlowsExplored`
1153
+ # @return [Fixnum]
1154
+ attr_accessor :in_app_purchases_flows_explored
1155
+
1156
+ # The total number of in-app purchases flows started.
1157
+ # Corresponds to the JSON property `inAppPurchasesFlowsStarted`
1158
+ # @return [Fixnum]
1159
+ attr_accessor :in_app_purchases_flows_started
1160
+
1161
+ def initialize(**args)
1162
+ update!(**args)
1163
+ end
1164
+
1165
+ # Update properties of this object
1166
+ def update!(**args)
1167
+ @in_app_purchases_flows_explored = args[:in_app_purchases_flows_explored] if args.key?(:in_app_purchases_flows_explored)
1168
+ @in_app_purchases_flows_started = args[:in_app_purchases_flows_started] if args.key?(:in_app_purchases_flows_started)
1169
+ end
1170
+ end
1171
+
1172
+ # Details for an outcome with an INCONCLUSIVE outcome summary.
1173
+ class InconclusiveDetail
1174
+ include Google::Apis::Core::Hashable
1175
+
1176
+ # If the end user aborted the test execution before a pass or fail could be
1177
+ # determined. For example, the user pressed ctrl-c which sent a kill signal to
1178
+ # the test runner while the test was running.
1179
+ # Corresponds to the JSON property `abortedByUser`
1180
+ # @return [Boolean]
1181
+ attr_accessor :aborted_by_user
1182
+ alias_method :aborted_by_user?, :aborted_by_user
1183
+
1184
+ # If results are being provided to the user in certain cases of infrastructure
1185
+ # failures
1186
+ # Corresponds to the JSON property `hasErrorLogs`
1187
+ # @return [Boolean]
1188
+ attr_accessor :has_error_logs
1189
+ alias_method :has_error_logs?, :has_error_logs
1190
+
1191
+ # If the test runner could not determine success or failure because the test
1192
+ # depends on a component other than the system under test which failed. For
1193
+ # example, a mobile test requires provisioning a device where the test executes,
1194
+ # and that provisioning can fail.
1195
+ # Corresponds to the JSON property `infrastructureFailure`
1196
+ # @return [Boolean]
1197
+ attr_accessor :infrastructure_failure
1198
+ alias_method :infrastructure_failure?, :infrastructure_failure
1199
+
1200
+ def initialize(**args)
1201
+ update!(**args)
1202
+ end
1203
+
1204
+ # Update properties of this object
1205
+ def update!(**args)
1206
+ @aborted_by_user = args[:aborted_by_user] if args.key?(:aborted_by_user)
1207
+ @has_error_logs = args[:has_error_logs] if args.key?(:has_error_logs)
1208
+ @infrastructure_failure = args[:infrastructure_failure] if args.key?(:infrastructure_failure)
1209
+ end
1210
+ end
1211
+
1212
+ # Step Id and outcome of each individual step that was run as a group with other
1213
+ # steps with the same configuration.
1214
+ class IndividualOutcome
1215
+ include Google::Apis::Core::Hashable
1216
+
1217
+ # Unique int given to each step. Ranges from 0(inclusive) to total number of
1218
+ # steps(exclusive). The primary step is 0.
1219
+ # Corresponds to the JSON property `multistepNumber`
1220
+ # @return [Fixnum]
1221
+ attr_accessor :multistep_number
1222
+
1223
+ #
1224
+ # Corresponds to the JSON property `outcomeSummary`
1225
+ # @return [String]
1226
+ attr_accessor :outcome_summary
1227
+
1228
+ # A Duration represents a signed, fixed-length span of time represented as a
1229
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1230
+ # independent of any calendar and concepts like "day" or "month". It is related
1231
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1232
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1233
+ # 10,000 years.
1234
+ # Corresponds to the JSON property `runDuration`
1235
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
1236
+ attr_accessor :run_duration
1237
+
1238
+ #
1239
+ # Corresponds to the JSON property `stepId`
1240
+ # @return [String]
1241
+ attr_accessor :step_id
1242
+
1243
+ def initialize(**args)
1244
+ update!(**args)
1245
+ end
1246
+
1247
+ # Update properties of this object
1248
+ def update!(**args)
1249
+ @multistep_number = args[:multistep_number] if args.key?(:multistep_number)
1250
+ @outcome_summary = args[:outcome_summary] if args.key?(:outcome_summary)
1251
+ @run_duration = args[:run_duration] if args.key?(:run_duration)
1252
+ @step_id = args[:step_id] if args.key?(:step_id)
1253
+ end
1254
+ end
1255
+
1256
+ # A warning that Robo did not crawl potentially important parts of the app.
1257
+ class InsufficientCoverage
1258
+ include Google::Apis::Core::Hashable
1259
+
1260
+ def initialize(**args)
1261
+ update!(**args)
1262
+ end
1263
+
1264
+ # Update properties of this object
1265
+ def update!(**args)
1266
+ end
1267
+ end
1268
+
1269
+ # Additional details for an iOS app crash.
1270
+ class IosAppCrashed
1271
+ include Google::Apis::Core::Hashable
1272
+
1273
+ # A stacktrace.
1274
+ # Corresponds to the JSON property `stackTrace`
1275
+ # @return [Google::Apis::ToolresultsV1beta3::StackTrace]
1276
+ attr_accessor :stack_trace
1277
+
1278
+ def initialize(**args)
1279
+ update!(**args)
1280
+ end
1281
+
1282
+ # Update properties of this object
1283
+ def update!(**args)
1284
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
1285
+ end
1286
+ end
1287
+
1288
+ # iOS app information
1289
+ class IosAppInfo
1290
+ include Google::Apis::Core::Hashable
1291
+
1292
+ # The name of the app. Required
1293
+ # Corresponds to the JSON property `name`
1294
+ # @return [String]
1295
+ attr_accessor :name
1296
+
1297
+ def initialize(**args)
1298
+ update!(**args)
1299
+ end
1300
+
1301
+ # Update properties of this object
1302
+ def update!(**args)
1303
+ @name = args[:name] if args.key?(:name)
1304
+ end
1305
+ end
1306
+
1307
+ # A Robo test for an iOS application.
1308
+ class IosRoboTest
1309
+ include Google::Apis::Core::Hashable
1310
+
1311
+ def initialize(**args)
1312
+ update!(**args)
1313
+ end
1314
+
1315
+ # Update properties of this object
1316
+ def update!(**args)
1317
+ end
1318
+ end
1319
+
1320
+ # A iOS mobile test specification
1321
+ class IosTest
1322
+ include Google::Apis::Core::Hashable
1323
+
1324
+ # iOS app information
1325
+ # Corresponds to the JSON property `iosAppInfo`
1326
+ # @return [Google::Apis::ToolresultsV1beta3::IosAppInfo]
1327
+ attr_accessor :ios_app_info
1328
+
1329
+ # A Robo test for an iOS application.
1330
+ # Corresponds to the JSON property `iosRoboTest`
1331
+ # @return [Google::Apis::ToolresultsV1beta3::IosRoboTest]
1332
+ attr_accessor :ios_robo_test
1333
+
1334
+ # A game loop test of an iOS application.
1335
+ # Corresponds to the JSON property `iosTestLoop`
1336
+ # @return [Google::Apis::ToolresultsV1beta3::IosTestLoop]
1337
+ attr_accessor :ios_test_loop
1338
+
1339
+ # A test of an iOS application that uses the XCTest framework.
1340
+ # Corresponds to the JSON property `iosXcTest`
1341
+ # @return [Google::Apis::ToolresultsV1beta3::IosXcTest]
1342
+ attr_accessor :ios_xc_test
1343
+
1344
+ # A Duration represents a signed, fixed-length span of time represented as a
1345
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1346
+ # independent of any calendar and concepts like "day" or "month". It is related
1347
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1348
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1349
+ # 10,000 years.
1350
+ # Corresponds to the JSON property `testTimeout`
1351
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
1352
+ attr_accessor :test_timeout
1353
+
1354
+ def initialize(**args)
1355
+ update!(**args)
1356
+ end
1357
+
1358
+ # Update properties of this object
1359
+ def update!(**args)
1360
+ @ios_app_info = args[:ios_app_info] if args.key?(:ios_app_info)
1361
+ @ios_robo_test = args[:ios_robo_test] if args.key?(:ios_robo_test)
1362
+ @ios_test_loop = args[:ios_test_loop] if args.key?(:ios_test_loop)
1363
+ @ios_xc_test = args[:ios_xc_test] if args.key?(:ios_xc_test)
1364
+ @test_timeout = args[:test_timeout] if args.key?(:test_timeout)
1365
+ end
1366
+ end
1367
+
1368
+ # A game loop test of an iOS application.
1369
+ class IosTestLoop
1370
+ include Google::Apis::Core::Hashable
1371
+
1372
+ # Bundle ID of the app.
1373
+ # Corresponds to the JSON property `bundleId`
1374
+ # @return [String]
1375
+ attr_accessor :bundle_id
1376
+
1377
+ def initialize(**args)
1378
+ update!(**args)
1379
+ end
1380
+
1381
+ # Update properties of this object
1382
+ def update!(**args)
1383
+ @bundle_id = args[:bundle_id] if args.key?(:bundle_id)
1384
+ end
1385
+ end
1386
+
1387
+ # A test of an iOS application that uses the XCTest framework.
1388
+ class IosXcTest
1389
+ include Google::Apis::Core::Hashable
1390
+
1391
+ # Bundle ID of the app.
1392
+ # Corresponds to the JSON property `bundleId`
1393
+ # @return [String]
1394
+ attr_accessor :bundle_id
1395
+
1396
+ # Xcode version that the test was run with.
1397
+ # Corresponds to the JSON property `xcodeVersion`
1398
+ # @return [String]
1399
+ attr_accessor :xcode_version
1400
+
1401
+ def initialize(**args)
1402
+ update!(**args)
1403
+ end
1404
+
1405
+ # Update properties of this object
1406
+ def update!(**args)
1407
+ @bundle_id = args[:bundle_id] if args.key?(:bundle_id)
1408
+ @xcode_version = args[:xcode_version] if args.key?(:xcode_version)
1409
+ end
1410
+ end
1411
+
1412
+ # Failed to find the launcher activity of an app.
1413
+ class LauncherActivityNotFound
1414
+ include Google::Apis::Core::Hashable
1415
+
1416
+ def initialize(**args)
1417
+ update!(**args)
1418
+ end
1419
+
1420
+ # Update properties of this object
1421
+ def update!(**args)
1422
+ end
1423
+ end
1424
+
1425
+ # Response message for EnvironmentService.ListEnvironments.
1426
+ class ListEnvironmentsResponse
1427
+ include Google::Apis::Core::Hashable
1428
+
1429
+ # Environments. Always set.
1430
+ # Corresponds to the JSON property `environments`
1431
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Environment>]
1432
+ attr_accessor :environments
1433
+
1434
+ # A Execution id Always set.
1435
+ # Corresponds to the JSON property `executionId`
1436
+ # @return [String]
1437
+ attr_accessor :execution_id
1438
+
1439
+ # A History id. Always set.
1440
+ # Corresponds to the JSON property `historyId`
1441
+ # @return [String]
1442
+ attr_accessor :history_id
1443
+
1444
+ # A continuation token to resume the query at the next item. Will only be set if
1445
+ # there are more Environments to fetch.
1446
+ # Corresponds to the JSON property `nextPageToken`
1447
+ # @return [String]
1448
+ attr_accessor :next_page_token
1449
+
1450
+ # A Project id. Always set.
1451
+ # Corresponds to the JSON property `projectId`
1452
+ # @return [String]
1453
+ attr_accessor :project_id
1454
+
1455
+ def initialize(**args)
1456
+ update!(**args)
1457
+ end
1458
+
1459
+ # Update properties of this object
1460
+ def update!(**args)
1461
+ @environments = args[:environments] if args.key?(:environments)
1462
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
1463
+ @history_id = args[:history_id] if args.key?(:history_id)
1464
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1465
+ @project_id = args[:project_id] if args.key?(:project_id)
1466
+ end
1467
+ end
1468
+
1469
+ #
1470
+ class ListExecutionsResponse
1471
+ include Google::Apis::Core::Hashable
1472
+
1473
+ # Executions. Always set.
1474
+ # Corresponds to the JSON property `executions`
1475
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Execution>]
1476
+ attr_accessor :executions
1477
+
1478
+ # A continuation token to resume the query at the next item. Will only be set if
1479
+ # there are more Executions to fetch.
1480
+ # Corresponds to the JSON property `nextPageToken`
1481
+ # @return [String]
1482
+ attr_accessor :next_page_token
1483
+
1484
+ def initialize(**args)
1485
+ update!(**args)
1486
+ end
1487
+
1488
+ # Update properties of this object
1489
+ def update!(**args)
1490
+ @executions = args[:executions] if args.key?(:executions)
1491
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1492
+ end
1493
+ end
1494
+
1495
+ # Response message for HistoryService.List
1496
+ class ListHistoriesResponse
1497
+ include Google::Apis::Core::Hashable
1498
+
1499
+ # Histories.
1500
+ # Corresponds to the JSON property `histories`
1501
+ # @return [Array<Google::Apis::ToolresultsV1beta3::History>]
1502
+ attr_accessor :histories
1503
+
1504
+ # A continuation token to resume the query at the next item. Will only be set if
1505
+ # there are more histories to fetch. Tokens are valid for up to one hour from
1506
+ # the time of the first list request. For instance, if you make a list request
1507
+ # at 1PM and use the token from this first request 10 minutes later, the token
1508
+ # from this second response will only be valid for 50 minutes.
1509
+ # Corresponds to the JSON property `nextPageToken`
1510
+ # @return [String]
1511
+ attr_accessor :next_page_token
1512
+
1513
+ def initialize(**args)
1514
+ update!(**args)
1515
+ end
1516
+
1517
+ # Update properties of this object
1518
+ def update!(**args)
1519
+ @histories = args[:histories] if args.key?(:histories)
1520
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1521
+ end
1522
+ end
1523
+
1524
+ #
1525
+ class ListPerfSampleSeriesResponse
1526
+ include Google::Apis::Core::Hashable
1527
+
1528
+ # The resulting PerfSampleSeries sorted by id
1529
+ # Corresponds to the JSON property `perfSampleSeries`
1530
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSampleSeries>]
1531
+ attr_accessor :perf_sample_series
1532
+
1533
+ def initialize(**args)
1534
+ update!(**args)
1535
+ end
1536
+
1537
+ # Update properties of this object
1538
+ def update!(**args)
1539
+ @perf_sample_series = args[:perf_sample_series] if args.key?(:perf_sample_series)
1540
+ end
1541
+ end
1542
+
1543
+ #
1544
+ class ListPerfSamplesResponse
1545
+ include Google::Apis::Core::Hashable
1546
+
1547
+ # Optional, returned if result size exceeds the page size specified in the
1548
+ # request (or the default page size, 500, if unspecified). It indicates the last
1549
+ # sample timestamp to be used as page_token in subsequent request
1550
+ # Corresponds to the JSON property `nextPageToken`
1551
+ # @return [String]
1552
+ attr_accessor :next_page_token
1553
+
1554
+ #
1555
+ # Corresponds to the JSON property `perfSamples`
1556
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>]
1557
+ attr_accessor :perf_samples
1558
+
1559
+ def initialize(**args)
1560
+ update!(**args)
1561
+ end
1562
+
1563
+ # Update properties of this object
1564
+ def update!(**args)
1565
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1566
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
1567
+ end
1568
+ end
1569
+
1570
+ #
1571
+ class ListScreenshotClustersResponse
1572
+ include Google::Apis::Core::Hashable
1573
+
1574
+ # The set of clusters associated with an execution Always set
1575
+ # Corresponds to the JSON property `clusters`
1576
+ # @return [Array<Google::Apis::ToolresultsV1beta3::ScreenshotCluster>]
1577
+ attr_accessor :clusters
1578
+
1579
+ def initialize(**args)
1580
+ update!(**args)
1581
+ end
1582
+
1583
+ # Update properties of this object
1584
+ def update!(**args)
1585
+ @clusters = args[:clusters] if args.key?(:clusters)
1586
+ end
1587
+ end
1588
+
1589
+ # Response message for AccessibilityService.ListStepAccessibilityClusters.
1590
+ class ListStepAccessibilityClustersResponse
1591
+ include Google::Apis::Core::Hashable
1592
+
1593
+ # A sequence of accessibility suggestions, grouped into clusters. Within the
1594
+ # sequence, clusters that belong to the same SuggestionCategory should be
1595
+ # adjacent. Within each category, clusters should be ordered by their
1596
+ # SuggestionPriority (ERRORs first). The categories should be ordered by their
1597
+ # highest priority cluster.
1598
+ # Corresponds to the JSON property `clusters`
1599
+ # @return [Array<Google::Apis::ToolresultsV1beta3::SuggestionClusterProto>]
1600
+ attr_accessor :clusters
1601
+
1602
+ # A full resource name of the step. For example, projects/my-project/histories/
1603
+ # bh.1234567890abcdef/executions/ 1234567890123456789/steps/bs.1234567890abcdef
1604
+ # Always presents.
1605
+ # Corresponds to the JSON property `name`
1606
+ # @return [String]
1607
+ attr_accessor :name
1608
+
1609
+ def initialize(**args)
1610
+ update!(**args)
1611
+ end
1612
+
1613
+ # Update properties of this object
1614
+ def update!(**args)
1615
+ @clusters = args[:clusters] if args.key?(:clusters)
1616
+ @name = args[:name] if args.key?(:name)
1617
+ end
1618
+ end
1619
+
1620
+ # A response containing the thumbnails in a step.
1621
+ class ListStepThumbnailsResponse
1622
+ include Google::Apis::Core::Hashable
1623
+
1624
+ # A continuation token to resume the query at the next item. If set, indicates
1625
+ # that there are more thumbnails to read, by calling list again with this value
1626
+ # in the page_token field.
1627
+ # Corresponds to the JSON property `nextPageToken`
1628
+ # @return [String]
1629
+ attr_accessor :next_page_token
1630
+
1631
+ # A list of image data. Images are returned in a deterministic order; they are
1632
+ # ordered by these factors, in order of importance: * First, by their associated
1633
+ # test case. Images without a test case are considered greater than images with
1634
+ # one. * Second, by their creation time. Images without a creation time are
1635
+ # greater than images with one. * Third, by the order in which they were added
1636
+ # to the step (by calls to CreateStep or UpdateStep).
1637
+ # Corresponds to the JSON property `thumbnails`
1638
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Image>]
1639
+ attr_accessor :thumbnails
1640
+
1641
+ def initialize(**args)
1642
+ update!(**args)
1643
+ end
1644
+
1645
+ # Update properties of this object
1646
+ def update!(**args)
1647
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1648
+ @thumbnails = args[:thumbnails] if args.key?(:thumbnails)
1649
+ end
1650
+ end
1651
+
1652
+ # Response message for StepService.List.
1653
+ class ListStepsResponse
1654
+ include Google::Apis::Core::Hashable
1655
+
1656
+ # A continuation token to resume the query at the next item. If set, indicates
1657
+ # that there are more steps to read, by calling list again with this value in
1658
+ # the page_token field.
1659
+ # Corresponds to the JSON property `nextPageToken`
1660
+ # @return [String]
1661
+ attr_accessor :next_page_token
1662
+
1663
+ # Steps.
1664
+ # Corresponds to the JSON property `steps`
1665
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Step>]
1666
+ attr_accessor :steps
1667
+
1668
+ def initialize(**args)
1669
+ update!(**args)
1670
+ end
1671
+
1672
+ # Update properties of this object
1673
+ def update!(**args)
1674
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1675
+ @steps = args[:steps] if args.key?(:steps)
1676
+ end
1677
+ end
1678
+
1679
+ # Response message for StepService.ListTestCases.
1680
+ class ListTestCasesResponse
1681
+ include Google::Apis::Core::Hashable
1682
+
1683
+ #
1684
+ # Corresponds to the JSON property `nextPageToken`
1685
+ # @return [String]
1686
+ attr_accessor :next_page_token
1687
+
1688
+ # List of test cases.
1689
+ # Corresponds to the JSON property `testCases`
1690
+ # @return [Array<Google::Apis::ToolresultsV1beta3::TestCase>]
1691
+ attr_accessor :test_cases
1692
+
1693
+ def initialize(**args)
1694
+ update!(**args)
1695
+ end
1696
+
1697
+ # Update properties of this object
1698
+ def update!(**args)
1699
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1700
+ @test_cases = args[:test_cases] if args.key?(:test_cases)
1701
+ end
1702
+ end
1703
+
1704
+ # One dimension of the matrix of different runs of a step.
1705
+ class MatrixDimensionDefinition
1706
+ include Google::Apis::Core::Hashable
1707
+
1708
+ def initialize(**args)
1709
+ update!(**args)
1710
+ end
1711
+
1712
+ # Update properties of this object
1713
+ def update!(**args)
1714
+ end
1715
+ end
1716
+
1717
+ #
1718
+ class MemoryInfo
1719
+ include Google::Apis::Core::Hashable
1720
+
1721
+ # Maximum memory that can be allocated to the process in KiB
1722
+ # Corresponds to the JSON property `memoryCapInKibibyte`
1723
+ # @return [Fixnum]
1724
+ attr_accessor :memory_cap_in_kibibyte
1725
+
1726
+ # Total memory available on the device in KiB
1727
+ # Corresponds to the JSON property `memoryTotalInKibibyte`
1728
+ # @return [Fixnum]
1729
+ attr_accessor :memory_total_in_kibibyte
1730
+
1731
+ def initialize(**args)
1732
+ update!(**args)
1733
+ end
1734
+
1735
+ # Update properties of this object
1736
+ def update!(**args)
1737
+ @memory_cap_in_kibibyte = args[:memory_cap_in_kibibyte] if args.key?(:memory_cap_in_kibibyte)
1738
+ @memory_total_in_kibibyte = args[:memory_total_in_kibibyte] if args.key?(:memory_total_in_kibibyte)
1739
+ end
1740
+ end
1741
+
1742
+ # Merged test result for environment. If the environment has only one step (no
1743
+ # reruns or shards), then the merged result is the same as the step result. If
1744
+ # the environment has multiple shards and/or reruns, then the results of shards
1745
+ # and reruns that belong to the same environment are merged into one environment
1746
+ # result.
1747
+ class MergedResult
1748
+ include Google::Apis::Core::Hashable
1749
+
1750
+ # Interprets a result so that humans and machines can act on it.
1751
+ # Corresponds to the JSON property `outcome`
1752
+ # @return [Google::Apis::ToolresultsV1beta3::Outcome]
1753
+ attr_accessor :outcome
1754
+
1755
+ # State of the resource
1756
+ # Corresponds to the JSON property `state`
1757
+ # @return [String]
1758
+ attr_accessor :state
1759
+
1760
+ # The combined and rolled-up result of each test suite that was run as part of
1761
+ # this environment. Combining: When the test cases from a suite are run in
1762
+ # different steps (sharding), the results are added back together in one
1763
+ # overview. (e.g., if shard1 has 2 failures and shard2 has 1 failure than the
1764
+ # overview failure_count = 3). Rollup: When test cases from the same suite are
1765
+ # run multiple times (flaky), the results are combined (e.g., if testcase1.run1
1766
+ # fails, testcase1.run2 passes, and both testcase2.run1 and testcase2.run2 fail
1767
+ # then the overview flaky_count = 1 and failure_count = 1).
1768
+ # Corresponds to the JSON property `testSuiteOverviews`
1769
+ # @return [Array<Google::Apis::ToolresultsV1beta3::TestSuiteOverview>]
1770
+ attr_accessor :test_suite_overviews
1771
+
1772
+ def initialize(**args)
1773
+ update!(**args)
1774
+ end
1775
+
1776
+ # Update properties of this object
1777
+ def update!(**args)
1778
+ @outcome = args[:outcome] if args.key?(:outcome)
1779
+ @state = args[:state] if args.key?(:state)
1780
+ @test_suite_overviews = args[:test_suite_overviews] if args.key?(:test_suite_overviews)
1781
+ end
1782
+ end
1783
+
1784
+ # Details when multiple steps are run with the same configuration as a group.
1785
+ class MultiStep
1786
+ include Google::Apis::Core::Hashable
1787
+
1788
+ # Unique int given to each step. Ranges from 0(inclusive) to total number of
1789
+ # steps(exclusive). The primary step is 0.
1790
+ # Corresponds to the JSON property `multistepNumber`
1791
+ # @return [Fixnum]
1792
+ attr_accessor :multistep_number
1793
+
1794
+ # Stores rollup test status of multiple steps that were run as a group and
1795
+ # outcome of each individual step.
1796
+ # Corresponds to the JSON property `primaryStep`
1797
+ # @return [Google::Apis::ToolresultsV1beta3::PrimaryStep]
1798
+ attr_accessor :primary_step
1799
+
1800
+ # Step Id of the primary (original) step, which might be this step.
1801
+ # Corresponds to the JSON property `primaryStepId`
1802
+ # @return [String]
1803
+ attr_accessor :primary_step_id
1804
+
1805
+ def initialize(**args)
1806
+ update!(**args)
1807
+ end
1808
+
1809
+ # Update properties of this object
1810
+ def update!(**args)
1811
+ @multistep_number = args[:multistep_number] if args.key?(:multistep_number)
1812
+ @primary_step = args[:primary_step] if args.key?(:primary_step)
1813
+ @primary_step_id = args[:primary_step_id] if args.key?(:primary_step_id)
1814
+ end
1815
+ end
1816
+
1817
+ # Additional details for a native crash.
1818
+ class NativeCrash
1819
+ include Google::Apis::Core::Hashable
1820
+
1821
+ # A stacktrace.
1822
+ # Corresponds to the JSON property `stackTrace`
1823
+ # @return [Google::Apis::ToolresultsV1beta3::StackTrace]
1824
+ attr_accessor :stack_trace
1825
+
1826
+ def initialize(**args)
1827
+ update!(**args)
1828
+ end
1829
+
1830
+ # Update properties of this object
1831
+ def update!(**args)
1832
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
1833
+ end
1834
+ end
1835
+
1836
+ # A non-sdk API and examples of it being called along with other metadata See
1837
+ # https://developer.android.com/distribute/best-practices/develop/restrictions-
1838
+ # non-sdk-interfaces
1839
+ class NonSdkApi
1840
+ include Google::Apis::Core::Hashable
1841
+
1842
+ # The signature of the Non-SDK API
1843
+ # Corresponds to the JSON property `apiSignature`
1844
+ # @return [String]
1845
+ attr_accessor :api_signature
1846
+
1847
+ # Example stack traces of this API being called.
1848
+ # Corresponds to the JSON property `exampleStackTraces`
1849
+ # @return [Array<String>]
1850
+ attr_accessor :example_stack_traces
1851
+
1852
+ # Optional debugging insights for non-SDK API violations.
1853
+ # Corresponds to the JSON property `insights`
1854
+ # @return [Array<Google::Apis::ToolresultsV1beta3::NonSdkApiInsight>]
1855
+ attr_accessor :insights
1856
+
1857
+ # The total number of times this API was observed to have been called.
1858
+ # Corresponds to the JSON property `invocationCount`
1859
+ # @return [Fixnum]
1860
+ attr_accessor :invocation_count
1861
+
1862
+ # Which list this API appears on
1863
+ # Corresponds to the JSON property `list`
1864
+ # @return [String]
1865
+ attr_accessor :list
1866
+
1867
+ def initialize(**args)
1868
+ update!(**args)
1869
+ end
1870
+
1871
+ # Update properties of this object
1872
+ def update!(**args)
1873
+ @api_signature = args[:api_signature] if args.key?(:api_signature)
1874
+ @example_stack_traces = args[:example_stack_traces] if args.key?(:example_stack_traces)
1875
+ @insights = args[:insights] if args.key?(:insights)
1876
+ @invocation_count = args[:invocation_count] if args.key?(:invocation_count)
1877
+ @list = args[:list] if args.key?(:list)
1878
+ end
1879
+ end
1880
+
1881
+ # Non-SDK API insights (to address debugging solutions).
1882
+ class NonSdkApiInsight
1883
+ include Google::Apis::Core::Hashable
1884
+
1885
+ # Optional sample stack traces, for which this insight applies (there should be
1886
+ # at least one).
1887
+ # Corresponds to the JSON property `exampleTraceMessages`
1888
+ # @return [Array<String>]
1889
+ attr_accessor :example_trace_messages
1890
+
1891
+ # A unique ID, to be used for determining the effectiveness of this particular
1892
+ # insight in the context of a matcher. (required)
1893
+ # Corresponds to the JSON property `matcherId`
1894
+ # @return [String]
1895
+ attr_accessor :matcher_id
1896
+
1897
+ # This insight indicates that the hidden API usage originates from a Google-
1898
+ # provided library. Users need not take any action.
1899
+ # Corresponds to the JSON property `pendingGoogleUpdateInsight`
1900
+ # @return [Google::Apis::ToolresultsV1beta3::PendingGoogleUpdateInsight]
1901
+ attr_accessor :pending_google_update_insight
1902
+
1903
+ # This insight is a recommendation to upgrade a given library to the specified
1904
+ # version, in order to avoid dependencies on non-SDK APIs.
1905
+ # Corresponds to the JSON property `upgradeInsight`
1906
+ # @return [Google::Apis::ToolresultsV1beta3::UpgradeInsight]
1907
+ attr_accessor :upgrade_insight
1908
+
1909
+ def initialize(**args)
1910
+ update!(**args)
1911
+ end
1912
+
1913
+ # Update properties of this object
1914
+ def update!(**args)
1915
+ @example_trace_messages = args[:example_trace_messages] if args.key?(:example_trace_messages)
1916
+ @matcher_id = args[:matcher_id] if args.key?(:matcher_id)
1917
+ @pending_google_update_insight = args[:pending_google_update_insight] if args.key?(:pending_google_update_insight)
1918
+ @upgrade_insight = args[:upgrade_insight] if args.key?(:upgrade_insight)
1919
+ end
1920
+ end
1921
+
1922
+ # Additional details for a non-sdk API usage violation.
1923
+ class NonSdkApiUsageViolation
1924
+ include Google::Apis::Core::Hashable
1925
+
1926
+ # Signatures of a subset of those hidden API's.
1927
+ # Corresponds to the JSON property `apiSignatures`
1928
+ # @return [Array<String>]
1929
+ attr_accessor :api_signatures
1930
+
1931
+ # Total number of unique hidden API's accessed.
1932
+ # Corresponds to the JSON property `uniqueApis`
1933
+ # @return [Fixnum]
1934
+ attr_accessor :unique_apis
1935
+
1936
+ def initialize(**args)
1937
+ update!(**args)
1938
+ end
1939
+
1940
+ # Update properties of this object
1941
+ def update!(**args)
1942
+ @api_signatures = args[:api_signatures] if args.key?(:api_signatures)
1943
+ @unique_apis = args[:unique_apis] if args.key?(:unique_apis)
1944
+ end
1945
+ end
1946
+
1947
+ # Contains a summary and examples of non-sdk API usage violations.
1948
+ class NonSdkApiUsageViolationReport
1949
+ include Google::Apis::Core::Hashable
1950
+
1951
+ # Examples of the detected API usages.
1952
+ # Corresponds to the JSON property `exampleApis`
1953
+ # @return [Array<Google::Apis::ToolresultsV1beta3::NonSdkApi>]
1954
+ attr_accessor :example_apis
1955
+
1956
+ # Minimum API level required for the application to run.
1957
+ # Corresponds to the JSON property `minSdkVersion`
1958
+ # @return [Fixnum]
1959
+ attr_accessor :min_sdk_version
1960
+
1961
+ # Specifies the API Level on which the application is designed to run.
1962
+ # Corresponds to the JSON property `targetSdkVersion`
1963
+ # @return [Fixnum]
1964
+ attr_accessor :target_sdk_version
1965
+
1966
+ # Total number of unique Non-SDK API's accessed.
1967
+ # Corresponds to the JSON property `uniqueApis`
1968
+ # @return [Fixnum]
1969
+ attr_accessor :unique_apis
1970
+
1971
+ def initialize(**args)
1972
+ update!(**args)
1973
+ end
1974
+
1975
+ # Update properties of this object
1976
+ def update!(**args)
1977
+ @example_apis = args[:example_apis] if args.key?(:example_apis)
1978
+ @min_sdk_version = args[:min_sdk_version] if args.key?(:min_sdk_version)
1979
+ @target_sdk_version = args[:target_sdk_version] if args.key?(:target_sdk_version)
1980
+ @unique_apis = args[:unique_apis] if args.key?(:unique_apis)
1981
+ end
1982
+ end
1983
+
1984
+ # Interprets a result so that humans and machines can act on it.
1985
+ class Outcome
1986
+ include Google::Apis::Core::Hashable
1987
+
1988
+ # Details for an outcome with a FAILURE outcome summary.
1989
+ # Corresponds to the JSON property `failureDetail`
1990
+ # @return [Google::Apis::ToolresultsV1beta3::FailureDetail]
1991
+ attr_accessor :failure_detail
1992
+
1993
+ # Details for an outcome with an INCONCLUSIVE outcome summary.
1994
+ # Corresponds to the JSON property `inconclusiveDetail`
1995
+ # @return [Google::Apis::ToolresultsV1beta3::InconclusiveDetail]
1996
+ attr_accessor :inconclusive_detail
1997
+
1998
+ # Details for an outcome with a SKIPPED outcome summary.
1999
+ # Corresponds to the JSON property `skippedDetail`
2000
+ # @return [Google::Apis::ToolresultsV1beta3::SkippedDetail]
2001
+ attr_accessor :skipped_detail
2002
+
2003
+ # Details for an outcome with a SUCCESS outcome summary. LINT.IfChange
2004
+ # Corresponds to the JSON property `successDetail`
2005
+ # @return [Google::Apis::ToolresultsV1beta3::SuccessDetail]
2006
+ attr_accessor :success_detail
2007
+
2008
+ # The simplest way to interpret a result. Required
2009
+ # Corresponds to the JSON property `summary`
2010
+ # @return [String]
2011
+ attr_accessor :summary
2012
+
2013
+ def initialize(**args)
2014
+ update!(**args)
2015
+ end
2016
+
2017
+ # Update properties of this object
2018
+ def update!(**args)
2019
+ @failure_detail = args[:failure_detail] if args.key?(:failure_detail)
2020
+ @inconclusive_detail = args[:inconclusive_detail] if args.key?(:inconclusive_detail)
2021
+ @skipped_detail = args[:skipped_detail] if args.key?(:skipped_detail)
2022
+ @success_detail = args[:success_detail] if args.key?(:success_detail)
2023
+ @summary = args[:summary] if args.key?(:summary)
2024
+ end
2025
+ end
2026
+
2027
+ # A warning that Robo encountered a screen that has overlapping clickable
2028
+ # elements; this may indicate a potential UI issue.
2029
+ class OverlappingUiElements
2030
+ include Google::Apis::Core::Hashable
2031
+
2032
+ # Resource names of the overlapping screen elements
2033
+ # Corresponds to the JSON property `resourceName`
2034
+ # @return [Array<String>]
2035
+ attr_accessor :resource_name
2036
+
2037
+ # The screen id of the elements
2038
+ # Corresponds to the JSON property `screenId`
2039
+ # @return [String]
2040
+ attr_accessor :screen_id
2041
+
2042
+ def initialize(**args)
2043
+ update!(**args)
2044
+ end
2045
+
2046
+ # Update properties of this object
2047
+ def update!(**args)
2048
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
2049
+ @screen_id = args[:screen_id] if args.key?(:screen_id)
2050
+ end
2051
+ end
2052
+
2053
+ # This insight indicates that the hidden API usage originates from a Google-
2054
+ # provided library. Users need not take any action.
2055
+ class PendingGoogleUpdateInsight
2056
+ include Google::Apis::Core::Hashable
2057
+
2058
+ # The name of the Google-provided library with the non-SDK API dependency.
2059
+ # Corresponds to the JSON property `nameOfGoogleLibrary`
2060
+ # @return [String]
2061
+ attr_accessor :name_of_google_library
2062
+
2063
+ def initialize(**args)
2064
+ update!(**args)
2065
+ end
2066
+
2067
+ # Update properties of this object
2068
+ def update!(**args)
2069
+ @name_of_google_library = args[:name_of_google_library] if args.key?(:name_of_google_library)
2070
+ end
2071
+ end
2072
+
2073
+ # Encapsulates performance environment info
2074
+ class PerfEnvironment
2075
+ include Google::Apis::Core::Hashable
2076
+
2077
+ # CPU related environment info
2078
+ # Corresponds to the JSON property `cpuInfo`
2079
+ # @return [Google::Apis::ToolresultsV1beta3::CpuInfo]
2080
+ attr_accessor :cpu_info
2081
+
2082
+ # Memory related environment info
2083
+ # Corresponds to the JSON property `memoryInfo`
2084
+ # @return [Google::Apis::ToolresultsV1beta3::MemoryInfo]
2085
+ attr_accessor :memory_info
2086
+
2087
+ def initialize(**args)
2088
+ update!(**args)
2089
+ end
2090
+
2091
+ # Update properties of this object
2092
+ def update!(**args)
2093
+ @cpu_info = args[:cpu_info] if args.key?(:cpu_info)
2094
+ @memory_info = args[:memory_info] if args.key?(:memory_info)
2095
+ end
2096
+ end
2097
+
2098
+ # A summary of perf metrics collected and performance environment info
2099
+ class PerfMetricsSummary
2100
+ include Google::Apis::Core::Hashable
2101
+
2102
+ #
2103
+ # Corresponds to the JSON property `appStartTime`
2104
+ # @return [Google::Apis::ToolresultsV1beta3::AppStartTime]
2105
+ attr_accessor :app_start_time
2106
+
2107
+ # A tool results execution ID. @OutputOnly
2108
+ # Corresponds to the JSON property `executionId`
2109
+ # @return [String]
2110
+ attr_accessor :execution_id
2111
+
2112
+ # Graphics statistics for the App. The information is collected from 'adb shell
2113
+ # dumpsys graphicsstats'. For more info see: https://developer.android.com/
2114
+ # training/testing/performance.html Statistics will only be present for API 23+.
2115
+ # Corresponds to the JSON property `graphicsStats`
2116
+ # @return [Google::Apis::ToolresultsV1beta3::GraphicsStats]
2117
+ attr_accessor :graphics_stats
2118
+
2119
+ # A tool results history ID. @OutputOnly
2120
+ # Corresponds to the JSON property `historyId`
2121
+ # @return [String]
2122
+ attr_accessor :history_id
2123
+
2124
+ # Encapsulates performance environment info
2125
+ # Corresponds to the JSON property `perfEnvironment`
2126
+ # @return [Google::Apis::ToolresultsV1beta3::PerfEnvironment]
2127
+ attr_accessor :perf_environment
2128
+
2129
+ # Set of resource collected
2130
+ # Corresponds to the JSON property `perfMetrics`
2131
+ # @return [Array<String>]
2132
+ attr_accessor :perf_metrics
2133
+
2134
+ # The cloud project @OutputOnly
2135
+ # Corresponds to the JSON property `projectId`
2136
+ # @return [String]
2137
+ attr_accessor :project_id
2138
+
2139
+ # A tool results step ID. @OutputOnly
2140
+ # Corresponds to the JSON property `stepId`
2141
+ # @return [String]
2142
+ attr_accessor :step_id
2143
+
2144
+ def initialize(**args)
2145
+ update!(**args)
2146
+ end
2147
+
2148
+ # Update properties of this object
2149
+ def update!(**args)
2150
+ @app_start_time = args[:app_start_time] if args.key?(:app_start_time)
2151
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
2152
+ @graphics_stats = args[:graphics_stats] if args.key?(:graphics_stats)
2153
+ @history_id = args[:history_id] if args.key?(:history_id)
2154
+ @perf_environment = args[:perf_environment] if args.key?(:perf_environment)
2155
+ @perf_metrics = args[:perf_metrics] if args.key?(:perf_metrics)
2156
+ @project_id = args[:project_id] if args.key?(:project_id)
2157
+ @step_id = args[:step_id] if args.key?(:step_id)
2158
+ end
2159
+ end
2160
+
2161
+ # Resource representing a single performance measure or data point
2162
+ class PerfSample
2163
+ include Google::Apis::Core::Hashable
2164
+
2165
+ # A Timestamp represents a point in time independent of any time zone or local
2166
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
2167
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
2168
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
2169
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
2170
+ # smeared" so that no leap second table is needed for interpretation, using a [
2171
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
2172
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
2173
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
2174
+ # ietf.org/rfc/rfc3339.txt) date strings.
2175
+ # Corresponds to the JSON property `sampleTime`
2176
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
2177
+ attr_accessor :sample_time
2178
+
2179
+ # Value observed
2180
+ # Corresponds to the JSON property `value`
2181
+ # @return [Float]
2182
+ attr_accessor :value
2183
+
2184
+ def initialize(**args)
2185
+ update!(**args)
2186
+ end
2187
+
2188
+ # Update properties of this object
2189
+ def update!(**args)
2190
+ @sample_time = args[:sample_time] if args.key?(:sample_time)
2191
+ @value = args[:value] if args.key?(:value)
2192
+ end
2193
+ end
2194
+
2195
+ # Resource representing a collection of performance samples (or data points)
2196
+ class PerfSampleSeries
2197
+ include Google::Apis::Core::Hashable
2198
+
2199
+ # Encapsulates the metadata for basic sample series represented by a line chart
2200
+ # Corresponds to the JSON property `basicPerfSampleSeries`
2201
+ # @return [Google::Apis::ToolresultsV1beta3::BasicPerfSampleSeries]
2202
+ attr_accessor :basic_perf_sample_series
2203
+
2204
+ # A tool results execution ID. @OutputOnly
2205
+ # Corresponds to the JSON property `executionId`
2206
+ # @return [String]
2207
+ attr_accessor :execution_id
2208
+
2209
+ # A tool results history ID. @OutputOnly
2210
+ # Corresponds to the JSON property `historyId`
2211
+ # @return [String]
2212
+ attr_accessor :history_id
2213
+
2214
+ # The cloud project @OutputOnly
2215
+ # Corresponds to the JSON property `projectId`
2216
+ # @return [String]
2217
+ attr_accessor :project_id
2218
+
2219
+ # A sample series id @OutputOnly
2220
+ # Corresponds to the JSON property `sampleSeriesId`
2221
+ # @return [String]
2222
+ attr_accessor :sample_series_id
2223
+
2224
+ # A tool results step ID. @OutputOnly
2225
+ # Corresponds to the JSON property `stepId`
2226
+ # @return [String]
2227
+ attr_accessor :step_id
2228
+
2229
+ def initialize(**args)
2230
+ update!(**args)
2231
+ end
2232
+
2233
+ # Update properties of this object
2234
+ def update!(**args)
2235
+ @basic_perf_sample_series = args[:basic_perf_sample_series] if args.key?(:basic_perf_sample_series)
2236
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
2237
+ @history_id = args[:history_id] if args.key?(:history_id)
2238
+ @project_id = args[:project_id] if args.key?(:project_id)
2239
+ @sample_series_id = args[:sample_series_id] if args.key?(:sample_series_id)
2240
+ @step_id = args[:step_id] if args.key?(:step_id)
2241
+ end
2242
+ end
2243
+
2244
+ # A notification that Robo signed in with Google.
2245
+ class PerformedGoogleLogin
2246
+ include Google::Apis::Core::Hashable
2247
+
2248
+ def initialize(**args)
2249
+ update!(**args)
2250
+ end
2251
+
2252
+ # Update properties of this object
2253
+ def update!(**args)
2254
+ end
2255
+ end
2256
+
2257
+ # A notification that Robo performed some monkey actions.
2258
+ class PerformedMonkeyActions
2259
+ include Google::Apis::Core::Hashable
2260
+
2261
+ # The total number of monkey actions performed during the crawl.
2262
+ # Corresponds to the JSON property `totalActions`
2263
+ # @return [Fixnum]
2264
+ attr_accessor :total_actions
2265
+
2266
+ def initialize(**args)
2267
+ update!(**args)
2268
+ end
2269
+
2270
+ # Update properties of this object
2271
+ def update!(**args)
2272
+ @total_actions = args[:total_actions] if args.key?(:total_actions)
2273
+ end
2274
+ end
2275
+
2276
+ # Stores rollup test status of multiple steps that were run as a group and
2277
+ # outcome of each individual step.
2278
+ class PrimaryStep
2279
+ include Google::Apis::Core::Hashable
2280
+
2281
+ # Step Id and outcome of each individual step.
2282
+ # Corresponds to the JSON property `individualOutcome`
2283
+ # @return [Array<Google::Apis::ToolresultsV1beta3::IndividualOutcome>]
2284
+ attr_accessor :individual_outcome
2285
+
2286
+ # Rollup test status of multiple steps that were run with the same configuration
2287
+ # as a group.
2288
+ # Corresponds to the JSON property `rollUp`
2289
+ # @return [String]
2290
+ attr_accessor :roll_up
2291
+
2292
+ def initialize(**args)
2293
+ update!(**args)
2294
+ end
2295
+
2296
+ # Update properties of this object
2297
+ def update!(**args)
2298
+ @individual_outcome = args[:individual_outcome] if args.key?(:individual_outcome)
2299
+ @roll_up = args[:roll_up] if args.key?(:roll_up)
2300
+ end
2301
+ end
2302
+
2303
+ # Per-project settings for the Tool Results service.
2304
+ class ProjectSettings
2305
+ include Google::Apis::Core::Hashable
2306
+
2307
+ # The name of the Google Cloud Storage bucket to which results are written. By
2308
+ # default, this is unset. In update request: optional In response: optional
2309
+ # Corresponds to the JSON property `defaultBucket`
2310
+ # @return [String]
2311
+ attr_accessor :default_bucket
2312
+
2313
+ # The name of the project's settings. Always of the form: projects/`project-id`/
2314
+ # settings In update request: never set In response: always set
2315
+ # Corresponds to the JSON property `name`
2316
+ # @return [String]
2317
+ attr_accessor :name
2318
+
2319
+ def initialize(**args)
2320
+ update!(**args)
2321
+ end
2322
+
2323
+ # Update properties of this object
2324
+ def update!(**args)
2325
+ @default_bucket = args[:default_bucket] if args.key?(:default_bucket)
2326
+ @name = args[:name] if args.key?(:name)
2327
+ end
2328
+ end
2329
+
2330
+ # Request message for StepService.PublishXunitXmlFiles.
2331
+ class PublishXunitXmlFilesRequest
2332
+ include Google::Apis::Core::Hashable
2333
+
2334
+ # URI of the Xunit XML files to publish. The maximum size of the file this
2335
+ # reference is pointing to is 50MB. Required.
2336
+ # Corresponds to the JSON property `xunitXmlFiles`
2337
+ # @return [Array<Google::Apis::ToolresultsV1beta3::FileReference>]
2338
+ attr_accessor :xunit_xml_files
2339
+
2340
+ def initialize(**args)
2341
+ update!(**args)
2342
+ end
2343
+
2344
+ # Update properties of this object
2345
+ def update!(**args)
2346
+ @xunit_xml_files = args[:xunit_xml_files] if args.key?(:xunit_xml_files)
2347
+ end
2348
+ end
2349
+
2350
+ # A rectangular region.
2351
+ class RegionProto
2352
+ include Google::Apis::Core::Hashable
2353
+
2354
+ # The height, in pixels. Always set.
2355
+ # Corresponds to the JSON property `heightPx`
2356
+ # @return [Fixnum]
2357
+ attr_accessor :height_px
2358
+
2359
+ # The left side of the rectangle, in pixels. Always set.
2360
+ # Corresponds to the JSON property `leftPx`
2361
+ # @return [Fixnum]
2362
+ attr_accessor :left_px
2363
+
2364
+ # The top of the rectangle, in pixels. Always set.
2365
+ # Corresponds to the JSON property `topPx`
2366
+ # @return [Fixnum]
2367
+ attr_accessor :top_px
2368
+
2369
+ # The width, in pixels. Always set.
2370
+ # Corresponds to the JSON property `widthPx`
2371
+ # @return [Fixnum]
2372
+ attr_accessor :width_px
2373
+
2374
+ def initialize(**args)
2375
+ update!(**args)
2376
+ end
2377
+
2378
+ # Update properties of this object
2379
+ def update!(**args)
2380
+ @height_px = args[:height_px] if args.key?(:height_px)
2381
+ @left_px = args[:left_px] if args.key?(:left_px)
2382
+ @top_px = args[:top_px] if args.key?(:top_px)
2383
+ @width_px = args[:width_px] if args.key?(:width_px)
2384
+ end
2385
+ end
2386
+
2387
+ # The storage for test results.
2388
+ class ResultsStorage
2389
+ include Google::Apis::Core::Hashable
2390
+
2391
+ # A reference to a file.
2392
+ # Corresponds to the JSON property `resultsStoragePath`
2393
+ # @return [Google::Apis::ToolresultsV1beta3::FileReference]
2394
+ attr_accessor :results_storage_path
2395
+
2396
+ # A reference to a file.
2397
+ # Corresponds to the JSON property `xunitXmlFile`
2398
+ # @return [Google::Apis::ToolresultsV1beta3::FileReference]
2399
+ attr_accessor :xunit_xml_file
2400
+
2401
+ def initialize(**args)
2402
+ update!(**args)
2403
+ end
2404
+
2405
+ # Update properties of this object
2406
+ def update!(**args)
2407
+ @results_storage_path = args[:results_storage_path] if args.key?(:results_storage_path)
2408
+ @xunit_xml_file = args[:xunit_xml_file] if args.key?(:xunit_xml_file)
2409
+ end
2410
+ end
2411
+
2412
+ # Execution stats for a user-provided Robo script.
2413
+ class RoboScriptExecution
2414
+ include Google::Apis::Core::Hashable
2415
+
2416
+ # The number of Robo script actions executed successfully.
2417
+ # Corresponds to the JSON property `successfulActions`
2418
+ # @return [Fixnum]
2419
+ attr_accessor :successful_actions
2420
+
2421
+ # The total number of actions in the Robo script.
2422
+ # Corresponds to the JSON property `totalActions`
2423
+ # @return [Fixnum]
2424
+ attr_accessor :total_actions
2425
+
2426
+ def initialize(**args)
2427
+ update!(**args)
2428
+ end
2429
+
2430
+ # Update properties of this object
2431
+ def update!(**args)
2432
+ @successful_actions = args[:successful_actions] if args.key?(:successful_actions)
2433
+ @total_actions = args[:total_actions] if args.key?(:total_actions)
2434
+ end
2435
+ end
2436
+
2437
+ # IMPORTANT: It is unsafe to accept this message from an untrusted source, since
2438
+ # it's trivial for an attacker to forge serialized messages that don't fulfill
2439
+ # the type's safety contract -- for example, it could contain attacker
2440
+ # controlled script. A system which receives a SafeHtmlProto implicitly trusts
2441
+ # the producer of the SafeHtmlProto. So, it's generally safe to return this
2442
+ # message in RPC responses, but generally unsafe to accept it in RPC requests.
2443
+ class SafeHtmlProto
2444
+ include Google::Apis::Core::Hashable
2445
+
2446
+ # IMPORTANT: Never set or read this field, even from tests, it is private. See
2447
+ # documentation at the top of .proto file for programming language packages with
2448
+ # which to create or read this message.
2449
+ # Corresponds to the JSON property `privateDoNotAccessOrElseSafeHtmlWrappedValue`
2450
+ # @return [String]
2451
+ attr_accessor :private_do_not_access_or_else_safe_html_wrapped_value
2452
+
2453
+ def initialize(**args)
2454
+ update!(**args)
2455
+ end
2456
+
2457
+ # Update properties of this object
2458
+ def update!(**args)
2459
+ @private_do_not_access_or_else_safe_html_wrapped_value = args[:private_do_not_access_or_else_safe_html_wrapped_value] if args.key?(:private_do_not_access_or_else_safe_html_wrapped_value)
2460
+ end
2461
+ end
2462
+
2463
+ #
2464
+ class Screen
2465
+ include Google::Apis::Core::Hashable
2466
+
2467
+ # File reference of the png file. Required.
2468
+ # Corresponds to the JSON property `fileReference`
2469
+ # @return [String]
2470
+ attr_accessor :file_reference
2471
+
2472
+ # Locale of the device that the screenshot was taken on. Required.
2473
+ # Corresponds to the JSON property `locale`
2474
+ # @return [String]
2475
+ attr_accessor :locale
2476
+
2477
+ # Model of the device that the screenshot was taken on. Required.
2478
+ # Corresponds to the JSON property `model`
2479
+ # @return [String]
2480
+ attr_accessor :model
2481
+
2482
+ # OS version of the device that the screenshot was taken on. Required.
2483
+ # Corresponds to the JSON property `version`
2484
+ # @return [String]
2485
+ attr_accessor :version
2486
+
2487
+ def initialize(**args)
2488
+ update!(**args)
2489
+ end
2490
+
2491
+ # Update properties of this object
2492
+ def update!(**args)
2493
+ @file_reference = args[:file_reference] if args.key?(:file_reference)
2494
+ @locale = args[:locale] if args.key?(:locale)
2495
+ @model = args[:model] if args.key?(:model)
2496
+ @version = args[:version] if args.key?(:version)
2497
+ end
2498
+ end
2499
+
2500
+ #
2501
+ class ScreenshotCluster
2502
+ include Google::Apis::Core::Hashable
2503
+
2504
+ # A string that describes the activity of every screen in the cluster.
2505
+ # Corresponds to the JSON property `activity`
2506
+ # @return [String]
2507
+ attr_accessor :activity
2508
+
2509
+ # A unique identifier for the cluster. @OutputOnly
2510
+ # Corresponds to the JSON property `clusterId`
2511
+ # @return [String]
2512
+ attr_accessor :cluster_id
2513
+
2514
+ # A singular screen that represents the cluster as a whole. This screen will act
2515
+ # as the "cover" of the entire cluster. When users look at the clusters, only
2516
+ # the key screen from each cluster will be shown. Which screen is the key screen
2517
+ # is determined by the ClusteringAlgorithm
2518
+ # Corresponds to the JSON property `keyScreen`
2519
+ # @return [Google::Apis::ToolresultsV1beta3::Screen]
2520
+ attr_accessor :key_screen
2521
+
2522
+ # Full list of screens.
2523
+ # Corresponds to the JSON property `screens`
2524
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Screen>]
2525
+ attr_accessor :screens
2526
+
2527
+ def initialize(**args)
2528
+ update!(**args)
2529
+ end
2530
+
2531
+ # Update properties of this object
2532
+ def update!(**args)
2533
+ @activity = args[:activity] if args.key?(:activity)
2534
+ @cluster_id = args[:cluster_id] if args.key?(:cluster_id)
2535
+ @key_screen = args[:key_screen] if args.key?(:key_screen)
2536
+ @screens = args[:screens] if args.key?(:screens)
2537
+ end
2538
+ end
2539
+
2540
+ # Result summary for a shard in an environment.
2541
+ class ShardSummary
2542
+ include Google::Apis::Core::Hashable
2543
+
2544
+ # Summaries of the steps belonging to the shard. With flaky_test_attempts
2545
+ # enabled from TestExecutionService, more than one run (Step) can present. And
2546
+ # the runs will be sorted by multistep_number.
2547
+ # Corresponds to the JSON property `runs`
2548
+ # @return [Array<Google::Apis::ToolresultsV1beta3::StepSummary>]
2549
+ attr_accessor :runs
2550
+
2551
+ # Merged test result for environment. If the environment has only one step (no
2552
+ # reruns or shards), then the merged result is the same as the step result. If
2553
+ # the environment has multiple shards and/or reruns, then the results of shards
2554
+ # and reruns that belong to the same environment are merged into one environment
2555
+ # result.
2556
+ # Corresponds to the JSON property `shardResult`
2557
+ # @return [Google::Apis::ToolresultsV1beta3::MergedResult]
2558
+ attr_accessor :shard_result
2559
+
2560
+ def initialize(**args)
2561
+ update!(**args)
2562
+ end
2563
+
2564
+ # Update properties of this object
2565
+ def update!(**args)
2566
+ @runs = args[:runs] if args.key?(:runs)
2567
+ @shard_result = args[:shard_result] if args.key?(:shard_result)
2568
+ end
2569
+ end
2570
+
2571
+ # Details for an outcome with a SKIPPED outcome summary.
2572
+ class SkippedDetail
2573
+ include Google::Apis::Core::Hashable
2574
+
2575
+ # If the App doesn't support the specific API level.
2576
+ # Corresponds to the JSON property `incompatibleAppVersion`
2577
+ # @return [Boolean]
2578
+ attr_accessor :incompatible_app_version
2579
+ alias_method :incompatible_app_version?, :incompatible_app_version
2580
+
2581
+ # If the App doesn't run on the specific architecture, for example, x86.
2582
+ # Corresponds to the JSON property `incompatibleArchitecture`
2583
+ # @return [Boolean]
2584
+ attr_accessor :incompatible_architecture
2585
+ alias_method :incompatible_architecture?, :incompatible_architecture
2586
+
2587
+ # If the requested OS version doesn't run on the specific device model.
2588
+ # Corresponds to the JSON property `incompatibleDevice`
2589
+ # @return [Boolean]
2590
+ attr_accessor :incompatible_device
2591
+ alias_method :incompatible_device?, :incompatible_device
2592
+
2593
+ def initialize(**args)
2594
+ update!(**args)
2595
+ end
2596
+
2597
+ # Update properties of this object
2598
+ def update!(**args)
2599
+ @incompatible_app_version = args[:incompatible_app_version] if args.key?(:incompatible_app_version)
2600
+ @incompatible_architecture = args[:incompatible_architecture] if args.key?(:incompatible_architecture)
2601
+ @incompatible_device = args[:incompatible_device] if args.key?(:incompatible_device)
2602
+ end
2603
+ end
2604
+
2605
+ # The details about how to run the execution.
2606
+ class Specification
2607
+ include Google::Apis::Core::Hashable
2608
+
2609
+ # An Android mobile test specification.
2610
+ # Corresponds to the JSON property `androidTest`
2611
+ # @return [Google::Apis::ToolresultsV1beta3::AndroidTest]
2612
+ attr_accessor :android_test
2613
+
2614
+ # A iOS mobile test specification
2615
+ # Corresponds to the JSON property `iosTest`
2616
+ # @return [Google::Apis::ToolresultsV1beta3::IosTest]
2617
+ attr_accessor :ios_test
2618
+
2619
+ def initialize(**args)
2620
+ update!(**args)
2621
+ end
2622
+
2623
+ # Update properties of this object
2624
+ def update!(**args)
2625
+ @android_test = args[:android_test] if args.key?(:android_test)
2626
+ @ios_test = args[:ios_test] if args.key?(:ios_test)
2627
+ end
2628
+ end
2629
+
2630
+ # A stacktrace.
2631
+ class StackTrace
2632
+ include Google::Apis::Core::Hashable
2633
+
2634
+ # The stack trace message. Required
2635
+ # Corresponds to the JSON property `exception`
2636
+ # @return [String]
2637
+ attr_accessor :exception
2638
+
2639
+ def initialize(**args)
2640
+ update!(**args)
2641
+ end
2642
+
2643
+ # Update properties of this object
2644
+ def update!(**args)
2645
+ @exception = args[:exception] if args.key?(:exception)
2646
+ end
2647
+ end
2648
+
2649
+ # User provided intent failed to resolve to an activity.
2650
+ class StartActivityNotFound
2651
+ include Google::Apis::Core::Hashable
2652
+
2653
+ #
2654
+ # Corresponds to the JSON property `action`
2655
+ # @return [String]
2656
+ attr_accessor :action
2657
+
2658
+ #
2659
+ # Corresponds to the JSON property `uri`
2660
+ # @return [String]
2661
+ attr_accessor :uri
2662
+
2663
+ def initialize(**args)
2664
+ update!(**args)
2665
+ end
2666
+
2667
+ # Update properties of this object
2668
+ def update!(**args)
2669
+ @action = args[:action] if args.key?(:action)
2670
+ @uri = args[:uri] if args.key?(:uri)
2671
+ end
2672
+ end
2673
+
2674
+ # The `Status` type defines a logical error model that is suitable for different
2675
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2676
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2677
+ # data: error code, error message, and error details. You can find out more
2678
+ # about this error model and how to work with it in the [API Design Guide](https:
2679
+ # //cloud.google.com/apis/design/errors).
2680
+ class Status
2681
+ include Google::Apis::Core::Hashable
2682
+
2683
+ # The status code, which should be an enum value of google.rpc.Code.
2684
+ # Corresponds to the JSON property `code`
2685
+ # @return [Fixnum]
2686
+ attr_accessor :code
2687
+
2688
+ # A list of messages that carry the error details. There is a common set of
2689
+ # message types for APIs to use.
2690
+ # Corresponds to the JSON property `details`
2691
+ # @return [Array<Hash<String,Object>>]
2692
+ attr_accessor :details
2693
+
2694
+ # A developer-facing error message, which should be in English. Any user-facing
2695
+ # error message should be localized and sent in the google.rpc.Status.details
2696
+ # field, or localized by the client.
2697
+ # Corresponds to the JSON property `message`
2698
+ # @return [String]
2699
+ attr_accessor :message
2700
+
2701
+ def initialize(**args)
2702
+ update!(**args)
2703
+ end
2704
+
2705
+ # Update properties of this object
2706
+ def update!(**args)
2707
+ @code = args[:code] if args.key?(:code)
2708
+ @details = args[:details] if args.key?(:details)
2709
+ @message = args[:message] if args.key?(:message)
2710
+ end
2711
+ end
2712
+
2713
+ # A Step represents a single operation performed as part of Execution. A step
2714
+ # can be used to represent the execution of a tool ( for example a test runner
2715
+ # execution or an execution of a compiler). Steps can overlap (for instance two
2716
+ # steps might have the same start time if some operations are done in parallel).
2717
+ # Here is an example, let's consider that we have a continuous build is
2718
+ # executing a test runner for each iteration. The workflow would look like: -
2719
+ # user creates a Execution with id 1 - user creates an TestExecutionStep with id
2720
+ # 100 for Execution 1 - user update TestExecutionStep with id 100 to add a raw
2721
+ # xml log + the service parses the xml logs and returns a TestExecutionStep with
2722
+ # updated TestResult(s). - user update the status of TestExecutionStep with id
2723
+ # 100 to COMPLETE A Step can be updated until its state is set to COMPLETE at
2724
+ # which points it becomes immutable. Next tag: 27
2725
+ class Step
2726
+ include Google::Apis::Core::Hashable
2727
+
2728
+ # A Timestamp represents a point in time independent of any time zone or local
2729
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
2730
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
2731
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
2732
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
2733
+ # smeared" so that no leap second table is needed for interpretation, using a [
2734
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
2735
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
2736
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
2737
+ # ietf.org/rfc/rfc3339.txt) date strings.
2738
+ # Corresponds to the JSON property `completionTime`
2739
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
2740
+ attr_accessor :completion_time
2741
+
2742
+ # A Timestamp represents a point in time independent of any time zone or local
2743
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
2744
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
2745
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
2746
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
2747
+ # smeared" so that no leap second table is needed for interpretation, using a [
2748
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
2749
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
2750
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
2751
+ # ietf.org/rfc/rfc3339.txt) date strings.
2752
+ # Corresponds to the JSON property `creationTime`
2753
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
2754
+ attr_accessor :creation_time
2755
+
2756
+ # A description of this tool For example: mvn clean package -D skipTests=true -
2757
+ # In response: present if set by create/update request - In create/update
2758
+ # request: optional
2759
+ # Corresponds to the JSON property `description`
2760
+ # @return [String]
2761
+ attr_accessor :description
2762
+
2763
+ # A Duration represents a signed, fixed-length span of time represented as a
2764
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
2765
+ # independent of any calendar and concepts like "day" or "month". It is related
2766
+ # to Timestamp in that the difference between two Timestamp values is a Duration
2767
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
2768
+ # 10,000 years.
2769
+ # Corresponds to the JSON property `deviceUsageDuration`
2770
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
2771
+ attr_accessor :device_usage_duration
2772
+
2773
+ # If the execution containing this step has any dimension_definition set, then
2774
+ # this field allows the child to specify the values of the dimensions. The keys
2775
+ # must exactly match the dimension_definition of the execution. For example, if
2776
+ # the execution has `dimension_definition = ['attempt', 'device']` then a step
2777
+ # must define values for those dimensions, eg. `dimension_value = ['attempt': '1'
2778
+ # , 'device': 'Nexus 6']` If a step does not participate in one dimension of the
2779
+ # matrix, the value for that dimension should be empty string. For example, if
2780
+ # one of the tests is executed by a runner which does not support retries, the
2781
+ # step could have `dimension_value = ['attempt': '', 'device': 'Nexus 6']` If
2782
+ # the step does not participate in any dimensions of the matrix, it may leave
2783
+ # dimension_value unset. A PRECONDITION_FAILED will be returned if any of the
2784
+ # keys do not exist in the dimension_definition of the execution. A
2785
+ # PRECONDITION_FAILED will be returned if another step in this execution already
2786
+ # has the same name and dimension_value, but differs on other data fields, for
2787
+ # example, step field is different. A PRECONDITION_FAILED will be returned if
2788
+ # dimension_value is set, and there is a dimension_definition in the execution
2789
+ # which is not specified as one of the keys. - In response: present if set by
2790
+ # create - In create request: optional - In update request: never set
2791
+ # Corresponds to the JSON property `dimensionValue`
2792
+ # @return [Array<Google::Apis::ToolresultsV1beta3::StepDimensionValueEntry>]
2793
+ attr_accessor :dimension_value
2794
+
2795
+ # Whether any of the outputs of this step are images whose thumbnails can be
2796
+ # fetched with ListThumbnails. - In response: always set - In create/update
2797
+ # request: never set
2798
+ # Corresponds to the JSON property `hasImages`
2799
+ # @return [Boolean]
2800
+ attr_accessor :has_images
2801
+ alias_method :has_images?, :has_images
2802
+
2803
+ # Arbitrary user-supplied key/value pairs that are associated with the step.
2804
+ # Users are responsible for managing the key namespace such that keys don't
2805
+ # accidentally collide. An INVALID_ARGUMENT will be returned if the number of
2806
+ # labels exceeds 100 or if the length of any of the keys or values exceeds 100
2807
+ # characters. - In response: always set - In create request: optional - In
2808
+ # update request: optional; any new key/value pair will be added to the map, and
2809
+ # any new value for an existing key will update that key's value
2810
+ # Corresponds to the JSON property `labels`
2811
+ # @return [Array<Google::Apis::ToolresultsV1beta3::StepLabelsEntry>]
2812
+ attr_accessor :labels
2813
+
2814
+ # Details when multiple steps are run with the same configuration as a group.
2815
+ # Corresponds to the JSON property `multiStep`
2816
+ # @return [Google::Apis::ToolresultsV1beta3::MultiStep]
2817
+ attr_accessor :multi_step
2818
+
2819
+ # A short human-readable name to display in the UI. Maximum of 100 characters.
2820
+ # For example: Clean build A PRECONDITION_FAILED will be returned upon creating
2821
+ # a new step if it shares its name and dimension_value with an existing step. If
2822
+ # two steps represent a similar action, but have different dimension values,
2823
+ # they should share the same name. For instance, if the same set of tests is run
2824
+ # on two different platforms, the two steps should have the same name. - In
2825
+ # response: always set - In create request: always set - In update request:
2826
+ # never set
2827
+ # Corresponds to the JSON property `name`
2828
+ # @return [String]
2829
+ attr_accessor :name
2830
+
2831
+ # Interprets a result so that humans and machines can act on it.
2832
+ # Corresponds to the JSON property `outcome`
2833
+ # @return [Google::Apis::ToolresultsV1beta3::Outcome]
2834
+ attr_accessor :outcome
2835
+
2836
+ # A Duration represents a signed, fixed-length span of time represented as a
2837
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
2838
+ # independent of any calendar and concepts like "day" or "month". It is related
2839
+ # to Timestamp in that the difference between two Timestamp values is a Duration
2840
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
2841
+ # 10,000 years.
2842
+ # Corresponds to the JSON property `runDuration`
2843
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
2844
+ attr_accessor :run_duration
2845
+
2846
+ # The initial state is IN_PROGRESS. The only legal state transitions are *
2847
+ # IN_PROGRESS -> COMPLETE A PRECONDITION_FAILED will be returned if an invalid
2848
+ # transition is requested. It is valid to create Step with a state set to
2849
+ # COMPLETE. The state can only be set to COMPLETE once. A PRECONDITION_FAILED
2850
+ # will be returned if the state is set to COMPLETE multiple times. - In response:
2851
+ # always set - In create/update request: optional
2852
+ # Corresponds to the JSON property `state`
2853
+ # @return [String]
2854
+ attr_accessor :state
2855
+
2856
+ # A unique identifier within a Execution for this Step. Returns INVALID_ARGUMENT
2857
+ # if this field is set or overwritten by the caller. - In response: always set -
2858
+ # In create/update request: never set
2859
+ # Corresponds to the JSON property `stepId`
2860
+ # @return [String]
2861
+ attr_accessor :step_id
2862
+
2863
+ # A step that represents running tests. It accepts ant-junit xml files which
2864
+ # will be parsed into structured test results by the service. Xml file paths are
2865
+ # updated in order to append more files, however they can't be deleted. Users
2866
+ # can also add test results manually by using the test_result field.
2867
+ # Corresponds to the JSON property `testExecutionStep`
2868
+ # @return [Google::Apis::ToolresultsV1beta3::TestExecutionStep]
2869
+ attr_accessor :test_execution_step
2870
+
2871
+ # Generic tool step to be used for binaries we do not explicitly support. For
2872
+ # example: running cp to copy artifacts from one location to another.
2873
+ # Corresponds to the JSON property `toolExecutionStep`
2874
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExecutionStep]
2875
+ attr_accessor :tool_execution_step
2876
+
2877
+ def initialize(**args)
2878
+ update!(**args)
2879
+ end
2880
+
2881
+ # Update properties of this object
2882
+ def update!(**args)
2883
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
2884
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
2885
+ @description = args[:description] if args.key?(:description)
2886
+ @device_usage_duration = args[:device_usage_duration] if args.key?(:device_usage_duration)
2887
+ @dimension_value = args[:dimension_value] if args.key?(:dimension_value)
2888
+ @has_images = args[:has_images] if args.key?(:has_images)
2889
+ @labels = args[:labels] if args.key?(:labels)
2890
+ @multi_step = args[:multi_step] if args.key?(:multi_step)
2891
+ @name = args[:name] if args.key?(:name)
2892
+ @outcome = args[:outcome] if args.key?(:outcome)
2893
+ @run_duration = args[:run_duration] if args.key?(:run_duration)
2894
+ @state = args[:state] if args.key?(:state)
2895
+ @step_id = args[:step_id] if args.key?(:step_id)
2896
+ @test_execution_step = args[:test_execution_step] if args.key?(:test_execution_step)
2897
+ @tool_execution_step = args[:tool_execution_step] if args.key?(:tool_execution_step)
2898
+ end
2899
+ end
2900
+
2901
+ #
2902
+ class StepDimensionValueEntry
2903
+ include Google::Apis::Core::Hashable
2904
+
2905
+ #
2906
+ # Corresponds to the JSON property `key`
2907
+ # @return [String]
2908
+ attr_accessor :key
2909
+
2910
+ #
2911
+ # Corresponds to the JSON property `value`
2912
+ # @return [String]
2913
+ attr_accessor :value
2914
+
2915
+ def initialize(**args)
2916
+ update!(**args)
2917
+ end
2918
+
2919
+ # Update properties of this object
2920
+ def update!(**args)
2921
+ @key = args[:key] if args.key?(:key)
2922
+ @value = args[:value] if args.key?(:value)
2923
+ end
2924
+ end
2925
+
2926
+ #
2927
+ class StepLabelsEntry
2928
+ include Google::Apis::Core::Hashable
2929
+
2930
+ #
2931
+ # Corresponds to the JSON property `key`
2932
+ # @return [String]
2933
+ attr_accessor :key
2934
+
2935
+ #
2936
+ # Corresponds to the JSON property `value`
2937
+ # @return [String]
2938
+ attr_accessor :value
2939
+
2940
+ def initialize(**args)
2941
+ update!(**args)
2942
+ end
2943
+
2944
+ # Update properties of this object
2945
+ def update!(**args)
2946
+ @key = args[:key] if args.key?(:key)
2947
+ @value = args[:value] if args.key?(:value)
2948
+ end
2949
+ end
2950
+
2951
+ # Lightweight summary of a step within this execution.
2952
+ class StepSummary
2953
+ include Google::Apis::Core::Hashable
2954
+
2955
+ def initialize(**args)
2956
+ update!(**args)
2957
+ end
2958
+
2959
+ # Update properties of this object
2960
+ def update!(**args)
2961
+ end
2962
+ end
2963
+
2964
+ # Details for an outcome with a SUCCESS outcome summary. LINT.IfChange
2965
+ class SuccessDetail
2966
+ include Google::Apis::Core::Hashable
2967
+
2968
+ # If a native process other than the app crashed.
2969
+ # Corresponds to the JSON property `otherNativeCrash`
2970
+ # @return [Boolean]
2971
+ attr_accessor :other_native_crash
2972
+ alias_method :other_native_crash?, :other_native_crash
2973
+
2974
+ def initialize(**args)
2975
+ update!(**args)
2976
+ end
2977
+
2978
+ # Update properties of this object
2979
+ def update!(**args)
2980
+ @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash)
2981
+ end
2982
+ end
2983
+
2984
+ # A set of similar suggestions that we suspect are closely related. This proto
2985
+ # and most of the nested protos are branched from foxandcrown.prelaunchreport.
2986
+ # service.SuggestionClusterProto, replacing PLR's dependencies with FTL's.
2987
+ class SuggestionClusterProto
2988
+ include Google::Apis::Core::Hashable
2989
+
2990
+ # Category in which these types of suggestions should appear. Always set.
2991
+ # Corresponds to the JSON property `category`
2992
+ # @return [String]
2993
+ attr_accessor :category
2994
+
2995
+ # A sequence of suggestions. All of the suggestions within a cluster must have
2996
+ # the same SuggestionPriority and belong to the same SuggestionCategory.
2997
+ # Suggestions with the same screenshot URL should be adjacent.
2998
+ # Corresponds to the JSON property `suggestions`
2999
+ # @return [Array<Google::Apis::ToolresultsV1beta3::SuggestionProto>]
3000
+ attr_accessor :suggestions
3001
+
3002
+ def initialize(**args)
3003
+ update!(**args)
3004
+ end
3005
+
3006
+ # Update properties of this object
3007
+ def update!(**args)
3008
+ @category = args[:category] if args.key?(:category)
3009
+ @suggestions = args[:suggestions] if args.key?(:suggestions)
3010
+ end
3011
+ end
3012
+
3013
+ #
3014
+ class SuggestionProto
3015
+ include Google::Apis::Core::Hashable
3016
+
3017
+ # Reference to a help center article concerning this type of suggestion. Always
3018
+ # set.
3019
+ # Corresponds to the JSON property `helpUrl`
3020
+ # @return [String]
3021
+ attr_accessor :help_url
3022
+
3023
+ # IMPORTANT: It is unsafe to accept this message from an untrusted source, since
3024
+ # it's trivial for an attacker to forge serialized messages that don't fulfill
3025
+ # the type's safety contract -- for example, it could contain attacker
3026
+ # controlled script. A system which receives a SafeHtmlProto implicitly trusts
3027
+ # the producer of the SafeHtmlProto. So, it's generally safe to return this
3028
+ # message in RPC responses, but generally unsafe to accept it in RPC requests.
3029
+ # Corresponds to the JSON property `longMessage`
3030
+ # @return [Google::Apis::ToolresultsV1beta3::SafeHtmlProto]
3031
+ attr_accessor :long_message
3032
+
3033
+ # Relative importance of a suggestion. Always set.
3034
+ # Corresponds to the JSON property `priority`
3035
+ # @return [String]
3036
+ attr_accessor :priority
3037
+
3038
+ # A somewhat human readable identifier of the source view, if it does not have a
3039
+ # resource_name. This is a path within the accessibility hierarchy, an element
3040
+ # with resource name; similar to an XPath.
3041
+ # Corresponds to the JSON property `pseudoResourceId`
3042
+ # @return [String]
3043
+ attr_accessor :pseudo_resource_id
3044
+
3045
+ # A rectangular region.
3046
+ # Corresponds to the JSON property `region`
3047
+ # @return [Google::Apis::ToolresultsV1beta3::RegionProto]
3048
+ attr_accessor :region
3049
+
3050
+ # Reference to a view element, identified by its resource name, if it has one.
3051
+ # Corresponds to the JSON property `resourceName`
3052
+ # @return [String]
3053
+ attr_accessor :resource_name
3054
+
3055
+ # ID of the screen for the suggestion. It is used for getting the corresponding
3056
+ # screenshot path. For example, screen_id "1" corresponds to "1.png" file in GCS.
3057
+ # Always set.
3058
+ # Corresponds to the JSON property `screenId`
3059
+ # @return [String]
3060
+ attr_accessor :screen_id
3061
+
3062
+ # Relative importance of a suggestion as compared with other suggestions that
3063
+ # have the same priority and category. This is a meaningless value that can be
3064
+ # used to order suggestions that are in the same category and have the same
3065
+ # priority. The larger values have higher priority (i.e., are more important).
3066
+ # Optional.
3067
+ # Corresponds to the JSON property `secondaryPriority`
3068
+ # @return [Float]
3069
+ attr_accessor :secondary_priority
3070
+
3071
+ # IMPORTANT: It is unsafe to accept this message from an untrusted source, since
3072
+ # it's trivial for an attacker to forge serialized messages that don't fulfill
3073
+ # the type's safety contract -- for example, it could contain attacker
3074
+ # controlled script. A system which receives a SafeHtmlProto implicitly trusts
3075
+ # the producer of the SafeHtmlProto. So, it's generally safe to return this
3076
+ # message in RPC responses, but generally unsafe to accept it in RPC requests.
3077
+ # Corresponds to the JSON property `shortMessage`
3078
+ # @return [Google::Apis::ToolresultsV1beta3::SafeHtmlProto]
3079
+ attr_accessor :short_message
3080
+
3081
+ # General title for the suggestion, in the user's language, without markup.
3082
+ # Always set.
3083
+ # Corresponds to the JSON property `title`
3084
+ # @return [String]
3085
+ attr_accessor :title
3086
+
3087
+ def initialize(**args)
3088
+ update!(**args)
3089
+ end
3090
+
3091
+ # Update properties of this object
3092
+ def update!(**args)
3093
+ @help_url = args[:help_url] if args.key?(:help_url)
3094
+ @long_message = args[:long_message] if args.key?(:long_message)
3095
+ @priority = args[:priority] if args.key?(:priority)
3096
+ @pseudo_resource_id = args[:pseudo_resource_id] if args.key?(:pseudo_resource_id)
3097
+ @region = args[:region] if args.key?(:region)
3098
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
3099
+ @screen_id = args[:screen_id] if args.key?(:screen_id)
3100
+ @secondary_priority = args[:secondary_priority] if args.key?(:secondary_priority)
3101
+ @short_message = args[:short_message] if args.key?(:short_message)
3102
+ @title = args[:title] if args.key?(:title)
3103
+ end
3104
+ end
3105
+
3106
+ #
3107
+ class TestCase
3108
+ include Google::Apis::Core::Hashable
3109
+
3110
+ # A Duration represents a signed, fixed-length span of time represented as a
3111
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
3112
+ # independent of any calendar and concepts like "day" or "month". It is related
3113
+ # to Timestamp in that the difference between two Timestamp values is a Duration
3114
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
3115
+ # 10,000 years.
3116
+ # Corresponds to the JSON property `elapsedTime`
3117
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
3118
+ attr_accessor :elapsed_time
3119
+
3120
+ # A Timestamp represents a point in time independent of any time zone or local
3121
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
3122
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
3123
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
3124
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
3125
+ # smeared" so that no leap second table is needed for interpretation, using a [
3126
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
3127
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
3128
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
3129
+ # ietf.org/rfc/rfc3339.txt) date strings.
3130
+ # Corresponds to the JSON property `endTime`
3131
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
3132
+ attr_accessor :end_time
3133
+
3134
+ # Why the test case was skipped. Present only for skipped test case
3135
+ # Corresponds to the JSON property `skippedMessage`
3136
+ # @return [String]
3137
+ attr_accessor :skipped_message
3138
+
3139
+ # The stack trace details if the test case failed or encountered an error. The
3140
+ # maximum size of the stack traces is 100KiB, beyond which the stack track will
3141
+ # be truncated. Zero if the test case passed.
3142
+ # Corresponds to the JSON property `stackTraces`
3143
+ # @return [Array<Google::Apis::ToolresultsV1beta3::StackTrace>]
3144
+ attr_accessor :stack_traces
3145
+
3146
+ # A Timestamp represents a point in time independent of any time zone or local
3147
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
3148
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
3149
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
3150
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
3151
+ # smeared" so that no leap second table is needed for interpretation, using a [
3152
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
3153
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
3154
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
3155
+ # ietf.org/rfc/rfc3339.txt) date strings.
3156
+ # Corresponds to the JSON property `startTime`
3157
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
3158
+ attr_accessor :start_time
3159
+
3160
+ # The status of the test case. Required.
3161
+ # Corresponds to the JSON property `status`
3162
+ # @return [String]
3163
+ attr_accessor :status
3164
+
3165
+ # A unique identifier within a Step for this Test Case.
3166
+ # Corresponds to the JSON property `testCaseId`
3167
+ # @return [String]
3168
+ attr_accessor :test_case_id
3169
+
3170
+ # A reference to a test case. Test case references are canonically ordered
3171
+ # lexicographically by these three factors: * First, by test_suite_name. *
3172
+ # Second, by class_name. * Third, by name.
3173
+ # Corresponds to the JSON property `testCaseReference`
3174
+ # @return [Google::Apis::ToolresultsV1beta3::TestCaseReference]
3175
+ attr_accessor :test_case_reference
3176
+
3177
+ # References to opaque files of any format output by the tool execution. @
3178
+ # OutputOnly
3179
+ # Corresponds to the JSON property `toolOutputs`
3180
+ # @return [Array<Google::Apis::ToolresultsV1beta3::ToolOutputReference>]
3181
+ attr_accessor :tool_outputs
3182
+
3183
+ def initialize(**args)
3184
+ update!(**args)
3185
+ end
3186
+
3187
+ # Update properties of this object
3188
+ def update!(**args)
3189
+ @elapsed_time = args[:elapsed_time] if args.key?(:elapsed_time)
3190
+ @end_time = args[:end_time] if args.key?(:end_time)
3191
+ @skipped_message = args[:skipped_message] if args.key?(:skipped_message)
3192
+ @stack_traces = args[:stack_traces] if args.key?(:stack_traces)
3193
+ @start_time = args[:start_time] if args.key?(:start_time)
3194
+ @status = args[:status] if args.key?(:status)
3195
+ @test_case_id = args[:test_case_id] if args.key?(:test_case_id)
3196
+ @test_case_reference = args[:test_case_reference] if args.key?(:test_case_reference)
3197
+ @tool_outputs = args[:tool_outputs] if args.key?(:tool_outputs)
3198
+ end
3199
+ end
3200
+
3201
+ # A reference to a test case. Test case references are canonically ordered
3202
+ # lexicographically by these three factors: * First, by test_suite_name. *
3203
+ # Second, by class_name. * Third, by name.
3204
+ class TestCaseReference
3205
+ include Google::Apis::Core::Hashable
3206
+
3207
+ # The name of the class.
3208
+ # Corresponds to the JSON property `className`
3209
+ # @return [String]
3210
+ attr_accessor :class_name
3211
+
3212
+ # The name of the test case. Required.
3213
+ # Corresponds to the JSON property `name`
3214
+ # @return [String]
3215
+ attr_accessor :name
3216
+
3217
+ # The name of the test suite to which this test case belongs.
3218
+ # Corresponds to the JSON property `testSuiteName`
3219
+ # @return [String]
3220
+ attr_accessor :test_suite_name
3221
+
3222
+ def initialize(**args)
3223
+ update!(**args)
3224
+ end
3225
+
3226
+ # Update properties of this object
3227
+ def update!(**args)
3228
+ @class_name = args[:class_name] if args.key?(:class_name)
3229
+ @name = args[:name] if args.key?(:name)
3230
+ @test_suite_name = args[:test_suite_name] if args.key?(:test_suite_name)
3231
+ end
3232
+ end
3233
+
3234
+ # A step that represents running tests. It accepts ant-junit xml files which
3235
+ # will be parsed into structured test results by the service. Xml file paths are
3236
+ # updated in order to append more files, however they can't be deleted. Users
3237
+ # can also add test results manually by using the test_result field.
3238
+ class TestExecutionStep
3239
+ include Google::Apis::Core::Hashable
3240
+
3241
+ # Issues observed during the test execution. For example, if the mobile app
3242
+ # under test crashed during the test, the error message and the stack trace
3243
+ # content can be recorded here to assist debugging. - In response: present if
3244
+ # set by create or update - In create/update request: optional
3245
+ # Corresponds to the JSON property `testIssues`
3246
+ # @return [Array<Google::Apis::ToolresultsV1beta3::TestIssue>]
3247
+ attr_accessor :test_issues
3248
+
3249
+ # List of test suite overview contents. This could be parsed from xUnit XML log
3250
+ # by server, or uploaded directly by user. This references should only be called
3251
+ # when test suites are fully parsed or uploaded. The maximum allowed number of
3252
+ # test suite overviews per step is 1000. - In response: always set - In create
3253
+ # request: optional - In update request: never (use publishXunitXmlFiles custom
3254
+ # method instead)
3255
+ # Corresponds to the JSON property `testSuiteOverviews`
3256
+ # @return [Array<Google::Apis::ToolresultsV1beta3::TestSuiteOverview>]
3257
+ attr_accessor :test_suite_overviews
3258
+
3259
+ # Testing timing break down to know phases.
3260
+ # Corresponds to the JSON property `testTiming`
3261
+ # @return [Google::Apis::ToolresultsV1beta3::TestTiming]
3262
+ attr_accessor :test_timing
3263
+
3264
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
3265
+ # artifacts or deploying code.
3266
+ # Corresponds to the JSON property `toolExecution`
3267
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExecution]
3268
+ attr_accessor :tool_execution
3269
+
3270
+ def initialize(**args)
3271
+ update!(**args)
3272
+ end
3273
+
3274
+ # Update properties of this object
3275
+ def update!(**args)
3276
+ @test_issues = args[:test_issues] if args.key?(:test_issues)
3277
+ @test_suite_overviews = args[:test_suite_overviews] if args.key?(:test_suite_overviews)
3278
+ @test_timing = args[:test_timing] if args.key?(:test_timing)
3279
+ @tool_execution = args[:tool_execution] if args.key?(:tool_execution)
3280
+ end
3281
+ end
3282
+
3283
+ # An issue detected occurring during a test execution.
3284
+ class TestIssue
3285
+ include Google::Apis::Core::Hashable
3286
+
3287
+ # Category of issue. Required.
3288
+ # Corresponds to the JSON property `category`
3289
+ # @return [String]
3290
+ attr_accessor :category
3291
+
3292
+ # A brief human-readable message describing the issue. Required.
3293
+ # Corresponds to the JSON property `errorMessage`
3294
+ # @return [String]
3295
+ attr_accessor :error_message
3296
+
3297
+ # Severity of issue. Required.
3298
+ # Corresponds to the JSON property `severity`
3299
+ # @return [String]
3300
+ attr_accessor :severity
3301
+
3302
+ # A stacktrace.
3303
+ # Corresponds to the JSON property `stackTrace`
3304
+ # @return [Google::Apis::ToolresultsV1beta3::StackTrace]
3305
+ attr_accessor :stack_trace
3306
+
3307
+ # Type of issue. Required.
3308
+ # Corresponds to the JSON property `type`
3309
+ # @return [String]
3310
+ attr_accessor :type
3311
+
3312
+ # `Any` contains an arbitrary serialized protocol buffer message along with a
3313
+ # URL that describes the type of the serialized message. Protobuf library
3314
+ # provides support to pack/unpack Any values in the form of utility functions or
3315
+ # additional generated methods of the Any type. Example 1: Pack and unpack a
3316
+ # message in C++. Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.
3317
+ # UnpackTo(&foo)) ` ... ` Example 2: Pack and unpack a message in Java. Foo foo =
3318
+ # ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) ` foo = any.unpack(
3319
+ # Foo.class); ` Example 3: Pack and unpack a message in Python. foo = Foo(...)
3320
+ # any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
3321
+ # Example 4: Pack and unpack a message in Go foo := &pb.Foo`...` any, err :=
3322
+ # ptypes.MarshalAny(foo) ... foo := &pb.Foo`` if err := ptypes.UnmarshalAny(any,
3323
+ # foo); err != nil ` ... ` The pack methods provided by protobuf library will by
3324
+ # default use 'type.googleapis.com/full.type.name' as the type URL and the
3325
+ # unpack methods only use the fully qualified type name after the last '/' in
3326
+ # the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z". #
3327
+ # JSON The JSON representation of an `Any` value uses the regular representation
3328
+ # of the deserialized, embedded message, with an additional field `@type` which
3329
+ # contains the type URL. Example: package google.profile; message Person `
3330
+ # string first_name = 1; string last_name = 2; ` ` "@type": "type.googleapis.com/
3331
+ # google.profile.Person", "firstName": , "lastName": ` If the embedded message
3332
+ # type is well-known and has a custom JSON representation, that representation
3333
+ # will be embedded adding a field `value` which holds the custom JSON in
3334
+ # addition to the `@type` field. Example (for message google.protobuf.Duration):
3335
+ # ` "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" `
3336
+ # Corresponds to the JSON property `warning`
3337
+ # @return [Google::Apis::ToolresultsV1beta3::Any]
3338
+ attr_accessor :warning
3339
+
3340
+ def initialize(**args)
3341
+ update!(**args)
3342
+ end
3343
+
3344
+ # Update properties of this object
3345
+ def update!(**args)
3346
+ @category = args[:category] if args.key?(:category)
3347
+ @error_message = args[:error_message] if args.key?(:error_message)
3348
+ @severity = args[:severity] if args.key?(:severity)
3349
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
3350
+ @type = args[:type] if args.key?(:type)
3351
+ @warning = args[:warning] if args.key?(:warning)
3352
+ end
3353
+ end
3354
+
3355
+ # A summary of a test suite result either parsed from XML or uploaded directly
3356
+ # by a user. Note: the API related comments are for StepService only. This
3357
+ # message is also being used in ExecutionService in a read only mode for the
3358
+ # corresponding step.
3359
+ class TestSuiteOverview
3360
+ include Google::Apis::Core::Hashable
3361
+
3362
+ # A Duration represents a signed, fixed-length span of time represented as a
3363
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
3364
+ # independent of any calendar and concepts like "day" or "month". It is related
3365
+ # to Timestamp in that the difference between two Timestamp values is a Duration
3366
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
3367
+ # 10,000 years.
3368
+ # Corresponds to the JSON property `elapsedTime`
3369
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
3370
+ attr_accessor :elapsed_time
3371
+
3372
+ # Number of test cases in error, typically set by the service by parsing the
3373
+ # xml_source. - In create/response: always set - In update request: never
3374
+ # Corresponds to the JSON property `errorCount`
3375
+ # @return [Fixnum]
3376
+ attr_accessor :error_count
3377
+
3378
+ # Number of failed test cases, typically set by the service by parsing the
3379
+ # xml_source. May also be set by the user. - In create/response: always set - In
3380
+ # update request: never
3381
+ # Corresponds to the JSON property `failureCount`
3382
+ # @return [Fixnum]
3383
+ attr_accessor :failure_count
3384
+
3385
+ # Number of flaky test cases, set by the service by rolling up flaky test
3386
+ # attempts. Present only for rollup test suite overview at environment level. A
3387
+ # step cannot have flaky test cases.
3388
+ # Corresponds to the JSON property `flakyCount`
3389
+ # @return [Fixnum]
3390
+ attr_accessor :flaky_count
3391
+
3392
+ # The name of the test suite. - In create/response: always set - In update
3393
+ # request: never
3394
+ # Corresponds to the JSON property `name`
3395
+ # @return [String]
3396
+ attr_accessor :name
3397
+
3398
+ # Number of test cases not run, typically set by the service by parsing the
3399
+ # xml_source. - In create/response: always set - In update request: never
3400
+ # Corresponds to the JSON property `skippedCount`
3401
+ # @return [Fixnum]
3402
+ attr_accessor :skipped_count
3403
+
3404
+ # Number of test cases, typically set by the service by parsing the xml_source. -
3405
+ # In create/response: always set - In update request: never
3406
+ # Corresponds to the JSON property `totalCount`
3407
+ # @return [Fixnum]
3408
+ attr_accessor :total_count
3409
+
3410
+ # A reference to a file.
3411
+ # Corresponds to the JSON property `xmlSource`
3412
+ # @return [Google::Apis::ToolresultsV1beta3::FileReference]
3413
+ attr_accessor :xml_source
3414
+
3415
+ def initialize(**args)
3416
+ update!(**args)
3417
+ end
3418
+
3419
+ # Update properties of this object
3420
+ def update!(**args)
3421
+ @elapsed_time = args[:elapsed_time] if args.key?(:elapsed_time)
3422
+ @error_count = args[:error_count] if args.key?(:error_count)
3423
+ @failure_count = args[:failure_count] if args.key?(:failure_count)
3424
+ @flaky_count = args[:flaky_count] if args.key?(:flaky_count)
3425
+ @name = args[:name] if args.key?(:name)
3426
+ @skipped_count = args[:skipped_count] if args.key?(:skipped_count)
3427
+ @total_count = args[:total_count] if args.key?(:total_count)
3428
+ @xml_source = args[:xml_source] if args.key?(:xml_source)
3429
+ end
3430
+ end
3431
+
3432
+ # Testing timing break down to know phases.
3433
+ class TestTiming
3434
+ include Google::Apis::Core::Hashable
3435
+
3436
+ # A Duration represents a signed, fixed-length span of time represented as a
3437
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
3438
+ # independent of any calendar and concepts like "day" or "month". It is related
3439
+ # to Timestamp in that the difference between two Timestamp values is a Duration
3440
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
3441
+ # 10,000 years.
3442
+ # Corresponds to the JSON property `testProcessDuration`
3443
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
3444
+ attr_accessor :test_process_duration
3445
+
3446
+ def initialize(**args)
3447
+ update!(**args)
3448
+ end
3449
+
3450
+ # Update properties of this object
3451
+ def update!(**args)
3452
+ @test_process_duration = args[:test_process_duration] if args.key?(:test_process_duration)
3453
+ end
3454
+ end
3455
+
3456
+ # A single thumbnail, with its size and format.
3457
+ class Thumbnail
3458
+ include Google::Apis::Core::Hashable
3459
+
3460
+ # The thumbnail's content type, i.e. "image/png". Always set.
3461
+ # Corresponds to the JSON property `contentType`
3462
+ # @return [String]
3463
+ attr_accessor :content_type
3464
+
3465
+ # The thumbnail file itself. That is, the bytes here are precisely the bytes
3466
+ # that make up the thumbnail file; they can be served as an image as-is (with
3467
+ # the appropriate content type.) Always set.
3468
+ # Corresponds to the JSON property `data`
3469
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
3470
+ # @return [String]
3471
+ attr_accessor :data
3472
+
3473
+ # The height of the thumbnail, in pixels. Always set.
3474
+ # Corresponds to the JSON property `heightPx`
3475
+ # @return [Fixnum]
3476
+ attr_accessor :height_px
3477
+
3478
+ # The width of the thumbnail, in pixels. Always set.
3479
+ # Corresponds to the JSON property `widthPx`
3480
+ # @return [Fixnum]
3481
+ attr_accessor :width_px
3482
+
3483
+ def initialize(**args)
3484
+ update!(**args)
3485
+ end
3486
+
3487
+ # Update properties of this object
3488
+ def update!(**args)
3489
+ @content_type = args[:content_type] if args.key?(:content_type)
3490
+ @data = args[:data] if args.key?(:data)
3491
+ @height_px = args[:height_px] if args.key?(:height_px)
3492
+ @width_px = args[:width_px] if args.key?(:width_px)
3493
+ end
3494
+ end
3495
+
3496
+ # A Timestamp represents a point in time independent of any time zone or local
3497
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
3498
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
3499
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
3500
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
3501
+ # smeared" so that no leap second table is needed for interpretation, using a [
3502
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
3503
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
3504
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
3505
+ # ietf.org/rfc/rfc3339.txt) date strings.
3506
+ class Timestamp
3507
+ include Google::Apis::Core::Hashable
3508
+
3509
+ # Non-negative fractions of a second at nanosecond resolution. Negative second
3510
+ # values with fractions must still have non-negative nanos values that count
3511
+ # forward in time. Must be from 0 to 999,999,999 inclusive.
3512
+ # Corresponds to the JSON property `nanos`
3513
+ # @return [Fixnum]
3514
+ attr_accessor :nanos
3515
+
3516
+ # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be
3517
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
3518
+ # Corresponds to the JSON property `seconds`
3519
+ # @return [Fixnum]
3520
+ attr_accessor :seconds
3521
+
3522
+ def initialize(**args)
3523
+ update!(**args)
3524
+ end
3525
+
3526
+ # Update properties of this object
3527
+ def update!(**args)
3528
+ @nanos = args[:nanos] if args.key?(:nanos)
3529
+ @seconds = args[:seconds] if args.key?(:seconds)
3530
+ end
3531
+ end
3532
+
3533
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
3534
+ # artifacts or deploying code.
3535
+ class ToolExecution
3536
+ include Google::Apis::Core::Hashable
3537
+
3538
+ # The full tokenized command line including the program name (equivalent to argv
3539
+ # in a C program). - In response: present if set by create request - In create
3540
+ # request: optional - In update request: never set
3541
+ # Corresponds to the JSON property `commandLineArguments`
3542
+ # @return [Array<String>]
3543
+ attr_accessor :command_line_arguments
3544
+
3545
+ # Exit code from a tool execution.
3546
+ # Corresponds to the JSON property `exitCode`
3547
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExitCode]
3548
+ attr_accessor :exit_code
3549
+
3550
+ # References to any plain text logs output the tool execution. This field can be
3551
+ # set before the tool has exited in order to be able to have access to a live
3552
+ # view of the logs while the tool is running. The maximum allowed number of tool
3553
+ # logs per step is 1000. - In response: present if set by create/update request -
3554
+ # In create request: optional - In update request: optional, any value provided
3555
+ # will be appended to the existing list
3556
+ # Corresponds to the JSON property `toolLogs`
3557
+ # @return [Array<Google::Apis::ToolresultsV1beta3::FileReference>]
3558
+ attr_accessor :tool_logs
3559
+
3560
+ # References to opaque files of any format output by the tool execution. The
3561
+ # maximum allowed number of tool outputs per step is 1000. - In response:
3562
+ # present if set by create/update request - In create request: optional - In
3563
+ # update request: optional, any value provided will be appended to the existing
3564
+ # list
3565
+ # Corresponds to the JSON property `toolOutputs`
3566
+ # @return [Array<Google::Apis::ToolresultsV1beta3::ToolOutputReference>]
3567
+ attr_accessor :tool_outputs
3568
+
3569
+ def initialize(**args)
3570
+ update!(**args)
3571
+ end
3572
+
3573
+ # Update properties of this object
3574
+ def update!(**args)
3575
+ @command_line_arguments = args[:command_line_arguments] if args.key?(:command_line_arguments)
3576
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
3577
+ @tool_logs = args[:tool_logs] if args.key?(:tool_logs)
3578
+ @tool_outputs = args[:tool_outputs] if args.key?(:tool_outputs)
3579
+ end
3580
+ end
3581
+
3582
+ # Generic tool step to be used for binaries we do not explicitly support. For
3583
+ # example: running cp to copy artifacts from one location to another.
3584
+ class ToolExecutionStep
3585
+ include Google::Apis::Core::Hashable
3586
+
3587
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
3588
+ # artifacts or deploying code.
3589
+ # Corresponds to the JSON property `toolExecution`
3590
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExecution]
3591
+ attr_accessor :tool_execution
3592
+
3593
+ def initialize(**args)
3594
+ update!(**args)
3595
+ end
3596
+
3597
+ # Update properties of this object
3598
+ def update!(**args)
3599
+ @tool_execution = args[:tool_execution] if args.key?(:tool_execution)
3600
+ end
3601
+ end
3602
+
3603
+ # Exit code from a tool execution.
3604
+ class ToolExitCode
3605
+ include Google::Apis::Core::Hashable
3606
+
3607
+ # Tool execution exit code. A value of 0 means that the execution was successful.
3608
+ # - In response: always set - In create/update request: always set
3609
+ # Corresponds to the JSON property `number`
3610
+ # @return [Fixnum]
3611
+ attr_accessor :number
3612
+
3613
+ def initialize(**args)
3614
+ update!(**args)
3615
+ end
3616
+
3617
+ # Update properties of this object
3618
+ def update!(**args)
3619
+ @number = args[:number] if args.key?(:number)
3620
+ end
3621
+ end
3622
+
3623
+ # A reference to a ToolExecution output file.
3624
+ class ToolOutputReference
3625
+ include Google::Apis::Core::Hashable
3626
+
3627
+ # A Timestamp represents a point in time independent of any time zone or local
3628
+ # calendar, encoded as a count of seconds and fractions of seconds at nanosecond
3629
+ # resolution. The count is relative to an epoch at UTC midnight on January 1,
3630
+ # 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
3631
+ # backwards to year one. All minutes are 60 seconds long. Leap seconds are "
3632
+ # smeared" so that no leap second table is needed for interpretation, using a [
3633
+ # 24-hour linear smear](https://developers.google.com/time/smear). The range is
3634
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
3635
+ # that range, we ensure that we can convert to and from [RFC 3339](https://www.
3636
+ # ietf.org/rfc/rfc3339.txt) date strings.
3637
+ # Corresponds to the JSON property `creationTime`
3638
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
3639
+ attr_accessor :creation_time
3640
+
3641
+ # A reference to a file.
3642
+ # Corresponds to the JSON property `output`
3643
+ # @return [Google::Apis::ToolresultsV1beta3::FileReference]
3644
+ attr_accessor :output
3645
+
3646
+ # A reference to a test case. Test case references are canonically ordered
3647
+ # lexicographically by these three factors: * First, by test_suite_name. *
3648
+ # Second, by class_name. * Third, by name.
3649
+ # Corresponds to the JSON property `testCase`
3650
+ # @return [Google::Apis::ToolresultsV1beta3::TestCaseReference]
3651
+ attr_accessor :test_case
3652
+
3653
+ def initialize(**args)
3654
+ update!(**args)
3655
+ end
3656
+
3657
+ # Update properties of this object
3658
+ def update!(**args)
3659
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
3660
+ @output = args[:output] if args.key?(:output)
3661
+ @test_case = args[:test_case] if args.key?(:test_case)
3662
+ end
3663
+ end
3664
+
3665
+ # A warning that the screen hierarchy is deeper than the recommended threshold.
3666
+ class UiElementTooDeep
3667
+ include Google::Apis::Core::Hashable
3668
+
3669
+ # The depth of the screen element
3670
+ # Corresponds to the JSON property `depth`
3671
+ # @return [Fixnum]
3672
+ attr_accessor :depth
3673
+
3674
+ # The screen id of the element
3675
+ # Corresponds to the JSON property `screenId`
3676
+ # @return [String]
3677
+ attr_accessor :screen_id
3678
+
3679
+ # The screen state id of the element
3680
+ # Corresponds to the JSON property `screenStateId`
3681
+ # @return [String]
3682
+ attr_accessor :screen_state_id
3683
+
3684
+ def initialize(**args)
3685
+ update!(**args)
3686
+ end
3687
+
3688
+ # Update properties of this object
3689
+ def update!(**args)
3690
+ @depth = args[:depth] if args.key?(:depth)
3691
+ @screen_id = args[:screen_id] if args.key?(:screen_id)
3692
+ @screen_state_id = args[:screen_state_id] if args.key?(:screen_state_id)
3693
+ end
3694
+ end
3695
+
3696
+ # Default unspecified warning.
3697
+ class UnspecifiedWarning
3698
+ include Google::Apis::Core::Hashable
3699
+
3700
+ def initialize(**args)
3701
+ update!(**args)
3702
+ end
3703
+
3704
+ # Update properties of this object
3705
+ def update!(**args)
3706
+ end
3707
+ end
3708
+
3709
+ # Additional details of an unused robodirective.
3710
+ class UnusedRoboDirective
3711
+ include Google::Apis::Core::Hashable
3712
+
3713
+ # The name of the resource that was unused.
3714
+ # Corresponds to the JSON property `resourceName`
3715
+ # @return [String]
3716
+ attr_accessor :resource_name
3717
+
3718
+ def initialize(**args)
3719
+ update!(**args)
3720
+ end
3721
+
3722
+ # Update properties of this object
3723
+ def update!(**args)
3724
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
3725
+ end
3726
+ end
3727
+
3728
+ # This insight is a recommendation to upgrade a given library to the specified
3729
+ # version, in order to avoid dependencies on non-SDK APIs.
3730
+ class UpgradeInsight
3731
+ include Google::Apis::Core::Hashable
3732
+
3733
+ # The name of the package to be upgraded.
3734
+ # Corresponds to the JSON property `packageName`
3735
+ # @return [String]
3736
+ attr_accessor :package_name
3737
+
3738
+ # The suggested version to upgrade to. Optional: In case we are not sure which
3739
+ # version solves this problem
3740
+ # Corresponds to the JSON property `upgradeToVersion`
3741
+ # @return [String]
3742
+ attr_accessor :upgrade_to_version
3743
+
3744
+ def initialize(**args)
3745
+ update!(**args)
3746
+ end
3747
+
3748
+ # Update properties of this object
3749
+ def update!(**args)
3750
+ @package_name = args[:package_name] if args.key?(:package_name)
3751
+ @upgrade_to_version = args[:upgrade_to_version] if args.key?(:upgrade_to_version)
3752
+ end
3753
+ end
3754
+
3755
+ # Additional details of a used Robo directive.
3756
+ class UsedRoboDirective
3757
+ include Google::Apis::Core::Hashable
3758
+
3759
+ # The name of the resource that was used.
3760
+ # Corresponds to the JSON property `resourceName`
3761
+ # @return [String]
3762
+ attr_accessor :resource_name
3763
+
3764
+ def initialize(**args)
3765
+ update!(**args)
3766
+ end
3767
+
3768
+ # Update properties of this object
3769
+ def update!(**args)
3770
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
3771
+ end
3772
+ end
3773
+
3774
+ # Additional details of a used Robo directive with an ignore action. Note: This
3775
+ # is a different scenario than unused directive.
3776
+ class UsedRoboIgnoreDirective
3777
+ include Google::Apis::Core::Hashable
3778
+
3779
+ # The name of the resource that was ignored.
3780
+ # Corresponds to the JSON property `resourceName`
3781
+ # @return [String]
3782
+ attr_accessor :resource_name
3783
+
3784
+ def initialize(**args)
3785
+ update!(**args)
3786
+ end
3787
+
3788
+ # Update properties of this object
3789
+ def update!(**args)
3790
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
3791
+ end
3792
+ end
3793
+ end
3794
+ end
3795
+ end