Skip to content

Commit f5989bf

Browse files
committed
Use alwaysMatch instead of firstMatch by default
Some remotes don't implement firstMatch logic and would prefer to use alwaysMatch.
1 parent b1fd99d commit f5989bf

File tree

8 files changed

+203
-203
lines changed

8 files changed

+203
-203
lines changed

rb/lib/selenium/webdriver/remote/bridge.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ def element_id_from(id)
603603
end
604604

605605
def prepare_capabilities_payload(capabilities)
606-
capabilities = {firstMatch: [capabilities]} if !capabilities['alwaysMatch'] && !capabilities['firstMatch']
606+
capabilities = {alwaysMatch: capabilities} if !capabilities['alwaysMatch'] && !capabilities['firstMatch']
607607
{capabilities: capabilities}
608608
end
609609

rb/spec/unit/selenium/webdriver/chrome/driver_spec.rb

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ module Chrome
3232
end
3333

3434
def expect_request(body: nil, endpoint: nil)
35-
body = (body || {capabilities: {firstMatch: [browserName: "chrome"]}}).to_json
35+
body = (body || {capabilities: {alwaysMatch: {browserName: "chrome"}}}).to_json
3636
endpoint ||= "#{service_manager.uri}/session"
3737
stub_request(:post, endpoint).with(body: body).to_return(valid_response)
3838
end
@@ -49,7 +49,7 @@ def expect_request(body: nil, endpoint: nil)
4949

5050
context 'with :desired capabilities' do
5151
it 'accepts value as a Symbol' do
52-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome"]}})
52+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome"}}})
5353

5454
expect {
5555
expect { Driver.new(desired_capabilities: :chrome) }.to have_deprecated(:desired_capabilities)
@@ -58,7 +58,7 @@ def expect_request(body: nil, endpoint: nil)
5858

5959
it 'accepts Capabilities.chrome' do
6060
capabilities = Remote::Capabilities.chrome(invalid: 'foobar')
61-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
61+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
6262

6363
expect {
6464
expect { Driver.new(desired_capabilities: capabilities) }.to have_deprecated(:desired_capabilities)
@@ -67,7 +67,7 @@ def expect_request(body: nil, endpoint: nil)
6767

6868
it 'accepts constructed Capabilities with Snake Case as Symbols' do
6969
capabilities = Remote::Capabilities.new(browser_name: 'chrome', invalid: 'foobar')
70-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
70+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
7171

7272
expect {
7373
expect { Driver.new(desired_capabilities: capabilities) }.to have_deprecated(:desired_capabilities)
@@ -76,7 +76,7 @@ def expect_request(body: nil, endpoint: nil)
7676

7777
it 'accepts constructed Capabilities with Camel Case as Symbols' do
7878
capabilities = Remote::Capabilities.new(browserName: 'chrome', invalid: 'foobar')
79-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
79+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
8080

8181
expect {
8282
expect { Driver.new(desired_capabilities: capabilities) }.to have_deprecated(:desired_capabilities)
@@ -85,7 +85,7 @@ def expect_request(body: nil, endpoint: nil)
8585

8686
it 'accepts constructed Capabilities with Camel Case as Strings' do
8787
capabilities = Remote::Capabilities.new('browserName' => 'chrome', 'invalid' => 'foobar')
88-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
88+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
8989

9090
expect {
9191
expect { Driver.new(desired_capabilities: capabilities) }.to have_deprecated(:desired_capabilities)
@@ -94,7 +94,7 @@ def expect_request(body: nil, endpoint: nil)
9494

9595
it 'accepts Hash with Camel Case keys as Symbols' do
9696
capabilities = {browserName: 'chrome', invalid: 'foobar'}
97-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
97+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
9898

9999
expect {
100100
expect { Driver.new(desired_capabilities: capabilities) }.to have_deprecated(:desired_capabilities)
@@ -103,7 +103,7 @@ def expect_request(body: nil, endpoint: nil)
103103

104104
it 'accepts Hash with Camel Case keys as Strings' do
105105
capabilities = {"browserName" => 'chrome', "invalid" => 'foobar'}
106-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
106+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
107107

108108
expect {
109109
expect { Driver.new(desired_capabilities: capabilities) }.to have_deprecated(:desired_capabilities)
@@ -113,7 +113,7 @@ def expect_request(body: nil, endpoint: nil)
113113

114114
it 'accepts provided Options as sole parameter' do
115115
opts = {invalid: 'foobar', args: ['-f']}
116-
expect_request(body: {capabilities: {firstMatch: ["browserName": "chrome", "goog:chromeOptions": opts]}})
116+
expect_request(body: {capabilities: {alwaysMatch: {"browserName": "chrome", "goog:chromeOptions": opts}}})
117117

118118
expect {
119119
expect { Driver.new(options: Options.new(**opts)) }.to have_deprecated(:browser_options)
@@ -123,9 +123,9 @@ def expect_request(body: nil, endpoint: nil)
123123
it 'accepts combination of Options and Capabilities' do
124124
caps = Remote::Capabilities.chrome(invalid: 'foobar')
125125
browser_opts = {args: ['-f']}
126-
expect_request(body: {capabilities: {firstMatch: ["browserName": "chrome",
127-
"invalid": "foobar",
128-
"goog:chromeOptions": browser_opts]}})
126+
expect_request(body: {capabilities: {alwaysMatch: {"browserName": "chrome",
127+
"invalid": "foobar",
128+
"goog:chromeOptions": browser_opts}}})
129129

130130
expect {
131131
expect {
@@ -141,41 +141,41 @@ def expect_request(body: nil, endpoint: nil)
141141

142142
context 'with :capabilities' do
143143
it 'accepts value as a Symbol' do
144-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome"]}})
144+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome"}}})
145145
expect { Driver.new(capabilities: :chrome) }.not_to raise_exception
146146
end
147147

148148
it 'accepts Capabilities.chrome' do
149149
capabilities = Remote::Capabilities.chrome(invalid: 'foobar')
150-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
150+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
151151

152152
expect { Driver.new(capabilities: capabilities) }.not_to raise_exception
153153
end
154154

155155
it 'accepts constructed Capabilities with Snake Case as Symbols' do
156156
capabilities = Remote::Capabilities.new(browser_name: 'chrome', invalid: 'foobar')
157-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
157+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
158158

159159
expect { Driver.new(capabilities: capabilities) }.not_to raise_exception
160160
end
161161

162162
it 'accepts constructed Capabilities with Camel Case as Symbols' do
163163
capabilities = Remote::Capabilities.new(browserName: 'chrome', invalid: 'foobar')
164-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
164+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
165165

166166
expect { Driver.new(capabilities: capabilities) }.not_to raise_exception
167167
end
168168

169169
it 'accepts constructed Capabilities with Camel Case as Strings' do
170170
capabilities = Remote::Capabilities.new('browserName' => 'chrome', 'invalid' => 'foobar')
171-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
171+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
172172

173173
expect { Driver.new(capabilities: capabilities) }.not_to raise_exception
174174
end
175175

176176
it 'accepts Hash with Camel Case keys as Symbols but is deprecated' do
177177
capabilities = {browserName: 'chrome', invalid: 'foobar'}
178-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
178+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
179179

180180
expect {
181181
expect { Driver.new(capabilities: capabilities) }.to have_deprecated(:capabilities_hash)
@@ -184,7 +184,7 @@ def expect_request(body: nil, endpoint: nil)
184184

185185
it 'accepts Hash with Camel Case keys as Strings but is deprecated' do
186186
capabilities = {"browserName" => 'chrome', "invalid" => 'foobar'}
187-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
187+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
188188

189189
expect {
190190
expect { Driver.new(capabilities: capabilities) }.to have_deprecated(:capabilities_hash)
@@ -202,8 +202,8 @@ def as_json(*)
202202

203203
it 'with Options instance' do
204204
options = Options.new(args: ['-f'])
205-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome",
206-
'goog:chromeOptions': {'args': ['-f']}]}})
205+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome",
206+
'goog:chromeOptions': {'args': ['-f']}}}})
207207

208208
expect { Driver.new(capabilities: [options]) }.not_to raise_exception
209209
end
@@ -214,32 +214,32 @@ def as_json(*)
214214
options = Options.new(profile: profile)
215215

216216
expect_request(body: {capabilities:
217-
{firstMatch: [browserName: "chrome",
218-
'goog:chromeOptions': {"args": ["--user-data-dir=PROF_DIR"]}]}})
217+
{alwaysMatch: {browserName: "chrome",
218+
'goog:chromeOptions': {"args": ["--user-data-dir=PROF_DIR"]}}}})
219219

220220
expect { Driver.new(capabilities: [options]) }.not_to raise_exception
221221
end
222222

223223
it 'with Capabilities instance' do
224224
capabilities = Remote::Capabilities.new(browser_name: 'chrome', invalid: 'foobar')
225-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar']}})
225+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar'}}})
226226

227227
expect { Driver.new(capabilities: [capabilities]) }.not_to raise_exception
228228
end
229229

230230
it 'with Options instance and an instance of a custom object responding to #as_json' do
231-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome",
232-
'goog:chromeOptions': {},
233-
'company:key': 'value']}})
231+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome",
232+
'goog:chromeOptions': {},
233+
'company:key': 'value'}}})
234234
expect { Driver.new(capabilities: [Options.new, as_json_object.new]) }.not_to raise_exception
235235
end
236236

237237
it 'with Options instance, Capabilities instance and instance of a custom object responding to #as_json' do
238238
capabilities = Remote::Capabilities.new(browser_name: 'chrome', invalid: 'foobar')
239239
options = Options.new(args: ['-f'])
240-
expect_request(body: {capabilities: {firstMatch: [browserName: "chrome", invalid: 'foobar',
241-
'goog:chromeOptions': {'args': ['-f']},
242-
'company:key': 'value']}})
240+
expect_request(body: {capabilities: {alwaysMatch: {browserName: "chrome", invalid: 'foobar',
241+
'goog:chromeOptions': {'args': ['-f']},
242+
'company:key': 'value'}}})
243243

244244
expect { Driver.new(capabilities: [capabilities, options, as_json_object.new]) }.not_to raise_exception
245245
end

0 commit comments

Comments
 (0)