@@ -120,12 +120,15 @@ def add_appium_prefix(capabilities)
120
120
w3c_capabilities = ::Selenium ::WebDriver ::Remote ::W3C ::Capabilities . new
121
121
122
122
capabilities = capabilities . __send__ ( :capabilities ) unless capabilities . is_a? ( Hash )
123
+
124
+ warn_if_camel_case ( capabilities )
125
+
123
126
capabilities . each do |name , value |
124
127
next if value . nil?
125
128
next if value . is_a? ( String ) && value . empty?
126
129
127
130
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 } "
129
132
130
133
w3c_capabilities [ w3c_name ] = value
131
134
end
@@ -135,9 +138,21 @@ def add_appium_prefix(capabilities)
135
138
136
139
private
137
140
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 )
139
154
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 ) }
141
156
142
157
snake_cased_capability_names . include? ( capability_name ) ||
143
158
camel_cased_capability_names . include? ( capability_name ) ||
0 commit comments