From 9d6153ef0b9288fb351b6a85242621a8d017e299 Mon Sep 17 00:00:00 2001 From: Thomas Walpole Date: Wed, 18 Aug 2021 09:05:34 -0700 Subject: [PATCH] Allow overriding/optimizing `focused` filter in selectors --- lib/capybara/queries/selector_query.rb | 12 ++++++------ lib/capybara/selector.rb | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/capybara/queries/selector_query.rb b/lib/capybara/queries/selector_query.rb index e362fc3c..5c086053 100644 --- a/lib/capybara/queries/selector_query.rb +++ b/lib/capybara/queries/selector_query.rb @@ -373,6 +373,10 @@ module Capybara options.key?(:style) && !custom_keys.include?(:style) end + def use_default_focused_filter? + options.key?(:focused) && !custom_keys.include?(:focused) + end + def use_spatial_filter? options.values_at(*SPATIAL_KEYS).compact.any? end @@ -498,13 +502,9 @@ module Capybara end def matches_focused_filter?(node) - if options.key?(:focused) - node_is_focused = node == node.session.active_element + return true unless use_default_focused_filter? - node_is_focused == options[:focused] - else - true - end + (node == node.session.active_element) == options[:focused] end def need_to_process_classes? diff --git a/lib/capybara/selector.rb b/lib/capybara/selector.rb index 593c779c..4deee63b 100644 --- a/lib/capybara/selector.rb +++ b/lib/capybara/selector.rb @@ -14,7 +14,7 @@ require 'capybara/selector/definition' # * :left_of (Element) - Match elements left of the passed element on the page # * :right_of (Element) - Match elements right of the passed element on the page # * :near (Element) - Match elements near (within 50px) the passed element on the page -# * :focused (Boolean) - Match elements with focus (requires JavaScript) +# * :focused (Boolean) - Match elements with focus (requires driver support) # # ### Built-in Selectors #