Skip to content

Commit 45cf118

Browse files
committed
Merge branch 'master' of github.com:appium/ruby_lib_core
2 parents 803cbbb + 31561db commit 45cf118

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file.
33

44
## [Unreleased]
55
### Enhancements
6+
- Print warning messages to use camelCase if capability key names are snake_case
7+
- For W3C adaption for Appium Server
68

79
### Bug fixes
810

lib/appium_lib_core/common/base/bridge.rb

+18-3
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,15 @@ def add_appium_prefix(capabilities)
120120
w3c_capabilities = ::Selenium::WebDriver::Remote::W3C::Capabilities.new
121121

122122
capabilities = capabilities.__send__(:capabilities) unless capabilities.is_a?(Hash)
123+
124+
warn_if_camel_case(capabilities)
125+
123126
capabilities.each do |name, value|
124127
next if value.nil?
125128
next if value.is_a?(String) && value.empty?
126129

127130
capability_name = name.to_s
128-
w3c_name = extension_prefix?(capability_name, w3c_capabilities) ? name : "#{APPIUM_PREFIX}#{capability_name}"
131+
w3c_name = extension_prefix?(capability_name) ? name : "#{APPIUM_PREFIX}#{capability_name}"
129132

130133
w3c_capabilities[w3c_name] = value
131134
end
@@ -135,9 +138,21 @@ def add_appium_prefix(capabilities)
135138

136139
private
137140

138-
def extension_prefix?(capability_name, w3c_capabilities)
141+
def warn_if_camel_case(caps)
142+
warn_caps = caps.collect { |key, _value| key =~ /_([a-z])/ ? key : nil }.compact
143+
return if warn_caps.empty?
144+
145+
warn_message = warn_caps.join(', ')
146+
::Appium::Logger.warn("Please define capability key names: #{warn_message} as camelCase for W3C Appium Server")
147+
end
148+
149+
def camel_case(str)
150+
str.gsub(/_([a-z])/) { Regexp.last_match(1).upcase }
151+
end
152+
153+
def extension_prefix?(capability_name)
139154
snake_cased_capability_names = ::Selenium::WebDriver::Remote::W3C::Capabilities::KNOWN.map(&:to_s)
140-
camel_cased_capability_names = snake_cased_capability_names.map(&w3c_capabilities.method(:camel_case))
155+
camel_cased_capability_names = snake_cased_capability_names.map { |v| camel_case(v) }
141156

142157
snake_cased_capability_names.include?(capability_name) ||
143158
camel_cased_capability_names.include?(capability_name) ||

test/unit/driver_test.rb

+14-2
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,24 @@ def test_with_caps_and_wrong_appium_lib
3939
end
4040
end
4141

42+
def file_exist?(file_path)
43+
count = 0
44+
while !File.exist?(file_path) && count != 5
45+
sleep 0.1
46+
count += 1
47+
end
48+
end
49+
4250
def test_verify_session_id_in_the_export_session_path
43-
assert_equal '1234567890', File.read(@core.export_session_path).strip
51+
file = @core.export_session_path
52+
file_exist? file
53+
assert_equal '1234567890', File.read(file).strip
4454
end
4555

4656
def test_verify_session_from_default_value
47-
assert_equal '1234567890', File.read('/tmp/appium_lib_session').strip
57+
file = '/tmp/appium_lib_session'
58+
file_exist? file
59+
assert_equal '1234567890', File.read(file).strip
4860
end
4961

5062
def test_verify_appium_core_base_capabilities_create_capabilities

0 commit comments

Comments
 (0)