automation_object 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/lib/automation_object.rb +22 -11
  3. data/lib/automation_object/blue_print.rb +13 -12
  4. data/lib/automation_object/blue_print/composite/automatic_onload_modal.rb +9 -8
  5. data/lib/automation_object/blue_print/composite/base.rb +5 -4
  6. data/lib/automation_object/blue_print/composite/custom_method.rb +8 -7
  7. data/lib/automation_object/blue_print/composite/element.rb +6 -5
  8. data/lib/automation_object/blue_print/composite/element_array.rb +6 -5
  9. data/lib/automation_object/blue_print/composite/element_hash.rb +7 -6
  10. data/lib/automation_object/blue_print/composite/helpers/element_helper.rb +7 -7
  11. data/lib/automation_object/blue_print/composite/helpers/multiple_elements_helper.rb +5 -4
  12. data/lib/automation_object/blue_print/composite/hook.rb +9 -11
  13. data/lib/automation_object/blue_print/composite/hook_action.rb +25 -24
  14. data/lib/automation_object/blue_print/composite/hook_element_requirements.rb +14 -13
  15. data/lib/automation_object/blue_print/composite/modal.rb +11 -21
  16. data/lib/automation_object/blue_print/composite/screen.rb +22 -16
  17. data/lib/automation_object/blue_print/composite/top.rb +13 -12
  18. data/lib/automation_object/blue_print/composite/view.rb +27 -16
  19. data/lib/automation_object/blue_print/hash_adapter.rb +15 -11
  20. data/lib/automation_object/blue_print/hash_adapter/automatic_onload_modal.rb +12 -11
  21. data/lib/automation_object/blue_print/hash_adapter/composite.rb +28 -25
  22. data/lib/automation_object/blue_print/hash_adapter/custom_method.rb +11 -10
  23. data/lib/automation_object/blue_print/hash_adapter/element.rb +10 -9
  24. data/lib/automation_object/blue_print/hash_adapter/element_array.rb +10 -9
  25. data/lib/automation_object/blue_print/hash_adapter/element_hash.rb +11 -10
  26. data/lib/automation_object/blue_print/hash_adapter/helpers/element_helper.rb +20 -25
  27. data/lib/automation_object/blue_print/hash_adapter/helpers/multiple_elements_helper.rb +15 -14
  28. data/lib/automation_object/blue_print/hash_adapter/helpers/validation_error.rb +9 -8
  29. data/lib/automation_object/blue_print/hash_adapter/helpers/validation_helper.rb +19 -24
  30. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate.rb +8 -5
  31. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb +7 -8
  32. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_element_presence_of.rb +28 -23
  33. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb +12 -13
  34. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb +27 -23
  35. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb +9 -8
  36. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb +27 -23
  37. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb +25 -21
  38. data/lib/automation_object/blue_print/hash_adapter/hook.rb +14 -11
  39. data/lib/automation_object/blue_print/hash_adapter/hook_action.rb +45 -47
  40. data/lib/automation_object/blue_print/hash_adapter/hook_element_requirements.rb +24 -28
  41. data/lib/automation_object/blue_print/hash_adapter/modal.rb +14 -13
  42. data/lib/automation_object/blue_print/hash_adapter/screen.rb +23 -22
  43. data/lib/automation_object/blue_print/hash_adapter/top.rb +16 -15
  44. data/lib/automation_object/blue_print/hash_adapter/view.rb +58 -4
  45. data/lib/automation_object/blue_print/yaml_adapter.rb +33 -34
  46. data/lib/automation_object/driver.rb +15 -13
  47. data/lib/automation_object/driver/appium_adapter/driver.rb +47 -46
  48. data/lib/automation_object/driver/appium_adapter/element.rb +29 -96
  49. data/lib/automation_object/driver/base.rb +4 -2
  50. data/lib/automation_object/driver/common_selenium/driver.rb +60 -0
  51. data/lib/automation_object/driver/common_selenium/element.rb +107 -0
  52. data/lib/automation_object/driver/common_selenium/element_geometry.rb +86 -0
  53. data/lib/automation_object/driver/driver.rb +60 -30
  54. data/lib/automation_object/driver/element.rb +70 -15
  55. data/lib/automation_object/driver/nokogiri_adapter/driver.rb +88 -34
  56. data/lib/automation_object/driver/nokogiri_adapter/element.rb +94 -16
  57. data/lib/automation_object/driver/nokogiri_adapter/error.rb +29 -8
  58. data/lib/automation_object/driver/nokogiri_adapter/{backup/form.rb → form.rb} +19 -6
  59. data/lib/automation_object/driver/nokogiri_adapter/request.rb +17 -0
  60. data/lib/automation_object/driver/nokogiri_adapter/session.rb +94 -0
  61. data/lib/automation_object/driver/nokogiri_adapter/window.rb +86 -0
  62. data/lib/automation_object/driver/selenium_adapter/driver.rb +36 -45
  63. data/lib/automation_object/driver/selenium_adapter/element.rb +15 -85
  64. data/lib/automation_object/dsl.rb +11 -28
  65. data/lib/automation_object/dsl/_base.rb +70 -0
  66. data/lib/automation_object/dsl/_proxy.rb +24 -0
  67. data/lib/automation_object/dsl/element.rb +34 -0
  68. data/lib/automation_object/dsl/element_array.rb +34 -0
  69. data/lib/automation_object/dsl/element_hash.rb +34 -0
  70. data/lib/automation_object/dsl/modal.rb +43 -0
  71. data/lib/automation_object/dsl/screen.rb +45 -0
  72. data/lib/automation_object/dsl/top.rb +25 -0
  73. data/lib/automation_object/framework.rb +28 -38
  74. data/lib/automation_object/helpers/composite.rb +30 -27
  75. data/lib/automation_object/helpers/composite_hook.rb +16 -15
  76. data/lib/automation_object/{blue_print/helpers/file_helper.rb → helpers/file.rb} +12 -12
  77. data/lib/automation_object/helpers/hash.rb +6 -5
  78. data/lib/automation_object/helpers/kernel.rb +11 -0
  79. data/lib/automation_object/helpers/{reflection_helper.rb → reflection.rb} +9 -8
  80. data/lib/automation_object/helpers/string.rb +25 -15
  81. data/lib/automation_object/{proxies → proxy}/mutex_proxy.rb +18 -21
  82. data/lib/automation_object/proxy/proxy.rb +23 -0
  83. data/lib/automation_object/proxy/throttle_proxy.rb +52 -0
  84. data/lib/automation_object/state.rb +11 -29
  85. data/lib/automation_object/state/{blue_print_adapter/composite.rb → composite/_base.rb} +35 -25
  86. data/lib/automation_object/state/{blue_print_adapter/helpers/element_helper.rb → composite/_common_element.rb} +11 -11
  87. data/lib/automation_object/state/composite/element.rb +22 -0
  88. data/lib/automation_object/state/composite/element_array.rb +27 -0
  89. data/lib/automation_object/state/composite/element_hash.rb +33 -0
  90. data/lib/automation_object/state/composite/element_proxy.rb +33 -0
  91. data/lib/automation_object/state/composite/helpers/window.rb +61 -0
  92. data/lib/automation_object/state/composite/helpers/window_manager.rb +60 -0
  93. data/lib/automation_object/state/composite/hook.rb +56 -0
  94. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_action.rb +10 -8
  95. data/lib/automation_object/state/composite/hook_actions/action_loop.rb +36 -0
  96. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/change_screen.rb +7 -5
  97. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/change_to_previous_screen.rb +7 -5
  98. data/lib/automation_object/state/composite/hook_actions/close_modal.rb +29 -0
  99. data/lib/automation_object/state/composite/hook_actions/close_screen.rb +19 -0
  100. data/lib/automation_object/state/composite/hook_actions/element_requirement.rb +32 -0
  101. data/lib/automation_object/state/composite/hook_actions/new_screen.rb +35 -0
  102. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/possible_screen_changes.rb +8 -7
  103. data/lib/automation_object/state/composite/hook_actions/reset_screen.rb +14 -0
  104. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/show_modal.rb +7 -5
  105. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/sleep.rb +4 -2
  106. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/wait_for_elements.rb +7 -5
  107. data/lib/automation_object/state/composite/modal.rb +45 -0
  108. data/lib/automation_object/state/composite/screen.rb +58 -0
  109. data/lib/automation_object/state/composite/top.rb +51 -0
  110. data/lib/automation_object/state/error.rb +45 -6
  111. data/lib/automation_object/state/session.rb +25 -23
  112. data/lib/automation_object/step_definitions.rb +5 -3
  113. data/lib/automation_object/step_definitions/element.rb +77 -0
  114. data/lib/automation_object/step_definitions/element_array.rb +135 -0
  115. data/lib/automation_object/step_definitions/element_hash.rb +126 -0
  116. data/lib/automation_object/step_definitions/screen.rb +62 -0
  117. data/lib/automation_object/step_definitions/{cache.rb → support/cache.rb} +8 -6
  118. data/lib/automation_object/step_definitions/support/element_array.rb +40 -0
  119. data/lib/automation_object/step_definitions/support/element_hash.rb +41 -0
  120. data/lib/automation_object/step_definitions/{parse.rb → support/parse.rb} +8 -6
  121. data/lib/automation_object/version.rb +2 -1
  122. metadata +203 -103
  123. data/lib/automation_object/driver/helpers/selenium_driver_helper.rb +0 -41
  124. data/lib/automation_object/driver/helpers/selenium_element_helper.rb +0 -138
  125. data/lib/automation_object/driver/nokogiri_adapter/backup/driver.rb +0 -83
  126. data/lib/automation_object/driver/nokogiri_adapter/backup/element.rb +0 -66
  127. data/lib/automation_object/driver/nokogiri_adapter/backup/helpers/driver_element_helper.rb +0 -52
  128. data/lib/automation_object/driver/nokogiri_adapter/backup/session.rb +0 -115
  129. data/lib/automation_object/dsl/blue_print_adapter.rb +0 -16
  130. data/lib/automation_object/dsl/blue_print_adapter/composite.rb +0 -54
  131. data/lib/automation_object/dsl/blue_print_adapter/element.rb +0 -14
  132. data/lib/automation_object/dsl/blue_print_adapter/element_array.rb +0 -14
  133. data/lib/automation_object/dsl/blue_print_adapter/element_hash.rb +0 -14
  134. data/lib/automation_object/dsl/blue_print_adapter/modal.rb +0 -23
  135. data/lib/automation_object/dsl/blue_print_adapter/screen.rb +0 -26
  136. data/lib/automation_object/dsl/blue_print_adapter/top.rb +0 -19
  137. data/lib/automation_object/dsl/models.rb +0 -18
  138. data/lib/automation_object/dsl/proxies/element.rb +0 -16
  139. data/lib/automation_object/dsl/proxies/element_array.rb +0 -16
  140. data/lib/automation_object/dsl/proxies/element_hash.rb +0 -16
  141. data/lib/automation_object/dsl/proxies/helpers/composite_helper.rb +0 -74
  142. data/lib/automation_object/dsl/proxies/modal.rb +0 -17
  143. data/lib/automation_object/dsl/proxies/screen.rb +0 -17
  144. data/lib/automation_object/dsl/proxies/top.rb +0 -17
  145. data/lib/automation_object/proxies/proxy.rb +0 -20
  146. data/lib/automation_object/proxies/throttle_proxy.rb +0 -57
  147. data/lib/automation_object/state/blue_print_adapter.rb +0 -16
  148. data/lib/automation_object/state/blue_print_adapter/element.rb +0 -20
  149. data/lib/automation_object/state/blue_print_adapter/element_array.rb +0 -25
  150. data/lib/automation_object/state/blue_print_adapter/element_hash.rb +0 -31
  151. data/lib/automation_object/state/blue_print_adapter/element_proxy.rb +0 -28
  152. data/lib/automation_object/state/blue_print_adapter/helpers/screen_manager.rb +0 -137
  153. data/lib/automation_object/state/blue_print_adapter/helpers/window.rb +0 -39
  154. data/lib/automation_object/state/blue_print_adapter/hook.rb +0 -56
  155. data/lib/automation_object/state/blue_print_adapter/hook_actions/action_loop.rb +0 -35
  156. data/lib/automation_object/state/blue_print_adapter/hook_actions/close_modal.rb +0 -31
  157. data/lib/automation_object/state/blue_print_adapter/hook_actions/close_screen.rb +0 -19
  158. data/lib/automation_object/state/blue_print_adapter/hook_actions/element_requirement.rb +0 -34
  159. data/lib/automation_object/state/blue_print_adapter/hook_actions/new_screen.rb +0 -37
  160. data/lib/automation_object/state/blue_print_adapter/hook_actions/reset_screen.rb +0 -18
  161. data/lib/automation_object/state/blue_print_adapter/modal.rb +0 -26
  162. data/lib/automation_object/state/blue_print_adapter/screen.rb +0 -32
  163. data/lib/automation_object/state/blue_print_adapter/top.rb +0 -45
  164. data/lib/automation_object/step_definitions/action.rb +0 -21
  165. data/lib/automation_object/step_definitions/element/actions.rb +0 -87
  166. data/lib/automation_object/step_definitions/element/regex.rb +0 -24
  167. data/lib/automation_object/step_definitions/element/steps.rb +0 -67
@@ -1,20 +1,21 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
 
4
- #Require child classes
5
+ # Require child classes
5
6
  require_relative 'screen'
6
7
  require_relative 'view'
7
8
 
8
9
  module AutomationObject
9
10
  module BluePrint
10
11
  module HashAdapter
11
- #Top composite
12
+ # Top composite
12
13
  class Top < Composite
13
- #Relationships
14
+ # Relationships
14
15
  has_many :screens, interface: Screen
15
16
  has_many :views, interface: View
16
17
 
17
- #Validations
18
+ # Validations
18
19
  validates_keys allowed_keys: [:base_url, :default_screen, :screen_transition_sleep, :screens,
19
20
  :throttle_driver_methods, :throttle_element_methods, :views]
20
21
 
@@ -28,36 +29,36 @@ module AutomationObject
28
29
 
29
30
  # @return [String, nil] base url to navigate to upon framework creation
30
31
  def base_url
31
- self.hash[:base_url] ||= nil
32
+ hash[:base_url] ||= nil
32
33
  end
33
34
 
34
35
  # @return [Symbol, nil] default screen to be set when framework is created
35
36
  def default_screen
36
- default_screen = self.hash[:default_screen]
37
+ default_screen = hash[:default_screen]
37
38
 
38
39
  case default_screen
39
- when Symbol, String
40
- return default_screen.to_sym
41
- else
42
- return nil
40
+ when Symbol, String
41
+ return default_screen.to_sym
42
+ else
43
+ return nil
43
44
  end
44
45
  end
45
46
 
46
47
  # @return [Numeric] sleep when transitioning screens
47
48
  def screen_transition_sleep
48
- self.hash[:screen_transition_sleep] ||= 0
49
+ hash[:screen_transition_sleep] ||= 0
49
50
  end
50
51
 
51
52
  # @return [Hash] driver methods to throttle
52
53
  def throttle_driver_methods
53
- self.hash[:throttle_driver_methods] ||= Hash.new
54
+ hash[:throttle_driver_methods] ||= {}
54
55
  end
55
56
 
56
57
  # @return [Hash] element methods to throttle
57
58
  def throttle_element_methods
58
- self.hash[:throttle_element_methods] ||= Hash.new
59
+ hash[:throttle_element_methods] ||= {}
59
60
  end
60
61
  end
61
62
  end
62
63
  end
63
- end
64
+ end
@@ -1,12 +1,27 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
 
4
5
  module AutomationObject
5
6
  module BluePrint
6
7
  module HashAdapter
7
- #View composite
8
+ # View composite
8
9
  class View < Composite
9
- #Validations
10
+ # Creation hooks
11
+ before_create :merge_views
12
+ before_create :automatic_onload_modals
13
+
14
+ # Relationships
15
+ has_one :load, interface: Hook
16
+ has_one :accept, interface: Hook
17
+ has_one :dismiss, interface: Hook
18
+
19
+ has_many :modals, interface: Modal
20
+ has_many :elements, interface: Element
21
+ has_many :element_arrays, interface: ElementArray
22
+ has_many :element_hashes, interface: ElementHash
23
+
24
+ # Validations
10
25
  validates_keys allowed_keys: [:automatic_onload_modals, :automatic_screen_changes, :elements, :element_arrays,
11
26
  :element_groups, :element_hashes, :included_views, :load, :modals]
12
27
 
@@ -23,7 +38,46 @@ module AutomationObject
23
38
  validates :load, instance_of: Hash
24
39
 
25
40
  validates :modals, instance_of: Hash
41
+
42
+ # @return [Array<AutomaticOnloadModal>] array of AutomaticOnloadModal that are defined under the screen
43
+ def automatic_onload_modals
44
+ return @automatic_onload_modals if defined? @automatic_onload_modals
45
+
46
+ children = hash[:automatic_onload_modals]
47
+ children = children.is_a?(Array) ? children : []
48
+ @automatic_onload_modals = create_array_children(:automatic_onload_modals, children,
49
+ interface: AutomaticOnloadModal,
50
+ location: location + '[automatic_onload_modals]')
51
+
52
+ @automatic_onload_modals
53
+ end
54
+
55
+ # @return [Array<Symbol>] array of screens where screen can automatically change to
56
+ def automatic_screen_changes
57
+ screen_array = hash[:automatic_screen_changes] ||= []
58
+ screen_array.map(&:to_sym)
59
+ end
60
+
61
+ # @return [Array<Symbol>] array of views this can has
62
+ def included_views
63
+ included_views_array = hash[:included_views] ||= []
64
+ included_views_array.map(&:to_sym)
65
+ end
66
+
67
+ # Method to take views and merge into this composite
68
+ def merge_views
69
+ top_hash = top.hash
70
+
71
+ return unless top_hash.is_a?(Hash)
72
+ return unless top_hash[:views].is_a?(Hash)
73
+ top_view_hash = top_hash[:views]
74
+
75
+ included_views.each do |included_view|
76
+ next unless top_view_hash[included_view].is_a?(Hash)
77
+ self.hash = hash.deep_merge(top_view_hash[included_view])
78
+ end
79
+ end
26
80
  end
27
81
  end
28
82
  end
29
- end
83
+ end
@@ -1,50 +1,49 @@
1
+ # frozen_string_literal: true
1
2
  require 'yaml'
2
3
 
3
- require_relative '../blue_print'
4
+ require_relative '../helpers/file'
4
5
  require_relative 'hash_adapter'
5
- require_relative 'helpers/file_helper'
6
6
 
7
- module AutomationObject::BluePrint
8
- #BluePrint YAML Adapter
9
- module YamlAdapter
10
- extend self
11
- extend FileHelper
7
+ module AutomationObject
8
+ module BluePrint
9
+ # BluePrint YAML Adapter
10
+ module YamlAdapter
11
+ module_function
12
12
 
13
- # @param path [String] path to YAML directory
14
- # @return [AutomationObject::BluePrint::Composite::Top] Composite BluePrint Object
15
- def build(path = '')
16
- path = File.expand_path(path)
13
+ # @param path [String] path to YAML directory
14
+ # @return [AutomationObject::BluePrint::Composite::Top] Composite BluePrint Object
15
+ def build(path = '')
16
+ path = File.expand_path(path)
17
17
 
18
- file_array = self.collect_files(path)
19
- merged_yaml_hash = self.load_yaml_files(file_array)
18
+ file_array = File.collect_files(path)
19
+ merged_yaml_hash = load_yaml_files(file_array)
20
20
 
21
- return AutomationObject::BluePrint::HashAdapter.build(merged_yaml_hash)
22
- end
21
+ AutomationObject::BluePrint::HashAdapter.build(merged_yaml_hash)
22
+ end
23
23
 
24
- # @param file_array [Array<String>] array of file paths to load
25
- # @return [Hash] merged YAML Hash
26
- def load_yaml_files(file_array)
27
- merged_yaml_hash = Hash.new
24
+ # @param file_array [Array<String>] array of file paths to load
25
+ # @return [Hash] merged YAML Hash
26
+ def load_yaml_files(file_array)
27
+ merged_yaml_hash = {}
28
28
 
29
- file_array.each { |file_path|
30
- next unless self.is_yaml_file?(file_path)
29
+ file_array.each do |file_path|
30
+ next unless yaml_file?(file_path)
31
31
 
32
- file_hash = YAML.load_file(file_path)
32
+ file_hash = YAML.load_file(file_path)
33
33
 
34
- unless file_hash.is_a?(Hash)
35
- raise "Expecting file #{file_path} to be a hash when loaded"
36
- end
34
+ raise "Expecting file #{file_path} to be a hash when loaded" unless file_hash.is_a?(Hash)
37
35
 
38
- merged_yaml_hash = merged_yaml_hash.deep_merge(file_hash)
39
- }
36
+ merged_yaml_hash = merged_yaml_hash.deep_merge(file_hash)
37
+ end
40
38
 
41
- return merged_yaml_hash
42
- end
39
+ merged_yaml_hash
40
+ end
43
41
 
44
- # @param file_path [String] file path
45
- # @return [Boolean] whether or not it is a YAML file
46
- def is_yaml_file?(file_path)
47
- return (file_path.match(/\.ya?ml$/)) ? true : false
42
+ # @param file_path [String] file path
43
+ # @return [Boolean] whether or not it is a YAML file
44
+ def yaml_file?(file_path)
45
+ file_path =~ /\.ya?ml$/ ? true : false
46
+ end
48
47
  end
49
48
  end
50
- end
49
+ end
@@ -1,19 +1,20 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'helpers/string'
2
3
 
3
- require_relative 'proxies/throttle_proxy'
4
- require_relative 'proxies/mutex_proxy'
4
+ require_relative 'proxy/throttle_proxy'
5
+ require_relative 'proxy/mutex_proxy'
5
6
 
6
7
  require_relative 'driver/driver'
7
8
 
8
- #Adapters
9
+ # Adapters
9
10
  require_relative 'driver/appium_adapter/driver'
10
11
  require_relative 'driver/nokogiri_adapter/driver'
11
12
  require_relative 'driver/selenium_adapter/driver'
12
13
 
13
14
  module AutomationObject
14
- #Driver Port
15
+ # Driver Port
15
16
  module Driver
16
- extend self
17
+ module_function
17
18
 
18
19
  def adapter
19
20
  return @adapter if @adapter
@@ -25,20 +26,21 @@ module AutomationObject
25
26
  # @param adapter_name [String] name of adapter wanted for composite creation
26
27
  def adapter=(adapter_name)
27
28
  adapter_name = adapter_name.to_s
28
- adapter_name << '_adapter' unless adapter_name.match(/_adapter$/)
29
+ adapter_name << '_adapter' unless adapter_name =~ /_adapter$/
29
30
  adapter_const = adapter_name.pascalize
30
31
 
31
- @adapter = AutomationObject::Driver.const_get("#{adapter_const}")
32
+ @adapter = AutomationObject::Driver.const_get(adapter_const.to_s)::Driver
32
33
  end
33
34
 
34
35
  # @param driver [Object] selenium or appium driver. default nil for Nokogiri
35
36
  # @return [AutomationObject::Driver::Driver]
36
- def new(driver = nil)
37
- adapted_driver = Driver.new(self.adapter.new(driver))
37
+ def create(driver = nil)
38
+ adapted_driver = Driver.new(adapter.new(driver))
38
39
 
39
- #Add throttling and mutex proxies around adapter
40
- return AutomationObject::Proxies::MutexProxy.new(
41
- AutomationObject::Proxies::ThrottleProxy.new(adapted_driver))
40
+ # Add throttling and mutex proxies around adapter
41
+ AutomationObject::Proxy::MutexProxy.new(
42
+ AutomationObject::Proxy::ThrottleProxy.new(adapted_driver)
43
+ )
42
44
  end
43
45
  end
44
- end
46
+ end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  require 'appium_lib'
2
3
 
3
- require_relative '../../proxies/proxy'
4
- require_relative '../helpers/selenium_driver_helper'
4
+ require_relative '../../proxy/proxy'
5
+
6
+ require_relative '../driver'
7
+ require_relative '../common_selenium/driver'
5
8
 
6
9
  require_relative '../element'
7
10
  require_relative 'element'
@@ -9,10 +12,10 @@ require_relative 'element'
9
12
  module AutomationObject
10
13
  module Driver
11
14
  module AppiumAdapter
12
- #Driver proxy for Appium
13
- #Conform Appium driver interface to what's expected of the Driver Port
14
- class Driver < AutomationObject::Proxies::Proxy
15
- include AutomationObject::Driver::SeleniumDriverHelper
15
+ # Driver proxy for Appium
16
+ # Conform Appium driver interface to what's expected of the Driver Port
17
+ class Driver < AutomationObject::Proxy::Proxy
18
+ include AutomationObject::Driver::CommonSelenium::Driver
16
19
 
17
20
  # @param driver [Appium::Driver] Appium Driver
18
21
  def initialize(driver)
@@ -26,16 +29,16 @@ module AutomationObject
26
29
  @subject.get(url)
27
30
  end
28
31
 
29
- # @param script [String] JS to run
30
- # @return [Object, nil]
31
- def execute_script(script)
32
- @subject.execute_script(script)
32
+ # Get the title of the document
33
+ # @return [String]
34
+ def title
35
+ @subject.title
33
36
  end
34
37
 
35
- #Set timeout wait
38
+ # Set timeout wait
36
39
  # @param timeout [Integer] the timeout in seconds
37
40
  # @return [void]
38
- def set_wait(timeout = nil)
41
+ def wait(timeout = nil)
39
42
  @subject.set_wait(timeout)
40
43
  end
41
44
 
@@ -43,7 +46,7 @@ module AutomationObject
43
46
  # @param selector_path [String] path to element
44
47
  # @return [Boolean] exists or not
45
48
  def exists?(selector_type, selector_path)
46
- return @subject.exists { @subject.find_element(selector_type, selector_path) }
49
+ @subject.exists { @subject.find_element(selector_type, selector_path) }
47
50
  end
48
51
 
49
52
  # @param selector_type [Symbol] selector type, :css, :xpath, etc...
@@ -51,8 +54,8 @@ module AutomationObject
51
54
  # @return [AutomationObject::Driver::Element] element
52
55
  def find_element(selector_type, selector_path)
53
56
  element = @subject.find_element(selector_type, selector_path)
54
- #Wrap element in the adapter interface
55
- return AutomationObject::Driver::Element.new(Element.new(driver: self, element: element))
57
+ # Wrap element in the adapter interface
58
+ AutomationObject::Driver::Element.new(Element.new(self, element))
56
59
  end
57
60
 
58
61
  # @param selector_type [Symbol] selector type, :css, :xpath, etc...
@@ -61,10 +64,10 @@ module AutomationObject
61
64
  def find_elements(selector_type, selector_path)
62
65
  elements = @subject.find_elements(selector_type, selector_path)
63
66
 
64
- elements.map { |element|
65
- #Wrap element in the adapter interface
66
- AutomationObject::Driver::Element.new(Element.new(driver: self, element: element))
67
- }
67
+ elements.map do |element|
68
+ # Wrap element in the adapter interface
69
+ AutomationObject::Driver::Element.new(Element.new(self, element))
70
+ end
68
71
  end
69
72
 
70
73
  # @return [void]
@@ -78,52 +81,50 @@ module AutomationObject
78
81
  end
79
82
 
80
83
  # @return [Boolean] whether or not browser is being used
81
- def is_browser?
82
- return @is_browser unless @is_browser == nil
83
- @is_browser = false
84
+ def browser?
85
+ return @browser unless @browser.nil?
86
+ @browser = false
84
87
 
85
- #Now we need to check Appium's contexts to see if WEBVIEW is in available_contexts
88
+ # Now we need to check Appium's contexts to see if WEBVIEW is in available_contexts
86
89
  available_contexts = @subject.available_contexts
87
- available_contexts.each { |context|
88
- if context.match(/^WEBVIEW_\d+$/)
89
- @is_browser = true
90
+ available_contexts.each do |context|
91
+ if context =~ /^WEBVIEW_\d+$/
92
+ @browser = true
90
93
  break
91
94
  end
92
- }
95
+ end
93
96
 
94
- return @is_browser
97
+ @browser
95
98
  end
96
99
 
97
- #Window Handles Override
100
+ # Window Handles Override
98
101
  # @return [Array<String>] array of window handles
99
102
  def window_handles
100
- if @subject.device_is_android? and self.is_browser?
103
+ if @subject.device_is_android? && is_browser?
101
104
  window_handles = @subject.window_handles
102
105
  else
103
- return @subject.available_contexts unless self.is_browser?
106
+ return @subject.available_contexts unless is_browser?
104
107
 
105
108
  window_handles = []
106
- @subject.available_contexts.each { |context|
107
- window_handles.push(context) if context.match(/^WEBVIEW_\d+$/)
108
- }
109
+ @subject.available_contexts.each do |context|
110
+ window_handles.push(context) if context =~ /^WEBVIEW_\d+$/
111
+ end
109
112
  end
110
113
 
111
- return window_handles
114
+ window_handles
112
115
  end
113
116
 
114
- #Get window handle override
117
+ # Get window handle override
115
118
  # @return [String] current window handle
116
119
  def window_handle
117
- return @subject.current_context unless self.is_browser?
120
+ return @subject.current_context unless is_browser?
118
121
 
119
- if @subject.device_is_android?
120
- return @subject.window_handle
121
- else
122
- return @subject.current_context
123
- end
122
+ return @subject.window_handle if @subject.device_is_android?
123
+
124
+ @subject.current_context
124
125
  end
125
126
 
126
- #Set window handle override
127
+ # Set window handle override
127
128
  # @param handle_value [String] window handle value
128
129
  # @return [void]
129
130
  def window_handle=(handle_value)
@@ -136,8 +137,8 @@ module AutomationObject
136
137
 
137
138
  # @return [Boolean] document is complete
138
139
  def document_complete?
139
- return true unless self.is_browser? #Skip for non-browser Appium sessions
140
- return @subject.execute_script('return document.readyState;') == 'complete'
140
+ return true unless is_browser? # Skip for non-browser Appium sessions
141
+ @subject.execute_script('return document.readyState;') == 'complete'
141
142
  end
142
143
 
143
144
  # @return [void]
@@ -147,4 +148,4 @@ module AutomationObject
147
148
  end
148
149
  end
149
150
  end
150
- end
151
+ end