diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a4e1d..84327b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Add `:menu` and `:menuitem` selector - Add `current:` filter for `:link` and `:link_or_button` selectors +- Removed `focused:` in favour of the "native" capybara focus ## v0.8.2 diff --git a/Gemfile.lock b/Gemfile.lock index e7abbb1..5806072 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ PATH remote: . specs: capybara_accessible_selectors (0.8.2) - capybara (~> 3) + capybara (>= 3.36.0) GEM remote: https://rubygems.org/ diff --git a/README.md b/README.md index c706405..5010f71 100644 --- a/README.md +++ b/README.md @@ -142,20 +142,6 @@ choose "Answer 1", fieldset: "My question" Also see [↓ Locating fields](#locating-fields) -#### `focused` [Boolean] - -Added to all selectors. - -Filters for an element that currently has focus. - -```html - -``` - -```ruby -expect(page).to have_field "My field", focused: true -``` - #### `validation_error` [String] Added to: `field`, `fillable_field`, `datalist_input`, `radio_button`, `checkbox`, `select`, `file_field`, `combo_box` and `rich_text`. diff --git a/capybara_accessible_selectors.gemspec b/capybara_accessible_selectors.gemspec index 3146a17..e41d10e 100644 --- a/capybara_accessible_selectors.gemspec +++ b/capybara_accessible_selectors.gemspec @@ -12,7 +12,7 @@ Gem::Specification.new do |s| s.license = "ISC" s.required_ruby_version = ">= 2.7.0" - s.add_runtime_dependency "capybara", "~> 3" + s.add_runtime_dependency "capybara", ">= 3.36.0" s.add_development_dependency "debug" s.add_development_dependency "puma" diff --git a/lib/capybara_accessible_selectors/filter_set.rb b/lib/capybara_accessible_selectors/filter_set.rb index e5e5396..e802db8 100644 --- a/lib/capybara_accessible_selectors/filter_set.rb +++ b/lib/capybara_accessible_selectors/filter_set.rb @@ -4,23 +4,19 @@ require "capybara_accessible_selectors/filters/current" require "capybara_accessible_selectors/filters/described_by" require "capybara_accessible_selectors/filters/fieldset" -require "capybara_accessible_selectors/filters/focused" require "capybara_accessible_selectors/filters/validation_error" { - button: %i[focused fieldset], - checkbox: %i[focused fieldset described_by validation_error], - css: %i[focused], - datalist_input: %i[focused fieldset described_by validation_error], - element: %i[focused], - field: %i[focused fieldset described_by validation_error], - file_field: %i[focused fieldset described_by validation_error], - fillable_field: %i[focused fieldset described_by validation_error], - link: %i[current focused fieldset], - link_or_button: %i[current focused fieldset], - radio_button: %i[focused fieldset described_by validation_error], - select: %i[focused fieldset described_by validation_error], - xpath: %i[focused] + button: %i[fieldset], + checkbox: %i[fieldset described_by validation_error], + datalist_input: %i[fieldset described_by validation_error], + field: %i[fieldset described_by validation_error], + file_field: %i[fieldset described_by validation_error], + fillable_field: %i[fieldset described_by validation_error], + link: %i[current fieldset], + link_or_button: %i[current fieldset], + radio_button: %i[fieldset described_by validation_error], + select: %i[fieldset described_by validation_error] }.each do |selector, filters| Capybara.modify_selector(selector) do filter_set(:capybara_accessible_selectors, filters) diff --git a/lib/capybara_accessible_selectors/filters/focused.rb b/lib/capybara_accessible_selectors/filters/focused.rb deleted file mode 100644 index 1bc35c4..0000000 --- a/lib/capybara_accessible_selectors/filters/focused.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -Capybara::Selector::FilterSet[:capybara_accessible_selectors].instance_eval do - node_filter(:focused, :boolean) do |node, value| - if value - Capybara.evaluate_script("document.activeElement === arguments[0]", node) - else - Capybara.evaluate_script("document.activeElement !== arguments[0]", node) - end - end - - describe(:node_filters) do |focused: nil, **| - next " that is focused" if focused == true - next " that is not focused" if focused == false - end -end diff --git a/lib/capybara_accessible_selectors/selectors/combo_box.rb b/lib/capybara_accessible_selectors/selectors/combo_box.rb index ac89aac..6fd1480 100644 --- a/lib/capybara_accessible_selectors/selectors/combo_box.rb +++ b/lib/capybara_accessible_selectors/selectors/combo_box.rb @@ -14,7 +14,7 @@ end filter_set(:_field, %i[disabled name placeholder valid]) - filter_set(:capybara_accessible_selectors, %i[focused fieldset described_by validation_error]) + filter_set(:capybara_accessible_selectors, %i[fieldset described_by validation_error]) # with a value node_filter(:with) do |node, with| diff --git a/lib/capybara_accessible_selectors/selectors/disclosure.rb b/lib/capybara_accessible_selectors/selectors/disclosure.rb index a224e12..889643d 100644 --- a/lib/capybara_accessible_selectors/selectors/disclosure.rb +++ b/lib/capybara_accessible_selectors/selectors/disclosure.rb @@ -37,8 +37,6 @@ def aria_or_real_button ].reduce(:&)] + XPath.descendant(:summary)[XPath.string.n.is(name.to_s)] end - filter_set(:capybara_accessible_selectors, %i[focused]) - expression_filter(:expanded, :boolean) do |xpath, expanded| open = expanded ? XPath.parent.attr(:open) : !XPath.parent.attr(:open) xpath[(XPath.attr(:"aria-expanded") == expanded.to_s) | open] diff --git a/lib/capybara_accessible_selectors/selectors/modal.rb b/lib/capybara_accessible_selectors/selectors/modal.rb index d5d92fb..f098d32 100644 --- a/lib/capybara_accessible_selectors/selectors/modal.rb +++ b/lib/capybara_accessible_selectors/selectors/modal.rb @@ -8,8 +8,6 @@ ].reduce(:&)] end - filter_set(:capybara_accessible_selectors, %i[focused]) - locator_filter do |node, locator, exact:, **| next true if locator.nil? diff --git a/lib/capybara_accessible_selectors/selectors/rich_text.rb b/lib/capybara_accessible_selectors/selectors/rich_text.rb index fc0e450..876fbbc 100644 --- a/lib/capybara_accessible_selectors/selectors/rich_text.rb +++ b/lib/capybara_accessible_selectors/selectors/rich_text.rb @@ -8,7 +8,7 @@ ].reduce(:&)] + XPath.descendant(:iframe)[XPath.attr(:title).is(locator.to_s)] end - filter_set(:capybara_accessible_selectors, %i[focused fieldset described_by validation_error]) + filter_set(:capybara_accessible_selectors, %i[fieldset described_by validation_error]) locator_filter do |node, locator, exact:, **| next true if locator.nil?