capybara-webkit 0.9.0 → 0.10.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.
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