gatling 0.9.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/gatling.rb CHANGED
@@ -5,20 +5,23 @@ module Gatling
5
5
 
6
6
  #TODO: Training mode
7
7
  #TODO: Diff with reports
8
- #TODO: Canidate in spec
9
8
  #TODO: Fuzz matches
10
9
  #TODO: Helpers for cucumber
11
10
 
12
11
  def initialize expected, actual
13
12
  @expected = expected
14
13
  @actual = actual
14
+
15
+ @reference_image_path = Gatling::Configuration.reference_image_path
16
+ @expected_image = "#{@reference_image_path}/#{@expected}"
17
+ @expected_filename = "#{@expected}".sub(/\.[a-z]*/,'')
15
18
  end
16
19
 
17
-
20
+
18
21
  def capture
19
22
  temp_dir = "#{@reference_image_path}/temp"
20
23
 
21
- FileUtils::mkdir_p(temp_dir) unless File.exists?(temp_dir)
24
+ FileUtils::mkdir_p(temp_dir)
22
25
 
23
26
  #captures the uncropped full screen
24
27
  page.driver.browser.save_screenshot("#{temp_dir}/temp.png")
@@ -34,27 +37,42 @@ module Gatling
34
37
 
35
38
  def save_crop_as_reference(cropped_element)
36
39
  candidate_path = "#{@reference_image_path}/candidate"
37
-
38
- FileUtils::mkdir_p(candidate_path) unless File.exists?(candidate_path)
39
-
40
- filename = "#{@expected}".sub(/\.[a-z]*/,'')
41
- cropped_element.write("#{candidate_path}/#{filename}_candidate.png")
42
- candidate = "#{candidate_path}/#{filename}_candidate.png"
43
- end
40
+
41
+ FileUtils::mkdir_p(candidate_path)
42
+
43
+ cropped_element.write("#{candidate_path}/#{@expected_filename}.png")
44
+ candidate = "#{candidate_path}/#{@expected_filename}.png"
45
+ end
46
+
47
+ def create_diff
48
+ diff_path = "#{@reference_image_path}/diff"
49
+
50
+ FileUtils::mkdir_p(diff_path)
51
+
52
+ @diff_metric.first.write("#{diff_path}/#{@expected_filename}_diff.png")
53
+
54
+ candidate = save_crop_as_reference(@cropped_element)
55
+ raise "element did not match #{@expected}. A diff image: #{@expected_filename}_diff.png was created in #{diff_path}. A new reference #{candidate} can be used to fix the test"
56
+ end
44
57
 
45
58
 
46
59
  def matches?
47
- @reference_image_path = Gatling::Configuration.reference_image_path
48
- cropped_element = crop_element
49
- if File.exists?(@expected)
50
- expected_img = Magick::Image.read(@expected).first
51
- diff_metric = cropped_element.compare_channel(expected_img, Magick::MeanAbsoluteErrorMetric)
52
- matches = diff_metric[1] == 0.0
53
- diff_metric.first.write('diff.png') unless matches
60
+
61
+ @cropped_element = crop_element
62
+ if File.exists?(@expected_image)
63
+
64
+ expected_img = Magick::Image.read(@expected_image).first
65
+
66
+ @diff_metric = @cropped_element.compare_channel(expected_img, Magick::MeanAbsoluteErrorMetric)
67
+
68
+ matches = @diff_metric[1] == 0.0
69
+
70
+ create_diff unless matches
71
+
54
72
  matches
55
73
  else
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"
74
+ candidate = save_crop_as_reference(@cropped_element)
75
+ raise "The design reference #{@expected} does not exist, #{candidate} is now available to be used as a reference. Copy candidate to root reference_image_path to use as reference"
58
76
  end
59
77
  end
60
78
  end
@@ -66,11 +84,14 @@ module Gatling
66
84
  attr_accessor 'reference_image_path'
67
85
 
68
86
  def reference_image_path
87
+ #if defined?(Rails) or @reference_image_path.nil?
88
+ # @reference_image_path ||= File.join(Rails.root, 'spec/reference_images')
89
+ #end
69
90
  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
91
+ @reference_image_path ||= File.join(Rails.root, 'spec/reference_images')
92
+ rescue
93
+ raise "Not using Rails? Please set the reference_image_path"
94
+ end
74
95
  end
75
96
 
76
97
  end
@@ -1,3 +1,3 @@
1
1
  module Gatling
2
- VERSION = "0.9.9"
2
+ VERSION = "1.0.0"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'capybara'
2
2
  require 'capybara/dsl'
3
3
  require 'gatling'
4
- require 'matchers/look_like_matcher.rb'
4
+ require 'matchers/look_like_matcher'
5
5
 
6
6
  Capybara.default_driver = :selenium
7
7
  Capybara.app_host = 'http://www.google.com'
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.9.9
4
+ version: 1.0.0
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-06 00:00:00.000000000Z
12
+ date: 2011-12-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rmagick
16
- requirement: &70344792244780 !ruby/object:Gem::Requirement
16
+ requirement: &70169406514200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70344792244780
24
+ version_requirements: *70169406514200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec-core
27
- requirement: &70344792244340 !ruby/object:Gem::Requirement
27
+ requirement: &70169406513780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70344792244340
35
+ version_requirements: *70169406513780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70344792243880 !ruby/object:Gem::Requirement
38
+ requirement: &70169406513260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70344792243880
46
+ version_requirements: *70169406513260
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: capybara
49
- requirement: &70344792243340 !ruby/object:Gem::Requirement
49
+ requirement: &70169406512760 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70344792243340
57
+ version_requirements: *70169406512760
58
58
  description: Add visual comparison matchers for rspec
59
59
  email:
60
60
  - grotbart@gmail.com