automation_object 0.7.6 → 0.8.0
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.
- checksums.yaml +4 -4
- data/lib/automation_object/blue_print.rb +1 -0
- data/lib/automation_object/blue_print/composite/{automatic_onload_modal.rb → automatic_modal_change.rb} +3 -4
- data/lib/automation_object/blue_print/composite/base.rb +1 -0
- data/lib/automation_object/blue_print/composite/custom_method.rb +2 -3
- data/lib/automation_object/blue_print/composite/element.rb +2 -3
- data/lib/automation_object/blue_print/composite/element_array.rb +2 -3
- data/lib/automation_object/blue_print/composite/element_hash.rb +2 -3
- data/lib/automation_object/blue_print/composite/helpers/container_helper.rb +75 -0
- data/lib/automation_object/blue_print/composite/helpers/element_helper.rb +30 -1
- data/lib/automation_object/blue_print/composite/helpers/multiple_elements_helper.rb +1 -0
- data/lib/automation_object/blue_print/composite/hook.rb +18 -6
- data/lib/automation_object/blue_print/composite/hook_action.rb +3 -4
- data/lib/automation_object/blue_print/composite/hook_element_requirements.rb +3 -4
- data/lib/automation_object/blue_print/composite/modal.rb +12 -9
- data/lib/automation_object/blue_print/composite/screen.rb +17 -14
- data/lib/automation_object/blue_print/composite/top.rb +3 -2
- data/lib/automation_object/blue_print/composite/view.rb +8 -7
- data/lib/automation_object/blue_print/hash_adapter.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/{automatic_onload_modal.rb → automatic_modal_change.rb} +3 -2
- data/lib/automation_object/blue_print/hash_adapter/composite.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/custom_method.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/element.rb +2 -0
- data/lib/automation_object/blue_print/hash_adapter/element_array.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/element_hash.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/element_helper.rb +8 -2
- data/lib/automation_object/blue_print/hash_adapter/helpers/multiple_elements_helper.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validation_error.rb +2 -1
- data/lib/automation_object/blue_print/hash_adapter/helpers/validation_helper.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_element_presence_of.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb +1 -0
- data/lib/automation_object/blue_print/hash_adapter/hook.rb +2 -1
- data/lib/automation_object/blue_print/hash_adapter/hook_action.rb +4 -3
- data/lib/automation_object/blue_print/hash_adapter/hook_element_requirements.rb +2 -1
- data/lib/automation_object/blue_print/hash_adapter/modal.rb +2 -1
- data/lib/automation_object/blue_print/hash_adapter/screen.rb +14 -13
- data/lib/automation_object/blue_print/hash_adapter/top.rb +3 -2
- data/lib/automation_object/blue_print/hash_adapter/view.rb +12 -11
- data/lib/automation_object/blue_print/yaml_adapter.rb +1 -0
- data/lib/automation_object/driver.rb +1 -0
- data/lib/automation_object/driver/appium_adapter/driver.rb +2 -1
- data/lib/automation_object/driver/appium_adapter/element.rb +1 -0
- data/lib/automation_object/driver/base.rb +1 -0
- data/lib/automation_object/driver/common_selenium/driver.rb +1 -0
- data/lib/automation_object/driver/common_selenium/element.rb +1 -0
- data/lib/automation_object/driver/common_selenium/element_geometry.rb +1 -0
- data/lib/automation_object/driver/driver.rb +1 -0
- data/lib/automation_object/driver/element.rb +1 -0
- data/lib/automation_object/driver/nokogiri_adapter/driver.rb +5 -8
- data/lib/automation_object/driver/nokogiri_adapter/element.rb +9 -14
- data/lib/automation_object/driver/nokogiri_adapter/error.rb +1 -0
- data/lib/automation_object/driver/nokogiri_adapter/form.rb +1 -0
- data/lib/automation_object/driver/nokogiri_adapter/request.rb +1 -0
- data/lib/automation_object/driver/nokogiri_adapter/session.rb +1 -0
- data/lib/automation_object/driver/nokogiri_adapter/window.rb +1 -0
- data/lib/automation_object/driver/selenium_adapter/driver.rb +1 -0
- data/lib/automation_object/driver/selenium_adapter/element.rb +1 -0
- data/lib/automation_object/dsl.rb +4 -2
- data/lib/automation_object/dsl/_base.rb +11 -1
- data/lib/automation_object/dsl/_error.rb +71 -0
- data/lib/automation_object/dsl/_proxy.rb +1 -0
- data/lib/automation_object/dsl/element.rb +2 -2
- data/lib/automation_object/dsl/element_array.rb +2 -2
- data/lib/automation_object/dsl/element_hash.rb +2 -2
- data/lib/automation_object/dsl/modal.rb +47 -2
- data/lib/automation_object/dsl/screen.rb +67 -3
- data/lib/automation_object/dsl/top.rb +19 -0
- data/lib/automation_object/framework.rb +18 -1
- data/lib/automation_object/helpers/composite.rb +3 -1
- data/lib/automation_object/helpers/composite_hook.rb +1 -0
- data/lib/automation_object/helpers/file.rb +1 -0
- data/lib/automation_object/helpers/hash.rb +1 -0
- data/lib/automation_object/helpers/kernel.rb +1 -0
- data/lib/automation_object/helpers/reflection.rb +1 -0
- data/lib/automation_object/helpers/string.rb +1 -0
- data/lib/automation_object/proxy/mutex_proxy.rb +1 -0
- data/lib/automation_object/proxy/proxy.rb +1 -0
- data/lib/automation_object/proxy/throttle_proxy.rb +2 -1
- data/lib/automation_object/state.rb +5 -1
- data/lib/automation_object/state/_base.rb +2 -1
- data/lib/automation_object/state/_common_element.rb +5 -0
- data/lib/automation_object/state/_error.rb +1 -0
- data/lib/automation_object/state/automatic_modal_change.rb +13 -0
- data/lib/automation_object/state/automatic_screen_changes.rb +13 -0
- data/lib/automation_object/state/element.rb +2 -1
- data/lib/automation_object/state/element_array.rb +2 -1
- data/lib/automation_object/state/element_hash.rb +2 -1
- data/lib/automation_object/state/element_proxy.rb +1 -0
- data/lib/automation_object/state/helpers/automatic_routing.rb +96 -0
- data/lib/automation_object/state/helpers/container_helper.rb +46 -0
- data/lib/automation_object/state/hook.rb +1 -0
- data/lib/automation_object/state/hook_action.rb +1 -0
- data/lib/automation_object/state/hook_actions/action_loop.rb +1 -0
- data/lib/automation_object/state/hook_actions/change_screen.rb +1 -0
- data/lib/automation_object/state/hook_actions/change_to_previous_screen.rb +1 -0
- data/lib/automation_object/state/hook_actions/close_modal.rb +1 -0
- data/lib/automation_object/state/hook_actions/close_screen.rb +1 -0
- data/lib/automation_object/state/hook_actions/element_requirement.rb +1 -0
- data/lib/automation_object/state/hook_actions/new_screen.rb +1 -0
- data/lib/automation_object/state/hook_actions/possible_screen_changes.rb +1 -0
- data/lib/automation_object/state/hook_actions/reset_screen.rb +1 -0
- data/lib/automation_object/state/hook_actions/show_modal.rb +1 -0
- data/lib/automation_object/state/hook_actions/sleep.rb +1 -0
- data/lib/automation_object/state/hook_actions/wait_for_elements.rb +1 -0
- data/lib/automation_object/state/modal.rb +5 -14
- data/lib/automation_object/state/screen.rb +33 -19
- data/lib/automation_object/state/top.rb +17 -2
- data/lib/automation_object/step_definitions.rb +3 -4
- data/lib/automation_object/step_definitions/element.rb +22 -23
- data/lib/automation_object/step_definitions/element_array.rb +26 -27
- data/lib/automation_object/step_definitions/element_hash.rb +26 -27
- data/lib/automation_object/step_definitions/modal.rb +31 -0
- data/lib/automation_object/step_definitions/screen.rb +22 -10
- data/lib/automation_object/step_definitions/support/cache.rb +5 -2
- data/lib/automation_object/step_definitions/support/element_array.rb +1 -1
- data/lib/automation_object/step_definitions/support/parse.rb +1 -1
- data/lib/automation_object/version.rb +2 -1
- metadata +59 -39
- data/lib/automation_object/step_definitions/support/minitest.rb +0 -10
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AutomationObject
|
4
|
+
module State
|
5
|
+
module ContainerHelper
|
6
|
+
# Whether or not modal is active
|
7
|
+
attr_accessor :active
|
8
|
+
|
9
|
+
# @return [Boolean] screen is active or not
|
10
|
+
def active?
|
11
|
+
@active ||= false
|
12
|
+
end
|
13
|
+
|
14
|
+
# Automatically find a way to go to this screen
|
15
|
+
# @return [Boolean]
|
16
|
+
def go
|
17
|
+
if active?
|
18
|
+
utilize
|
19
|
+
return true
|
20
|
+
end
|
21
|
+
|
22
|
+
AutomaticRouting.new(top, name).route
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Array<Symbol>]
|
26
|
+
def changes
|
27
|
+
blue_prints.changes
|
28
|
+
end
|
29
|
+
|
30
|
+
# @param name [Symbol] name of container you want to go to
|
31
|
+
# @return [AutomationObject::State::Element]
|
32
|
+
def element_to_container(name)
|
33
|
+
element_name, element_type = blue_prints.element_to_container(name)
|
34
|
+
return unless element_name || element_type
|
35
|
+
|
36
|
+
send(element_type)[element_name]
|
37
|
+
end
|
38
|
+
|
39
|
+
def reset
|
40
|
+
elements.values.map(&:reset)
|
41
|
+
element_arrays.values.map(&:reset)
|
42
|
+
element_hashes.values.map(&:reset)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative '_base'
|
3
4
|
require_relative '_error'
|
4
5
|
|
@@ -6,10 +7,14 @@ require_relative 'element'
|
|
6
7
|
require_relative 'element_array'
|
7
8
|
require_relative 'element_hash'
|
8
9
|
|
10
|
+
require_relative 'helpers/container_helper'
|
11
|
+
|
9
12
|
module AutomationObject
|
10
13
|
module State
|
11
14
|
# Modal composite for managing state
|
12
15
|
class Modal < Base
|
16
|
+
include ContainerHelper
|
17
|
+
|
13
18
|
has_one :load, interface: Hook
|
14
19
|
|
15
20
|
has_many :elements, interface: Element
|
@@ -20,14 +25,6 @@ module AutomationObject
|
|
20
25
|
raise ModalNotActiveError, name unless active?
|
21
26
|
end
|
22
27
|
|
23
|
-
# Whether or not modal is active
|
24
|
-
attr_accessor :active
|
25
|
-
|
26
|
-
# @return [Boolean] screen is active or not
|
27
|
-
def active?
|
28
|
-
@active ||= false
|
29
|
-
end
|
30
|
-
|
31
28
|
def activate
|
32
29
|
@active = true
|
33
30
|
end
|
@@ -36,12 +33,6 @@ module AutomationObject
|
|
36
33
|
@active = false
|
37
34
|
reset
|
38
35
|
end
|
39
|
-
|
40
|
-
def reset
|
41
|
-
elements.values.map(&:reset)
|
42
|
-
element_arrays.values.map(&:reset)
|
43
|
-
element_hashes.values.map(&:reset)
|
44
|
-
end
|
45
36
|
end
|
46
37
|
end
|
47
38
|
end
|
@@ -1,70 +1,84 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative '_base'
|
3
4
|
require_relative '_error'
|
4
5
|
|
6
|
+
require_relative 'automatic_modal_change'
|
7
|
+
require_relative 'automatic_screen_changes'
|
5
8
|
require_relative 'modal'
|
6
9
|
require_relative 'hook'
|
7
10
|
require_relative 'element'
|
8
11
|
require_relative 'element_array'
|
9
12
|
require_relative 'element_hash'
|
10
13
|
|
14
|
+
require_relative 'helpers/automatic_routing'
|
15
|
+
require_relative 'helpers/container_helper'
|
16
|
+
|
11
17
|
module AutomationObject
|
12
18
|
module State
|
13
19
|
# Screen composite for managing state
|
14
20
|
class Screen < Base
|
21
|
+
include ContainerHelper
|
22
|
+
|
15
23
|
attr_accessor :modal, :window_handle, :previous_screen_name
|
16
24
|
|
25
|
+
# @return [AutomaticScreenChanges]
|
26
|
+
attr_accessor :automatic_screen_changes
|
27
|
+
|
17
28
|
has_one :load, interface: Hook
|
18
29
|
|
19
30
|
# Children for this composite
|
31
|
+
# has_many :automatic_modal_changes, interface: AutomaticModalChange
|
20
32
|
has_many :modals, interface: Modal
|
21
33
|
|
22
34
|
has_many :elements, interface: Element
|
23
35
|
has_many :element_arrays, interface: ElementArray
|
24
36
|
has_many :element_hashes, interface: ElementHash
|
25
37
|
|
26
|
-
#
|
27
|
-
attr_accessor :active
|
28
|
-
|
29
|
-
# @return [Boolean] screen is active or not
|
30
|
-
def active?
|
31
|
-
@active ||= false
|
32
|
-
end
|
33
|
-
|
38
|
+
# @return [void]
|
34
39
|
def activate
|
35
40
|
@active = true
|
36
41
|
self.window_handle = driver.window_handle
|
42
|
+
|
43
|
+
return if blue_prints.automatic_screen_changes.empty?
|
44
|
+
|
45
|
+
# Add automatic screen change to a new thread and test for screen changes
|
46
|
+
self.automatic_screen_changes = AutomaticScreenChanges.new(driver,
|
47
|
+
blue_prints.automatic_screen_changes,
|
48
|
+
:automatic_screen_changes,
|
49
|
+
self,
|
50
|
+
location + '[automatic_screen_changes]')
|
51
|
+
automatic_screen_changes.activate
|
37
52
|
end
|
38
53
|
|
54
|
+
# @return [void]
|
39
55
|
def deactivate
|
56
|
+
automatic_screen_changes&.deactivate
|
57
|
+
|
58
|
+
self.automatic_screen_changes, self.window_handle = nil
|
40
59
|
@active = false
|
41
|
-
|
60
|
+
|
42
61
|
modals.values.map(&:deactivate)
|
43
62
|
reset
|
44
63
|
end
|
45
64
|
|
65
|
+
# @return [void]
|
46
66
|
def utilize
|
47
67
|
raise ScreenNotActiveError, name unless active?
|
48
|
-
driver.window_handle = window_handle
|
68
|
+
driver.window_handle = window_handle
|
49
69
|
end
|
50
70
|
|
71
|
+
# @return [void]
|
51
72
|
def close
|
52
|
-
|
53
|
-
|
54
|
-
driver.window_handle = window_handle if window_handle != driver.window_handle
|
73
|
+
utilize
|
55
74
|
driver.close
|
75
|
+
deactivate
|
56
76
|
end
|
57
77
|
|
58
78
|
# @return [Boolean]
|
59
79
|
def closed?
|
60
80
|
!driver.window_handles.include?(window_handle)
|
61
81
|
end
|
62
|
-
|
63
|
-
def reset
|
64
|
-
elements.values.map(&:reset)
|
65
|
-
element_arrays.values.map(&:reset)
|
66
|
-
element_hashes.values.map(&:reset)
|
67
|
-
end
|
68
82
|
end
|
69
83
|
end
|
70
84
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative '_base'
|
3
4
|
require_relative '_error'
|
4
5
|
|
@@ -9,11 +10,20 @@ module AutomationObject
|
|
9
10
|
# Top composite for managing state
|
10
11
|
class Top < Base
|
11
12
|
# Children for this composite
|
13
|
+
# @return [Hash<Screen>]
|
12
14
|
has_many :screens, interface: Screen
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
+
# @param driver [AutomationObject::Driver] driver
|
17
|
+
# @param blue_prints [AutomationObject::BluePrint::Composite::Base] blue print composite
|
18
|
+
# @param name [Symbol] name of composite element
|
19
|
+
# @param parent [Object, nil] parent composite object
|
20
|
+
# @param location [String] string location for error/debugging purposes
|
21
|
+
def initialize(driver, blue_prints, name = :top, parent = nil, location = 'top')
|
22
|
+
super
|
23
|
+
end
|
16
24
|
|
25
|
+
# @return [Void]
|
26
|
+
def start
|
17
27
|
driver.get(blue_prints.base_url) if blue_prints.base_url
|
18
28
|
set_initial_screen
|
19
29
|
end
|
@@ -38,6 +48,11 @@ module AutomationObject
|
|
38
48
|
|
39
49
|
raise AutomationObject::State::NoInitialScreenError
|
40
50
|
end
|
51
|
+
|
52
|
+
# @return [Hash<Screen>] active screens
|
53
|
+
def active_screens
|
54
|
+
screens.select { |_key, value| value.active? }
|
55
|
+
end
|
41
56
|
end
|
42
57
|
end
|
43
58
|
end
|
@@ -1,14 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module AutomationObject
|
3
4
|
# Require step definitons at run-time, only when running in a Cucumber context
|
4
5
|
module StepDefinitions
|
5
6
|
module_function
|
6
7
|
|
7
8
|
def load
|
8
|
-
# Using
|
9
|
-
require '
|
10
|
-
require 'minitest/unit'
|
11
|
-
require 'minitest-bonus-assertions'
|
9
|
+
# Using rspec to run assertions
|
10
|
+
require 'rspec/expectations'
|
12
11
|
|
13
12
|
Dir[File.dirname(__FILE__) + '/step_definitions/**/*.rb'].each { |file| require file }
|
14
13
|
end
|
@@ -1,78 +1,77 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require_relative 'support/parse'
|
3
|
-
require_relative 'support/minitest'
|
4
3
|
|
5
4
|
# Description: Provides step definitions related to elements
|
6
5
|
|
7
|
-
#
|
6
|
+
# Call an element method
|
8
7
|
# Examples:
|
9
8
|
# - I click on the "home_screen" "about_button" element
|
10
9
|
# - I hover over the "home_screen" "test_link" element
|
11
10
|
# - I tap on "home_screen" "logo_button" element
|
12
|
-
When(
|
11
|
+
When(%r(^I (\w+|%\{\w+\}) ?(?: on| over)? (?:the )?"(\w+|%\{\w+\})" "(\w+|%\{\w+\})" element$)) do |*args|
|
13
12
|
method, screen, element = AutomationObject::StepDefinitions::Parse.new(args).get
|
14
|
-
AutomationObject::Framework.get.
|
13
|
+
AutomationObject::Framework.get.screen(screen).element(element).send(method)
|
15
14
|
end
|
16
15
|
|
17
|
-
# For:
|
16
|
+
# For: Type into element field
|
18
17
|
# Examples:
|
19
18
|
# - I type "blah" into the "home_screen" "text_field" element
|
20
19
|
# - I type "test" in the "home_screen" "text_field" element
|
21
20
|
# - I type "blah" in "home_screen" "text_field" element
|
22
|
-
When(
|
21
|
+
When(%r(^I type "([^"]+|%\{\w+\})" in(?:to)? (?:the )?"(\w+|%\{\w+\})" "(\w+|%\{\w+\})" element$)) do |*args|
|
23
22
|
text, screen, element = AutomationObject::StepDefinitions::Parse.new(args).get
|
24
|
-
AutomationObject::Framework.get.
|
23
|
+
AutomationObject::Framework.get.screen(screen).element(element).send_keys(text)
|
25
24
|
end
|
26
25
|
|
27
|
-
# For:
|
26
|
+
# For: Scroll element into focus
|
28
27
|
# Examples:
|
29
28
|
# - I scroll to the "home_screen" "logo_button" element
|
30
29
|
# - I focus to the "home_screen" "logo_button" element
|
31
30
|
# - I scroll to "home_screen" "logo_button" element
|
32
|
-
When(
|
31
|
+
When(%r(^I (?:scroll |focus )to (?:the )?"(\w+|%\{\w+\})" "(\w+|%\{\w+\})" element$)) do |*args|
|
33
32
|
screen, element = AutomationObject::StepDefinitions::Parse.new(args).get
|
34
|
-
AutomationObject::Framework.get.
|
33
|
+
AutomationObject::Framework.get.screen(screen).element(element).scroll_into_view
|
35
34
|
end
|
36
35
|
|
37
|
-
# For:
|
36
|
+
# For: Save value from element for use later
|
38
37
|
# Examples:
|
39
38
|
# - I save "text" as "unique_value" from the "home_screen" "logo_button" element
|
40
39
|
# - I save "id" as "unique_value" from "home_screen" "logo_button" element
|
41
|
-
When(
|
40
|
+
When(%r(^I save "(\w+|%\{\w+\})" as "(\w+)" from (?:the )?"(\w+|%\{\w+\})" "(\w+|%\{\w+\})" element$)) do |*args|
|
42
41
|
method, key, screen, element = AutomationObject::StepDefinitions::Parse.new(args).get
|
43
42
|
# Save value from called method/property
|
44
|
-
value = AutomationObject::Framework.get.
|
43
|
+
value = AutomationObject::Framework.get.screen(screen).element(element).send(method)
|
45
44
|
AutomationObject::StepDefinitions::Cache.set(key, value)
|
46
45
|
end
|
47
46
|
|
48
|
-
# For:
|
47
|
+
# For: Test if the element exists or not
|
49
48
|
# Examples:
|
50
49
|
# - the "home_screen" "title" element should exist
|
51
50
|
# - the "home_screen" "title" element shouldn't exist
|
52
51
|
# - "home_screen" "title" element should not exist
|
53
|
-
Then(
|
52
|
+
Then(%r(^(?:the )?"(\w+|%\{\w+\})" "(\w+|%\{\w+\})" element should ?(n't |not )?exist$)) do |*args|
|
54
53
|
screen, element, negative = AutomationObject::StepDefinitions::Parse.new(args).get
|
55
54
|
|
56
|
-
exists = AutomationObject::Framework.get.
|
55
|
+
exists = AutomationObject::Framework.get.screen(screen).element(element).exists?
|
57
56
|
if negative
|
58
|
-
|
57
|
+
expect(exists).to eq(false)
|
59
58
|
else
|
60
|
-
|
59
|
+
expect(exists).to eq(true)
|
61
60
|
end
|
62
61
|
end
|
63
62
|
|
64
|
-
# For:
|
63
|
+
# For: Test if the element method value equals a given value
|
65
64
|
# Examples:
|
66
65
|
# - the "home_screen" "title" element "text" should equal "Home"
|
67
66
|
# - "home_screen" "title" element "text" should not equal "About"
|
68
67
|
# - the "home_screen" "title" element "text" shouldn't equal "%{saved_value}"
|
69
|
-
Then(
|
68
|
+
Then(%r(^(?:the )?"(\w+|%\{\w+\})" "(\w+|%\{\w+\})" element "(\w+|%\{\w+\})" should ?(n't |not )?equal "(\w+|%\{\w+\})"$)) do |*args|
|
70
69
|
screen, element, method, negative, expected_value = AutomationObject::StepDefinitions::Parse.new(args).get
|
71
70
|
|
72
|
-
actual_value = AutomationObject::Framework.get.
|
71
|
+
actual_value = AutomationObject::Framework.get.screen(screen).element(element).send(method)
|
73
72
|
if negative
|
74
|
-
|
73
|
+
expect(expected_value).not_to eq(actual_value)
|
75
74
|
else
|
76
|
-
|
75
|
+
expect(expected_value).to eq(actual_value)
|
77
76
|
end
|
78
77
|
end
|