baraviz 0.6.pre → 0.7
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/baraviz.gemspec +1 -0
- data/lib/baraviz/cucumber_formatter.rb +10 -4
- data/lib/baraviz/observer.rb +54 -11
- data/lib/baraviz/screenshot_observer.rb +31 -0
- data/lib/baraviz/version.rb +1 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ca77798ad727c9d667210f2a80c436f33dfc3a0
|
4
|
+
data.tar.gz: f9bd0856938c22c7a48a2d0523099977c8601cbe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 752736d2a33dc3d7270a3e89f9f980437ded814f2f4ba4573e640eea2ea0936988faf6eef279ed63bb01c620e8136a48107c891b566d827129b1dcae59d362d3
|
7
|
+
data.tar.gz: ce02663831dd584bf59bb81665c86f7195fa59c83c99777c62744f4049f4c2fc6029d5a46032df624810ba1bb4e4e224c8ab3b7fa9803aeb5fd214a5e550e8f0
|
data/baraviz.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.add_dependency 'capybara', '>= 0.3.5'
|
23
23
|
spec.add_dependency 'rgl', '>= 0.4'
|
24
|
+
spec.add_dependency 'capybara-screenshot', '>= 1.0'
|
24
25
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
25
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
27
|
end
|
@@ -1,24 +1,30 @@
|
|
1
1
|
require 'cucumber/formatter/io'
|
2
2
|
require 'rgl/dot'
|
3
|
-
require_relative '
|
3
|
+
require_relative 'screenshot_observer'
|
4
4
|
|
5
5
|
module Baraviz
|
6
6
|
class CucumberFormatter
|
7
7
|
include Cucumber::Formatter::Io
|
8
8
|
|
9
9
|
def initialize config
|
10
|
-
@io =
|
10
|
+
@io = ensure_file config.out_stream, Baraviz.name
|
11
11
|
config.on_event :test_run_started, &method(:on_test_run_started)
|
12
12
|
config.on_event :test_run_finished, &method(:on_test_run_finished)
|
13
|
+
config.on_event :test_case_finished, &method(:on_test_case_finished)
|
13
14
|
end
|
14
15
|
|
15
16
|
def on_test_run_started event
|
16
|
-
|
17
|
+
screenshot_dir = File.dirname @io.path
|
18
|
+
@observer = Baraviz::ScreenshotObserver.new Capybara.current_session, screenshot_dir
|
17
19
|
end
|
18
20
|
|
19
21
|
def on_test_run_finished event
|
20
|
-
@io.write @observer.
|
22
|
+
@io.write @observer.graph.to_s
|
21
23
|
@io.close
|
22
24
|
end
|
25
|
+
|
26
|
+
def on_test_case_finished event
|
27
|
+
@observer.forget_next!
|
28
|
+
end
|
23
29
|
end
|
24
30
|
end
|
data/lib/baraviz/observer.rb
CHANGED
@@ -4,10 +4,12 @@ require 'capybara'
|
|
4
4
|
|
5
5
|
module Baraviz
|
6
6
|
class Observer
|
7
|
-
|
7
|
+
attr_accessor :external_call
|
8
8
|
|
9
9
|
def initialize session
|
10
10
|
@graph = RGL::DirectedAdjacencyGraph.new
|
11
|
+
@forget_next = false
|
12
|
+
@external_call = true
|
11
13
|
install_capybara_hooks! session
|
12
14
|
end
|
13
15
|
|
@@ -16,21 +18,62 @@ module Baraviz
|
|
16
18
|
Capybara::Session::DSL_METHODS.each do |method|
|
17
19
|
session.define_singleton_method :"_#{method}_old", &session.method(method)
|
18
20
|
session.define_singleton_method method do |*args, &block|
|
19
|
-
|
20
|
-
|
21
|
-
new_page = session.method(:"_current_url_old").call
|
21
|
+
external_call = this.external_call
|
22
|
+
this.external_call = false
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
begin
|
25
|
+
old_page = session.method(:"_current_url_old").call
|
26
|
+
this.observe_page old_page if external_call
|
27
|
+
|
28
|
+
result = session.method(:"_#{method}_old").call(*args, &block)
|
29
|
+
new_page = session.method(:"_current_url_old").call
|
30
|
+
this.observe_page new_page if external_call
|
31
|
+
|
32
|
+
if external_call && old_page != new_page
|
33
|
+
this.observe_page_change old_page, new_page
|
34
|
+
end
|
26
35
|
|
27
|
-
|
36
|
+
result
|
37
|
+
ensure
|
38
|
+
this.external_call = true if external_call
|
39
|
+
end
|
28
40
|
end
|
29
41
|
end
|
30
42
|
end
|
31
43
|
|
44
|
+
def forget_next!
|
45
|
+
@forget_next = true
|
46
|
+
end
|
47
|
+
|
48
|
+
def observe_page page
|
49
|
+
# Called for subclasses
|
50
|
+
end
|
51
|
+
|
32
52
|
def observe_page_change old_page, new_page
|
33
|
-
@graph.add_edge old_page, new_page
|
53
|
+
@graph.add_edge old_page, new_page unless @forget_next
|
54
|
+
@forget_next = false
|
55
|
+
end
|
56
|
+
|
57
|
+
def make_node v
|
58
|
+
uri = URI.parse v.to_s
|
59
|
+
RGL::DOT::Node.new({'name' => v, 'label' => uri.path})
|
60
|
+
end
|
61
|
+
|
62
|
+
def make_edge u, v
|
63
|
+
RGL::DOT::DirectedEdge.new('from' => u, 'to' => v)
|
64
|
+
end
|
65
|
+
|
66
|
+
def graph
|
67
|
+
graph = RGL::DOT::Digraph.new
|
68
|
+
@graph.each_vertex do |v|
|
69
|
+
graph << make_node(v)
|
70
|
+
end
|
71
|
+
|
72
|
+
@graph.each_edge do |u, v|
|
73
|
+
graph << make_edge(u, v)
|
74
|
+
end
|
75
|
+
|
76
|
+
graph
|
34
77
|
end
|
35
78
|
|
36
79
|
def clustered_graph
|
@@ -41,13 +84,13 @@ module Baraviz
|
|
41
84
|
@graph.each_vertex do |v|
|
42
85
|
uri = URI.parse v.to_s
|
43
86
|
subgraph = subgraphs[[uri.host, uri.port]]
|
44
|
-
subgraph <<
|
87
|
+
subgraph << make_node(v)
|
45
88
|
end
|
46
89
|
|
47
90
|
graph = RGL::DOT::Digraph.new
|
48
91
|
subgraphs.values.each &graph.method(:<<)
|
49
92
|
@graph.each_edge do |u, v|
|
50
|
-
graph <<
|
93
|
+
graph << make_edge(u, v)
|
51
94
|
end
|
52
95
|
|
53
96
|
graph
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'capybara-screenshot'
|
2
|
+
require_relative 'observer'
|
3
|
+
|
4
|
+
module Baraviz
|
5
|
+
class ScreenshotObserver < Observer
|
6
|
+
def initialize session, screenshot_dir
|
7
|
+
@screenshots = {}
|
8
|
+
@dir = screenshot_dir
|
9
|
+
super session
|
10
|
+
end
|
11
|
+
|
12
|
+
def observe_page page
|
13
|
+
@screenshots[page] ||= take_screenshot
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def take_screenshot
|
18
|
+
path = File.join @dir, "#{Capybara.current_url.gsub(/[^A-Za-z0-9_\-]/, '-')}.png"
|
19
|
+
result = Capybara::Screenshot.registered_drivers.fetch(Capybara.current_driver) do |driver_name|
|
20
|
+
warn "capybara-screenshot could not detect a screenshot driver for '#{Capybara.current_driver}'. Saving with default with unknown results."
|
21
|
+
Capybara::Screenshot.registered_drivers[:default]
|
22
|
+
end.call(Capybara.page.driver, path)
|
23
|
+
if (result == :not_supported) then nil else File.basename(path) end
|
24
|
+
end
|
25
|
+
|
26
|
+
def make_node v
|
27
|
+
uri = URI.parse v.to_s
|
28
|
+
RGL::DOT::Node.new({'name' => v, 'label' => uri.path, 'image' => @screenshots[v], 'URL' => @screenshots[v]}, RGL::DOT::NODE_OPTS + ['image'])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/baraviz/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baraviz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.7'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Worthington
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: capybara-screenshot
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,7 @@ files:
|
|
80
94
|
- lib/baraviz.rb
|
81
95
|
- lib/baraviz/cucumber_formatter.rb
|
82
96
|
- lib/baraviz/observer.rb
|
97
|
+
- lib/baraviz/screenshot_observer.rb
|
83
98
|
- lib/baraviz/version.rb
|
84
99
|
homepage: https://github.com/simonwo/baraviz
|
85
100
|
licenses:
|
@@ -96,9 +111,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
111
|
version: '0'
|
97
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
113
|
requirements:
|
99
|
-
- - "
|
114
|
+
- - ">="
|
100
115
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
116
|
+
version: '0'
|
102
117
|
requirements: []
|
103
118
|
rubyforge_project:
|
104
119
|
rubygems_version: 2.6.13
|