gatling 0.0.3 → 0.9.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/.DS_Store +0 -0
- data/.gitignore +7 -0
- data/README.rdoc +1 -9
- data/Rakefile +11 -0
- data/gatling.gemspec +3 -0
- data/lib/gatling.rb +41 -11
- data/lib/gatling/version.rb +1 -1
- data/lib/matchers/look_like_matcher.rb +9 -0
- data/spec/configuration_spec.rb +31 -0
- data/spec/gatling_spec.rb +24 -0
- data/spec/spec_helper.rb +9 -0
- metadata +50 -7
- data/gatling.gemspec.orig +0 -30
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
@@ -1,14 +1,6 @@
|
|
1
1
|
= gatling
|
2
2
|
|
3
|
-
Gatling Comparison allows one to build an Rspec / Capybara custom matcher comparing a :css or :xpath element to a referenced screenshot
|
4
|
-
Example:
|
5
|
-
-----------
|
6
|
-
RSpec::Matchers.define :look_like do |expected|
|
7
|
-
match do |actual|
|
8
|
-
Gatling::Comparison.new(expected, actual).matches?
|
9
|
-
end
|
10
|
-
end
|
11
|
-
-----------
|
3
|
+
Gatling Comparison allows one to build an Rspec / Capybara custom matcher comparing a :css or :xpath element to a referenced screenshot.
|
12
4
|
|
13
5
|
Imagemagick must be installed: $sudo apt-get install imagemagick
|
14
6
|
|
data/Rakefile
CHANGED
@@ -1 +1,12 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'rspec/core'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
require File.expand_path('spec/spec_helper.rb')
|
5
|
+
|
6
|
+
task :default => ["run"]
|
7
|
+
|
8
|
+
desc "default test run"
|
9
|
+
RSpec::Core::RakeTask.new(:run) do |t|
|
10
|
+
t.pattern = ['spec/*_spec.rb']
|
11
|
+
end
|
12
|
+
|
data/gatling.gemspec
CHANGED
data/lib/gatling.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'RMagick'
|
2
|
-
include Magick
|
3
2
|
|
4
3
|
module Gatling
|
5
4
|
class Comparison
|
@@ -7,7 +6,6 @@ module Gatling
|
|
7
6
|
#TODO: Training mode
|
8
7
|
#TODO: Diff with reports
|
9
8
|
#TODO: Canidate in spec
|
10
|
-
#TODO: Point ref files to desired folder
|
11
9
|
#TODO: Fuzz matches
|
12
10
|
#TODO: Helpers for cucumber
|
13
11
|
|
@@ -16,9 +14,15 @@ module Gatling
|
|
16
14
|
@actual = actual
|
17
15
|
end
|
18
16
|
|
17
|
+
|
19
18
|
def capture
|
20
|
-
|
21
|
-
|
19
|
+
temp_dir = "#{@reference_image_path}/temp"
|
20
|
+
|
21
|
+
FileUtils::mkdir_p(temp_dir) unless File.exists?(temp_dir)
|
22
|
+
|
23
|
+
#captures the uncropped full screen
|
24
|
+
page.driver.browser.save_screenshot("#{temp_dir}/temp.png")
|
25
|
+
temp_screenshot = Magick::Image.read("#{temp_dir}/temp.png").first
|
22
26
|
end
|
23
27
|
|
24
28
|
def crop_element
|
@@ -28,27 +32,53 @@ module Gatling
|
|
28
32
|
capture.crop(location.x, location.y, size.width, size.height)
|
29
33
|
end
|
30
34
|
|
31
|
-
def save_crop_as_reference(cropped_element)
|
35
|
+
def save_crop_as_reference(cropped_element)
|
36
|
+
candidate_path = "#{@reference_image_path}/candidate"
|
37
|
+
|
38
|
+
FileUtils::mkdir_p(candidate_path) unless File.exists?(candidate_path)
|
39
|
+
|
32
40
|
filename = "#{@expected}".sub(/\.[a-z]*/,'')
|
33
|
-
cropped_element.write("#{filename}_candidate.png")
|
34
|
-
|
41
|
+
cropped_element.write("#{candidate_path}/#{filename}_candidate.png")
|
42
|
+
candidate = "#{candidate_path}/#{filename}_candidate.png"
|
35
43
|
end
|
36
44
|
|
37
45
|
|
38
46
|
def matches?
|
47
|
+
@reference_image_path = Gatling::Configuration.reference_image_path
|
39
48
|
cropped_element = crop_element
|
40
49
|
if File.exists?(@expected)
|
41
50
|
expected_img = Magick::Image.read(@expected).first
|
42
|
-
diff_metric = cropped_element.compare_channel(expected_img, MeanAbsoluteErrorMetric)
|
51
|
+
diff_metric = cropped_element.compare_channel(expected_img, Magick::MeanAbsoluteErrorMetric)
|
43
52
|
matches = diff_metric[1] == 0.0
|
44
53
|
diff_metric.first.write('diff.png') unless matches
|
45
54
|
matches
|
46
55
|
else
|
47
|
-
|
48
|
-
raise "The design reference #{@expected} does not exist, #{
|
56
|
+
candidate = save_crop_as_reference(cropped_element)
|
57
|
+
raise "The design reference #{@expected} does not exist, #{candidate} is now available to be used as a reference"
|
49
58
|
end
|
50
59
|
end
|
51
60
|
end
|
52
|
-
|
61
|
+
|
62
|
+
module Configuration
|
63
|
+
|
64
|
+
class << self
|
65
|
+
|
66
|
+
attr_accessor 'reference_image_path'
|
67
|
+
|
68
|
+
def reference_image_path
|
69
|
+
begin
|
70
|
+
@reference_image_path ||= File.join(Rails.root, 'spec/reference_images')
|
71
|
+
rescue NameError
|
72
|
+
puts "Not using Rails? Please set the reference_image_path"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
|
53
83
|
|
54
84
|
|
data/lib/gatling/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Gatling::Configuration" do
|
4
|
+
|
5
|
+
describe "#reference_image_path" do
|
6
|
+
|
7
|
+
before do
|
8
|
+
begin
|
9
|
+
# Check that rails exists, otherwise fake it for the test
|
10
|
+
Module.const_get("Rails")
|
11
|
+
rescue NameError
|
12
|
+
module Rails
|
13
|
+
def self.root
|
14
|
+
"fake_rails_root"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should default to <Rails.root>/spec/reference_images" do
|
21
|
+
Gatling::Configuration.reference_image_path.should eql("fake_rails_root/spec/reference_images")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should be overrideable" do
|
25
|
+
Gatling::Configuration.reference_image_path = "my custom path"
|
26
|
+
Gatling::Configuration.reference_image_path.should eql("my custom path")
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# before(:all) do
|
4
|
+
# @expected_image =
|
5
|
+
# @page_to_capture =
|
6
|
+
#
|
7
|
+
# end
|
8
|
+
|
9
|
+
|
10
|
+
describe 'creating an initial reference (expected) image' do
|
11
|
+
pending
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'captured and referenced images match' do
|
15
|
+
pending
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'captured and referenced images do NOT match' do
|
19
|
+
pending
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
data/spec/spec_helper.rb
ADDED
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: 0.
|
4
|
+
version: 0.9.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: 2011-12-
|
12
|
+
date: 2011-12-06 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rmagick
|
16
|
-
requirement: &
|
16
|
+
requirement: &70344792244780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,40 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70344792244780
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec-core
|
27
|
+
requirement: &70344792244340 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70344792244340
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70344792243880 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70344792243880
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: capybara
|
49
|
+
requirement: &70344792243340 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70344792243340
|
25
58
|
description: Add visual comparison matchers for rspec
|
26
59
|
email:
|
27
60
|
- grotbart@gmail.com
|
@@ -29,15 +62,22 @@ executables: []
|
|
29
62
|
extensions: []
|
30
63
|
extra_rdoc_files: []
|
31
64
|
files:
|
65
|
+
- .DS_Store
|
32
66
|
- .gitignore
|
33
67
|
- Gemfile
|
68
|
+
- Gemfile.lock
|
34
69
|
- LICENSE.txt
|
35
70
|
- README.rdoc
|
36
71
|
- Rakefile
|
72
|
+
- gatling-0.0.3.gem
|
37
73
|
- gatling.gemspec
|
38
|
-
- gatling.gemspec.orig
|
39
74
|
- lib/gatling.rb
|
40
75
|
- lib/gatling/version.rb
|
76
|
+
- lib/matchers/look_like_matcher.rb
|
77
|
+
- pkg/gatling-0.0.1.gem
|
78
|
+
- spec/configuration_spec.rb
|
79
|
+
- spec/gatling_spec.rb
|
80
|
+
- spec/spec_helper.rb
|
41
81
|
homepage: ''
|
42
82
|
licenses: []
|
43
83
|
post_install_message:
|
@@ -58,8 +98,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
98
|
version: '0'
|
59
99
|
requirements: []
|
60
100
|
rubyforge_project: gatling
|
61
|
-
rubygems_version: 1.8.
|
101
|
+
rubygems_version: 1.8.12
|
62
102
|
signing_key:
|
63
103
|
specification_version: 3
|
64
104
|
summary: Automated visual testing
|
65
|
-
test_files:
|
105
|
+
test_files:
|
106
|
+
- spec/configuration_spec.rb
|
107
|
+
- spec/gatling_spec.rb
|
108
|
+
- spec/spec_helper.rb
|
data/gatling.gemspec.orig
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "gatling/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "gatling"
|
7
|
-
s.version = Gatling::VERSION
|
8
|
-
s.authors = ["Gabriel Rotbart, Amanda Koh"]
|
9
|
-
s.email = ["grotbart@gmail.com"]
|
10
|
-
s.homepage = ""
|
11
|
-
s.summary = %q{Automated visual testing}
|
12
|
-
s.description = %q{Add visual comparison matchers for rspec}
|
13
|
-
|
14
|
-
s.rubyforge_project = "gatling"
|
15
|
-
|
16
|
-
s.files = `git ls-files`.split("\n")
|
17
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
s.require_paths = ["lib"]
|
20
|
-
|
21
|
-
# specify any dependencies here; for example:
|
22
|
-
<<<<<<< HEAD
|
23
|
-
s.add_dependency "rspec"
|
24
|
-
s.add_dependency "rmagick"
|
25
|
-
s.add_dependency "selenium-client"
|
26
|
-
s.add_dependency "capybara"
|
27
|
-
=======
|
28
|
-
s.add_dependency "rmagick"
|
29
|
-
>>>>>>> 01f1c5b58a3aa249141ef026447e2fbe9f5a8b0f
|
30
|
-
end
|