testimonium 1.2.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d6661e3f0e21f8df37dd23a84fc92092445b8d9a6e256876b0661b3615206d7
4
- data.tar.gz: e9c06ae626a5835604507cc18d0358b453b14ada9ae5a03b97ee0eaebe026df7
3
+ metadata.gz: b21b53f330b2f5650b1955c05221bdb92e6796e8375d8c99f9222954ab3e6598
4
+ data.tar.gz: 29562b6c0cb967808d7e1c45843527764ce476d968d9269cb37317781e19040c
5
5
  SHA512:
6
- metadata.gz: 731ef578679790ce44444ec4cb9d01efe81d4ca95195b4e4b5b5cd500c8bea498ff8e63b94862c84d93671eb1ff70a4907c88f974669f53e13e462819eea5693
7
- data.tar.gz: 27c500ed8845606215f33485c1d061eba4a6f5c98ab15b732b264cc16a9df6d6b3b032eddc6b8b90e9aa2a3dd4247bdd6fb513502aa537ab5debe35b3696431a
6
+ metadata.gz: 9cc0ce457603e0207038623812c406b25abbc1ca5d73b4a82fefc14b2f9f71a4e7bc7f140733cd2710dbc00034a6a22b09cecacd26bfe3d5d9ce6b13748c1330
7
+ data.tar.gz: a13d134380a80097d4c5aec069f837bfac65c4c81a5b289105d1ef7c88b7c3fa4042ccaef2e95abb6c01abc233db4af05223b743b6236e4b14759172cc913ae7
@@ -3,7 +3,12 @@
3
3
  module Testimonium
4
4
  # Find functions
5
5
  module Find
6
- # Find element by xpath
6
+ # Find element by xpath.
7
+ #
8
+ # @param xpath [String] Element Xpath.
9
+ # @param timeout [Integer] Timeout seconds between retries.
10
+ # @param retries [Integer] Amount of retries.
11
+ # @return [element] if element is found.
7
12
  def find_element_by_xpath(path, timeout = 3, retries = 5)
8
13
  element = nil
9
14
  count = 0
@@ -17,54 +22,80 @@ module Testimonium
17
22
  rescue Selenium::WebDriver::Error::NoSuchElementError
18
23
  end
19
24
 
20
- log("Found on attempt #{count}") if element
25
+ logger("Found '#{path}' on attempt #{count}") if element
21
26
  return element if element
22
27
  end
23
28
 
24
- log("Failed to find: '#{path}'. Number of attempts: #{count}")
25
- false
29
+ logger("Failed to find '#{path}'. Number of attempts: #{count}")
30
+ nil
26
31
  end
27
32
 
28
- # Find element by element id
29
- def find_element_by_id(id_string, timeout = 2, retries = 5)
30
- find_element_id(id_string, timeout, retries)
33
+ # Find element by element id.
34
+ #
35
+ # @param id [String] Element ID.
36
+ # @param timeout [Integer] Timeout seconds between retries.
37
+ # @param retries [Integer] Amount of retries.
38
+ # @return [element] if element is found.
39
+ def find_element_by_id(id, timeout = 2, retries = 5)
40
+ find_element_id(id, timeout, retries)
31
41
  end
32
42
 
33
- # Find element by text
34
- def find_element_by_text(text_string, timeout = 2, retries = 5)
35
- if device_android
36
- return find_element_by_xpath("//*[@text='#{text_string}']", timeout, retries)
37
- end
38
- return find_text_ios(text_string, timeout, retries) if device_ios
43
+ # Find element by text.
44
+ #
45
+ # @param text [String] Element Text.
46
+ # @param timeout [Integer] Timeout seconds between retries.
47
+ # @param retries [Integer] Amount of retries.
48
+ # @return [element] if element is found.
49
+ def find_element_by_text(text, timeout = 2, retries = 5)
50
+ return find_element_by_xpath("//*[@text='#{text}']", timeout, retries) if device_android
51
+ return find_text_ios(text, timeout, retries) if device_ios
39
52
  end
40
53
 
41
- # Android only: Needs app package name set as const. _ANDROID_PACKAGE_
54
+ # Find element by resourceid.
55
+ #
56
+ # Android only - Needs app package name set as constant ANDROID_PACKAGE.
57
+ #
58
+ # @param id [String] Element ID.
59
+ # @param timeout [Integer] Timeout seconds between retries.
60
+ # @param retries [Integer] Amount of retries.
61
+ # @return [element] if element is found.
42
62
  def find_element_by_resourceid(id, timeout = 2, retries = 5)
43
63
  if defined?(ANDROID_PACKAGE).nil?
44
- log('ANDROID_PACKAGE variable is missing.')
64
+ logger('ANDROID_PACKAGE is missing.', 'fatal')
45
65
  raise Selenium::WebDriver::Error::NoSuchElementError
46
66
  end
47
67
 
48
68
  find_element_by_xpath("//*[@resource-id='#{ANDROID_PACKAGE}:id/#{id}']", timeout, retries)
49
69
  end
50
70
 
51
- # Needs app package name set as const. _ANDROID_PACKAGE_
52
- def find_all_elements_by_id(id_string, timeout = 2, retries = 5)
71
+ # Find all elements with id.
72
+ #
73
+ # Android needs app package name set as constant ANDROID_PACKAGE.
74
+ #
75
+ # @param id [String] Element ID.
76
+ # @param timeout [Integer] Timeout seconds between retries.
77
+ # @param retries [Integer] Amount of retries.
78
+ # @return [list] if elements are found.
79
+ def find_all_elements_by_id(id, timeout = 2, retries = 5)
53
80
  list = nil
81
+ count = 0
54
82
 
55
83
  retries.times do
56
84
  sleep timeout
85
+ count += 1
57
86
 
58
87
  begin
59
- list = ids(id_string) if device_android
60
- list = find_elements(:id, id_string) if device_ios
88
+ list = ids(id) if device_android
89
+ list = find_elements(:id, id) if device_ios
61
90
  rescue Selenium::WebDriver::Error::NoSuchElementError
62
91
  end
63
92
 
93
+ logger("Found all elements with id '#{id}' on attempt #{count}") if list
64
94
  return list if list
65
95
  end
66
96
 
67
- false
97
+ logger("Failed to find elements with id '#{id}'. Number of attempts: #{count}")
98
+ nil
68
99
  end
69
100
  end
70
101
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'logger'
4
+
3
5
  def find_function(function_type, parameter, timeout_time = 2, retries = 5)
4
6
  element = nil
5
7
  count = 0
@@ -14,11 +16,11 @@ def find_function(function_type, parameter, timeout_time = 2, retries = 5)
14
16
  rescue Selenium::WebDriver::Error::NoSuchElementError
15
17
  end
16
18
 
17
- log("Found: '#{parameter}' on attempt #{count}") if element
19
+ logger("Found: '#{parameter}' on attempt #{count}") if element
18
20
  return element if element
19
21
  end
20
22
 
21
- log("Failed to find: '#{function_type} = #{parameter}'. Number of attempts: #{count}")
23
+ logger("Failed to find: '#{function_type} = #{parameter}'. Number of attempts: #{count}")
22
24
  false
23
25
  end
24
26
 
@@ -37,3 +39,18 @@ end
37
39
  def device_ios
38
40
  ENV['PLATFORM'] == 'ios'
39
41
  end
42
+
43
+ # @param msg [String] the log message
44
+ # @param severity [String] the severity of the message, 'debug' by default
45
+ def logger(msg, severity = 'debug')
46
+ logger = Logger.new($stdout)
47
+ logger.formatter = proc { |severity, datetime, _progname, msg| "#{severity}, #{datetime}, #{msg}\n" }
48
+
49
+ if severity.eql?('debug')
50
+ logger.debug(msg)
51
+ elsif severity.eql?('fatal')
52
+ logger.fatal(msg)
53
+ else
54
+ logger.info(msg)
55
+ end
56
+ end
@@ -3,26 +3,44 @@
3
3
  module Testimonium
4
4
  # Tap functions
5
5
  module Tap
6
- # Tap element by element id
7
- def tap_element_by_id(id_string, timeout = 2, retries = 5)
8
- find_element_by_id(id_string, timeout, retries).click
6
+ # Tap element by id.
7
+ #
8
+ # @param id [String] Element ID.
9
+ # @param timeout [Integer] Timeout seconds between retries.
10
+ # @param retries [Integer] Amount of retries.
11
+ def tap_element_by_id(id, timeout = 2, retries = 5)
12
+ find_element_by_id(id, timeout, retries).click
9
13
  end
10
14
 
11
- # Tap element by text
12
- def tap_element_by_text(text_string, timeout = 2, retries = 5)
13
- find_element_by_text(text_string, timeout, retries).click if device_android
14
- find_text_ios(text_string, timeout, retries).click if device_ios
15
+ # Tap element by text.
16
+ #
17
+ # @param text [String] Element Text.
18
+ # @param timeout [Integer] Timeout seconds between retries.
19
+ # @param retries [Integer] Amount of retries.
20
+ def tap_element_by_text(text, timeout = 2, retries = 5)
21
+ find_element_by_text(text, timeout, retries).click if device_android
22
+ find_text_ios(text, timeout, retries).click if device_ios
15
23
  end
16
24
 
17
- # Tap element by xpath
25
+ # Tap element by xpath.
26
+ #
27
+ # @param xpath [String] Element Xpath.
28
+ # @param timeout [Integer] Timeout seconds between retries.
29
+ # @param retries [Integer] Amount of retries.
18
30
  def tap_element_by_xpath(path, timeout = 2, retries = 5)
19
31
  find_element_by_xpath(path, timeout, retries).click
20
32
  end
21
33
 
22
- # Android only: Needs app package name set as const. _ANDROID_PACKAGE_
34
+ # Tap element by resourceid.
35
+ #
36
+ # Android only: Needs app package name set as constant ANDROID_PACKAGE.
37
+ #
38
+ # @param id [String] Element ID.
39
+ # @param timeout [Integer] Timeout seconds between retries.
40
+ # @param retries [Integer] Amount of retries.
23
41
  def tap_element_by_resourceid(id, timeout = 2, retries = 5)
24
42
  if defined?(ANDROID_PACKAGE).nil?
25
- log('ANDROID_PACKAGE variable is missing.')
43
+ logger('ANDROID_PACKAGE is missing.', 'fatal')
26
44
  raise Selenium::WebDriver::Error::NoSuchElementError
27
45
  end
28
46
 
@@ -3,32 +3,42 @@
3
3
  module Testimonium
4
4
  # Validate functions
5
5
  module Validate
6
- # Validate element by element id
6
+ # Validate element by element id.
7
+ #
8
+ # @param id [String] Element ID.
9
+ # @param timeout [Integer] Timeout seconds between retries.
10
+ # @param retries [Integer] Amount of retries.
7
11
  def validate_element_by_id(id, timeout = 2, retries = 5)
8
- unless find_element_by_id(id, timeout, retries)
9
- raise Selenium::WebDriver::Error::NoSuchElementError
10
- end
12
+ raise Selenium::WebDriver::Error::NoSuchElementError unless find_element_by_id(id, timeout, retries)
11
13
  end
12
14
 
13
- # Validate element by text
15
+ # Validate element by text.
16
+ #
17
+ # @param text [String] Element Text.
18
+ # @param timeout [Integer] Timeout seconds between retries.
19
+ # @param retries [Integer] Amount of retries.
14
20
  def validate_element_by_text(text, timeout = 5, retries = 5)
15
- unless find_element_by_text(text, timeout, retries)
16
- raise Selenium::WebDriver::Error::NoSuchElementError
17
- end
21
+ raise Selenium::WebDriver::Error::NoSuchElementError unless find_element_by_text(text, timeout, retries)
18
22
  end
19
23
 
20
- # Validate element by xpath
24
+ # Validate element by xpath.
25
+ #
26
+ # @param xpath [String] Element Xpath.
27
+ # @param timeout [Integer] Timeout seconds between retries.
28
+ # @param retries [Integer] Amount of retries.
21
29
  def validate_element_by_xpath(path, timeout = 2, retries = 5)
22
- unless find_element_by_xpath(path, timeout, retries)
23
- raise Selenium::WebDriver::Error::NoSuchElementError
24
- end
30
+ raise Selenium::WebDriver::Error::NoSuchElementError unless find_element_by_xpath(path, timeout, retries)
25
31
  end
26
32
 
27
- # Android only: Needs app package name set as const. _ANDROID_PACKAGE_
33
+ # Validate element by resourceid.
34
+ #
35
+ # Android only: Needs app package name set as constant ANDROID_PACKAGE.
36
+ #
37
+ # @param id [String] Element ID.
38
+ # @param timeout [Integer] Timeout seconds between retries.
39
+ # @param retries [Integer] Amount of retries.
28
40
  def validate_element_by_resourceid(id, timeout = 2, retries = 5)
29
- unless find_element_by_resourceid(id, timeout, retries)
30
- raise Selenium::WebDriver::Error::NoSuchElementError
31
- end
41
+ raise Selenium::WebDriver::Error::NoSuchElementError unless find_element_by_resourceid(id, timeout, retries)
32
42
  end
33
43
  end
34
44
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Current version
4
4
  module Testimonium
5
- VERSION = '1.2.0'
5
+ VERSION = '1.2.1'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testimonium
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - M2mobi
@@ -83,5 +83,5 @@ requirements: []
83
83
  rubygems_version: 3.0.3
84
84
  signing_key:
85
85
  specification_version: 4
86
- summary: testimonium-1.2.0
86
+ summary: testimonium-1.2.1
87
87
  test_files: []