automation_object 0.7.6 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|