Skip to content

Commit 8653b8a

Browse files
committed
Make assert_driver_capabilities flexible with unexpected keys
``` Failure: DriverTest#test_assert_driver_capabilities_ignores_unexpected_options [test/dispatch/system_testing/driver_test.rb:159]: --- expected +++ actual @@ -1 +1 @@ -{"goog:chromeOptions"=>{"args"=>["--disable-search-engine-choice-screen"]}, "browserName"=>"chrome"} +{"goog:chromeOptions"=>{"args"=>["--disable-search-engine-choice-screen"], "binary"=>"/usr/bin/chromium-browser"}, "browserName"=>"chrome"} ``` For example, with failing assertion: ``` Failure: DriverTest#test_assert_driver_capabilities_ignores_unexpected_options [test/dispatch/system_testing/driver_test.rb:160]: Expected goog:chromeOptions[binary] to be /usr/bin/chromium-browsers, got /usr/bin/chromium-browser. Expected: "/usr/bin/chromium-browsers" Actual: "/usr/bin/chromium-browser" ```
1 parent f575fca commit 8653b8a

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
@@ -144,6 +144,21 @@ class DriverTest < ActiveSupport::TestCase
144144
assert_driver_capabilities driver, expected
145145
end
146146

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

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

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

0 commit comments

Comments
 (0)