teamcapybara--capybara/lib/capybara/selector/definition/fieldset.rb

15 lines
659 B
Ruby

# frozen_string_literal: true
Capybara.add_selector(:fieldset, locator_type: [String, Symbol]) do
xpath do |locator, legend: nil, **|
locator_matchers = (XPath.attr(:id) == locator.to_s) | XPath.child(:legend)[XPath.string.n.is(locator.to_s)]
locator_matchers |= XPath.attr(test_id) == locator.to_s if test_id
xpath = XPath.descendant(:fieldset)[locator && locator_matchers]
xpath = xpath[XPath.child(:legend)[XPath.string.n.is(legend)]] if legend
xpath
end
node_filter(:disabled, :boolean) { |node, value| !(value ^ node.disabled?) }
expression_filter(:disabled) { |xpath, val| val ? xpath : xpath[~XPath.attr(:disabled)] }
end