android_reporter 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d590d50a4dbcbeba7083df8c3f97960b1b140cc91a59d35b8843db3149a6eb76
4
+ data.tar.gz: f8f07f0f05784f63bcac6509211ec329b7abca3b662cd7eda4f987cee098750c
5
+ SHA512:
6
+ metadata.gz: 47985438872752c72374a1cb09e70e9e049f75e0ca3cbf987aaed297b817a6393f78440315ed997579aa8b22aef339cbfdf7b1fae70a02d4555cacaa6bb82828
7
+ data.tar.gz: 47c9f41b02b9bbcd465bc46e02ae62d40c4cb66bd2340f658f487024748f3ac182e1a9035302f6b71c2ec09964b3bb8dfa6885fe3110a99984f514865a69168e
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Yazan Tarifi <yazan.tarifi@opensooq.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # android_reporter plugin
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/android_reporter)
4
+
5
+ ## Getting Started
6
+
7
+ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `android_reporter`, add it to your project by running:
8
+
9
+ ```bash
10
+ fastlane add_plugin android_reporter
11
+ ```
12
+
13
+ ## About android_reporter
14
+
15
+ Open Android Emeulators Then Generate Report File From Tests then Upload the File To Slack
16
+
17
+ **Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
18
+
19
+ ## Example
20
+
21
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
+
23
+ **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
24
+
25
+ ## Run tests for this plugin
26
+
27
+ To run both the tests, and code style validation, run
28
+
29
+ ```
30
+ rake
31
+ ```
32
+
33
+ To automatically fix many of the styling issues, use
34
+ ```
35
+ rubocop -a
36
+ ```
37
+
38
+ ## Issues and Feedback
39
+
40
+ For any other issues and feedback about this plugin, please submit it to this repository.
41
+
42
+ ## Troubleshooting
43
+
44
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
45
+
46
+ ## Using _fastlane_ Plugins
47
+
48
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
49
+
50
+ ## About _fastlane_
51
+
52
+ _fastlane_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/android_reporter/version'
2
+
3
+ module Fastlane
4
+ module AndroidReporter
5
+ # Return all .rb files inside the "actions" and "helper" directory
6
+ def self.all_classes
7
+ Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
8
+ end
9
+ end
10
+ end
11
+
12
+ # By default we want to import all available actions and helpers
13
+ # A plugin can contain any number of actions and plugins
14
+ Fastlane::AndroidReporter.all_classes.each do |current|
15
+ require current
16
+ end
@@ -0,0 +1,330 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/android_reporter_helper'
3
+ require 'open3'
4
+ require 'date'
5
+ require 'rubygems'
6
+ require 'slack-ruby-client'
7
+
8
+ module Fastlane
9
+ module Actions
10
+ class AndroidReporterAction < Action
11
+ def self.run(params)
12
+ UI.message("The Android Reporter Plugin Working !!")
13
+
14
+ # Create Variables
15
+ avd_name = params[:avd_name]
16
+ android_sdk_path = params[:android_sdk_path]
17
+ generate_adb_file = params[:generate_adb_file]
18
+ generate_gradle_files = params[:generate_gradle_files]
19
+ gradle_task_testing_name = params[:gradle_task_testing_name]
20
+ is_slack_enabled = params[:is_slack_upload_reports_enabled]
21
+ slack_api_key = params[:slack_api_key]
22
+ time = Time.now.to_s
23
+ time = DateTime.parse(time).strftime("%d/%m/%Y %H:%M")
24
+ isLogcatFileUploaded = false
25
+ isGradleDebugFileUploaded = false
26
+ isGradleErrorFileUploaded = false
27
+
28
+ # 0. Checkout git to Current Branch to Run Tests on the Current Branch
29
+ if params[:tests_branch_name].to_s.length > 0
30
+ begin
31
+ sh("git fetch")
32
+ sh("git checkout ", params[:tests_branch_name].string)
33
+ rescue => error
34
+ UI.error("Something Error with Git Commands")
35
+ end
36
+ end
37
+
38
+ # 1. Send Slack Message from Android Reporter Bot That Testing Task Has been Started ....
39
+ if is_slack_enabled
40
+ UI.message("Slack Messages Bot Started .... [Configuration Step]")
41
+ Slack.configure do |config|
42
+ config.token = slack_api_key
43
+ end
44
+ client = Slack::Web::Client.new
45
+ begin
46
+ client.chat_postMessage(
47
+ channel: "#" + params[:slack_channel_name],
48
+ text: " ================================================================================== \n" +
49
+ " New UI Testing Task Started For Current Release : " + time + " \n " +
50
+ " Current Branch Build : " + sh("git branch") +
51
+ " ================================================================================== \n",
52
+ as_user: true
53
+ )
54
+
55
+ UI.message("Slack Build Task Message Result : [Send First Task Message] ")
56
+ rescue => error
57
+ UI.error("Something Error with Slack Configuration : [Failed Send First Task Message]")
58
+ puts error.backtrace
59
+ end
60
+ end
61
+
62
+ # 2. List All Available AVD's in The Device
63
+ # 3. Run the Target AVD Name From Params
64
+ if params[:avd_name].to_s.length > 0
65
+ Thread.new do
66
+ UI.message("Android Reporting Started to Run AVD : (" + avd_name + ")")
67
+ sh(android_sdk_path + "/tools/bin/avdmanager", "list", "avd")
68
+ sh("cd", android_sdk_path)
69
+ sh(android_sdk_path + "/emulator/emulator", "-avd", avd_name)
70
+ end
71
+ end
72
+
73
+ # 4. Clear the Logcat Server Before Start
74
+ if params[:generate_adb_file]
75
+ Process.fork do
76
+ sh("adb logcat -c")
77
+ end
78
+ end
79
+
80
+ # 5. Start Clean Task with Target UI Task
81
+ # 6. If Gradle Task Success then Will Generate ADB Log File then Kill Server Connection inside ADB
82
+ begin
83
+ UI.message([
84
+ "Android Reporting Started to Run Gradle Testing Task ...",
85
+ "Gradle Tasks : [Clean , Build , " + gradle_task_testing_name + "]"
86
+ ])
87
+ if params[:gradle_task_testing_name].to_s.length > 0
88
+ sh("./gradlew clean")
89
+ gradle_task_result = sh("./gradlew " + gradle_task_testing_name)
90
+ if gradle_task_result
91
+ UI.message("Gradle Task Finished Successfully ...")
92
+ if params[:generate_adb_file]
93
+ Process.fork do
94
+ UI.message([
95
+ "Android Reporter Started to Save Logcat Logs From ADB Connection Server",
96
+ "ADB Reporting File : [logcat.txt]"
97
+ ])
98
+ sh("adb logcat -d > logcat.txt kill-server")
99
+ end
100
+ end
101
+ end
102
+ end
103
+ rescue
104
+ UI.error("Gradle Task Finished With Error ...")
105
+ if params[:generate_adb_file]
106
+ Process.fork do
107
+ sh("adb logcat -e > logcat.txt kill-server")
108
+ end
109
+ end
110
+ end
111
+
112
+ # 7. Generate Gradle Tasks (Failed and Success Files)
113
+ if params[:generate_gradle_files]
114
+ Process.fork do
115
+ sh("./gradlew build > android-logs.txt 2> android-error-logs.txt")
116
+ UI.message([
117
+ "Android Reporting Started to Generate Gradle Reports Files",
118
+ "Gradle Success Debug File : android-logs.txt",
119
+ "Gradle Failed Debug File : android-error-logs.txt"
120
+ ])
121
+ end
122
+ end
123
+
124
+ # 8. Check Slack Option if Enabled or Not To Print The Message
125
+ if is_slack_enabled
126
+ UI.message("Slack Configuration Status : Started ...")
127
+ else
128
+ UI.message("Slack Configuration Status : Disabled ...")
129
+ end
130
+
131
+ # 9. Upload Files to Slack
132
+ if is_slack_enabled
133
+ begin
134
+ UI.message("Slack Messages Bot Upload Files Tasks Started ....")
135
+ if(File.exist?("logcat.txt"))
136
+ UI.message("logcat.txt File exists ...")
137
+ client.files_upload(
138
+ channels: "#" + params[:slack_channel_name],
139
+ as_user: true,
140
+ file: Faraday::UploadIO.new('logcat.txt', 'text/plain'),
141
+ title: "Android UI Testing (ADB Logcat Result)",
142
+ filename: "logcat.txt",
143
+ initial_comment: "Current UI Testing Build Result File Report [logcat.txt]"
144
+ )
145
+
146
+ isLogcatFileUploaded = true
147
+ UI.message("Slack Step Upload [logcat.txt]")
148
+ else
149
+ isLogcatFileUploaded = false
150
+ UI.error("File does not exist [logcat.txt]")
151
+ end
152
+ rescue => error
153
+ if error
154
+ UI.error("Something Error with Slack Upload File : [Step Upload Logcat.txt File to Slack]")
155
+ end
156
+ puts error.message
157
+ puts error.backtrace
158
+ end
159
+
160
+ begin
161
+ if(File.exist?("android-logs.txt"))
162
+ UI.message("android-logs.txt File exists ...")
163
+ client.files_upload(
164
+ channels: "#" + params[:slack_channel_name],
165
+ as_user: true,
166
+ file: Faraday::UploadIO.new('android-logs.txt', 'text/plain'),
167
+ title: "Android UI Testing (Gradle Debug File Result)",
168
+ filename: "android-logs.txt",
169
+ initial_comment: "Current UI Testing Build Result File Report [Gradle Debug Result]"
170
+ )
171
+
172
+ isGradleDebugFileUploaded = true
173
+ UI.message("Slack Step Upload [android-logs.txt]")
174
+ else
175
+ isGradleDebugFileUploaded = false
176
+ UI.error("File does not exist [android-logs.txt]")
177
+ end
178
+ rescue => error
179
+ if error
180
+ UI.error("Something Error with Slack Upload File : [Step Upload Logcat.txt File to Slack]")
181
+ end
182
+ puts error.message
183
+ puts error.backtrace
184
+ end
185
+
186
+ begin
187
+ if(File.exist?("android-error-logs.txt"))
188
+ UI.message("android-error-logs.txt File exists ...")
189
+ client.files_upload(
190
+ channels: "#" + params[:slack_channel_name],
191
+ as_user: true,
192
+ file: Faraday::UploadIO.new('android-error-logs.txt', 'text/plain'),
193
+ title: "Android UI Testing (Gradle Error File Result)",
194
+ filename: "android-error-logs.txt",
195
+ initial_comment: "Current UI Testing Build Result File Report [Gradle Error Result]"
196
+ )
197
+
198
+ isGradleErrorFileUploaded = true
199
+ UI.message("Slack Step Upload [android-error-logs.txt]")
200
+ else
201
+ isGradleErrorFileUploaded = false
202
+ UI.error("File does not exist [android-error-logs.txt]")
203
+ end
204
+ rescue => error
205
+ if error
206
+ UI.error("Something Error with Slack Upload File : [Step Upload Logcat.txt File to Slack]")
207
+ end
208
+ puts error.message
209
+ puts error.backtrace
210
+ end
211
+
212
+ slackFinalMessageContent = "Files Status : With Time : " + time + " : Info = \n"
213
+ if isGradleDebugFileUploaded
214
+ slackFinalMessageContent += "Gradle Debug File Uploaded \n"
215
+ end
216
+
217
+ if isGradleErrorFileUploaded
218
+ slackFinalMessageContent += "Gradle Error File Uploaded \n"
219
+ end
220
+
221
+ if isLogcatFileUploaded
222
+ slackFinalMessageContent += "Logcat ADB Logging File Uploaded \n"
223
+ end
224
+
225
+ client.chat_postMessage(channel: "#" + params[:slack_channel_name], text: slackFinalMessageContent, as_user: true)
226
+ end
227
+
228
+ end
229
+
230
+ def self.description
231
+ "Open Android Emulators Then Generate Report File From Tests then Upload the File To Slack"
232
+ end
233
+
234
+ def self.authors
235
+ ["Yazan Tarifi"]
236
+ end
237
+
238
+ def self.return_value
239
+ # If your method provides a return value, you can describe here what it does
240
+ end
241
+
242
+ def self.details
243
+ # Optional:
244
+ "This Plugin Will Run Android Emulators from a List of Avd Names then Generate Gradle, Tests Report Files and Upload Them To Slack Channel"
245
+ end
246
+
247
+ def self.available_options
248
+ [
249
+ FastlaneCore::ConfigItem.new(
250
+ key: :avd_name,
251
+ env_name: "ANDROID_REPORTER_AVD_NAME",
252
+ description: "Add Android Emulator Name to Start it before Execute the Commands",
253
+ optional: true,
254
+ type: String,
255
+ sensitive: true
256
+ ),
257
+ FastlaneCore::ConfigItem.new(
258
+ key: :android_sdk_path,
259
+ env_name: "ANDROID_REPORTER_ANDROID_SDK",
260
+ description: "Add Android SDK Full Path",
261
+ optional: true,
262
+ type: String,
263
+ sensitive: true
264
+ ),
265
+ FastlaneCore::ConfigItem.new(
266
+ key: :gradle_task_testing_name,
267
+ env_name: "ANDROID_TESTING_GRADLE_TASK",
268
+ description: "Add Android UI Testing Task Name",
269
+ optional: true,
270
+ type: String,
271
+ sensitive: true
272
+ ),
273
+ FastlaneCore::ConfigItem.new(
274
+ key: :generate_adb_file,
275
+ env_name: "ANDROID_REPORTER_ADB_REPORT FILE",
276
+ description: "This Option will Generate Adb Logcat Report File",
277
+ optional: true,
278
+ type: Boolean
279
+ ),
280
+ FastlaneCore::ConfigItem.new(
281
+ key: :generate_gradle_files,
282
+ env_name: "ANDROID_REPORTER_GRADLE_REPORT FILE",
283
+ description: "This Option will Generate Gradle Report File (Success File, Error File)",
284
+ optional: true,
285
+ type: Boolean
286
+ ),
287
+ FastlaneCore::ConfigItem.new(
288
+ key: :is_slack_upload_reports_enabled,
289
+ env_name: "ANDROID_REPORT_FILES_SLACK_UPLOAD_ENABLED",
290
+ description: "This Option will Check if Slack Upload Files Enabled or Not",
291
+ optional: true,
292
+ type: Boolean
293
+ ),
294
+ FastlaneCore::ConfigItem.new(
295
+ key: :slack_api_key,
296
+ env_name: "SLACK_API_TOKEN",
297
+ description: "Add Slack Api Key",
298
+ optional: true,
299
+ type: String,
300
+ sensitive: true
301
+ ),
302
+ FastlaneCore::ConfigItem.new(
303
+ key: :slack_channel_name,
304
+ env_name: "SLACK_CHANNEL_NAME",
305
+ description: "Add Slack Channel Name for Bot to Send Messages on this Channel",
306
+ optional: true,
307
+ type: String,
308
+ sensitive: true
309
+ ),
310
+ FastlaneCore::ConfigItem.new(
311
+ key: :tests_branch_name,
312
+ env_name: "TESTS_BRANCH_NAME",
313
+ description: "Add Branch TO Run Tests on Target Git Branch",
314
+ optional: true,
315
+ type: String,
316
+ sensitive: true
317
+ )
318
+ ]
319
+ end
320
+
321
+ def self.is_supported?(platform)
322
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
323
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
324
+ #
325
+ [:android].include?(platform)
326
+ true
327
+ end
328
+ end
329
+ end
330
+ end
@@ -0,0 +1,16 @@
1
+ require 'fastlane_core/ui/ui'
2
+
3
+ module Fastlane
4
+ UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
5
+
6
+ module Helper
7
+ class AndroidReporterHelper
8
+ # class methods that you define here become available in your action
9
+ # as `Helper::AndroidReporterHelper.your_method`
10
+ #
11
+ def self.show_message
12
+ UI.message("Hello from the android_reporter plugin helper!")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module AndroidReporter
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: android_reporter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Yazan Tarifi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-03-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec_junit_formatter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.49.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.49.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-require_tools
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: fastlane
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 2.176.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 2.176.0
139
+ description:
140
+ email: yazan.tarifi@opensooq.com
141
+ executables: []
142
+ extensions: []
143
+ extra_rdoc_files: []
144
+ files:
145
+ - LICENSE
146
+ - README.md
147
+ - lib/fastlane/plugin/android_reporter.rb
148
+ - lib/fastlane/plugin/android_reporter/actions/android_reporter_action.rb
149
+ - lib/fastlane/plugin/android_reporter/helper/android_reporter_helper.rb
150
+ - lib/fastlane/plugin/android_reporter/version.rb
151
+ homepage: https://github.com/Yazan98/android_reporter
152
+ licenses:
153
+ - MIT
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubygems_version: 3.0.9
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: Open Android Emeulators Then Generate Report File From Tests then Upload
174
+ the File To Slack
175
+ test_files: []