gatling 1.0.8 → 1.0.9
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.
- data/.gitignore +4 -0
- data/README.rdoc +9 -6
- data/Rakefile +1 -1
- data/lib/gatling.rb +14 -14
- data/lib/gatling/capture_element.rb +8 -4
- data/lib/gatling/comparison.rb +41 -4
- data/lib/gatling/config.rb +47 -10
- data/lib/gatling/image.rb +10 -9
- data/lib/gatling/matchers/look_like_matcher.rb +1 -1
- data/lib/gatling/version.rb +1 -1
- data/spec/acceptance/gatling_acceptance_spec.rb +41 -17
- data/spec/acceptance/rspec_matcher_spec.rb +5 -5
- data/spec/capture_spec.rb +39 -8
- data/spec/comparison_spec.rb +40 -2
- data/spec/configuration_spec.rb +82 -25
- data/spec/gatling_spec.rb +14 -14
- data/spec/image_spec.rb +53 -21
- data/spec/image_wrangler_spec.rb +1 -1
- data/spec/spec_helper.rb +9 -3
- data/spec/support/assets/fruit_app.html +1 -0
- metadata +16 -18
- data/spec/rspec_matcher_spec.rb +0 -39
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
@@ -8,7 +8,7 @@ An integrated visual RSpec matcher which makes real visual testing easy.
|
|
8
8
|
|
9
9
|
gem install gatling
|
10
10
|
|
11
|
-
In spec_helper.rb
|
11
|
+
In spec_helper.rb:
|
12
12
|
|
13
13
|
#main app
|
14
14
|
require 'gatling'
|
@@ -32,13 +32,16 @@ Also created are subfolders:
|
|
32
32
|
|
33
33
|
=== Sleep_between_tries - sets the sleep time (in seconds) between match tries (requires max_no_tries > 1). Defaults to 0.5
|
34
34
|
|
35
|
+
=== browser_folders - *Currently only available with Selenium-Webdriver / Capybara* - create reference folders based on the current Selenium driver's browser. Allows for cross-browser visual testing.
|
36
|
+
|
35
37
|
=== Configuration settings are set with the following:
|
36
38
|
|
37
|
-
Gatling.config do |setting|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
Gatling.config do |setting|
|
40
|
+
Gatling.reference_image_path = 'my_custom_path'
|
41
|
+
Gatling.max_no_tries = 3
|
42
|
+
Gatling.sleep_between_tries = 0.7
|
43
|
+
Gatling.browser_folders = true
|
44
|
+
end
|
42
45
|
|
43
46
|
GATLING::CONFIGURATION will be depreciated in future versions.
|
44
47
|
-------------------------------------
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ require File.expand_path('spec/spec_helper.rb')
|
|
7
7
|
task :default => :full_build
|
8
8
|
|
9
9
|
desc "full build, run all the tests"
|
10
|
-
task :full_build => [:unit
|
10
|
+
task :full_build => [:unit,:acceptance]
|
11
11
|
|
12
12
|
desc "Run unit tests"
|
13
13
|
RSpec::Core::RakeTask.new(:unit) do |t|
|
data/lib/gatling.rb
CHANGED
@@ -7,6 +7,7 @@ require 'gatling/image'
|
|
7
7
|
require 'gatling/comparison'
|
8
8
|
require 'gatling/capture_element'
|
9
9
|
|
10
|
+
|
10
11
|
#TODO: Helpers for cucumber
|
11
12
|
#TODO: Make directories as needed
|
12
13
|
|
@@ -14,13 +15,12 @@ module Gatling
|
|
14
15
|
|
15
16
|
class << self
|
16
17
|
|
17
|
-
attr_accessor :reference_image_path, :max_no_tries, :sleep_between_tries
|
18
|
+
attr_accessor :reference_image_path, :max_no_tries, :sleep_between_tries, :browser_folders
|
18
19
|
|
19
20
|
def matches?(expected_reference_filename, actual_element)
|
20
21
|
|
21
22
|
expected_reference_file = (File.join(Gatling::Configuration.path(:reference), expected_reference_filename))
|
22
23
|
|
23
|
-
|
24
24
|
if Gatling::Configuration.trainer_toggle
|
25
25
|
actual_image = Gatling::ImageFromElement.new(actual_element, expected_reference_filename)
|
26
26
|
save_image_as_reference(actual_image)
|
@@ -35,26 +35,26 @@ module Gatling
|
|
35
35
|
comparison = compare_until_match(actual_element, expected_reference_filename, Gatling::Configuration.max_no_tries)
|
36
36
|
matches = comparison.matches?
|
37
37
|
if !matches
|
38
|
-
comparison.actual_image.save(:
|
38
|
+
comparison.actual_image.save(:candidate)
|
39
39
|
save_image_as_diff(comparison.diff_image)
|
40
40
|
end
|
41
41
|
matches
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
def compare_until_match actual_element, expected_reference_filename, max_no_tries
|
46
|
-
tries = max_no_tries
|
45
|
+
def compare_until_match actual_element, expected_reference_filename, max_no_tries = Gatling::Configuration.max_no_tries, sleep_time = Gatling::Configuration.sleep_between_tries
|
47
46
|
try = 0
|
48
47
|
match = false
|
49
48
|
expected_image = Gatling::ImageFromFile.new(expected_reference_filename)
|
50
49
|
comparison = nil
|
51
|
-
while !match && try <
|
50
|
+
while !match && try < max_no_tries
|
52
51
|
actual_image = Gatling::ImageFromElement.new(actual_element, expected_reference_filename)
|
53
|
-
comparison = Gatling::Comparison.new(
|
52
|
+
comparison = Gatling::Comparison.new(actual_image, expected_image)
|
54
53
|
match = comparison.matches?
|
55
54
|
if !match
|
56
|
-
sleep
|
55
|
+
sleep sleep_time
|
57
56
|
try += 1
|
57
|
+
#TODO: Send to logger instead of puts
|
58
58
|
puts "Tried to match #{try} times"
|
59
59
|
end
|
60
60
|
end
|
@@ -62,15 +62,15 @@ module Gatling
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def save_image_as_diff(image)
|
65
|
-
image.save(:
|
65
|
+
image.save(:diff)
|
66
66
|
raise "element did not match #{image.file_name}. A diff image: #{image.file_name} was created in " +
|
67
|
-
"#{
|
68
|
-
"A new reference #{
|
67
|
+
"#{image.path(:diff)} " +
|
68
|
+
"A new reference #{image.path(:candidate)} can be used to fix the test"
|
69
69
|
end
|
70
70
|
|
71
71
|
def save_image_as_candidate(image)
|
72
|
-
image.save
|
73
|
-
raise "The design reference #{image.file_name} does not exist, #{image.path} " +
|
72
|
+
image.save(:candidate)
|
73
|
+
raise "The design reference #{image.file_name} does not exist, #{image.path(:candidate)} " +
|
74
74
|
"is now available to be used as a reference. Copy candidate to root reference_image_path to use as reference"
|
75
75
|
end
|
76
76
|
|
@@ -78,7 +78,7 @@ module Gatling
|
|
78
78
|
if image.exists?
|
79
79
|
puts "#{image.path} already exists. reference image was not overwritten. please delete the old file to update using trainer"
|
80
80
|
else
|
81
|
-
image.save(:
|
81
|
+
image.save(:reference)
|
82
82
|
puts "Saved #{image.path} as reference"
|
83
83
|
end
|
84
84
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'fileutils'
|
1
2
|
require_relative 'image_wrangler'
|
2
3
|
|
3
4
|
module Gatling
|
@@ -19,14 +20,17 @@ module Gatling
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def take_screenshot
|
22
|
-
temp_dir =
|
23
|
+
temp_dir = File.join(@reference_image_path, 'temp')
|
24
|
+
FileUtils.mkdir_p(temp_dir) unless File.exists?(temp_dir)
|
23
25
|
#captures the uncropped full screen
|
24
26
|
begin
|
25
|
-
|
26
|
-
|
27
|
+
temp_screenshot_filename = File.join(temp_dir, "temp-#{Process.pid}.png")
|
28
|
+
Capybara.page.driver.browser.save_screenshot(temp_screenshot_filename)
|
29
|
+
temp_screenshot = Magick::Image.read(temp_screenshot_filename).first
|
27
30
|
rescue
|
28
31
|
raise "Could not save screenshot to #{temp_dir}. Please make sure you have permission"
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
32
|
-
end
|
35
|
+
end
|
36
|
+
|
data/lib/gatling/comparison.rb
CHANGED
@@ -6,16 +6,53 @@ module Gatling
|
|
6
6
|
def initialize actual_image, expected_image
|
7
7
|
@actual_image = actual_image
|
8
8
|
@expected_image = expected_image
|
9
|
-
@comparison =
|
9
|
+
@comparison = compare_image
|
10
10
|
@match = @comparison[1] == 0.0
|
11
|
-
|
12
|
-
@diff_image =Gatling::Image.new(@comparison.first, @expected_image.file_name)
|
13
|
-
end
|
11
|
+
@diff_image =Gatling::Image.new(@comparison.first, @expected_image.file_name) unless @matches
|
14
12
|
end
|
15
13
|
|
16
14
|
def matches?
|
17
15
|
@match
|
18
16
|
end
|
19
17
|
|
18
|
+
def compare_image
|
19
|
+
compare_images_with_same_size? ? compare_images_with_same_size : compare_images_with_different_size
|
20
|
+
end
|
21
|
+
|
22
|
+
def compare_images_with_same_size
|
23
|
+
images_to_compare = prep_images_for_comparison
|
24
|
+
images_to_compare.first.compare_channel(images_to_compare.last, Magick::MeanAbsoluteErrorMetric)
|
25
|
+
end
|
26
|
+
|
27
|
+
def compare_images_with_different_size
|
28
|
+
row = [@actual_image.image.rows, @expected_image.image.rows].max
|
29
|
+
column = [@actual_image.image.columns, @expected_image.image.columns].max
|
30
|
+
|
31
|
+
images_to_compare = prep_images_for_comparison do |image|
|
32
|
+
expanded_image = image.extent(column, row)
|
33
|
+
expanded_image.background_color = 'white'
|
34
|
+
expanded_image
|
35
|
+
end
|
36
|
+
images_to_compare.first.compare_channel(images_to_compare.last, Magick::MeanAbsoluteErrorMetric)
|
37
|
+
end
|
38
|
+
|
39
|
+
def compare_images_with_same_size?
|
40
|
+
@actual_image.image.rows == @expected_image.image.rows && @actual_image.image.columns == @expected_image.image.columns
|
41
|
+
end
|
42
|
+
|
43
|
+
def prep_images_for_comparison
|
44
|
+
[
|
45
|
+
@actual_image,
|
46
|
+
@expected_image,
|
47
|
+
].collect do |gatling_image|
|
48
|
+
image = gatling_image.image.clone
|
49
|
+
image = yield image if block_given?
|
50
|
+
|
51
|
+
# Important: ensure the image 0,0 is reset to the top-left of the image before comparison
|
52
|
+
image.offset = 0
|
53
|
+
image
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
20
57
|
end
|
21
58
|
end
|
data/lib/gatling/config.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
1
3
|
module Gatling
|
2
4
|
module Configuration
|
3
5
|
|
4
6
|
class << self
|
5
7
|
|
6
|
-
attr_accessor :reference_image_path, :trainer_toggle, :max_no_tries, :sleep_between_tries
|
8
|
+
attr_accessor :reference_image_path, :trainer_toggle, :max_no_tries, :sleep_between_tries, :browser_folders
|
7
9
|
|
8
10
|
attr_reader :paths
|
9
11
|
|
10
12
|
def reference_image_path
|
11
|
-
|
13
|
+
@reference_image_path ||= construct_path
|
12
14
|
end
|
13
15
|
|
14
16
|
def max_no_tries
|
@@ -21,9 +23,9 @@ module Gatling
|
|
21
23
|
|
22
24
|
def path(type)
|
23
25
|
paths = Hash[:reference => reference_image_path,
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
:candidate => File.join(reference_image_path, 'candidate'),
|
27
|
+
:diff => File.join(reference_image_path, 'diff'),
|
28
|
+
:temp => File.join(reference_image_path, 'temp')]
|
27
29
|
if paths.keys.include? type
|
28
30
|
return paths[type]
|
29
31
|
else
|
@@ -49,16 +51,51 @@ module Gatling
|
|
49
51
|
end
|
50
52
|
|
51
53
|
|
52
|
-
def
|
54
|
+
def construct_path
|
53
55
|
private
|
56
|
+
reference_image_path = user_set_reference_path || default_reference_path
|
57
|
+
reference_image_path = reference_path_with_browser_folders(reference_image_path) if browser_folders
|
58
|
+
reference_image_path
|
59
|
+
end
|
60
|
+
|
61
|
+
def user_set_reference_path
|
62
|
+
Gatling.reference_image_path
|
63
|
+
end
|
64
|
+
|
65
|
+
def default_reference_path
|
66
|
+
begin
|
67
|
+
reference_image_path = File.join(Rails.root, 'spec/reference_images')
|
68
|
+
rescue
|
69
|
+
reference_image_path = 'spec/reference_images'
|
70
|
+
puts "Currently defaulting to #{@reference_image_path}. Overide this by setting Gatling.reference_image_path=[refpath]"
|
71
|
+
end
|
72
|
+
reference_image_path
|
73
|
+
end
|
74
|
+
|
75
|
+
def reference_path_with_browser_folders path
|
54
76
|
begin
|
55
|
-
|
77
|
+
reference_images_path = File.join(path, browser)
|
56
78
|
rescue
|
57
|
-
|
58
|
-
puts "Currently defaulting to #{@reference_image_path}. Overide this by setting Gatling::Configuration.reference_image_path=[refpath]"
|
79
|
+
reference_images_path = path
|
59
80
|
end
|
60
|
-
|
81
|
+
reference_images_path
|
61
82
|
end
|
83
|
+
|
84
|
+
def browser_folders
|
85
|
+
Gatling.browser_folders || @browser_folders ||= false
|
86
|
+
end
|
87
|
+
|
88
|
+
def browser
|
89
|
+
begin
|
90
|
+
browser = Capybara.page.driver.browser.browser
|
91
|
+
rescue
|
92
|
+
browser = Selenium.page.driver.browser.browser
|
93
|
+
rescue
|
94
|
+
raise "Currently custom folders are only supported by Capybara. ENV variables are coming."
|
95
|
+
end
|
96
|
+
browser.to_s
|
97
|
+
end
|
98
|
+
|
62
99
|
end
|
63
100
|
|
64
101
|
end
|
data/lib/gatling/image.rb
CHANGED
@@ -14,15 +14,18 @@ module Gatling
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def save type
|
17
|
-
path =
|
18
|
-
FileUtils::mkdir_p(path) unless File.exists?(path)
|
19
|
-
@path = File.join(path, @file_name)
|
17
|
+
@path = path(type)
|
18
|
+
FileUtils::mkdir_p(File.dirname(@path)) unless File.exists?(@path)
|
20
19
|
@image.write @path
|
21
20
|
@path
|
22
21
|
end
|
23
22
|
|
24
23
|
def exists?
|
25
|
-
File.exists?(
|
24
|
+
File.exists?(path)
|
25
|
+
end
|
26
|
+
|
27
|
+
def path type = :reference
|
28
|
+
@path = File.join(Gatling::Configuration.path(type), @file_name)
|
26
29
|
end
|
27
30
|
|
28
31
|
end
|
@@ -34,7 +37,7 @@ module Gatling
|
|
34
37
|
|
35
38
|
@image = Gatling::CaptureElement.new(element).capture
|
36
39
|
end
|
37
|
-
|
40
|
+
|
38
41
|
#TODO: make save a relevant subclass method
|
39
42
|
end
|
40
43
|
|
@@ -42,13 +45,11 @@ module Gatling
|
|
42
45
|
|
43
46
|
def initialize file_name
|
44
47
|
super(image, file_name)
|
45
|
-
|
46
|
-
@image = Magick::Image.read(File.join(Gatling::Configuration.path(:reference), @file_name)).first
|
48
|
+
@image = Magick::Image.read(path).first
|
47
49
|
end
|
48
50
|
|
49
51
|
#TODO: make save a relevant subclass method
|
50
|
-
|
52
|
+
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
54
|
-
|
data/lib/gatling/version.rb
CHANGED
@@ -8,12 +8,12 @@ describe 'Gatling' do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
before(:each) do
|
11
|
-
@ref_path = Gatling
|
11
|
+
@ref_path = Gatling.reference_image_path = File.join(spec_support_root, 'ref_path')
|
12
12
|
end
|
13
13
|
|
14
14
|
after(:each) do
|
15
15
|
remove_refs(@ref_path)
|
16
|
-
|
16
|
+
config_clean_up
|
17
17
|
end
|
18
18
|
|
19
19
|
describe 'Gatling, when no reference image exists' do
|
@@ -42,25 +42,37 @@ describe 'Gatling' do
|
|
42
42
|
Gatling.matches?("black.png", black_element).should be_true
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
red_element = element_for_spec('#red')
|
47
|
-
expected_error = "element did not match #{"black.png"}. " +
|
48
|
-
"A diff image: #{"black.png"} was created in #{@ref_path}/diff/#{"black.png"}. " +
|
49
|
-
"A new reference #{@ref_path}/candidate/#{"black.png"} can be used to fix the test"
|
45
|
+
describe 'between different images of the same size' do
|
50
46
|
|
51
|
-
|
47
|
+
it 'will return false, creates new diff and candidate images' do
|
48
|
+
red_element = element_for_spec('#red')
|
49
|
+
expected_error = "element did not match #{"black.png"}. " +
|
50
|
+
"A diff image: #{"black.png"} was created in #{@ref_path}/diff/#{"black.png"} " +
|
51
|
+
"A new reference #{@ref_path}/candidate/#{"black.png"} can be used to fix the test"
|
52
|
+
|
53
|
+
expect {Gatling.matches?("black.png", red_element)}.should raise_error(RuntimeError, expected_error)
|
54
|
+
|
55
|
+
File.exists?(File.join(@ref_path,'diff', "black.png")).should be_true
|
56
|
+
File.exists?(File.join(@ref_path,'candidate', "black.png")).should be_true
|
57
|
+
end
|
52
58
|
|
53
|
-
File.exists?(File.join(@ref_path,'diff', "black.png")).should be_true
|
54
|
-
File.exists?(File.join(@ref_path,'candidate', "black.png")).should be_true
|
55
59
|
end
|
56
60
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
61
|
+
describe 'between images of the different size' do
|
62
|
+
|
63
|
+
it 'will return false, creates new diff and candidate images' do
|
64
|
+
red_element = element_for_spec('#differentSize')
|
65
|
+
expected_error = "element did not match #{"black.png"}. " +
|
66
|
+
"A diff image: #{"black.png"} was created in #{@ref_path}/diff/#{"black.png"} " +
|
67
|
+
"A new reference #{@ref_path}/candidate/#{"black.png"} can be used to fix the test"
|
63
68
|
|
69
|
+
expect {Gatling.matches?("black.png", red_element)}.should raise_error(RuntimeError, expected_error)
|
70
|
+
|
71
|
+
File.exists?(File.join(@ref_path,'diff', "black.png")).should be_true
|
72
|
+
File.exists?(File.join(@ref_path,'candidate', "black.png")).should be_true
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
64
76
|
end
|
65
77
|
|
66
78
|
describe 'Gatling trainer toggle' do
|
@@ -79,7 +91,7 @@ describe 'Gatling' do
|
|
79
91
|
it 'will warn if a reference already exists and not overwrite it' do
|
80
92
|
create_square_image(@ref_path, 'black')
|
81
93
|
Gatling::Configuration.trainer_toggle = true
|
82
|
-
expected_message = " already exists. reference image was not overwritten. " +
|
94
|
+
expected_message = "#{File.join(@ref_path,"black.png")} already exists. reference image was not overwritten. " +
|
83
95
|
"please delete the old file to update using trainer"
|
84
96
|
black_element = element_for_spec
|
85
97
|
reference_file_ctime = File.ctime(File.join(@ref_path,"black.png"))
|
@@ -91,4 +103,16 @@ describe 'Gatling' do
|
|
91
103
|
reference_file_ctime.eql?(File.ctime(File.join(@ref_path, "black.png"))).should be_true
|
92
104
|
end
|
93
105
|
end
|
106
|
+
|
107
|
+
describe 'Gatling browser folders' do
|
108
|
+
|
109
|
+
it 'should set image path according to the driver\'s browser' do
|
110
|
+
Gatling.browser_folders = true
|
111
|
+
Gatling.reference_image_path = '/some/random/path'
|
112
|
+
Gatling::Configuration.reference_image_path.should == '/some/random/path/firefox'
|
113
|
+
Gatling.browser_folders = false
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
|
94
118
|
end
|
@@ -3,14 +3,14 @@ include Capybara::DSL
|
|
3
3
|
|
4
4
|
describe 'rspec matcher' do
|
5
5
|
|
6
|
-
before(:
|
6
|
+
before(:each) do
|
7
7
|
@black_box = 'black.png'
|
8
|
-
@ref_path = Gatling
|
8
|
+
@ref_path = Gatling.reference_image_path = File.join(spec_support_root, 'ref_path')
|
9
9
|
create_images_for_web_page
|
10
10
|
end
|
11
11
|
|
12
12
|
after(:each) do
|
13
|
-
|
13
|
+
config_clean_up
|
14
14
|
remove_refs(@ref_path)
|
15
15
|
end
|
16
16
|
|
@@ -18,11 +18,11 @@ describe 'rspec matcher' do
|
|
18
18
|
|
19
19
|
it 'will pass if images matches reference' do
|
20
20
|
create_square_image(@ref_path, 'black')
|
21
|
-
|
21
|
+
black_element = element_for_spec("#black")
|
22
22
|
black_element.should look_like("black.png")
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it "will fail if images doesn't matches reference" do
|
26
26
|
create_square_image(@ref_path, 'black')
|
27
27
|
red_element = element_for_spec("#red")
|
28
28
|
expect{red_element.should look_like(@black_box)}.should raise_error
|
data/spec/capture_spec.rb
CHANGED
@@ -1,23 +1,54 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Gatling::CaptureElement do
|
4
|
-
|
5
|
-
before do
|
6
4
|
|
5
|
+
before :each do
|
7
6
|
capybara_node = mock (Capybara::Node::Element)
|
8
|
-
Gatling::Configuration.reference_image_path
|
9
|
-
Gatling::CaptureElement.new capybara_node, capybara_node
|
7
|
+
Gatling::Configuration.should_receive(:reference_image_path).and_return("./")
|
8
|
+
@capture_element = Gatling::CaptureElement.new capybara_node, capybara_node
|
10
9
|
end
|
11
10
|
|
12
|
-
|
11
|
+
after :each do
|
12
|
+
config_clean_up
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'take_screenshot' do
|
16
|
+
before do
|
17
|
+
@webdriver = double('webdriver')
|
18
|
+
Capybara.stub_chain(:page, :driver, :browser).and_return(@webdriver)
|
19
|
+
|
20
|
+
@expected_temp_screenshot_file_pattern = /.*\/temp\/temp-\d+.png/
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should create temp directory when it does not exist' do
|
24
|
+
@webdriver.stub!(:save_screenshot)
|
25
|
+
Magick::Image.stub!(:read).and_return([])
|
26
|
+
|
27
|
+
File.stub!(:'exists?').and_return(false)
|
28
|
+
FileUtils.should_receive(:mkdir_p).with('./temp')
|
29
|
+
|
30
|
+
@capture_element.take_screenshot
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
it 'should work when Gatling is called concurrently from multiple processes' do
|
35
|
+
@webdriver.should_receive(:save_screenshot).with(@expected_temp_screenshot_file_pattern)
|
36
|
+
Magick::Image.should_receive(:read).with(@expected_temp_screenshot_file_pattern).and_return([])
|
37
|
+
|
38
|
+
@capture_element.take_screenshot
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
13
43
|
|
14
44
|
# it 'should exclude a specified element from capture' do
|
15
|
-
# element_to_capture =
|
45
|
+
# element_to_capture =
|
16
46
|
|
17
|
-
# element_to_exclude = 'womething.child'
|
47
|
+
# element_to_exclude = 'womething.child'
|
18
48
|
# # @cropped_and_censored_element = (element_to_capture, element_to_exclude).exclude
|
19
49
|
# @cropped_and_censored_element.should_not equal(@element_to_capture)
|
20
50
|
# @cropped_and_censored_element.should_not equal(@element_to_exclude)
|
21
51
|
# end
|
22
52
|
|
23
|
-
end
|
53
|
+
end
|
54
|
+
|
data/spec/comparison_spec.rb
CHANGED
@@ -25,8 +25,46 @@ describe Gatling::Comparison do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
describe 'Diff images' do
|
28
|
-
|
29
|
-
|
28
|
+
describe 'for two images with the same size' do
|
29
|
+
it 'will be generated' do
|
30
|
+
Gatling::Comparison.new(@apple, @orange).diff_image.class.should == Gatling::Image
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'for two images with different sizes' do
|
35
|
+
before do
|
36
|
+
@apple_image = Magick::Image.new(30,300) { self.background_color = "green" }
|
37
|
+
@orange_image = Magick::Image.new(80,100) { self.background_color = "orange" }
|
38
|
+
|
39
|
+
@apple = Gatling::Image.new(@apple_image, "apple.png")
|
40
|
+
@orange = Gatling::Image.new(@orange_image, "orange.png")
|
41
|
+
|
42
|
+
@diff_image = Gatling::Comparison.new(@apple, @orange).diff_image
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'will be generated' do
|
46
|
+
@diff_image.class.should == Gatling::Image
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'will be extended to cover the difference in both images' do
|
50
|
+
@diff_image.image.columns.should eql 80
|
51
|
+
@diff_image.image.rows.should eql 300
|
52
|
+
end
|
53
|
+
|
54
|
+
describe 'with two different offset' do
|
55
|
+
before do
|
56
|
+
@apple_image.offset = 50
|
57
|
+
@orange_image.offset = 2
|
58
|
+
|
59
|
+
@diff_image = Gatling::Comparison.new(@apple, @orange).diff_image
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'will remove image offset from the diff image' do
|
63
|
+
@diff_image.image.offset.should eql 0
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
30
68
|
end
|
31
69
|
end
|
32
70
|
end
|
data/spec/configuration_spec.rb
CHANGED
@@ -2,15 +2,14 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Gatling::Configuration do
|
4
4
|
|
5
|
-
after :each do
|
6
|
-
Gatling::Configuration.reference_image_path = nil
|
7
|
-
Gatling.reference_image_path = nil
|
8
|
-
end
|
9
5
|
|
10
6
|
describe "#reference_image_path" do
|
11
7
|
|
8
|
+
after :each do
|
9
|
+
config_clean_up
|
10
|
+
end
|
12
11
|
|
13
|
-
describe "
|
12
|
+
describe "without Rails" do
|
14
13
|
it "should default to './spec/reference_images' when not in a rails environment" do
|
15
14
|
Gatling::Configuration.reference_image_path.should eql("spec/reference_images")
|
16
15
|
end
|
@@ -36,10 +35,55 @@ describe Gatling::Configuration do
|
|
36
35
|
end
|
37
36
|
|
38
37
|
it "should be overrideable in a rails environment" do
|
39
|
-
|
38
|
+
subject.reference_image_path = "my custom path"
|
40
39
|
Gatling::Configuration.reference_image_path.should eql("my custom path")
|
41
40
|
end
|
42
41
|
|
42
|
+
it 'should return the directory for a type of image' do
|
43
|
+
Gatling::Configuration.reference_image_path = "a_path"
|
44
|
+
subject.path(:temp).should == 'a_path/temp'
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should thrown an error when you ask for the path of an unknown image type' do
|
48
|
+
expect { Gatling::Configuration.path(:unknown)}.should raise_error "Unkown image type 'unknown'"
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "creating custom reference folders" do
|
54
|
+
|
55
|
+
before :each do
|
56
|
+
Gatling.reference_image_path = '/some/ref/path'
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should default to custom folders off" do
|
60
|
+
subject.browser_folders.should == false
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should allow setting custom folders on" do
|
64
|
+
Gatling::Configuration.browser_folders = true
|
65
|
+
subject.browser_folders.should == true
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
it "should set reference_image_path to default when browser can\'t be found" do
|
70
|
+
subject.browser_folders = true
|
71
|
+
Capybara.page.driver.browser.should_receive(:browser).at_least(:once).and_raise(StandardError.new)
|
72
|
+
subject.reference_image_path.should == '/some/ref/path'
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should create custom folder for each browser according to ENV" do
|
76
|
+
pending
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should set the image reference path for each browser according to selenium driver if no ENV is set" do
|
80
|
+
subject.browser_folders = true
|
81
|
+
subject.stub!(:browser).and_return('chrome')
|
82
|
+
subject.reference_image_path.should == '/some/ref/path/chrome'
|
83
|
+
subject.browser_folders = false
|
84
|
+
end
|
85
|
+
|
86
|
+
|
43
87
|
end
|
44
88
|
end
|
45
89
|
|
@@ -75,16 +119,6 @@ describe Gatling::Configuration do
|
|
75
119
|
end
|
76
120
|
end
|
77
121
|
|
78
|
-
describe 'paths' do
|
79
|
-
it 'should return the directory for a type of image' do
|
80
|
-
Gatling::Configuration.reference_image_path = "a_path"
|
81
|
-
subject.path(:temp).should == 'a_path/temp'
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'should thrown an error when you ask for the path of an unknown image type' do
|
85
|
-
expect { Gatling::Configuration.path(:unknown)}.should raise_error "Unkown image type 'unknown'"
|
86
|
-
end
|
87
|
-
end
|
88
122
|
|
89
123
|
describe "#max_no_tries" do
|
90
124
|
|
@@ -112,17 +146,40 @@ describe Gatling::Configuration do
|
|
112
146
|
|
113
147
|
describe "settings" do
|
114
148
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
Gatling.
|
119
|
-
|
149
|
+
describe "should accept a block of settings and parse them correctly" do
|
150
|
+
|
151
|
+
it "for reference_image_path" do
|
152
|
+
Gatling.config do |setting|
|
153
|
+
Gatling.reference_image_path = 'custom_path'
|
154
|
+
end
|
155
|
+
subject.reference_image_path.should eql 'custom_path'
|
156
|
+
end
|
157
|
+
|
158
|
+
it "for max_no_tries" do
|
159
|
+
Gatling.config do |setting|
|
160
|
+
Gatling.max_no_tries = 3
|
161
|
+
end
|
162
|
+
subject.max_no_tries.should eql 3
|
120
163
|
end
|
121
|
-
subject.reference_image_path.should eql 'custom_path'
|
122
|
-
subject.max_no_tries.should eql 3
|
123
|
-
subject.sleep_between_tries.should eql 0.7
|
124
|
-
end
|
125
164
|
|
165
|
+
it "sleep_between_tries" do
|
166
|
+
Gatling.config do |setting|
|
167
|
+
Gatling.sleep_between_tries = 0.7
|
168
|
+
end
|
169
|
+
subject.sleep_between_tries.should eql 0.7
|
170
|
+
end
|
171
|
+
|
172
|
+
it "browser_folders" do
|
173
|
+
Gatling.config do |setting|
|
174
|
+
Gatling.browser_folders = true
|
175
|
+
end
|
176
|
+
subject.browser_folders.should eql true
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
126
180
|
end
|
127
181
|
|
182
|
+
|
183
|
+
|
184
|
+
|
128
185
|
end
|
data/spec/gatling_spec.rb
CHANGED
@@ -4,15 +4,9 @@ include Capybara::DSL
|
|
4
4
|
describe Gatling do
|
5
5
|
|
6
6
|
before :all do
|
7
|
-
@spec_support_root = spec_support_root
|
8
7
|
@box = 'box'
|
9
8
|
@black_box = 'black.png'
|
10
9
|
@red_box = 'red.png'
|
11
|
-
@ref_path = Gatling::Configuration.reference_image_path = './ref_path'
|
12
|
-
end
|
13
|
-
|
14
|
-
after :each do
|
15
|
-
Gatling::Configuration.trainer_toggle = false
|
16
10
|
end
|
17
11
|
|
18
12
|
describe '#Gatling' do
|
@@ -35,13 +29,13 @@ describe Gatling do
|
|
35
29
|
end
|
36
30
|
|
37
31
|
it "#save_image_as_diff" do
|
38
|
-
@image_class_mock.should_receive(:save).with(:
|
32
|
+
@image_class_mock.should_receive(:save).with(:diff).and_return(@ref_path)
|
39
33
|
@image_class_mock.should_receive(:file_name).at_least(:once).and_return("some_name")
|
40
34
|
expect {subject.save_image_as_diff(@image_class_mock)}.should raise_error
|
41
35
|
end
|
42
36
|
|
43
37
|
it "#save_image_as_candidate" do
|
44
|
-
@image_class_mock.should_receive(:save).with(:
|
38
|
+
@image_class_mock.should_receive(:save).with(:candidate).and_return(@ref_path)
|
45
39
|
@image_class_mock.should_receive(:file_name).at_least(:once).and_return("some_name")
|
46
40
|
@image_class_mock.should_receive(:path).and_return(@path)
|
47
41
|
expect {subject.save_image_as_candidate(@image_class_mock)}.should raise_error
|
@@ -58,7 +52,7 @@ describe Gatling do
|
|
58
52
|
|
59
53
|
it "when image_exists? == false" do
|
60
54
|
@image_class_mock.should_receive(:exists?).and_return(false)
|
61
|
-
@image_class_mock.should_receive(:save).with(:
|
55
|
+
@image_class_mock.should_receive(:save).with(:reference).and_return(@ref_path)
|
62
56
|
@image_class_mock.should_receive(:path).and_return(@path)
|
63
57
|
subject.save_image_as_reference(@image_class_mock)
|
64
58
|
end
|
@@ -72,12 +66,12 @@ describe Gatling do
|
|
72
66
|
describe "#compare_until_match" do
|
73
67
|
|
74
68
|
before do
|
75
|
-
@
|
76
|
-
@
|
77
|
-
@element = mock(Gatling::CaptureElement)
|
69
|
+
@ref_image = mock("Gatling::Image")
|
70
|
+
@actual_image = mock("Gatling::Image")
|
71
|
+
@element = mock("Gatling::CaptureElement")
|
78
72
|
@comparison = mock("Gatling::Comparison")
|
79
|
-
Gatling::ImageFromFile.stub!(:new).and_return(@
|
80
|
-
Gatling::ImageFromElement.stub!(:new).and_return(@
|
73
|
+
Gatling::ImageFromFile.stub!(:new).and_return(@ref_image)
|
74
|
+
Gatling::ImageFromElement.stub!(:new).and_return(@actual_image)
|
81
75
|
Gatling::Comparison.stub!(:new).and_return(@comparison)
|
82
76
|
end
|
83
77
|
|
@@ -90,5 +84,11 @@ describe "#compare_until_match" do
|
|
90
84
|
@comparison.should_receive(:matches?).exactly(1).times.and_return(true)
|
91
85
|
Gatling.compare_until_match(@element, "orange.png", 3)
|
92
86
|
end
|
87
|
+
|
88
|
+
it 'should compare image from the element with image from the file' do
|
89
|
+
@comparison.stub!(:matches?).and_return(true)
|
90
|
+
Gatling::Comparison.should_receive(:new).with(@actual_image, @ref_image).and_return(@comparison)
|
91
|
+
Gatling.compare_until_match(@element, "orange.png", 3)
|
92
|
+
end
|
93
93
|
end
|
94
94
|
end
|
data/spec/image_spec.rb
CHANGED
@@ -3,19 +3,22 @@ require 'spec_helper'
|
|
3
3
|
describe Gatling::Image do
|
4
4
|
|
5
5
|
before :all do
|
6
|
-
ref_path = './image_tests'
|
7
|
-
|
8
|
-
@
|
9
|
-
|
6
|
+
@ref_path = './image_tests'
|
7
|
+
@expected_temp_path = File.join @ref_path, 'temp'
|
8
|
+
@expected_temp_image_path = File.join @expected_temp_path, 'image.png'
|
9
|
+
end
|
10
|
+
|
11
|
+
after :each do
|
12
|
+
config_clean_up
|
10
13
|
end
|
11
14
|
|
12
15
|
describe 'should initialize from' do
|
13
16
|
|
14
17
|
it 'image file type' do
|
15
|
-
File.stub(:exists?).and_return
|
18
|
+
File.stub(:exists?).and_return(true)
|
16
19
|
image_mock = mock(Magick::Image)
|
20
|
+
Gatling::Configuration.should_receive(:reference_image_path).any_number_of_times.and_return(@ref_path)
|
17
21
|
Magick::Image.should_receive(:read).with('./image_tests/image.png').and_return([image_mock])
|
18
|
-
|
19
22
|
subject = Gatling::ImageFromFile.new("image.png")
|
20
23
|
subject.image.should == image_mock
|
21
24
|
subject.file_name.should == 'image.png'
|
@@ -44,7 +47,7 @@ describe Gatling::Image do
|
|
44
47
|
describe "Images file handling" do
|
45
48
|
|
46
49
|
before :each do
|
47
|
-
|
50
|
+
Gatling::Configuration.should_receive(:reference_image_path).any_number_of_times.and_return(@ref_path)
|
48
51
|
end
|
49
52
|
|
50
53
|
it 'will save an image to the correct path for the type' do
|
@@ -53,32 +56,35 @@ describe Gatling::Image do
|
|
53
56
|
subject = Gatling::Image.new(mock_image, 'image.png')
|
54
57
|
subject.image = mock_image
|
55
58
|
subject.file_name = 'image.png'
|
56
|
-
subject.save(:
|
59
|
+
subject.save(:temp)
|
57
60
|
end
|
58
61
|
|
59
62
|
it 'will create directory, then save and image if directory doesnt exist' do
|
63
|
+
image_path = 'path/to/image/in/sub/directory/image.png'
|
64
|
+
expected_full_path = File.join(Gatling::Configuration.path(:temp), image_path)
|
65
|
+
expected_image_dir = File.dirname(expected_full_path)
|
60
66
|
|
61
67
|
mock_image = stub(Magick::Image)
|
62
|
-
mock_image.should_receive(:write).with(
|
68
|
+
mock_image.should_receive(:write).with(expected_full_path).and_return()
|
63
69
|
|
64
|
-
File.should_receive(:exists?).with(
|
65
|
-
FileUtils.should_receive(:mkdir_p).with(
|
66
|
-
subject = Gatling::Image.new(mock_image,
|
70
|
+
File.should_receive(:exists?).with(expected_full_path).and_return(false)
|
71
|
+
FileUtils.should_receive(:mkdir_p).with(expected_image_dir)
|
72
|
+
subject = Gatling::Image.new(mock_image, image_path)
|
67
73
|
|
68
|
-
subject.save(:
|
69
|
-
subject.path.should ==
|
74
|
+
subject.save(:temp)
|
75
|
+
subject.path(:temp).should == expected_full_path
|
70
76
|
end
|
71
77
|
|
72
|
-
it 'will save
|
78
|
+
it 'will save an image if directory exist' do
|
73
79
|
mock_image = stub(Magick::Image)
|
74
|
-
mock_image.should_receive(:write).with(@
|
80
|
+
mock_image.should_receive(:write).with(@expected_temp_image_path).and_return()
|
75
81
|
|
76
|
-
File.should_receive(:exists?).with(@
|
82
|
+
File.should_receive(:exists?).with(@expected_temp_image_path).and_return(true)
|
77
83
|
FileUtils.should_not_receive(:mkdir_p)
|
78
84
|
subject = Gatling::Image.new(mock_image, 'image.png')
|
79
85
|
|
80
|
-
subject.save(:
|
81
|
-
subject.path.should == @
|
86
|
+
subject.save(:temp)
|
87
|
+
subject.path(:temp).should == @expected_temp_image_path
|
82
88
|
end
|
83
89
|
|
84
90
|
it 'should check if a file exists, with the file name and type' do
|
@@ -88,9 +94,35 @@ describe Gatling::Image do
|
|
88
94
|
subject.file_name = 'image.png'
|
89
95
|
subject.exists?
|
90
96
|
end
|
97
|
+
|
98
|
+
it 'image object should default to reference type' do
|
99
|
+
mock_image = mock(Magick::Image)
|
100
|
+
subject = Gatling::Image.new(mock_image, 'image.png')
|
101
|
+
subject.path.should == File.join(@ref_path,'image.png')
|
102
|
+
end
|
91
103
|
end
|
92
104
|
|
105
|
+
describe "it creates a path from path types" do
|
106
|
+
|
107
|
+
before :each do
|
108
|
+
Gatling::Configuration.should_receive(:reference_image_path).any_number_of_times.and_return('/some/path')
|
109
|
+
mock_image = mock(Magick::Image)
|
110
|
+
@subject = Gatling::Image.new(mock_image, 'image.png')
|
111
|
+
end
|
112
|
+
|
113
|
+
it "from reference" do
|
114
|
+
# expected_path = '/some/path/reference'
|
115
|
+
@subject.path.should == '/some/path/image.png'
|
116
|
+
end
|
93
117
|
|
94
|
-
|
118
|
+
it "from diff" do
|
119
|
+
@subject.path(:diff).should == '/some/path/diff/image.png'
|
120
|
+
end
|
121
|
+
|
122
|
+
it "from candidate" do
|
123
|
+
@subject.path(:candidate).should == '/some/path/candidate/image.png'
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
95
127
|
|
96
|
-
|
128
|
+
end
|
data/spec/image_wrangler_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -18,6 +18,12 @@ Capybara.app_host = "file://#{File.expand_path(File.dirname(__FILE__))}/support/
|
|
18
18
|
Capybara.default_driver = :selenium
|
19
19
|
Capybara.run_server = false
|
20
20
|
|
21
|
+
def config_clean_up
|
22
|
+
Gatling::Configuration.trainer_toggle = false
|
23
|
+
Gatling::Configuration.reference_image_path = nil
|
24
|
+
Gatling::Configuration.browser_folders = false
|
25
|
+
end
|
26
|
+
|
21
27
|
def remove_refs(dir)
|
22
28
|
Dir.glob("#{dir}/**/*.png").each {|image| FileUtils.rm image}
|
23
29
|
end
|
@@ -32,9 +38,9 @@ def spec_support_root
|
|
32
38
|
end
|
33
39
|
|
34
40
|
def create_images_for_web_page
|
35
|
-
|
36
|
-
create_square_image(
|
37
|
-
create_square_image(
|
41
|
+
asset_reference_path = File.join(spec_support_root, 'assets')
|
42
|
+
create_square_image(asset_reference_path, 'black')
|
43
|
+
create_square_image(asset_reference_path, 'red')
|
38
44
|
end
|
39
45
|
|
40
46
|
def create_square_image(path, color)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gatling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rmagick
|
16
|
-
requirement: &
|
16
|
+
requirement: &70099690488660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.13.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70099690488660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec-core
|
27
|
-
requirement: &
|
27
|
+
requirement: &70099690488120 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.8.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70099690488120
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70099690536780 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.8.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70099690536780
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: capybara
|
49
|
-
requirement: &
|
49
|
+
requirement: &70099690536300 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.1.2
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70099690536300
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &70099690535820 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.9.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70099690535820
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec-instafail
|
71
|
-
requirement: &
|
71
|
+
requirement: &70099690535340 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.1.8
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70099690535340
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: pry
|
82
|
-
requirement: &
|
82
|
+
requirement: &70099690534800 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: 0.9.8.2
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70099690534800
|
91
91
|
description: Add visual comparison matchers for rspec
|
92
92
|
email:
|
93
93
|
- grotbart@gmail.com
|
@@ -123,7 +123,6 @@ files:
|
|
123
123
|
- spec/image_spec.rb
|
124
124
|
- spec/image_wrangler_spec.rb
|
125
125
|
- spec/integration/gatling_integration_spec.rb
|
126
|
-
- spec/rspec_matcher_spec.rb
|
127
126
|
- spec/spec.opts
|
128
127
|
- spec/spec_helper.rb
|
129
128
|
- spec/support/assets/fruit_app.html
|
@@ -161,7 +160,6 @@ test_files:
|
|
161
160
|
- spec/image_spec.rb
|
162
161
|
- spec/image_wrangler_spec.rb
|
163
162
|
- spec/integration/gatling_integration_spec.rb
|
164
|
-
- spec/rspec_matcher_spec.rb
|
165
163
|
- spec/spec.opts
|
166
164
|
- spec/spec_helper.rb
|
167
165
|
- spec/support/assets/fruit_app.html
|
data/spec/rspec_matcher_spec.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
include Capybara::DSL
|
3
|
-
|
4
|
-
describe 'rspec matcher' do
|
5
|
-
|
6
|
-
before(:all) do
|
7
|
-
@black_box = 'black.png'
|
8
|
-
@ref_path = Gatling::Configuration.reference_image_path = File.join(spec_support_root, 'ref_path')
|
9
|
-
create_images_for_web_page
|
10
|
-
end
|
11
|
-
|
12
|
-
after(:each) do
|
13
|
-
Gatling::Configuration.trainer_toggle = false
|
14
|
-
remove_refs(@ref_path)
|
15
|
-
end
|
16
|
-
|
17
|
-
describe 'initializing and runnin gatling' do
|
18
|
-
|
19
|
-
it 'will pass if images matches refernce' do
|
20
|
-
create_square_image(@ref_path, 'black')
|
21
|
-
black_element = element_for_spec("#black")
|
22
|
-
black_element.should look_like(@black_box)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'will fail if images dosent matches refernce' do
|
26
|
-
create_square_image(@ref_path, 'black')
|
27
|
-
red_element = element_for_spec("#red")
|
28
|
-
expect{red_element.should look_like(@black_box)}.should raise_error
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'will return true if it makes a new reference image in trainer mode' do
|
32
|
-
Gatling::Configuration.trainer_toggle = true
|
33
|
-
black_element = element_for_spec("#black")
|
34
|
-
black_element.should look_like(@black_box)
|
35
|
-
File.exists?(File.join(@ref_path, @black_box)).should be_true
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|