appium_lib 9.4.5 → 9.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/appium_lib.gemspec +1 -1
  4. data/docs/android_docs.md +224 -224
  5. data/docs/ios_docs.md +250 -250
  6. data/lib/appium_lib/common/version.rb +1 -1
  7. data/release_notes.md +13 -0
  8. metadata +1 -109
  9. data/android_tests/Gemfile +0 -2
  10. data/android_tests/LICENSE-2.0.txt +0 -202
  11. data/android_tests/Rakefile +0 -68
  12. data/android_tests/api.apk +0 -0
  13. data/android_tests/appium.txt +0 -11
  14. data/android_tests/flaky.txt +0 -1
  15. data/android_tests/lib/android/specs/android/element/alert.rb +0 -48
  16. data/android_tests/lib/android/specs/android/element/button.rb +0 -52
  17. data/android_tests/lib/android/specs/android/element/generic.rb +0 -58
  18. data/android_tests/lib/android/specs/android/element/text.rb +0 -35
  19. data/android_tests/lib/android/specs/android/element/textfield.rb +0 -62
  20. data/android_tests/lib/android/specs/android/helper.rb +0 -111
  21. data/android_tests/lib/android/specs/android/patch.rb +0 -27
  22. data/android_tests/lib/android/specs/common/command.rb +0 -52
  23. data/android_tests/lib/android/specs/common/device.rb +0 -159
  24. data/android_tests/lib/android/specs/common/device_touchaction.rb +0 -34
  25. data/android_tests/lib/android/specs/common/element/window.rb +0 -11
  26. data/android_tests/lib/android/specs/common/helper.rb +0 -112
  27. data/android_tests/lib/android/specs/common/patch.rb +0 -78
  28. data/android_tests/lib/android/specs/common/version.rb +0 -9
  29. data/android_tests/lib/android/specs/common/web_context.rb +0 -60
  30. data/android_tests/lib/android/specs/device/touch_actions.rb +0 -71
  31. data/android_tests/lib/android/specs/driver.rb +0 -280
  32. data/android_tests/lib/android/specs/install.rb +0 -26
  33. data/android_tests/lib/format.rb +0 -47
  34. data/android_tests/lib/run.rb +0 -91
  35. data/android_tests/readme.md +0 -30
  36. data/grid/README.md +0 -21
  37. data/grid/appium.txt.ios.example +0 -15
  38. data/grid/config.json +0 -25
  39. data/grid/hub_config.json +0 -14
  40. data/grid/selenium-server-standalone-2.53.1.jar +0 -0
  41. data/grid/selenium-server-standalone-3.2.0.jar +0 -0
  42. data/ios_tests/Gemfile +0 -4
  43. data/ios_tests/LICENSE-2.0.txt +0 -202
  44. data/ios_tests/Rakefile +0 -54
  45. data/ios_tests/UICatalog.app.zip +0 -0
  46. data/ios_tests/UICatalog.app/12-6AM.png +0 -0
  47. data/ios_tests/UICatalog.app/12-6PM.png +0 -0
  48. data/ios_tests/UICatalog.app/6-12AM.png +0 -0
  49. data/ios_tests/UICatalog.app/6-12PM.png +0 -0
  50. data/ios_tests/UICatalog.app/Default-568h@2x.png +0 -0
  51. data/ios_tests/UICatalog.app/Default@2x.png +0 -0
  52. data/ios_tests/UICatalog.app/Info.plist +0 -0
  53. data/ios_tests/UICatalog.app/PkgInfo +0 -1
  54. data/ios_tests/UICatalog.app/UIButton_custom.png +0 -0
  55. data/ios_tests/UICatalog.app/UICatalog +0 -0
  56. data/ios_tests/UICatalog.app/blueButton.png +0 -0
  57. data/ios_tests/UICatalog.app/bookmarkImage.png +0 -0
  58. data/ios_tests/UICatalog.app/bookmarkImageHighlighted.png +0 -0
  59. data/ios_tests/UICatalog.app/divider.png +0 -0
  60. data/ios_tests/UICatalog.app/en.lproj/AlertsViewController.nib +0 -0
  61. data/ios_tests/UICatalog.app/en.lproj/ButtonsViewController.nib +0 -0
  62. data/ios_tests/UICatalog.app/en.lproj/ControlsViewController.nib +0 -0
  63. data/ios_tests/UICatalog.app/en.lproj/ImagesViewController.nib +0 -0
  64. data/ios_tests/UICatalog.app/en.lproj/Localizable.strings +0 -0
  65. data/ios_tests/UICatalog.app/en.lproj/MainWindow.nib +0 -0
  66. data/ios_tests/UICatalog.app/en.lproj/PickerViewController.nib +0 -0
  67. data/ios_tests/UICatalog.app/en.lproj/SearchBarController.nib +0 -0
  68. data/ios_tests/UICatalog.app/en.lproj/SegmentViewController.nib +0 -0
  69. data/ios_tests/UICatalog.app/en.lproj/TextFieldController.nib +0 -0
  70. data/ios_tests/UICatalog.app/en.lproj/TextViewController.nib +0 -0
  71. data/ios_tests/UICatalog.app/en.lproj/ToolbarViewController.nib +0 -0
  72. data/ios_tests/UICatalog.app/en.lproj/TransitionViewController.nib +0 -0
  73. data/ios_tests/UICatalog.app/en.lproj/WebViewController.nib +0 -0
  74. data/ios_tests/UICatalog.app/orangeslide.png +0 -0
  75. data/ios_tests/UICatalog.app/scene1.jpg +0 -0
  76. data/ios_tests/UICatalog.app/scene2.jpg +0 -0
  77. data/ios_tests/UICatalog.app/scene3.jpg +0 -0
  78. data/ios_tests/UICatalog.app/scene4.jpg +0 -0
  79. data/ios_tests/UICatalog.app/scene5.jpg +0 -0
  80. data/ios_tests/UICatalog.app/searchBarBackground.png +0 -0
  81. data/ios_tests/UICatalog.app/segment_check.png +0 -0
  82. data/ios_tests/UICatalog.app/segment_search.png +0 -0
  83. data/ios_tests/UICatalog.app/segment_tools.png +0 -0
  84. data/ios_tests/UICatalog.app/segmentedBackground.png +0 -0
  85. data/ios_tests/UICatalog.app/slider_ball.png +0 -0
  86. data/ios_tests/UICatalog.app/toolbarBackground.png +0 -0
  87. data/ios_tests/UICatalog.app/whiteButton.png +0 -0
  88. data/ios_tests/UICatalog.app/yellowslide.png +0 -0
  89. data/ios_tests/appium.txt +0 -15
  90. data/ios_tests/data/unicode.txt +0 -1
  91. data/ios_tests/flaky.txt +0 -1
  92. data/ios_tests/lib/common.rb +0 -84
  93. data/ios_tests/lib/format.rb +0 -23
  94. data/ios_tests/lib/ios/specs/common/command.rb +0 -45
  95. data/ios_tests/lib/ios/specs/common/element/window.rb +0 -17
  96. data/ios_tests/lib/ios/specs/common/helper.rb +0 -228
  97. data/ios_tests/lib/ios/specs/common/patch.rb +0 -54
  98. data/ios_tests/lib/ios/specs/common/version.rb +0 -17
  99. data/ios_tests/lib/ios/specs/common/web_context.rb +0 -15
  100. data/ios_tests/lib/ios/specs/device/device.rb +0 -130
  101. data/ios_tests/lib/ios/specs/device/multi_touch.rb +0 -31
  102. data/ios_tests/lib/ios/specs/device/touch_actions.rb +0 -90
  103. data/ios_tests/lib/ios/specs/driver.rb +0 -308
  104. data/ios_tests/lib/ios/specs/ios/element/alert.rb +0 -51
  105. data/ios_tests/lib/ios/specs/ios/element/button.rb +0 -58
  106. data/ios_tests/lib/ios/specs/ios/element/generic.rb +0 -37
  107. data/ios_tests/lib/ios/specs/ios/element/text.rb +0 -63
  108. data/ios_tests/lib/ios/specs/ios/element/textfield.rb +0 -135
  109. data/ios_tests/lib/ios/specs/ios/helper.rb +0 -59
  110. data/ios_tests/lib/ios/specs/ios/mobile_methods.rb +0 -20
  111. data/ios_tests/lib/ios/specs/ios/patch.rb +0 -34
  112. data/ios_tests/lib/ios/specs/ios/xcuitest_gestures.rb +0 -110
  113. data/ios_tests/lib/run.rb +0 -4
  114. data/ios_tests/readme.md +0 -31
  115. data/ios_tests/upload/sauce_storage.rb +0 -67
  116. data/ios_tests/upload/upload.rb +0 -6
@@ -1,54 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rubocop/rake_task'
4
-
5
- task default: :ios
6
-
7
- # Run sh and ignore exception
8
- # rubocop:disable Lint/HandleExceptions
9
- def run_sh(cmd)
10
- sh cmd
11
- rescue
12
- end
13
-
14
- # Run cmd. On failure run install and try again.
15
- def bash(cmd)
16
- sh cmd do |successful, result|
17
- # exitstatus 7 means bundle install failed
18
- # exitstatus 1 means the test failed
19
- if !successful && result.exitstatus == 7
20
- Rake::Task['install'].execute
21
- run_sh cmd
22
- end
23
- end
24
- end
25
-
26
- # Run a single test with:
27
- # rake ios['ios/element/generic']
28
- #
29
- # rake ios['driver']
30
- #
31
- # Run all tests with:
32
- # rake ios
33
- desc 'Run the iOS tests'
34
- task :ios, :args, :test_file do |_args, test_file|
35
- # rake android['ok']
36
- # args = android
37
- # test_file = {:args=>"ok"}
38
- test_file = test_file[:args]
39
- cmd = 'bundle exec ruby ./lib/run.rb ios'
40
- cmd += %( "#{test_file}") if test_file
41
- bash cmd
42
- end
43
-
44
- desc 'Run bundle install'
45
- task :install do
46
- sh 'bundle install'
47
- end
48
-
49
- desc 'Execute RuboCop static code analysis'
50
- RuboCop::RakeTask.new(:rubocop) do |t|
51
- t.patterns = %w(**/*.rb)
52
- t.options = %w(-D)
53
- t.fail_on_error = false
54
- end
Binary file
@@ -1 +0,0 @@
1
- APPL????
@@ -1,15 +0,0 @@
1
- [caps]
2
- platformName = "ios"
3
- platformVersion = "10.3"
4
- deviceName ="iPhone Simulator"
5
- automationName = 'XCUITest'
6
- app = "./UICatalog.app"
7
- some_capability = "some_capability"
8
-
9
- [appium_lib]
10
- sauce_username = ""
11
- sauce_access_key = ""
12
- sauce_endpoint = ""
13
- wait = 30
14
- wait_timeout = 20
15
- wait_interval = 1
@@ -1 +0,0 @@
1
- ®
@@ -1 +0,0 @@
1
- ios = "lib/ios/specs/"
@@ -1,84 +0,0 @@
1
-
2
- # common methods
3
- def back_click(opts = {})
4
- opts ||= {}
5
- search_wait = opts.fetch(:wait, 60 * 1.7)
6
- # iOS may have multiple 'back' buttons
7
- # select the first displayed? back button.
8
- wait(search_wait) do
9
- button_exact('Back').click
10
- end
11
- end
12
-
13
- def leave_textfields
14
- back_click
15
- screen.must_equal catalog
16
- end
17
-
18
- def go_to_textfields
19
- screen.must_equal catalog
20
- wait_true do
21
- UI::Inventory.xcuitest? ? find_element(:name, 'TextFields').click : text('textfield').click
22
- screen == 'TextFields' # wait for screen transition
23
- end
24
- end
25
-
26
- def screen
27
- $driver.find_element(:class, UI::Inventory.navbar).name
28
- end
29
-
30
- def catalog
31
- 'UICatalog'
32
- end
33
-
34
- module UI
35
- module Inventory
36
- def self.xcuitest?
37
- $driver.automation_name_is_xcuitest?
38
- end
39
-
40
- def self.navbar
41
- xcuitest? ? 'XCUIElementTypeNavigationBar' : 'UIANavigationBar'
42
- end
43
-
44
- def self.button
45
- xcuitest? ? 'XCUIElementTypeButton' : 'UIAButton'
46
- end
47
-
48
- def self.static_text
49
- xcuitest? ? 'XCUIElementTypeStaticText' : 'UIAStaticText'
50
- end
51
-
52
- def self.text_field
53
- xcuitest? ? 'XCUIElementTypeTextField' : 'UIATextField'
54
- end
55
-
56
- def self.secure_text_field
57
- xcuitest? ? 'XCUIElementTypeSecureTextField' : 'UIASecureTextField'
58
- end
59
-
60
- def self.picker
61
- xcuitest? ? 'XCUIElementTypePicker' : 'UIAPicker'
62
- end
63
-
64
- def self.action_sheet
65
- xcuitest? ? 'XCUIElementTypeActionSheet' : 'UIActionSheet'
66
- end
67
-
68
- def self.table
69
- xcuitest? ? 'XCUIElementTypeTable' : 'UIATable'
70
- end
71
-
72
- def self.table_cell
73
- xcuitest? ? 'XCUIElementTypeCell' : 'UIATableCell'
74
- end
75
-
76
- def self.other
77
- xcuitest? ? 'XCUIElementTypeOther' : raise('unknown UIA element: other')
78
- end
79
-
80
- def self.status_bar
81
- xcuitest? ? 'XCUIElementTypeStatusBar' : 'UIAStatusBar'
82
- end
83
- end
84
- end
@@ -1,23 +0,0 @@
1
- # helper code useful for writing and verifying tests using Pry
2
- list = <<TXT
3
- alert_click
4
- alert_text
5
- alert_accept
6
- alert_accept_text
7
- alert_dismiss
8
- alert_dismiss_text
9
- TXT
10
-
11
- list.split("\n").each do |method|
12
- puts "t '#{method}' do"
13
- puts
14
- puts 'end'
15
- puts
16
- end
17
-
18
- # for Pry
19
- # class Object
20
- # def must_equal b
21
- # raise 'not equal' unless self == b
22
- # end
23
- # end
@@ -1,45 +0,0 @@
1
- # rake ios[common/command]
2
- describe 'common/command.rb' do
3
- def before_first
4
- screen.must_equal catalog
5
- end
6
-
7
- t 'before_first' do
8
- before_first
9
- end
10
-
11
- t 'check all command no arg' do
12
- Selenium::WebDriver::Remote::Bridge.method_defined?(:shake).must_equal true
13
- Selenium::WebDriver::Remote::Bridge.method_defined?(:launch_app).must_equal true
14
- Selenium::WebDriver::Remote::Bridge.method_defined?(:close_app).must_equal true
15
- Selenium::WebDriver::Remote::Bridge.method_defined?(:reset).must_equal true
16
- Selenium::WebDriver::Remote::Bridge.method_defined?(:device_locked?).must_equal true
17
- Selenium::WebDriver::Remote::Bridge.method_defined?(:device_time).must_equal true
18
- Selenium::WebDriver::Remote::Bridge.method_defined?(:current_context).must_equal true
19
- end
20
-
21
- t 'check all command with arg' do
22
- Selenium::WebDriver::Remote::Bridge.method_defined?(:available_contexts).must_equal true
23
- Selenium::WebDriver::Remote::Bridge.method_defined?(:app_strings).must_equal true
24
- Selenium::WebDriver::Remote::Bridge.method_defined?(:lock).must_equal true
25
- Selenium::WebDriver::Remote::Bridge.method_defined?(:install_app).must_equal true
26
- Selenium::WebDriver::Remote::Bridge.method_defined?(:remove_app).must_equal true
27
- Selenium::WebDriver::Remote::Bridge.method_defined?(:app_installed?).must_equal true
28
- Selenium::WebDriver::Remote::Bridge.method_defined?(:background_app).must_equal true
29
- Selenium::WebDriver::Remote::Bridge.method_defined?(:start_activity).must_equal true
30
- Selenium::WebDriver::Remote::Bridge.method_defined?(:set_context).must_equal true
31
- Selenium::WebDriver::Remote::Bridge.method_defined?(:hide_keyboard).must_equal true
32
- Selenium::WebDriver::Remote::Bridge.method_defined?(:press_keycode).must_equal true
33
- Selenium::WebDriver::Remote::Bridge.method_defined?(:long_press_keycode).must_equal true
34
- Selenium::WebDriver::Remote::Bridge.method_defined?(:set_immediate_value).must_equal true
35
- Selenium::WebDriver::Remote::Bridge.method_defined?(:push_file).must_equal true
36
- Selenium::WebDriver::Remote::Bridge.method_defined?(:pull_file).must_equal true
37
- Selenium::WebDriver::Remote::Bridge.method_defined?(:pull_folder).must_equal true
38
- Selenium::WebDriver::Remote::Bridge.method_defined?(:touch_id).must_equal true
39
- Selenium::WebDriver::Remote::Bridge.method_defined?(:toggle_touch_id_enrollment).must_equal true
40
- Selenium::WebDriver::Remote::Bridge.method_defined?(:get_settings).must_equal true
41
- Selenium::WebDriver::Remote::Bridge.method_defined?(:update_settings).must_equal true
42
- Selenium::WebDriver::Remote::Bridge.method_defined?(:touch_actions).must_equal true
43
- Selenium::WebDriver::Remote::Bridge.method_defined?(:multi_touch).must_equal true
44
- end
45
- end
@@ -1,17 +0,0 @@
1
- # rake ios[common/element/window]
2
- describe 'common/element/window' do
3
- def before_first
4
- screen.must_equal catalog
5
- end
6
-
7
- t 'before_first' do
8
- before_first
9
- end
10
-
11
- # rubocop:disable Lint/UnifiedInteger
12
- t 'window_size' do
13
- size = window_size
14
- size.width.class.must_equal Fixnum
15
- size.height.class.must_equal Fixnum
16
- end
17
- end
@@ -1,228 +0,0 @@
1
- # rake ios[common/helper]
2
- describe 'common/helper.rb' do
3
- def before_first
4
- screen.must_equal catalog
5
- end
6
-
7
- t 'before_first' do
8
- before_first
9
- end
10
-
11
- wait_opts = { timeout: 0.2, interval: 0.2 } # max_wait, interval
12
-
13
- # There's no `must_not_raise` as the opposite of must_raise
14
- #
15
- # By default code is expected to not raise exceptions.
16
- # must_not_raise is a no-op.
17
-
18
- # wait is a success unless an error is raised
19
- # max_wait=0 is infinity to use 0.1
20
- t 'wait' do
21
- # successful wait should not raise error
22
- wait(wait_opts) { true }
23
- wait(wait_opts) { false }
24
- wait(wait_opts) { nil }
25
-
26
- # failed wait should error
27
- proc { wait(wait_opts) { raise } }.must_raise Selenium::WebDriver::Error::TimeOutError
28
-
29
- # regular rescue will not handle exceptions outside of StandardError hierarchy
30
- # must rescue Exception explicitly to rescue everything
31
- proc { wait(wait_opts) { raise NoMemoryError } }.must_raise Selenium::WebDriver::Error::TimeOutError
32
- proc { wait(timeout: 0.2, interval: 0.0) { raise NoMemoryError } }.must_raise Selenium::WebDriver::Error::TimeOutError
33
-
34
- # invalid keys are rejected
35
- proc { wait(invalidkey: 2) { true } }.must_raise RuntimeError
36
- end
37
-
38
- t 'ignore' do
39
- # ignore should rescue all exceptions
40
- ignore { true }
41
- ignore { false }
42
- ignore { nil }
43
- ignore { raise }
44
- ignore { raise NoMemoryError }
45
- end
46
-
47
- # wait_true is a success unless the value is not true
48
- t 'wait_true' do
49
- # successful wait should not error
50
- wait_true(wait_opts) { true }
51
-
52
- # failed wait should error
53
- proc { wait_true(wait_opts) { false } }.must_raise Selenium::WebDriver::Error::TimeOutError
54
- proc { wait_true(wait_opts) { nil } }.must_raise Selenium::WebDriver::Error::TimeOutError
55
-
56
- # raise should error
57
- proc { wait_true(wait_opts) { raise } }.must_raise Selenium::WebDriver::Error::TimeOutError
58
-
59
- # regular rescue will not handle exceptions outside of StandardError hierarchy
60
- # must rescue Exception explicitly to rescue everything
61
- proc { wait_true(wait_opts) { raise NoMemoryError } }.must_raise Selenium::WebDriver::Error::TimeOutError
62
- proc { wait_true(timeout: 0.2, interval: 0.0) { raise NoMemoryError } }
63
- .must_raise Selenium::WebDriver::Error::TimeOutError
64
-
65
- # invalid keys are rejected
66
- proc { wait_true(invalidkey: 2) { true } }.must_raise RuntimeError
67
- end
68
-
69
- # t 'id' # id is for Selendroid
70
-
71
- t 'back' do
72
- # start page
73
- tag(UI::Inventory.navbar).name.must_equal 'UICatalog'
74
- # nav to new page.
75
- wait_true do
76
- text('buttons').click
77
- tag(UI::Inventory.navbar).name == 'Buttons'
78
- end
79
-
80
- tag(UI::Inventory.navbar).name.must_equal 'Buttons'
81
- # go back
82
- back_click
83
- # start page
84
- tag(UI::Inventory.navbar).name.must_equal 'UICatalog'
85
- end
86
-
87
- t 'session_id' do
88
- # Sauce doesn't return '-' so make them optional.
89
- session_id.must_match(/\h{8}-?\h{4}-?\h{4}-?\h{4}-?\h{12}/)
90
- end
91
-
92
- t 'xpath' do
93
- xpath("//#{UI::Inventory.static_text}").name.must_equal 'UICatalog'
94
- end
95
-
96
- t 'xpaths' do
97
- xpaths("//#{UI::Inventory.static_text}").length.must_equal 25
98
- end
99
-
100
- def uibutton_text
101
- 'Buttons'
102
- end
103
-
104
- t 'ele_index' do
105
- ele_index(UI::Inventory.static_text, 2).name.must_equal uibutton_text
106
- end
107
-
108
- # TODO: 'string_attr_exact'
109
-
110
- t 'find_ele_by_attr' do
111
- el_id = find_ele_by_attr(UI::Inventory.static_text, 'name', uibutton_text).instance_variable_get :@id
112
- el_id.must_match(/\d+/)
113
- end
114
-
115
- t 'find_eles_by_attr' do
116
- # '!' clears the input buffer in Pry so make sure there's
117
- # no space after the !
118
- set_wait 1
119
- # empty array returned when no match
120
- found = !find_eles_by_attr(UI::Inventory.static_text, 'name', uibutton_text).empty?
121
- found.must_equal true
122
-
123
- found = !find_eles_by_attr(UI::Inventory.static_text, 'name', 'zz').empty?
124
- found.must_equal false
125
- set_wait
126
- end
127
-
128
- t 'find_ele_by_predicate' do
129
- el_text = find_ele_by_predicate(value: uibutton_text).text
130
- el_text.must_equal uibutton_text
131
-
132
- el_name = find_ele_by_predicate(value: uibutton_text).name
133
- el_name.must_equal uibutton_text
134
- end
135
-
136
- t 'find_eles_by_predicate' do
137
- ele_count = find_eles_by_predicate(value: uibutton_text).length
138
- ele_count.must_equal 1
139
-
140
- ele_count = find_eles_by_predicate(value: 'zz').length
141
- ele_count.must_equal 0
142
- end
143
-
144
- # TODO: 'string_attr_include'
145
-
146
- t 'find_ele_by_attr_include' do
147
- el_text = find_ele_by_attr_include(UI::Inventory.static_text, :name, 'button').text
148
- el_text.must_equal uibutton_text
149
-
150
- el_name = find_ele_by_attr_include(UI::Inventory.static_text, :name, 'button').name
151
- el_name.must_equal uibutton_text
152
- end
153
-
154
- t 'find_eles_by_attr_include' do
155
- ele_count = find_eles_by_attr_include(UI::Inventory.static_text, :name, 'e').length
156
- expected = UI::Inventory.xcuitest? ? 20 : 19
157
- ele_count.must_equal expected
158
- end
159
-
160
- t 'find_ele_by_predicate_include' do
161
- el_text = find_ele_by_predicate_include(value: 'button').text
162
- el_text.must_equal uibutton_text
163
-
164
- el_name = find_ele_by_predicate_include(value: 'button').name
165
- el_name.must_equal uibutton_text
166
- end
167
-
168
- t 'find_eles_by_predicate_include' do
169
- find_eles_by_predicate_include(value: 'e').length.must_equal 21
170
- end
171
-
172
- t 'first_ele' do
173
- first_ele(UI::Inventory.static_text).name.must_equal 'UICatalog'
174
- end
175
-
176
- t 'last_ele' do
177
- expected = 'Transitions'
178
-
179
- el = last_ele(UI::Inventory.static_text)
180
- el.text.must_equal expected
181
- el.name.must_equal expected
182
- end
183
-
184
- # t 'source' do # tested by get_source
185
-
186
- t 'get_source' do
187
- get_source.class.must_equal String
188
- end
189
-
190
- t 'invalid id should error' do
191
- proc { id 'does not exist' }.must_raise Selenium::WebDriver::Error::NoSuchElementError
192
-
193
- # resource id should error on ios
194
- proc { id 'android:id/text1' }.must_raise Selenium::WebDriver::Error::NoSuchElementError
195
- end
196
-
197
- t 'tag' do
198
- tag(UI::Inventory.navbar).name.must_equal 'UICatalog'
199
- end
200
-
201
- t 'tags' do
202
- tags(UI::Inventory.table_cell).length.must_equal 12
203
- end
204
-
205
- t 'find_eles_by_attr_include_length' do
206
- find_eles_by_attr_include(UI::Inventory.static_text, 'name', 'Use').length.must_equal 7
207
- end
208
-
209
- t 'get_page_class' do
210
- # 8 local. 9 on sauce.
211
- get_page_class.split("\n").length.must_be :>=, 8
212
- end
213
-
214
- # TODO: write tests
215
- # page_class
216
- # px_to_window_rel
217
- # lazy_load_strings
218
- # xml_keys
219
- # xml_values
220
- # resolve_id
221
- # string_visible_contains
222
- # xpath_visible_contains
223
- # xpaths_visible_contains
224
- # string_visible_exact
225
- # xpath_visible_exact
226
- # xpaths_visible_exact
227
- # raise_no_element_error
228
- end