masque 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -25,10 +25,6 @@ class Masque
25
25
  @session = session
26
26
  end
27
27
 
28
- def page
29
- session
30
- end
31
-
32
28
  def method_missing(*args)
33
29
  session.__send__(*args)
34
30
  end
@@ -6,5 +6,53 @@ class Masque
6
6
  page.driver.render(path)
7
7
  end
8
8
  alias :render :save_screenshot
9
+
10
+ def page
11
+ session
12
+ end
13
+
14
+ def driver
15
+ session.driver
16
+ end
17
+
18
+ def driver_name
19
+ case driver
20
+ when ::Capybara::Driver::Webkit
21
+ :webkit
22
+ when ::Capybara::Poltergeist::Driver
23
+ :poltergeist
24
+ else
25
+ :unknown
26
+ end
27
+ end
28
+
29
+ def set_headers(headers = {})
30
+ case driver_name
31
+ when :webkit
32
+ headers.each_pair {|k,v| driver.header(k, v)}
33
+ when :poltergeist
34
+ driver.headers = headers
35
+ else
36
+ raise "for unknown driver"
37
+ end
38
+ end
39
+ alias :set_request_headers :set_headers
40
+
41
+ def cookies
42
+ driver.cookies # driver specific format
43
+ end
44
+
45
+ def resize(x, y)
46
+ case driver_name
47
+ when :webkit
48
+ driver.resize_window(x, y)
49
+ when :poltergeist
50
+ driver.resize(x, y)
51
+ else
52
+ raise "for unknown driver"
53
+ end
54
+ end
55
+ alias :resize_window :resize
56
+
9
57
  end
10
58
  end
@@ -1,3 +1,3 @@
1
1
  class Masque
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -22,4 +22,5 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency "rspec", "~> 2.11"
23
23
  gem.add_development_dependency "sinatra"
24
24
  gem.add_development_dependency "simplecov"
25
+ gem.add_development_dependency "multi_json"
25
26
  end
@@ -11,11 +11,6 @@ describe Masque do
11
11
  m.agent.session = Capybara::Session.new(driver, Dummy)
12
12
  m
13
13
  end
14
- after do
15
- masque.instance_eval do
16
- @agent = nil
17
- end
18
- end
19
14
 
20
15
  it ".new" do
21
16
  opts = {:display => 50, :driver => driver}
@@ -47,6 +42,32 @@ describe Masque do
47
42
  File.unlink(path)
48
43
  end
49
44
 
45
+ it "#cookies" do
46
+ cookie = masque.run do
47
+ visit "/"
48
+ cookies["rack.session"]
49
+ end
50
+ cookie.should_not be_nil
51
+ end
52
+
53
+ it "#set_headers" do
54
+ masque.run do
55
+ set_headers({"User-Agent" => "rspec"})
56
+ visit "/"
57
+ find('#ua').text.should == "rspec"
58
+ end
59
+ end
60
+
61
+ it "#resize" do
62
+ masque.run do
63
+ resize(400, 300)
64
+ visit "/"
65
+ size = MultiJson.load(find('#js').text)
66
+ size["w"].should == 400
67
+ size["h"].should == 300
68
+ end
69
+ end
70
+
50
71
  it "return last evaluated value" do
51
72
  body = masque.run do
52
73
  visit "/"
@@ -18,7 +18,15 @@ class Dummy < Sinatra::Base
18
18
  </style>
19
19
  <title>hi #{params[:arg]}</title>
20
20
  <h1 id="visits">#{session[:visit]}</h1>
21
+ <div id="ua">#{env["HTTP_USER_AGENT"]}</div>
21
22
  <p>Hello, World!</p>
23
+ <div id="js"></div>
24
+ <script>
25
+ document.getElementById("js").innerHTML = JSON.stringify({
26
+ h: window.innerHeight,
27
+ w: window.innerWidth
28
+ });
29
+ </script>
22
30
  HTML
23
31
  end
24
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: masque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -107,6 +107,22 @@ dependencies:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: multi_json
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
110
126
  description: JavaScript enabled web crawler kit
111
127
  email:
112
128
  - k@uu59.org