gurke 1.0.1 → 2.0.0.dev.1.b17

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,21 +0,0 @@
1
- module Gurke
2
- module Formatters
3
- class Base
4
- attr_reader :main, :options
5
-
6
- def initialize(main, options)
7
- @main, @options = main, options
8
- end
9
-
10
- def current
11
- Gurke.current
12
- end
13
-
14
- class << self
15
- def gurkig?
16
- true
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,108 +0,0 @@
1
- require 'fileutils'
2
- require 'headless'
3
-
4
- module Gurke
5
- module Formatters
6
- class Headless < Base
7
- attr_reader :tmpdir
8
-
9
- def initialize(*args)
10
- super
11
-
12
- @tmpdir = options.delete(:tmpdir) { |el| Dir.mktmpdir }
13
- @headless = ::Headless.new video: video_options
14
- @index = 0
15
- end
16
-
17
- def video_options
18
- {
19
- codec: 'libvpx',
20
- log_file_path: File.join(tmpdir, 'ffmpeg.log'),
21
- tmp_file_path: File.join(tmpdir, 'ffmpeg.tmp.webm')
22
- }
23
- end
24
-
25
- def dir
26
- options[:dir] || 'report/recoding'
27
- end
28
-
29
- def recording?
30
- !!options[:recording]
31
- end
32
-
33
- def record_all?
34
- !!options[:record_all]
35
- end
36
-
37
- # -- Start / Stop --
38
-
39
- def before_features(features)
40
- @headless.start
41
- at_exit { destroy }
42
- end
43
-
44
- def after_features(features)
45
- destroy
46
-
47
- # TODO: Dir / Template / Whatever - just test atm
48
- end
49
-
50
- def before_feature(feature)
51
- dir = File.join(self.dir.to_s, feature.short_name.to_s)
52
-
53
- FileUtils.rm_rf dir if File.exists? dir
54
- FileUtils.mkdir_p dir
55
- end
56
-
57
- # -- Intercept scenarios --
58
-
59
- def before_feature_element(scenario)
60
- if recording?
61
- @headless.video.start_capture
62
- end
63
- end
64
-
65
- def after_feature_element(scenario)
66
- if recording?
67
- if scenario.failed? || record_all?
68
- # TODO: Dir / Template / Whatever - just test atm
69
-
70
- file = File.join(dir, (current.feature.short_name || 'nil'), (scenario.name || 'nil'), 'video.webm')
71
- FileUtils.mkdir_p File.dirname file
72
-
73
- @headless.video.stop_and_save file
74
- else
75
- @headless.video.stop_and_discard
76
- end
77
- end
78
-
79
- @index = 0
80
- end
81
-
82
- # -- Intercept steps --
83
-
84
- def manual_step(step, opts)
85
- take_sceenshot step
86
- end
87
-
88
- def after_step(step)
89
- take_sceenshot step
90
- end
91
-
92
- private
93
- def destroy
94
- @headless.destroy if @headless
95
- end
96
-
97
- def take_sceenshot(step)
98
- return if step.background?
99
-
100
- # TODO: Dir / Template / Whatever - just test atm
101
- file = File.join(dir, current.feature.short_name, current.scenario.name, "#{@index += 1} - #{step.keyword}#{step.name}.png")
102
-
103
- FileUtils.mkdir_p File.dirname file
104
- @headless.take_screenshot "'#{file.gsub("'", "\\'")}'"
105
- end
106
- end
107
- end
108
- end
@@ -1,42 +0,0 @@
1
- module Gurke
2
- class Hooks
3
- attr_reader :hooks
4
-
5
- def initialize
6
- @hooks = {}
7
- end
8
-
9
- def add(target, &block)
10
- target.to_s.tap do |target|
11
- hooks[target] ||= []
12
- hooks[target] << block
13
- end
14
- end
15
-
16
- def invoke(target, *args)
17
- return unless hooks[target]
18
-
19
- hooks[target].each do |hook|
20
- hook.call *args
21
- end
22
- end
23
-
24
- class << self
25
- def before; @before ||= new end
26
- def after; @after ||= new end
27
- end
28
-
29
- class Formatter < Formatters::Base
30
- %w(features feature scenario step).each do |name|
31
- define_method "before_#{name}" do |*args|
32
- Hooks.before.invoke name, *args
33
- end
34
- define_method "after_#{name}" do |*args|
35
- Hooks.after.invoke name, *args
36
- end
37
- end
38
- end
39
-
40
- ::Gurke::Formatter.use Formatter
41
- end
42
- end
@@ -1,16 +0,0 @@
1
- # Patch configuration to always use
2
- module Cucumber
3
- module Cli
4
- class Configuration
5
- alias_method :orig_formatter_class, :formatter_class
6
- def formatter_class(format)
7
- unless @__gurke_original_formatter_registered
8
- ::Gurke::Formatter.use orig_formatter_class(format)
9
- @__gurke_original_formatter_registered = true
10
- end
11
-
12
- ::Gurke::Formatter
13
- end
14
- end
15
- end
16
- end