Skip to content

Commit d1fea34

Browse files
authored
Merge pull request rails#54744 from zzak/re-54740
Make assert_driver_capabilities flexible with unexpected keys
2 parents 3c1ab14 + 8653b8a commit d1fea34

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

actionpack/test/dispatch/system_testing/driver_test.rb

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,21 @@ class DriverTest < ActiveSupport::TestCase
145145
assert_driver_capabilities driver, expected
146146
end
147147

148+
test "assert_driver_capabilities ignores unexpected options" do
149+
driver = ActionDispatch::SystemTesting::Driver.new(:selenium, screen_size: [1400, 1400], using: :chrome) do |option|
150+
option.binary = "/usr/bin/chromium-browser"
151+
end
152+
driver.use
153+
154+
expected = {
155+
"goog:chromeOptions" => {
156+
"args" => ["--disable-search-engine-choice-screen"],
157+
},
158+
"browserName" => "chrome"
159+
}
160+
assert_driver_capabilities driver, expected
161+
end
162+
148163
test "does not define extra capabilities" do
149164
driver = ActionDispatch::SystemTesting::Driver.new(:selenium, screen_size: [1400, 1400], using: :firefox)
150165

@@ -203,6 +218,20 @@ class DriverTest < ActiveSupport::TestCase
203218
def assert_driver_capabilities(driver, expected_capabilities)
204219
capabilities = driver.__send__(:browser_options)[:options].as_json
205220

206-
assert_equal expected_capabilities, capabilities.slice(*expected_capabilities.keys)
221+
expected_capabilities.each do |key, expected_value|
222+
actual_value = capabilities[key]
223+
224+
case expected_value
225+
when Array
226+
expected_value.each { |item| assert_includes actual_value, item, "Expected #{key} to include #{item}" }
227+
when Hash
228+
expected_value.each do |sub_key, sub_value|
229+
real_value = actual_value&.dig(sub_key)
230+
assert_equal sub_value, real_value, "Expected #{key}[#{sub_key}] to be #{sub_value}, got #{real_value}"
231+
end
232+
else
233+
assert_equal expected_value, actual_value, "Expected #{key} to be #{expected_value}, got #{actual_value}"
234+
end
235+
end
207236
end
208237
end

0 commit comments

Comments
 (0)