masque 0.2.1 → 0.3.0
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/lib/masque.rb +16 -0
- data/lib/masque/version.rb +1 -1
- data/masque.gemspec +3 -3
- data/spec/support/app.rb +5 -0
- data/spec/support/driver.rb +81 -0
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d94d73faef46aff07f7a2da237b065c72293322f
|
4
|
+
data.tar.gz: 825bdbe2e9a5f26f18f7c83c79563b9c1a3f088f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c79c8ea8cebe79ddf79b4034ac69f98bb6a1e59094bc6717eeebbe04281e86173ad06e027af1c1733b6c2013a3f413816164c795562f0231e8ae0924736b829
|
7
|
+
data.tar.gz: 06feb166ae7e01f3594de4ee25f987b9fe830d879fb5888dea4e0573823b23b56705667eb99bf7ecf464c6703a5ebc4602e076bc0d86e601974b3396ea5493ab
|
data/lib/masque.rb
CHANGED
@@ -52,4 +52,20 @@ class Masque
|
|
52
52
|
def run(&block)
|
53
53
|
@agent.instance_eval(&block)
|
54
54
|
end
|
55
|
+
|
56
|
+
def compat_capybara_20!
|
57
|
+
Capybara.configure do |config|
|
58
|
+
config.match = :one
|
59
|
+
config.exact_options = true
|
60
|
+
config.ignore_hidden_elements = true
|
61
|
+
config.visible_text_only = true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def compat_capybara_1x!
|
66
|
+
Capybara.configure do |config|
|
67
|
+
config.match = :prefer_exact
|
68
|
+
config.ignore_hidden_elements = false
|
69
|
+
end
|
70
|
+
end
|
55
71
|
end
|
data/lib/masque/version.rb
CHANGED
data/masque.gemspec
CHANGED
@@ -17,9 +17,9 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
gem.add_dependency "headless"
|
20
|
-
gem.add_dependency "capybara"
|
21
|
-
gem.add_dependency "capybara-webkit", "~> 0.
|
22
|
-
gem.add_dependency "poltergeist", "~> 1.
|
20
|
+
gem.add_dependency "capybara" # maybe 2.1.0
|
21
|
+
gem.add_dependency "capybara-webkit", "~> 1.0.0"
|
22
|
+
gem.add_dependency "poltergeist", "~> 1.3.0"
|
23
23
|
gem.add_development_dependency "rspec", "~> 2.11"
|
24
24
|
gem.add_development_dependency "sinatra"
|
25
25
|
gem.add_development_dependency "simplecov"
|
data/spec/support/app.rb
CHANGED
@@ -21,8 +21,13 @@ class Dummy < Sinatra::Base
|
|
21
21
|
<h1 id="visits">#{session[:visit]}</h1>
|
22
22
|
<div id="ua">#{env["HTTP_USER_AGENT"]}</div>
|
23
23
|
<p>Hello, World!</p>
|
24
|
+
<div id="hide-text"><p style="display: none">hide text</p></div>
|
24
25
|
<div id="js"></div>
|
25
26
|
<div id="params">#{MultiJson.dump(params)}</div>
|
27
|
+
<select id="numbers">
|
28
|
+
<option value="10">10</option>
|
29
|
+
<option value="11">11</option>
|
30
|
+
</select>
|
26
31
|
<script>
|
27
32
|
document.getElementById("js").innerHTML = JSON.stringify({
|
28
33
|
h: window.innerHeight,
|
data/spec/support/driver.rb
CHANGED
@@ -87,6 +87,87 @@ shared_examples_for "driver" do
|
|
87
87
|
end.to raise_error(TimeoutError)
|
88
88
|
end
|
89
89
|
end
|
90
|
+
|
91
|
+
describe "compat" do
|
92
|
+
context "2.0.x with compat_capybara_20!" do
|
93
|
+
before do
|
94
|
+
masque.compat_capybara_20!
|
95
|
+
end
|
96
|
+
|
97
|
+
context "config.match = :one" do
|
98
|
+
it "raise error multiple elements found" do
|
99
|
+
expect do
|
100
|
+
masque.run do
|
101
|
+
visit "/"
|
102
|
+
find "div"
|
103
|
+
end
|
104
|
+
end.to raise_error(Capybara::Ambiguous)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "config.exact_options = true" do
|
109
|
+
it "don't find ambiguous text matching" do
|
110
|
+
expect do
|
111
|
+
masque.run do
|
112
|
+
visit "/"
|
113
|
+
page.select "1", :from => "numbers"
|
114
|
+
end
|
115
|
+
end.to raise_error(Capybara::ElementNotFound)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context "config.ignore_hidden_elements = true" do
|
120
|
+
it "don't find hidden element" do
|
121
|
+
expect do
|
122
|
+
masque.run do
|
123
|
+
visit "/dummy"
|
124
|
+
find "title", :text => "hi dummy"
|
125
|
+
end
|
126
|
+
end.to raise_error(Capybara::ElementNotFound)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
context "config.visible_text_only = true" do
|
131
|
+
it do
|
132
|
+
pending "capybara-webkit 1.0.0 can't handle correctly" if driver == :webkit
|
133
|
+
|
134
|
+
masque.run do
|
135
|
+
visit "/"
|
136
|
+
find("#hide-text").text.should == ""
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context "1.x with compat_capybara_1x!" do
|
143
|
+
before do
|
144
|
+
masque.compat_capybara_1x!
|
145
|
+
end
|
146
|
+
|
147
|
+
context "config.match = :prefer_exact" do
|
148
|
+
it "don't raise error multiple elements found" do
|
149
|
+
expect do
|
150
|
+
masque.run do
|
151
|
+
visit "/"
|
152
|
+
find "div"
|
153
|
+
end
|
154
|
+
end.to_not raise_error
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
context "config.ignore_hidden_elements = false" do
|
159
|
+
it "can find hidden element" do
|
160
|
+
expect do
|
161
|
+
masque.run do
|
162
|
+
visit "/dummy"
|
163
|
+
find "title", :text => "hi dummy"
|
164
|
+
end
|
165
|
+
end.to_not raise_error
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
170
|
+
end
|
90
171
|
end
|
91
172
|
|
92
173
|
it "#reset_session!" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: masque
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- uu59
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: headless
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 1.0.0
|
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: 0.
|
54
|
+
version: 1.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: poltergeist
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.3.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: 1.
|
68
|
+
version: 1.3.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
168
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.0.
|
169
|
+
rubygems_version: 2.0.3
|
170
170
|
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: JavaScript enabled web crawler kit
|