capybara-webkit 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,10 +1,40 @@
1
- 2012-02-01 Joe Ferris <jferris@thoughtbot.com>
1
+ 2012-02-17 Matthew Mongeau <halogenandtoast@gmail.com>
2
+ * ChangeLog, version.rb:
3
+ Bump to 0.10.0
4
+
5
+ 2012-02-17 Marc Schwieterman
6
+ * driver_spec.rb, Reset.cpp, Reset.h: Reset history when resetting session.
7
+ * driver_spec.rb, webkit.rb, browser.rb, CommandFactory.cpp, CurrentUrl.cpp,
8
+ CurrentUrl.h, find_command.h, webkit_server.pro:
9
+ current_url now conforms more closely to the behavior of Selenium.
10
+
11
+ 2012-02-17 Igor Zubkov <igor.zubkov@gmail.com>
12
+ * spec_helper.rb: Fix typo.
13
+
14
+ 2012-02-17 Matthew Mongeau <halogenandtoast@gmail.com>
15
+ * capybara_webkit_builder.rb, capybara_webkit_builder_spec.rb,
16
+ spec_helper.rb:
17
+ Allow for overriding MAKE, QMAKE, and SPEC options via the environment.
18
+
19
+ 2012-02-12 Jason Petersen <jasonmp85@gmail.com>
20
+ * driver_spec.rb, node.rb, capybara.js:
21
+ Selected attribute is no longer removed when selecting/deselecting. Only the
22
+ property is changed.
23
+
24
+ 2012-02-09 Gabe Berke-Williams <gabe@thoughtbot.com>
25
+ * capybara-webkit.gemspec: Note capybara-webkit's usage of Sinatra.
26
+
27
+ 2012-02-03 Matthew Mongeau <halogenandtoast@gmail.com>
28
+ * version.rb:
29
+ Bump to 0.9.0
30
+
31
+ 2012-02-01 Joe Ferris <jferris@thoughtbot.com>
2
32
  * driver_spec.rb, Connection.cpp, Connection.h:
3
- Try to detect when a command starts a page load and wait for it to finish
33
+ Try to detect when a command starts a page load and wait for it to finish.
4
34
 
5
- 2012-01-27 Matthew Mongeau <halogenandtoast@gmail.com>
6
- * driver_spec.rb, capybara.js: Trigger mousedown and mouseup events
7
- * driver_spec.rb, capybara.js: Simulate browser events more closely
35
+ 2012-01-27 Matthew Mongeau <halogenandtoast@gmail.com>
36
+ * driver_spec.rb, capybara.js: Trigger mousedown and mouseup events.
37
+ * driver_spec.rb, capybara.js: Simulate browser events more closely.
8
38
 
9
39
  2012-01-19 Marco Antonio <marcofognog@gmail.com>
10
40
  * node.rb, driver_spec.rb:
@@ -15,4 +45,4 @@
15
45
  Raise error when an invisible element receives #click so it resembles a browser more closely.
16
46
 
17
47
  2012-01-15 Marc Schwieterman
18
- * CONTRIBUTING.md: add imagemagick dependency to contributing guide
48
+ * CONTRIBUTING.md: add imagemagick dependency to contributing guide.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capybara-webkit (0.8.0)
4
+ capybara-webkit (0.9.0)
5
5
  capybara (>= 1.0.0, < 1.2)
6
6
  json
7
7
 
@@ -18,11 +18,11 @@ GEM
18
18
  rack-test (>= 0.5.4)
19
19
  selenium-webdriver (~> 2.0)
20
20
  xpath (~> 0.1.4)
21
- childprocess (0.2.3)
21
+ childprocess (0.3.1)
22
22
  ffi (~> 1.0.6)
23
23
  diff-lcs (1.1.2)
24
24
  ffi (1.0.11)
25
- json (1.6.3)
25
+ json (1.6.5)
26
26
  mime-types (1.17.2)
27
27
  mini_magick (3.2.1)
28
28
  subexec (~> 0.0.4)
@@ -40,9 +40,9 @@ GEM
40
40
  rspec-expectations (2.6.0)
41
41
  diff-lcs (~> 1.1.2)
42
42
  rspec-mocks (2.6.0)
43
- rubyzip (0.9.5)
44
- selenium-webdriver (2.15.0)
45
- childprocess (>= 0.2.1)
43
+ rubyzip (0.9.6.1)
44
+ selenium-webdriver (2.19.0)
45
+ childprocess (>= 0.2.5)
46
46
  ffi (~> 1.0.9)
47
47
  multi_json (~> 1.0.4)
48
48
  rubyzip
data/NEWS.md CHANGED
@@ -1,3 +1,9 @@
1
+ New for 0.10.0:
2
+
3
+ * current_url now more closely matches the behavior of Selenium
4
+ * custom MAKE, QMAKE, and SPEC options can be set from the environment
5
+ * BUG: Selected attribute is no longer removed when selecting/deselecting. Only the property is changed.
6
+
1
7
  New for 0.9.0:
2
8
 
3
9
  * Raise an error when an invisible element receives #click.
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_runtime_dependency("json")
20
20
 
21
21
  s.add_development_dependency("rspec", "~> 2.6.0")
22
+ # Sinatra is used by Capybara's TestApp
22
23
  s.add_development_dependency("sinatra")
23
24
  s.add_development_dependency("mini_magick")
24
25
  s.add_development_dependency("rake")
@@ -27,7 +27,7 @@ class Capybara::Driver::Webkit
27
27
  end
28
28
 
29
29
  def current_url
30
- browser.url
30
+ browser.current_url
31
31
  end
32
32
 
33
33
  def requested_url
@@ -70,6 +70,10 @@ class Capybara::Driver::Webkit
70
70
  command("RequestedUrl")
71
71
  end
72
72
 
73
+ def current_url
74
+ command("CurrentUrl")
75
+ end
76
+
73
77
  def frame_focus(frame_id_or_index=nil)
74
78
  if frame_id_or_index.is_a? Fixnum
75
79
  command("FrameFocus", "", frame_id_or_index.to_s)
@@ -22,11 +22,7 @@ class Capybara::Driver::Webkit
22
22
 
23
23
  def value
24
24
  if multiple_select?
25
- self.find(".//option").select do |option|
26
- option["selected"] == "selected"
27
- end.map do |option|
28
- option.value
29
- end
25
+ self.find(".//option").select(&:selected?).map(&:value)
30
26
  else
31
27
  invoke "value"
32
28
  end
@@ -1,7 +1,7 @@
1
1
  module Capybara
2
2
  module Driver
3
3
  class Webkit
4
- VERSION = '0.9.0'.freeze
4
+ VERSION = '0.10.0'.freeze
5
5
  end
6
6
  end
7
7
  end
@@ -5,23 +5,32 @@ module CapybaraWebkitBuilder
5
5
  extend self
6
6
 
7
7
  def make_bin
8
- make_binaries = ['gmake', 'make']
9
- make_binaries.detect { |make| system("which #{make}") }
8
+ ENV['MAKE'] || 'make'
10
9
  end
11
10
 
12
- def makefile
13
- qmake_binaries = ['qmake', 'qmake-qt4']
14
- qmake = qmake_binaries.detect { |qmake| system("which #{qmake}") }
11
+ def qmake_bin
12
+ ENV['QMAKE'] || 'qmake'
13
+ end
14
+
15
+ def spec
16
+ ENV['SPEC'] || os_spec
17
+ end
18
+
19
+ def os_spec
15
20
  case RbConfig::CONFIG['host_os']
16
21
  when /linux/
17
- system("#{qmake} -spec linux-g++")
22
+ "linux-g++"
18
23
  when /freebsd/
19
- system("#{qmake} -spec freebsd-g++")
24
+ "freebsd-g++"
20
25
  else
21
- system("#{qmake} -spec macx-g++")
26
+ "macx-g++"
22
27
  end
23
28
  end
24
29
 
30
+ def makefile
31
+ system("#{qmake_bin} -spec #{spec}")
32
+ end
33
+
25
34
  def qmake
26
35
  system("#{make_bin} qmake")
27
36
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ require 'capybara_webkit_builder'
3
+
4
+ describe CapybaraWebkitBuilder do
5
+ let(:builder) { CapybaraWebkitBuilder }
6
+
7
+ it "will use the env variable for #make_bin" do
8
+ with_env_vars("MAKE" => "fake_make") do
9
+ builder.make_bin.should == "fake_make"
10
+ end
11
+ end
12
+
13
+ it "will use the env variable for #qmake_bin" do
14
+ with_env_vars("QMAKE" => "fake_qmake") do
15
+ builder.qmake_bin.should == "fake_qmake"
16
+ end
17
+ end
18
+
19
+ it "will use the env variable for #os_spec" do
20
+ with_env_vars("SPEC" => "fake_os_spec") do
21
+ builder.spec.should == "fake_os_spec"
22
+ end
23
+ end
24
+
25
+ it "defaults the #make_bin" do
26
+ builder.make_bin.should == 'make'
27
+ end
28
+
29
+ it "defaults the #qmake_bin" do
30
+ builder.qmake_bin.should == 'qmake'
31
+ end
32
+
33
+ it "defaults #spec to the #os_specs" do
34
+ builder.spec.should == builder.os_spec
35
+ end
36
+ end
37
+
@@ -132,6 +132,20 @@ describe Capybara::Driver::Webkit do
132
132
  subject.find("//input").first.click
133
133
  subject.find("//p").first.text.should == ""
134
134
  end
135
+
136
+ it "returns the current URL when changed by pushState after a redirect" do
137
+ subject.visit("/redirect-me")
138
+ port = subject.instance_variable_get("@rack_server").port
139
+ subject.execute_script("window.history.pushState({}, '', '/pushed-after-redirect')")
140
+ subject.current_url.should == "http://127.0.0.1:#{port}/pushed-after-redirect"
141
+ end
142
+
143
+ it "returns the current URL when changed by replaceState after a redirect" do
144
+ subject.visit("/redirect-me")
145
+ port = subject.instance_variable_get("@rack_server").port
146
+ subject.execute_script("window.history.replaceState({}, '', '/replaced-after-redirect')")
147
+ subject.current_url.should == "http://127.0.0.1:#{port}/replaced-after-redirect"
148
+ end
135
149
  end
136
150
 
137
151
  context "css app" do
@@ -197,6 +211,11 @@ describe Capybara::Driver::Webkit do
197
211
  subject.find("//*[contains(., 'hello')]").should be_empty
198
212
  end
199
213
 
214
+ it "has a location of 'about:blank' after reseting" do
215
+ subject.reset!
216
+ subject.current_url.should == "about:blank"
217
+ end
218
+
200
219
  it "raises an error for an invalid xpath query" do
201
220
  expect { subject.find("totally invalid salad") }.
202
221
  to raise_error(Capybara::Driver::Webkit::WebkitInvalidResponseError, /xpath/i)
@@ -223,6 +242,18 @@ describe Capybara::Driver::Webkit do
223
242
  subject.current_url.should == "http://127.0.0.1:#{port}/hello/world?success=true"
224
243
  end
225
244
 
245
+ it "returns the current URL when changed by pushState" do
246
+ port = subject.instance_variable_get("@rack_server").port
247
+ subject.execute_script("window.history.pushState({}, '', '/pushed')")
248
+ subject.current_url.should == "http://127.0.0.1:#{port}/pushed"
249
+ end
250
+
251
+ it "returns the current URL when changed by replaceState" do
252
+ port = subject.instance_variable_get("@rack_server").port
253
+ subject.execute_script("window.history.replaceState({}, '', '/replaced')")
254
+ subject.current_url.should == "http://127.0.0.1:#{port}/replaced"
255
+ end
256
+
226
257
  it "does not double-encode URLs" do
227
258
  subject.visit("/hello/world?success=%25true")
228
259
  subject.current_url.should =~ /success=\%25true/
@@ -380,6 +411,7 @@ describe Capybara::Driver::Webkit do
380
411
  </select>
381
412
  <textarea id="only-textarea">what a wonderful area for text</textarea>
382
413
  <input type="radio" id="only-radio" value="1"/>
414
+ <button type="reset">Reset Form</button>
383
415
  </form>
384
416
  </body></html>
385
417
  HTML
@@ -450,18 +482,45 @@ describe Capybara::Driver::Webkit do
450
482
  let(:banana_option) { subject.find("//option[@id='topping-banana']").first }
451
483
  let(:cherry_option) { subject.find("//option[@id='topping-cherry']").first }
452
484
  let(:toppings_select) { subject.find("//select[@name='toppings']").first }
485
+ let(:reset_button) { subject.find("//button[@type='reset']").first }
453
486
 
454
- it "selects an option" do
455
- animal_select.value.should == "Capybara"
456
- monkey_option.select_option
457
- animal_select.value.should == "Monkey"
487
+ context "a select element's selection has been changed" do
488
+ before do
489
+ animal_select.value.should == "Capybara"
490
+ monkey_option.select_option
491
+ end
492
+
493
+ it "returns the new selection" do
494
+ animal_select.value.should == "Monkey"
495
+ end
496
+
497
+ it "does not modify the selected attribute of a new selection" do
498
+ monkey_option['selected'].should be_empty
499
+ end
500
+
501
+ it "returns the old value when a reset button is clicked" do
502
+ reset_button.click
503
+
504
+ animal_select.value.should == "Capybara"
505
+ end
458
506
  end
459
507
 
460
- it "unselects an option in a multi-select" do
461
- toppings_select.value.should include("Apple", "Banana", "Cherry")
508
+ context "a multi-select element's option has been unselected" do
509
+ before do
510
+ toppings_select.value.should include("Apple", "Banana", "Cherry")
462
511
 
463
- apple_option.unselect_option
464
- toppings_select.value.should_not include("Apple")
512
+ apple_option.unselect_option
513
+ end
514
+
515
+ it "does not return the deselected option" do
516
+ toppings_select.value.should_not include("Apple")
517
+ end
518
+
519
+ it "returns the deselected option when a reset button is clicked" do
520
+ reset_button.click
521
+
522
+ toppings_select.value.should include("Apple", "Banana", "Cherry")
523
+ end
465
524
  end
466
525
 
467
526
  it "reselects an option in a multi-select" do
@@ -23,3 +23,17 @@ $webkit_browser = Capybara::Driver::Webkit::Browser.new(:socket_class => TCPSock
23
23
  Capybara.register_driver :reusable_webkit do |app|
24
24
  Capybara::Driver::Webkit.new(app, :browser => $webkit_browser)
25
25
  end
26
+
27
+ def with_env_vars(vars)
28
+ old_env_variables = {}
29
+ vars.each do |key, value|
30
+ old_env_variables[key] = ENV[key]
31
+ ENV[key] = value
32
+ end
33
+
34
+ yield
35
+
36
+ old_env_variables.each do |key, value|
37
+ ENV[key] = value
38
+ end
39
+ end
@@ -20,6 +20,7 @@
20
20
  #include "SetProxy.h"
21
21
  #include "ConsoleMessages.h"
22
22
  #include "RequestedUrl.h"
23
+ #include "CurrentUrl.h"
23
24
 
24
25
  CommandFactory::CommandFactory(WebPage *page, QObject *parent) : QObject(parent) {
25
26
  m_page = page;
@@ -0,0 +1,71 @@
1
+ #include "CurrentUrl.h"
2
+ #include "WebPage.h"
3
+
4
+ CurrentUrl::CurrentUrl(WebPage *page, QObject *parent) : Command(page, parent) {
5
+ }
6
+
7
+ /*
8
+ * This CurrentUrl command attempts to produce a current_url value consistent
9
+ * with that returned by the Selenium WebDriver Capybara driver.
10
+ *
11
+ * It does not currently return the correct value in the case of an iframe whose
12
+ * source URL results in a redirect because the loading of the iframe does not
13
+ * generate a history item. This is most likely a rare case and is consistent
14
+ * with the current behavior of the capybara-webkit driver.
15
+ *
16
+ * The following two values are *not* affected by Javascript pushState.
17
+ *
18
+ * QWebFrame->url()
19
+ * QWebHistoryItem.originalUrl()
20
+ *
21
+ * The following two values *are* affected by Javascript pushState.
22
+ *
23
+ * QWebFrame->requestedUrl()
24
+ * QWebHistoryItem.url()
25
+ *
26
+ * In the cases that we have access to both the QWebFrame values and the
27
+ * correct history item for that frame, we can compare the values and determine
28
+ * if a redirect occurred and if pushState was used. The table below describes
29
+ * the various combinations of URL values that are possible.
30
+ *
31
+ * O -> originally requested URL
32
+ * R -> URL after redirection
33
+ * P -> URL set by pushState
34
+ * * -> denotes the desired URL value from the frame
35
+ *
36
+ * frame history
37
+ * case url requestedUrl url originalUrl
38
+ * -----------------------------------------------------------------
39
+ * regular load O O* O O
40
+ *
41
+ * redirect w/o R* O R O
42
+ * pushState
43
+ *
44
+ * pushState O P* P O
45
+ * only
46
+ *
47
+ * redirect w/ R P* P O
48
+ * pushState
49
+ *
50
+ * Based on the above information, we only need to check for the case of a
51
+ * redirect w/o pushState, in which case QWebFrame->url() will have the correct
52
+ * current_url value. In all other cases QWebFrame->requestedUrl() is correct.
53
+ */
54
+ void CurrentUrl::start(QStringList &arguments) {
55
+ Q_UNUSED(arguments);
56
+
57
+ QUrl humanUrl = wasRedirectedAndNotModifiedByJavascript() ?
58
+ page()->currentFrame()->url() : page()->currentFrame()->requestedUrl();
59
+ QByteArray encodedBytes = humanUrl.toEncoded();
60
+ QString urlString = QString(encodedBytes);
61
+ emit finished(new Response(true, urlString));
62
+ }
63
+
64
+ bool CurrentUrl::wasRegularLoad() {
65
+ return page()->currentFrame()->url() == page()->currentFrame()->requestedUrl();
66
+ }
67
+
68
+ bool CurrentUrl::wasRedirectedAndNotModifiedByJavascript() {
69
+ return !wasRegularLoad() && page()->currentFrame()->url() == page()->history()->currentItem().url();
70
+ }
71
+
@@ -0,0 +1,16 @@
1
+ #include "Command.h"
2
+
3
+ class WebPage;
4
+
5
+ class CurrentUrl : public Command {
6
+ Q_OBJECT
7
+
8
+ public:
9
+ CurrentUrl(WebPage *page, QObject *parent = 0);
10
+ virtual void start(QStringList &arguments);
11
+
12
+ private:
13
+ bool wasRegularLoad();
14
+ bool wasRedirectedAndNotModifiedByJavascript();
15
+ };
16
+
@@ -16,6 +16,13 @@ void Reset::start(QStringList &arguments) {
16
16
  page()->setUserAgent(NULL);
17
17
  page()->resetResponseHeaders();
18
18
  page()->resetConsoleMessages();
19
+ resetHistory();
19
20
  emit finished(new Response(true));
20
21
  }
21
22
 
23
+ void Reset::resetHistory() {
24
+ // Clearing the history preserves the current history item, so set it to blank first.
25
+ page()->currentFrame()->setUrl(QUrl("about:blank"));
26
+ page()->history()->clear();
27
+ }
28
+
@@ -8,5 +8,8 @@ class Reset : public Command {
8
8
  public:
9
9
  Reset(WebPage *page, QObject *parent = 0);
10
10
  virtual void start(QStringList &arguments);
11
+
12
+ private:
13
+ void resetHistory();
11
14
  };
12
15
 
@@ -196,13 +196,11 @@ Capybara = {
196
196
 
197
197
  selectOption: function(index) {
198
198
  this.nodes[index].selected = true;
199
- this.nodes[index].setAttribute("selected", "selected");
200
199
  this.trigger(index, "change");
201
200
  },
202
201
 
203
202
  unselectOption: function(index) {
204
203
  this.nodes[index].selected = false;
205
- this.nodes[index].removeAttribute("selected");
206
204
  this.trigger(index, "change");
207
205
  },
208
206
 
@@ -24,3 +24,4 @@ CHECK_COMMAND(Headers)
24
24
  CHECK_COMMAND(SetProxy)
25
25
  CHECK_COMMAND(ConsoleMessages)
26
26
  CHECK_COMMAND(RequestedUrl)
27
+ CHECK_COMMAND(CurrentUrl)
@@ -2,6 +2,7 @@ TEMPLATE = app
2
2
  TARGET = webkit_server
3
3
  DESTDIR = .
4
4
  HEADERS = \
5
+ CurrentUrl.h \
5
6
  RequestedUrl.h \
6
7
  ConsoleMessages.h \
7
8
  WebPage.h \
@@ -35,6 +36,7 @@ HEADERS = \
35
36
  SetProxy.h \
36
37
 
37
38
  SOURCES = \
39
+ CurrentUrl.cpp \
38
40
  RequestedUrl.cpp \
39
41
  ConsoleMessages.cpp \
40
42
  main.cpp \
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-webkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,11 +13,11 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-02-03 00:00:00.000000000Z
16
+ date: 2012-02-17 00:00:00.000000000Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: capybara
20
- requirement: &2158944240 !ruby/object:Gem::Requirement
20
+ requirement: &2157249340 !ruby/object:Gem::Requirement
21
21
  none: false
22
22
  requirements:
23
23
  - - ! '>='
@@ -28,10 +28,10 @@ dependencies:
28
28
  version: '1.2'
29
29
  type: :runtime
30
30
  prerelease: false
31
- version_requirements: *2158944240
31
+ version_requirements: *2157249340
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: json
34
- requirement: &2158943060 !ruby/object:Gem::Requirement
34
+ requirement: &2157247960 !ruby/object:Gem::Requirement
35
35
  none: false
36
36
  requirements:
37
37
  - - ! '>='
@@ -39,10 +39,10 @@ dependencies:
39
39
  version: '0'
40
40
  type: :runtime
41
41
  prerelease: false
42
- version_requirements: *2158943060
42
+ version_requirements: *2157247960
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rspec
45
- requirement: &2158941580 !ruby/object:Gem::Requirement
45
+ requirement: &2157240260 !ruby/object:Gem::Requirement
46
46
  none: false
47
47
  requirements:
48
48
  - - ~>
@@ -50,10 +50,10 @@ dependencies:
50
50
  version: 2.6.0
51
51
  type: :development
52
52
  prerelease: false
53
- version_requirements: *2158941580
53
+ version_requirements: *2157240260
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: sinatra
56
- requirement: &2158940900 !ruby/object:Gem::Requirement
56
+ requirement: &2157239520 !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
59
  - - ! '>='
@@ -61,10 +61,10 @@ dependencies:
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
- version_requirements: *2158940900
64
+ version_requirements: *2157239520
65
65
  - !ruby/object:Gem::Dependency
66
66
  name: mini_magick
67
- requirement: &2158940440 !ruby/object:Gem::Requirement
67
+ requirement: &2157238560 !ruby/object:Gem::Requirement
68
68
  none: false
69
69
  requirements:
70
70
  - - ! '>='
@@ -72,10 +72,10 @@ dependencies:
72
72
  version: '0'
73
73
  type: :development
74
74
  prerelease: false
75
- version_requirements: *2158940440
75
+ version_requirements: *2157238560
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: rake
78
- requirement: &2158939820 !ruby/object:Gem::Requirement
78
+ requirement: &2157237520 !ruby/object:Gem::Requirement
79
79
  none: false
80
80
  requirements:
81
81
  - - ! '>='
@@ -83,10 +83,10 @@ dependencies:
83
83
  version: '0'
84
84
  type: :development
85
85
  prerelease: false
86
- version_requirements: *2158939820
86
+ version_requirements: *2157237520
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: appraisal
89
- requirement: &2158939100 !ruby/object:Gem::Requirement
89
+ requirement: &2157236860 !ruby/object:Gem::Requirement
90
90
  none: false
91
91
  requirements:
92
92
  - - ~>
@@ -94,7 +94,7 @@ dependencies:
94
94
  version: 0.4.0
95
95
  type: :development
96
96
  prerelease: false
97
- version_requirements: *2158939100
97
+ version_requirements: *2157236860
98
98
  description:
99
99
  email: support@thoughtbot.com
100
100
  executables: []
@@ -131,6 +131,7 @@ files:
131
131
  - lib/capybara/webkit/matchers.rb
132
132
  - lib/capybara_webkit_builder.rb
133
133
  - spec/browser_spec.rb
134
+ - spec/capybara_webkit_builder_spec.rb
134
135
  - spec/cookie_jar_spec.rb
135
136
  - spec/driver_rendering_spec.rb
136
137
  - spec/driver_spec.rb
@@ -151,6 +152,8 @@ files:
151
152
  - src/Connection.h
152
153
  - src/ConsoleMessages.cpp
153
154
  - src/ConsoleMessages.h
155
+ - src/CurrentUrl.cpp
156
+ - src/CurrentUrl.h
154
157
  - src/Evaluate.cpp
155
158
  - src/Evaluate.h
156
159
  - src/Execute.cpp
@@ -234,6 +237,7 @@ specification_version: 3
234
237
  summary: Headless Webkit driver for Capybara
235
238
  test_files:
236
239
  - spec/browser_spec.rb
240
+ - spec/capybara_webkit_builder_spec.rb
237
241
  - spec/cookie_jar_spec.rb
238
242
  - spec/driver_rendering_spec.rb
239
243
  - spec/driver_spec.rb