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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e5d969e6040123759001a610740fe46115eb5c8
4
- data.tar.gz: 64345632abd3e80a2216bcd5f8b912be6c30718a
3
+ metadata.gz: bf2e261e73d78a50c736b1821ec334ac00574a4f
4
+ data.tar.gz: eb8e02a61b51589136030b10a4c3bb888a905073
5
5
  SHA512:
6
- metadata.gz: 4d876fa8b49fb2f66979cdaac78e7051ba294087f3747cf97cffc94240d48b8e503866d1ee9173cda6d4534cf3c4f6f12c4a1a42ebcfe4f180ae14708926ae73
7
- data.tar.gz: 60be216d386341d9428a535406ba309116c086a5e1cc18e18b08218133fdcdd8f96f003f39dd4c857e5ffe1e1a1affb7066b9394934932a4b2d49f32f617c915
6
+ metadata.gz: 13a5da1bcb56e9b2933a5c64de5d1c16cf9719a420957a138127df81a648501144144c02508479c6a23c9f1c81308edd793b1113590467a521fc084693c7447f
7
+ data.tar.gz: d4341e7c86de918ea31a908753c21f5e6f34981ed78c5ea6beae8cd6df673a4babed5f5ea941015635ae4f4d461fd06950586b98d1642e968a7c3c75bccc5cc1
@@ -2,8 +2,9 @@ language: ruby
2
2
  sudo: false
3
3
  cache: bundler
4
4
  rvm:
5
- - 1.9.3
6
- - 2.2
5
+ - ruby-2.2.6
6
+ - ruby-2.3.3
7
+ - ruby-2.4.0
7
8
  - ruby-head
8
9
  matrix:
9
10
  allow_failures:
@@ -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
- # Enable if PERCY_ENABLE=1 in local dev (allow disabling if 0).
36
- return @enabled ||= ENV['PERCY_ENABLE'] == '1' if ENV['PERCY_ENABLE']
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
- # If in supported CI environment.
39
- @enabled ||= !Percy::Client::Environment.current_ci.nil?
48
+ # Disable otherwise
49
+ return @enabled = false
40
50
  end
41
51
 
42
52
  def disable!
@@ -32,6 +32,7 @@ module Percy
32
32
  end
33
33
 
34
34
  def build_initialized?
35
+ return false unless defined? @current_build
35
36
  !!@current_build
36
37
  end
37
38
 
@@ -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
- # @priivate
211
+ # @private
214
212
  def _current_host_port
215
213
  url_match = URL_REGEX.match(page.current_url)
216
- host_port = url_match[1] + url_match[2] + (url_match[3] || '')
214
+ url_match[1] + url_match[2] + (url_match[3] || '')
217
215
  end
218
216
 
219
217
  # @private
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Capybara
3
- VERSION = '2.3.3'
3
+ VERSION = '2.3.4'
4
4
  end
5
5
  end
@@ -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
- before(:each) do
9
- @original_env = ENV['TRAVIS_BUILD_ID']
10
- ENV['TRAVIS_BUILD_ID'] = nil
11
- end
12
- after(:each) do
13
- ENV['TRAVIS_BUILD_ID'] = @original_env
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
- it 'is false by default for local dev environments or unknown CI environments' do
24
- expect(Percy::Capybara::Client.new.enabled?).to eq(false)
25
- end
26
- it 'is true if PERCY_ENABLE=1 is set' do
27
- ENV['PERCY_ENABLE'] = '1'
28
- expect(Percy::Capybara::Client.new.enabled?).to eq(true)
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['PERCY_ENABLE'] = nil
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 not enabled' do
31
- ENV['PERCY_ENABLE'] = nil
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 not enabled' do
56
- ENV['PERCY_ENABLE'] = nil
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.capybara_client
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
- end
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.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: 2016-12-06 00:00:00.000000000 Z
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