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,16 +0,0 @@
1
- require_relative 'blue_print_adapter/top'
2
-
3
- module AutomationObject
4
- module State
5
- #State adapter for building DSL framework
6
- #Will work with the blueprints and adapter to accomplish the goal of maintaining the state
7
- #And give control of operations via the DSL
8
- module BluePrintAdapter
9
- # @param args [Hash] expects :blue_prints, :driver
10
- # @return [AutomationObject::State::BlueAdapter::Top]
11
- def self.build(blue_prints, driver)
12
- return Top.new(args.fetch(:blue_prints), args.fetch(:driver))
13
- end
14
- end
15
- end
16
- end
@@ -1,20 +0,0 @@
1
- require_relative 'composite'
2
- require_relative 'helpers/element_helper'
3
-
4
- require_relative 'element_proxy'
5
-
6
- module AutomationObject
7
- module State
8
- module BluePrintAdapter
9
- class Element < AutomationObject::State::BluePrintAdapter::Composite
10
- include ElementHelper
11
-
12
- # @return [AutomationObject::State::BluePrintAdapter::ElementProxy] Selenium proxy
13
- def load
14
- element = self.driver.find_element(*self.blue_prints.selector_params)
15
- ElementProxy.new(composite: self, element: element)
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,25 +0,0 @@
1
- require_relative 'composite'
2
- require_relative 'helpers/element_helper'
3
-
4
- require_relative 'element_proxy'
5
-
6
- module AutomationObject
7
- module State
8
- module BluePrintAdapter
9
- class ElementArray < AutomationObject::State::BluePrintAdapter::Composite
10
- include ElementHelper
11
-
12
- # @return [Array<AutomationObject::State::BluePrintAdapter::ElementProxy>] Selenium proxy
13
- def load
14
- elements = self.driver.find_elements(*self.blue_prints.selector_params)
15
-
16
- wrapped_elements = elements.map { |element|
17
- ElementProxy.new(composite: self, element: element)
18
- }
19
-
20
- return wrapped_elements
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,31 +0,0 @@
1
- require_relative 'composite'
2
- require_relative 'helpers/element_helper'
3
-
4
- require_relative 'element_proxy'
5
-
6
- module AutomationObject
7
- module State
8
- module BluePrintAdapter
9
- class ElementHash < AutomationObject::State::BluePrintAdapter::Composite
10
- include ElementHelper
11
-
12
- # @return [Hash<String, AutomationObject::State::BluePrintAdapter::ElementProxy>] Selenium proxy
13
- def load
14
- elements = self.driver.find_elements(*self.blue_prints.selector_params)
15
- elements_hash = {}
16
-
17
- elements.each { |element|
18
- #Want to wrap element, before sending for method!
19
- #That will help us include custom methods, etc...
20
- wrapped_element = ElementProxy.new(composite: self, element: element)
21
- hash_key = wrapped_element.send(self.blue_prints.define_elements_by) #Send to wrapped state proxy
22
-
23
- elements_hash[hash_key] = wrapped_element
24
- }
25
-
26
- return elements_hash
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,28 +0,0 @@
1
- require_relative '../../proxies/proxy'
2
-
3
- module AutomationObject
4
- module State
5
- module BluePrintAdapter
6
- #Proxy class to allow for usage of hooks
7
- class ElementProxy < AutomationObject::Proxies::Proxy
8
- def initialize(args = {})
9
- @composite = args.fetch :composite
10
- @subject = args.fetch :element
11
- end
12
-
13
- #Overiding base method to run possible hooks
14
- def method_missing(method_symbol, *args, &block)
15
- #Run before hook if needed
16
- @composite.method_hooks[method_symbol].before if @composite.method_hook?(method_symbol)
17
-
18
- subject_return = @subject.send(method_symbol, *args, &block)
19
-
20
- #Run after hook if needed
21
- @composite.method_hooks[method_symbol].after if @composite.method_hook?(method_symbol)
22
-
23
- return subject_return
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,137 +0,0 @@
1
- require_relative 'window'
2
-
3
- module AutomationObject
4
- module State
5
- module BluePrintAdapter
6
- module ScreenManager
7
- # @return [Array<Window>]
8
- def windows
9
- @windows ||= []
10
- end
11
-
12
- # @return [Array<String>] list of stored window handles
13
- def window_handles
14
- handles = []
15
- self.windows.each { |window|
16
- handles.push(window.window_handle)
17
- }
18
- return handles
19
- end
20
-
21
- def window_closed?(screen)
22
- self.windows.each { |window|
23
- if window.name == screen && window.closed?
24
- self.delete_screen(screen)
25
- return true
26
- end
27
- }
28
- end
29
-
30
- def set_screen(name)
31
- current_window_handle = self.driver.window_handle
32
- previous_window = nil
33
-
34
- self.windows.each { |window|
35
- if window.window_handle == current_window_handle
36
- previous_window = self.windows.delete(window)
37
- break
38
- end
39
- }
40
-
41
- self.windows << Window.new(name: name,
42
- window_handle: current_window_handle,
43
- previous_window: previous_window,
44
- driver: self.driver)
45
- end
46
-
47
- def create_screen(name)
48
- driver_handles = self.driver.window_handles
49
- diff_handles = driver_handles - self.window_handles
50
-
51
- #Should only have one extra window
52
- if diff_handles.length > 1
53
- raise "Expecting only one extra window, got #{diff_handles.length}"
54
- end
55
-
56
- self.windows << Window.new(name: name, window_handle: diff_handles.first, driver: self.driver)
57
- end
58
-
59
- def use_screen(name)
60
- current_window_handle = self.driver.window_handle
61
- self.windows.each { |window|
62
- next unless window.name == name
63
-
64
- break if window.window_handle == current_window_handle
65
-
66
- self.driver.window_handle = window.window_handle
67
- }
68
-
69
- @current_screen_name = name
70
- end
71
-
72
- def use_modal(modal_name)
73
- current_window.active_modal = modal_name
74
- end
75
-
76
- def delete_screen(name)
77
- self.windows.each { |window|
78
- self.windows.delete(name) if window.name == name
79
- }
80
- end
81
-
82
- def screen_exists?(name)
83
- self.windows.each { |window|
84
- return true if window.name == name
85
- }
86
-
87
- return false
88
- end
89
-
90
- def destroy_modal
91
- current_window.active_modal = nil
92
- end
93
-
94
- # @return [Window, nil]
95
- def current_window
96
- return nil unless @current_screen_name
97
- return self.get_window(@current_screen_name)
98
- end
99
-
100
- def get_window(name)
101
- self.windows.each { |window|
102
- return window if name == window.name
103
- }
104
-
105
- return nil
106
- end
107
-
108
- def current_composite
109
- if current_window.active_modal
110
- return self.screens[@current_screen_name].modals[current_window.active_modal]
111
- end
112
-
113
- return self.screens[@current_screen_name]
114
- end
115
-
116
- def current_screen
117
- @current_screen_name
118
- end
119
-
120
- def get_object(type, name)
121
- object = nil
122
-
123
- case type
124
- when :element
125
- object = self.current_composite.elements[name]
126
- when :element_array
127
- object = self.current_composite.element_arrays[name]
128
- when :element_hash
129
- object = self.current_composite.element_hashes[name]
130
- end
131
-
132
- return object.load
133
- end
134
- end
135
- end
136
- end
137
- end
@@ -1,39 +0,0 @@
1
- module AutomationObject
2
- module State
3
- module BluePrintAdapter
4
- class Window
5
- attr_accessor :name, :window_handle, :previous_window, :driver, :active_modal
6
-
7
- def initialize(args = {})
8
- self.name = args.fetch :name
9
- self.driver = args.fetch :driver
10
- self.window_handle = args.fetch :window_handle
11
-
12
- self.previous_window = args.fetch :previous_window, nil
13
- end
14
-
15
- # @return [Symbol, nil] name of screen or nil
16
- def previous_screen_name
17
- return (self.previous_window) ? self.previous_window.name : nil
18
- end
19
-
20
- #Change properties to the previous window if it exists
21
- def back
22
- return unless self.previous_window
23
-
24
- self.name = self.previous_window.name
25
-
26
- if self.previous_window.previous_window
27
- self.previous_window = self.previous_window.previous_window
28
- else
29
- self.previous_window = nil
30
- end
31
- end
32
-
33
- def closed?
34
- return !self.driver.window_handles.include?(self.window_handle)
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,56 +0,0 @@
1
- require_relative 'composite'
2
-
3
- require_relative 'hook_action'
4
- require_relative 'hook_actions/element_requirement'
5
-
6
- module AutomationObject
7
- module State
8
- module BluePrintAdapter
9
- class Hook < AutomationObject::State::BluePrintAdapter::Composite
10
- # @return [Boolean, nil] return nil if no live? check, otherwise boolean
11
- def live?
12
- self.before
13
-
14
- return nil if self.blue_prints.live?.empty?
15
-
16
- self.blue_prints.live?.each { |element_requirement_blueprints|
17
- hook_element_requirement = ElementRequirement.new(blue_prints: element_requirement_blueprints,
18
- composite: self,
19
- loops: 1)
20
- return false unless hook_element_requirement.run
21
- }
22
-
23
- self.after
24
-
25
- return true
26
- end
27
-
28
- #Runs the before hook
29
- # @return [Boolean, nil] return nil unless there is a hook, otherwise boolean depending on success of hook
30
- def before
31
- return nil if self.blue_prints.before.empty?
32
-
33
- hook_action = HookAction.new(self.blue_prints.before,
34
- self.driver,
35
- :hook_action,
36
- self,
37
- self.location + '[hook_action]')
38
- return hook_action.run
39
- end
40
-
41
- #Runs the after hook
42
- # @return [Boolean, nil] return nil unless there is a hook, otherwise boolean depending on success of hook
43
- def after
44
- return nil if self.blue_prints.after.empty?
45
-
46
- hook_action = HookAction.new(self.blue_prints.after,
47
- self.driver,
48
- :hook_action,
49
- self,
50
- self.location + '[hook_action]')
51
- return hook_action.run
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,35 +0,0 @@
1
- module AutomationObject
2
- module State
3
- module BluePrintAdapter
4
- class ActionLoop
5
- attr_accessor :composite, :blue_prints, :loops
6
-
7
- def initialize(args = {})
8
- self.blue_prints = args.fetch(:blue_prints)
9
- self.composite = args.fetch(:composite)
10
- self.loops = args.fetch(:loops, 30)
11
- end
12
-
13
- def driver
14
- return self.composite.driver
15
- end
16
-
17
- # @return [Boolean] run success or not
18
- def run
19
- self.loops.times do
20
- if self.single_run
21
- return true
22
- end
23
- end
24
-
25
- return false
26
- end
27
-
28
- # @return [Boolean] success or not
29
- def single_run
30
- raise 'Abstract Issue'
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,31 +0,0 @@
1
- require_relative 'action_loop'
2
- require_relative '../modal'
3
- require_relative '../../error'
4
-
5
- module AutomationObject
6
- module State
7
- module BluePrintAdapter
8
- class CloseModal < ActionLoop
9
- def single_run
10
- self.driver.document_complete_wait
11
-
12
- unless self.composite.parent.is_a?(Modal)
13
- raise ModalParentExpected.new
14
- end
15
-
16
- modal = self.composite.parent
17
- modal.active = modal.live?
18
-
19
- if !modal.active?
20
- self.composite.screen.modal = nil
21
- self.composite.screen.current_modal = nil
22
- self.composite.top.destroy_modal()
23
- return true
24
- else
25
- return false
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,19 +0,0 @@
1
- require_relative 'action_loop'
2
- require_relative '../../error'
3
-
4
- module AutomationObject
5
- module State
6
- module BluePrintAdapter
7
- class CloseScreen < ActionLoop
8
- def single_run
9
- unless self.composite.screen
10
- raise ScreenParentExpected.new
11
- end
12
-
13
- screen_name = self.composite.screen.name
14
- return self.composite.top.window_closed?(screen_name)
15
- end
16
- end
17
- end
18
- end
19
- end