percy-capybara 2.4.2 → 2.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f2c6b66630a9b989903633853eb47c1d74595a7
4
- data.tar.gz: 1a747e278afafb60039383ec401c8d20b1cdb5f3
3
+ metadata.gz: 787ce577bbcab20de79c69d3605c60de4b04ffa9
4
+ data.tar.gz: 99820b82e25583e093ab9902c3642edc41fc811f
5
5
  SHA512:
6
- metadata.gz: 6e134b285b13d3fdf24a305a7f79a1701c8a2defa16e0105de781da019484d80e8a8390915fb6b579d4834bd3eddeefde3a254850a649760b23ed225d59f85f8
7
- data.tar.gz: 519a72136a56740eaec3c8f7dbd56dbbc10eb0ebae3d5b145cc10025c89306e569b84a11c1da85ac904900d7471d3179cc5411cb7766b8a7ad789eddbb18e504
6
+ metadata.gz: 1172af0a6cffff598252e2a86b81b5811b9ee41cf7fb87a32a788ec71fee286afa87c9f8164fdb51ae581d543c0580cb7b64a4f2f168bbcd52ac8f576bc82fef
7
+ data.tar.gz: 5b9857602fb38d55c12fe8072e5ffa2c15eff55ea30c17fdce449ed7477c1cdd62d7f21bb2c8dff9553fcd0a54351f4c7369d7692f6ef2ff066fbc36f6918969
@@ -82,18 +82,24 @@ module Percy
82
82
  iframe_url = iframe_element[:src]
83
83
  root_page_host = page.current_host
84
84
 
85
- page.within_frame(iframe_element) do
86
- next unless page.current_host == root_page_host
87
- path = URI.parse(iframe_url).path
88
- content = page.body
89
- sha = Digest::SHA256.hexdigest(content)
90
- resources <<
91
- Percy::Client::Resource.new(
92
- path,
93
- content: content,
94
- sha: sha,
95
- mimetype: 'text/html',
96
- )
85
+ begin
86
+ page.within_frame(iframe_element) do
87
+ next unless page.current_host == root_page_host
88
+ path = URI.parse(iframe_url).path
89
+ content = page.body
90
+ sha = Digest::SHA256.hexdigest(content)
91
+ resources <<
92
+ Percy::Client::Resource.new(
93
+ path,
94
+ content: content,
95
+ sha: sha,
96
+ mimetype: 'text/html',
97
+ )
98
+ end
99
+ rescue StandardError => e
100
+ # Skip frame not found errors. This library doesn't explicitly depend on Poltergeist,
101
+ # so we check the string class name.
102
+ raise e unless e.class.to_s == 'Capybara::Poltergeist::FrameNotFound'
97
103
  end
98
104
  end
99
105
 
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Capybara
3
- VERSION = '2.4.2'.freeze
3
+ VERSION = '2.4.3'.freeze
4
4
  end
5
5
  end
@@ -6,6 +6,15 @@ class RackAppWithIframe
6
6
  end
7
7
  end
8
8
 
9
+ # Mock dependency on Poltergeist so we can test an error class.
10
+ module Capybara
11
+ module Poltergeist
12
+ class Error < StandardError; end
13
+ class ClientError < Error; end
14
+ class FrameNotFound < ClientError; end
15
+ end
16
+ end
17
+
9
18
  RSpec.describe Percy::Capybara::Loaders::BaseLoader do
10
19
  let(:loader) { described_class.new }
11
20
 
@@ -36,6 +45,14 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
36
45
  expect(last_resource.mimetype).to eq('text/html')
37
46
  expect(last_resource.content).to include('Inside iframe')
38
47
  end
48
+ it 'skips poltergeist frame not found errors' do
49
+ visit '/test-iframe.html'
50
+
51
+ expect(page).to receive(:within_frame).twice.and_raise(Capybara::Poltergeist::FrameNotFound)
52
+ loader = described_class.new(page: page)
53
+ resources = loader.iframes_resources
54
+ expect(resources.size).to eq(0)
55
+ end
39
56
  end
40
57
  describe '#build_resources' do
41
58
  it 'raises a NotImplementedError' do
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.4.2
4
+ version: 2.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Perceptual Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-13 00:00:00.000000000 Z
11
+ date: 2017-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: percy-client