Skip to content

Commit 54a8979

Browse files
authored
add android tests for capabilities (#477)
* add android tests for capabilities * add iOS tests for capabilities * add document for self.init_caps_for_appium
1 parent 5ba85ec commit 54a8979

File tree

5 files changed

+97
-21
lines changed

5 files changed

+97
-21
lines changed

android_tests/appium.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ deviceName = "Nexus 7"
44
app = "./api.apk"
55
appPackage = "io.appium.android.apis"
66
appActivity = ".ApiDemos"
7+
some_capability = "some_capability"
78

89
[appium_lib]
910
sauce_username = ""

android_tests/lib/android/specs/driver.rb

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,36 @@ def sauce?
3434
apk_name.must_equal 'api.apk'
3535
end
3636

37-
# Only used for Sauce Labs
37+
t 'verify Appium::Driver::Capabilities.init_caps_for_appium' do
38+
expected_app = File.absolute_path('api.apk')
39+
caps = ::Appium::Driver::Capabilities.init_caps_for_appium(platformName: 'Android',
40+
app: expected_app,
41+
appPackage: 'io.appium.android.apis',
42+
appActivity: '.ApiDemos',
43+
deviceName: 'Nexus 7',
44+
some_capability: 'some_capability')
45+
caps_with_json = JSON.parse(caps.to_json)
46+
caps_with_json['platformName'].must_equal 'Android'
47+
caps_with_json['app'].must_equal expected_app
48+
caps_with_json['appPackage'].must_equal 'io.appium.android.apis'
49+
caps_with_json['appActivity'].must_equal '.ApiDemos'
50+
caps_with_json['deviceName'].must_equal 'Nexus 7'
51+
caps_with_json['someCapability'].must_equal 'some_capability'
52+
53+
caps[:platformName].must_equal 'Android'
54+
caps[:app].must_equal expected_app
55+
caps[:appPackage].must_equal 'io.appium.android.apis'
56+
caps[:appActivity].must_equal '.ApiDemos'
57+
caps[:deviceName].must_equal 'Nexus 7'
58+
caps[:some_capability].must_equal 'some_capability'
59+
end
60+
3861
t 'verify all attributes' do
3962
actual = driver_attributes
4063
caps_app_for_teardown = actual[:caps][:app]
4164
expected_app = File.absolute_path('api.apk')
42-
expected_caps = ::Appium::Driver::Capabilities.init_caps_for_appium(platformName: 'Android',
43-
app: expected_app,
44-
appPackage: 'io.appium.android.apis',
45-
appActivity: '.ApiDemos',
46-
deviceName: 'Nexus 7')
47-
expected = { caps: expected_caps,
48-
automationName: nil,
65+
66+
expected = { automation_name: nil,
4967
custom_url: false,
5068
export_session: false,
5169
default_wait: 1,
@@ -58,7 +76,26 @@ def sauce?
5876
wait_timeout: 30, # default
5977
wait_interval: 0.5 } # default
6078

61-
if actual != expected
79+
# actual[:caps].to_json send to Appium server
80+
caps_with_json = JSON.parse(actual[:caps].to_json)
81+
caps_with_json['platformName'].must_equal 'android'
82+
caps_with_json['app'].must_equal expected_app
83+
caps_with_json['appPackage'].must_equal 'io.appium.android.apis'
84+
caps_with_json['appActivity'].must_equal '.ApiDemos'
85+
caps_with_json['deviceName'].must_equal 'Nexus 7'
86+
caps_with_json['someCapability'].must_equal 'some_capability'
87+
88+
actual[:caps][:platformName].must_equal 'android'
89+
actual[:caps][:app].must_equal expected_app
90+
actual[:caps][:appPackage].must_equal 'io.appium.android.apis'
91+
actual[:caps][:appActivity].must_equal '.ApiDemos'
92+
actual[:caps][:deviceName].must_equal 'Nexus 7'
93+
actual[:caps][:some_capability].must_equal 'some_capability'
94+
95+
dup_actual = actual.dup
96+
dup_actual.delete(:caps)
97+
98+
if dup_actual != expected
6299
diff = HashDiff.diff expected, actual
63100
diff = "diff (expected, actual):\n#{diff}"
64101

@@ -69,10 +106,6 @@ def sauce?
69106
message = "\n\nactual:\n\n: #{actual.ai}expected:\n\n#{expected.ai}\n\n#{diff}"
70107
raise message
71108
end
72-
73-
actual_selenium_caps = actual[:caps][:platformName]
74-
actual_selenium_caps.must_equal 'Android'
75-
actual[:caps][:app] = caps_app_for_teardown
76109
end
77110

78111
t 'default timeout for http client' do

ios_tests/appium.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ platformVersion = "10.2"
44
deviceName ="iPhone Simulator"
55
automationName = 'XCUITest'
66
app = "./UICatalog.app"
7+
some_capability = "some_capability"
78

89
[appium_lib]
910
sauce_username = ""

ios_tests/lib/ios/specs/driver.rb

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,37 @@ def sauce?
3030
assert_equal expected, actual
3131
end
3232

33+
t 'verify Appium::Driver::Capabilities.init_caps_for_appium' do
34+
expected_app = File.absolute_path('UICatalog.app')
35+
caps = ::Appium::Driver::Capabilities.init_caps_for_appium(platformName: 'ios',
36+
platformVersion: '10.2',
37+
automationName: 'XCUITest',
38+
deviceName: 'iPhone Simulator',
39+
app: expected_app,
40+
some_capability: 'some_capability')
41+
caps_with_json = JSON.parse(caps.to_json)
42+
caps_with_json['platformName'].must_equal 'ios'
43+
caps_with_json['platformVersion'].must_equal '10.2'
44+
caps_with_json['app'].must_equal expected_app
45+
caps_with_json['automationName'].must_equal 'XCUITest'
46+
caps_with_json['deviceName'].must_equal 'iPhone Simulator'
47+
caps_with_json['someCapability'].must_equal 'some_capability'
48+
49+
caps[:platformName].must_equal 'ios'
50+
caps[:platformVersion].must_equal '10.2'
51+
caps[:app].must_equal expected_app
52+
caps[:automationName].must_equal 'XCUITest'
53+
caps[:deviceName].must_equal 'iPhone Simulator'
54+
caps[:some_capability].must_equal 'some_capability'
55+
end
56+
3357
describe 'Appium::Driver attributes' do
3458
t 'verify all attributes' do
3559
actual = driver_attributes
3660
caps_app_for_teardown = actual[:caps][:app]
3761
expected_app = File.absolute_path('UICatalog.app')
38-
expected_caps = ::Appium::Driver::Capabilities.init_caps_for_appium(platformName: 'ios',
39-
platformVersion: '10.1',
40-
automationName: 'XCUITest',
41-
deviceName: 'iPhone Simulator',
42-
app: expected_app)
43-
expected = { caps: expected_caps,
44-
automation_name: 'XCUITest',
62+
63+
expected = { automation_name: 'XCUITest',
4564
custom_url: false,
4665
export_session: false,
4766
default_wait: 30,
@@ -54,7 +73,26 @@ def sauce?
5473
wait_timeout: 20, # defined in appium.txt
5574
wait_interval: 1 } # defined in appium.txt
5675

57-
if actual != expected
76+
# actual[:caps].to_json send to Appium server
77+
caps_with_json = JSON.parse(actual[:caps].to_json)
78+
caps_with_json['platformName'].must_equal 'ios'
79+
caps_with_json['platformVersion'].must_equal '10.2'
80+
caps_with_json['app'].must_equal expected_app
81+
caps_with_json['automationName'].must_equal 'XCUITest'
82+
caps_with_json['deviceName'].must_equal 'iPhone Simulator'
83+
caps_with_json['someCapability'].must_equal 'some_capability'
84+
85+
actual[:caps][:platformName].must_equal 'ios'
86+
actual[:caps][:platformVersion].must_equal '10.2'
87+
actual[:caps][:app].must_equal expected_app
88+
actual[:caps][:automationName].must_equal 'XCUITest'
89+
actual[:caps][:deviceName].must_equal 'iPhone Simulator'
90+
actual[:caps][:some_capability].must_equal 'some_capability'
91+
92+
dup_actual = actual.dup
93+
dup_actual.delete(:caps)
94+
95+
if dup_actual != expected
5896
diff = HashDiff.diff expected, actual
5997
diff = "diff (expected, actual):\n#{diff}"
6098

lib/appium_lib/driver.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,9 @@ module Capabilities
252252
# except for browser_name, default capability is equal to ::Selenium::WebDriver::Remote::Capabilities.firefox
253253
# Because Selenium::WebDriver::Remote::Bridge uses Capabilities.firefox by default
254254
# https://github.com/SeleniumHQ/selenium/blob/selenium-3.0.1/rb/lib/selenium/webdriver/remote/bridge.rb#L67
255+
# @param [Hash] opts_caps Capabilities for Appium server. All capability keys are converted to lowerCamelCase when
256+
# this client sends capabilities to Appium server as JSON format.
257+
# @return [Selenium::WebDriver::Remote::Capabilities] Return instance of Selenium::WebDriver::Remote::Capabilities
255258
def self.init_caps_for_appium(opts_caps = {})
256259
default_caps_opts_firefox = {
257260
javascript_enabled: true,

0 commit comments

Comments
 (0)