simulacrum 0.1.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cane +9 -0
- data/.env.example +2 -0
- data/.gitignore +10 -0
- data/.rspec +3 -0
- data/.rubocop.yml +14 -0
- data/.travis.yml +28 -0
- data/Gemfile +2 -0
- data/README.md +78 -19
- data/Rakefile +20 -0
- data/examples/README.md +3 -0
- data/examples/basic/Gemfile +4 -0
- data/examples/basic/README.md +13 -0
- data/examples/basic/config.ru +3 -0
- data/examples/basic/example_app.rb +7 -0
- data/examples/basic/public/button.html +13 -0
- data/examples/basic/public/index.html +22 -0
- data/examples/basic/public/panel.html +13 -0
- data/examples/basic/public/stylesheets/button.css +15 -0
- data/examples/basic/public/stylesheets/main.css +3 -0
- data/examples/basic/public/stylesheets/normalize.css +425 -0
- data/examples/basic/script/start +4 -0
- data/examples/basic/spec/simulacrum_helper.rb +9 -0
- data/examples/basic/spec/ui/button_spec.rb +10 -0
- data/exe/simulacrum +5 -0
- data/features/command_line/help.feature +8 -0
- data/features/exit_codes/failing.feature +24 -0
- data/features/exit_codes/passing.feature +24 -0
- data/features/exit_codes/pending.feature +22 -0
- data/features/output/candidate.feature +32 -0
- data/features/output/diff.feature +5 -0
- data/features/step_definitions/dummy_steps.rb +15 -0
- data/features/step_definitions/file_steps.rb +19 -0
- data/features/support/env.rb +15 -0
- data/fixtures/a1.png +0 -0
- data/fixtures/app/fixture_app.rb +12 -0
- data/fixtures/app/public/images/a1.png +0 -0
- data/fixtures/app/public/ui_component.html +10 -0
- data/fixtures/app/spec/component_spec.rb +9 -0
- data/fixtures/app/spec/simulacrum_helper.rb +37 -0
- data/fixtures/app/spec/ui/references/ui_component/test_driver/candidate.png +0 -0
- data/fixtures/diff.png +0 -0
- data/lib/simulacrum.rb +74 -15
- data/lib/simulacrum/cli.rb +38 -0
- data/lib/simulacrum/cli/parser.rb +152 -0
- data/lib/simulacrum/comparator.rb +15 -15
- data/lib/simulacrum/component.rb +22 -11
- data/lib/simulacrum/configuration.rb +20 -13
- data/lib/simulacrum/diff.rb +2 -0
- data/lib/simulacrum/diff/rmagick.rb +8 -6
- data/lib/simulacrum/driver.rb +45 -0
- data/lib/simulacrum/matchers.rb +6 -16
- data/lib/simulacrum/methods.rb +1 -0
- data/lib/simulacrum/renderer.rb +23 -8
- data/lib/simulacrum/runner.rb +44 -0
- data/lib/simulacrum/version.rb +2 -1
- data/rubocop-todo.yml +29 -0
- data/script/bootstrap +3 -0
- data/script/quality +7 -0
- data/script/spec +10 -0
- data/simulacrum.gemspec +52 -0
- data/spec/lib/simulacrum/cli/parser_spec.rb +113 -0
- data/spec/lib/simulacrum/cli_spec.rb +18 -0
- data/spec/lib/simulacrum/comparator_spec.rb +75 -0
- data/spec/lib/simulacrum/component_spec.rb +208 -0
- data/spec/lib/simulacrum/driver/local_spec.rb +11 -0
- data/spec/lib/simulacrum/version_spec.rb +12 -0
- data/spec/lib/simulacrum_spec.rb +53 -0
- data/spec/spec_helper.rb +13 -8
- data/spec/use_codeclimate.rb +3 -0
- data/spec/use_simplecov.rb +5 -12
- metadata +217 -32
- data/lib/simulacrum/diff/pdiff.rb +0 -47
- data/spec/fixtures/a.png +0 -0
- data/spec/fixtures/a2.png +0 -0
- 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,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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
end
|
5
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'use_codeclimate'
|
3
|
+
require 'use_simplecov'
|
6
4
|
require 'bundler/setup'
|
7
|
-
require '
|
8
|
-
require 'rspec/autorun'
|
5
|
+
require 'simulacrum'
|
9
6
|
|
10
7
|
RSpec.configure do |config|
|
11
|
-
config.order =
|
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
|
data/spec/use_simplecov.rb
CHANGED
@@ -1,14 +1,7 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
puts '[Simplecov] enabled'
|
2
3
|
require 'simplecov'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Morris
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
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.
|
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.
|
26
|
+
version: 2.4.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rmagick
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
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.
|
40
|
+
version: 2.13.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 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.
|
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.
|
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.
|
68
|
+
version: 2.42.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
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:
|
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:
|
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:
|
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:
|
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
|
-
|
168
|
-
|
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
|
-
-
|
189
|
-
-
|
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/
|
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:
|
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.
|
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/
|
219
|
-
- spec/
|
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/
|
406
|
+
- spec/use_codeclimate.rb
|
222
407
|
- spec/use_simplecov.rb
|