Skip to content

Commit d83c612

Browse files
committed
[rb] Support "capabilities" JSON object when creating session
1 parent 530b77e commit d83c612

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

rb/lib/selenium/webdriver/remote/w3c_bridge.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def session_id
113113
def create_session(desired_capabilities)
114114
resp = execute :new_session, {}, {desiredCapabilities: desired_capabilities}
115115
@session_id = resp['sessionId']
116-
return W3CCapabilities.json_create resp['value'] if @session_id
116+
return W3CCapabilities.json_create(resp['capabilities'] || resp['value']) if @session_id
117117

118118
raise Error::WebDriverError, 'no sessionId in returned payload'
119119
end
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# encoding: utf-8
2+
#
3+
# Licensed to the Software Freedom Conservancy (SFC) under one
4+
# or more contributor license agreements. See the NOTICE file
5+
# distributed with this work for additional information
6+
# regarding copyright ownership. The SFC licenses this file
7+
# to you under the Apache License, Version 2.0 (the
8+
# "License"); you may not use this file except in compliance
9+
# with the License. You may obtain a copy of the License at
10+
#
11+
# http://www.apache.org/licenses/LICENSE-2.0
12+
#
13+
# Unless required by applicable law or agreed to in writing,
14+
# software distributed under the License is distributed on an
15+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+
# KIND, either express or implied. See the License for the
17+
# specific language governing permissions and limitations
18+
# under the License.
19+
20+
require File.expand_path('../../spec_helper', __FILE__)
21+
22+
module Selenium
23+
module WebDriver
24+
module Remote
25+
describe W3CBridge do
26+
describe '#create_session' do
27+
it 'supports responses with "value" capabilities' do
28+
http_client = WebDriver::Remote::Http::Default.new
29+
allow(http_client).to receive(:request).and_return('value' => {'sessionId' => true, 'value' => {}})
30+
31+
bridge = W3CBridge.new(http_client: http_client)
32+
expect { bridge.create_session({}) }.not_to raise_error
33+
end
34+
35+
it 'supports responses with "capabilities" capabilities' do
36+
http_client = WebDriver::Remote::Http::Default.new
37+
allow(http_client).to receive(:request).and_return('value' => {'sessionId' => true, 'capabilities' => {}})
38+
39+
bridge = W3CBridge.new(http_client: http_client)
40+
expect { bridge.create_session({}) }.not_to raise_error
41+
end
42+
end
43+
end # W3CBridge
44+
end # Remote
45+
end # WebDriver
46+
end # Selenium

0 commit comments

Comments
 (0)