capybara-webkit 1.8.0 → 1.9.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02ad3535fdad745cf9b7aac9b2da913420070788
4
- data.tar.gz: 2fa85fc80384cba0e272bf026158382946836cf7
3
+ metadata.gz: 60209d81bf188faa0999eaefc0ed131547e4bcc1
4
+ data.tar.gz: 69865244998cee40ed5a6a49225f6ae555962ecf
5
5
  SHA512:
6
- metadata.gz: 542d81525108392ad7e40e400f519b326543b791c2175f334a86d82efcdef8cfd085d2a4dacef87be243c6508de057eb3e4c53e78e23c7493db0cfbb51a6cbaf
7
- data.tar.gz: 610466612a11c0dd32b8d97b50f38a2d85473c9588abe11c76fc3fd6a3948d6bf23b3b32c948a6a2ce59229da2824a67308d7a3fc0858a44e5ba2d68f506cff2
6
+ metadata.gz: f9287cdc79dc08a5c996d8cb7275bbf002e53589f68d009472f057ed66b17391e14d30ed5ff4264bc87f71c26aa2eb76ca1861e5ac25592c4e6715095a6f50b1
7
+ data.tar.gz: 0ce7df637af72ca80c176649c9e9ec456b0ebf6991f0f8e47edc33e81fced0b577ee351ce7cf7c5e016bebb7e39aab01189cf0f8fc35f4a55b562f7adcf39c1c
data/NEWS.md CHANGED
@@ -1,3 +1,9 @@
1
+ New for 1.9.0:
2
+
3
+ * Raise error for Qt version greater than 5.5
4
+ * Fix hovering SVG elements
5
+ * Add basic send_keys implementation
6
+
1
7
  New for 1.8.0:
2
8
 
3
9
  * Allow Capybara 2.6
data/README.md CHANGED
@@ -190,15 +190,6 @@ Thank you, [contributors]!
190
190
  [CONTRIBUTING]: CONTRIBUTING.md
191
191
  [contributors]: https://github.com/thoughtbot/capybara-webkit/graphs/contributors
192
192
 
193
- Need Help?
194
- ----------
195
-
196
- We offer 1-on-1 coaching. We can help you install Qt, set up Capybara, get
197
- started writing integration tests, and track down slow or erratic tests. [Get in
198
- touch].
199
-
200
- [Get in touch]: http://coaching.thoughtbot.com/rails/?utm_source=github
201
-
202
193
  License
203
194
  -------
204
195
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
+ gem "mime-types", "< 3.0", :platforms=>[:ruby_19, :jruby_19]
5
6
  gem "capybara", "~> 2.4.0"
6
- gem "mime-types", "< 3.0", platforms: [:ruby_19, :jruby_19]
7
7
 
8
8
  gemspec :path=>"../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
+ gem "mime-types", "< 3.0", :platforms=>[:ruby_19, :jruby_19]
5
6
  gem "capybara", "~> 2.5.0"
6
- gem "mime-types", "< 3.0", platforms: [:ruby_19, :jruby_19]
7
7
 
8
8
  gemspec :path=>"../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "capybara", github: "jnicklas/capybara"
6
- gem "mime-types", "<3.0", platforms: [:ruby_19, :jruby_19]
5
+ gem "mime-types", "< 3.0", :platforms=>[:ruby_19, :jruby_19]
6
+ gem "capybara", :github=>"jnicklas/capybara"
7
7
 
8
8
  gemspec :path=>"../"
@@ -47,6 +47,21 @@ module Capybara::Webkit
47
47
  invoke "set", *[value].flatten
48
48
  end
49
49
 
50
+ def send_keys(*keys)
51
+ invoke("sendKeys", keys.map { |key|
52
+ case key
53
+ when :space
54
+ " "
55
+ when :enter
56
+ "\r"
57
+ when String
58
+ key.to_s
59
+ else
60
+ raise Capybara::NotSupportedByDriverError.new
61
+ end
62
+ }.join)
63
+ end
64
+
50
65
  def select_option
51
66
  invoke "selectOption"
52
67
  end
@@ -1,7 +1,7 @@
1
1
  module Capybara
2
2
  module Driver
3
3
  class Webkit
4
- VERSION = "1.8.0".freeze
4
+ VERSION = "1.9.0".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -1526,6 +1526,7 @@ describe Capybara::Webkit::Driver do
1526
1526
  #hover { max-width: 30em; }
1527
1527
  #hover span { line-height: 1.5; }
1528
1528
  #hover span:hover + .hidden { display: block; }
1529
+ #circle_hover:hover + .hidden { display: block; }
1529
1530
  .hidden { display: none; }
1530
1531
  </style>
1531
1532
  </head>
@@ -1537,6 +1538,10 @@ describe Capybara::Webkit::Driver do
1537
1538
  <span>This really long paragraph has a lot of text and will wrap. This sentence ensures that we have four lines of text.</span>
1538
1539
  <div class="hidden">Text that only shows on hover.</div>
1539
1540
  </div>
1541
+ <svg height="200" width="300">
1542
+ <circle id="circle_hover" cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
1543
+ <text class="hidden" y="110"> Sibling that only shows when circle is hovered over.</text>
1544
+ </svg>
1540
1545
  <form action="/" method="GET">
1541
1546
  <select id="change_select" name="change_select">
1542
1547
  <option value="1" id="option-1" selected="selected">one</option>
@@ -1574,6 +1579,13 @@ describe Capybara::Webkit::Driver do
1574
1579
  driver.find_css("#hover").first.visible_text.should =~ /Text that only shows on hover/
1575
1580
  end
1576
1581
 
1582
+ it "hovers an svg element" do
1583
+ # visible_text does not work for SVG elements. It returns all the text.
1584
+ driver.find_css("text").first.should_not be_visible
1585
+ driver.find_css("#circle_hover").first.hover
1586
+ driver.find_css("text").first.should be_visible
1587
+ end
1588
+
1577
1589
  it "hovers an element off the screen" do
1578
1590
  driver.resize_window(200, 200)
1579
1591
  driver.evaluate_script(<<-JS)
@@ -49,9 +49,11 @@ RSpec.configure do |c|
49
49
 
50
50
  # We can't support outerWidth and outerHeight without a visible window.
51
51
  # We focus the next window instead of failing when closing windows.
52
- # Node #send_keys is not yet implemented.
53
52
  c.filter_run_excluding :full_description => lambda { |description, metadata|
54
- description =~ /Capybara::Session webkit Capybara::Window #(size|resize_to|maximize|close.*no_such_window_error|send_keys)/ || description =~ /Capybara::Session webkit node #send_keys/
53
+ (description !~ /Capybara::Session webkit node #send_keys should send a string of keys to an element/) && (
54
+ description =~ /Capybara::Session webkit Capybara::Window #(size|resize_to|maximize|close.*no_such_window_error|send_keys)/ ||
55
+ description =~ /Capybara::Session webkit node #send_keys/
56
+ )
55
57
  }
56
58
  end
57
59
 
@@ -184,13 +184,20 @@ Capybara = {
184
184
  },
185
185
 
186
186
  clickPosition: function(node) {
187
- var rects = node.getClientRects();
188
- var rect;
187
+ if(node.namespaceURI == 'http://www.w3.org/2000/svg') {
188
+ var rect = node.getBoundingClientRect();
189
189
 
190
- for (var i = 0; i < rects.length; i++) {
191
- rect = rects[i];
192
190
  if (rect.width > 0 && rect.height > 0)
193
191
  return CapybaraInvocation.clickPosition(node, rect.left, rect.top, rect.width, rect.height);
192
+ } else {
193
+ var rects = node.getClientRects();
194
+ var rect;
195
+
196
+ for (var i = 0; i < rects.length; i++) {
197
+ rect = rects[i];
198
+ if (rect.width > 0 && rect.height > 0)
199
+ return CapybaraInvocation.clickPosition(node, rect.left, rect.top, rect.width, rect.height);
200
+ }
194
201
  }
195
202
 
196
203
  var visible = this.isNodeVisible(node);
@@ -269,6 +276,20 @@ Capybara = {
269
276
  return true;
270
277
  },
271
278
 
279
+ sendKeys: function (index, keys) {
280
+ var strindex, length;
281
+
282
+ length = keys.length;
283
+
284
+ if (length) {
285
+ this.focus(index);
286
+ }
287
+
288
+ for (strindex = 0; strindex < length; strindex++) {
289
+ CapybaraInvocation.keypress(keys[strindex]);
290
+ }
291
+ },
292
+
272
293
  set: function (index, value) {
273
294
  var length, maxLength, node, strindex, textTypes, type;
274
295
 
@@ -293,8 +314,9 @@ Capybara = {
293
314
  CapybaraInvocation.keypress(value[strindex]);
294
315
  }
295
316
 
296
- if (value == '')
317
+ if (value === "") {
297
318
  this.trigger(index, "change");
319
+ }
298
320
  }
299
321
  } else if (type === "checkbox" || type === "radio") {
300
322
  if (node.checked != (value === "true")) {
@@ -176,6 +176,9 @@ SOURCES = \
176
176
  RESOURCES = webkit_server.qrc
177
177
  QT += network
178
178
  greaterThan(QT_MAJOR_VERSION, 4) {
179
+ greaterThan(QT_MAJOR_VERSION, 5) | greaterThan(QT_MINOR_VERSION, 5) {
180
+ error(capybara-webkit does not support Qt versions greater than 5.5)
181
+ }
179
182
  QT += webkitwidgets
180
183
  } else {
181
184
  QT += webkit
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: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoughtbot
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-01-22 00:00:00.000000000 Z
16
+ date: 2016-03-30 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: capybara
@@ -400,21 +400,4 @@ rubygems_version: 2.4.5.1
400
400
  signing_key:
401
401
  specification_version: 4
402
402
  summary: Headless Webkit driver for Capybara
403
- test_files:
404
- - spec/browser_spec.rb
405
- - spec/capybara_webkit_builder_spec.rb
406
- - spec/configuration_spec.rb
407
- - spec/connection_spec.rb
408
- - spec/cookie_jar_spec.rb
409
- - spec/driver_rendering_spec.rb
410
- - spec/driver_resize_window_spec.rb
411
- - spec/driver_spec.rb
412
- - spec/errors_spec.rb
413
- - spec/integration/session_spec.rb
414
- - spec/selenium_compatibility_spec.rb
415
- - spec/self_signed_ssl_cert.rb
416
- - spec/spec_helper.rb
417
- - spec/support/app_runner.rb
418
- - spec/support/matchers/include_response.rb
419
- - spec/support/output_writer.rb
420
- has_rdoc:
403
+ test_files: []