Class: Infrataster::Contexts::CapybaraContext

Inherits:
BaseContext
  • Object
show all
Defined in:
lib/infrataster/contexts/capybara_context.rb

Instance Attribute Summary

Attributes inherited from BaseContext

#resource, #server

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ CapybaraContext

Returns a new instance of CapybaraContext.



25
26
27
# File 'lib/infrataster/contexts/capybara_context.rb', line 25

def initialize(*args)
  super(*args)
end

Class Method Details

.prepare_sessionObject



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/infrataster/contexts/capybara_context.rb', line 12

def self.prepare_session
  capybara_driver_name = :infrataster_driver

  proxy = BrowsermobProxy.proxy
  Capybara.register_driver capybara_driver_name do |app|
    Capybara::Poltergeist::Driver.new(
      app,
      phantomjs_options: ["--proxy=http://#{proxy.host}:#{proxy.port}"],
    )
  end
  Capybara::Session.new(capybara_driver_name)
end

.sessionObject



8
9
10
# File 'lib/infrataster/contexts/capybara_context.rb', line 8

def self.session
  @session ||= prepare_session
end

Instance Method Details

#after_each(example) ⇒ Object



48
49
50
# File 'lib/infrataster/contexts/capybara_context.rb', line 48

def after_each(example)
  @gateway_finalize_proc.call if @gateway_finalize_proc
end

#before_each(example) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/infrataster/contexts/capybara_context.rb', line 37

def before_each(example)
  example.example_group_instance.extend(Capybara::RSpecMatchers)

  proxy = BrowsermobProxy.proxy
  proxy.header({"Host" => resource.uri.host})

  address, port, @gateway_finalize_proc =
    server.open_gateway_on_from_server(resource.uri.port)
  Capybara.app_host = "http://#{address}:#{port}"
end

#pageObject



33
34
35
# File 'lib/infrataster/contexts/capybara_context.rb', line 33

def page
  session
end

#sessionObject



29
30
31
# File 'lib/infrataster/contexts/capybara_context.rb', line 29

def session
  self.class.session
end