xamarin-test-cloud-appium 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +12 -0
- data/bin/test-cloud-appium +19 -0
- data/lib/xamarin-test-cloud-appium/cli.rb +919 -0
- data/lib/xamarin-test-cloud-appium/retriable_options.rb +27 -0
- data/lib/xamarin-test-cloud-appium/version.rb +3 -0
- data/test/ipa/features/step_definitions/calabash_steps.rb +1 -0
- data/test/ipa/features/step_definitions/my_first_steps.rb +4 -0
- data/test/ipa/features/support/env.rb +1 -0
- data/test/ipa/features/support/hooks.rb +0 -0
- data/test/ipa/features/support/launch.rb +77 -0
- data/test/test_parser.rb +72 -0
- metadata +315 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'retriable'
|
2
|
+
require 'retriable/version' # needed in 1.x. In 2.x auto required.
|
3
|
+
|
4
|
+
module XamarinTestCloud
|
5
|
+
# A class to bridge the gap between retriable 1.x and 2.0.
|
6
|
+
class RetriableOptions
|
7
|
+
|
8
|
+
def self.retriable_version
|
9
|
+
parts = Retriable::VERSION.split('.')
|
10
|
+
{
|
11
|
+
:major => parts[0] ? parts[0].to_i : nil,
|
12
|
+
:minor => parts[1] ? parts[1].to_i : nil,
|
13
|
+
:patch => parts[2] ? parts[2].to_i : nil
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.tries_and_interval(tries, interval)
|
18
|
+
version = self.retriable_version[:major]
|
19
|
+
if version >= 2
|
20
|
+
{:intervals => Array.new(tries, interval)}
|
21
|
+
else
|
22
|
+
{:tries => tries, :interval => interval}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'calabash-cucumber/calabash_steps'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'calabash-cucumber/cucumber'
|
File without changes
|
@@ -0,0 +1,77 @@
|
|
1
|
+
########################################
|
2
|
+
# #
|
3
|
+
# Important Note #
|
4
|
+
# #
|
5
|
+
# When running calabash-ios tests at #
|
6
|
+
# www.xamarin-test-cloud.com #
|
7
|
+
# this file will be overwritten by #
|
8
|
+
# a file which automates #
|
9
|
+
# app launch on devices. #
|
10
|
+
# #
|
11
|
+
# Don't rely on this file being #
|
12
|
+
# present when running at #
|
13
|
+
# www.xamarin-test-cloud.com. #
|
14
|
+
# #
|
15
|
+
# Only put stuff here to automate #
|
16
|
+
# iOS Simulator. #
|
17
|
+
# #
|
18
|
+
# You can put your app bundle path #
|
19
|
+
# for automating simulator app start: #
|
20
|
+
# Uncomment APP_BUNDLE_PATH =.. #
|
21
|
+
# #
|
22
|
+
########################################
|
23
|
+
|
24
|
+
require 'calabash-cucumber/launch/simulator_helper'
|
25
|
+
require 'sim_launcher'
|
26
|
+
|
27
|
+
# Uncomment and replace ?? appropriately
|
28
|
+
# This should point to your Simulator build
|
29
|
+
# which includes calabash framework
|
30
|
+
# this is usually the Calabash build configuration
|
31
|
+
# of your production target.
|
32
|
+
#APP_BUNDLE_PATH = "~/Library/Developer/Xcode/DerivedData/??/Build/Products/Calabash-iphonesimulator/??.app"
|
33
|
+
#
|
34
|
+
|
35
|
+
def reset_app_jail(sdk, app_path)
|
36
|
+
app = File.basename(app_path)
|
37
|
+
bundle = `find "#{ENV['HOME']}/Library/Application Support/iPhone Simulator/#{sdk}/Applications/" -type d -depth 2 -name #{app} | head -n 1`
|
38
|
+
return if bundle.empty? # Assuming we're already clean
|
39
|
+
|
40
|
+
sandbox = File.dirname(bundle)
|
41
|
+
['Library', 'Documents', 'tmp'].each do |dir|
|
42
|
+
FileUtils.rm_rf(File.join(sandbox, dir))
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def relaunch
|
47
|
+
if ENV['NO_LAUNCH']!="1"
|
48
|
+
sdk = ENV['SDK_VERSION'] || SimLauncher::SdkDetector.new().latest_sdk_version
|
49
|
+
path = Calabash::Cucumber::SimulatorHelper.app_bundle_or_raise(app_path)
|
50
|
+
if ENV['RESET_BETWEEN_SCENARIOS']=="1"
|
51
|
+
reset_app_jail(sdk, path)
|
52
|
+
end
|
53
|
+
|
54
|
+
Calabash::Cucumber::SimulatorHelper.relaunch(path,sdk,ENV['DEVICE'] || 'iphone')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def app_path
|
59
|
+
ENV['APP_BUNDLE_PATH'] || (defined?(APP_BUNDLE_PATH) && APP_BUNDLE_PATH)
|
60
|
+
end
|
61
|
+
|
62
|
+
def calabash_notify
|
63
|
+
if self.respond_to?(:on_launch)
|
64
|
+
self.on_launch
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
Before do |scenario|
|
69
|
+
relaunch
|
70
|
+
calabash_notify
|
71
|
+
end
|
72
|
+
|
73
|
+
at_exit do
|
74
|
+
if ENV['NO_LAUNCH']!="1" and ENV['NO_STOP']!="1"
|
75
|
+
Calabash::Cucumber::SimulatorHelper.stop
|
76
|
+
end
|
77
|
+
end
|
data/test/test_parser.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'thor'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'xamarin-test-cloud/cli'
|
5
|
+
require 'bundler'
|
6
|
+
|
7
|
+
class TestParser < Test::Unit::TestCase
|
8
|
+
def test_should_raise_if_no_app_or_api_key_is_given
|
9
|
+
config_options = {
|
10
|
+
'devices' => "aa59649c",
|
11
|
+
}
|
12
|
+
script = XamarinTestCloud::CLI.new([], config_options)
|
13
|
+
assert_raise Thor::InvocationError do
|
14
|
+
script.invoke(:submit)
|
15
|
+
end
|
16
|
+
|
17
|
+
script = XamarinTestCloud::CLI.new(["test/ipa/2012 Olympics_cal.ipa"], config_options)
|
18
|
+
assert_raise Thor::InvocationError do
|
19
|
+
script.invoke(:submit)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_raise_if_app_is_not_file_ipa_or_apk
|
25
|
+
config_options = {
|
26
|
+
'devices' => "aa59649c",
|
27
|
+
}
|
28
|
+
|
29
|
+
script = XamarinTestCloud::CLI.new(["test/ipa/NONE_EXIST_2012 Olympics_cal.ipa","JIFZCTPZJJXJLEKMMYRY"], config_options)
|
30
|
+
|
31
|
+
assert_raise XamarinTestCloud::ValidationError do
|
32
|
+
script.invoke(:submit)
|
33
|
+
end
|
34
|
+
|
35
|
+
script = XamarinTestCloud::CLI.new(["test/ipa/features.zip","JIFZCTPZJJXJLEKMMYRY"], config_options)
|
36
|
+
|
37
|
+
assert_raise XamarinTestCloud::ValidationError do
|
38
|
+
script.invoke(:submit)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_parse_all_configuration_options
|
43
|
+
Bundler.with_clean_env do
|
44
|
+
FileUtils.rm_f(File.join("test","vendor"))
|
45
|
+
FileUtils.rm_f(File.join("test","Gemfile"))
|
46
|
+
FileUtils.rm_f(File.join("test","Gemfile.lock"))
|
47
|
+
|
48
|
+
config_options = {
|
49
|
+
:host => "http://localhost:8080",
|
50
|
+
:workspace => "test/ipa",
|
51
|
+
:features => "test/ipa/features.zip",
|
52
|
+
:config => "test/config/cucumber.yml",
|
53
|
+
:profile => "a",
|
54
|
+
'devices' => "aa59649c",
|
55
|
+
"skip-check" => false,
|
56
|
+
"reset-between-scenarios" => false,
|
57
|
+
"dry-run" => true
|
58
|
+
}
|
59
|
+
script = XamarinTestCloud::CLI.new(["test/ipa/2012 Olympics_cal.ipa","JIFZCTPZJJXJLEKMMYRY"],config_options)
|
60
|
+
|
61
|
+
|
62
|
+
script.invoke(:submit)
|
63
|
+
|
64
|
+
FileUtils.rm_f(File.join("test","vendor","cache"))
|
65
|
+
FileUtils.rm_f(File.join("test","Gemfile"))
|
66
|
+
FileUtils.rm_f(File.join("test","Gemfile.lock"))
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
metadata
ADDED
@@ -0,0 +1,315 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xamarin-test-cloud-appium
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Karl Krukow
|
8
|
+
- Jonas Maturana Larsen
|
9
|
+
- Søren Skovsbøll
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2016-06-17 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: thor
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ">="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.18.1
|
22
|
+
- - "<"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '1.0'
|
25
|
+
type: :runtime
|
26
|
+
prerelease: false
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 0.18.1
|
32
|
+
- - "<"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.0'
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.3.0
|
42
|
+
- - "<"
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '2.0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 1.3.0
|
52
|
+
- - "<"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.8'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.8'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubyzip
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.1'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rest-client
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.6'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.6'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: mime-types
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "<"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "<"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: retriable
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.3.3.1
|
118
|
+
- - "<"
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '2.1'
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 1.3.3.1
|
128
|
+
- - "<"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '2.1'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: rake
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '10.3'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '10.3'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: test-unit
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 3.0.9
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 3.0.9
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: rspec
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '3.0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.0'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: guard-rspec
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '4.3'
|
180
|
+
type: :development
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '4.3'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: guard-bundler
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - "~>"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '2.0'
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - "~>"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '2.0'
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: growl
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '1.0'
|
208
|
+
type: :development
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '1.0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: stub_env
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 1.0.1
|
222
|
+
- - "<"
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '2.0'
|
225
|
+
type: :development
|
226
|
+
prerelease: false
|
227
|
+
version_requirements: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">="
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: 1.0.1
|
232
|
+
- - "<"
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '2.0'
|
235
|
+
- !ruby/object:Gem::Dependency
|
236
|
+
name: pry
|
237
|
+
requirement: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - ">="
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
242
|
+
type: :development
|
243
|
+
prerelease: false
|
244
|
+
version_requirements: !ruby/object:Gem::Requirement
|
245
|
+
requirements:
|
246
|
+
- - ">="
|
247
|
+
- !ruby/object:Gem::Version
|
248
|
+
version: '0'
|
249
|
+
- !ruby/object:Gem::Dependency
|
250
|
+
name: pry-nav
|
251
|
+
requirement: !ruby/object:Gem::Requirement
|
252
|
+
requirements:
|
253
|
+
- - ">="
|
254
|
+
- !ruby/object:Gem::Version
|
255
|
+
version: '0'
|
256
|
+
type: :development
|
257
|
+
prerelease: false
|
258
|
+
version_requirements: !ruby/object:Gem::Requirement
|
259
|
+
requirements:
|
260
|
+
- - ">="
|
261
|
+
- !ruby/object:Gem::Version
|
262
|
+
version: '0'
|
263
|
+
description: Xamarin Test Cloud lets you automatically test your app on hundreds of
|
264
|
+
mobile devices
|
265
|
+
email:
|
266
|
+
- karl@xamarin.com
|
267
|
+
- jonas@xamarin.com
|
268
|
+
- soskovsb@microsoft.com
|
269
|
+
executables:
|
270
|
+
- test-cloud-appium
|
271
|
+
extensions: []
|
272
|
+
extra_rdoc_files: []
|
273
|
+
files:
|
274
|
+
- README.md
|
275
|
+
- bin/test-cloud-appium
|
276
|
+
- lib/xamarin-test-cloud-appium/cli.rb
|
277
|
+
- lib/xamarin-test-cloud-appium/retriable_options.rb
|
278
|
+
- lib/xamarin-test-cloud-appium/version.rb
|
279
|
+
- test/ipa/features/step_definitions/calabash_steps.rb
|
280
|
+
- test/ipa/features/step_definitions/my_first_steps.rb
|
281
|
+
- test/ipa/features/support/env.rb
|
282
|
+
- test/ipa/features/support/hooks.rb
|
283
|
+
- test/ipa/features/support/launch.rb
|
284
|
+
- test/test_parser.rb
|
285
|
+
homepage: http://xamarin.com/test-cloud
|
286
|
+
licenses: []
|
287
|
+
metadata: {}
|
288
|
+
post_install_message:
|
289
|
+
rdoc_options: []
|
290
|
+
require_paths:
|
291
|
+
- lib
|
292
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
293
|
+
requirements:
|
294
|
+
- - ">="
|
295
|
+
- !ruby/object:Gem::Version
|
296
|
+
version: '0'
|
297
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
|
+
requirements:
|
299
|
+
- - ">="
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
version: '0'
|
302
|
+
requirements: []
|
303
|
+
rubyforge_project:
|
304
|
+
rubygems_version: 2.4.8
|
305
|
+
signing_key:
|
306
|
+
specification_version: 4
|
307
|
+
summary: Command-line interface to Xamarin Test Cloud Appium
|
308
|
+
test_files:
|
309
|
+
- test/ipa/features/step_definitions/calabash_steps.rb
|
310
|
+
- test/ipa/features/step_definitions/my_first_steps.rb
|
311
|
+
- test/ipa/features/support/env.rb
|
312
|
+
- test/ipa/features/support/hooks.rb
|
313
|
+
- test/ipa/features/support/launch.rb
|
314
|
+
- test/test_parser.rb
|
315
|
+
has_rdoc:
|