compaa 0.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Compaa::DifferenceImage do
4
+ attr_reader :path, :subject
5
+
6
+ before do
7
+ @path = File.join %w[artifacts differences_in_screenshots_this_run dir file.png_difference.gif]
8
+ @subject = Compaa::DifferenceImage.new @path
9
+ end
10
+
11
+ describe :all do
12
+ it "returns an array of all difference images in the artifacts directory" do
13
+ file_list = [
14
+ File.join(%w[artifacts differences_in_screenshots_this_run file.png_difference.gif]),
15
+ File.join(%w[artifacts differences_in_screenshots_this_run dir file.png_difference.gif]),
16
+ File.join(%w[artifacts differences_in_screenshots_this_run dir file.png_difference_2.gif]),
17
+ File.join(%w[artifacts differences_in_screenshots_this_run dir sub_dir file.png_difference.gif])
18
+ ]
19
+
20
+ Dir.stub :glob, file_list do
21
+ Compaa::DifferenceImage.all.map(&:path).must_equal file_list
22
+ end
23
+ end
24
+ end
25
+
26
+ it "creates a reference image" do
27
+ mock_file_manager = MiniTest::Mock.new
28
+ subject.file_manager = mock_file_manager
29
+
30
+ mock_file_manager.expect :mkdir_p, true, [File.join(%w{artifacts reference_screenshots dir})]
31
+
32
+ mock_file_manager.expect :cp, true,
33
+ [ File.join(%w[artifacts screenshots_generated_this_run dir file.png]),
34
+ File.join(%w[artifacts reference_screenshots dir file.png]) ]
35
+
36
+ mock_file_manager.expect :rm, true, [path]
37
+
38
+ subject.create_reference_image
39
+
40
+ mock_file_manager.verify
41
+ end
42
+
43
+ it "provides its corresponding reference image path" do
44
+ reference_path =
45
+ File.join %w[artifacts reference_screenshots dir file.png]
46
+
47
+ subject.reference_path.must_equal reference_path
48
+ end
49
+
50
+ it "provides its corresponding generated image path" do
51
+ generated_path =
52
+ File.join %w[artifacts screenshots_generated_this_run dir file.png]
53
+
54
+ subject.generated_path.must_equal generated_path
55
+ end
56
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe Compaa::GeneratedImage do
4
+ attr_reader :mock_file_manager, :path, :ref_image, :subject
5
+
6
+ before do
7
+ @mock_file_manager = MiniTest::Mock.new
8
+ @path = File.join %w[artifacts screenshots_generated_this_run dir file.png]
9
+ @ref_image = File.join %w[artifacts reference_screenshots dir file.png]
10
+ @subject = Compaa::GeneratedImage.new @path
11
+ end
12
+
13
+ describe :all do
14
+ it "returns an array of all difference images in the artifacts directory" do
15
+ file_list = [
16
+ File.join(%w[artifacts screenshots_generated_this_run dir file.png]),
17
+ File.join(%w[artifacts screenshots_generated_this_run dir new_file.png])
18
+ ]
19
+
20
+ Dir.stub :glob, file_list do
21
+ Compaa::GeneratedImage.all.map(&:path).must_equal file_list
22
+ end
23
+ end
24
+ end
25
+
26
+ describe :has_reference_image? do
27
+ it "is true when a corresponding reference image exists" do
28
+ subject.file_manager = mock_file_manager
29
+
30
+ File.stub :exists?, true do
31
+ assert subject.has_reference_image?
32
+ end
33
+
34
+ mock_file_manager.verify
35
+ end
36
+
37
+ it "is false when a corresponding reference image does not exist" do
38
+ subject.file_manager = mock_file_manager
39
+
40
+ File.stub :exists?, false do
41
+ refute subject.has_reference_image?
42
+ end
43
+
44
+ mock_file_manager.verify
45
+ end
46
+ end
47
+
48
+ it "creates a reference image" do
49
+ subject.file_manager = mock_file_manager
50
+
51
+ mock_file_manager.expect :mkdir_p, true, [File.join(%w{artifacts reference_screenshots dir})]
52
+
53
+ mock_file_manager.expect :cp, true,
54
+ [ File.join(%w[artifacts screenshots_generated_this_run dir file.png]),
55
+ File.join(%w[artifacts reference_screenshots dir file.png]) ]
56
+
57
+ subject.create_reference_image
58
+
59
+ mock_file_manager.verify
60
+ end
61
+
62
+ it "provides its corresponding reference image path" do
63
+ reference_path =
64
+ File.join %w[artifacts reference_screenshots dir file.png]
65
+
66
+ subject.reference_path.must_equal reference_path
67
+ end
68
+ end
@@ -0,0 +1,6 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ gem 'minitest'
5
+ require 'minitest/autorun'
6
+ require 'compaa'
@@ -0,0 +1,86 @@
1
+ !!!
2
+ %head
3
+ %script{src: "https://raw.github.com/Phrogz/context-blender/master/context_blender.js", type: "text/javascript"}
4
+ %body
5
+ %canvas#offScreenCanvas{style: 'position: absolute; left: -9999999px;'}
6
+ %canvas#difference
7
+ %img#animation{src: params[:filepath], style: 'display: none'}
8
+ %img#oldImage{style: 'display: none'}
9
+ %img#newImage{style: 'display: none'}
10
+ #buttonBar{style: 'width: 400px; margin: 0px auto'}
11
+ %button#differenceButton
12
+ Difference
13
+ %button#animationButton
14
+ Animation
15
+ %button#oldImageButton
16
+ Old Image
17
+ %button#newImageButton
18
+ New Image
19
+ :javascript
20
+ var compaa = {
21
+ differenceGifPath: '#{params[:filepath]}',
22
+ oldImagePath: '#{params[:filepath].gsub('gif','png').gsub('_difference.png','').gsub('differences_in_screenshots_this_run','reference_screenshots')}',
23
+ newImagePath: '#{params[:filepath].gsub('gif','png').gsub('_difference.png','').gsub('differences_in_screenshots_this_run','screenshots_generated_this_run')}',
24
+
25
+
26
+ init: function() {
27
+ var oldImg=document.createElement('img');
28
+ oldImg.src = compaa.oldImagePath
29
+
30
+ var newImg=document.createElement('img');
31
+ newImg.src = compaa.newImagePath
32
+
33
+ document.getElementById('difference').width = oldImg.width;
34
+ document.getElementById('difference').height = oldImg.height;
35
+
36
+ document.getElementById('offScreenCanvas').width = newImg.width;
37
+ document.getElementById('offScreenCanvas').height = newImg.height;
38
+
39
+ var over = document.getElementById('offScreenCanvas').getContext('2d');
40
+ over.drawImage(oldImg, 0, 0);
41
+
42
+ var under = document.getElementById('difference').getContext('2d');
43
+ under.drawImage(newImg, 0, 0);
44
+
45
+ over.blendOnto(under,'difference');
46
+
47
+ document.getElementById('oldImage').src = compaa.oldImagePath;
48
+ document.getElementById('newImage').src = compaa.newImagePath;
49
+
50
+ compaa.show('difference');
51
+
52
+ document.getElementById('differenceButton').onclick = function(){compaa.show('difference')};
53
+ document.getElementById('animationButton').onclick = function(){compaa.show('animation')};
54
+ document.getElementById('oldImageButton').onclick = function(){compaa.show('oldImage')};
55
+ document.getElementById('newImageButton').onclick = function(){compaa.show('newImage')};
56
+ },
57
+ show: function(mode) {
58
+
59
+ document.getElementById('difference').style.display = 'none';
60
+ document.getElementById('animation').style.display = 'none';
61
+ document.getElementById('oldImage').style.display = 'none';
62
+ document.getElementById('newImage').style.display = 'none';
63
+
64
+ switch(mode){
65
+ case 'difference':
66
+ document.getElementById('difference').style.display = 'block';
67
+ break;
68
+ case 'animation':
69
+ document.getElementById('animation').style.display = 'block';
70
+ break;
71
+ case 'oldImage':
72
+ document.getElementById('oldImage').style.display = 'block';
73
+ break;
74
+ case 'newImage':
75
+ document.getElementById('newImage').style.display = 'block';
76
+ break;
77
+ }
78
+ }
79
+ }
80
+
81
+ document.onreadystatechange = function () {
82
+ if (document.readyState == "complete" || document.readyState == "interactive"){
83
+ compaa.init();
84
+ }
85
+ }
86
+
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: compaa
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - BSkyB Helpcentre
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-17 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &26285060 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *26285060
25
+ - !ruby/object:Gem::Dependency
26
+ name: aruba
27
+ requirement: &26283980 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *26283980
36
+ - !ruby/object:Gem::Dependency
37
+ name: simplecov
38
+ requirement: &26282980 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *26282980
47
+ - !ruby/object:Gem::Dependency
48
+ name: wrong
49
+ requirement: &26282420 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *26282420
58
+ - !ruby/object:Gem::Dependency
59
+ name: minitest
60
+ requirement: &26281840 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *26281840
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-minitest
71
+ requirement: &26281200 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *26281200
80
+ - !ruby/object:Gem::Dependency
81
+ name: guard-cucumber
82
+ requirement: &26280380 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *26280380
91
+ - !ruby/object:Gem::Dependency
92
+ name: rb-inotify
93
+ requirement: &26279020 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *26279020
102
+ - !ruby/object:Gem::Dependency
103
+ name: methadone
104
+ requirement: &26278060 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.2.2
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *26278060
113
+ - !ruby/object:Gem::Dependency
114
+ name: sinatra
115
+ requirement: &26259380 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: *26259380
124
+ - !ruby/object:Gem::Dependency
125
+ name: thin
126
+ requirement: &26258580 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: *26258580
135
+ - !ruby/object:Gem::Dependency
136
+ name: haml
137
+ requirement: &26257600 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :runtime
144
+ prerelease: false
145
+ version_requirements: *26257600
146
+ - !ruby/object:Gem::Dependency
147
+ name: watir-webdriver
148
+ requirement: &26256680 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :runtime
155
+ prerelease: false
156
+ version_requirements: *26256680
157
+ description:
158
+ email:
159
+ - skyhelpcentre@gmail.com
160
+ executables:
161
+ - compaa
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .gitignore
166
+ - .travis.yml
167
+ - Gemfile
168
+ - Guardfile
169
+ - LICENSE.txt
170
+ - README.md
171
+ - Rakefile
172
+ - app.rb
173
+ - bin/compaa
174
+ - compaa.gemspec
175
+ - config.ru
176
+ - features/compaa.feature
177
+ - features/step_definitions/compaa_steps.rb
178
+ - features/support/env.rb
179
+ - features/support/file_helpers.rb
180
+ - features/support/matchers.rb
181
+ - fixtures/sample_generated.png
182
+ - fixtures/sample_generated.png_difference.gif
183
+ - fixtures/sample_reference.png
184
+ - lib/compaa.rb
185
+ - lib/compaa/difference_image.rb
186
+ - lib/compaa/generated_image.rb
187
+ - lib/compaa/version.rb
188
+ - log/newrelic_agent.log
189
+ - spec/difference_image_spec.rb
190
+ - spec/generated_image_spec.rb
191
+ - spec/spec_helper.rb
192
+ - views/index.haml
193
+ homepage: https://github.com/bskyb-commerce-helpcentre/compaa
194
+ licenses: []
195
+ post_install_message:
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ! '>='
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ segments:
206
+ - 0
207
+ hash: 834143269025721647
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ segments:
215
+ - 0
216
+ hash: 834143269025721647
217
+ requirements: []
218
+ rubyforge_project:
219
+ rubygems_version: 1.8.10
220
+ signing_key:
221
+ specification_version: 3
222
+ summary: Command line tool to compare screenshots outputted from our screenshot_comparison
223
+ gem
224
+ test_files:
225
+ - features/compaa.feature
226
+ - features/step_definitions/compaa_steps.rb
227
+ - features/support/env.rb
228
+ - features/support/file_helpers.rb
229
+ - features/support/matchers.rb
230
+ - spec/difference_image_spec.rb
231
+ - spec/generated_image_spec.rb
232
+ - spec/spec_helper.rb