gurke 1.0.1 → 2.0.0.dev.1.b17

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.
@@ -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