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 +4 -4
- data/lib/capybara/playwright/browser.rb +3 -2
- data/lib/capybara/playwright/node.rb +22 -12
- data/lib/capybara/playwright/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 04cd34c80f1466ffb40a7d515384d4fa29d2378bb5f51ce500432166f4c4e904
|
|
4
|
+
data.tar.gz: 51ccfc4802153ef189db9998d64b8b5f8b63f749556b25e5483920a35c998ae2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
426
|
-
|
|
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 ||=
|
|
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
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
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
|
-
|
|
1219
|
+
assert_element_not_stale {
|
|
1220
|
+
!@element.editable?
|
|
1221
|
+
}
|
|
1216
1222
|
end
|
|
1217
1223
|
|
|
1218
1224
|
def multiple?
|
|
1219
|
-
|
|
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
|
-
|
|
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)
|