fastlane-plugin-run_tests_firebase_testlab 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd77d3df648dfd0f3228e53dd2c869c0c4c2d4d7
4
- data.tar.gz: c3db685dec065ee58c9cc26b8b6accbdf26914cf
3
+ metadata.gz: c6a2f08d5395b10f14f913b802d1f34bdd0efdc3
4
+ data.tar.gz: ee7be8d83547a5dc1c3133d8009023c651095363
5
5
  SHA512:
6
- metadata.gz: e51d57e579196d0d0815764219ac787b40abf17354ede3d01001bbe4932be20f833b526cca5475244be0427427005b5d6e66644739207f7555a3ad7f659da370
7
- data.tar.gz: e4a8b9ac6f94e24c4a2bc7e9b59cd391aa63077ca60e1d6b3cad4c0657a07317c298d393a9edd05326ab6845bb3c80dcd9a93b34cdf130f2b7d227c460add202
6
+ metadata.gz: 58cc561b4d8c90f8c017767d5fd8d6745f7ca8566ea389222fb73a7044d0076671afed0a7fe7580f34bfa4e58fcac1fed9f0be6fa1d843154fe5e1a686d14e87
7
+ data.tar.gz: b100b3dd863eea12dc3df707faeb177ee3c413f11033068847a237678aa2662ce3319de51f77dabef12ad216bbb81e4bd7e93dc749e1b6143aaae3c1e8fdc53b
data/README.md CHANGED
@@ -6,13 +6,11 @@ Status](https://travis-ci.org/pink-room/fastlane-plugin-run_tests_firebase_testl
6
6
  [![Gem
7
7
  Version](https://badge.fury.io/rb/fastlane-plugin-run_tests_firebase_testlab.svg)](https://badge.fury.io/rb/fastlane-plugin-run_tests_firebase_testlab)
8
8
 
9
- Please, read [this](https://medium.com/pink-room-club/android-continuous-integration-using-fastlane-and-circleci-2-0-part-i-7204e2e7b8b) blog post if you want to know better
10
- how to use this plugin.
9
+ Please, read [this](https://medium.com/pink-room-club/android-continuous-integration-using-fastlane-and-circleci-2-0-part-i-7204e2e7b8b) blog post if you want to know better how to use this plugin.
11
10
 
12
11
  ## Getting Started
13
12
 
14
13
  This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-run_tests_firebase_testlab`, add it to your project by running:
15
-
16
14
  ```bash
17
15
  fastlane add_plugin run_tests_firebase_testlab
18
16
  ```
@@ -36,8 +34,12 @@ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plu
36
34
  ```
37
35
  run_tests_firebase_testlab(
38
36
  project_id: "your-firebase-project-id",
39
- model: "Nexus6P",
40
- version: "27")
37
+ devices: [
38
+ {
39
+ model: "Nexus6P",
40
+ version: "27"
41
+ }
42
+ ]);
41
43
  ```
42
44
 
43
45
  ### Parameters
@@ -61,45 +63,52 @@ run_tests_firebase_testlab(
61
63
  </tr>
62
64
 
63
65
  <tr>
64
- <td><b>model</b></td>
65
- <td>The device's model on which the tests will be run</td>
66
+ <td><b>devices</b></td>
67
+ <td>A list of devices to test the App on</td>
66
68
  <td>No</td>
67
69
  <td>-</td>
68
70
  </tr>
69
71
 
70
72
  <tr>
71
- <td><b>version</b></td>
73
+ <td><b>device[model]</b></td>
74
+ <td>A device model on which the tests will run</td>
75
+ <td>No</td>
76
+ <td>-</td>
77
+ </tr>
78
+
79
+ <tr>
80
+ <td><b>device[version]</b></td>
72
81
  <td>The Android api version of the device</td>
73
82
  <td>No</td>
74
83
  <td>-</td>
75
84
  </tr>
76
85
 
77
86
  <tr>
78
- <td>app_apk</td>
79
- <td>The path for your app apk</td>
87
+ <td>device[locale]</td>
88
+ <td>The locale to test against</td>
80
89
  <td>Yes</td>
81
- <td>app/build/outputs/apk/debug/<br>app-debug.apk</td>
90
+ <td>en_US</td>
82
91
  </tr>
83
92
 
84
93
  <tr>
85
- <td>android_test_apk</td>
86
- <td>The path for your android test apk</td>
94
+ <td>device[orientation]</td>
95
+ <td>The orientation of the device</td>
87
96
  <td>Yes</td>
88
- <td>app/build/outputs/apk/androidTest/<br>debug/app-debug-androidTest.apk</td>
97
+ <td>portrait</td>
89
98
  </tr>
90
99
 
91
100
  <tr>
92
- <td>locale</td>
93
- <td>The locale to test against</td>
101
+ <td>app_apk</td>
102
+ <td>The path for your app apk</td>
94
103
  <td>Yes</td>
95
- <td>en_US</td>
104
+ <td>app/build/outputs/apk/debug/<br>app-debug.apk</td>
96
105
  </tr>
97
106
 
98
107
  <tr>
99
- <td>orientation</td>
100
- <td>The orientation of the device</td>
108
+ <td>android_test_apk</td>
109
+ <td>The path for your android test apk</td>
101
110
  <td>Yes</td>
102
- <td>portrait</td>
111
+ <td>app/build/outputs/apk/androidTest/<br>debug/app-debug-androidTest.apk</td>
103
112
  </tr>
104
113
 
105
114
  <tr>
@@ -12,6 +12,8 @@ module Fastlane
12
12
  def self.run(params)
13
13
  UI.message("Starting run_tests_firebase_testlab plugin...")
14
14
 
15
+ validate_params(params)
16
+
15
17
  if params[:gcloud_service_key_file].nil?
16
18
  UI.message("Save Google Cloud credentials.")
17
19
  File.open(@client_secret_file, 'w') do |file|
@@ -35,7 +37,7 @@ module Fastlane
35
37
  "--type instrumentation "\
36
38
  "--app #{params[:app_apk]} "\
37
39
  "--test #{params[:android_test_apk]} "\
38
- "--device model=#{params[:model]},version=#{params[:version]},locale=#{params[:locale]},orientation=#{params[:orientation]} "\
40
+ "#{create_devices_params(params)}"\
39
41
  "--timeout #{params[:timeout]} "\
40
42
  "#{params[:extra_options]} > #{PIPE} 2>&1")
41
43
  remove_pipe_if_exists
@@ -94,16 +96,32 @@ module Fastlane
94
96
  description: "Your Firebase project id",
95
97
  is_string: true,
96
98
  optional: false),
99
+ FastlaneCore::ConfigItem.new(key: :devices,
100
+ env_name: "DEVICES",
101
+ description: "Devices to test the App on",
102
+ type: Array,
103
+ optional: true,
104
+ verify_block: proc do |devices|
105
+ devices.each do |d|
106
+ if d.class != Hash
107
+ UI.user_error!("Each device must be represented by a Hash object, #{d.class} found")
108
+ end
109
+ check_has_property(d, :model)
110
+ check_has_property(d, :version)
111
+ set_default_property(d, :locale, "en_US")
112
+ set_default_property(d, :orientation, "portrait")
113
+ end
114
+ end),
97
115
  FastlaneCore::ConfigItem.new(key: :model,
98
116
  env_name: "MODEL",
99
117
  description: "The device's model on which the tests will be run",
100
118
  is_string: true,
101
- optional: false),
119
+ optional: true),
102
120
  FastlaneCore::ConfigItem.new(key: :version,
103
121
  env_name: "VERSION",
104
122
  description: "The Android api version of the device",
105
123
  is_string: true,
106
- optional: false),
124
+ optional: true),
107
125
  FastlaneCore::ConfigItem.new(key: :app_apk,
108
126
  env_name: "APP_APK",
109
127
  description: "The path for your app apk. Default: app/build/outputs/apk/debug/app-debug.apk",
@@ -181,8 +199,12 @@ module Fastlane
181
199
  [
182
200
  'run_tests_firebase_testlab(
183
201
  project_id: "your-firebase-project-id",
184
- model: "Nexus6P",
185
- version: "27",
202
+ devices: [
203
+ {
204
+ model: "Nexus6P",
205
+ version: "27"
206
+ }
207
+ ],
186
208
  delete_firebase_files: true
187
209
  )'
188
210
  ]
@@ -192,6 +214,67 @@ module Fastlane
192
214
  :testing
193
215
  end
194
216
 
217
+ def self.check_has_property(device, property)
218
+ UI.user_error!("Each device must have #{property} property") unless device.key?(property)
219
+ end
220
+
221
+ private_class_method :check_has_property
222
+
223
+ def self.set_default_property(device, property, default)
224
+ unless device.key?(property)
225
+ device[property] = default
226
+ end
227
+ end
228
+
229
+ private_class_method :set_default_property
230
+
231
+ def self.validate_params(params)
232
+ if has_old_device_params(params)
233
+ UI.deprecated("The 'model', 'version', 'locale' and 'orientation' params are deprecated and will be removed in version 1.0!")
234
+ unless params[:devices].nil?
235
+ UI.user_error!("You can't use 'devices' param and 'model', 'version', "\
236
+ "'locale' and 'orientation' params at the same time")
237
+ end
238
+ end
239
+ end
240
+
241
+ private_class_method :validate_params
242
+
243
+ def self.has_old_device_params(params)
244
+ !(params[:model].nil? || params[:version].nil? || params[:locale].nil? || params[:orientation].nil?)
245
+ end
246
+
247
+ private_class_method :has_old_device_params
248
+
249
+ def self.create_devices_params(params)
250
+ if has_old_device_params(params)
251
+ params[:devices] = [
252
+ {
253
+ model: params[:model],
254
+ version: params[:version],
255
+ locale: params[:locale],
256
+ orientation: params[:orientation]
257
+ }
258
+ ]
259
+ end
260
+
261
+ devices_params = ""
262
+
263
+ params[:devices].each do |device|
264
+ devices_params += create_device_param(device)
265
+ end
266
+
267
+ devices_params
268
+ end
269
+
270
+ private_class_method :create_devices_params
271
+
272
+ def self.create_device_param(device)
273
+ "--device model=#{device[:model]},version=#{device[:version]},locale=#{device[:locale]},orientation=#{device[:orientation]} "
274
+ end
275
+
276
+ private_class_method :create_device_param
277
+
195
278
  def self.scrape_bucket_url
196
279
  File.open(@test_console_output_file).each do |line|
197
280
  url = line.scan(/\[(.*)\]/).last&.first
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module RunTestsFirebaseTestlab
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-run_tests_firebase_testlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Correia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-29 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry