flaky 0.0.21 → 0.0.22
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 +4 -4
- data/bin/flake +24 -14
- data/lib/flaky.rb +5 -2
- data/lib/flaky/run.rb +4 -2
- data/lib/flaky/run/all_tests.rb +1 -1
- data/lib/flaky/run/from_file.rb +1 -1
- data/lib/flaky/run/one_test.rb +1 -1
- data/lib/flaky/run/two_pass.rb +2 -2
- data/lib/screen_recording.rb +7 -0
- data/readme.md +42 -0
- data/release_notes.md +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a66676fa3248d3b07816db77305c598ca448155
|
4
|
+
data.tar.gz: b02de59738db71d7737d4bdcb03286935965a964
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9f8b2a16dbe1eb018a1e201880a07c46182938b17ff8582664f39fcc4e4189037fa434e78b80e664e3be4311867852bcb99f52446ff1865ba3f7ab9f3ec8242
|
7
|
+
data.tar.gz: 48293b05c801107679a43639a022a8e9c20e2d270c1e9bbf92712b7d24fb4955094f397222cc8deadf0f8944e385184dcd32114c9ae3dd2c21b062076d1f7f5a
|
data/bin/flake
CHANGED
@@ -16,33 +16,43 @@ flake 3 ios files.txt
|
|
16
16
|
If one run passes or 3 runs fail, then we move onto the next test.
|
17
17
|
MSG
|
18
18
|
|
19
|
-
|
19
|
+
args = ARGV
|
20
|
+
|
21
|
+
disable_video = args.index '--no-video'
|
22
|
+
if disable_video != nil
|
23
|
+
Flaky.no_video = true
|
24
|
+
args.delete_at(disable_video) # remove flag from args
|
25
|
+
end
|
26
|
+
|
27
|
+
puts "Recording Video: #{!Flaky.no_video}"
|
28
|
+
|
29
|
+
if args && args.length === 1 && args.first === 'auth'
|
20
30
|
Flaky::AppleScript.beat_security_agent
|
21
31
|
exit
|
22
|
-
elsif
|
32
|
+
elsif args && args.length === 3
|
23
33
|
# .to_i will convert any string to 0 so check using a match regex.
|
24
|
-
if
|
25
|
-
raise 'First pass must be 1' unless
|
34
|
+
if args[0].match(/\d+/) && args[1].match(/\d+/)
|
35
|
+
raise 'First pass must be 1' unless args[0].to_i == 1
|
26
36
|
# flake 1 2 ios
|
27
|
-
pass_1 =
|
28
|
-
count =
|
29
|
-
os =
|
37
|
+
pass_1 = args[0] # 1
|
38
|
+
count = args[1] # 2
|
39
|
+
os = args[2] # ios
|
30
40
|
puts "Running all #{os} tests 1x #{count}x"
|
31
41
|
Flaky.two_pass count: count, os: os
|
32
42
|
exit
|
33
43
|
else
|
34
44
|
# rake 3 ios files.txt
|
35
|
-
count =
|
36
|
-
os =
|
37
|
-
file =
|
38
|
-
raise 'File must end in .txt' unless File.extname(
|
45
|
+
count = args.first
|
46
|
+
os = args[1]
|
47
|
+
file = args.last
|
48
|
+
raise 'File must end in .txt' unless File.extname(args.last).downcase == '.txt'
|
39
49
|
puts "Running select #{os} tests from file #{file} #{count}x"
|
40
50
|
Flaky.run_from_file count: count, os: os, file: file
|
41
51
|
exit
|
42
52
|
end
|
43
53
|
|
44
54
|
else
|
45
|
-
unless
|
55
|
+
unless args && args.length === 2
|
46
56
|
puts usage_string
|
47
57
|
exit
|
48
58
|
end
|
@@ -50,9 +60,9 @@ end
|
|
50
60
|
|
51
61
|
# flaky 1 ios[test_name]
|
52
62
|
|
53
|
-
count =
|
63
|
+
count = args.first
|
54
64
|
|
55
|
-
last =
|
65
|
+
last = args.last
|
56
66
|
single_test_match = last.match(/(.+)\[(.*)\]$/)
|
57
67
|
all_tests_match = last.match(/(.+)$/)
|
58
68
|
|
data/lib/flaky.rb
CHANGED
@@ -9,8 +9,11 @@ require 'posix/spawn' # http://rubygems.org/gems/posix-spawn
|
|
9
9
|
require 'digest/md5'
|
10
10
|
|
11
11
|
module Flaky
|
12
|
-
VERSION = '0.0.
|
13
|
-
DATE = '2014-01-
|
12
|
+
VERSION = '0.0.22' unless defined? ::Flaky::VERSION
|
13
|
+
DATE = '2014-01-03' unless defined? ::Flaky::DATE
|
14
|
+
|
15
|
+
class << self; attr_accessor :no_video; end
|
16
|
+
self.no_video = false; # set default value
|
14
17
|
|
15
18
|
# require internal files
|
16
19
|
require_relative 'flaky/appium'
|
data/lib/flaky/run.rb
CHANGED
@@ -160,8 +160,10 @@ module Flaky
|
|
160
160
|
FileUtils.mkdir_p File.dirname(movie_path)
|
161
161
|
movie_src = '/tmp/video.mov'
|
162
162
|
if File.exists?(movie_src)
|
163
|
-
|
164
|
-
|
163
|
+
unless Flaky.no_video
|
164
|
+
# save movie on failure
|
165
|
+
FileUtils.copy movie_src, movie_path if !passed
|
166
|
+
end
|
165
167
|
# always clean up movie
|
166
168
|
File.delete movie_src if File.exists? movie_src
|
167
169
|
end
|
data/lib/flaky/run/all_tests.rb
CHANGED
@@ -28,7 +28,7 @@ module Flaky
|
|
28
28
|
count.times do
|
29
29
|
File.open('/tmp/flaky/current.txt', 'a') { |f| f.puts "Running: #{test_name} on #{os}" }
|
30
30
|
appium.start unless running_on_sauce
|
31
|
-
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}']"
|
31
|
+
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}',#{Flaky.no_video}]"
|
32
32
|
passed = flaky.execute run_cmd: run_cmd, test_name: test_name, appium: appium, sauce: running_on_sauce
|
33
33
|
break if passed # move onto the next test after one successful run
|
34
34
|
end
|
data/lib/flaky/run/from_file.rb
CHANGED
@@ -47,7 +47,7 @@ module Flaky
|
|
47
47
|
|
48
48
|
count.times do
|
49
49
|
appium.start unless running_on_sauce
|
50
|
-
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}']"
|
50
|
+
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}',#{Flaky.no_video}]"
|
51
51
|
passed = flaky.execute run_cmd: run_cmd, test_name: test_name, appium: appium, sauce: running_on_sauce
|
52
52
|
break if passed # move onto the next test after one successful run
|
53
53
|
end
|
data/lib/flaky/run/one_test.rb
CHANGED
@@ -34,7 +34,7 @@ module Flaky
|
|
34
34
|
|
35
35
|
count.times do
|
36
36
|
appium.start unless running_on_sauce
|
37
|
-
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}']"
|
37
|
+
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}',#{Flaky.no_video}]"
|
38
38
|
flaky.execute run_cmd: run_cmd, test_name: test_name, appium: appium, sauce: running_on_sauce
|
39
39
|
end
|
40
40
|
|
data/lib/flaky/run/two_pass.rb
CHANGED
@@ -34,7 +34,7 @@ module Flaky
|
|
34
34
|
count1.times do
|
35
35
|
File.open('/tmp/flaky/current.txt', 'a') { |f| f.puts "Running: #{test_name} on #{os}" }
|
36
36
|
appium.start unless running_on_sauce
|
37
|
-
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}']"
|
37
|
+
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}',#{Flaky.no_video}]"
|
38
38
|
passed = flaky.execute(run_cmd: run_cmd, test_name: test_name, appium: appium, sauce: running_on_sauce)
|
39
39
|
break if passed # move onto the next test after one successful run
|
40
40
|
end
|
@@ -64,7 +64,7 @@ module Flaky
|
|
64
64
|
count2.times do
|
65
65
|
File.open('/tmp/flaky/current.txt', 'a') { |f| f.puts "Running: #{test_name} on #{os}" }
|
66
66
|
appium.start unless running_on_sauce
|
67
|
-
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}']"
|
67
|
+
run_cmd = "cd #{current_dir}; rake #{os.downcase}['#{name}',#{Flaky.no_video}]"
|
68
68
|
passed = flaky.execute run_cmd: run_cmd, test_name: test_name, appium: appium, sauce: running_on_sauce
|
69
69
|
break if passed # move onto the next test after one successful run
|
70
70
|
end
|
data/lib/screen_recording.rb
CHANGED
@@ -17,6 +17,13 @@ module Flaky
|
|
17
17
|
|
18
18
|
raise 'Invalid os. Must be ios or android' unless %w[ios android].include? os
|
19
19
|
raise 'Invalid path. Must end with .mov' unless File.extname(path) == '.mov'
|
20
|
+
raise 'Invalid path. Must not be a dir' if File.exists?(path) && File.directory?(path)
|
21
|
+
|
22
|
+
# ensure we have exactly one screen-recording process
|
23
|
+
# wait for killall to complete
|
24
|
+
Process::waitpid(spawn('killall', '-9', 'screen-recording', :in => '/dev/null', :out => '/dev/null', :err => '/dev/null'))
|
25
|
+
|
26
|
+
File.delete(path) if File.exists? path
|
20
27
|
|
21
28
|
pid = spawn(screen_recording_binary, os, path,
|
22
29
|
:in => '/dev/null', :out => '/dev/null', :err => '/dev/null')
|
data/readme.md
CHANGED
@@ -46,3 +46,45 @@ Run `flake auth` to automatically dismiss security dialogs.
|
|
46
46
|
- Appium server is restarted
|
47
47
|
- [spec](https://github.com/bootstraponline/spec) test logs are saved and colored
|
48
48
|
- [Appium](https://github.com/appium/appium) logs are saved and colored
|
49
|
+
|
50
|
+
--
|
51
|
+
|
52
|
+
#### logs & video
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
# Sample setup/teardown that saves logs and records videos.
|
56
|
+
# Appium::Driver.new(app_path: env_app_path, debug: true,
|
57
|
+
# device: device, device_cap: device_cap,
|
58
|
+
# export_session: true).start_driver
|
59
|
+
#
|
60
|
+
# The following code goes after Driver.new.start_driver
|
61
|
+
|
62
|
+
def save_logs
|
63
|
+
file = '/tmp/flaky_logs.txt'
|
64
|
+
logs = nil
|
65
|
+
|
66
|
+
begin
|
67
|
+
logs = $driver.driver.manage.logs.get(:logcat)
|
68
|
+
rescue # try iOS
|
69
|
+
logs = $driver.driver.manage.logs.get(:syslog)
|
70
|
+
end
|
71
|
+
|
72
|
+
File.open(file, 'w') do |f|
|
73
|
+
# Save only the message from Selenium::WebDriver::LogEntry
|
74
|
+
f.write (logs.map { |line| line.message }).join("\n")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
puts "Recording #{device} to /tmp/video.mov"
|
79
|
+
flaky_screen_recording_pid = Flaky.screen_recording_start os: device, path: '/tmp/video.mov'
|
80
|
+
|
81
|
+
Minitest.after_run do
|
82
|
+
if $driver
|
83
|
+
save_logs
|
84
|
+
puts "Ending pid: #{flaky_screen_recording_pid}"
|
85
|
+
Flaky.screen_recording_stop flaky_screen_recording_pid # save video
|
86
|
+
$driver.x
|
87
|
+
end
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
data/release_notes.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
#### v0.0.21 2014-01-02
|
2
|
+
|
3
|
+
- [10babb7](https://github.com/appium/flaky/commit/10babb7dcee2e811c6fb6a78d5dcf2c6fffba2f2) Release 0.0.21
|
4
|
+
- [3d93fb2](https://github.com/appium/flaky/commit/3d93fb2b2bd6dd2b8a453750c5425c73cf3db570) Add screen recording to flaky
|
5
|
+
- [ec67868](https://github.com/appium/flaky/commit/ec6786818640f22183ce146f3bd75e868d8deada) Fix spacing
|
6
|
+
|
7
|
+
|
1
8
|
#### v0.0.20 2013-12-26
|
2
9
|
|
3
10
|
- [858047e](https://github.com/appium/flaky/commit/858047e530e8d1e4294bfaa91f26492b36a68fda) Release 0.0.20
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flaky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- code@bootstraponline.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chronic_duration
|