simulacrum 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.cane +9 -0
  3. data/.env.example +2 -0
  4. data/.gitignore +10 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +14 -0
  7. data/.travis.yml +28 -0
  8. data/Gemfile +2 -0
  9. data/README.md +78 -19
  10. data/Rakefile +20 -0
  11. data/examples/README.md +3 -0
  12. data/examples/basic/Gemfile +4 -0
  13. data/examples/basic/README.md +13 -0
  14. data/examples/basic/config.ru +3 -0
  15. data/examples/basic/example_app.rb +7 -0
  16. data/examples/basic/public/button.html +13 -0
  17. data/examples/basic/public/index.html +22 -0
  18. data/examples/basic/public/panel.html +13 -0
  19. data/examples/basic/public/stylesheets/button.css +15 -0
  20. data/examples/basic/public/stylesheets/main.css +3 -0
  21. data/examples/basic/public/stylesheets/normalize.css +425 -0
  22. data/examples/basic/script/start +4 -0
  23. data/examples/basic/spec/simulacrum_helper.rb +9 -0
  24. data/examples/basic/spec/ui/button_spec.rb +10 -0
  25. data/exe/simulacrum +5 -0
  26. data/features/command_line/help.feature +8 -0
  27. data/features/exit_codes/failing.feature +24 -0
  28. data/features/exit_codes/passing.feature +24 -0
  29. data/features/exit_codes/pending.feature +22 -0
  30. data/features/output/candidate.feature +32 -0
  31. data/features/output/diff.feature +5 -0
  32. data/features/step_definitions/dummy_steps.rb +15 -0
  33. data/features/step_definitions/file_steps.rb +19 -0
  34. data/features/support/env.rb +15 -0
  35. data/fixtures/a1.png +0 -0
  36. data/fixtures/app/fixture_app.rb +12 -0
  37. data/fixtures/app/public/images/a1.png +0 -0
  38. data/fixtures/app/public/ui_component.html +10 -0
  39. data/fixtures/app/spec/component_spec.rb +9 -0
  40. data/fixtures/app/spec/simulacrum_helper.rb +37 -0
  41. data/fixtures/app/spec/ui/references/ui_component/test_driver/candidate.png +0 -0
  42. data/fixtures/diff.png +0 -0
  43. data/lib/simulacrum.rb +74 -15
  44. data/lib/simulacrum/cli.rb +38 -0
  45. data/lib/simulacrum/cli/parser.rb +152 -0
  46. data/lib/simulacrum/comparator.rb +15 -15
  47. data/lib/simulacrum/component.rb +22 -11
  48. data/lib/simulacrum/configuration.rb +20 -13
  49. data/lib/simulacrum/diff.rb +2 -0
  50. data/lib/simulacrum/diff/rmagick.rb +8 -6
  51. data/lib/simulacrum/driver.rb +45 -0
  52. data/lib/simulacrum/matchers.rb +6 -16
  53. data/lib/simulacrum/methods.rb +1 -0
  54. data/lib/simulacrum/renderer.rb +23 -8
  55. data/lib/simulacrum/runner.rb +44 -0
  56. data/lib/simulacrum/version.rb +2 -1
  57. data/rubocop-todo.yml +29 -0
  58. data/script/bootstrap +3 -0
  59. data/script/quality +7 -0
  60. data/script/spec +10 -0
  61. data/simulacrum.gemspec +52 -0
  62. data/spec/lib/simulacrum/cli/parser_spec.rb +113 -0
  63. data/spec/lib/simulacrum/cli_spec.rb +18 -0
  64. data/spec/lib/simulacrum/comparator_spec.rb +75 -0
  65. data/spec/lib/simulacrum/component_spec.rb +208 -0
  66. data/spec/lib/simulacrum/driver/local_spec.rb +11 -0
  67. data/spec/lib/simulacrum/version_spec.rb +12 -0
  68. data/spec/lib/simulacrum_spec.rb +53 -0
  69. data/spec/spec_helper.rb +13 -8
  70. data/spec/use_codeclimate.rb +3 -0
  71. data/spec/use_simplecov.rb +5 -12
  72. metadata +217 -32
  73. data/lib/simulacrum/diff/pdiff.rb +0 -47
  74. data/spec/fixtures/a.png +0 -0
  75. data/spec/fixtures/a2.png +0 -0
  76. data/spec/use_coveralls.rb +0 -2
@@ -0,0 +1,208 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+ require 'simulacrum/component'
4
+ require 'ostruct'
5
+
6
+ describe Simulacrum::Component do
7
+ let(:name) { 'MyComponent' }
8
+ let(:driver_name) { 'MyDriver' }
9
+ let(:references_path) { 'references' }
10
+ let(:configuration) { OpenStruct.new references_path: references_path }
11
+ let(:options) do
12
+ options = OpenStruct.new
13
+ options.url = 'http://localhost'
14
+ options
15
+ end
16
+ let(:renderer) { double('Simulacrum::Renderer') }
17
+
18
+ subject(:component) { described_class.new(name, options) }
19
+
20
+ before do
21
+ allow(Simulacrum).to receive(:configuration) { configuration }
22
+ allow(Capybara).to receive(:current_driver) { driver_name }
23
+ expect(Simulacrum::Renderer).to receive(:new).with(options.url) { renderer }
24
+ end
25
+
26
+ describe '#render' do
27
+ subject { component.render }
28
+
29
+ before do
30
+ configuration.candidate_filename = 'candidate'
31
+ expect(FileUtils).to receive(:mkdir_p).with('references/MyComponent/MyDriver')
32
+ expect(renderer).to receive(:render) { '/tmp/rendered_component.png' }
33
+ expect(FileUtils).to receive(:mv).with('/tmp/rendered_component.png', 'references/MyComponent/MyDriver/candidate.png')
34
+ expect(renderer).to receive(:cleanup)
35
+ end
36
+
37
+ it { is_expected.to eq(true) }
38
+
39
+ describe 'when a selector is set the candidate is cropped' do
40
+ let(:capture_selector) { '.widget' }
41
+ let(:images) { double }
42
+ let(:image) { double('Magick::Image') }
43
+ let(:selector_bounds) { [0, 0, 100, 100] }
44
+
45
+ before do
46
+ options.capture_selector = capture_selector
47
+ expect(Magick::Image).to receive(:read).with('references/MyComponent/MyDriver/candidate.png') { images }
48
+ expect(images).to receive(:first) { image }
49
+ expect(renderer).to receive(:get_bounds_for_selector).with(capture_selector) { selector_bounds }
50
+ expect(image).to receive(:crop!).with(*selector_bounds)
51
+ expect(image).to receive(:write).with('references/MyComponent/MyDriver/candidate.png')
52
+ end
53
+
54
+ it { is_expected.to eq(true) }
55
+ end
56
+ end
57
+
58
+ describe '#reference?' do
59
+ let(:reference_filename) { 'reference' }
60
+ subject { component.reference? }
61
+
62
+ before do
63
+ configuration.reference_filename = reference_filename
64
+ end
65
+
66
+ it { is_expected.to eq(false) }
67
+
68
+ context 'when a reference image exists' do
69
+ before do
70
+ expect(File).to receive(:exist?).with('references/MyComponent/MyDriver/reference.png') { true }
71
+ end
72
+
73
+ it { is_expected.to eq(true) }
74
+ end
75
+ end
76
+
77
+ describe '#candidate?' do
78
+ let(:candidate_filename) { 'candidate' }
79
+ subject { component.candidate? }
80
+
81
+ before(:each) do
82
+ configuration.candidate_filename = 'candidate'
83
+ end
84
+
85
+ it { is_expected.to eq(false) }
86
+
87
+ context 'when a candidate image exists' do
88
+ before(:each) do
89
+ allow(File).to receive(:exist?).with('references/MyComponent/MyDriver/candidate.png') { true }
90
+ end
91
+
92
+ it { is_expected.to eq(true) }
93
+ end
94
+ end
95
+
96
+ describe '#diff?' do
97
+ let(:diff_filename) { 'diff' }
98
+ subject { component.diff? }
99
+
100
+ before(:each) do
101
+ configuration.diff_filename = diff_filename
102
+ end
103
+
104
+ it { is_expected.to eq(false) }
105
+
106
+ context 'when a diff image exists' do
107
+ before(:each) do
108
+ expect(File).to receive(:exist?).with('references/MyComponent/MyDriver/diff.png') { true }
109
+ end
110
+
111
+ it { is_expected.to eq(true) }
112
+ end
113
+ end
114
+
115
+ describe '#delta_threshold' do
116
+ subject { component.delta_threshold }
117
+
118
+ let(:configuration) { OpenStruct.new delta_threshold: 99 }
119
+
120
+ it { is_expected.to eq(99) }
121
+
122
+ context 'when the delta_threshold option has been passed in' do
123
+ let(:options) { Struct.new(:url, :delta_threshold).new('http://localhost', 1) }
124
+
125
+ it 'uses the option value' do
126
+ is_expected.to eq(1)
127
+ end
128
+ end
129
+ end
130
+
131
+ describe '#reference_path' do
132
+ subject { component.reference_path }
133
+
134
+ before do
135
+ configuration.reference_filename = 'reference'
136
+ end
137
+
138
+ it { is_expected.to eq('references/MyComponent/MyDriver/reference.png') }
139
+ end
140
+
141
+ describe '#candidate_path' do
142
+ subject { component.candidate_path }
143
+
144
+ before do
145
+ configuration.candidate_filename = 'candidate'
146
+ end
147
+
148
+ it { is_expected.to eq('references/MyComponent/MyDriver/candidate.png') }
149
+ end
150
+
151
+ describe '#diff_path' do
152
+ subject { component.diff_path }
153
+
154
+ before do
155
+ configuration.diff_filename = 'diff'
156
+ end
157
+
158
+ it { is_expected.to eq('references/MyComponent/MyDriver/diff.png') }
159
+ end
160
+
161
+ describe '#remove_candidate' do
162
+ subject { component.remove_candidate }
163
+
164
+ before do
165
+ expect(File).to receive(:exist?) { has_candidate }
166
+ end
167
+
168
+ context 'when a candidate exists' do
169
+ let(:has_candidate) { true }
170
+
171
+ before do
172
+ expect(FileUtils).to receive(:rm)
173
+ end
174
+
175
+ it { is_expected.to be_nil }
176
+ end
177
+
178
+ context 'when there is no candidate exists' do
179
+ let(:has_candidate) { false }
180
+
181
+ it { is_expected.to be_nil }
182
+ end
183
+ end
184
+
185
+ describe '#remove_diff' do
186
+ subject { component.remove_diff }
187
+
188
+ before do
189
+ expect(File).to receive(:exist?) { has_diff }
190
+ end
191
+
192
+ context 'when a diff exists' do
193
+ let(:has_diff) { true }
194
+
195
+ before do
196
+ expect(FileUtils).to receive(:rm)
197
+ end
198
+
199
+ it { is_expected.to be_nil }
200
+ end
201
+
202
+ context 'when there is no diff exists' do
203
+ let(:has_diff) { false }
204
+
205
+ it { is_expected.to be_nil }
206
+ end
207
+ end
208
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+ require 'simulacrum/driver'
4
+
5
+ describe Simulacrum::Driver do
6
+ describe '.use' do
7
+ subject { described_class.use }
8
+
9
+ it { is_expected.to be_a described_class }
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ # encoding: UTF-8
2
+ require 'simulacrum/version'
3
+
4
+ describe Simulacrum do
5
+ describe 'PACKAGE' do
6
+ it { expect(Simulacrum::PACKAGE).to eq('simulacrum') }
7
+ end
8
+
9
+ describe 'VERSION' do
10
+ it { expect(Simulacrum::VERSION).to eq('0.3.0') }
11
+ end
12
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+ require 'simulacrum'
4
+
5
+ describe Simulacrum do
6
+ let(:driver) { double }
7
+ let(:current_browser) { double }
8
+ let(:configuration) { double }
9
+
10
+ describe '.components' do
11
+ pending
12
+ end
13
+
14
+ describe '.configuration' do
15
+ pending
16
+ end
17
+
18
+ describe '.runner_options' do
19
+ pending
20
+ end
21
+
22
+ describe '.root' do
23
+ pending
24
+ end
25
+
26
+ describe '.run' do
27
+ pending
28
+ end
29
+
30
+ describe '.configure' do
31
+ pending
32
+ end
33
+
34
+ describe '.included' do
35
+ pending
36
+ end
37
+
38
+ describe '.config_file' do
39
+ pending
40
+ end
41
+
42
+ describe '.config_file?' do
43
+ pending
44
+ end
45
+
46
+ describe '.config_file_path' do
47
+ pending
48
+ end
49
+
50
+ describe '.configure_runner' do
51
+ pending
52
+ end
53
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,17 @@
1
- if ENV['COVERAGE']
2
- require_relative 'use_coveralls' if ENV['TRAVIS']
3
- require_relative 'use_simplecov' unless ENV['TRAVIS']
4
- end
5
-
1
+ # encoding: UTF-8
2
+ require 'use_codeclimate'
3
+ require 'use_simplecov'
6
4
  require 'bundler/setup'
7
- require 'Simulacrum'
8
- require 'rspec/autorun'
5
+ require 'simulacrum'
9
6
 
10
7
  RSpec.configure do |config|
11
- config.order = "random"
8
+ config.order = 'random'
9
+
10
+ config.expect_with :rspec do |c|
11
+ c.syntax = :expect
12
+ end
13
+
14
+ config.mock_with :rspec do |c|
15
+ c.syntax = :expect
16
+ end
12
17
  end
@@ -0,0 +1,3 @@
1
+ # encoding: UTF-8
2
+ require 'codeclimate-test-reporter'
3
+ CodeClimate::TestReporter.start
@@ -1,14 +1,7 @@
1
- puts "[Simplecov] enabled"
1
+ # encoding: UTF-8
2
+ puts '[Simplecov] enabled'
2
3
  require 'simplecov'
3
4
 
4
- class SimpleCov::Formatter::QualityFormatter
5
- def format(result)
6
- SimpleCov::Formatter::HTMLFormatter.new.format(result)
7
- File.open("coverage/covered_percent", "w") do |f|
8
- f.puts result.source_files.covered_percent.to_f
9
- end
10
- end
11
- end
12
-
13
- SimpleCov.formatter = SimpleCov::Formatter::QualityFormatter
14
- SimpleCov.start
5
+ SimpleCov.minimum_coverage 53
6
+ SimpleCov.refuse_coverage_drop
7
+ SimpleCov.start { add_filter '/spec/' }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simulacrum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Morris
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2014-03-31 00:00:00.000000000 Z
11
+ date: 2014-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -16,58 +16,58 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.1
19
+ version: 2.4.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.1
26
+ version: 2.4.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: rmagick
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 2.14.1
33
+ version: 2.13.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 2.14.1
40
+ version: 2.13.2
41
41
  - !ruby/object:Gem::Dependency
42
- name: rmagick
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: 2.13.2
47
+ version: 2.14.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 2.13.2
54
+ version: 2.14.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: selenium-webdriver
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 2.40.0
61
+ version: 2.42.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: 2.40.0
68
+ version: 2.42.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: coveralls
70
+ name: appraisal
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '>='
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pry
84
+ name: aruba
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '>='
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rake
98
+ name: cane
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rspec-nc
112
+ name: codeclimate-test-reporter
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '>='
@@ -123,7 +123,21 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: cucumber
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - '>='
@@ -136,6 +150,90 @@ dependencies:
136
150
  - - '>='
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 3.0.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: 3.0.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 0.20.1
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: 0.20.1
195
+ - !ruby/object:Gem::Dependency
196
+ name: sauce
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ~>
200
+ - !ruby/object:Gem::Version
201
+ version: 3.4.8
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ~>
207
+ - !ruby/object:Gem::Version
208
+ version: 3.4.8
209
+ - !ruby/object:Gem::Dependency
210
+ name: sauce-connect
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ~>
214
+ - !ruby/object:Gem::Version
215
+ version: 3.4.1
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ~>
221
+ - !ruby/object:Gem::Version
222
+ version: 3.4.1
223
+ - !ruby/object:Gem::Dependency
224
+ name: sauce-cucumber
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ~>
228
+ - !ruby/object:Gem::Version
229
+ version: 3.4.0
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ~>
235
+ - !ruby/object:Gem::Version
236
+ version: 3.4.0
139
237
  - !ruby/object:Gem::Dependency
140
238
  name: shoulda-matchers
141
239
  requirement: !ruby/object:Gem::Requirement
@@ -164,31 +262,113 @@ dependencies:
164
262
  - - '>='
165
263
  - !ruby/object:Gem::Version
166
264
  version: '0'
167
- description: An opinionated UI component regression testing tool built to be tightly
168
- integrated with RSpec, Selenium and tools you already use.
265
+ - !ruby/object:Gem::Dependency
266
+ name: sinatra
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - '>='
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: dotenv
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - '>='
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ description: "\n An opinionated UI component regression testing tool built to be
294
+ tightly\n integrated with RSpec, Selenium and tools you already use.\n "
169
295
  email:
170
296
  - desk@pixelbloom.com
171
- executables: []
297
+ executables:
298
+ - simulacrum
172
299
  extensions: []
173
300
  extra_rdoc_files: []
174
301
  files:
302
+ - .cane
303
+ - .env.example
304
+ - .gitignore
305
+ - .rspec
306
+ - .rubocop.yml
307
+ - .travis.yml
308
+ - Gemfile
175
309
  - LICENSE
176
310
  - README.md
311
+ - Rakefile
312
+ - examples/README.md
313
+ - examples/basic/Gemfile
314
+ - examples/basic/README.md
315
+ - examples/basic/config.ru
316
+ - examples/basic/example_app.rb
317
+ - examples/basic/public/button.html
318
+ - examples/basic/public/index.html
319
+ - examples/basic/public/panel.html
320
+ - examples/basic/public/stylesheets/button.css
321
+ - examples/basic/public/stylesheets/main.css
322
+ - examples/basic/public/stylesheets/normalize.css
323
+ - examples/basic/script/start
324
+ - examples/basic/spec/simulacrum_helper.rb
325
+ - examples/basic/spec/ui/button_spec.rb
326
+ - exe/simulacrum
327
+ - features/command_line/help.feature
328
+ - features/exit_codes/failing.feature
329
+ - features/exit_codes/passing.feature
330
+ - features/exit_codes/pending.feature
331
+ - features/output/candidate.feature
332
+ - features/output/diff.feature
333
+ - features/step_definitions/dummy_steps.rb
334
+ - features/step_definitions/file_steps.rb
335
+ - features/support/env.rb
336
+ - fixtures/a1.png
337
+ - fixtures/app/fixture_app.rb
338
+ - fixtures/app/public/images/a1.png
339
+ - fixtures/app/public/ui_component.html
340
+ - fixtures/app/spec/component_spec.rb
341
+ - fixtures/app/spec/simulacrum_helper.rb
342
+ - fixtures/app/spec/ui/references/ui_component/test_driver/candidate.png
343
+ - fixtures/diff.png
177
344
  - lib/simulacrum.rb
345
+ - lib/simulacrum/cli.rb
346
+ - lib/simulacrum/cli/parser.rb
178
347
  - lib/simulacrum/comparator.rb
179
348
  - lib/simulacrum/component.rb
180
349
  - lib/simulacrum/configuration.rb
181
350
  - lib/simulacrum/diff.rb
182
- - lib/simulacrum/diff/pdiff.rb
183
351
  - lib/simulacrum/diff/rmagick.rb
352
+ - lib/simulacrum/driver.rb
184
353
  - lib/simulacrum/matchers.rb
185
354
  - lib/simulacrum/methods.rb
186
355
  - lib/simulacrum/renderer.rb
356
+ - lib/simulacrum/runner.rb
187
357
  - lib/simulacrum/version.rb
188
- - spec/fixtures/a.png
189
- - spec/fixtures/a2.png
358
+ - rubocop-todo.yml
359
+ - script/bootstrap
360
+ - script/quality
361
+ - script/spec
362
+ - simulacrum.gemspec
363
+ - spec/lib/simulacrum/cli/parser_spec.rb
364
+ - spec/lib/simulacrum/cli_spec.rb
365
+ - spec/lib/simulacrum/comparator_spec.rb
366
+ - spec/lib/simulacrum/component_spec.rb
367
+ - spec/lib/simulacrum/driver/local_spec.rb
368
+ - spec/lib/simulacrum/version_spec.rb
369
+ - spec/lib/simulacrum_spec.rb
190
370
  - spec/spec_helper.rb
191
- - spec/use_coveralls.rb
371
+ - spec/use_codeclimate.rb
192
372
  - spec/use_simplecov.rb
193
373
  homepage: https://github.com/plasticine/simulacrum
194
374
  licenses:
@@ -202,7 +382,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
382
  requirements:
203
383
  - - '>='
204
384
  - !ruby/object:Gem::Version
205
- version: '0'
385
+ version: 1.9.3
206
386
  required_rubygems_version: !ruby/object:Gem::Requirement
207
387
  requirements:
208
388
  - - '>='
@@ -210,13 +390,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
390
  version: '0'
211
391
  requirements: []
212
392
  rubyforge_project:
213
- rubygems_version: 2.2.2
393
+ rubygems_version: 2.0.14
214
394
  signing_key:
215
395
  specification_version: 4
216
396
  summary: A gem for visually testing and inspecting user interface components.
217
397
  test_files:
218
- - spec/fixtures/a.png
219
- - spec/fixtures/a2.png
398
+ - spec/lib/simulacrum/cli/parser_spec.rb
399
+ - spec/lib/simulacrum/cli_spec.rb
400
+ - spec/lib/simulacrum/comparator_spec.rb
401
+ - spec/lib/simulacrum/component_spec.rb
402
+ - spec/lib/simulacrum/driver/local_spec.rb
403
+ - spec/lib/simulacrum/version_spec.rb
404
+ - spec/lib/simulacrum_spec.rb
220
405
  - spec/spec_helper.rb
221
- - spec/use_coveralls.rb
406
+ - spec/use_codeclimate.rb
222
407
  - spec/use_simplecov.rb