briar 0.1.3 → 0.1.4.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/briar +6 -1
- data/bin/briar_console.rb +11 -3
- data/bin/briar_env.rb +1 -0
- data/bin/briar_help.rb +34 -10
- data/bin/briar_ideviceinstaller.rb +12 -3
- data/bin/briar_rm.rb +6 -7
- data/bin/briar_sim.rb +2 -0
- data/bin/briar_tags.rb +19 -0
- data/bin/briar_xtc.rb +83 -25
- data/lib/briar.rb +0 -1
- data/lib/briar/cucumber.rb +1 -1
- data/lib/briar/irbrc.rb +3 -1
- data/lib/briar/version.rb +1 -1
- metadata +6 -6
- data/lib/briar/uia/briar_ipad_emulation.rb +0 -174
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2de2d2410ddc9524589489604312c5b4a6512f1
|
4
|
+
data.tar.gz: 548da4584b0f8fbafa8d5fae39b469bef887cbfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc2e61cae457c7343a72fbccf4ba67491c786aea152734873dcda30419268e508c28eec564c6cf2a2eb7656fd0eb7c5beca0e3102190516644177720142b6b02
|
7
|
+
data.tar.gz: 62857537e5d132f602138a1f0cad5790e303edbd19914e9da6cfbb71ba656fece8025d2fe8759f93cd5768d61161f58c29d4ec538784872f748e9e4f6c0cea3e
|
data/bin/briar
CHANGED
@@ -18,12 +18,13 @@ require_relative './briar_rm'
|
|
18
18
|
require_relative './briar_xtc'
|
19
19
|
require_relative './briar_report'
|
20
20
|
require_relative './briar_sim'
|
21
|
+
require_relative './briar_tags'
|
21
22
|
|
22
23
|
num_args = ARGV.length
|
23
24
|
|
24
25
|
|
25
26
|
def briar_version
|
26
|
-
Briar::VERSION
|
27
|
+
puts "#{Briar::VERSION}"
|
27
28
|
end
|
28
29
|
|
29
30
|
if num_args == 0
|
@@ -63,6 +64,8 @@ if num_args == 2 and ARGV[0] == 'help'
|
|
63
64
|
print_rm_help
|
64
65
|
when 'sim'
|
65
66
|
print_sim_help
|
67
|
+
when 'tags'
|
68
|
+
print_tags_help
|
66
69
|
when 'version'
|
67
70
|
print_version_help
|
68
71
|
when '.xamarin'
|
@@ -95,6 +98,8 @@ case command
|
|
95
98
|
briar_rm(args)
|
96
99
|
when 'sim'
|
97
100
|
briar_sim(args)
|
101
|
+
when 'tags'
|
102
|
+
briar_tags(args)
|
98
103
|
when 'xtc'
|
99
104
|
briar_xtc(args)
|
100
105
|
|
data/bin/briar_console.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require_relative './briar_dot_xamarin'
|
2
2
|
require_relative './briar_env'
|
3
3
|
|
4
|
+
|
4
5
|
require 'ansi/logger'
|
5
6
|
@log = ANSI::Logger.new(STDOUT)
|
6
7
|
|
@@ -34,16 +35,19 @@ def screenshot_path
|
|
34
35
|
path
|
35
36
|
end
|
36
37
|
|
38
|
+
#noinspection RubyStringKeysInHashInspection
|
37
39
|
def logging_level
|
38
40
|
{'DEBUG' => ENV['DEBUG'] || '1',
|
39
41
|
'CALABASH_FULL_CONSOLE_OUTPUT' => ENV['CALABASH_FULL_CONSOLE_OUTPUT'] || '1'}
|
40
42
|
end
|
41
43
|
|
44
|
+
#noinspection RubyStringKeysInHashInspection
|
42
45
|
def simulator_variables(sdk_version)
|
43
46
|
{'DEVICE_TARGET' => 'simulator',
|
44
47
|
'SKD_VERSION' => sdk_version}
|
45
48
|
end
|
46
49
|
|
50
|
+
#noinspection RubyStringKeysInHashInspection
|
47
51
|
def device_variables(device)
|
48
52
|
{'DEVICE_TARGET' => read_device_info(device, :udid),
|
49
53
|
'DEVICE_ENDPOINT' => read_device_info(device, :ip),
|
@@ -90,12 +94,16 @@ def console(device, opts={})
|
|
90
94
|
# do not be tempted to use IRB.start
|
91
95
|
# this can cause some terrible problems at > exit
|
92
96
|
##################
|
93
|
-
|
94
|
-
default_opts = default_console_opts()
|
97
|
+
default_opts = default_console_opts()
|
95
98
|
opts = default_opts.merge(opts)
|
96
99
|
cmd = ios_console_cmd(device, opts)
|
97
100
|
puts Rainbow(cmd).green
|
98
|
-
|
101
|
+
|
102
|
+
if RUBY_VERSION.start_with?('1.8')
|
103
|
+
raise 'not supported in ruby 1.8'
|
104
|
+
else
|
105
|
+
exec cmd
|
106
|
+
end
|
99
107
|
end
|
100
108
|
|
101
109
|
|
data/bin/briar_env.rb
CHANGED
data/bin/briar_help.rb
CHANGED
@@ -26,6 +26,10 @@ def help_experimental
|
|
26
26
|
Rainbow('EXPERIMENTAL').underline.magenta
|
27
27
|
end
|
28
28
|
|
29
|
+
def help_not_available_ruby18
|
30
|
+
Rainbow('RUBY > 1.8').underline.magenta
|
31
|
+
end
|
32
|
+
|
29
33
|
def help_deprecated(version, msg)
|
30
34
|
ANSI.cyan { "DEPRECATED #{version} - #{msg}" }
|
31
35
|
end
|
@@ -74,7 +78,6 @@ def help_see_xtc_profiles_help
|
|
74
78
|
"see #{Rainbow('$ briar help xtc-profiles').yellow} for details"
|
75
79
|
end
|
76
80
|
|
77
|
-
|
78
81
|
def help_customize
|
79
82
|
Rainbow('CUSTOMIZATION').green
|
80
83
|
end
|
@@ -207,6 +210,7 @@ def print_console_help
|
|
207
210
|
#{help_env_var(' IRBRC', 'location of custom .irbrc file - defaults to ./.irbrc')}
|
208
211
|
#{help_env_var(' BUNDLE_EXEC', 'start console with bundle exec - defaults to 0')}
|
209
212
|
|
213
|
+
#{help_not_available_ruby18}
|
210
214
|
EOF
|
211
215
|
end
|
212
216
|
|
@@ -309,17 +313,26 @@ def print_xtc_help
|
|
309
313
|
#{help_command('xtc')}
|
310
314
|
prints the available XTC device sets
|
311
315
|
|
312
|
-
#{help_command('xtc <device-set> [profile]')} #{help_experimental} #{help_nyi}
|
313
|
-
submits a job to the XTC targeting devices specified in < device-set >
|
314
316
|
|
317
|
+
#{help_command('xtc <device-set> [profile]')} #{help_experimental}
|
318
|
+
submits a job to the XTC targeting devices specified in < device-set >
|
315
319
|
if no profile is set, the 'default' profile in the xtc-cucumber.yml will be used
|
316
320
|
|
321
|
+
#{help_command('xtc <device-set> <profile> [build args]')} #{help_experimental}
|
322
|
+
submits a job to the XTC targeting devices specified in < device-set > using
|
323
|
+
the cucumber profile specified by < profile >. you can optionally pass build
|
324
|
+
arguments to to control your xamarin build script.
|
325
|
+
|
317
326
|
#{help_requires_env_vars}
|
318
|
-
#{help_env_var('
|
319
|
-
#{help_env_var('
|
320
|
-
#{help_env_var('
|
327
|
+
#{help_env_var(' IPA', 'path to the .ipa you submitting')}
|
328
|
+
#{help_env_var(' XTC_PROFILES', 'cucumber profiles for the XTC')}
|
329
|
+
#{help_env_var(' XTC_ACCOUNT', 'name of a directory in ~/.xamarin/test-cloud/<account> that contains the api token')}
|
321
330
|
#{help_example_comment('if a build script is defined, the .ipa will be built before submission')}
|
322
|
-
#{help_env_var('IPA_BUILD_SCRIPT', '(optional) script that generates the IPA')}
|
331
|
+
#{help_env_var(' IPA_BUILD_SCRIPT', '(optional) script that generates the IPA')}
|
332
|
+
#{help_example_comment('if you require other gems besides briar')}
|
333
|
+
#{help_env_var(' XTC_OTHER_GEMS_FILE', 'path to a file describing other gems that should be installed on the XTC')}
|
334
|
+
#{help_env_var(' XTC_BRIAR_GEM_DEV', "set to '1' to ensure the local version of briar will be uploaded to the XTC'")}
|
335
|
+
#{help_env_var('XTC_CALABASH_GEM_DEV', "set to '1' to ensure the local version of calabash will be uploaded to the XTC'")}
|
323
336
|
|
324
337
|
EOF
|
325
338
|
end
|
@@ -354,20 +367,31 @@ command, set the #{Rainbow('XTC_PROFILES').cyan} variable to your xtc-profiles.y
|
|
354
367
|
EOF
|
355
368
|
end
|
356
369
|
|
370
|
+
def print_tags_help
|
371
|
+
puts <<EOF
|
372
|
+
#{help_command('tags')} #{help_experimental}
|
373
|
+
generates a cucumber tag report
|
374
|
+
|
375
|
+
requires list_tags.rb in features/support/ directory
|
376
|
+
|
377
|
+
EOF
|
378
|
+
end
|
379
|
+
|
357
380
|
def print_usage
|
358
381
|
puts <<EOF
|
359
382
|
#{Rainbow("Welcome to briar #{Briar::VERSION}!").cyan}
|
360
383
|
|
361
384
|
briar help { command } for more information a command
|
362
385
|
|
363
|
-
console { sim6 [simulator version] | sim7 [simulator version] | <device-name> }
|
386
|
+
console { sim6 [simulator version] | sim7 [simulator version] | <device-name> } #{help_experimental}
|
364
387
|
install { calabash-server | <device-name> }
|
365
388
|
report [device]
|
366
389
|
resign #{help_experimental}
|
367
390
|
rm { sim-targets | dups [project-name] }
|
368
|
-
sim [{quit | <simulator version>}]
|
391
|
+
sim [{quit | <simulator version>}] #{help_experimental}
|
392
|
+
tags #{help_experimental}
|
369
393
|
version
|
370
|
-
xtc [<device-set> [profile]]
|
394
|
+
xtc { [<device-set> [profile]] | [<device-set> <profile> [build args] } #{help_experimental}
|
371
395
|
|
372
396
|
#{Rainbow('ADDITIONAL HELP TOPICS').green}
|
373
397
|
help .xamarin
|
@@ -2,6 +2,7 @@ require_relative './briar_dot_xamarin'
|
|
2
2
|
require_relative './briar_rm'
|
3
3
|
require_relative './briar_env'
|
4
4
|
|
5
|
+
require 'rainbow'
|
5
6
|
require 'ansi/logger'
|
6
7
|
|
7
8
|
@log = ANSI::Logger.new(STDOUT)
|
@@ -10,7 +11,7 @@ def ideviceinstaller(device, cmd, opts={})
|
|
10
11
|
default_opts = {:build_script => ENV['IPA_BUILD_SCRIPT'],
|
11
12
|
:ipa => ENV['IPA'],
|
12
13
|
:bundle_id => expect_bundle_id(),
|
13
|
-
:
|
14
|
+
:idevice_installer => expect_ideviceinstaller()}
|
14
15
|
opts = default_opts.merge(opts)
|
15
16
|
|
16
17
|
cmds = [:install, :uninstall, :reinstall]
|
@@ -23,17 +24,25 @@ def ideviceinstaller(device, cmd, opts={})
|
|
23
24
|
|
24
25
|
udid = read_device_info(device, :udid)
|
25
26
|
|
27
|
+
bin_path = opts[:idevice_installer]
|
28
|
+
|
26
29
|
if cmd == :install
|
27
30
|
if build_script
|
28
31
|
system "#{build_script}"
|
29
32
|
briar_remove_derived_data_dups
|
30
33
|
end
|
34
|
+
|
31
35
|
ipa = opts[:ipa]
|
32
36
|
expect_ipa(ipa)
|
33
37
|
|
34
|
-
|
38
|
+
cmd = "#{bin_path} -u #{udid} --install #{ipa}"
|
39
|
+
puts "#{Rainbow(cmd).green}"
|
40
|
+
system cmd
|
35
41
|
elsif cmd == :uninstall
|
36
|
-
|
42
|
+
bundle_id = opts[:bundle_id]
|
43
|
+
cmd = "#{bin_path} -u #{udid} --uninstall #{bundle_id}"
|
44
|
+
puts "#{Rainbow(cmd).green}"
|
45
|
+
system cmd
|
37
46
|
else
|
38
47
|
ideviceinstaller(device, :uninstall)
|
39
48
|
ideviceinstaller(device, :install)
|
data/bin/briar_rm.rb
CHANGED
@@ -13,19 +13,18 @@ def briar_remove_cal_targets
|
|
13
13
|
cal_targets = []
|
14
14
|
Find.find(sim_dir) do |path|
|
15
15
|
if path =~ /.*\-cal.app/
|
16
|
-
@log.
|
16
|
+
@log.info { "found '#{File.basename(path)}' in '#{File.dirname(path)}'" }
|
17
17
|
cal_targets << File.dirname(path)
|
18
18
|
Find.prune
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
if cal_targets.empty?
|
23
|
-
@log.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
FileUtils.rm_r path
|
23
|
+
@log.info { "found no *-cal.app targets in '#{sim_dir}'" }
|
24
|
+
else
|
25
|
+
cal_targets.each do |path|
|
26
|
+
FileUtils.rm_r path
|
27
|
+
end
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
data/bin/briar_sim.rb
CHANGED
data/bin/briar_tags.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rainbow'
|
2
|
+
require 'ansi/logger'
|
3
|
+
|
4
|
+
|
5
|
+
@log = ANSI::Logger.new(STDOUT)
|
6
|
+
|
7
|
+
|
8
|
+
def briar_tags(args)
|
9
|
+
arg_len = args.count
|
10
|
+
|
11
|
+
if arg_len != 0
|
12
|
+
@log.warn{ "expected no arguments but found '#{args}' - what can I do with that!?!" }
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
cmd = 'cucumber -d -f Cucumber::Formatter::ListTags'
|
17
|
+
puts "#{Rainbow(cmd).green}"
|
18
|
+
system(cmd)
|
19
|
+
end
|
data/bin/briar_xtc.rb
CHANGED
@@ -39,7 +39,12 @@ def briar_xtc_submit(device_set, profile, opts={})
|
|
39
39
|
default_opts = {:build_script => ENV['IPA_BUILD_SCRIPT'],
|
40
40
|
:ipa => ENV['IPA'],
|
41
41
|
:profiles => ENV['XTC_PROFILES'],
|
42
|
-
:account => expect_xtc_account()
|
42
|
+
:account => expect_xtc_account(),
|
43
|
+
:other_gems => ENV['XTC_OTHER_GEMS_FILE'],
|
44
|
+
:briar_dev => ENV['XTC_BRIAR_GEM_DEV'],
|
45
|
+
:calabash_dev => ENV['XTC_CALABASH_GEM_DEV'],
|
46
|
+
:rebuild => true}
|
47
|
+
|
43
48
|
|
44
49
|
opts = default_opts.merge(opts)
|
45
50
|
|
@@ -47,25 +52,71 @@ def briar_xtc_submit(device_set, profile, opts={})
|
|
47
52
|
|
48
53
|
if build_script
|
49
54
|
expect_build_script(build_script)
|
50
|
-
|
55
|
+
if opts[:rebuild]
|
56
|
+
cmd = "#{build_script}"
|
57
|
+
else
|
58
|
+
cmd = "#{build_script} -"
|
59
|
+
end
|
60
|
+
system cmd
|
51
61
|
briar_remove_derived_data_dups
|
52
62
|
end
|
53
63
|
|
54
|
-
xtc_gemfile = './xamarin/Gemfile'
|
55
|
-
|
56
|
-
briar_path = `bundle show briar`.strip
|
57
|
-
calabash_path = `bundle show calabash-cucumber`.strip
|
58
|
-
|
59
|
-
File.open(xtc_gemfile, 'w') { |file|
|
60
|
-
file.write("source 'https://rubygems.org'\n")
|
61
|
-
file.write("gem 'calabash-cucumber', :path => '#{calabash_path}'\n")
|
62
|
-
file.write("gem 'briar', :path => '#{briar_path}'\n")
|
63
|
-
file.write("gem 'faker'\n")
|
64
|
-
}
|
65
|
-
|
66
64
|
account = opts[:account]
|
67
65
|
api_key = read_api_token(account)
|
68
66
|
|
67
|
+
if opts[:briar_dev] == '1'
|
68
|
+
briar_path = `bundle show briar`.strip
|
69
|
+
system('gem uninstall briar --no-executables --ignore-dependencies --quiet',
|
70
|
+
:err => '/dev/null')
|
71
|
+
Dir.chdir(File.expand_path(briar_path)) do
|
72
|
+
system 'rake install'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
if opts[:calabash_dev] == '1'
|
77
|
+
calabash_path = `bundle show calabash-cucumber`.strip
|
78
|
+
system('gem uninstall calabash-cucumber --no-executables --ignore-dependencies --quiet',
|
79
|
+
:err => '/dev/null')
|
80
|
+
|
81
|
+
Dir.chdir(File.expand_path(calabash_path)) do
|
82
|
+
system 'rake install'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
other_gems = []
|
87
|
+
if opts[:other_gems]
|
88
|
+
path = File.expand_path(opts[:other_gems])
|
89
|
+
File.read(path).split("\n").each do |line|
|
90
|
+
# stay 1.8.7 compat
|
91
|
+
next if line.strip.length == 0 or line.chars.to_a.first.eql?('#')
|
92
|
+
other_gems << line.strip
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
if opts[:briar_dev] == '1' or opts[:calabash_dev] == '1'
|
97
|
+
|
98
|
+
xtc_gemfile = './xamarin/Gemfile'
|
99
|
+
|
100
|
+
File.open(xtc_gemfile, 'w') do |file|
|
101
|
+
file.write("source 'https://rubygems.org'\n")
|
102
|
+
if opts[:calabash_dev]
|
103
|
+
calabash_version = `bundle exec calabash-ios version`.strip
|
104
|
+
file.write("gem 'calabash-cucumber', '#{calabash_version}'\n")
|
105
|
+
end
|
106
|
+
|
107
|
+
if opts[:briar_dev]
|
108
|
+
briar_version = `bundle exec briar version`.strip
|
109
|
+
file.write("gem 'briar', '#{briar_version}'\n")
|
110
|
+
else
|
111
|
+
file.write("gem 'briar'")
|
112
|
+
end
|
113
|
+
|
114
|
+
other_gems.each do |gem|
|
115
|
+
file.write("#{gem}\n")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
69
120
|
|
70
121
|
sets = read_device_sets
|
71
122
|
if sets[device_set]
|
@@ -76,15 +127,10 @@ def briar_xtc_submit(device_set, profile, opts={})
|
|
76
127
|
|
77
128
|
ipa = File.basename(File.expand_path(expect_ipa(opts[:ipa])))
|
78
129
|
|
79
|
-
cmd = "
|
130
|
+
cmd = "test-cloud submit #{ipa} #{api_key} -d #{device_set} -c cucumber.yml -p #{profile}"
|
80
131
|
puts Rainbow("cd xamarin; #{cmd}").green
|
81
|
-
|
82
|
-
|
83
|
-
system cmd
|
84
|
-
end
|
85
|
-
rescue
|
86
|
-
# probably useless
|
87
|
-
@log.fatal{ 'could not submit job' }
|
132
|
+
Dir.chdir('./xamarin') do
|
133
|
+
exec cmd
|
88
134
|
end
|
89
135
|
end
|
90
136
|
|
@@ -99,10 +145,22 @@ def briar_xtc(args)
|
|
99
145
|
device_set = args[0]
|
100
146
|
profile = arg_len == 1 ? nil : args[1]
|
101
147
|
|
102
|
-
|
103
|
-
|
148
|
+
|
149
|
+
if arg_len == 3
|
150
|
+
rebuild_arg = args[2]
|
151
|
+
unless rebuild_arg == '-'
|
152
|
+
@log.fatal { "unknown optional argument '#{rebuild_arg}' expected '-'" }
|
153
|
+
exit 1
|
154
|
+
end
|
155
|
+
opts = {:rebuild => false}
|
156
|
+
else
|
157
|
+
opts = {:rebuild => true}
|
158
|
+
end
|
159
|
+
|
160
|
+
if arg_len > 3
|
161
|
+
@log.warn{ "expected at most 3 args by found '#{args}' - ignoring extra input" }
|
104
162
|
end
|
105
163
|
|
106
|
-
briar_xtc_submit(device_set, profile)
|
164
|
+
briar_xtc_submit(device_set, profile, opts)
|
107
165
|
end
|
108
166
|
|
data/lib/briar.rb
CHANGED
@@ -42,7 +42,6 @@ require 'calabash-cucumber'
|
|
42
42
|
require 'briar/version'
|
43
43
|
require 'briar/briar_core'
|
44
44
|
require 'briar/uia/briar_uia'
|
45
|
-
require 'briar/uia/briar_ipad_emulation'
|
46
45
|
|
47
46
|
require 'briar/alerts_and_sheets/alert_view'
|
48
47
|
require 'briar/alerts_and_sheets/action_sheet'
|
data/lib/briar/cucumber.rb
CHANGED
data/lib/briar/irbrc.rb
CHANGED
@@ -34,10 +34,13 @@ require 'calabash-cucumber/operations'
|
|
34
34
|
require 'calabash-cucumber/launch/simulator_helper'
|
35
35
|
#noinspection RubyResolve
|
36
36
|
require 'calabash-cucumber/launcher'
|
37
|
+
#noinspection RubyResolve
|
38
|
+
require 'calabash-cucumber/uia'
|
37
39
|
|
38
40
|
SIM=Calabash::Cucumber::SimulatorHelper
|
39
41
|
|
40
42
|
extend Calabash::Cucumber::Operations
|
43
|
+
include Calabash::Cucumber::IPad
|
41
44
|
|
42
45
|
#noinspection RubyUnusedLocalVariable
|
43
46
|
def embed(x,y=nil,z=nil)
|
@@ -58,7 +61,6 @@ include Briar::Picker::DateManipulation
|
|
58
61
|
include Briar::Picker::DateSteps
|
59
62
|
include Briar::Core
|
60
63
|
include Briar::UIA
|
61
|
-
include Briar::UIA::IPadEmulation
|
62
64
|
include Briar::Table
|
63
65
|
include Briar::ImageView
|
64
66
|
include Briar::Label
|
data/lib/briar/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: briar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4.b1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Moody
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbx-require-relative
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- bin/briar_resign.rb
|
146
146
|
- bin/briar_rm.rb
|
147
147
|
- bin/briar_sim.rb
|
148
|
+
- bin/briar_tags.rb
|
148
149
|
- bin/briar_xtc.rb
|
149
150
|
- briar.gemspec
|
150
151
|
- features/step_definitions/alerts_and_sheets/action_sheet_steps.rb
|
@@ -199,7 +200,6 @@ files:
|
|
199
200
|
- lib/briar/table.rb
|
200
201
|
- lib/briar/text_field.rb
|
201
202
|
- lib/briar/text_view.rb
|
202
|
-
- lib/briar/uia/briar_ipad_emulation.rb
|
203
203
|
- lib/briar/uia/briar_uia.rb
|
204
204
|
- lib/briar/version.rb
|
205
205
|
- spec/spec_helper.rb
|
@@ -219,14 +219,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
219
|
version: 1.8.7
|
220
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
221
|
requirements:
|
222
|
-
- - '
|
222
|
+
- - '>'
|
223
223
|
- !ruby/object:Gem::Version
|
224
|
-
version:
|
224
|
+
version: 1.3.1
|
225
225
|
requirements: []
|
226
226
|
rubyforge_project:
|
227
227
|
rubygems_version: 2.2.2
|
228
228
|
signing_key:
|
229
229
|
specification_version: 4
|
230
|
-
summary: briar-0.1.
|
230
|
+
summary: briar-0.1.4.b1
|
231
231
|
test_files:
|
232
232
|
- spec/spec_helper.rb
|
@@ -1,174 +0,0 @@
|
|
1
|
-
require 'calabash-cucumber'
|
2
|
-
|
3
|
-
module Briar
|
4
|
-
module UIA
|
5
|
-
module IPadEmulation
|
6
|
-
|
7
|
-
class Cache
|
8
|
-
|
9
|
-
attr_accessor :window_index
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@window_index = nil
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
# use the apple localization codes
|
18
|
-
IPAD_1X_2X_BUTTON_LABELS = {
|
19
|
-
:en => {:emulated_1x => 'Switch to full screen mode',
|
20
|
-
:emulated_2x => 'Switch to normal mode'}
|
21
|
-
}
|
22
|
-
|
23
|
-
def ensure_uia_and_ipad()
|
24
|
-
unless ipad?
|
25
|
-
screenshot_and_raise 'this function is only for the iPad'
|
26
|
-
end
|
27
|
-
|
28
|
-
unless ios7?
|
29
|
-
screenshot_and_raise 'this function only works on iOS 7'
|
30
|
-
end
|
31
|
-
|
32
|
-
unless uia_available?
|
33
|
-
screenshot_and_raise 'this function requires the app be launched with instruments'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
def ipad_1x_2x_labels_hash(lang_code)
|
39
|
-
ht = IPAD_1X_2X_BUTTON_LABELS[lang_code]
|
40
|
-
if ht.nil?
|
41
|
-
screenshot_and_raise "did not recognize language code '#{lang_code}'"
|
42
|
-
end
|
43
|
-
ht
|
44
|
-
end
|
45
|
-
|
46
|
-
def ipad_1x_2x_labels_array(lang_code)
|
47
|
-
ht = ipad_1x_2x_labels_hash lang_code
|
48
|
-
[ht[:emulated_1x], ht[:emulated_2x]]
|
49
|
-
end
|
50
|
-
|
51
|
-
def uia_ipad_scale(opts={})
|
52
|
-
default_opts = {:language_code => :en,
|
53
|
-
:ensure_uia_and_ipad => false,
|
54
|
-
:cache => Cache.new}
|
55
|
-
opts = default_opts.merge(opts)
|
56
|
-
|
57
|
-
if opts[:ensure_uia_and_ipad]
|
58
|
-
ensure_uia_and_ipad()
|
59
|
-
opts[:ensure_uia_and_ipad] = false
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
|
-
idx = window_index_of_ipad_1x_2x_button opts
|
64
|
-
|
65
|
-
res = uia("UIATarget.localTarget().frontMostApp().windows()[#{idx}].buttons()[0].label()")
|
66
|
-
val = res['value']
|
67
|
-
|
68
|
-
candidates = ipad_1x_2x_labels_array(opts[:language_code])
|
69
|
-
|
70
|
-
if val.eql?(candidates[0])
|
71
|
-
:emulated_1x
|
72
|
-
else
|
73
|
-
:emulated_2x
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def window_index_of_ipad_1x_2x_button(opts={})
|
78
|
-
|
79
|
-
default_opts = {:language_code => :en,
|
80
|
-
:ensure_uia_and_ipad => false,
|
81
|
-
:raise_if_not_found => true,
|
82
|
-
:cache => Cache.new}
|
83
|
-
opts = default_opts.merge(opts)
|
84
|
-
|
85
|
-
cache = opts[:cache]
|
86
|
-
return cache.window_index unless cache.window_index.nil?
|
87
|
-
|
88
|
-
|
89
|
-
ensure_uia_and_ipad() if opts[:ensure_uia_and_ipad]
|
90
|
-
|
91
|
-
window_count = uia('UIATarget.localTarget().frontMostApp().windows().length')['value']
|
92
|
-
index = 0
|
93
|
-
|
94
|
-
lang_code = opts[:language_code]
|
95
|
-
candidates = ipad_1x_2x_labels_array(lang_code)
|
96
|
-
success = false
|
97
|
-
loop do
|
98
|
-
res = uia("UIATarget.localTarget().frontMostApp().windows()[#{index}].buttons()[0].label()")
|
99
|
-
if candidates.include?(res['value'])
|
100
|
-
success = true
|
101
|
-
break
|
102
|
-
end
|
103
|
-
index = index + 1
|
104
|
-
break unless index < window_count
|
105
|
-
end
|
106
|
-
|
107
|
-
unless success
|
108
|
-
if opts[:raise_if_not_found]
|
109
|
-
screenshot_and_raise "could not find window with button label '#{candidates[0]}' or '#{candidates[1]}' - is your an iphone app emulated on an ipad?"
|
110
|
-
end
|
111
|
-
index = -1
|
112
|
-
end
|
113
|
-
cache.window_index = index
|
114
|
-
index
|
115
|
-
end
|
116
|
-
|
117
|
-
def uia_tap_ipad_scale_button(opts={})
|
118
|
-
default_opts = {:language_code => :en,
|
119
|
-
:ensure_uia_and_ipad => false,
|
120
|
-
:step_pause_after_touch => BRIAR_STEP_PAUSE,
|
121
|
-
:cache => Cache.new}
|
122
|
-
opts = default_opts.merge(opts)
|
123
|
-
ensure_uia_and_ipad() if opts[:ensure_uia_and_ipad]
|
124
|
-
|
125
|
-
idx = window_index_of_ipad_1x_2x_button(opts)
|
126
|
-
uia("UIATarget.localTarget().frontMostApp().windows()[#{idx}].buttons()[0].tap()")
|
127
|
-
sleep(opts[:step_pause_after_touch])
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
def ensure_ipad_emulation_scale(scale, opts={})
|
132
|
-
allowed = [:emulated_1x, :emulated_2x]
|
133
|
-
unless allowed.include?(scale)
|
134
|
-
screenshot_and_raise "'#{scale}' is not one of '#{allowed}' allowed args"
|
135
|
-
end
|
136
|
-
|
137
|
-
cache = Cache.new
|
138
|
-
|
139
|
-
return unless iphone_app_emulated_on_ipad?
|
140
|
-
|
141
|
-
default_opts = {:language_code => :en,
|
142
|
-
:ensure_uia_and_ipad => false,
|
143
|
-
:step_pause_after_touch => BRIAR_STEP_PAUSE,
|
144
|
-
:cache => cache}
|
145
|
-
opts = default_opts.merge(opts)
|
146
|
-
|
147
|
-
actual_scale = uia_ipad_scale(opts)
|
148
|
-
|
149
|
-
if actual_scale != scale
|
150
|
-
uia_tap_ipad_scale_button opts
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
def ensure_ipad_emulation_1x(opts={})
|
155
|
-
default_opts = {:language_code => :en,
|
156
|
-
:ensure_uia_and_ipad => false,
|
157
|
-
:step_pause_after_touch => BRIAR_STEP_PAUSE,
|
158
|
-
:cache => Cache.new}
|
159
|
-
opts = default_opts.merge(opts)
|
160
|
-
ensure_ipad_emulation_scale(:emulated_1x, opts)
|
161
|
-
end
|
162
|
-
|
163
|
-
def ensure_ipad_emulation_2x(opts={})
|
164
|
-
default_opts = {:language_code => :en,
|
165
|
-
:ensure_uia_and_ipad => false,
|
166
|
-
:step_pause_after_touch => BRIAR_STEP_PAUSE,
|
167
|
-
:cache => Cache.new}
|
168
|
-
opts = default_opts.merge(opts)
|
169
|
-
ensure_ipad_emulation_scale(:emulated_2x, opts)
|
170
|
-
end
|
171
|
-
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|