diff --git a/History.md b/History.md index b4d2fa6ae..5ecd7bd4f 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,7 @@ +### Fixed + +* `assert_selector` can accept `Hash` instance as locator [Sean Doyle] + # Version 3.40.0 Release date: 2024-01-26 diff --git a/lib/capybara/node/matchers.rb b/lib/capybara/node/matchers.rb index 9d970fddb..133755027 100644 --- a/lib/capybara/node/matchers.rb +++ b/lib/capybara/node/matchers.rb @@ -892,7 +892,7 @@ def _verify_text(type = nil, expected_text, **query_options) # rubocop:disable S def _set_query_session_options(*query_args) query_args, query_options = query_args.dup, {} # query_options = query_args.pop if query_options.empty? && query_args.last.is_a?(Hash) - query_options = query_args.pop if query_args.last.is_a?(Hash) + query_options = query_args.pop if query_args.last.is_a?(Hash) && query_args.last.keys.none?(String) query_options[:session_options] = session_options [query_args, query_options] end diff --git a/spec/minitest_spec.rb b/spec/minitest_spec.rb index 69dd2d77f..2894c8cc5 100644 --- a/spec/minitest_spec.rb +++ b/spec/minitest_spec.rb @@ -107,6 +107,7 @@ def test_assert_table assert_table('agent_table') assert_no_table('not_on_form') refute_table('not_on_form') + assert_selector(:table_row, 'First Name' => 'Thomas') end def test_assert_all_of_selectors @@ -170,6 +171,6 @@ def test_assert_sibling reporter.start MinitestTest.run reporter, {} reporter.report - expect(output.string).to include('23 runs, 56 assertions, 0 failures, 0 errors, 1 skips') + expect(output.string).to include('23 runs, 57 assertions, 0 failures, 0 errors, 1 skips') end end