google-apis-testing_v1 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: 80192ce3e4bd2d7816c773227c1fcdc84d532959eb4f946c8de5f64d91314692
4
+ data.tar.gz: 1d864300e20fcd7b42119bd66a61e09be437403fcc029bfc8b3a4eddf33f02a2
5
+ SHA512:
6
+ metadata.gz: 4f179ec4a04106128e584a0bd4b5f801f3bed4bb53cf2e75a8674d066f6d4bf6ad634db2223e9fb46000bfdc1096ae7c49c565f4e53b5433ca3062ea87731900
7
+ data.tar.gz: f258355edf75f9e0f0d66b6b50e1dc45ba85cc57ab21634c12cc063d609c03667970ce721535335c8ca1bd54f83f4205b97951873b1a5df840625e1b29b56dab
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-testing_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/testing_v1/*.rb
9
+ lib/google/apis/testing_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-testing_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201208
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 V1 of the Cloud Testing API
2
+
3
+ This is a simple client library for version V1 of the Cloud Testing 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/testing.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-testing_v1', '~> 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-testing_v1
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/testing_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::TestingV1::TestingService.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 Testing service in particular.)
67
+
68
+ For reference information on specific calls in the Cloud Testing API, see the {Google::Apis::TestingV1::TestingService 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-testing_v1`, 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://developers.google.com/cloud-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/testing_v1"
@@ -0,0 +1,40 @@
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/testing_v1/service.rb'
16
+ require 'google/apis/testing_v1/classes.rb'
17
+ require 'google/apis/testing_v1/representations.rb'
18
+ require 'google/apis/testing_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Cloud Testing API
23
+ #
24
+ # Allows developers to run automated tests for their mobile applications on
25
+ # Google infrastructure.
26
+ #
27
+ # @see https://developers.google.com/cloud-test-lab/
28
+ module TestingV1
29
+ # Version of the Cloud Testing API this client connects to.
30
+ # This is NOT the gem version.
31
+ VERSION = 'V1'
32
+
33
+ # View and manage your data across Google Cloud Platform services
34
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
35
+
36
+ # View your data across Google Cloud Platform services
37
+ AUTH_CLOUD_PLATFORM_READ_ONLY = 'https://www.googleapis.com/auth/cloud-platform.read-only'
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,2618 @@
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 TestingV1
24
+
25
+ # Identifies an account and how to log into it.
26
+ class Account
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Enables automatic Google account login. If set, the service automatically
30
+ # generates a Google test account and adds it to the device, before executing
31
+ # the test. Note that test accounts might be reused. Many applications show
32
+ # their full set of functionalities when an account is present on the device.
33
+ # Logging into the device with these generated accounts allows testing more
34
+ # functionalities.
35
+ # Corresponds to the JSON property `googleAuto`
36
+ # @return [Google::Apis::TestingV1::GoogleAuto]
37
+ attr_accessor :google_auto
38
+
39
+ def initialize(**args)
40
+ update!(**args)
41
+ end
42
+
43
+ # Update properties of this object
44
+ def update!(**args)
45
+ @google_auto = args[:google_auto] if args.key?(:google_auto)
46
+ end
47
+ end
48
+
49
+ # A single Android device.
50
+ class AndroidDevice
51
+ include Google::Apis::Core::Hashable
52
+
53
+ # Required. The id of the Android device to be used. Use the
54
+ # TestEnvironmentDiscoveryService to get supported options.
55
+ # Corresponds to the JSON property `androidModelId`
56
+ # @return [String]
57
+ attr_accessor :android_model_id
58
+
59
+ # Required. The id of the Android OS version to be used. Use the
60
+ # TestEnvironmentDiscoveryService to get supported options.
61
+ # Corresponds to the JSON property `androidVersionId`
62
+ # @return [String]
63
+ attr_accessor :android_version_id
64
+
65
+ # Required. The locale the test device used for testing. Use the
66
+ # TestEnvironmentDiscoveryService to get supported options.
67
+ # Corresponds to the JSON property `locale`
68
+ # @return [String]
69
+ attr_accessor :locale
70
+
71
+ # Required. How the device is oriented during the test. Use the
72
+ # TestEnvironmentDiscoveryService to get supported options.
73
+ # Corresponds to the JSON property `orientation`
74
+ # @return [String]
75
+ attr_accessor :orientation
76
+
77
+ def initialize(**args)
78
+ update!(**args)
79
+ end
80
+
81
+ # Update properties of this object
82
+ def update!(**args)
83
+ @android_model_id = args[:android_model_id] if args.key?(:android_model_id)
84
+ @android_version_id = args[:android_version_id] if args.key?(:android_version_id)
85
+ @locale = args[:locale] if args.key?(:locale)
86
+ @orientation = args[:orientation] if args.key?(:orientation)
87
+ end
88
+ end
89
+
90
+ # The currently supported Android devices.
91
+ class AndroidDeviceCatalog
92
+ include Google::Apis::Core::Hashable
93
+
94
+ # The set of supported Android device models.
95
+ # Corresponds to the JSON property `models`
96
+ # @return [Array<Google::Apis::TestingV1::AndroidModel>]
97
+ attr_accessor :models
98
+
99
+ # Android configuration that can be selected at the time a test is run.
100
+ # Corresponds to the JSON property `runtimeConfiguration`
101
+ # @return [Google::Apis::TestingV1::AndroidRuntimeConfiguration]
102
+ attr_accessor :runtime_configuration
103
+
104
+ # The set of supported Android OS versions.
105
+ # Corresponds to the JSON property `versions`
106
+ # @return [Array<Google::Apis::TestingV1::AndroidVersion>]
107
+ attr_accessor :versions
108
+
109
+ def initialize(**args)
110
+ update!(**args)
111
+ end
112
+
113
+ # Update properties of this object
114
+ def update!(**args)
115
+ @models = args[:models] if args.key?(:models)
116
+ @runtime_configuration = args[:runtime_configuration] if args.key?(:runtime_configuration)
117
+ @versions = args[:versions] if args.key?(:versions)
118
+ end
119
+ end
120
+
121
+ # A list of Android device configurations in which the test is to be executed.
122
+ class AndroidDeviceList
123
+ include Google::Apis::Core::Hashable
124
+
125
+ # Required. A list of Android devices.
126
+ # Corresponds to the JSON property `androidDevices`
127
+ # @return [Array<Google::Apis::TestingV1::AndroidDevice>]
128
+ attr_accessor :android_devices
129
+
130
+ def initialize(**args)
131
+ update!(**args)
132
+ end
133
+
134
+ # Update properties of this object
135
+ def update!(**args)
136
+ @android_devices = args[:android_devices] if args.key?(:android_devices)
137
+ end
138
+ end
139
+
140
+ # A test of an Android application that can control an Android component
141
+ # independently of its normal lifecycle. Android instrumentation tests run an
142
+ # application APK and test APK inside the same process on a virtual or physical
143
+ # AndroidDevice. They also specify a test runner class, such as com.google.
144
+ # GoogleTestRunner, which can vary on the specific instrumentation framework
145
+ # chosen. See for more information on types of Android tests.
146
+ class AndroidInstrumentationTest
147
+ include Google::Apis::Core::Hashable
148
+
149
+ # A reference to a file, used for user inputs.
150
+ # Corresponds to the JSON property `appApk`
151
+ # @return [Google::Apis::TestingV1::FileReference]
152
+ attr_accessor :app_apk
153
+
154
+ # An Android App Bundle file format, containing a BundleConfig.pb file, a base
155
+ # module directory, zero or more dynamic feature module directories. See https://
156
+ # developer.android.com/guide/app-bundle/build for guidance on building App
157
+ # Bundles.
158
+ # Corresponds to the JSON property `appBundle`
159
+ # @return [Google::Apis::TestingV1::AppBundle]
160
+ attr_accessor :app_bundle
161
+
162
+ # The java package for the application under test. The default value is
163
+ # determined by examining the application's manifest.
164
+ # Corresponds to the JSON property `appPackageId`
165
+ # @return [String]
166
+ attr_accessor :app_package_id
167
+
168
+ # The option of whether running each test within its own invocation of
169
+ # instrumentation with Android Test Orchestrator or not. ** Orchestrator is only
170
+ # compatible with AndroidJUnitRunner version 1.0 or higher! ** Orchestrator
171
+ # offers the following benefits: - No shared state - Crashes are isolated - Logs
172
+ # are scoped per test See for more information about Android Test Orchestrator.
173
+ # If not set, the test will be run without the orchestrator.
174
+ # Corresponds to the JSON property `orchestratorOption`
175
+ # @return [String]
176
+ attr_accessor :orchestrator_option
177
+
178
+ # Options for enabling sharding.
179
+ # Corresponds to the JSON property `shardingOption`
180
+ # @return [Google::Apis::TestingV1::ShardingOption]
181
+ attr_accessor :sharding_option
182
+
183
+ # A reference to a file, used for user inputs.
184
+ # Corresponds to the JSON property `testApk`
185
+ # @return [Google::Apis::TestingV1::FileReference]
186
+ attr_accessor :test_apk
187
+
188
+ # The java package for the test to be executed. The default value is determined
189
+ # by examining the application's manifest.
190
+ # Corresponds to the JSON property `testPackageId`
191
+ # @return [String]
192
+ attr_accessor :test_package_id
193
+
194
+ # The InstrumentationTestRunner class. The default value is determined by
195
+ # examining the application's manifest.
196
+ # Corresponds to the JSON property `testRunnerClass`
197
+ # @return [String]
198
+ attr_accessor :test_runner_class
199
+
200
+ # Each target must be fully qualified with the package name or class name, in
201
+ # one of these formats: - "package package_name" - "class package_name.
202
+ # class_name" - "class package_name.class_name#method_name" If empty, all
203
+ # targets in the module will be run.
204
+ # Corresponds to the JSON property `testTargets`
205
+ # @return [Array<String>]
206
+ attr_accessor :test_targets
207
+
208
+ def initialize(**args)
209
+ update!(**args)
210
+ end
211
+
212
+ # Update properties of this object
213
+ def update!(**args)
214
+ @app_apk = args[:app_apk] if args.key?(:app_apk)
215
+ @app_bundle = args[:app_bundle] if args.key?(:app_bundle)
216
+ @app_package_id = args[:app_package_id] if args.key?(:app_package_id)
217
+ @orchestrator_option = args[:orchestrator_option] if args.key?(:orchestrator_option)
218
+ @sharding_option = args[:sharding_option] if args.key?(:sharding_option)
219
+ @test_apk = args[:test_apk] if args.key?(:test_apk)
220
+ @test_package_id = args[:test_package_id] if args.key?(:test_package_id)
221
+ @test_runner_class = args[:test_runner_class] if args.key?(:test_runner_class)
222
+ @test_targets = args[:test_targets] if args.key?(:test_targets)
223
+ end
224
+ end
225
+
226
+ # A set of Android device configuration permutations is defined by the the cross-
227
+ # product of the given axes. Internally, the given AndroidMatrix will be
228
+ # expanded into a set of AndroidDevices. Only supported permutations will be
229
+ # instantiated. Invalid permutations (e.g., incompatible models/versions) are
230
+ # ignored.
231
+ class AndroidMatrix
232
+ include Google::Apis::Core::Hashable
233
+
234
+ # Required. The ids of the set of Android device to be used. Use the
235
+ # TestEnvironmentDiscoveryService to get supported options.
236
+ # Corresponds to the JSON property `androidModelIds`
237
+ # @return [Array<String>]
238
+ attr_accessor :android_model_ids
239
+
240
+ # Required. The ids of the set of Android OS version to be used. Use the
241
+ # TestEnvironmentDiscoveryService to get supported options.
242
+ # Corresponds to the JSON property `androidVersionIds`
243
+ # @return [Array<String>]
244
+ attr_accessor :android_version_ids
245
+
246
+ # Required. The set of locales the test device will enable for testing. Use the
247
+ # TestEnvironmentDiscoveryService to get supported options.
248
+ # Corresponds to the JSON property `locales`
249
+ # @return [Array<String>]
250
+ attr_accessor :locales
251
+
252
+ # Required. The set of orientations to test with. Use the
253
+ # TestEnvironmentDiscoveryService to get supported options.
254
+ # Corresponds to the JSON property `orientations`
255
+ # @return [Array<String>]
256
+ attr_accessor :orientations
257
+
258
+ def initialize(**args)
259
+ update!(**args)
260
+ end
261
+
262
+ # Update properties of this object
263
+ def update!(**args)
264
+ @android_model_ids = args[:android_model_ids] if args.key?(:android_model_ids)
265
+ @android_version_ids = args[:android_version_ids] if args.key?(:android_version_ids)
266
+ @locales = args[:locales] if args.key?(:locales)
267
+ @orientations = args[:orientations] if args.key?(:orientations)
268
+ end
269
+ end
270
+
271
+ # A description of an Android device tests may be run on.
272
+ class AndroidModel
273
+ include Google::Apis::Core::Hashable
274
+
275
+ # The company that this device is branded with. Example: "Google", "Samsung".
276
+ # Corresponds to the JSON property `brand`
277
+ # @return [String]
278
+ attr_accessor :brand
279
+
280
+ # The name of the industrial design. This corresponds to android.os.Build.DEVICE.
281
+ # Corresponds to the JSON property `codename`
282
+ # @return [String]
283
+ attr_accessor :codename
284
+
285
+ # Whether this device is virtual or physical.
286
+ # Corresponds to the JSON property `form`
287
+ # @return [String]
288
+ attr_accessor :form
289
+
290
+ # Whether this device is a phone, tablet, wearable, etc.
291
+ # Corresponds to the JSON property `formFactor`
292
+ # @return [String]
293
+ attr_accessor :form_factor
294
+
295
+ # The unique opaque id for this model. Use this for invoking the
296
+ # TestExecutionService.
297
+ # Corresponds to the JSON property `id`
298
+ # @return [String]
299
+ attr_accessor :id
300
+
301
+ # True if and only if tests with this model are recorded by stitching together
302
+ # screenshots. See use_low_spec_video_recording in device config.
303
+ # Corresponds to the JSON property `lowFpsVideoRecording`
304
+ # @return [Boolean]
305
+ attr_accessor :low_fps_video_recording
306
+ alias_method :low_fps_video_recording?, :low_fps_video_recording
307
+
308
+ # The manufacturer of this device.
309
+ # Corresponds to the JSON property `manufacturer`
310
+ # @return [String]
311
+ attr_accessor :manufacturer
312
+
313
+ # The human-readable marketing name for this device model. Examples: "Nexus 5", "
314
+ # Galaxy S5".
315
+ # Corresponds to the JSON property `name`
316
+ # @return [String]
317
+ attr_accessor :name
318
+
319
+ # Screen density in DPI. This corresponds to ro.sf.lcd_density
320
+ # Corresponds to the JSON property `screenDensity`
321
+ # @return [Fixnum]
322
+ attr_accessor :screen_density
323
+
324
+ # Screen size in the horizontal (X) dimension measured in pixels.
325
+ # Corresponds to the JSON property `screenX`
326
+ # @return [Fixnum]
327
+ attr_accessor :screen_x
328
+
329
+ # Screen size in the vertical (Y) dimension measured in pixels.
330
+ # Corresponds to the JSON property `screenY`
331
+ # @return [Fixnum]
332
+ attr_accessor :screen_y
333
+
334
+ # The list of supported ABIs for this device. This corresponds to either android.
335
+ # os.Build.SUPPORTED_ABIS (for API level 21 and above) or android.os.Build.
336
+ # CPU_ABI/CPU_ABI2. The most preferred ABI is the first element in the list.
337
+ # Elements are optionally prefixed by "version_id:" (where version_id is the id
338
+ # of an AndroidVersion), denoting an ABI that is supported only on a particular
339
+ # version.
340
+ # Corresponds to the JSON property `supportedAbis`
341
+ # @return [Array<String>]
342
+ attr_accessor :supported_abis
343
+
344
+ # The set of Android versions this device supports.
345
+ # Corresponds to the JSON property `supportedVersionIds`
346
+ # @return [Array<String>]
347
+ attr_accessor :supported_version_ids
348
+
349
+ # Tags for this dimension. Examples: "default", "preview", "deprecated".
350
+ # Corresponds to the JSON property `tags`
351
+ # @return [Array<String>]
352
+ attr_accessor :tags
353
+
354
+ # URL of a thumbnail image (photo) of the device. e.g. https://lh3.
355
+ # googleusercontent.com/90WcauuJiCYABEl8U0lcZeuS5STUbf2yW...
356
+ # Corresponds to the JSON property `thumbnailUrl`
357
+ # @return [String]
358
+ attr_accessor :thumbnail_url
359
+
360
+ def initialize(**args)
361
+ update!(**args)
362
+ end
363
+
364
+ # Update properties of this object
365
+ def update!(**args)
366
+ @brand = args[:brand] if args.key?(:brand)
367
+ @codename = args[:codename] if args.key?(:codename)
368
+ @form = args[:form] if args.key?(:form)
369
+ @form_factor = args[:form_factor] if args.key?(:form_factor)
370
+ @id = args[:id] if args.key?(:id)
371
+ @low_fps_video_recording = args[:low_fps_video_recording] if args.key?(:low_fps_video_recording)
372
+ @manufacturer = args[:manufacturer] if args.key?(:manufacturer)
373
+ @name = args[:name] if args.key?(:name)
374
+ @screen_density = args[:screen_density] if args.key?(:screen_density)
375
+ @screen_x = args[:screen_x] if args.key?(:screen_x)
376
+ @screen_y = args[:screen_y] if args.key?(:screen_y)
377
+ @supported_abis = args[:supported_abis] if args.key?(:supported_abis)
378
+ @supported_version_ids = args[:supported_version_ids] if args.key?(:supported_version_ids)
379
+ @tags = args[:tags] if args.key?(:tags)
380
+ @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url)
381
+ end
382
+ end
383
+
384
+ # A test of an android application that explores the application on a virtual or
385
+ # physical Android Device, finding culprits and crashes as it goes. Next tag: 30
386
+ class AndroidRoboTest
387
+ include Google::Apis::Core::Hashable
388
+
389
+ # A reference to a file, used for user inputs.
390
+ # Corresponds to the JSON property `appApk`
391
+ # @return [Google::Apis::TestingV1::FileReference]
392
+ attr_accessor :app_apk
393
+
394
+ # An Android App Bundle file format, containing a BundleConfig.pb file, a base
395
+ # module directory, zero or more dynamic feature module directories. See https://
396
+ # developer.android.com/guide/app-bundle/build for guidance on building App
397
+ # Bundles.
398
+ # Corresponds to the JSON property `appBundle`
399
+ # @return [Google::Apis::TestingV1::AppBundle]
400
+ attr_accessor :app_bundle
401
+
402
+ # The initial activity that should be used to start the app.
403
+ # Corresponds to the JSON property `appInitialActivity`
404
+ # @return [String]
405
+ attr_accessor :app_initial_activity
406
+
407
+ # The java package for the application under test. The default value is
408
+ # determined by examining the application's manifest.
409
+ # Corresponds to the JSON property `appPackageId`
410
+ # @return [String]
411
+ attr_accessor :app_package_id
412
+
413
+ # The max depth of the traversal stack Robo can explore. Needs to be at least 2
414
+ # to make Robo explore the app beyond the first activity. Default is 50.
415
+ # Corresponds to the JSON property `maxDepth`
416
+ # @return [Fixnum]
417
+ attr_accessor :max_depth
418
+
419
+ # The max number of steps Robo can execute. Default is no limit.
420
+ # Corresponds to the JSON property `maxSteps`
421
+ # @return [Fixnum]
422
+ attr_accessor :max_steps
423
+
424
+ # A set of directives Robo should apply during the crawl. This allows users to
425
+ # customize the crawl. For example, the username and password for a test account
426
+ # can be provided.
427
+ # Corresponds to the JSON property `roboDirectives`
428
+ # @return [Array<Google::Apis::TestingV1::RoboDirective>]
429
+ attr_accessor :robo_directives
430
+
431
+ # A reference to a file, used for user inputs.
432
+ # Corresponds to the JSON property `roboScript`
433
+ # @return [Google::Apis::TestingV1::FileReference]
434
+ attr_accessor :robo_script
435
+
436
+ # The intents used to launch the app for the crawl. If none are provided, then
437
+ # the main launcher activity is launched. If some are provided, then only those
438
+ # provided are launched (the main launcher activity must be provided explicitly).
439
+ # Corresponds to the JSON property `startingIntents`
440
+ # @return [Array<Google::Apis::TestingV1::RoboStartingIntent>]
441
+ attr_accessor :starting_intents
442
+
443
+ def initialize(**args)
444
+ update!(**args)
445
+ end
446
+
447
+ # Update properties of this object
448
+ def update!(**args)
449
+ @app_apk = args[:app_apk] if args.key?(:app_apk)
450
+ @app_bundle = args[:app_bundle] if args.key?(:app_bundle)
451
+ @app_initial_activity = args[:app_initial_activity] if args.key?(:app_initial_activity)
452
+ @app_package_id = args[:app_package_id] if args.key?(:app_package_id)
453
+ @max_depth = args[:max_depth] if args.key?(:max_depth)
454
+ @max_steps = args[:max_steps] if args.key?(:max_steps)
455
+ @robo_directives = args[:robo_directives] if args.key?(:robo_directives)
456
+ @robo_script = args[:robo_script] if args.key?(:robo_script)
457
+ @starting_intents = args[:starting_intents] if args.key?(:starting_intents)
458
+ end
459
+ end
460
+
461
+ # Android configuration that can be selected at the time a test is run.
462
+ class AndroidRuntimeConfiguration
463
+ include Google::Apis::Core::Hashable
464
+
465
+ # The set of available locales.
466
+ # Corresponds to the JSON property `locales`
467
+ # @return [Array<Google::Apis::TestingV1::Locale>]
468
+ attr_accessor :locales
469
+
470
+ # The set of available orientations.
471
+ # Corresponds to the JSON property `orientations`
472
+ # @return [Array<Google::Apis::TestingV1::Orientation>]
473
+ attr_accessor :orientations
474
+
475
+ def initialize(**args)
476
+ update!(**args)
477
+ end
478
+
479
+ # Update properties of this object
480
+ def update!(**args)
481
+ @locales = args[:locales] if args.key?(:locales)
482
+ @orientations = args[:orientations] if args.key?(:orientations)
483
+ end
484
+ end
485
+
486
+ # A test of an Android Application with a Test Loop. The intent \ will be
487
+ # implicitly added, since Games is the only user of this api, for the time being.
488
+ class AndroidTestLoop
489
+ include Google::Apis::Core::Hashable
490
+
491
+ # A reference to a file, used for user inputs.
492
+ # Corresponds to the JSON property `appApk`
493
+ # @return [Google::Apis::TestingV1::FileReference]
494
+ attr_accessor :app_apk
495
+
496
+ # An Android App Bundle file format, containing a BundleConfig.pb file, a base
497
+ # module directory, zero or more dynamic feature module directories. See https://
498
+ # developer.android.com/guide/app-bundle/build for guidance on building App
499
+ # Bundles.
500
+ # Corresponds to the JSON property `appBundle`
501
+ # @return [Google::Apis::TestingV1::AppBundle]
502
+ attr_accessor :app_bundle
503
+
504
+ # The java package for the application under test. The default is determined by
505
+ # examining the application's manifest.
506
+ # Corresponds to the JSON property `appPackageId`
507
+ # @return [String]
508
+ attr_accessor :app_package_id
509
+
510
+ # The list of scenario labels that should be run during the test. The scenario
511
+ # labels should map to labels defined in the application's manifest. For example,
512
+ # player_experience and com.google.test.loops.player_experience add all of the
513
+ # loops labeled in the manifest with the com.google.test.loops.player_experience
514
+ # name to the execution. Scenarios can also be specified in the scenarios field.
515
+ # Corresponds to the JSON property `scenarioLabels`
516
+ # @return [Array<String>]
517
+ attr_accessor :scenario_labels
518
+
519
+ # The list of scenarios that should be run during the test. The default is all
520
+ # test loops, derived from the application's manifest.
521
+ # Corresponds to the JSON property `scenarios`
522
+ # @return [Array<Fixnum>]
523
+ attr_accessor :scenarios
524
+
525
+ def initialize(**args)
526
+ update!(**args)
527
+ end
528
+
529
+ # Update properties of this object
530
+ def update!(**args)
531
+ @app_apk = args[:app_apk] if args.key?(:app_apk)
532
+ @app_bundle = args[:app_bundle] if args.key?(:app_bundle)
533
+ @app_package_id = args[:app_package_id] if args.key?(:app_package_id)
534
+ @scenario_labels = args[:scenario_labels] if args.key?(:scenario_labels)
535
+ @scenarios = args[:scenarios] if args.key?(:scenarios)
536
+ end
537
+ end
538
+
539
+ # A version of the Android OS.
540
+ class AndroidVersion
541
+ include Google::Apis::Core::Hashable
542
+
543
+ # The API level for this Android version. Examples: 18, 19.
544
+ # Corresponds to the JSON property `apiLevel`
545
+ # @return [Fixnum]
546
+ attr_accessor :api_level
547
+
548
+ # The code name for this Android version. Examples: "JellyBean", "KitKat".
549
+ # Corresponds to the JSON property `codeName`
550
+ # @return [String]
551
+ attr_accessor :code_name
552
+
553
+ # Data about the relative number of devices running a given configuration of the
554
+ # Android platform.
555
+ # Corresponds to the JSON property `distribution`
556
+ # @return [Google::Apis::TestingV1::Distribution]
557
+ attr_accessor :distribution
558
+
559
+ # An opaque id for this Android version. Use this id to invoke the
560
+ # TestExecutionService.
561
+ # Corresponds to the JSON property `id`
562
+ # @return [String]
563
+ attr_accessor :id
564
+
565
+ # Represents a whole or partial calendar date, such as a birthday. The time of
566
+ # day and time zone are either specified elsewhere or are insignificant. The
567
+ # date is relative to the Gregorian Calendar. This can represent one of the
568
+ # following: * A full date, with non-zero year, month, and day values * A month
569
+ # and day value, with a zero year, such as an anniversary * A year on its own,
570
+ # with zero month and day values * A year and month value, with a zero day, such
571
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
572
+ # google.protobuf.Timestamp`.
573
+ # Corresponds to the JSON property `releaseDate`
574
+ # @return [Google::Apis::TestingV1::Date]
575
+ attr_accessor :release_date
576
+
577
+ # Tags for this dimension. Examples: "default", "preview", "deprecated".
578
+ # Corresponds to the JSON property `tags`
579
+ # @return [Array<String>]
580
+ attr_accessor :tags
581
+
582
+ # A string representing this version of the Android OS. Examples: "4.3", "4.4".
583
+ # Corresponds to the JSON property `versionString`
584
+ # @return [String]
585
+ attr_accessor :version_string
586
+
587
+ def initialize(**args)
588
+ update!(**args)
589
+ end
590
+
591
+ # Update properties of this object
592
+ def update!(**args)
593
+ @api_level = args[:api_level] if args.key?(:api_level)
594
+ @code_name = args[:code_name] if args.key?(:code_name)
595
+ @distribution = args[:distribution] if args.key?(:distribution)
596
+ @id = args[:id] if args.key?(:id)
597
+ @release_date = args[:release_date] if args.key?(:release_date)
598
+ @tags = args[:tags] if args.key?(:tags)
599
+ @version_string = args[:version_string] if args.key?(:version_string)
600
+ end
601
+ end
602
+
603
+ # An Android package file to install.
604
+ class Apk
605
+ include Google::Apis::Core::Hashable
606
+
607
+ # A reference to a file, used for user inputs.
608
+ # Corresponds to the JSON property `location`
609
+ # @return [Google::Apis::TestingV1::FileReference]
610
+ attr_accessor :location
611
+
612
+ # The java package for the APK to be installed. Value is determined by examining
613
+ # the application's manifest.
614
+ # Corresponds to the JSON property `packageName`
615
+ # @return [String]
616
+ attr_accessor :package_name
617
+
618
+ def initialize(**args)
619
+ update!(**args)
620
+ end
621
+
622
+ # Update properties of this object
623
+ def update!(**args)
624
+ @location = args[:location] if args.key?(:location)
625
+ @package_name = args[:package_name] if args.key?(:package_name)
626
+ end
627
+ end
628
+
629
+ # Android application details based on application manifest and apk archive
630
+ # contents.
631
+ class ApkDetail
632
+ include Google::Apis::Core::Hashable
633
+
634
+ # An Android app manifest. See http://developer.android.com/guide/topics/
635
+ # manifest/manifest-intro.html
636
+ # Corresponds to the JSON property `apkManifest`
637
+ # @return [Google::Apis::TestingV1::ApkManifest]
638
+ attr_accessor :apk_manifest
639
+
640
+ def initialize(**args)
641
+ update!(**args)
642
+ end
643
+
644
+ # Update properties of this object
645
+ def update!(**args)
646
+ @apk_manifest = args[:apk_manifest] if args.key?(:apk_manifest)
647
+ end
648
+ end
649
+
650
+ # An Android app manifest. See http://developer.android.com/guide/topics/
651
+ # manifest/manifest-intro.html
652
+ class ApkManifest
653
+ include Google::Apis::Core::Hashable
654
+
655
+ # User-readable name for the application.
656
+ # Corresponds to the JSON property `applicationLabel`
657
+ # @return [String]
658
+ attr_accessor :application_label
659
+
660
+ #
661
+ # Corresponds to the JSON property `intentFilters`
662
+ # @return [Array<Google::Apis::TestingV1::IntentFilter>]
663
+ attr_accessor :intent_filters
664
+
665
+ # Maximum API level on which the application is designed to run.
666
+ # Corresponds to the JSON property `maxSdkVersion`
667
+ # @return [Fixnum]
668
+ attr_accessor :max_sdk_version
669
+
670
+ # Minimum API level required for the application to run.
671
+ # Corresponds to the JSON property `minSdkVersion`
672
+ # @return [Fixnum]
673
+ attr_accessor :min_sdk_version
674
+
675
+ # Full Java-style package name for this application, e.g. "com.example.foo".
676
+ # Corresponds to the JSON property `packageName`
677
+ # @return [String]
678
+ attr_accessor :package_name
679
+
680
+ # Specifies the API Level on which the application is designed to run.
681
+ # Corresponds to the JSON property `targetSdkVersion`
682
+ # @return [Fixnum]
683
+ attr_accessor :target_sdk_version
684
+
685
+ def initialize(**args)
686
+ update!(**args)
687
+ end
688
+
689
+ # Update properties of this object
690
+ def update!(**args)
691
+ @application_label = args[:application_label] if args.key?(:application_label)
692
+ @intent_filters = args[:intent_filters] if args.key?(:intent_filters)
693
+ @max_sdk_version = args[:max_sdk_version] if args.key?(:max_sdk_version)
694
+ @min_sdk_version = args[:min_sdk_version] if args.key?(:min_sdk_version)
695
+ @package_name = args[:package_name] if args.key?(:package_name)
696
+ @target_sdk_version = args[:target_sdk_version] if args.key?(:target_sdk_version)
697
+ end
698
+ end
699
+
700
+ # An Android App Bundle file format, containing a BundleConfig.pb file, a base
701
+ # module directory, zero or more dynamic feature module directories. See https://
702
+ # developer.android.com/guide/app-bundle/build for guidance on building App
703
+ # Bundles.
704
+ class AppBundle
705
+ include Google::Apis::Core::Hashable
706
+
707
+ # A reference to a file, used for user inputs.
708
+ # Corresponds to the JSON property `bundleLocation`
709
+ # @return [Google::Apis::TestingV1::FileReference]
710
+ attr_accessor :bundle_location
711
+
712
+ def initialize(**args)
713
+ update!(**args)
714
+ end
715
+
716
+ # Update properties of this object
717
+ def update!(**args)
718
+ @bundle_location = args[:bundle_location] if args.key?(:bundle_location)
719
+ end
720
+ end
721
+
722
+ # Response containing the current state of the specified test matrix.
723
+ class CancelTestMatrixResponse
724
+ include Google::Apis::Core::Hashable
725
+
726
+ # The current rolled-up state of the test matrix. If this state is already final,
727
+ # then the cancelation request will have no effect.
728
+ # Corresponds to the JSON property `testState`
729
+ # @return [String]
730
+ attr_accessor :test_state
731
+
732
+ def initialize(**args)
733
+ update!(**args)
734
+ end
735
+
736
+ # Update properties of this object
737
+ def update!(**args)
738
+ @test_state = args[:test_state] if args.key?(:test_state)
739
+ end
740
+ end
741
+
742
+ # Information about the client which invoked the test.
743
+ class ClientInfo
744
+ include Google::Apis::Core::Hashable
745
+
746
+ # The list of detailed information about client.
747
+ # Corresponds to the JSON property `clientInfoDetails`
748
+ # @return [Array<Google::Apis::TestingV1::ClientInfoDetail>]
749
+ attr_accessor :client_info_details
750
+
751
+ # Required. Client name, such as gcloud.
752
+ # Corresponds to the JSON property `name`
753
+ # @return [String]
754
+ attr_accessor :name
755
+
756
+ def initialize(**args)
757
+ update!(**args)
758
+ end
759
+
760
+ # Update properties of this object
761
+ def update!(**args)
762
+ @client_info_details = args[:client_info_details] if args.key?(:client_info_details)
763
+ @name = args[:name] if args.key?(:name)
764
+ end
765
+ end
766
+
767
+ # Key-value pair of detailed information about the client which invoked the test.
768
+ # Examples: `'Version', '1.0'`, `'Release Track', 'BETA'`.
769
+ class ClientInfoDetail
770
+ include Google::Apis::Core::Hashable
771
+
772
+ # Required. The key of detailed client information.
773
+ # Corresponds to the JSON property `key`
774
+ # @return [String]
775
+ attr_accessor :key
776
+
777
+ # Required. The value of detailed client information.
778
+ # Corresponds to the JSON property `value`
779
+ # @return [String]
780
+ attr_accessor :value
781
+
782
+ def initialize(**args)
783
+ update!(**args)
784
+ end
785
+
786
+ # Update properties of this object
787
+ def update!(**args)
788
+ @key = args[:key] if args.key?(:key)
789
+ @value = args[:value] if args.key?(:value)
790
+ end
791
+ end
792
+
793
+ # Represents a whole or partial calendar date, such as a birthday. The time of
794
+ # day and time zone are either specified elsewhere or are insignificant. The
795
+ # date is relative to the Gregorian Calendar. This can represent one of the
796
+ # following: * A full date, with non-zero year, month, and day values * A month
797
+ # and day value, with a zero year, such as an anniversary * A year on its own,
798
+ # with zero month and day values * A year and month value, with a zero day, such
799
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
800
+ # google.protobuf.Timestamp`.
801
+ class Date
802
+ include Google::Apis::Core::Hashable
803
+
804
+ # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to
805
+ # specify a year by itself or a year and month where the day isn't significant.
806
+ # Corresponds to the JSON property `day`
807
+ # @return [Fixnum]
808
+ attr_accessor :day
809
+
810
+ # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month
811
+ # and day.
812
+ # Corresponds to the JSON property `month`
813
+ # @return [Fixnum]
814
+ attr_accessor :month
815
+
816
+ # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a
817
+ # year.
818
+ # Corresponds to the JSON property `year`
819
+ # @return [Fixnum]
820
+ attr_accessor :year
821
+
822
+ def initialize(**args)
823
+ update!(**args)
824
+ end
825
+
826
+ # Update properties of this object
827
+ def update!(**args)
828
+ @day = args[:day] if args.key?(:day)
829
+ @month = args[:month] if args.key?(:month)
830
+ @year = args[:year] if args.key?(:year)
831
+ end
832
+ end
833
+
834
+ # A single device file description.
835
+ class DeviceFile
836
+ include Google::Apis::Core::Hashable
837
+
838
+ # An opaque binary blob file to install on the device before the test starts.
839
+ # Corresponds to the JSON property `obbFile`
840
+ # @return [Google::Apis::TestingV1::ObbFile]
841
+ attr_accessor :obb_file
842
+
843
+ # A file or directory to install on the device before the test starts.
844
+ # Corresponds to the JSON property `regularFile`
845
+ # @return [Google::Apis::TestingV1::RegularFile]
846
+ attr_accessor :regular_file
847
+
848
+ def initialize(**args)
849
+ update!(**args)
850
+ end
851
+
852
+ # Update properties of this object
853
+ def update!(**args)
854
+ @obb_file = args[:obb_file] if args.key?(:obb_file)
855
+ @regular_file = args[:regular_file] if args.key?(:regular_file)
856
+ end
857
+ end
858
+
859
+ # A single device IP block
860
+ class DeviceIpBlock
861
+ include Google::Apis::Core::Hashable
862
+
863
+ # Represents a whole or partial calendar date, such as a birthday. The time of
864
+ # day and time zone are either specified elsewhere or are insignificant. The
865
+ # date is relative to the Gregorian Calendar. This can represent one of the
866
+ # following: * A full date, with non-zero year, month, and day values * A month
867
+ # and day value, with a zero year, such as an anniversary * A year on its own,
868
+ # with zero month and day values * A year and month value, with a zero day, such
869
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
870
+ # google.protobuf.Timestamp`.
871
+ # Corresponds to the JSON property `addedDate`
872
+ # @return [Google::Apis::TestingV1::Date]
873
+ attr_accessor :added_date
874
+
875
+ # An IP address block in CIDR notation eg: 34.68.194.64/29
876
+ # Corresponds to the JSON property `block`
877
+ # @return [String]
878
+ attr_accessor :block
879
+
880
+ # Whether this block is used by physical or virtual devices
881
+ # Corresponds to the JSON property `form`
882
+ # @return [String]
883
+ attr_accessor :form
884
+
885
+ def initialize(**args)
886
+ update!(**args)
887
+ end
888
+
889
+ # Update properties of this object
890
+ def update!(**args)
891
+ @added_date = args[:added_date] if args.key?(:added_date)
892
+ @block = args[:block] if args.key?(:block)
893
+ @form = args[:form] if args.key?(:form)
894
+ end
895
+ end
896
+
897
+ # List of IP blocks used by the Firebase Test Lab
898
+ class DeviceIpBlockCatalog
899
+ include Google::Apis::Core::Hashable
900
+
901
+ # The device IP blocks used by Firebase Test Lab
902
+ # Corresponds to the JSON property `ipBlocks`
903
+ # @return [Array<Google::Apis::TestingV1::DeviceIpBlock>]
904
+ attr_accessor :ip_blocks
905
+
906
+ def initialize(**args)
907
+ update!(**args)
908
+ end
909
+
910
+ # Update properties of this object
911
+ def update!(**args)
912
+ @ip_blocks = args[:ip_blocks] if args.key?(:ip_blocks)
913
+ end
914
+ end
915
+
916
+ # Data about the relative number of devices running a given configuration of the
917
+ # Android platform.
918
+ class Distribution
919
+ include Google::Apis::Core::Hashable
920
+
921
+ # Output only. The estimated fraction (0-1) of the total market with this
922
+ # configuration.
923
+ # Corresponds to the JSON property `marketShare`
924
+ # @return [Float]
925
+ attr_accessor :market_share
926
+
927
+ # Output only. The time this distribution was measured.
928
+ # Corresponds to the JSON property `measurementTime`
929
+ # @return [String]
930
+ attr_accessor :measurement_time
931
+
932
+ def initialize(**args)
933
+ update!(**args)
934
+ end
935
+
936
+ # Update properties of this object
937
+ def update!(**args)
938
+ @market_share = args[:market_share] if args.key?(:market_share)
939
+ @measurement_time = args[:measurement_time] if args.key?(:measurement_time)
940
+ end
941
+ end
942
+
943
+ # The environment in which the test is run.
944
+ class Environment
945
+ include Google::Apis::Core::Hashable
946
+
947
+ # A single Android device.
948
+ # Corresponds to the JSON property `androidDevice`
949
+ # @return [Google::Apis::TestingV1::AndroidDevice]
950
+ attr_accessor :android_device
951
+
952
+ # A single iOS device.
953
+ # Corresponds to the JSON property `iosDevice`
954
+ # @return [Google::Apis::TestingV1::IosDevice]
955
+ attr_accessor :ios_device
956
+
957
+ def initialize(**args)
958
+ update!(**args)
959
+ end
960
+
961
+ # Update properties of this object
962
+ def update!(**args)
963
+ @android_device = args[:android_device] if args.key?(:android_device)
964
+ @ios_device = args[:ios_device] if args.key?(:ios_device)
965
+ end
966
+ end
967
+
968
+ # The matrix of environments in which the test is to be executed.
969
+ class EnvironmentMatrix
970
+ include Google::Apis::Core::Hashable
971
+
972
+ # A list of Android device configurations in which the test is to be executed.
973
+ # Corresponds to the JSON property `androidDeviceList`
974
+ # @return [Google::Apis::TestingV1::AndroidDeviceList]
975
+ attr_accessor :android_device_list
976
+
977
+ # A set of Android device configuration permutations is defined by the the cross-
978
+ # product of the given axes. Internally, the given AndroidMatrix will be
979
+ # expanded into a set of AndroidDevices. Only supported permutations will be
980
+ # instantiated. Invalid permutations (e.g., incompatible models/versions) are
981
+ # ignored.
982
+ # Corresponds to the JSON property `androidMatrix`
983
+ # @return [Google::Apis::TestingV1::AndroidMatrix]
984
+ attr_accessor :android_matrix
985
+
986
+ # A list of iOS device configurations in which the test is to be executed.
987
+ # Corresponds to the JSON property `iosDeviceList`
988
+ # @return [Google::Apis::TestingV1::IosDeviceList]
989
+ attr_accessor :ios_device_list
990
+
991
+ def initialize(**args)
992
+ update!(**args)
993
+ end
994
+
995
+ # Update properties of this object
996
+ def update!(**args)
997
+ @android_device_list = args[:android_device_list] if args.key?(:android_device_list)
998
+ @android_matrix = args[:android_matrix] if args.key?(:android_matrix)
999
+ @ios_device_list = args[:ios_device_list] if args.key?(:ios_device_list)
1000
+ end
1001
+ end
1002
+
1003
+ # A key-value pair passed as an environment variable to the test.
1004
+ class EnvironmentVariable
1005
+ include Google::Apis::Core::Hashable
1006
+
1007
+ # Key for the environment variable.
1008
+ # Corresponds to the JSON property `key`
1009
+ # @return [String]
1010
+ attr_accessor :key
1011
+
1012
+ # Value for the environment variable.
1013
+ # Corresponds to the JSON property `value`
1014
+ # @return [String]
1015
+ attr_accessor :value
1016
+
1017
+ def initialize(**args)
1018
+ update!(**args)
1019
+ end
1020
+
1021
+ # Update properties of this object
1022
+ def update!(**args)
1023
+ @key = args[:key] if args.key?(:key)
1024
+ @value = args[:value] if args.key?(:value)
1025
+ end
1026
+ end
1027
+
1028
+ # A reference to a file, used for user inputs.
1029
+ class FileReference
1030
+ include Google::Apis::Core::Hashable
1031
+
1032
+ # A path to a file in Google Cloud Storage. Example: gs://build-app-
1033
+ # 1414623860166/app%40debug-unaligned.apk These paths are expected to be url
1034
+ # encoded (percent encoding)
1035
+ # Corresponds to the JSON property `gcsPath`
1036
+ # @return [String]
1037
+ attr_accessor :gcs_path
1038
+
1039
+ def initialize(**args)
1040
+ update!(**args)
1041
+ end
1042
+
1043
+ # Update properties of this object
1044
+ def update!(**args)
1045
+ @gcs_path = args[:gcs_path] if args.key?(:gcs_path)
1046
+ end
1047
+ end
1048
+
1049
+ # Response containing the details of the specified Android application APK.
1050
+ class GetApkDetailsResponse
1051
+ include Google::Apis::Core::Hashable
1052
+
1053
+ # Android application details based on application manifest and apk archive
1054
+ # contents.
1055
+ # Corresponds to the JSON property `apkDetail`
1056
+ # @return [Google::Apis::TestingV1::ApkDetail]
1057
+ attr_accessor :apk_detail
1058
+
1059
+ def initialize(**args)
1060
+ update!(**args)
1061
+ end
1062
+
1063
+ # Update properties of this object
1064
+ def update!(**args)
1065
+ @apk_detail = args[:apk_detail] if args.key?(:apk_detail)
1066
+ end
1067
+ end
1068
+
1069
+ # Enables automatic Google account login. If set, the service automatically
1070
+ # generates a Google test account and adds it to the device, before executing
1071
+ # the test. Note that test accounts might be reused. Many applications show
1072
+ # their full set of functionalities when an account is present on the device.
1073
+ # Logging into the device with these generated accounts allows testing more
1074
+ # functionalities.
1075
+ class GoogleAuto
1076
+ include Google::Apis::Core::Hashable
1077
+
1078
+ def initialize(**args)
1079
+ update!(**args)
1080
+ end
1081
+
1082
+ # Update properties of this object
1083
+ def update!(**args)
1084
+ end
1085
+ end
1086
+
1087
+ # A storage location within Google cloud storage (GCS).
1088
+ class GoogleCloudStorage
1089
+ include Google::Apis::Core::Hashable
1090
+
1091
+ # Required. The path to a directory in GCS that will eventually contain the
1092
+ # results for this test. The requesting user must have write access on the
1093
+ # bucket in the supplied path.
1094
+ # Corresponds to the JSON property `gcsPath`
1095
+ # @return [String]
1096
+ attr_accessor :gcs_path
1097
+
1098
+ def initialize(**args)
1099
+ update!(**args)
1100
+ end
1101
+
1102
+ # Update properties of this object
1103
+ def update!(**args)
1104
+ @gcs_path = args[:gcs_path] if args.key?(:gcs_path)
1105
+ end
1106
+ end
1107
+
1108
+ # The section of an tag. https://developer.android.com/guide/topics/manifest/
1109
+ # intent-filter-element.html
1110
+ class IntentFilter
1111
+ include Google::Apis::Core::Hashable
1112
+
1113
+ # The android:name value of the tag.
1114
+ # Corresponds to the JSON property `actionNames`
1115
+ # @return [Array<String>]
1116
+ attr_accessor :action_names
1117
+
1118
+ # The android:name value of the tag.
1119
+ # Corresponds to the JSON property `categoryNames`
1120
+ # @return [Array<String>]
1121
+ attr_accessor :category_names
1122
+
1123
+ # The android:mimeType value of the tag.
1124
+ # Corresponds to the JSON property `mimeType`
1125
+ # @return [String]
1126
+ attr_accessor :mime_type
1127
+
1128
+ def initialize(**args)
1129
+ update!(**args)
1130
+ end
1131
+
1132
+ # Update properties of this object
1133
+ def update!(**args)
1134
+ @action_names = args[:action_names] if args.key?(:action_names)
1135
+ @category_names = args[:category_names] if args.key?(:category_names)
1136
+ @mime_type = args[:mime_type] if args.key?(:mime_type)
1137
+ end
1138
+ end
1139
+
1140
+ # A single iOS device.
1141
+ class IosDevice
1142
+ include Google::Apis::Core::Hashable
1143
+
1144
+ # Required. The id of the iOS device to be used. Use the
1145
+ # TestEnvironmentDiscoveryService to get supported options.
1146
+ # Corresponds to the JSON property `iosModelId`
1147
+ # @return [String]
1148
+ attr_accessor :ios_model_id
1149
+
1150
+ # Required. The id of the iOS major software version to be used. Use the
1151
+ # TestEnvironmentDiscoveryService to get supported options.
1152
+ # Corresponds to the JSON property `iosVersionId`
1153
+ # @return [String]
1154
+ attr_accessor :ios_version_id
1155
+
1156
+ # Required. The locale the test device used for testing. Use the
1157
+ # TestEnvironmentDiscoveryService to get supported options.
1158
+ # Corresponds to the JSON property `locale`
1159
+ # @return [String]
1160
+ attr_accessor :locale
1161
+
1162
+ # Required. How the device is oriented during the test. Use the
1163
+ # TestEnvironmentDiscoveryService to get supported options.
1164
+ # Corresponds to the JSON property `orientation`
1165
+ # @return [String]
1166
+ attr_accessor :orientation
1167
+
1168
+ def initialize(**args)
1169
+ update!(**args)
1170
+ end
1171
+
1172
+ # Update properties of this object
1173
+ def update!(**args)
1174
+ @ios_model_id = args[:ios_model_id] if args.key?(:ios_model_id)
1175
+ @ios_version_id = args[:ios_version_id] if args.key?(:ios_version_id)
1176
+ @locale = args[:locale] if args.key?(:locale)
1177
+ @orientation = args[:orientation] if args.key?(:orientation)
1178
+ end
1179
+ end
1180
+
1181
+ # The currently supported iOS devices.
1182
+ class IosDeviceCatalog
1183
+ include Google::Apis::Core::Hashable
1184
+
1185
+ # The set of supported iOS device models.
1186
+ # Corresponds to the JSON property `models`
1187
+ # @return [Array<Google::Apis::TestingV1::IosModel>]
1188
+ attr_accessor :models
1189
+
1190
+ # iOS configuration that can be selected at the time a test is run.
1191
+ # Corresponds to the JSON property `runtimeConfiguration`
1192
+ # @return [Google::Apis::TestingV1::IosRuntimeConfiguration]
1193
+ attr_accessor :runtime_configuration
1194
+
1195
+ # The set of supported iOS software versions.
1196
+ # Corresponds to the JSON property `versions`
1197
+ # @return [Array<Google::Apis::TestingV1::IosVersion>]
1198
+ attr_accessor :versions
1199
+
1200
+ # The set of supported Xcode versions.
1201
+ # Corresponds to the JSON property `xcodeVersions`
1202
+ # @return [Array<Google::Apis::TestingV1::XcodeVersion>]
1203
+ attr_accessor :xcode_versions
1204
+
1205
+ def initialize(**args)
1206
+ update!(**args)
1207
+ end
1208
+
1209
+ # Update properties of this object
1210
+ def update!(**args)
1211
+ @models = args[:models] if args.key?(:models)
1212
+ @runtime_configuration = args[:runtime_configuration] if args.key?(:runtime_configuration)
1213
+ @versions = args[:versions] if args.key?(:versions)
1214
+ @xcode_versions = args[:xcode_versions] if args.key?(:xcode_versions)
1215
+ end
1216
+ end
1217
+
1218
+ # A file or directory to install on the device before the test starts.
1219
+ class IosDeviceFile
1220
+ include Google::Apis::Core::Hashable
1221
+
1222
+ # The bundle id of the app where this file lives. iOS apps sandbox their own
1223
+ # filesystem, so app files must specify which app installed on the device.
1224
+ # Corresponds to the JSON property `bundleId`
1225
+ # @return [String]
1226
+ attr_accessor :bundle_id
1227
+
1228
+ # A reference to a file, used for user inputs.
1229
+ # Corresponds to the JSON property `content`
1230
+ # @return [Google::Apis::TestingV1::FileReference]
1231
+ attr_accessor :content
1232
+
1233
+ # Location of the file on the device, inside the app's sandboxed filesystem
1234
+ # Corresponds to the JSON property `devicePath`
1235
+ # @return [String]
1236
+ attr_accessor :device_path
1237
+
1238
+ def initialize(**args)
1239
+ update!(**args)
1240
+ end
1241
+
1242
+ # Update properties of this object
1243
+ def update!(**args)
1244
+ @bundle_id = args[:bundle_id] if args.key?(:bundle_id)
1245
+ @content = args[:content] if args.key?(:content)
1246
+ @device_path = args[:device_path] if args.key?(:device_path)
1247
+ end
1248
+ end
1249
+
1250
+ # A list of iOS device configurations in which the test is to be executed.
1251
+ class IosDeviceList
1252
+ include Google::Apis::Core::Hashable
1253
+
1254
+ # Required. A list of iOS devices.
1255
+ # Corresponds to the JSON property `iosDevices`
1256
+ # @return [Array<Google::Apis::TestingV1::IosDevice>]
1257
+ attr_accessor :ios_devices
1258
+
1259
+ def initialize(**args)
1260
+ update!(**args)
1261
+ end
1262
+
1263
+ # Update properties of this object
1264
+ def update!(**args)
1265
+ @ios_devices = args[:ios_devices] if args.key?(:ios_devices)
1266
+ end
1267
+ end
1268
+
1269
+ # A description of an iOS device tests may be run on.
1270
+ class IosModel
1271
+ include Google::Apis::Core::Hashable
1272
+
1273
+ # Device capabilities. Copied from https://developer.apple.com/library/archive/
1274
+ # documentation/DeviceInformation/Reference/iOSDeviceCompatibility/
1275
+ # DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
1276
+ # Corresponds to the JSON property `deviceCapabilities`
1277
+ # @return [Array<String>]
1278
+ attr_accessor :device_capabilities
1279
+
1280
+ # Whether this device is a phone, tablet, wearable, etc.
1281
+ # Corresponds to the JSON property `formFactor`
1282
+ # @return [String]
1283
+ attr_accessor :form_factor
1284
+
1285
+ # The unique opaque id for this model. Use this for invoking the
1286
+ # TestExecutionService.
1287
+ # Corresponds to the JSON property `id`
1288
+ # @return [String]
1289
+ attr_accessor :id
1290
+
1291
+ # The human-readable name for this device model. Examples: "iPhone 4s", "iPad
1292
+ # Mini 2".
1293
+ # Corresponds to the JSON property `name`
1294
+ # @return [String]
1295
+ attr_accessor :name
1296
+
1297
+ # Screen density in DPI.
1298
+ # Corresponds to the JSON property `screenDensity`
1299
+ # @return [Fixnum]
1300
+ attr_accessor :screen_density
1301
+
1302
+ # Screen size in the horizontal (X) dimension measured in pixels.
1303
+ # Corresponds to the JSON property `screenX`
1304
+ # @return [Fixnum]
1305
+ attr_accessor :screen_x
1306
+
1307
+ # Screen size in the vertical (Y) dimension measured in pixels.
1308
+ # Corresponds to the JSON property `screenY`
1309
+ # @return [Fixnum]
1310
+ attr_accessor :screen_y
1311
+
1312
+ # The set of iOS major software versions this device supports.
1313
+ # Corresponds to the JSON property `supportedVersionIds`
1314
+ # @return [Array<String>]
1315
+ attr_accessor :supported_version_ids
1316
+
1317
+ # Tags for this dimension. Examples: "default", "preview", "deprecated".
1318
+ # Corresponds to the JSON property `tags`
1319
+ # @return [Array<String>]
1320
+ attr_accessor :tags
1321
+
1322
+ def initialize(**args)
1323
+ update!(**args)
1324
+ end
1325
+
1326
+ # Update properties of this object
1327
+ def update!(**args)
1328
+ @device_capabilities = args[:device_capabilities] if args.key?(:device_capabilities)
1329
+ @form_factor = args[:form_factor] if args.key?(:form_factor)
1330
+ @id = args[:id] if args.key?(:id)
1331
+ @name = args[:name] if args.key?(:name)
1332
+ @screen_density = args[:screen_density] if args.key?(:screen_density)
1333
+ @screen_x = args[:screen_x] if args.key?(:screen_x)
1334
+ @screen_y = args[:screen_y] if args.key?(:screen_y)
1335
+ @supported_version_ids = args[:supported_version_ids] if args.key?(:supported_version_ids)
1336
+ @tags = args[:tags] if args.key?(:tags)
1337
+ end
1338
+ end
1339
+
1340
+ # iOS configuration that can be selected at the time a test is run.
1341
+ class IosRuntimeConfiguration
1342
+ include Google::Apis::Core::Hashable
1343
+
1344
+ # The set of available locales.
1345
+ # Corresponds to the JSON property `locales`
1346
+ # @return [Array<Google::Apis::TestingV1::Locale>]
1347
+ attr_accessor :locales
1348
+
1349
+ # The set of available orientations.
1350
+ # Corresponds to the JSON property `orientations`
1351
+ # @return [Array<Google::Apis::TestingV1::Orientation>]
1352
+ attr_accessor :orientations
1353
+
1354
+ def initialize(**args)
1355
+ update!(**args)
1356
+ end
1357
+
1358
+ # Update properties of this object
1359
+ def update!(**args)
1360
+ @locales = args[:locales] if args.key?(:locales)
1361
+ @orientations = args[:orientations] if args.key?(:orientations)
1362
+ end
1363
+ end
1364
+
1365
+ # A test of an iOS application that implements one or more game loop scenarios.
1366
+ # This test type accepts an archived application (.ipa file) and a list of
1367
+ # integer scenarios that will be executed on the app sequentially.
1368
+ class IosTestLoop
1369
+ include Google::Apis::Core::Hashable
1370
+
1371
+ # Output only. The bundle id for the application under test.
1372
+ # Corresponds to the JSON property `appBundleId`
1373
+ # @return [String]
1374
+ attr_accessor :app_bundle_id
1375
+
1376
+ # A reference to a file, used for user inputs.
1377
+ # Corresponds to the JSON property `appIpa`
1378
+ # @return [Google::Apis::TestingV1::FileReference]
1379
+ attr_accessor :app_ipa
1380
+
1381
+ # The list of scenarios that should be run during the test. Defaults to the
1382
+ # single scenario 0 if unspecified.
1383
+ # Corresponds to the JSON property `scenarios`
1384
+ # @return [Array<Fixnum>]
1385
+ attr_accessor :scenarios
1386
+
1387
+ def initialize(**args)
1388
+ update!(**args)
1389
+ end
1390
+
1391
+ # Update properties of this object
1392
+ def update!(**args)
1393
+ @app_bundle_id = args[:app_bundle_id] if args.key?(:app_bundle_id)
1394
+ @app_ipa = args[:app_ipa] if args.key?(:app_ipa)
1395
+ @scenarios = args[:scenarios] if args.key?(:scenarios)
1396
+ end
1397
+ end
1398
+
1399
+ # A description of how to set up an iOS device prior to running the test.
1400
+ class IosTestSetup
1401
+ include Google::Apis::Core::Hashable
1402
+
1403
+ # iOS apps to install in addition to those being directly tested.
1404
+ # Corresponds to the JSON property `additionalIpas`
1405
+ # @return [Array<Google::Apis::TestingV1::FileReference>]
1406
+ attr_accessor :additional_ipas
1407
+
1408
+ # The network traffic profile used for running the test. Available network
1409
+ # profiles can be queried by using the NETWORK_CONFIGURATION environment type
1410
+ # when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
1411
+ # Corresponds to the JSON property `networkProfile`
1412
+ # @return [String]
1413
+ attr_accessor :network_profile
1414
+
1415
+ # List of directories on the device to upload to Cloud Storage at the end of the
1416
+ # test. Directories should either be in a shared directory (e.g. /private/var/
1417
+ # mobile/Media) or within an accessible directory inside the app's filesystem (e.
1418
+ # g. /Documents) by specifying the bundle id.
1419
+ # Corresponds to the JSON property `pullDirectories`
1420
+ # @return [Array<Google::Apis::TestingV1::IosDeviceFile>]
1421
+ attr_accessor :pull_directories
1422
+
1423
+ # List of files to push to the device before starting the test.
1424
+ # Corresponds to the JSON property `pushFiles`
1425
+ # @return [Array<Google::Apis::TestingV1::IosDeviceFile>]
1426
+ attr_accessor :push_files
1427
+
1428
+ def initialize(**args)
1429
+ update!(**args)
1430
+ end
1431
+
1432
+ # Update properties of this object
1433
+ def update!(**args)
1434
+ @additional_ipas = args[:additional_ipas] if args.key?(:additional_ipas)
1435
+ @network_profile = args[:network_profile] if args.key?(:network_profile)
1436
+ @pull_directories = args[:pull_directories] if args.key?(:pull_directories)
1437
+ @push_files = args[:push_files] if args.key?(:push_files)
1438
+ end
1439
+ end
1440
+
1441
+ # An iOS version.
1442
+ class IosVersion
1443
+ include Google::Apis::Core::Hashable
1444
+
1445
+ # An opaque id for this iOS version. Use this id to invoke the
1446
+ # TestExecutionService.
1447
+ # Corresponds to the JSON property `id`
1448
+ # @return [String]
1449
+ attr_accessor :id
1450
+
1451
+ # An integer representing the major iOS version. Examples: "8", "9".
1452
+ # Corresponds to the JSON property `majorVersion`
1453
+ # @return [Fixnum]
1454
+ attr_accessor :major_version
1455
+
1456
+ # An integer representing the minor iOS version. Examples: "1", "2".
1457
+ # Corresponds to the JSON property `minorVersion`
1458
+ # @return [Fixnum]
1459
+ attr_accessor :minor_version
1460
+
1461
+ # The available Xcode versions for this version.
1462
+ # Corresponds to the JSON property `supportedXcodeVersionIds`
1463
+ # @return [Array<String>]
1464
+ attr_accessor :supported_xcode_version_ids
1465
+
1466
+ # Tags for this dimension. Examples: "default", "preview", "deprecated".
1467
+ # Corresponds to the JSON property `tags`
1468
+ # @return [Array<String>]
1469
+ attr_accessor :tags
1470
+
1471
+ def initialize(**args)
1472
+ update!(**args)
1473
+ end
1474
+
1475
+ # Update properties of this object
1476
+ def update!(**args)
1477
+ @id = args[:id] if args.key?(:id)
1478
+ @major_version = args[:major_version] if args.key?(:major_version)
1479
+ @minor_version = args[:minor_version] if args.key?(:minor_version)
1480
+ @supported_xcode_version_ids = args[:supported_xcode_version_ids] if args.key?(:supported_xcode_version_ids)
1481
+ @tags = args[:tags] if args.key?(:tags)
1482
+ end
1483
+ end
1484
+
1485
+ # A test of an iOS application that uses the XCTest framework. Xcode supports
1486
+ # the option to "build for testing", which generates an .xctestrun file that
1487
+ # contains a test specification (arguments, test methods, etc). This test type
1488
+ # accepts a zip file containing the .xctestrun file and the corresponding
1489
+ # contents of the Build/Products directory that contains all the binaries needed
1490
+ # to run the tests.
1491
+ class IosXcTest
1492
+ include Google::Apis::Core::Hashable
1493
+
1494
+ # Output only. The bundle id for the application under test.
1495
+ # Corresponds to the JSON property `appBundleId`
1496
+ # @return [String]
1497
+ attr_accessor :app_bundle_id
1498
+
1499
+ # The option to test special app entitlements. Setting this would re-sign the
1500
+ # app having special entitlements with an explicit application-identifier.
1501
+ # Currently supports testing aps-environment entitlement.
1502
+ # Corresponds to the JSON property `testSpecialEntitlements`
1503
+ # @return [Boolean]
1504
+ attr_accessor :test_special_entitlements
1505
+ alias_method :test_special_entitlements?, :test_special_entitlements
1506
+
1507
+ # A reference to a file, used for user inputs.
1508
+ # Corresponds to the JSON property `testsZip`
1509
+ # @return [Google::Apis::TestingV1::FileReference]
1510
+ attr_accessor :tests_zip
1511
+
1512
+ # The Xcode version that should be used for the test. Use the
1513
+ # TestEnvironmentDiscoveryService to get supported options. Defaults to the
1514
+ # latest Xcode version Firebase Test Lab supports.
1515
+ # Corresponds to the JSON property `xcodeVersion`
1516
+ # @return [String]
1517
+ attr_accessor :xcode_version
1518
+
1519
+ # A reference to a file, used for user inputs.
1520
+ # Corresponds to the JSON property `xctestrun`
1521
+ # @return [Google::Apis::TestingV1::FileReference]
1522
+ attr_accessor :xctestrun
1523
+
1524
+ def initialize(**args)
1525
+ update!(**args)
1526
+ end
1527
+
1528
+ # Update properties of this object
1529
+ def update!(**args)
1530
+ @app_bundle_id = args[:app_bundle_id] if args.key?(:app_bundle_id)
1531
+ @test_special_entitlements = args[:test_special_entitlements] if args.key?(:test_special_entitlements)
1532
+ @tests_zip = args[:tests_zip] if args.key?(:tests_zip)
1533
+ @xcode_version = args[:xcode_version] if args.key?(:xcode_version)
1534
+ @xctestrun = args[:xctestrun] if args.key?(:xctestrun)
1535
+ end
1536
+ end
1537
+
1538
+ # Specifies an intent that starts the main launcher activity.
1539
+ class LauncherActivityIntent
1540
+ include Google::Apis::Core::Hashable
1541
+
1542
+ def initialize(**args)
1543
+ update!(**args)
1544
+ end
1545
+
1546
+ # Update properties of this object
1547
+ def update!(**args)
1548
+ end
1549
+ end
1550
+
1551
+ # A location/region designation for language.
1552
+ class Locale
1553
+ include Google::Apis::Core::Hashable
1554
+
1555
+ # The id for this locale. Example: "en_US".
1556
+ # Corresponds to the JSON property `id`
1557
+ # @return [String]
1558
+ attr_accessor :id
1559
+
1560
+ # A human-friendly name for this language/locale. Example: "English".
1561
+ # Corresponds to the JSON property `name`
1562
+ # @return [String]
1563
+ attr_accessor :name
1564
+
1565
+ # A human-friendly string representing the region for this locale. Example: "
1566
+ # United States". Not present for every locale.
1567
+ # Corresponds to the JSON property `region`
1568
+ # @return [String]
1569
+ attr_accessor :region
1570
+
1571
+ # Tags for this dimension. Example: "default".
1572
+ # Corresponds to the JSON property `tags`
1573
+ # @return [Array<String>]
1574
+ attr_accessor :tags
1575
+
1576
+ def initialize(**args)
1577
+ update!(**args)
1578
+ end
1579
+
1580
+ # Update properties of this object
1581
+ def update!(**args)
1582
+ @id = args[:id] if args.key?(:id)
1583
+ @name = args[:name] if args.key?(:name)
1584
+ @region = args[:region] if args.key?(:region)
1585
+ @tags = args[:tags] if args.key?(:tags)
1586
+ end
1587
+ end
1588
+
1589
+ # Shards test cases into the specified groups of packages, classes, and/or
1590
+ # methods. With manual sharding enabled, specifying test targets via
1591
+ # environment_variables or in InstrumentationTest is invalid.
1592
+ class ManualSharding
1593
+ include Google::Apis::Core::Hashable
1594
+
1595
+ # Required. Group of packages, classes, and/or test methods to be run for each
1596
+ # shard. When any physical devices are selected, the number of
1597
+ # test_targets_for_shard must be >= 1 and <= 50. When no physical devices are
1598
+ # selected, the number must be >= 1 and <= 500.
1599
+ # Corresponds to the JSON property `testTargetsForShard`
1600
+ # @return [Array<Google::Apis::TestingV1::TestTargetsForShard>]
1601
+ attr_accessor :test_targets_for_shard
1602
+
1603
+ def initialize(**args)
1604
+ update!(**args)
1605
+ end
1606
+
1607
+ # Update properties of this object
1608
+ def update!(**args)
1609
+ @test_targets_for_shard = args[:test_targets_for_shard] if args.key?(:test_targets_for_shard)
1610
+ end
1611
+ end
1612
+
1613
+ #
1614
+ class NetworkConfiguration
1615
+ include Google::Apis::Core::Hashable
1616
+
1617
+ # Network emulation parameters.
1618
+ # Corresponds to the JSON property `downRule`
1619
+ # @return [Google::Apis::TestingV1::TrafficRule]
1620
+ attr_accessor :down_rule
1621
+
1622
+ # The unique opaque id for this network traffic configuration.
1623
+ # Corresponds to the JSON property `id`
1624
+ # @return [String]
1625
+ attr_accessor :id
1626
+
1627
+ # Network emulation parameters.
1628
+ # Corresponds to the JSON property `upRule`
1629
+ # @return [Google::Apis::TestingV1::TrafficRule]
1630
+ attr_accessor :up_rule
1631
+
1632
+ def initialize(**args)
1633
+ update!(**args)
1634
+ end
1635
+
1636
+ # Update properties of this object
1637
+ def update!(**args)
1638
+ @down_rule = args[:down_rule] if args.key?(:down_rule)
1639
+ @id = args[:id] if args.key?(:id)
1640
+ @up_rule = args[:up_rule] if args.key?(:up_rule)
1641
+ end
1642
+ end
1643
+
1644
+ #
1645
+ class NetworkConfigurationCatalog
1646
+ include Google::Apis::Core::Hashable
1647
+
1648
+ #
1649
+ # Corresponds to the JSON property `configurations`
1650
+ # @return [Array<Google::Apis::TestingV1::NetworkConfiguration>]
1651
+ attr_accessor :configurations
1652
+
1653
+ def initialize(**args)
1654
+ update!(**args)
1655
+ end
1656
+
1657
+ # Update properties of this object
1658
+ def update!(**args)
1659
+ @configurations = args[:configurations] if args.key?(:configurations)
1660
+ end
1661
+ end
1662
+
1663
+ # An opaque binary blob file to install on the device before the test starts.
1664
+ class ObbFile
1665
+ include Google::Apis::Core::Hashable
1666
+
1667
+ # A reference to a file, used for user inputs.
1668
+ # Corresponds to the JSON property `obb`
1669
+ # @return [Google::Apis::TestingV1::FileReference]
1670
+ attr_accessor :obb
1671
+
1672
+ # Required. OBB file name which must conform to the format as specified by
1673
+ # Android e.g. [main|patch].0300110.com.example.android.obb which will be
1674
+ # installed into \/Android/obb/\/ on the device.
1675
+ # Corresponds to the JSON property `obbFileName`
1676
+ # @return [String]
1677
+ attr_accessor :obb_file_name
1678
+
1679
+ def initialize(**args)
1680
+ update!(**args)
1681
+ end
1682
+
1683
+ # Update properties of this object
1684
+ def update!(**args)
1685
+ @obb = args[:obb] if args.key?(:obb)
1686
+ @obb_file_name = args[:obb_file_name] if args.key?(:obb_file_name)
1687
+ end
1688
+ end
1689
+
1690
+ # Screen orientation of the device.
1691
+ class Orientation
1692
+ include Google::Apis::Core::Hashable
1693
+
1694
+ # The id for this orientation. Example: "portrait".
1695
+ # Corresponds to the JSON property `id`
1696
+ # @return [String]
1697
+ attr_accessor :id
1698
+
1699
+ # A human-friendly name for this orientation. Example: "portrait".
1700
+ # Corresponds to the JSON property `name`
1701
+ # @return [String]
1702
+ attr_accessor :name
1703
+
1704
+ # Tags for this dimension. Example: "default".
1705
+ # Corresponds to the JSON property `tags`
1706
+ # @return [Array<String>]
1707
+ attr_accessor :tags
1708
+
1709
+ def initialize(**args)
1710
+ update!(**args)
1711
+ end
1712
+
1713
+ # Update properties of this object
1714
+ def update!(**args)
1715
+ @id = args[:id] if args.key?(:id)
1716
+ @name = args[:name] if args.key?(:name)
1717
+ @tags = args[:tags] if args.key?(:tags)
1718
+ end
1719
+ end
1720
+
1721
+ # The currently provided software environment on the devices under test.
1722
+ class ProvidedSoftwareCatalog
1723
+ include Google::Apis::Core::Hashable
1724
+
1725
+ # A string representing the current version of Android Test Orchestrator that is
1726
+ # provided by TestExecutionService. Example: "1.0.2 beta".
1727
+ # Corresponds to the JSON property `orchestratorVersion`
1728
+ # @return [String]
1729
+ attr_accessor :orchestrator_version
1730
+
1731
+ def initialize(**args)
1732
+ update!(**args)
1733
+ end
1734
+
1735
+ # Update properties of this object
1736
+ def update!(**args)
1737
+ @orchestrator_version = args[:orchestrator_version] if args.key?(:orchestrator_version)
1738
+ end
1739
+ end
1740
+
1741
+ # A file or directory to install on the device before the test starts.
1742
+ class RegularFile
1743
+ include Google::Apis::Core::Hashable
1744
+
1745
+ # A reference to a file, used for user inputs.
1746
+ # Corresponds to the JSON property `content`
1747
+ # @return [Google::Apis::TestingV1::FileReference]
1748
+ attr_accessor :content
1749
+
1750
+ # Required. Where to put the content on the device. Must be an absolute,
1751
+ # allowlisted path. If the file exists, it will be replaced. The following
1752
+ # device-side directories and any of their subdirectories are allowlisted: $`
1753
+ # EXTERNAL_STORAGE`, /sdcard, or /storage $`ANDROID_DATA`/local/tmp, or /data/
1754
+ # local/tmp Specifying a path outside of these directory trees is invalid. The
1755
+ # paths /sdcard and /data will be made available and treated as implicit path
1756
+ # substitutions. E.g. if /sdcard on a particular device does not map to external
1757
+ # storage, the system will replace it with the external storage path prefix for
1758
+ # that device and copy the file there. It is strongly advised to use the
1759
+ # Environment API in app and test code to access files on the device in a
1760
+ # portable way.
1761
+ # Corresponds to the JSON property `devicePath`
1762
+ # @return [String]
1763
+ attr_accessor :device_path
1764
+
1765
+ def initialize(**args)
1766
+ update!(**args)
1767
+ end
1768
+
1769
+ # Update properties of this object
1770
+ def update!(**args)
1771
+ @content = args[:content] if args.key?(:content)
1772
+ @device_path = args[:device_path] if args.key?(:device_path)
1773
+ end
1774
+ end
1775
+
1776
+ # Locations where the results of running the test are stored.
1777
+ class ResultStorage
1778
+ include Google::Apis::Core::Hashable
1779
+
1780
+ # A storage location within Google cloud storage (GCS).
1781
+ # Corresponds to the JSON property `googleCloudStorage`
1782
+ # @return [Google::Apis::TestingV1::GoogleCloudStorage]
1783
+ attr_accessor :google_cloud_storage
1784
+
1785
+ # Output only. URL to the results in the Firebase Web Console.
1786
+ # Corresponds to the JSON property `resultsUrl`
1787
+ # @return [String]
1788
+ attr_accessor :results_url
1789
+
1790
+ # Represents a tool results execution resource. This has the results of a
1791
+ # TestMatrix.
1792
+ # Corresponds to the JSON property `toolResultsExecution`
1793
+ # @return [Google::Apis::TestingV1::ToolResultsExecution]
1794
+ attr_accessor :tool_results_execution
1795
+
1796
+ # Represents a tool results history resource.
1797
+ # Corresponds to the JSON property `toolResultsHistory`
1798
+ # @return [Google::Apis::TestingV1::ToolResultsHistory]
1799
+ attr_accessor :tool_results_history
1800
+
1801
+ def initialize(**args)
1802
+ update!(**args)
1803
+ end
1804
+
1805
+ # Update properties of this object
1806
+ def update!(**args)
1807
+ @google_cloud_storage = args[:google_cloud_storage] if args.key?(:google_cloud_storage)
1808
+ @results_url = args[:results_url] if args.key?(:results_url)
1809
+ @tool_results_execution = args[:tool_results_execution] if args.key?(:tool_results_execution)
1810
+ @tool_results_history = args[:tool_results_history] if args.key?(:tool_results_history)
1811
+ end
1812
+ end
1813
+
1814
+ # Directs Robo to interact with a specific UI element if it is encountered
1815
+ # during the crawl. Currently, Robo can perform text entry or element click.
1816
+ class RoboDirective
1817
+ include Google::Apis::Core::Hashable
1818
+
1819
+ # Required. The type of action that Robo should perform on the specified element.
1820
+ # Corresponds to the JSON property `actionType`
1821
+ # @return [String]
1822
+ attr_accessor :action_type
1823
+
1824
+ # The text that Robo is directed to set. If left empty, the directive will be
1825
+ # treated as a CLICK on the element matching the resource_name.
1826
+ # Corresponds to the JSON property `inputText`
1827
+ # @return [String]
1828
+ attr_accessor :input_text
1829
+
1830
+ # Required. The android resource name of the target UI element. For example, in
1831
+ # Java: R.string.foo in xml: @string/foo Only the "foo" part is needed.
1832
+ # Reference doc: https://developer.android.com/guide/topics/resources/accessing-
1833
+ # resources.html
1834
+ # Corresponds to the JSON property `resourceName`
1835
+ # @return [String]
1836
+ attr_accessor :resource_name
1837
+
1838
+ def initialize(**args)
1839
+ update!(**args)
1840
+ end
1841
+
1842
+ # Update properties of this object
1843
+ def update!(**args)
1844
+ @action_type = args[:action_type] if args.key?(:action_type)
1845
+ @input_text = args[:input_text] if args.key?(:input_text)
1846
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
1847
+ end
1848
+ end
1849
+
1850
+ # Message for specifying the start activities to crawl.
1851
+ class RoboStartingIntent
1852
+ include Google::Apis::Core::Hashable
1853
+
1854
+ # Specifies an intent that starts the main launcher activity.
1855
+ # Corresponds to the JSON property `launcherActivity`
1856
+ # @return [Google::Apis::TestingV1::LauncherActivityIntent]
1857
+ attr_accessor :launcher_activity
1858
+
1859
+ # A starting intent specified by an action, uri, and categories.
1860
+ # Corresponds to the JSON property `startActivity`
1861
+ # @return [Google::Apis::TestingV1::StartActivityIntent]
1862
+ attr_accessor :start_activity
1863
+
1864
+ # Timeout in seconds for each intent.
1865
+ # Corresponds to the JSON property `timeout`
1866
+ # @return [String]
1867
+ attr_accessor :timeout
1868
+
1869
+ def initialize(**args)
1870
+ update!(**args)
1871
+ end
1872
+
1873
+ # Update properties of this object
1874
+ def update!(**args)
1875
+ @launcher_activity = args[:launcher_activity] if args.key?(:launcher_activity)
1876
+ @start_activity = args[:start_activity] if args.key?(:start_activity)
1877
+ @timeout = args[:timeout] if args.key?(:timeout)
1878
+ end
1879
+ end
1880
+
1881
+ # Output only. Details about the shard.
1882
+ class Shard
1883
+ include Google::Apis::Core::Hashable
1884
+
1885
+ # Output only. The total number of shards.
1886
+ # Corresponds to the JSON property `numShards`
1887
+ # @return [Fixnum]
1888
+ attr_accessor :num_shards
1889
+
1890
+ # Output only. The index of the shard among all the shards.
1891
+ # Corresponds to the JSON property `shardIndex`
1892
+ # @return [Fixnum]
1893
+ attr_accessor :shard_index
1894
+
1895
+ # Test targets for a shard.
1896
+ # Corresponds to the JSON property `testTargetsForShard`
1897
+ # @return [Google::Apis::TestingV1::TestTargetsForShard]
1898
+ attr_accessor :test_targets_for_shard
1899
+
1900
+ def initialize(**args)
1901
+ update!(**args)
1902
+ end
1903
+
1904
+ # Update properties of this object
1905
+ def update!(**args)
1906
+ @num_shards = args[:num_shards] if args.key?(:num_shards)
1907
+ @shard_index = args[:shard_index] if args.key?(:shard_index)
1908
+ @test_targets_for_shard = args[:test_targets_for_shard] if args.key?(:test_targets_for_shard)
1909
+ end
1910
+ end
1911
+
1912
+ # Options for enabling sharding.
1913
+ class ShardingOption
1914
+ include Google::Apis::Core::Hashable
1915
+
1916
+ # Shards test cases into the specified groups of packages, classes, and/or
1917
+ # methods. With manual sharding enabled, specifying test targets via
1918
+ # environment_variables or in InstrumentationTest is invalid.
1919
+ # Corresponds to the JSON property `manualSharding`
1920
+ # @return [Google::Apis::TestingV1::ManualSharding]
1921
+ attr_accessor :manual_sharding
1922
+
1923
+ # Uniformly shards test cases given a total number of shards. For
1924
+ # Instrumentation test, it will be translated to "-e numShard" "-e shardIndex"
1925
+ # AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these
1926
+ # sharding arguments via environment_variables is invalid.
1927
+ # Corresponds to the JSON property `uniformSharding`
1928
+ # @return [Google::Apis::TestingV1::UniformSharding]
1929
+ attr_accessor :uniform_sharding
1930
+
1931
+ def initialize(**args)
1932
+ update!(**args)
1933
+ end
1934
+
1935
+ # Update properties of this object
1936
+ def update!(**args)
1937
+ @manual_sharding = args[:manual_sharding] if args.key?(:manual_sharding)
1938
+ @uniform_sharding = args[:uniform_sharding] if args.key?(:uniform_sharding)
1939
+ end
1940
+ end
1941
+
1942
+ # A starting intent specified by an action, uri, and categories.
1943
+ class StartActivityIntent
1944
+ include Google::Apis::Core::Hashable
1945
+
1946
+ # Action name. Required for START_ACTIVITY.
1947
+ # Corresponds to the JSON property `action`
1948
+ # @return [String]
1949
+ attr_accessor :action
1950
+
1951
+ # Intent categories to set on the intent.
1952
+ # Corresponds to the JSON property `categories`
1953
+ # @return [Array<String>]
1954
+ attr_accessor :categories
1955
+
1956
+ # URI for the action.
1957
+ # Corresponds to the JSON property `uri`
1958
+ # @return [String]
1959
+ attr_accessor :uri
1960
+
1961
+ def initialize(**args)
1962
+ update!(**args)
1963
+ end
1964
+
1965
+ # Update properties of this object
1966
+ def update!(**args)
1967
+ @action = args[:action] if args.key?(:action)
1968
+ @categories = args[:categories] if args.key?(:categories)
1969
+ @uri = args[:uri] if args.key?(:uri)
1970
+ end
1971
+ end
1972
+
1973
+ #
1974
+ class SystraceSetup
1975
+ include Google::Apis::Core::Hashable
1976
+
1977
+ # Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables
1978
+ # systrace.
1979
+ # Corresponds to the JSON property `durationSeconds`
1980
+ # @return [Fixnum]
1981
+ attr_accessor :duration_seconds
1982
+
1983
+ def initialize(**args)
1984
+ update!(**args)
1985
+ end
1986
+
1987
+ # Update properties of this object
1988
+ def update!(**args)
1989
+ @duration_seconds = args[:duration_seconds] if args.key?(:duration_seconds)
1990
+ end
1991
+ end
1992
+
1993
+ # Additional details about the progress of the running test.
1994
+ class TestDetails
1995
+ include Google::Apis::Core::Hashable
1996
+
1997
+ # Output only. If the TestState is ERROR, then this string will contain human-
1998
+ # readable details about the error.
1999
+ # Corresponds to the JSON property `errorMessage`
2000
+ # @return [String]
2001
+ attr_accessor :error_message
2002
+
2003
+ # Output only. Human-readable, detailed descriptions of the test's progress. For
2004
+ # example: "Provisioning a device", "Starting Test". During the course of
2005
+ # execution new data may be appended to the end of progress_messages.
2006
+ # Corresponds to the JSON property `progressMessages`
2007
+ # @return [Array<String>]
2008
+ attr_accessor :progress_messages
2009
+
2010
+ def initialize(**args)
2011
+ update!(**args)
2012
+ end
2013
+
2014
+ # Update properties of this object
2015
+ def update!(**args)
2016
+ @error_message = args[:error_message] if args.key?(:error_message)
2017
+ @progress_messages = args[:progress_messages] if args.key?(:progress_messages)
2018
+ end
2019
+ end
2020
+
2021
+ # A description of a test environment.
2022
+ class TestEnvironmentCatalog
2023
+ include Google::Apis::Core::Hashable
2024
+
2025
+ # The currently supported Android devices.
2026
+ # Corresponds to the JSON property `androidDeviceCatalog`
2027
+ # @return [Google::Apis::TestingV1::AndroidDeviceCatalog]
2028
+ attr_accessor :android_device_catalog
2029
+
2030
+ # List of IP blocks used by the Firebase Test Lab
2031
+ # Corresponds to the JSON property `deviceIpBlockCatalog`
2032
+ # @return [Google::Apis::TestingV1::DeviceIpBlockCatalog]
2033
+ attr_accessor :device_ip_block_catalog
2034
+
2035
+ # The currently supported iOS devices.
2036
+ # Corresponds to the JSON property `iosDeviceCatalog`
2037
+ # @return [Google::Apis::TestingV1::IosDeviceCatalog]
2038
+ attr_accessor :ios_device_catalog
2039
+
2040
+ # Supported network configurations.
2041
+ # Corresponds to the JSON property `networkConfigurationCatalog`
2042
+ # @return [Google::Apis::TestingV1::NetworkConfigurationCatalog]
2043
+ attr_accessor :network_configuration_catalog
2044
+
2045
+ # The currently provided software environment on the devices under test.
2046
+ # Corresponds to the JSON property `softwareCatalog`
2047
+ # @return [Google::Apis::TestingV1::ProvidedSoftwareCatalog]
2048
+ attr_accessor :software_catalog
2049
+
2050
+ def initialize(**args)
2051
+ update!(**args)
2052
+ end
2053
+
2054
+ # Update properties of this object
2055
+ def update!(**args)
2056
+ @android_device_catalog = args[:android_device_catalog] if args.key?(:android_device_catalog)
2057
+ @device_ip_block_catalog = args[:device_ip_block_catalog] if args.key?(:device_ip_block_catalog)
2058
+ @ios_device_catalog = args[:ios_device_catalog] if args.key?(:ios_device_catalog)
2059
+ @network_configuration_catalog = args[:network_configuration_catalog] if args.key?(:network_configuration_catalog)
2060
+ @software_catalog = args[:software_catalog] if args.key?(:software_catalog)
2061
+ end
2062
+ end
2063
+
2064
+ # A single test executed in a single environment.
2065
+ class TestExecution
2066
+ include Google::Apis::Core::Hashable
2067
+
2068
+ # The environment in which the test is run.
2069
+ # Corresponds to the JSON property `environment`
2070
+ # @return [Google::Apis::TestingV1::Environment]
2071
+ attr_accessor :environment
2072
+
2073
+ # Output only. Unique id set by the service.
2074
+ # Corresponds to the JSON property `id`
2075
+ # @return [String]
2076
+ attr_accessor :id
2077
+
2078
+ # Output only. Id of the containing TestMatrix.
2079
+ # Corresponds to the JSON property `matrixId`
2080
+ # @return [String]
2081
+ attr_accessor :matrix_id
2082
+
2083
+ # Output only. The cloud project that owns the test execution.
2084
+ # Corresponds to the JSON property `projectId`
2085
+ # @return [String]
2086
+ attr_accessor :project_id
2087
+
2088
+ # Output only. Details about the shard.
2089
+ # Corresponds to the JSON property `shard`
2090
+ # @return [Google::Apis::TestingV1::Shard]
2091
+ attr_accessor :shard
2092
+
2093
+ # Output only. Indicates the current progress of the test execution (e.g.,
2094
+ # FINISHED).
2095
+ # Corresponds to the JSON property `state`
2096
+ # @return [String]
2097
+ attr_accessor :state
2098
+
2099
+ # Additional details about the progress of the running test.
2100
+ # Corresponds to the JSON property `testDetails`
2101
+ # @return [Google::Apis::TestingV1::TestDetails]
2102
+ attr_accessor :test_details
2103
+
2104
+ # A description of how to run the test.
2105
+ # Corresponds to the JSON property `testSpecification`
2106
+ # @return [Google::Apis::TestingV1::TestSpecification]
2107
+ attr_accessor :test_specification
2108
+
2109
+ # Output only. The time this test execution was initially created.
2110
+ # Corresponds to the JSON property `timestamp`
2111
+ # @return [String]
2112
+ attr_accessor :timestamp
2113
+
2114
+ # Represents a tool results step resource. This has the results of a
2115
+ # TestExecution.
2116
+ # Corresponds to the JSON property `toolResultsStep`
2117
+ # @return [Google::Apis::TestingV1::ToolResultsStep]
2118
+ attr_accessor :tool_results_step
2119
+
2120
+ def initialize(**args)
2121
+ update!(**args)
2122
+ end
2123
+
2124
+ # Update properties of this object
2125
+ def update!(**args)
2126
+ @environment = args[:environment] if args.key?(:environment)
2127
+ @id = args[:id] if args.key?(:id)
2128
+ @matrix_id = args[:matrix_id] if args.key?(:matrix_id)
2129
+ @project_id = args[:project_id] if args.key?(:project_id)
2130
+ @shard = args[:shard] if args.key?(:shard)
2131
+ @state = args[:state] if args.key?(:state)
2132
+ @test_details = args[:test_details] if args.key?(:test_details)
2133
+ @test_specification = args[:test_specification] if args.key?(:test_specification)
2134
+ @timestamp = args[:timestamp] if args.key?(:timestamp)
2135
+ @tool_results_step = args[:tool_results_step] if args.key?(:tool_results_step)
2136
+ end
2137
+ end
2138
+
2139
+ # TestMatrix captures all details about a test. It contains the environment
2140
+ # configuration, test specification, test executions and overall state and
2141
+ # outcome.
2142
+ class TestMatrix
2143
+ include Google::Apis::Core::Hashable
2144
+
2145
+ # Information about the client which invoked the test.
2146
+ # Corresponds to the JSON property `clientInfo`
2147
+ # @return [Google::Apis::TestingV1::ClientInfo]
2148
+ attr_accessor :client_info
2149
+
2150
+ # The matrix of environments in which the test is to be executed.
2151
+ # Corresponds to the JSON property `environmentMatrix`
2152
+ # @return [Google::Apis::TestingV1::EnvironmentMatrix]
2153
+ attr_accessor :environment_matrix
2154
+
2155
+ # If true, only a single attempt at most will be made to run each execution/
2156
+ # shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more
2157
+ # attempts are made if a potential infrastructure issue is detected. This
2158
+ # feature is for latency sensitive workloads. The incidence of execution
2159
+ # failures may be significantly greater for fail-fast matrices and support is
2160
+ # more limited because of that expectation.
2161
+ # Corresponds to the JSON property `failFast`
2162
+ # @return [Boolean]
2163
+ attr_accessor :fail_fast
2164
+ alias_method :fail_fast?, :fail_fast
2165
+
2166
+ # The number of times a TestExecution should be re-attempted if one or more of
2167
+ # its test cases fail for any reason. The maximum number of reruns allowed is 10.
2168
+ # Default is 0, which implies no reruns.
2169
+ # Corresponds to the JSON property `flakyTestAttempts`
2170
+ # @return [Fixnum]
2171
+ attr_accessor :flaky_test_attempts
2172
+
2173
+ # Output only. Describes why the matrix is considered invalid. Only useful for
2174
+ # matrices in the INVALID state.
2175
+ # Corresponds to the JSON property `invalidMatrixDetails`
2176
+ # @return [String]
2177
+ attr_accessor :invalid_matrix_details
2178
+
2179
+ # Output Only. The overall outcome of the test. Only set when the test matrix
2180
+ # state is FINISHED.
2181
+ # Corresponds to the JSON property `outcomeSummary`
2182
+ # @return [String]
2183
+ attr_accessor :outcome_summary
2184
+
2185
+ # The cloud project that owns the test matrix.
2186
+ # Corresponds to the JSON property `projectId`
2187
+ # @return [String]
2188
+ attr_accessor :project_id
2189
+
2190
+ # Locations where the results of running the test are stored.
2191
+ # Corresponds to the JSON property `resultStorage`
2192
+ # @return [Google::Apis::TestingV1::ResultStorage]
2193
+ attr_accessor :result_storage
2194
+
2195
+ # Output only. Indicates the current progress of the test matrix.
2196
+ # Corresponds to the JSON property `state`
2197
+ # @return [String]
2198
+ attr_accessor :state
2199
+
2200
+ # Output only. The list of test executions that the service creates for this
2201
+ # matrix.
2202
+ # Corresponds to the JSON property `testExecutions`
2203
+ # @return [Array<Google::Apis::TestingV1::TestExecution>]
2204
+ attr_accessor :test_executions
2205
+
2206
+ # Output only. Unique id set by the service.
2207
+ # Corresponds to the JSON property `testMatrixId`
2208
+ # @return [String]
2209
+ attr_accessor :test_matrix_id
2210
+
2211
+ # A description of how to run the test.
2212
+ # Corresponds to the JSON property `testSpecification`
2213
+ # @return [Google::Apis::TestingV1::TestSpecification]
2214
+ attr_accessor :test_specification
2215
+
2216
+ # Output only. The time this test matrix was initially created.
2217
+ # Corresponds to the JSON property `timestamp`
2218
+ # @return [String]
2219
+ attr_accessor :timestamp
2220
+
2221
+ def initialize(**args)
2222
+ update!(**args)
2223
+ end
2224
+
2225
+ # Update properties of this object
2226
+ def update!(**args)
2227
+ @client_info = args[:client_info] if args.key?(:client_info)
2228
+ @environment_matrix = args[:environment_matrix] if args.key?(:environment_matrix)
2229
+ @fail_fast = args[:fail_fast] if args.key?(:fail_fast)
2230
+ @flaky_test_attempts = args[:flaky_test_attempts] if args.key?(:flaky_test_attempts)
2231
+ @invalid_matrix_details = args[:invalid_matrix_details] if args.key?(:invalid_matrix_details)
2232
+ @outcome_summary = args[:outcome_summary] if args.key?(:outcome_summary)
2233
+ @project_id = args[:project_id] if args.key?(:project_id)
2234
+ @result_storage = args[:result_storage] if args.key?(:result_storage)
2235
+ @state = args[:state] if args.key?(:state)
2236
+ @test_executions = args[:test_executions] if args.key?(:test_executions)
2237
+ @test_matrix_id = args[:test_matrix_id] if args.key?(:test_matrix_id)
2238
+ @test_specification = args[:test_specification] if args.key?(:test_specification)
2239
+ @timestamp = args[:timestamp] if args.key?(:timestamp)
2240
+ end
2241
+ end
2242
+
2243
+ # A description of how to set up the Android device prior to running the test.
2244
+ class TestSetup
2245
+ include Google::Apis::Core::Hashable
2246
+
2247
+ # Identifies an account and how to log into it.
2248
+ # Corresponds to the JSON property `account`
2249
+ # @return [Google::Apis::TestingV1::Account]
2250
+ attr_accessor :account
2251
+
2252
+ # APKs to install in addition to those being directly tested. Currently capped
2253
+ # at 100.
2254
+ # Corresponds to the JSON property `additionalApks`
2255
+ # @return [Array<Google::Apis::TestingV1::Apk>]
2256
+ attr_accessor :additional_apks
2257
+
2258
+ # List of directories on the device to upload to GCS at the end of the test;
2259
+ # they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path
2260
+ # names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /
2261
+ # sdcard and /data will be made available and treated as implicit path
2262
+ # substitutions. E.g. if /sdcard on a particular device does not map to external
2263
+ # storage, the system will replace it with the external storage path prefix for
2264
+ # that device.
2265
+ # Corresponds to the JSON property `directoriesToPull`
2266
+ # @return [Array<String>]
2267
+ attr_accessor :directories_to_pull
2268
+
2269
+ # Whether to prevent all runtime permissions to be granted at app install
2270
+ # Corresponds to the JSON property `dontAutograntPermissions`
2271
+ # @return [Boolean]
2272
+ attr_accessor :dont_autogrant_permissions
2273
+ alias_method :dont_autogrant_permissions?, :dont_autogrant_permissions
2274
+
2275
+ # Environment variables to set for the test (only applicable for instrumentation
2276
+ # tests).
2277
+ # Corresponds to the JSON property `environmentVariables`
2278
+ # @return [Array<Google::Apis::TestingV1::EnvironmentVariable>]
2279
+ attr_accessor :environment_variables
2280
+
2281
+ # List of files to push to the device before starting the test.
2282
+ # Corresponds to the JSON property `filesToPush`
2283
+ # @return [Array<Google::Apis::TestingV1::DeviceFile>]
2284
+ attr_accessor :files_to_push
2285
+
2286
+ # The network traffic profile used for running the test. Available network
2287
+ # profiles can be queried by using the NETWORK_CONFIGURATION environment type
2288
+ # when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
2289
+ # Corresponds to the JSON property `networkProfile`
2290
+ # @return [String]
2291
+ attr_accessor :network_profile
2292
+
2293
+ # Systrace configuration for the run. If set a systrace will be taken, starting
2294
+ # on test start and lasting for the configured duration. The systrace file thus
2295
+ # obtained is put in the results bucket together with the other artifacts from
2296
+ # the run.
2297
+ # Corresponds to the JSON property `systrace`
2298
+ # @return [Google::Apis::TestingV1::SystraceSetup]
2299
+ attr_accessor :systrace
2300
+
2301
+ def initialize(**args)
2302
+ update!(**args)
2303
+ end
2304
+
2305
+ # Update properties of this object
2306
+ def update!(**args)
2307
+ @account = args[:account] if args.key?(:account)
2308
+ @additional_apks = args[:additional_apks] if args.key?(:additional_apks)
2309
+ @directories_to_pull = args[:directories_to_pull] if args.key?(:directories_to_pull)
2310
+ @dont_autogrant_permissions = args[:dont_autogrant_permissions] if args.key?(:dont_autogrant_permissions)
2311
+ @environment_variables = args[:environment_variables] if args.key?(:environment_variables)
2312
+ @files_to_push = args[:files_to_push] if args.key?(:files_to_push)
2313
+ @network_profile = args[:network_profile] if args.key?(:network_profile)
2314
+ @systrace = args[:systrace] if args.key?(:systrace)
2315
+ end
2316
+ end
2317
+
2318
+ # A description of how to run the test.
2319
+ class TestSpecification
2320
+ include Google::Apis::Core::Hashable
2321
+
2322
+ # A test of an Android application that can control an Android component
2323
+ # independently of its normal lifecycle. Android instrumentation tests run an
2324
+ # application APK and test APK inside the same process on a virtual or physical
2325
+ # AndroidDevice. They also specify a test runner class, such as com.google.
2326
+ # GoogleTestRunner, which can vary on the specific instrumentation framework
2327
+ # chosen. See for more information on types of Android tests.
2328
+ # Corresponds to the JSON property `androidInstrumentationTest`
2329
+ # @return [Google::Apis::TestingV1::AndroidInstrumentationTest]
2330
+ attr_accessor :android_instrumentation_test
2331
+
2332
+ # A test of an android application that explores the application on a virtual or
2333
+ # physical Android Device, finding culprits and crashes as it goes. Next tag: 30
2334
+ # Corresponds to the JSON property `androidRoboTest`
2335
+ # @return [Google::Apis::TestingV1::AndroidRoboTest]
2336
+ attr_accessor :android_robo_test
2337
+
2338
+ # A test of an Android Application with a Test Loop. The intent \ will be
2339
+ # implicitly added, since Games is the only user of this api, for the time being.
2340
+ # Corresponds to the JSON property `androidTestLoop`
2341
+ # @return [Google::Apis::TestingV1::AndroidTestLoop]
2342
+ attr_accessor :android_test_loop
2343
+
2344
+ # Disables performance metrics recording. May reduce test latency.
2345
+ # Corresponds to the JSON property `disablePerformanceMetrics`
2346
+ # @return [Boolean]
2347
+ attr_accessor :disable_performance_metrics
2348
+ alias_method :disable_performance_metrics?, :disable_performance_metrics
2349
+
2350
+ # Disables video recording. May reduce test latency.
2351
+ # Corresponds to the JSON property `disableVideoRecording`
2352
+ # @return [Boolean]
2353
+ attr_accessor :disable_video_recording
2354
+ alias_method :disable_video_recording?, :disable_video_recording
2355
+
2356
+ # A test of an iOS application that implements one or more game loop scenarios.
2357
+ # This test type accepts an archived application (.ipa file) and a list of
2358
+ # integer scenarios that will be executed on the app sequentially.
2359
+ # Corresponds to the JSON property `iosTestLoop`
2360
+ # @return [Google::Apis::TestingV1::IosTestLoop]
2361
+ attr_accessor :ios_test_loop
2362
+
2363
+ # A description of how to set up an iOS device prior to running the test.
2364
+ # Corresponds to the JSON property `iosTestSetup`
2365
+ # @return [Google::Apis::TestingV1::IosTestSetup]
2366
+ attr_accessor :ios_test_setup
2367
+
2368
+ # A test of an iOS application that uses the XCTest framework. Xcode supports
2369
+ # the option to "build for testing", which generates an .xctestrun file that
2370
+ # contains a test specification (arguments, test methods, etc). This test type
2371
+ # accepts a zip file containing the .xctestrun file and the corresponding
2372
+ # contents of the Build/Products directory that contains all the binaries needed
2373
+ # to run the tests.
2374
+ # Corresponds to the JSON property `iosXcTest`
2375
+ # @return [Google::Apis::TestingV1::IosXcTest]
2376
+ attr_accessor :ios_xc_test
2377
+
2378
+ # A description of how to set up the Android device prior to running the test.
2379
+ # Corresponds to the JSON property `testSetup`
2380
+ # @return [Google::Apis::TestingV1::TestSetup]
2381
+ attr_accessor :test_setup
2382
+
2383
+ # Max time a test execution is allowed to run before it is automatically
2384
+ # cancelled. The default value is 5 min.
2385
+ # Corresponds to the JSON property `testTimeout`
2386
+ # @return [String]
2387
+ attr_accessor :test_timeout
2388
+
2389
+ def initialize(**args)
2390
+ update!(**args)
2391
+ end
2392
+
2393
+ # Update properties of this object
2394
+ def update!(**args)
2395
+ @android_instrumentation_test = args[:android_instrumentation_test] if args.key?(:android_instrumentation_test)
2396
+ @android_robo_test = args[:android_robo_test] if args.key?(:android_robo_test)
2397
+ @android_test_loop = args[:android_test_loop] if args.key?(:android_test_loop)
2398
+ @disable_performance_metrics = args[:disable_performance_metrics] if args.key?(:disable_performance_metrics)
2399
+ @disable_video_recording = args[:disable_video_recording] if args.key?(:disable_video_recording)
2400
+ @ios_test_loop = args[:ios_test_loop] if args.key?(:ios_test_loop)
2401
+ @ios_test_setup = args[:ios_test_setup] if args.key?(:ios_test_setup)
2402
+ @ios_xc_test = args[:ios_xc_test] if args.key?(:ios_xc_test)
2403
+ @test_setup = args[:test_setup] if args.key?(:test_setup)
2404
+ @test_timeout = args[:test_timeout] if args.key?(:test_timeout)
2405
+ end
2406
+ end
2407
+
2408
+ # Test targets for a shard.
2409
+ class TestTargetsForShard
2410
+ include Google::Apis::Core::Hashable
2411
+
2412
+ # Group of packages, classes, and/or test methods to be run for each shard. The
2413
+ # targets need to be specified in AndroidJUnitRunner argument format. For
2414
+ # example, "package com.my.packages" "class com.my.package.MyClass". The number
2415
+ # of shard_test_targets must be greater than 0.
2416
+ # Corresponds to the JSON property `testTargets`
2417
+ # @return [Array<String>]
2418
+ attr_accessor :test_targets
2419
+
2420
+ def initialize(**args)
2421
+ update!(**args)
2422
+ end
2423
+
2424
+ # Update properties of this object
2425
+ def update!(**args)
2426
+ @test_targets = args[:test_targets] if args.key?(:test_targets)
2427
+ end
2428
+ end
2429
+
2430
+ # Represents a tool results execution resource. This has the results of a
2431
+ # TestMatrix.
2432
+ class ToolResultsExecution
2433
+ include Google::Apis::Core::Hashable
2434
+
2435
+ # Output only. A tool results execution ID.
2436
+ # Corresponds to the JSON property `executionId`
2437
+ # @return [String]
2438
+ attr_accessor :execution_id
2439
+
2440
+ # Output only. A tool results history ID.
2441
+ # Corresponds to the JSON property `historyId`
2442
+ # @return [String]
2443
+ attr_accessor :history_id
2444
+
2445
+ # Output only. The cloud project that owns the tool results execution.
2446
+ # Corresponds to the JSON property `projectId`
2447
+ # @return [String]
2448
+ attr_accessor :project_id
2449
+
2450
+ def initialize(**args)
2451
+ update!(**args)
2452
+ end
2453
+
2454
+ # Update properties of this object
2455
+ def update!(**args)
2456
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
2457
+ @history_id = args[:history_id] if args.key?(:history_id)
2458
+ @project_id = args[:project_id] if args.key?(:project_id)
2459
+ end
2460
+ end
2461
+
2462
+ # Represents a tool results history resource.
2463
+ class ToolResultsHistory
2464
+ include Google::Apis::Core::Hashable
2465
+
2466
+ # Required. A tool results history ID.
2467
+ # Corresponds to the JSON property `historyId`
2468
+ # @return [String]
2469
+ attr_accessor :history_id
2470
+
2471
+ # Required. The cloud project that owns the tool results history.
2472
+ # Corresponds to the JSON property `projectId`
2473
+ # @return [String]
2474
+ attr_accessor :project_id
2475
+
2476
+ def initialize(**args)
2477
+ update!(**args)
2478
+ end
2479
+
2480
+ # Update properties of this object
2481
+ def update!(**args)
2482
+ @history_id = args[:history_id] if args.key?(:history_id)
2483
+ @project_id = args[:project_id] if args.key?(:project_id)
2484
+ end
2485
+ end
2486
+
2487
+ # Represents a tool results step resource. This has the results of a
2488
+ # TestExecution.
2489
+ class ToolResultsStep
2490
+ include Google::Apis::Core::Hashable
2491
+
2492
+ # Output only. A tool results execution ID.
2493
+ # Corresponds to the JSON property `executionId`
2494
+ # @return [String]
2495
+ attr_accessor :execution_id
2496
+
2497
+ # Output only. A tool results history ID.
2498
+ # Corresponds to the JSON property `historyId`
2499
+ # @return [String]
2500
+ attr_accessor :history_id
2501
+
2502
+ # Output only. The cloud project that owns the tool results step.
2503
+ # Corresponds to the JSON property `projectId`
2504
+ # @return [String]
2505
+ attr_accessor :project_id
2506
+
2507
+ # Output only. A tool results step ID.
2508
+ # Corresponds to the JSON property `stepId`
2509
+ # @return [String]
2510
+ attr_accessor :step_id
2511
+
2512
+ def initialize(**args)
2513
+ update!(**args)
2514
+ end
2515
+
2516
+ # Update properties of this object
2517
+ def update!(**args)
2518
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
2519
+ @history_id = args[:history_id] if args.key?(:history_id)
2520
+ @project_id = args[:project_id] if args.key?(:project_id)
2521
+ @step_id = args[:step_id] if args.key?(:step_id)
2522
+ end
2523
+ end
2524
+
2525
+ # Network emulation parameters.
2526
+ class TrafficRule
2527
+ include Google::Apis::Core::Hashable
2528
+
2529
+ # Bandwidth in kbits/second.
2530
+ # Corresponds to the JSON property `bandwidth`
2531
+ # @return [Float]
2532
+ attr_accessor :bandwidth
2533
+
2534
+ # Burst size in kbits.
2535
+ # Corresponds to the JSON property `burst`
2536
+ # @return [Float]
2537
+ attr_accessor :burst
2538
+
2539
+ # Packet delay, must be >= 0.
2540
+ # Corresponds to the JSON property `delay`
2541
+ # @return [String]
2542
+ attr_accessor :delay
2543
+
2544
+ # Packet duplication ratio (0.0 - 1.0).
2545
+ # Corresponds to the JSON property `packetDuplicationRatio`
2546
+ # @return [Float]
2547
+ attr_accessor :packet_duplication_ratio
2548
+
2549
+ # Packet loss ratio (0.0 - 1.0).
2550
+ # Corresponds to the JSON property `packetLossRatio`
2551
+ # @return [Float]
2552
+ attr_accessor :packet_loss_ratio
2553
+
2554
+ def initialize(**args)
2555
+ update!(**args)
2556
+ end
2557
+
2558
+ # Update properties of this object
2559
+ def update!(**args)
2560
+ @bandwidth = args[:bandwidth] if args.key?(:bandwidth)
2561
+ @burst = args[:burst] if args.key?(:burst)
2562
+ @delay = args[:delay] if args.key?(:delay)
2563
+ @packet_duplication_ratio = args[:packet_duplication_ratio] if args.key?(:packet_duplication_ratio)
2564
+ @packet_loss_ratio = args[:packet_loss_ratio] if args.key?(:packet_loss_ratio)
2565
+ end
2566
+ end
2567
+
2568
+ # Uniformly shards test cases given a total number of shards. For
2569
+ # Instrumentation test, it will be translated to "-e numShard" "-e shardIndex"
2570
+ # AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these
2571
+ # sharding arguments via environment_variables is invalid.
2572
+ class UniformSharding
2573
+ include Google::Apis::Core::Hashable
2574
+
2575
+ # Required. Total number of shards. When any physical devices are selected, the
2576
+ # number must be >= 1 and <= 50. When no physical devices are selected, the
2577
+ # number must be >= 1 and <= 500.
2578
+ # Corresponds to the JSON property `numShards`
2579
+ # @return [Fixnum]
2580
+ attr_accessor :num_shards
2581
+
2582
+ def initialize(**args)
2583
+ update!(**args)
2584
+ end
2585
+
2586
+ # Update properties of this object
2587
+ def update!(**args)
2588
+ @num_shards = args[:num_shards] if args.key?(:num_shards)
2589
+ end
2590
+ end
2591
+
2592
+ # An Xcode version that an iOS version is compatible with.
2593
+ class XcodeVersion
2594
+ include Google::Apis::Core::Hashable
2595
+
2596
+ # Tags for this Xcode version. Example: "default".
2597
+ # Corresponds to the JSON property `tags`
2598
+ # @return [Array<String>]
2599
+ attr_accessor :tags
2600
+
2601
+ # The id for this version. Example: "9.2".
2602
+ # Corresponds to the JSON property `version`
2603
+ # @return [String]
2604
+ attr_accessor :version
2605
+
2606
+ def initialize(**args)
2607
+ update!(**args)
2608
+ end
2609
+
2610
+ # Update properties of this object
2611
+ def update!(**args)
2612
+ @tags = args[:tags] if args.key?(:tags)
2613
+ @version = args[:version] if args.key?(:version)
2614
+ end
2615
+ end
2616
+ end
2617
+ end
2618
+ end