symilaa 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,13 @@
1
1
  module Symilaa
2
2
  module ComparisonSupport
3
+ def base_dir= dir
4
+ @base_dir = dir
5
+ end
6
+
7
+ def base_dir
8
+ @base_dir || 'artifacts'
9
+ end
10
+
3
11
  def add_text_to_image text, image
4
12
  txt = Magick::Draw.new
5
13
  image.annotate(txt, 0, 0, 0, 50, text) {
@@ -18,8 +26,7 @@ module Symilaa
18
26
  gif.write(output_file)
19
27
  end
20
28
 
21
- def get_unique_file_name path, extension, inc
22
- inc = 0 unless inc
29
+ def get_unique_file_name path, extension, inc=0
23
30
  inc = inc.to_int+1
24
31
 
25
32
  new_path = "#{path}#{inc}#{extension}"
@@ -31,42 +38,97 @@ module Symilaa
31
38
  end
32
39
  end
33
40
 
34
- def check_screen_against_reference_shot sub_directory
35
- sub_directory = "#{sub_directory}#{@gherkin_statement.parameterize.underscore}/"
36
-
37
- FileUtils.mkdir_p("#{SCREENSHOTS_GENERATED_THIS_RUN_DIR}/#{sub_directory}")
38
-
39
- browser_info = page.driver.browser.capabilities
41
+ def create_directories directories
42
+ directories.each do |dir|
43
+ path = File.join base_dir, dir
44
+ FileUtils.rm_rf(path) if File.exists? path
45
+ FileUtils.mkdir_p path
46
+ end
47
+ end
40
48
 
41
- version_if_required = "_#{browser_info.version.gsub('.', '-')}" unless browser_info.browser_name == 'firefox' and browser_info.version != '3.5' or browser_info.browser_name == 'chrome'
49
+ def browser_info
50
+ @browser_info ||= page.driver.browser.capabilities
51
+ end
42
52
 
43
- title = find('title').text
44
- file_name = "#{browser_info.browser_name.capitalize.parameterize}#{version_if_required}_#{browser_info.platform.capitalize}_#{title.parameterize.underscore}"
45
- test_file = get_unique_file_name "#{SCREENSHOTS_GENERATED_THIS_RUN_DIR}/#{sub_directory}#{file_name}", '.png', nil
53
+ def browser_name
54
+ browser_info.browser_name
55
+ end
46
56
 
47
- page.driver.browser.save_screenshot test_file
57
+ def browser_version
58
+ browser_info.version
59
+ end
48
60
 
49
- screenshot_name = File.basename test_file
50
- reference_file = "#{REFERENCE_SCREENSHOTS}/#{sub_directory}#{screenshot_name}"
61
+ def title
62
+ find('title').text.parameterize.underscore
63
+ end
51
64
 
65
+ def same? reference_file, test_file
52
66
  reference_screenshot = Image.new reference_file
53
67
  generated_screenshot = Image.new test_file
54
68
 
55
- same = if dodgy_browser?
56
- reference_screenshot.similar_to? generated_screenshot
57
- else
58
- reference_screenshot == generated_screenshot
59
- end
60
-
61
- unless same
62
- FileUtils.mkdir_p("#{DIFFERENCES_IN_SCREENSHOTS_THIS_RUN_DIR}/#{sub_directory}")
63
- produce_gif_showing_the_difference_between(reference_file, test_file, "#{DIFFERENCES_IN_SCREENSHOTS_THIS_RUN_DIR}/#{sub_directory}#{screenshot_name}_difference.gif")
64
- fail "Some of the screenshots did not match"
69
+ if dodgy_browser?
70
+ reference_screenshot.similar_to? generated_screenshot
71
+ else
72
+ reference_screenshot == generated_screenshot
65
73
  end
66
74
  end
67
75
 
68
76
  def dodgy_browser?
69
77
  %w[chrome ie7 ie8 ie9].include? ENV['REQUIRED_BROWSER']
70
78
  end
79
+
80
+ def chrome_or_firefox_3_5
81
+ browser_name == 'chrome' or (browser_name == 'firefox' and browser_version == '3.5')
82
+ end
83
+
84
+ def version_if_required
85
+ "_#{browser_info.version.gsub('.', '-')}" if chrome_or_firefox_3_5?
86
+ end
87
+
88
+ def reference_screenshots
89
+ File.join base_dir, 'reference_screenshots'
90
+ end
91
+
92
+ def screenshots_generated_this_run_dir
93
+ File.join base_dir, 'screenshots_generated_this_run'
94
+ end
95
+
96
+ def scenario_name
97
+ @gherkin_statement.parameterize.underscore if @gherkin_statement
98
+ end
99
+
100
+ def create_screenshot_directory sub_directory, scenario_name
101
+ FileUtils.mkdir_p(File.join screenshots_generated_this_run_dir, sub_directory, scenario_name)
102
+ end
103
+
104
+ def create_screenshot_filename sub_directory
105
+ file_name = "#{browser_info.browser_name.capitalize.parameterize}#{version_if_required}_#{browser_info.platform.capitalize}_#{title}"
106
+ get_unique_file_name "#{screenshots_generated_this_run_dir}/#{sub_directory}#{file_name}", '.png'
107
+ end
108
+
109
+ def save_screenshot screenshot_path
110
+ page.driver.browser.save_screenshot screenshot_path
111
+ end
112
+
113
+ def check_screen_against_reference_shot target_sub_directory
114
+ create_directories %w[reference_screenshots screenshots_generated_this_run differences_in_screenshots_this_run]
115
+ create_screenshot_directory target_sub_directory
116
+
117
+ generated_screenshot_path = create_screenshot_filename target_sub_directory
118
+ screenshot_name = File.basename generated_screenshot_path
119
+ reference_path = File.join reference_screenshots, target_sub_directory, screenshot_name
120
+ difference_file = File.join path, "#{screenshot_name}_difference.gif"
121
+
122
+ save_screenshot generated_screenshot_path
123
+
124
+ unless same? reference_path, generated_screenshot_path
125
+ path = File.join differences_in_screenshots_this_run_dir, target_sub_directory
126
+ FileUtils.mkdir_p path
127
+
128
+ produce_gif_showing_the_difference_between reference_path, generated_screenshot_path, difference_file
129
+
130
+ fail "Some of the screenshots did not match"
131
+ end
132
+ end
71
133
  end
72
134
  end
@@ -1,3 +1,3 @@
1
1
  module Symilaa
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: symilaa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-11-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: &15138960 !ruby/object:Gem::Requirement
16
+ requirement: &10950900 !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: :development
23
23
  prerelease: false
24
- version_requirements: *15138960
24
+ version_requirements: *10950900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard-minitest
27
- requirement: &15138060 !ruby/object:Gem::Requirement
27
+ requirement: &10950400 !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: :development
34
34
  prerelease: false
35
- version_requirements: *15138060
35
+ version_requirements: *10950400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &15137560 !ruby/object:Gem::Requirement
38
+ requirement: &10949920 !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: :development
45
45
  prerelease: false
46
- version_requirements: *15137560
46
+ version_requirements: *10949920
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rb-inotify
49
- requirement: &15137100 !ruby/object:Gem::Requirement
49
+ requirement: &10557620 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *15137100
57
+ version_requirements: *10557620
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rmagick
60
- requirement: &15108860 !ruby/object:Gem::Requirement
60
+ requirement: &10557040 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *15108860
68
+ version_requirements: *10557040
69
69
  description: ! "Using the wonders of RMagick, this wonderful gem will produce a boolean
70
70
  result based on the computed similarity\n of the two images passed."
71
71
  email:
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  version: '0'
114
114
  segments:
115
115
  - 0
116
- hash: -2857289214449860122
116
+ hash: 2284028661893929542
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  segments:
124
124
  - 0
125
- hash: -2857289214449860122
125
+ hash: 2284028661893929542
126
126
  requirements: []
127
127
  rubyforge_project: symilaa
128
128
  rubygems_version: 1.8.10