gatling 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ vendor/*
15
15
  *.iml
16
16
  *.ipr
17
17
  *.iws
18
+ /bin
@@ -28,19 +28,22 @@ Also created are subfolders:
28
28
  - /diff - will hold the diff images generated by failed comparison tests
29
29
  - /temp - will only ever hold one screenshot at a time, used to create the cropped element
30
30
 
31
- === max_no_tries - sets how many times Gatling will try and match the element against the reference image. Handy to reduce fragility of tests due to animations and load times. Defaults to 5.
31
+ ==== max_no_tries
32
+ - sets how many times Gatling will try and match the element against the reference image. Handy to reduce fragility of tests due to animations and load times. Defaults to 5.
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
+ ==== Sleep_between_tries
35
+ - sets the sleep time (in seconds) between match tries (requires max_no_tries > 1). Defaults to 0.5
34
36
 
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.
37
+ ==== browser_folders
38
+ - *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
39
 
37
- === Configuration settings are set with the following:
40
+ ==== Configuration settings are set with the following:
38
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
42
+ Gatling.config do |c|
43
+ c.reference_image_path = 'some/path'
44
+ c.max_no_tries = 4
45
+ c.sleep_between_tries = 5
46
+ c.browser_folders = false
44
47
  end
45
48
 
46
49
  GATLING::CONFIGURATION will be depreciated in future versions.
@@ -59,8 +62,26 @@ Gatling will take care of cropping the element and try and make a targeted match
59
62
 
60
63
  If the matcher fails, the test will fail, an exception will be raised and both a diff image and a new candidate image will be created.
61
64
 
62
- If no reference image exits, the test will fail, an exception will be raised and a candidate will be created which can be used as a reference
63
- (see Training mode below)
65
+ If no reference image exits, the test will still pass and a reference file will be created for future comparisons.
66
+
67
+ -------------------------------------
68
+
69
+ === Training mode:
70
+
71
+ <b>GATLING_TRAINER WILL BE DEPRECIATED.</b> Gatling now saves reference files natively when files do not exists.
72
+
73
+ Gatling can be run in training mode which will create reference images where ones do not exist.
74
+
75
+ <b>CAUTION: Trainer mode will pass all the test which rely on the Gatling custom matcher, this can mean a false green build.
76
+ Please make sure you are saving 'clean' references</b>
77
+
78
+ Trainer mode will not overwrite existing references. If you are updating, just delete the old reference image.
79
+
80
+ To set trainer mode, prefix rspec command line with $GATLING_TRAINER = true
81
+
82
+
83
+ Example:
84
+ $GATLING_TRAINER = true rspec spec/my_spec.rb
64
85
 
65
86
  -------------------------------------
66
87
 
@@ -19,8 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_runtime_dependency('rmagick', ['>=2.13.1'])
22
- s.add_runtime_dependency('rspec-core',['>=2.8.0'])
23
- s.add_runtime_dependency('rspec',['>=2.8.0'])
22
+ s.add_runtime_dependency('rspec',['>=2.9.0'])
24
23
  s.add_runtime_dependency('capybara',['>=1.1.2'])
25
24
 
26
25
  s.add_development_dependency('rake',['>=0.9.2'])
@@ -2,7 +2,7 @@ require 'RMagick'
2
2
  require 'capybara'
3
3
  require 'capybara/dsl'
4
4
 
5
- require 'gatling/config'
5
+ require 'gatling/configuration'
6
6
  require 'gatling/image'
7
7
  require 'gatling/comparison'
8
8
  require 'gatling/capture_element'
@@ -12,51 +12,45 @@ require 'gatling/capture_element'
12
12
  #TODO: Make directories as needed
13
13
 
14
14
  module Gatling
15
-
16
15
  class << self
17
16
 
18
- attr_accessor :reference_image_path, :max_no_tries, :sleep_between_tries, :browser_folders
19
-
20
17
  def matches?(expected_reference_filename, actual_element)
18
+
19
+ @actual_element = actual_element
20
+ @expected_reference_filename = expected_reference_filename
21
+ @expected_reference_file = (File.join(Gatling::Configuration.path(:reference), expected_reference_filename))
21
22
 
22
- expected_reference_file = (File.join(Gatling::Configuration.path(:reference), expected_reference_filename))
23
-
24
- if ENV['GATLING_TRAINER']
25
- raise 'GATLING_TRAINER has been depreciated. Gatling will now create reference files where ones are missing. Delete bad references and re-run Gatling to re-train'
26
- end
27
23
 
28
- if !File.exists?(expected_reference_file)
29
- actual_image = Gatling::ImageFromElement.new(actual_element, expected_reference_filename)
30
- save_image_as_reference(actual_image)
24
+ if !File.exists?(@expected_reference_file)
25
+ save_reference
31
26
  return true
32
27
  else
33
- comparison = compare_until_match(actual_element, expected_reference_filename, Gatling::Configuration.max_no_tries)
28
+ reference_file = Gatling::ImageFromFile.new(expected_reference_filename)
29
+ comparison = compare_until_match(actual_element, reference_file, Gatling::Configuration.max_no_tries)
34
30
  matches = comparison.matches?
35
31
  if !matches
36
32
  comparison.actual_image.save(:candidate)
37
33
  save_image_as_diff(comparison.diff_image)
38
34
  end
39
- matches
35
+ matches
40
36
  end
41
37
  end
42
38
 
43
- def compare_until_match actual_element, expected_reference_filename, max_no_tries = Gatling::Configuration.max_no_tries, sleep_time = Gatling::Configuration.sleep_between_tries
44
- try = 0
45
- match = false
46
- expected_image = Gatling::ImageFromFile.new(expected_reference_filename)
47
- comparison = nil
48
- while !match && try < max_no_tries
49
- actual_image = Gatling::ImageFromElement.new(actual_element, expected_reference_filename)
50
- comparison = Gatling::Comparison.new(actual_image, expected_image)
51
- match = comparison.matches?
39
+ def compare_until_match actual_element, reference_file, max_no_tries = Gatling::Configuration.max_no_tries, sleep_time = Gatling::Configuration.sleep_between_tries
40
+ max_no_tries.times do |i|
41
+ actual_image = Gatling::ImageFromElement.new(actual_element, reference_file.file_name)
42
+ @comparison = Gatling::Comparison.new(actual_image, reference_file)
43
+ match = @comparison.matches?
52
44
  if !match
53
45
  sleep sleep_time
54
- try += 1
55
46
  #TODO: Send to logger instead of puts
56
- puts "Tried to match #{try} times"
47
+ i += 1
48
+ puts "Tried to match #{i} times"
49
+ else
50
+ return(@comparison)
57
51
  end
58
52
  end
59
- comparison
53
+ @comparison
60
54
  end
61
55
 
62
56
  def save_image_as_diff(image)
@@ -72,17 +66,18 @@ module Gatling
72
66
  "is now available to be used as a reference. Copy candidate to root reference_image_path to use as reference"
73
67
  end
74
68
 
75
- def save_image_as_reference(image)
76
- if image.exists?
77
- puts "#{image.path} already exists. reference image was not overwritten. please delete the old file to update reference"
78
- else
79
- image.save(:reference)
80
- puts "Saved #{image.path} as reference"
81
- end
69
+ def save_reference
70
+ ImageFromElement.new(@actual_element,@expected_reference_filename).verify_and_save
82
71
  end
83
72
 
84
- def config
85
- yield
73
+ def config(&block)
74
+ begin
75
+ config_class = Gatling::Configuration
76
+ raise "No block provied" unless block_given?
77
+ block.call(config_class)
78
+ rescue
79
+ raise "Config block has changed. Example: Gatling.config {|c| c.reference_image_path = 'some/path'}. Please see README"
80
+ end
86
81
  end
87
82
 
88
83
  end
@@ -1,27 +1,23 @@
1
1
  require 'fileutils'
2
+ require 'gatling'
2
3
 
3
4
  module Gatling
4
- class CaptureElement
5
+ module CaptureElement
6
+ extend Gatling::Configuration
5
7
 
6
- def initialize element_to_capture, *element_to_exclude
7
- @reference_image_path = Gatling::Configuration.reference_image_path
8
- @element_to_capture = element_to_capture
9
- # @element_to_exclude = element_to_exclude.first
10
-
11
- end
12
-
13
- def capture
8
+ def self.capture(element)
14
9
  # Getting the element position before screenshot because of a side effect
15
10
  # of WebDrivers getLocationOnceScrolledIntoView method which scrolls the page
16
11
  # regardless of whether the object is in view or not
17
- element_position = get_element_position @element_to_capture
18
- screenshot = self.take_screenshot
19
- screenshot = exclude(screenshot, @element_to_exclude) if @element_to_exclude
20
- crop_element(screenshot, @element_to_capture, element_position)
12
+ element_position = get_element_position(element)
13
+ screenshot = take_screenshot
14
+
15
+ crop_element(screenshot, element, element_position)
21
16
  end
22
17
 
23
- def take_screenshot
24
- temp_dir = File.join(@reference_image_path, 'temp')
18
+ private
19
+ def self.take_screenshot
20
+ temp_dir = Gatling::Configuration.path(:temp)
25
21
  FileUtils.mkdir_p(temp_dir) unless File.exists?(temp_dir)
26
22
  #captures the uncropped full screen
27
23
  begin
@@ -33,7 +29,7 @@ module Gatling
33
29
  end
34
30
  end
35
31
 
36
- def get_element_position element
32
+ def self.get_element_position element
37
33
  element = element.native
38
34
  position = Hash.new{}
39
35
  position[:x] = element.location.x
@@ -43,8 +39,8 @@ module Gatling
43
39
  position
44
40
  end
45
41
 
46
- def crop_element image, element_to_crop, position
47
- @cropped_element = image.crop(position[:x], position[:y], position[:width], position[:height])
42
+ def self.crop_element image, element_to_crop, position
43
+ cropped_element = image.crop(position[:x], position[:y], position[:width], position[:height])
48
44
  end
49
45
 
50
46
  end
@@ -0,0 +1,67 @@
1
+ require 'logger'
2
+
3
+ module Gatling
4
+ module Configuration
5
+
6
+ class << self
7
+
8
+ attr_accessor :reference_image_path, :max_no_tries, :sleep_between_tries, :browser_folders
9
+
10
+ attr_reader :paths
11
+
12
+ def reference_image_path
13
+ @reference_image_path ||= default_reference_path
14
+ @browser_folders ? (reference_path_with_browser_folders) : @reference_image_path
15
+ end
16
+
17
+ def max_no_tries
18
+ @max_no_tries ||= 5
19
+ end
20
+
21
+ def sleep_between_tries
22
+ @sleep_between_tries ||= 0.5
23
+ end
24
+
25
+ def path(type)
26
+ paths = {:reference => reference_image_path,
27
+ :candidate => File.join(reference_image_path, 'candidate'),
28
+ :diff => File.join(reference_image_path, 'diff'),
29
+ :temp => File.join(reference_image_path, 'temp')}
30
+ paths[type]
31
+ end
32
+
33
+ def default_reference_path
34
+ begin
35
+ reference_image_path = File.join(Rails.root, 'spec/reference_images')
36
+ rescue
37
+ reference_image_path = 'spec/reference_images'
38
+ puts "Currently defaulting to #{@reference_image_path}. Overide this by setting reference_image_path=[refpath] in your configuration block"
39
+ end
40
+ reference_image_path
41
+ end
42
+
43
+ def reference_path_with_browser_folders
44
+ begin
45
+ reference_images_path = File.join(@reference_image_path, browser)
46
+ rescue
47
+ reference_images_path = @reference_image_path
48
+ end
49
+ reference_images_path
50
+ end
51
+
52
+ def browser
53
+ begin
54
+ browser = Capybara.page.driver.browser.browser
55
+ rescue
56
+ browser = Selenium.page.driver.browser.browser
57
+ rescue
58
+ raise "Currently custom folders are only supported by Capybara. ENV variables are coming."
59
+ return nil
60
+ end
61
+ browser.to_s
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
@@ -6,25 +6,22 @@ module Gatling
6
6
  attr_reader :type
7
7
 
8
8
  def initialize image, file_name
9
-
10
9
  @file_name = file_name
11
-
12
10
  @image = image
13
-
14
11
  end
15
12
 
16
- def save type
17
- @path = path(type)
18
- FileUtils::mkdir_p(File.dirname(@path)) unless File.exists?(@path)
19
- @image.write @path
20
- @path
13
+ def save(type = :reference)
14
+ save_path = path(type)
15
+ FileUtils::mkdir_p(File.dirname(save_path)) unless File.exists?(save_path)
16
+ @image.write save_path
17
+ save_path
21
18
  end
22
19
 
23
20
  def exists?
24
21
  File.exists?(path)
25
22
  end
26
23
 
27
- def path type = :reference
24
+ def path(type = :reference)
28
25
  @path = File.join(Gatling::Configuration.path(type), @file_name)
29
26
  end
30
27
 
@@ -32,9 +29,30 @@ module Gatling
32
29
 
33
30
  class ImageFromElement < Image
34
31
 
35
- def initialize element, file_name
32
+ def initialize(element, file_name)
36
33
  super(image, file_name)
37
- @image = Gatling::CaptureElement.new(element).capture
34
+ @element = element
35
+ @image = capture_image
36
+ end
37
+
38
+ def verify_and_save
39
+ Gatling::Configuration.max_no_tries.times do
40
+ comparable = capture_image
41
+ matches = Gatling::Comparison.new(self,Image.new(comparable,@file_name)).matches?
42
+ if matches
43
+ self.save
44
+ puts "Saved #{self.path} as reference"
45
+ return()
46
+ else
47
+ @image = comparable
48
+ end
49
+ end
50
+ raise 'Could not save a stable image. This could be due to animations or page load times. Saved a reference image, delete it to re-try'
51
+ end
52
+
53
+ private
54
+ def capture_image
55
+ Gatling::CaptureElement.capture(@element)
38
56
  end
39
57
 
40
58
  #TODO: make save a relevant subclass method
@@ -42,8 +60,9 @@ module Gatling
42
60
 
43
61
  class ImageFromFile < Image
44
62
 
45
- def initialize file_name
63
+ def initialize(file_name)
46
64
  super(image, file_name)
65
+
47
66
  @image = Magick::Image.read(path).first
48
67
  end
49
68
 
@@ -1,3 +1,4 @@
1
+
1
2
  module Gatling
2
- VERSION = "1.1.2"
3
+ VERSION = "1.1.3"
3
4
  end
@@ -8,7 +8,7 @@ describe 'Gatling' do
8
8
  end
9
9
 
10
10
  before(:each) do
11
- @ref_path = Gatling.reference_image_path = File.join(spec_support_root, 'ref_path')
11
+ @ref_path = Gatling::Configuration.reference_image_path = File.join(spec_support_root, 'ref_path')
12
12
  end
13
13
 
14
14
  after(:each) do
@@ -48,7 +48,7 @@ describe 'Gatling' do
48
48
  "A diff image: #{"black.png"} was created in #{@ref_path}/diff/#{"black.png"} " +
49
49
  "A new reference #{@ref_path}/candidate/#{"black.png"} can be used to fix the test"
50
50
 
51
- expect {Gatling.matches?("black.png", red_element)}.should raise_error(RuntimeError, expected_error)
51
+ expect {Gatling.matches?("black.png", red_element)}.to raise_error(RuntimeError, expected_error)
52
52
 
53
53
  File.exists?(File.join(@ref_path,'diff', "black.png")).should be_true
54
54
  File.exists?(File.join(@ref_path,'candidate', "black.png")).should be_true
@@ -64,7 +64,7 @@ describe 'Gatling' do
64
64
  "A diff image: #{"black.png"} was created in #{@ref_path}/diff/#{"black.png"} " +
65
65
  "A new reference #{@ref_path}/candidate/#{"black.png"} can be used to fix the test"
66
66
 
67
- expect {Gatling.matches?("black.png", red_element)}.should raise_error(RuntimeError, expected_error)
67
+ expect {Gatling.matches?("black.png", red_element)}.to raise_error(RuntimeError, expected_error)
68
68
 
69
69
  File.exists?(File.join(@ref_path,'diff', "black.png")).should be_true
70
70
  File.exists?(File.join(@ref_path,'candidate', "black.png")).should be_true
@@ -73,15 +73,6 @@ describe 'Gatling' do
73
73
  end
74
74
  end
75
75
 
76
- describe 'Gatling browser folders' do
77
-
78
- it 'should set image path according to the driver\'s browser' do
79
- Gatling.browser_folders = true
80
- Gatling.reference_image_path = '/some/random/path'
81
- Gatling::Configuration.reference_image_path.should == '/some/random/path/firefox'
82
- Gatling.browser_folders = false
83
- end
84
- end
85
76
 
86
77
 
87
78
  end
@@ -5,7 +5,7 @@ describe 'rspec matcher' do
5
5
 
6
6
  before(:each) do
7
7
  @black_box = 'black.png'
8
- @ref_path = Gatling.reference_image_path = File.join(spec_support_root, 'ref_path')
8
+ @ref_path = Gatling::Configuration.reference_image_path = File.join(spec_support_root, 'ref_path')
9
9
  create_images_for_web_page
10
10
  end
11
11
 
@@ -25,7 +25,7 @@ describe 'rspec matcher' do
25
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
- expect{red_element.should look_like(@black_box)}.should raise_error
28
+ expect{red_element.should look_like(@black_box)}.to raise_error
29
29
  end
30
30
 
31
31
  end
@@ -2,88 +2,32 @@ require 'spec_helper'
2
2
 
3
3
  describe Gatling::CaptureElement do
4
4
 
5
+ # creating a dummy class to test a module
6
+ class SomeClass
7
+ end
8
+
5
9
  before :each do
6
- capybara_node = mock (Capybara::Node::Element)
7
- Gatling::Configuration.should_receive(:reference_image_path).and_return("./")
8
- @capture_element = Gatling::CaptureElement.new capybara_node, capybara_node
10
+ subject = SomeClass.new
11
+ subject.extend(Gatling::CaptureElement)
9
12
  end
10
13
 
11
14
  after :each do
12
15
  config_clean_up
13
16
  end
14
17
 
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
-
41
-
42
- class Point
43
- attr_accessor :x, :y
44
- end
45
-
46
- class Size
47
- attr_accessor :width, :height
48
- end
49
-
50
- it 'should get the position of the css element' do
51
-
52
- #Overiding the stupid public method:y of YAML module
53
-
54
- location = Point.new
55
- location.x = 1
56
- location.y = 2
57
-
58
- size = Size.new
59
- size.width = 100
60
- size.height = 200
18
+ it '.capture should return a cropped image' do
19
+ capybara_element = mock(Capybara::Node::Element)
20
+ position = {:x => 1, :y => 2, :width => 100, :height => 200}
21
+ magick_image = Magick::Image.new(position[:width],position[:height])
61
22
 
62
- mock_element = mock
63
- mock_element.stub(:native).and_return(mock_element)
64
- mock_element.stub(:location).and_return(location)
65
- mock_element.stub(:size).and_return(size)
66
23
 
67
- position = @capture_element.get_element_position mock_element
24
+ subject.should_receive(:get_element_position).with(capybara_element).and_return(position)
25
+ subject.should_receive(:take_screenshot).and_return(magick_image)
26
+ subject.should_receive(:crop_element).and_return(magick_image)
68
27
 
69
- position[:x].should eql(1)
70
- position[:y].should eql(2)
71
- position[:width].should eql(100)
72
- position[:height].should eql(200)
28
+ image = subject.capture(capybara_element)
29
+ image.class.should == Magick::Image
73
30
  end
74
31
 
75
- end
76
-
77
-
78
-
79
- # it 'should exclude a specified element from capture' do
80
- # element_to_capture =
81
-
82
- # element_to_exclude = 'womething.child'
83
- # # @cropped_and_censored_element = (element_to_capture, element_to_exclude).exclude
84
- # @cropped_and_censored_element.should_not equal(@element_to_capture)
85
- # @cropped_and_censored_element.should_not equal(@element_to_exclude)
86
- # end
87
-
88
32
  end
89
33
 
@@ -9,10 +9,6 @@ describe Gatling::Comparison do
9
9
  @orange = Gatling::Image.new(orange, "orange.png")
10
10
  end
11
11
 
12
- describe 'will make images from ' do
13
-
14
- end
15
-
16
12
  describe 'will compare two images' do
17
13
 
18
14
  it 'will return true if the images are identical' do
@@ -31,29 +31,25 @@ describe Gatling::Configuration do
31
31
  end
32
32
 
33
33
  it "should default to <Rails.root>/spec/reference_images in a rails environment" do
34
- Gatling::Configuration.reference_image_path.should eql("fake_rails_root/spec/reference_images")
34
+ subject.reference_image_path.should == "fake_rails_root/spec/reference_images"
35
35
  end
36
36
 
37
37
  it "should be overrideable in a rails environment" do
38
- Gatling.reference_image_path = "my custom path"
39
- Gatling::Configuration.reference_image_path.should eql("my custom path")
38
+ subject.reference_image_path = "my custom path"
39
+ subject.reference_image_path.should == "my custom path"
40
40
  end
41
41
 
42
42
  it 'should return the directory for a type of image' do
43
- Gatling.reference_image_path = "a_path"
43
+ subject.reference_image_path = "a_path"
44
44
  subject.path(:temp).should == 'a_path/temp'
45
45
  end
46
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
47
  end
52
48
 
53
49
  describe "creating custom reference folders" do
54
50
 
55
51
  before :each do
56
- Gatling.reference_image_path = '/some/ref/path'
52
+ subject.reference_image_path = '/some/ref/path'
57
53
  end
58
54
 
59
55
  it "should default to custom folders off" do
@@ -61,7 +57,7 @@ describe Gatling::Configuration do
61
57
  end
62
58
 
63
59
  it "should allow setting custom folders on" do
64
- Gatling::Configuration.browser_folders = true
60
+ subject.browser_folders = true
65
61
  subject.browser_folders.should == true
66
62
  end
67
63
 
@@ -106,8 +102,8 @@ describe Gatling::Configuration do
106
102
  end
107
103
 
108
104
  it "should be settable" do
109
- Gatling::Configuration.sleep_between_tries = 55
110
- subject.sleep_between_tries.should eql 55
105
+ subject.sleep_between_tries = 55
106
+ subject.sleep_between_tries.should == 55
111
107
  end
112
108
  end
113
109
 
@@ -116,36 +112,68 @@ describe Gatling::Configuration do
116
112
  describe "should accept a block of settings and parse them correctly" do
117
113
 
118
114
  it "for reference_image_path" do
119
- Gatling.config do |setting|
120
- Gatling.reference_image_path = 'custom_path'
115
+ Gatling.config do |c|
116
+ c.reference_image_path = 'custom_path'
121
117
  end
122
- subject.reference_image_path.should eql 'custom_path'
118
+ subject.reference_image_path.should == 'custom_path'
123
119
  end
124
120
 
125
121
  it "for max_no_tries" do
126
- Gatling.config do |setting|
127
- Gatling.max_no_tries = 3
122
+ Gatling.config do |c|
123
+ c.max_no_tries = 3
128
124
  end
129
- subject.max_no_tries.should eql 3
125
+
126
+ subject.max_no_tries.should == 3
130
127
  end
131
128
 
132
129
  it "sleep_between_tries" do
133
- Gatling.config do |setting|
134
- Gatling.sleep_between_tries = 0.7
130
+ Gatling.config do |c|
131
+ c.sleep_between_tries = 0.7
135
132
  end
136
- subject.sleep_between_tries.should eql 0.7
133
+ subject.sleep_between_tries.should == 0.7
137
134
  end
138
135
 
139
- it "browser_folders" do
140
- Gatling.config do |setting|
141
- Gatling.browser_folders = true
136
+ it "for browser_folders" do
137
+ Gatling.config do |c|
138
+ c.browser_folders = true
142
139
  end
143
- subject.browser_folders.should eql true
140
+
141
+ subject.browser_folders.should == true
144
142
  end
145
143
 
146
144
  end
147
145
  end
148
146
 
147
+ describe "config block" do
148
+
149
+ it 'should be able to set a config block' do
150
+ Gatling.config do |c|
151
+ c.reference_image_path = 'some/path'
152
+ c.max_no_tries = 4
153
+ c.sleep_between_tries = 5
154
+ c.browser_folders = false
155
+ end
156
+
157
+ subject.reference_image_path.should == 'some/path'
158
+ subject.max_no_tries.should == 4
159
+ subject.sleep_between_tries.should == 5
160
+ subject.browser_folders.should == false
161
+ end
162
+
163
+ it 'should raise depreciation alert when calling old block' do
164
+ expect {
165
+ Gatling.config do |c|
166
+ Gatling.reference_image_path = 'some/path'
167
+ Gatling.max_no_tries = 4
168
+ Gatling.sleep_between_tries = 5
169
+ Gatling.browser_folders = false
170
+ end
171
+ }.to raise_error "Config block has changed. Example: Gatling.config {|c| c.reference_image_path = 'some/path'}. Please see README"
172
+ end
173
+
174
+
175
+ end
176
+
149
177
 
150
178
 
151
179
 
@@ -3,92 +3,85 @@ include Capybara::DSL
3
3
 
4
4
  describe Gatling do
5
5
 
6
- before :all do
7
- @box = 'box'
8
- @black_box = 'black.png'
9
- @red_box = 'red.png'
6
+ after :all do
7
+ config_clean_up
10
8
  end
11
9
 
12
- describe '#Gatling' do
10
+ let(:actual_image) { mock("Gatling::Image") }
11
+ let(:expected_image) { mock("Gatling::Image") }
12
+ let(:comparison) { mock("Gatling::Comparison") }
13
+ let(:element) { mock("Gatling::CaptureElement") }
13
14
 
15
+
16
+ describe 'comparison' do
14
17
  before :each do
15
- @image_class_mock = mock(Gatling::Image)
18
+ Gatling::ImageFromFile.stub!(:new).and_return(expected_image)
19
+ Gatling::ImageFromElement.stub!(:new).and_return(actual_image)
20
+ Gatling::Comparison.stub!(:new).and_return(comparison)
21
+ expected_image.should_receive(:file_name).and_return('expected_image.png')
16
22
  end
17
23
 
18
24
  it 'will return true if the images are identical' do
19
- @apple = mock("Gatling::Image")
20
- @orange = mock("Gatling::Image")
21
- @element = mock("Gatling::CaptureElement")
22
- @comparison = mock("Gatling::Comparison")
23
- Gatling::ImageFromFile.stub!(:new).and_return(@orange)
24
- Gatling::ImageFromElement.stub!(:new).and_return(@orange)
25
- Gatling::Comparison.stub!(:new).and_return(@comparison)
26
- @comparison.stub!(:matches?).and_return(true)
25
+ comparison.stub!(:matches?).and_return(true)
27
26
  File.stub!(:exists?).and_return(true)
28
- subject.matches?("orange.png", @element).should be_true
27
+
28
+ subject.matches?("expected_image.png", @element).should be_true
29
+ end
30
+ end
31
+
32
+
33
+ describe 'saving images' do
34
+ before :each do
35
+ @image_class_mock = mock(Gatling::Image)
29
36
  end
30
37
 
38
+
31
39
  it "#save_image_as_diff" do
32
40
  @image_class_mock.should_receive(:save).with(:diff).and_return(@ref_path)
33
41
  @image_class_mock.should_receive(:file_name).at_least(:once).and_return("some_name")
34
- expect {subject.save_image_as_diff(@image_class_mock)}.should raise_error
42
+
43
+ expect {subject.save_image_as_diff(@image_class_mock)}.to raise_error
35
44
  end
36
45
 
37
46
  it "#save_image_as_candidate" do
38
47
  @image_class_mock.should_receive(:save).with(:candidate).and_return(@ref_path)
39
48
  @image_class_mock.should_receive(:file_name).at_least(:once).and_return("some_name")
40
49
  @image_class_mock.should_receive(:path).and_return(@path)
41
- expect {subject.save_image_as_candidate(@image_class_mock)}.should raise_error
50
+ expect {subject.save_image_as_candidate(@image_class_mock)}.to raise_error
42
51
  end
43
52
 
44
53
  describe "#save_image_as_reference" do
45
54
 
46
- it "when image.exists? == true" do
47
- @image_class_mock.should_receive(:exists?).and_return(true)
48
- @image_class_mock.should_receive(:path).and_return(@path)
49
- @image_class_mock.should_not_receive(:save)
50
- subject.save_image_as_reference(@image_class_mock)
51
- end
55
+ let(:image) {mock('image.png')}
56
+ let(:reference_image) {Gatling::ImageFromElement.stub(:new).and_return(image)}
57
+ let(:comparison) {mock("comparison")}
52
58
 
53
- it "when image_exists? == false" do
54
- @image_class_mock.should_receive(:exists?).and_return(false)
55
- @image_class_mock.should_receive(:save).with(:reference).and_return(@ref_path)
56
- @image_class_mock.should_receive(:path).and_return(@path)
57
- subject.save_image_as_reference(@image_class_mock)
59
+ before :each do
60
+ Gatling.stub!(:compare_until_match).and_return(comparison)
58
61
  end
59
62
 
60
63
  end
64
+ end
61
65
 
66
+ describe "#compare_until_match" do
62
67
 
68
+ before :each do
69
+ Gatling::ImageFromElement.stub!(:new).and_return(actual_image)
70
+ Gatling::ImageFromFile.stub!(:new).and_return(expected_image)
71
+ Gatling::Comparison.stub!(:new).and_return(comparison)
63
72
 
73
+ expected_image.should_receive(:file_name).at_least(:once).and_return('expected_image.png')
64
74
  end
65
75
 
66
- describe "#compare_until_match" do
67
-
68
- before do
69
- @ref_image = mock("Gatling::Image")
70
- @actual_image = mock("Gatling::Image")
71
- @element = mock("Gatling::CaptureElement")
72
- @comparison = mock("Gatling::Comparison")
73
- Gatling::ImageFromFile.stub!(:new).and_return(@ref_image)
74
- Gatling::ImageFromElement.stub!(:new).and_return(@actual_image)
75
- Gatling::Comparison.stub!(:new).and_return(@comparison)
76
- end
77
-
78
- it "should try match for a specified amount of times" do
79
- @comparison.should_receive(:matches?).exactly(3).times
80
- Gatling.compare_until_match(@element, "orange.png", 3)
81
- end
76
+ it "should try match for a specified amount of times" do
77
+ comparison.should_receive(:matches?).exactly(3).times.and_return(false)
78
+ Gatling.compare_until_match(@element, expected_image, 3, 0.1)
79
+ end
82
80
 
83
- it "should pass after a few tries if match is found" do
84
- @comparison.should_receive(:matches?).exactly(1).times.and_return(true)
85
- Gatling.compare_until_match(@element, "orange.png", 3)
86
- end
81
+ it "should pass after a few tries if match is found" do
82
+ comparison.should_receive(:matches?).exactly(1).times.and_return(true)
83
+ Gatling.compare_until_match(@element, expected_image, 3, 0.1)
84
+ end
87
85
 
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
86
  end
94
87
  end
@@ -2,10 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  describe Gatling::Image do
4
4
 
5
- before :all do
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'
5
+ let(:example_image) { Magick::Image.new(1,1) }
6
+ let(:ref_path) { 'spec/reference_images/image.png' }
7
+
8
+ before :each do
9
+ Gatling::Configuration.reference_image_path = 'spec/reference_images'
9
10
  end
10
11
 
11
12
  after :each do
@@ -13,92 +14,28 @@ describe Gatling::Image do
13
14
  end
14
15
 
15
16
  describe 'should initialize from' do
16
-
17
- it 'image file type' do
17
+ it 'ImageFromFile - IO file read' do
18
18
  File.stub(:exists?).and_return(true)
19
- image_mock = mock(Magick::Image)
20
- Gatling::Configuration.should_receive(:reference_image_path).any_number_of_times.and_return(@ref_path)
21
- Magick::Image.should_receive(:read).with('./image_tests/image.png').and_return([image_mock])
19
+ Magick::Image.should_receive(:read).with(ref_path).and_return([example_image])
20
+
22
21
  subject = Gatling::ImageFromFile.new("image.png")
23
- subject.image.should == image_mock
24
- subject.file_name.should == 'image.png'
25
- end
26
-
27
- it 'web element type' do
28
- mock_element = mock(Capybara::Node::Element)
29
- mock_capture_element = mock(Gatling::CaptureElement)
30
- mock_image = mock(Magick::Image)
31
-
32
- Gatling::CaptureElement.should_receive(:new).and_return mock_capture_element
33
- mock_capture_element.should_receive(:capture).and_return mock_image
34
- subject = Gatling::ImageFromElement.new(mock_element, "image.png")
35
- subject.image.should == mock_image
22
+ subject.image.should == example_image
36
23
  subject.file_name.should == 'image.png'
37
24
  end
38
25
 
39
- it 'diff image' do
40
- mock_image = mock(Magick::Image)
41
- subject = Gatling::Image.new(mock_image, 'image.png')
42
- subject.image.should == mock_image
43
- subject.file_name.should == 'image.png'
44
- end
26
+
45
27
  end
46
28
 
47
- describe "Images file handling" do
48
-
49
- before :each do
50
- Gatling::Configuration.should_receive(:reference_image_path).any_number_of_times.and_return(@ref_path)
51
- end
52
-
53
- it 'will save an image to the correct path for the type' do
54
- mock_image = mock(Magick::Image)
55
- mock_image.should_receive(:write).with('./image_tests/temp/image.png').and_return()
56
- subject = Gatling::Image.new(mock_image, 'image.png')
57
- subject.image = mock_image
58
- subject.file_name = 'image.png'
59
- subject.save(:temp)
60
- end
61
-
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)
29
+ describe "save" do
30
+ it 'will save an image' do
31
+ example_image.should_receive(:write).with(ref_path).and_return()
66
32
 
67
- mock_image = stub(Magick::Image)
68
- mock_image.should_receive(:write).with(expected_full_path).and_return()
69
-
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)
73
-
74
- subject.save(:temp)
75
- subject.path(:temp).should == expected_full_path
76
- end
77
-
78
- it 'will save an image if directory exist' do
79
- mock_image = stub(Magick::Image)
80
- mock_image.should_receive(:write).with(@expected_temp_image_path).and_return()
81
-
82
- File.should_receive(:exists?).with(@expected_temp_image_path).and_return(true)
33
+ File.should_receive(:exists?).with(ref_path).and_return(true)
83
34
  FileUtils.should_not_receive(:mkdir_p)
84
- subject = Gatling::Image.new(mock_image, 'image.png')
85
-
86
- subject.save(:temp)
87
- subject.path(:temp).should == @expected_temp_image_path
88
- end
89
-
90
- it 'should check if a file exists, with the file name and type' do
91
- mock_image = mock(Magick::Image)
92
- File.should_receive(:exists?).with './image_tests/image.png'
93
- subject = Gatling::Image.new(mock_image, 'image.png')
94
- subject.file_name = 'image.png'
95
- subject.exists?
96
- end
35
+ subject = Gatling::Image.new(example_image, "image.png")
97
36
 
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')
37
+ subject.save
38
+ subject.path.should == ref_path
102
39
  end
103
40
  end
104
41
 
@@ -125,4 +62,47 @@ describe Gatling::Image do
125
62
 
126
63
  end
127
64
 
65
+ describe "ImageFromElement" do
66
+
67
+ let(:mock_element) { mock(Capybara::Node::Element) }
68
+ let(:comparison) { mock('comparison') }
69
+
70
+ it 'should initialize from a web element' do
71
+ Gatling::CaptureElement.should_receive(:capture).with(mock_element).and_return(example_image)
72
+
73
+ subject = Gatling::ImageFromElement.new(mock_element, "image.png")
74
+ subject.image.class.should == example_image.class
75
+ subject.file_name.should == 'image.png'
76
+ end
77
+
78
+ describe '.save_and_verify' do
79
+
80
+ it 'should verify the element and then save' do
81
+ Gatling::Comparison.should_receive(:new).exactly(2).times.and_return(comparison)
82
+ comparison.should_receive(:matches?).exactly(2).times.and_return(false,true)
83
+
84
+ Gatling::CaptureElement.should_receive(:capture).exactly(3).times.with(mock_element).and_return(example_image)
85
+
86
+ subject = Gatling::ImageFromElement.new(mock_element, "image.png")
87
+ subject.should_receive(:save)
88
+
89
+ Gatling::Configuration.max_no_tries = 3
90
+
91
+ subject.verify_and_save
92
+ end
93
+
94
+ it 'should raise an exception if can\'t create a stable image' do
95
+ Gatling::Configuration.max_no_tries = 1
96
+ Gatling::CaptureElement.stub!(:capture).and_return(mock_element)
97
+ Gatling::Comparison.stub!(:matches?).and_return(false)
98
+
99
+ subject = Gatling::ImageFromElement.new(mock_element, "image.png")
100
+
101
+ expect {subject.verify_and_save}.to raise_error
102
+ end
103
+ end
104
+
105
+
106
+ end
107
+
128
108
  end
@@ -28,7 +28,7 @@ describe 'Gatling' do
28
28
  "is now available to be used as a reference. " +
29
29
  "Copy candidate to root reference_image_path to use as reference"
30
30
 
31
- expect {Gatling.matches?(@black_box, mock_element)}.should raise_error(RuntimeError, expected_error)
31
+ expect {Gatling.matches?(@black_box, mock_element)}.to raise_error(RuntimeError, expected_error)
32
32
 
33
33
  File.exists?(File.join(@ref_path, 'candidate', @black_box)).should be_true
34
34
  end
@@ -8,7 +8,6 @@ require 'fileutils'
8
8
  require 'pry'
9
9
 
10
10
  #todo: spec folders clean up method
11
-
12
11
  RSpec.configure do |config|
13
12
  config.color_enabled = true
14
13
  config.formatter = 'documentation'
@@ -21,6 +20,7 @@ Capybara.run_server = false
21
20
  def config_clean_up
22
21
  Gatling::Configuration.reference_image_path = nil
23
22
  Gatling::Configuration.browser_folders = false
23
+ Gatling::Configuration.max_no_tries = nil
24
24
  end
25
25
 
26
26
  def remove_refs(dir)
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.1.2
4
+ version: 1.1.3
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-08-07 00:00:00.000000000 Z
12
+ date: 2012-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rmagick
16
- requirement: &70284092348740 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,32 +21,31 @@ dependencies:
21
21
  version: 2.13.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70284092348740
25
- - !ruby/object:Gem::Dependency
26
- name: rspec-core
27
- requirement: &70284092347260 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
28
25
  none: false
29
26
  requirements:
30
27
  - - ! '>='
31
28
  - !ruby/object:Gem::Version
32
- version: 2.8.0
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *70284092347260
29
+ version: 2.13.1
36
30
  - !ruby/object:Gem::Dependency
37
31
  name: rspec
38
- requirement: &70284092346420 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
39
33
  none: false
40
34
  requirements:
41
35
  - - ! '>='
42
36
  - !ruby/object:Gem::Version
43
- version: 2.8.0
37
+ version: 2.9.0
44
38
  type: :runtime
45
39
  prerelease: false
46
- version_requirements: *70284092346420
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.9.0
47
46
  - !ruby/object:Gem::Dependency
48
47
  name: capybara
49
- requirement: &70284092345580 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
50
49
  none: false
51
50
  requirements:
52
51
  - - ! '>='
@@ -54,10 +53,15 @@ dependencies:
54
53
  version: 1.1.2
55
54
  type: :runtime
56
55
  prerelease: false
57
- version_requirements: *70284092345580
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.2
58
62
  - !ruby/object:Gem::Dependency
59
63
  name: rake
60
- requirement: &70284092344680 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
61
65
  none: false
62
66
  requirements:
63
67
  - - ! '>='
@@ -65,10 +69,15 @@ dependencies:
65
69
  version: 0.9.2
66
70
  type: :development
67
71
  prerelease: false
68
- version_requirements: *70284092344680
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.9.2
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rspec-instafail
71
- requirement: &70284092343720 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
72
81
  none: false
73
82
  requirements:
74
83
  - - ! '>='
@@ -76,10 +85,15 @@ dependencies:
76
85
  version: 0.1.8
77
86
  type: :development
78
87
  prerelease: false
79
- version_requirements: *70284092343720
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.1.8
80
94
  - !ruby/object:Gem::Dependency
81
95
  name: pry
82
- requirement: &70284092343120 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
83
97
  none: false
84
98
  requirements:
85
99
  - - ! '>='
@@ -87,11 +101,25 @@ dependencies:
87
101
  version: 0.9.8.2
88
102
  type: :development
89
103
  prerelease: false
90
- version_requirements: *70284092343120
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 0.9.8.2
91
110
  description: Add visual comparison matchers for rspec
92
111
  email:
93
112
  - grotbart@gmail.com
94
- executables: []
113
+ executables:
114
+ - autospec
115
+ - coderay
116
+ - htmldiff
117
+ - ldiff
118
+ - nokogiri
119
+ - pry
120
+ - rackup
121
+ - rake
122
+ - rspec
95
123
  extensions: []
96
124
  extra_rdoc_files: []
97
125
  files:
@@ -103,11 +131,20 @@ files:
103
131
  - LICENSE.txt
104
132
  - README.rdoc
105
133
  - Rakefile
134
+ - bin/autospec
135
+ - bin/coderay
136
+ - bin/htmldiff
137
+ - bin/ldiff
138
+ - bin/nokogiri
139
+ - bin/pry
140
+ - bin/rackup
141
+ - bin/rake
142
+ - bin/rspec
106
143
  - gatling.gemspec
107
144
  - lib/gatling.rb
108
145
  - lib/gatling/capture_element.rb
109
146
  - lib/gatling/comparison.rb
110
- - lib/gatling/config.rb
147
+ - lib/gatling/configuration.rb
111
148
  - lib/gatling/image.rb
112
149
  - lib/gatling/matchers/look_like_matcher.rb
113
150
  - lib/gatling/version.rb
@@ -145,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
182
  version: '0'
146
183
  requirements: []
147
184
  rubyforge_project: gatling
148
- rubygems_version: 1.8.11
185
+ rubygems_version: 1.8.24
149
186
  signing_key:
150
187
  specification_version: 3
151
188
  summary: Automated visual testing
@@ -1,84 +0,0 @@
1
- require 'logger'
2
-
3
- module Gatling
4
- module Configuration
5
-
6
- class << self
7
-
8
- attr_accessor :reference_image_path, :max_no_tries, :sleep_between_tries, :browser_folders
9
-
10
- attr_reader :paths
11
-
12
- def reference_image_path
13
- construct_path
14
- end
15
-
16
- def max_no_tries
17
- Gatling.max_no_tries || @max_no_tries ||= 5
18
- end
19
-
20
- def sleep_between_tries
21
- Gatling.sleep_between_tries || @sleep_between_tries ||= 0.5
22
- end
23
-
24
- def path(type)
25
- paths = Hash[:reference => reference_image_path,
26
- :candidate => File.join(reference_image_path, 'candidate'),
27
- :diff => File.join(reference_image_path, 'diff'),
28
- :temp => File.join(reference_image_path, 'temp')]
29
- if paths.keys.include? type
30
- return paths[type]
31
- else
32
- raise "Unkown image type '#{type}'"
33
- end
34
- end
35
-
36
- def construct_path
37
- private
38
- reference_image_path = user_set_reference_path || default_reference_path
39
- reference_image_path = reference_path_with_browser_folders(reference_image_path) if browser_folders
40
- reference_image_path
41
- end
42
-
43
- def user_set_reference_path
44
- Gatling.reference_image_path
45
- end
46
-
47
- def default_reference_path
48
- begin
49
- reference_image_path = File.join(Rails.root, 'spec/reference_images')
50
- rescue
51
- reference_image_path = 'spec/reference_images'
52
- puts "Currently defaulting to #{@reference_image_path}. Overide this by setting Gatling.reference_image_path=[refpath]"
53
- end
54
- reference_image_path
55
- end
56
-
57
- def reference_path_with_browser_folders path
58
- begin
59
- reference_images_path = File.join(path, browser)
60
- rescue
61
- reference_images_path = path
62
- end
63
- reference_images_path
64
- end
65
-
66
- def browser_folders
67
- Gatling.browser_folders || @browser_folders ||= false
68
- end
69
-
70
- def browser
71
- begin
72
- browser = Capybara.page.driver.browser.browser
73
- rescue
74
- browser = Selenium.page.driver.browser.browser
75
- rescue
76
- raise "Currently custom folders are only supported by Capybara. ENV variables are coming."
77
- end
78
- browser.to_s
79
- end
80
-
81
- end
82
-
83
- end
84
- end