Skip to content

Commit

Permalink
Merge branch 'master' of github.com:appium/ruby_lib_core
Browse files Browse the repository at this point in the history
  • Loading branch information
KazuCocoa committed Jan 23, 2018
2 parents 803cbbb + 31561db commit 45cf118
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 5 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file.

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

### Bug fixes

Expand Down
21 changes: 18 additions & 3 deletions lib/appium_lib_core/common/base/bridge.rb
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,15 @@ def add_appium_prefix(capabilities)
w3c_capabilities = ::Selenium::WebDriver::Remote::W3C::Capabilities.new

capabilities = capabilities.__send__(:capabilities) unless capabilities.is_a?(Hash)

warn_if_camel_case(capabilities)

capabilities.each do |name, value|
next if value.nil?
next if value.is_a?(String) && value.empty?

capability_name = name.to_s
w3c_name = extension_prefix?(capability_name, w3c_capabilities) ? name : "#{APPIUM_PREFIX}#{capability_name}"
w3c_name = extension_prefix?(capability_name) ? name : "#{APPIUM_PREFIX}#{capability_name}"

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

private

def extension_prefix?(capability_name, w3c_capabilities)
def warn_if_camel_case(caps)
warn_caps = caps.collect { |key, _value| key =~ /_([a-z])/ ? key : nil }.compact
return if warn_caps.empty?

warn_message = warn_caps.join(', ')
::Appium::Logger.warn("Please define capability key names: #{warn_message} as camelCase for W3C Appium Server")
end

def camel_case(str)
str.gsub(/_([a-z])/) { Regexp.last_match(1).upcase }
end

def extension_prefix?(capability_name)
snake_cased_capability_names = ::Selenium::WebDriver::Remote::W3C::Capabilities::KNOWN.map(&:to_s)
camel_cased_capability_names = snake_cased_capability_names.map(&w3c_capabilities.method(:camel_case))
camel_cased_capability_names = snake_cased_capability_names.map { |v| camel_case(v) }

snake_cased_capability_names.include?(capability_name) ||
camel_cased_capability_names.include?(capability_name) ||
Expand Down
16 changes: 14 additions & 2 deletions test/unit/driver_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,24 @@ def test_with_caps_and_wrong_appium_lib
end
end

def file_exist?(file_path)
count = 0
while !File.exist?(file_path) && count != 5
sleep 0.1
count += 1
end
end

def test_verify_session_id_in_the_export_session_path
assert_equal '1234567890', File.read(@core.export_session_path).strip
file = @core.export_session_path
file_exist? file
assert_equal '1234567890', File.read(file).strip
end

def test_verify_session_from_default_value
assert_equal '1234567890', File.read('/tmp/appium_lib_session').strip
file = '/tmp/appium_lib_session'
file_exist? file
assert_equal '1234567890', File.read(file).strip
end

def test_verify_appium_core_base_capabilities_create_capabilities
Expand Down

0 comments on commit 45cf118

Please sign in to comment.