percy-capybara 2.3.3 → 2.3.4
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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/CHANGELOG.md +1 -0
- data/lib/percy/capybara/client.rb +14 -4
- data/lib/percy/capybara/client/builds.rb +1 -0
- data/lib/percy/capybara/loaders/native_loader.rb +2 -4
- data/lib/percy/capybara/version.rb +1 -1
- data/spec/lib/percy/capybara/client/builds_spec.rb +0 -1
- data/spec/lib/percy/capybara/client_spec.rb +25 -19
- data/spec/lib/percy/capybara_spec.rb +9 -8
- data/spec/support/test_helpers.rb +13 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf2e261e73d78a50c736b1821ec334ac00574a4f
|
4
|
+
data.tar.gz: eb8e02a61b51589136030b10a4c3bb888a905073
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13a5da1bcb56e9b2933a5c64de5d1c16cf9719a420957a138127df81a648501144144c02508479c6a23c9f1c81308edd793b1113590467a521fc084693c7447f
|
7
|
+
data.tar.gz: d4341e7c86de918ea31a908753c21f5e6f34981ed78c5ea6beae8cd6df673a4babed5f5ea941015635ae4f4d461fd06950586b98d1642e968a7c3c75bccc5cc1
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
See [releases](https://github.com/percy/percy-capybara/releases).
|
@@ -20,6 +20,8 @@ module Percy
|
|
20
20
|
attr_accessor :custom_loader
|
21
21
|
|
22
22
|
def initialize(options = {})
|
23
|
+
@failed = false
|
24
|
+
|
23
25
|
@client = options[:client] || Percy.client
|
24
26
|
@enabled = options[:enabled]
|
25
27
|
|
@@ -29,14 +31,22 @@ module Percy
|
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
34
|
+
# Check that environment variables required for Percy::Client are set
|
35
|
+
def required_environment_variables_set?
|
36
|
+
!(ENV['PERCY_PROJECT'].nil? || ENV['PERCY_TOKEN'].nil?)
|
37
|
+
end
|
38
|
+
|
32
39
|
def enabled?
|
33
40
|
return @enabled if !@enabled.nil?
|
34
41
|
|
35
|
-
#
|
36
|
-
return @enabled
|
42
|
+
# Disable if PERCY_ENABLE is set to 0
|
43
|
+
return @enabled = false if ENV['PERCY_ENABLE'] == '0'
|
44
|
+
|
45
|
+
# Enable if required environment variables are set
|
46
|
+
return @enabled = true if required_environment_variables_set?
|
37
47
|
|
38
|
-
#
|
39
|
-
@enabled
|
48
|
+
# Disable otherwise
|
49
|
+
return @enabled = false
|
40
50
|
end
|
41
51
|
|
42
52
|
def disable!
|
@@ -77,7 +77,6 @@ module Percy
|
|
77
77
|
response = _fetch_resource_url(url)
|
78
78
|
_absolute_url_to_relative!(url, _current_host_port)
|
79
79
|
next if !response
|
80
|
-
sha = Digest::SHA256.hexdigest(response.body)
|
81
80
|
resources << Percy::Client::Resource.new(
|
82
81
|
url, mimetype: 'text/css', content: response.body)
|
83
82
|
end
|
@@ -164,7 +163,6 @@ module Percy
|
|
164
163
|
_absolute_url_to_relative!(resource_url, _current_host_port)
|
165
164
|
next if !response
|
166
165
|
|
167
|
-
sha = Digest::SHA256.hexdigest(response.body)
|
168
166
|
resources << Percy::Client::Resource.new(
|
169
167
|
resource_url, mimetype: response.content_type, content: response.body)
|
170
168
|
end
|
@@ -210,10 +208,10 @@ module Percy
|
|
210
208
|
!!result
|
211
209
|
end
|
212
210
|
|
213
|
-
# @
|
211
|
+
# @private
|
214
212
|
def _current_host_port
|
215
213
|
url_match = URL_REGEX.match(page.current_url)
|
216
|
-
|
214
|
+
url_match[1] + url_match[2] + (url_match[3] || '')
|
217
215
|
end
|
218
216
|
|
219
217
|
# @private
|
@@ -89,7 +89,6 @@ RSpec.describe Percy::Capybara::Client::Builds do
|
|
89
89
|
expect(capybara_client.client).to receive(:upload_resource)
|
90
90
|
.and_raise(Percy::Client::ConnectionFailed)
|
91
91
|
|
92
|
-
result = capybara_client.initialize_build
|
93
92
|
expect(capybara_client.initialize_build).to eq(nil)
|
94
93
|
expect(capybara_client.failed?).to eq(true)
|
95
94
|
expect(build_stub).to have_been_requested
|
@@ -5,27 +5,34 @@ RSpec.describe Percy::Capybara::Client do
|
|
5
5
|
expect(capybara_client.client).to eq(client)
|
6
6
|
end
|
7
7
|
describe '#enabled?' do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
ENV['PERCY_ENABLE'] = nil
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'in supported CI environment' do
|
18
|
-
it 'is true' do
|
19
|
-
ENV['TRAVIS_BUILD_ID'] = '123'
|
8
|
+
context 'when required environment variables set' do
|
9
|
+
before(:context) { set_required_env_variables }
|
10
|
+
after(:context) { clear_required_env_variables }
|
11
|
+
|
12
|
+
it 'is true when PERCY_ENABLE is 1' do
|
13
|
+
ENV['PERCY_ENABLE'] = '1'
|
20
14
|
expect(Percy::Capybara::Client.new.enabled?).to eq(true)
|
21
15
|
end
|
16
|
+
it 'is true when PERCY_ENABLE is not set' do
|
17
|
+
ENV.delete 'PERCY_ENABLE'
|
18
|
+
expect(Percy::Capybara::Client.new.enabled?).to eq(true)
|
19
|
+
end
|
20
|
+
it 'is false when PERCY_ENABLE is 0' do
|
21
|
+
ENV['PERCY_ENABLE'] = '0'
|
22
|
+
expect(Percy::Capybara::Client.new.enabled?).to eq(false)
|
23
|
+
end
|
22
24
|
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
|
26
|
+
context 'when required environment variables not set' do
|
27
|
+
before(:each) { clear_required_env_variables }
|
28
|
+
it 'is false' do
|
29
|
+
ENV.delete 'PERCY_ENABLE'
|
30
|
+
expect(Percy::Capybara::Client.new.enabled?).to eq(false)
|
31
|
+
end
|
32
|
+
it 'is false when PERCY_ENABLE is 1' do
|
33
|
+
ENV['PERCY_ENABLE'] = '1'
|
34
|
+
expect(Percy::Capybara::Client.new.enabled?).to eq(false)
|
35
|
+
end
|
29
36
|
end
|
30
37
|
end
|
31
38
|
describe '#failed?' do
|
@@ -107,4 +114,3 @@ RSpec.describe Percy::Capybara::Client do
|
|
107
114
|
end
|
108
115
|
end
|
109
116
|
end
|
110
|
-
|
@@ -2,12 +2,11 @@ RSpec.describe Percy::Capybara do
|
|
2
2
|
before(:each) do
|
3
3
|
Percy::Capybara.reset!
|
4
4
|
@original_env = ENV['TRAVIS_BUILD_ID']
|
5
|
-
ENV['PERCY_ENABLE'] = '1'
|
6
5
|
ENV['TRAVIS_BUILD_ID'] = nil
|
7
6
|
end
|
8
7
|
after(:each) do
|
9
8
|
ENV['TRAVIS_BUILD_ID'] = @original_env
|
10
|
-
ENV
|
9
|
+
ENV.delete('PERCY_ENABLE')
|
11
10
|
end
|
12
11
|
|
13
12
|
describe '#capybara_client' do
|
@@ -27,8 +26,8 @@ RSpec.describe Percy::Capybara do
|
|
27
26
|
expect(capybara_client).to receive(:snapshot).with(mock_page, name: '/foo.html (modal)').once
|
28
27
|
Percy::Capybara.snapshot(mock_page, name: '/foo.html (modal)')
|
29
28
|
end
|
30
|
-
it 'silently skips if
|
31
|
-
ENV['PERCY_ENABLE'] =
|
29
|
+
it 'silently skips if disabled' do
|
30
|
+
ENV['PERCY_ENABLE'] = '0'
|
32
31
|
mock_page = double('page')
|
33
32
|
Percy::Capybara.snapshot(mock_page)
|
34
33
|
end
|
@@ -46,14 +45,15 @@ RSpec.describe Percy::Capybara do
|
|
46
45
|
end
|
47
46
|
it 'delegates to Percy::Capybara::Client' do
|
48
47
|
capybara_client = Percy::Capybara.capybara_client
|
48
|
+
expect(capybara_client).to receive(:enabled?).and_return(:true)
|
49
49
|
build_data = {'data' => {'id' => 123}}
|
50
50
|
expect(capybara_client.client).to receive(:create_build).and_return(build_data).once
|
51
51
|
Percy::Capybara.initialize_build
|
52
52
|
expect(capybara_client).to receive(:finalize_current_build).once
|
53
53
|
Percy::Capybara.finalize_build
|
54
54
|
end
|
55
|
-
it 'silently skips if
|
56
|
-
ENV['PERCY_ENABLE'] =
|
55
|
+
it 'silently skips if disabled' do
|
56
|
+
ENV['PERCY_ENABLE'] = '0'
|
57
57
|
capybara_client = Percy::Capybara.capybara_client
|
58
58
|
expect(capybara_client.client).to_not receive(:create_build)
|
59
59
|
Percy::Capybara.initialize_build
|
@@ -70,7 +70,9 @@ RSpec.describe Percy::Capybara do
|
|
70
70
|
end
|
71
71
|
describe '#disable!' do
|
72
72
|
it 'sets the current capybara_client to disabled' do
|
73
|
-
capybara_client = Percy::Capybara.
|
73
|
+
capybara_client = Percy::Capybara::Client.new(enabled:true)
|
74
|
+
expect(Percy::Capybara).to receive(:capybara_client)
|
75
|
+
.and_return(capybara_client).exactly(3).times
|
74
76
|
expect(Percy::Capybara.capybara_client.enabled?).to eq(true)
|
75
77
|
Percy::Capybara.disable!
|
76
78
|
expect(Percy::Capybara.capybara_client.enabled?).to eq(false)
|
@@ -80,7 +82,6 @@ RSpec.describe Percy::Capybara do
|
|
80
82
|
class DummyLoader < Percy::Capybara::Loaders::NativeLoader; end
|
81
83
|
|
82
84
|
it 'sets the current capybara clients custom loader' do
|
83
|
-
capybara_client = Percy::Capybara::Client
|
84
85
|
expect(Percy::Capybara.capybara_client.custom_loader).to_not be
|
85
86
|
Percy::Capybara.use_loader(DummyLoader)
|
86
87
|
expect(Percy::Capybara.capybara_client.custom_loader).to be
|
@@ -46,4 +46,16 @@ module TestHelpers
|
|
46
46
|
capybara_client.sprockets_environment = environment
|
47
47
|
capybara_client.sprockets_options = sprockets_options
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
|
+
# Set the environment variables required by Percy::Client
|
51
|
+
def set_required_env_variables
|
52
|
+
ENV['PERCY_TOKEN'] = 'aa'
|
53
|
+
ENV['PERCY_PROJECT'] = 'aa'
|
54
|
+
end
|
55
|
+
|
56
|
+
# Clear the environment variables required by Percy::Client
|
57
|
+
def clear_required_env_variables
|
58
|
+
ENV.delete('PERCY_TOKEN')
|
59
|
+
ENV.delete('PERCY_PROJECT')
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percy-capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perceptual Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: percy-client
|
@@ -175,8 +175,8 @@ files:
|
|
175
175
|
- ".rspec"
|
176
176
|
- ".travis.yml"
|
177
177
|
- ".yardopts"
|
178
|
+
- CHANGELOG.md
|
178
179
|
- Gemfile
|
179
|
-
- Gemfile.lock
|
180
180
|
- Guardfile
|
181
181
|
- LICENSE
|
182
182
|
- README.md
|