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