capybara-playwright-driver 0.5.12 → 0.5.13

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
  SHA256:
3
- metadata.gz: 4a90dd1edbae8b79e2f4d7eac72dcc8014e8d9e491730cbffa20be906c74ee5c
4
- data.tar.gz: 729834c2bd8e56d523230e043f3d148777a89e2870da1624294d109eadd9434a
3
+ metadata.gz: 04cd34c80f1466ffb40a7d515384d4fa29d2378bb5f51ce500432166f4c4e904
4
+ data.tar.gz: 51ccfc4802153ef189db9998d64b8b5f8b63f749556b25e5483920a35c998ae2
5
5
  SHA512:
6
- metadata.gz: 9b674a26ae213904eacec537a259f9111c5c4686d2317691bfe6bd965ad9fe4d57bad3dfb701cb2f456676f7a9d50ed94b50fb94723f83055b1bd79cb2c3d95c
7
- data.tar.gz: 350f3c693c186594ccac2aa32e05cfd762f7baa069e01ebd6df8d20c744a3e72dfdfdd03a29728fcce77b5b173bd3bc6a2efcaedb55ca66fde43b8d55340bd9b
6
+ metadata.gz: 298e9ab4a179b0d645f77b44befe83e6373f1adc4866b7b6e951200ab4671866d6ac10c9b6264b5831fd7770f4d920d197c0513c3ef89e3984f3576cce7265b8
7
+ data.tar.gz: a92fe593f5053b052b09d06c576743b2eb364b25a9650ae8c133185c3ac26696147d061a1826ae82c6437e07ad8f7aa79302187e75e6c1e658244afb00cfc24f
@@ -422,8 +422,9 @@ module Capybara
422
422
  when ::Playwright::ElementHandle
423
423
  Node.new(@driver, @internal_logger, @playwright_page, arg)
424
424
  when ::Playwright::JSHandle
425
- obj_type, is_array = arg.evaluate('obj => [typeof obj, Array.isArray(obj)]')
426
- if obj_type == 'object'
425
+ # typeof null is 'object', so check null separately and let json_value return nil.
426
+ obj_type, is_array, is_null = arg.evaluate('obj => [typeof obj, Array.isArray(obj), obj === null]')
427
+ if obj_type == 'object' && !is_null
427
428
  if is_array
428
429
  # Firefox often include 'toJSON' into properties.
429
430
  # https://github.com/microsoft/playwright/issues/7015
@@ -1144,7 +1144,9 @@ module Capybara
1144
1144
  end
1145
1145
 
1146
1146
  def tag_name
1147
- @tag_name ||= @element.evaluate('e => e.tagName.toLowerCase()')
1147
+ @tag_name ||= assert_element_not_stale {
1148
+ @element.evaluate('e => e.tagName.toLowerCase()')
1149
+ }
1148
1150
  end
1149
1151
 
1150
1152
  def visible?
@@ -1200,23 +1202,29 @@ module Capybara
1200
1202
  end
1201
1203
 
1202
1204
  def disabled?
1203
- @element.evaluate(<<~JAVASCRIPT)
1204
- function(el) {
1205
- const xpath = 'parent::optgroup[@disabled] | \
1206
- ancestor::select[@disabled] | \
1207
- parent::fieldset[@disabled] | \
1208
- ancestor::*[not(self::legend) or preceding-sibling::legend][parent::fieldset[@disabled]]';
1209
- return el.disabled || document.evaluate(xpath, el, null, XPathResult.BOOLEAN_TYPE, null).booleanValue
1205
+ assert_element_not_stale {
1206
+ @element.evaluate(<<~JAVASCRIPT)
1207
+ function(el) {
1208
+ const xpath = 'parent::optgroup[@disabled] | \
1209
+ ancestor::select[@disabled] | \
1210
+ parent::fieldset[@disabled] | \
1211
+ ancestor::*[not(self::legend) or preceding-sibling::legend][parent::fieldset[@disabled]]';
1212
+ return el.disabled || document.evaluate(xpath, el, null, XPathResult.BOOLEAN_TYPE, null).booleanValue
1213
+ }
1214
+ JAVASCRIPT
1210
1215
  }
1211
- JAVASCRIPT
1212
1216
  end
1213
1217
 
1214
1218
  def readonly?
1215
- !@element.editable?
1219
+ assert_element_not_stale {
1220
+ !@element.editable?
1221
+ }
1216
1222
  end
1217
1223
 
1218
1224
  def multiple?
1219
- @element.evaluate('el => el.multiple')
1225
+ assert_element_not_stale {
1226
+ @element.evaluate('el => el.multiple')
1227
+ }
1220
1228
  end
1221
1229
 
1222
1230
  def rect
@@ -1290,7 +1298,9 @@ module Capybara
1290
1298
  def ==(other)
1291
1299
  return false unless other.is_a?(Node)
1292
1300
 
1293
- @element.evaluate('(self, other) => self == other', arg: other.element)
1301
+ assert_element_not_stale {
1302
+ @element.evaluate('(self, other) => self == other', arg: other.element)
1303
+ }
1294
1304
  end
1295
1305
 
1296
1306
  def find_xpath(query, **options)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Capybara
4
4
  module Playwright
5
- VERSION = '0.5.12'
5
+ VERSION = '0.5.13'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-playwright-driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki