@@ -145,6 +145,21 @@ class DriverTest < ActiveSupport::TestCase
145
145
assert_driver_capabilities driver , expected
146
146
end
147
147
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
+
148
163
test "does not define extra capabilities" do
149
164
driver = ActionDispatch ::SystemTesting ::Driver . new ( :selenium , screen_size : [ 1400 , 1400 ] , using : :firefox )
150
165
@@ -203,6 +218,20 @@ class DriverTest < ActiveSupport::TestCase
203
218
def assert_driver_capabilities ( driver , expected_capabilities )
204
219
capabilities = driver . __send__ ( :browser_options ) [ :options ] . as_json
205
220
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
207
236
end
208
237
end
0 commit comments