tabbyx 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/bin/console +14 -0
  3. data/bin/setup +8 -0
  4. data/lib/tabbyx.rb +29 -0
  5. data/lib/tabbyx/calabash_android.rb +11 -0
  6. data/lib/tabbyx/calabash_ios.rb +4 -0
  7. data/lib/tabbyx/core/base.rb +54 -0
  8. data/lib/tabbyx/core/config.rb +36 -0
  9. data/lib/tabbyx/core/initialize.rb +35 -0
  10. data/lib/tabbyx/fixtures/constants.rb +21 -0
  11. data/lib/tabbyx/fixtures/global.rb +39 -0
  12. data/lib/tabbyx/helpers/csv_helper.rb +65 -0
  13. data/lib/tabbyx/helpers/debug_helper.rb +37 -0
  14. data/lib/tabbyx/helpers/excel_helper.rb +79 -0
  15. data/lib/tabbyx/helpers/http_batch_handler.rb +50 -0
  16. data/lib/tabbyx/helpers/http_helper.rb +46 -0
  17. data/lib/tabbyx/helpers/minitest_helper.rb +48 -0
  18. data/lib/tabbyx/helpers/screenshot_helpers.rb +128 -0
  19. data/lib/tabbyx/helpers/txt_helper.rb +35 -0
  20. data/lib/tabbyx/steps_android/assert_steps.rb +31 -0
  21. data/lib/tabbyx/steps_android/check_box_steps.rb +3 -0
  22. data/lib/tabbyx/steps_android/context_menu_steps.rb +17 -0
  23. data/lib/tabbyx/steps_android/date_picker_steps.rb +8 -0
  24. data/lib/tabbyx/steps_android/enter_text_steps.rb +23 -0
  25. data/lib/tabbyx/steps_android/location_steps.rb +7 -0
  26. data/lib/tabbyx/steps_android/navigation_steps.rb +47 -0
  27. data/lib/tabbyx/steps_android/press_button_steps.rb +39 -0
  28. data/lib/tabbyx/steps_android/progress_steps.rb +51 -0
  29. data/lib/tabbyx/steps_android/search_steps.rb +7 -0
  30. data/lib/tabbyx/steps_android/spinner_steps.rb +11 -0
  31. data/lib/tabbyx/steps_ios/assertions.rb +79 -0
  32. data/lib/tabbyx/steps_ios/date_picker.rb +39 -0
  33. data/lib/tabbyx/steps_ios/operations.rb +187 -0
  34. data/lib/tabbyx/steps_ios/wait.rb +48 -0
  35. data/lib/tabbyx/utils/adb_devices.rb +248 -0
  36. data/lib/tabbyx/utils/adb_screenshot.rb +22 -0
  37. data/lib/tabbyx/utils/code_coverage.rb +6 -0
  38. data/lib/tabbyx/utils/shell.rb +32 -0
  39. data/lib/tabbyx/version.rb +3 -0
  40. metadata +286 -0
@@ -0,0 +1,248 @@
1
+ # adb_devices.rb 用Ruby封装了常用的Android SDK提供的adb命令,在Android测试脚本中可以随时随地使用
2
+
3
+ require 'tabbyx/utils/shell'
4
+
5
+ module ADBDevices
6
+
7
+ def self.adb_devices
8
+ Shell.adb_log("wait-for-device")
9
+ end
10
+
11
+ # 获取设备的id号
12
+ def self.get_device_id
13
+ Shell.adb_shell_log("getprop ro.boot.serialno")
14
+ end
15
+
16
+ # 获取设备中Android的版本号
17
+ def self.get_android_version
18
+ Shell.adb_shell_log("getprop ro.build.version.release")
19
+ end
20
+
21
+ # 获取设备中SDK的版本号
22
+ def self.get_sdk_version
23
+ Shell.adb_shell_log("getprop ro.build.version.sdk")
24
+ end
25
+
26
+ # 获取设备屏幕的分辨率
27
+ # 返回分辨率数组
28
+ def self.get_screen_resolution
29
+ resolution = []
30
+ outputs = Shell.adb_shell("dumpsys display | grep PhysicalDisplayInfo").scan(/([0-9]+)/)
31
+ puts outputs
32
+ resolution.push(outputs[0])
33
+ resolution.push(outputs[1])
34
+ resolution
35
+ end
36
+
37
+ # 返回设备电池电量
38
+ def self.get_battery_level
39
+ Shell.adb_shell("dumpsys battery | grep level").split(": ")[1]
40
+ end
41
+
42
+ # 返回设备电池温度
43
+ def self.get_battery_temperature
44
+ temp = Shell.adb_shell("dumpsys battery | grep temperature").split(": ")[1]
45
+ temp.to_i/10.0
46
+ end
47
+
48
+ # 获取电池充电状态: 返回状态数值
49
+ def self.get_battery_status
50
+ status = Shell.adb_shell("dumpsys battery | grep status").split(": ")[1].to_i
51
+ case status
52
+ when 1
53
+ string = "1 : BATTERY_STATUS_UNKNOWN, 未知状态"
54
+ when 2
55
+ string = "2 : BATTERY_STATUS_CHARGING,充电状态"
56
+ when 3
57
+ string = "3 : BATTERY_STATUS_DISCHARGING, 放电状态"
58
+ when 4
59
+ string = "4 : BATTERY_STATUS_NOT_CHARGING, 未充电"
60
+ when 5
61
+ string = "5 : BATTERY_STATUS_FULL, 充电已满"
62
+ else
63
+ raise("错误的状态!")
64
+ end
65
+ string
66
+ end
67
+
68
+ # 获取设备上当前界面的package和activity
69
+ def self.get_focused_package_activity
70
+ pattern = "([a-zA-Z0-9.]+/.[a-zA-Z0-9.]+)"
71
+ app = Shell.adb_shell("dumpsys input | grep FocusedApplication").scan(/#{pattern}/)[0]
72
+ if app.nil?
73
+ activity = Shell.adb_shell("dumpsys window w | grep \\/ | grep name=").scan(/#{pattern}/)[0]
74
+ activity
75
+ else
76
+ app
77
+ end
78
+ end
79
+
80
+ # 获取设备上当前界面的包名
81
+ def self.get_current_package_name
82
+ self.get_focused_package_activity[0].split("/")[0]
83
+ end
84
+
85
+ # 获取设备上当前界面的activity
86
+ def self.get_current_activity
87
+ self.get_focused_package_activity[0].split("/")[1]
88
+ end
89
+
90
+ # 应用对应的包名, 返回pid值
91
+ def self.get_pid(package_name)
92
+ num = Shell.adb_shell("ps | grep -w " << package_name).scan(/([\" \"][0-9]+)/)
93
+ raise("应用包名不存在或者进程未开启...") if num.nil?
94
+ num[0]
95
+ end
96
+
97
+ # 进程被杀死,返回true,否则返回出错提示信息
98
+ def self.kill_process(pid)
99
+ out = Shell.adb_shell("kill " << pid)
100
+ (out == "") ? true : out
101
+ end
102
+
103
+ # 退出当前应用
104
+ def self.stop_current_app
105
+ Shell.adb_shell("am force-stop " << self.get_current_package_name)
106
+ end
107
+
108
+ # 清除应用的用户数据,清楚成功返回true, 否则返回false
109
+ # package_name 应用的包名
110
+ def self.clear_app_data(package_name)
111
+ outputs = Shell.adb_shell("pm clear " << package_name)
112
+ (outputs == "Success") ? true : false
113
+ end
114
+
115
+ # 重置当前应用,清除当前应用的数据且重启该应用
116
+ def self.reset_current_app
117
+ clear_app_data(ADBDevices.get_current_package_name)
118
+ end
119
+
120
+ # 安装应用
121
+ # app_path, app的存放路径
122
+ def self.install_app(app_path)
123
+ Shell.adb("install -r " << app_path).to_s
124
+ end
125
+
126
+ # 卸载指定应用
127
+ # package_name, 应用包名,非apk名
128
+ def self.uninstall_app(package_name)
129
+ outputs = Shell.adb("uninstall " << package_name).to_s
130
+ if outputs.include?("Success")
131
+ return true
132
+ else
133
+ return outputs
134
+ end
135
+ end
136
+
137
+ # 获取设备中的第三方应用列表
138
+ def self.get_installed_apps_list
139
+ app = []
140
+ outputs = Shell.adb_shell("pm list packages -3")
141
+ outputs.split("\n").each {|out| app.push out.split(":")[1].strip}
142
+ app
143
+ end
144
+
145
+ # 获取设备中的系统应用列表
146
+ def self.get_system_apps_list
147
+ app = []
148
+ outputs = Shell.adb_shell("pm list packages -s")
149
+ outputs.split("\n").each {|out| app.push out.split(":")[1].strip}
150
+ app
151
+ end
152
+
153
+ # 判断应用是否已经安装,已安装,返回true,否则返回false
154
+ # package_name 包名
155
+ def self.is_install?(package_name)
156
+ get_installed_apps_list.each do |app|
157
+ return true if app == package_name
158
+ end
159
+ get_system_apps_list.each do |app|
160
+ return true if app == package_name
161
+ end
162
+ false
163
+ end
164
+
165
+ # 重启设备
166
+ def self.reboot_device
167
+ Shell.adb("reboot")
168
+ end
169
+
170
+ # 重启设备
171
+ def self.bootload_device
172
+ Shell.adb("reboot bootloader")
173
+ end
174
+
175
+ # 启动一个应用
176
+ # component: 应用包名加主类名,packageName/Activity
177
+ def self.start_activity(component)
178
+ Shell.adb_shell("am start -n " << component)
179
+ end
180
+
181
+ # 获取启动应用所花的时间,单位 ms
182
+ # component: 应用包名加主类名,packageName/Activity
183
+ def self.get_app_startup_time(component)
184
+ out = Shell.adb_shell("am start -W " << component << " | grep TotalTime").split(": ")[1]
185
+ unless out.nil?
186
+ out.rstrip << 'ms'
187
+ else
188
+ raise("ERROR: 没有获取到应用启动时间!")
189
+ end
190
+ end
191
+
192
+ # 复制设备上的文件至本地
193
+ # remote_file_path : 手机上文件所存储的路径
194
+ # local_path: 本地文件夹路径
195
+ def self.pull_file(remote_file_path,local_path)
196
+ Shell.adb("pull " << remote_file_path << " " << local_path)
197
+ end
198
+
199
+ # 推送本地文件至设备
200
+ # local_file_path: 本地文件路径
201
+ # remote_path: 手机上文件夹路径
202
+ def self.push_file(local_file_path,remote_path)
203
+ Shell.adb("push " << local_file_path << " " << remote_path)
204
+ end
205
+
206
+ # 删除手机上tmp文件下临时存储的apk安装包
207
+ def self.remove_all_apks
208
+ Shell.adb_shell("rm /data/local/tmp/*.apk")
209
+ end
210
+
211
+ # 运行 指定UIautomator测试脚本
212
+ def self.run_android_test_by_class(class_name, package_name)
213
+ shell = "am instrument -w -r -e debug false -e class " << class_name << " " << package_name << ".test/android.support.test.runner.AndroidJUnitRunner"
214
+ puts shell
215
+ outputs = Shell.adb_shell(shell)
216
+ puts outputs
217
+ end
218
+
219
+ # 运行 UIautomator测试脚本
220
+ def self.run_android_test(package_name)
221
+ shell = "am instrument -w -r -e debug false -e package " << package_name << " " << package_name << ".test/android.support.test.runner.AndroidJUnitRunner"
222
+ outputs = Shell.adb_shell(shell)
223
+ puts outputs
224
+ end
225
+
226
+ # 更多操作命令
227
+
228
+ # 使用默认浏览器打开一个网页
229
+ def self.visit_web(url)
230
+ Shell.adb_shell("am start -a android.intent.action.VIEW -d " << url)
231
+ end
232
+
233
+ # 拨打号码
234
+ def self.make_call(phone_number)
235
+ Shell.adb_shell("am start -a android.intent.action.CALL -d tel:" << phone_number)
236
+ end
237
+
238
+ # 按键
239
+ def self.send_key(key_code)
240
+ Shell.adb_shell("input keyevent " << key_code)
241
+ end
242
+
243
+ # 唤醒屏幕
244
+ def self.awake_screen
245
+ send_key("26")
246
+ end
247
+
248
+ end
@@ -0,0 +1,22 @@
1
+ # adb_screenshot.rb 封装了adb提供的截屏功能
2
+
3
+ require 'tabbyx/utils/shell'
4
+ require 'tabbyx/fixtures/constants'
5
+
6
+ module ADBScreenShot
7
+
8
+ def self.take_screenshot(image_name)
9
+ temp_path = File.absolute_path(SCREENSHOT_TEMP)+"/"
10
+ puts temp_path
11
+ Shell.adb_shell("screencap -p /data/local/tmp/" << image_name << ".png")
12
+ Shell.adb("pull /data/local/tmp/" << image_name << ".png " << temp_path)
13
+ Shell.adb_shell("rm /data/local/tmp/*.png")
14
+ end
15
+
16
+ def self.get_sub_image(up_left_x,up_left_y,bottom_right_x,bottom_right_y)
17
+ #TODO
18
+ end
19
+
20
+ end
21
+
22
+ # ADBScreenShot.take_screenshot("90")
@@ -0,0 +1,6 @@
1
+ # require this file if you want to use code coverage
2
+
3
+ require 'simplecov'
4
+
5
+ # Code coverage for test cases out of features
6
+ SimpleCov.start
@@ -0,0 +1,32 @@
1
+
2
+ module Shell
3
+
4
+ def self.adb(cmd)
5
+ `adb #{cmd}`
6
+ end
7
+
8
+ def self.adb_shell(cmd)
9
+ `adb shell #{cmd}`
10
+ end
11
+
12
+ def self.process(cmd)
13
+ `#{cmd}`
14
+ end
15
+
16
+ def self.date
17
+ IO.popen("date") { |f| f.gets }
18
+ end
19
+
20
+ def self.adb_log(cmd)
21
+ outputs = `adb #{cmd}`
22
+ puts outputs
23
+ outputs
24
+ end
25
+
26
+ def self.adb_shell_log(cmd)
27
+ outputs = `adb shell #{cmd}`
28
+ puts outputs
29
+ outputs
30
+ end
31
+
32
+ end
@@ -0,0 +1,3 @@
1
+ module Tabbyx
2
+ VERSION = "0.1.4"
3
+ end
metadata ADDED
@@ -0,0 +1,286 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tabbyx
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - angelia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cucumber
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
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: '1.14'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-reporters
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.5.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.5.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: calabash-common
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.0.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 0.0.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: calabash-android
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: calabash-cucumber
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 0.20.4
118
+ - - "<"
119
+ - !ruby/object:Gem::Version
120
+ version: '2.0'
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 0.20.4
128
+ - - "<"
129
+ - !ruby/object:Gem::Version
130
+ version: '2.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: gruff
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.7.0
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.7.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: selenium-webdriver
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">"
150
+ - !ruby/object:Gem::Version
151
+ version: 3.0.0
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">"
157
+ - !ruby/object:Gem::Version
158
+ version: 3.0.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: capybara
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 2.10.1
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 2.10.1
173
+ - !ruby/object:Gem::Dependency
174
+ name: httparty
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: 0.14.0
180
+ type: :runtime
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.14.0
187
+ - !ruby/object:Gem::Dependency
188
+ name: simplecov
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :runtime
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rubyXL
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 3.3.21
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 3.3.21
215
+ description: an agile testing framework supports testing web and mobile apps,including
216
+ Android and iOS.
217
+ email:
218
+ - angeliawang@me.com
219
+ executables:
220
+ - console
221
+ - setup
222
+ extensions: []
223
+ extra_rdoc_files: []
224
+ files:
225
+ - bin/console
226
+ - bin/setup
227
+ - lib/tabbyx.rb
228
+ - lib/tabbyx/calabash_android.rb
229
+ - lib/tabbyx/calabash_ios.rb
230
+ - lib/tabbyx/core/base.rb
231
+ - lib/tabbyx/core/config.rb
232
+ - lib/tabbyx/core/initialize.rb
233
+ - lib/tabbyx/fixtures/constants.rb
234
+ - lib/tabbyx/fixtures/global.rb
235
+ - lib/tabbyx/helpers/csv_helper.rb
236
+ - lib/tabbyx/helpers/debug_helper.rb
237
+ - lib/tabbyx/helpers/excel_helper.rb
238
+ - lib/tabbyx/helpers/http_batch_handler.rb
239
+ - lib/tabbyx/helpers/http_helper.rb
240
+ - lib/tabbyx/helpers/minitest_helper.rb
241
+ - lib/tabbyx/helpers/screenshot_helpers.rb
242
+ - lib/tabbyx/helpers/txt_helper.rb
243
+ - lib/tabbyx/steps_android/assert_steps.rb
244
+ - lib/tabbyx/steps_android/check_box_steps.rb
245
+ - lib/tabbyx/steps_android/context_menu_steps.rb
246
+ - lib/tabbyx/steps_android/date_picker_steps.rb
247
+ - lib/tabbyx/steps_android/enter_text_steps.rb
248
+ - lib/tabbyx/steps_android/location_steps.rb
249
+ - lib/tabbyx/steps_android/navigation_steps.rb
250
+ - lib/tabbyx/steps_android/press_button_steps.rb
251
+ - lib/tabbyx/steps_android/progress_steps.rb
252
+ - lib/tabbyx/steps_android/search_steps.rb
253
+ - lib/tabbyx/steps_android/spinner_steps.rb
254
+ - lib/tabbyx/steps_ios/assertions.rb
255
+ - lib/tabbyx/steps_ios/date_picker.rb
256
+ - lib/tabbyx/steps_ios/operations.rb
257
+ - lib/tabbyx/steps_ios/wait.rb
258
+ - lib/tabbyx/utils/adb_devices.rb
259
+ - lib/tabbyx/utils/adb_screenshot.rb
260
+ - lib/tabbyx/utils/code_coverage.rb
261
+ - lib/tabbyx/utils/shell.rb
262
+ - lib/tabbyx/version.rb
263
+ homepage: https://github.com/angeliaw/tabbyx
264
+ licenses: []
265
+ metadata: {}
266
+ post_install_message:
267
+ rdoc_options: []
268
+ require_paths:
269
+ - lib
270
+ required_ruby_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - ">="
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ required_rubygems_version: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ requirements: []
281
+ rubyforge_project:
282
+ rubygems_version: 2.4.8
283
+ signing_key:
284
+ specification_version: 4
285
+ summary: an agile mobile test framework.
286
+ test_files: []