masque 0.0.2 → 0.1.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.
@@ -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