diff --git a/lib/capybara/driver/webkit/browser.rb b/lib/capybara/driver/webkit/browser.rb index 2edca38..56555ec 100644 --- a/lib/capybara/driver/webkit/browser.rb +++ b/lib/capybara/driver/webkit/browser.rb @@ -4,6 +4,8 @@ require 'json' class Capybara::Driver::Webkit class Browser + attr :server_port + def initialize(options = {}) @socket_class = options[:socket_class] || TCPSocket start_server @@ -84,7 +86,7 @@ class Capybara::Driver::Webkit def discover_server_port(read_pipe) return unless IO.select([read_pipe], nil, nil, 10) - ((read_pipe.first || '').match(/listening on port: (\d+)/) || [])[1] + ((read_pipe.first || '').match(/listening on port: (\d+)/) || [])[1].to_i end def connect diff --git a/spec/browser_spec.rb b/spec/browser_spec.rb new file mode 100644 index 0000000..62a5093 --- /dev/null +++ b/spec/browser_spec.rb @@ -0,0 +1,27 @@ +require 'spec/spec_helper' +require 'capybara/driver/webkit/browser' + +describe Capybara::Driver::Webkit::Browser do + + let(:browser) { Capybara::Driver::Webkit::Browser.new } + + describe '#server_port' do + subject { browser.server_port } + it 'returns a valid port number' do + should be_a(Integer) + end + + it 'returns a port in the allowed range' do + should > 0x400 + should < 0xffff + end + end + + context 'random port' do + it 'chooses a new port number for a new browser instance' do + new_browser = Capybara::Driver::Webkit::Browser.new + new_browser.server_port.should_not == browser.server_port + end + end + +end