testcentricity_mobile 4.0.6 → 4.0.7

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: 7e1afd0a24821f3a9f989076f77b8db1d62101e17a32e08e88d8b7e239f00d97
4
- data.tar.gz: 137d9919f210bb16ca354a1d2933eb39952689635751981dcc5502ee1c888768
3
+ metadata.gz: fa7ae2f538647efddd759d3958b2def1c3dd73cb68772a23310397c49e23b556
4
+ data.tar.gz: 15a31c256250cbaa3670a467469e3386c0467883facb23026b662a383ac81722
5
5
  SHA512:
6
- metadata.gz: 218154425c571a1b3d0beee6225a69e084306bb630f3e4afa0c089708b4b77ac10a76a03251f690a89da09f0f1cf03e54d92de68ba99348c0017823d7a76a164
7
- data.tar.gz: 36db158541dbbc17e4caba7a8cca270ea2fa88bfd5ea1ac01bafb1798a249d77f6427560e01cf3fab16da652ab9a5229c962e3c1771f031d8022911a11ba36fc
6
+ metadata.gz: 1b1b5323763138cce0d95a8b0b2dc142dfce8f39c4d45cacc13bfc5a7420d49d0b16a766108421dbc25d9c9043c22131257434347f7a44cac3839569337fcd3c
7
+ data.tar.gz: e1004a41f10e1983e94d2dd659aa0abd3543227ac6e831b931f20eafd21133fc456ee7bff85eddf869cddad92a58a2d3e2f85fbbb58bf1a956191d1ef6b12cdd
data/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
+ ## [4.0.7] - 05-MAY-2024
6
+
7
+ ### Added
8
+ * Added support for radio buttons via the `AppRadio` UI element class and the following methods:
9
+ * `ScreenObject.radio`
10
+ * `ScreenObject.radios`
11
+ * `ScreenSection.radio`
12
+ * `ScreenSection.radios`
13
+ * `ScreenObject.populate_data_fields` and `ScreenSection.populate_data_fields` methods now support radio buttons.
14
+
15
+ ### Changed
16
+
17
+ * Updated `selenium-webdriver` gem to version 4.20.1.
18
+ * Updated `appium_lib_core` gem to version 8.0.2.
19
+
20
+
5
21
  ## [4.0.6] - 02-MAY-2024
6
22
 
7
23
  ### Fixed
data/README.md CHANGED
@@ -508,15 +508,16 @@ Supported `AppUIElement` elementTypes and their declarations have the following
508
508
  *Single element declarations:*
509
509
  ```ruby
510
510
  class SampleScreen < TestCentricity::ScreenObject
511
- button :button_name, { locator_strategy: locator_identifier }
512
- textfield :field_name, { locator_strategy: locator_identifier }
513
- checkbox :checkbox_name, { locator_strategy: locator_identifier }
514
- label :label_name, { locator_strategy: locator_identifier }
515
- list :list_name, { locator_strategy: locator_identifier }
516
- image :image_name, { locator_strategy: locator_identifier }
517
- switch :switch_name, { locator_strategy: locator_identifier }
518
- element :element_name, { locator_strategy: locator_identifier }
519
- alert :alert_name, { locator_strategy: locator_identifier }
511
+ button :button_name, { locator_strategy: locator_identifier }
512
+ textfield :field_name, { locator_strategy: locator_identifier }
513
+ checkbox :checkbox_name, { locator_strategy: locator_identifier }
514
+ radio :radio_name, { locator_strategy: locator_identifier }
515
+ label :label_name, { locator_strategy: locator_identifier }
516
+ list :list_name, { locator_strategy: locator_identifier }
517
+ image :image_name, { locator_strategy: locator_identifier }
518
+ switch :switch_name, { locator_strategy: locator_identifier }
519
+ element :element_name, { locator_strategy: locator_identifier }
520
+ alert :alert_name, { locator_strategy: locator_identifier }
520
521
  end
521
522
  ```
522
523
  *Multiple element declarations:*
@@ -531,6 +532,8 @@ Supported `AppUIElement` elementTypes and their declarations have the following
531
532
  checkboxes check_1_name: { locator_strategy: locator_identifier },
532
533
  check_2_name: { locator_strategy: locator_identifier },
533
534
  check_X_name: { locator_strategy: locator_identifier }
535
+ radios radio_1_name: { locator_strategy: locator_identifier },
536
+ radio_X_name: { locator_strategy: locator_identifier }
534
537
  labels label_1_name: { locator_strategy: locator_identifier },
535
538
  label_X_name: { locator_strategy: locator_identifier }
536
539
  images image_1_name: { locator_strategy: locator_identifier },
@@ -593,8 +596,8 @@ above) for each `AppUIElement` that needs to be interacted with.
593
596
  The `ScreenObject.populate_data_fields` and `ScreenSection.populate_data_fields` methods support the entry of test data
594
597
  into a collection of `AppUIElements`. The `populate_data_fields` method accepts a hash containing key/hash pairs of
595
598
  `AppUIElements` and their associated data to be entered. Data values must be in the form of a `String` for `textfield`
596
- controls. For `checkbox` controls, data must either be a `Boolean` or a `String` that evaluates to a `Boolean` value (Yes,
597
- No, 1, 0, true, false).
599
+ controls. For `checkbox`, `radio`, and `switch` controls, data must either be a `Boolean` or a `String` that evaluates to
600
+ a `Boolean` value ('Yes', 'No', '1', '0', 'true', 'false').
598
601
 
599
602
  The `populate_data_fields` method verifies that data attributes associated with each `AppUIElement` is not `nil` or `empty`
600
603
  before attempting to enter data into the `AppUIElement`.
@@ -140,6 +140,30 @@ module TestCentricity
140
140
  end
141
141
  end
142
142
 
143
+ # Declare and instantiate a single radio button UI Element for this screen object.
144
+ #
145
+ # @param element_name [Symbol] name of radio button object (as a symbol)
146
+ # @param locator [Hash] { locator_strategy: locator_identifier }
147
+ # @example
148
+ # radio :unicode_radio, { xpath: '//XCUIElementTypeRadioButton[@label="Unicode"]'}
149
+ #
150
+ def self.radio(element_name, locator)
151
+ define_screen_element(element_name, TestCentricity::AppElements::AppRadio, locator)
152
+ end
153
+
154
+ # Declare and instantiate a collection of radio buttons for this screen object.
155
+ #
156
+ # @param element_hash [Hash] names of radio buttons (as symbol) and locator Hash
157
+ # @example
158
+ # radios unicode_radio: { xpath: '//XCUIElementTypeRadioButton[@label="Unicode"]'},
159
+ # ascii_radio: { xpath: '//XCUIElementTypeRadioButton[@label="ASCII"] }
160
+ #
161
+ def self.radios(element_hash)
162
+ element_hash.each do |element_name, locator|
163
+ radio(element_name, locator)
164
+ end
165
+ end
166
+
143
167
  # Declare and instantiate a single label UI Element for this screen object.
144
168
  #
145
169
  # @param element_name [Symbol] name of label object (as a symbol)
@@ -21,9 +21,9 @@ module TestCentricity
21
21
  end
22
22
 
23
23
  # Populate the specified UI elements on this screen or section object with the associated data from a Hash passed as
24
- # an argument. Data values must be in the form of a String for textfield controls. For checkboxes and switches, data
25
- # must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1, 0, true, false). For screen section
26
- # objects, data values must be a String, and the screen section object must have a set method defined.
24
+ # an argument. Data values must be in the form of a String for textfield controls. For checkboxes,radios, and switches,
25
+ # data must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1, 0, true, false). For screen
26
+ # section objects, data values must be a String, and the screen section object must have a set method defined.
27
27
  #
28
28
  # The optional wait_time parameter is used to specify the time (in seconds) to wait for each UI element to become
29
29
  # visible before entering the associated data value. This option is useful in situations where entering data, or
@@ -59,6 +59,8 @@ module TestCentricity
59
59
  case data_field.get_object_type
60
60
  when :checkbox
61
61
  data_field.set_checkbox_state(data_param.to_bool)
62
+ when :radio
63
+ data_field.set_selected_state(data_param.to_bool)
62
64
  when :textfield
63
65
  data_field.clear
64
66
  data_field.set(data_param)
@@ -206,6 +206,28 @@ module TestCentricity
206
206
  element_hash.each_pair { |element_name, locator| checkbox(element_name, locator) }
207
207
  end
208
208
 
209
+ # Declare and instantiate a single radio button UI Element for this screen section object.
210
+ #
211
+ # @param element_name [Symbol] name of radio button object (as a symbol)
212
+ # @param locator [Hash] { locator_strategy: locator_identifier }
213
+ # @example
214
+ # radio :unicode_radio, { xpath: '//XCUIElementTypeRadioButton[@label="Unicode"]'}
215
+ #
216
+ def self.radio(element_name, locator)
217
+ define_section_element(element_name, TestCentricity::AppElements::AppRadio, locator)
218
+ end
219
+
220
+ # Declare and instantiate a collection of radio buttons for this screen section object.
221
+ #
222
+ # @param element_hash [Hash] names of radio buttons (as symbol) and locator Hash
223
+ # @example
224
+ # radios unicode_radio: { xpath: '//XCUIElementTypeRadioButton[@label="Unicode"]'},
225
+ # ascii_radio: { xpath: '//XCUIElementTypeRadioButton[@label="ASCII"] }
226
+ #
227
+ def self.radios(element_hash)
228
+ element_hash.each_pair { |element_name, locator| radio(element_name, locator) }
229
+ end
230
+
209
231
  # Declare and instantiate a single label UI Element for this screen section object.
210
232
  #
211
233
  # @param element_name [Symbol] name of label object (as a symbol)
@@ -0,0 +1,56 @@
1
+ module TestCentricity
2
+ module AppElements
3
+ class AppRadio < AppUIElement
4
+ def initialize(name, parent, locator, context)
5
+ super
6
+ @type = :radio
7
+ end
8
+
9
+ # Is radio selected?
10
+ #
11
+ # @return [Boolean]
12
+ # @example
13
+ # unicode_radio.selected?
14
+ #
15
+ def selected?
16
+ obj = element
17
+ object_not_found_exception(obj)
18
+ obj.selected?
19
+ end
20
+
21
+ # Set the selected state of a radio button object.
22
+ #
23
+ # @example
24
+ # unicode_radio.select
25
+ #
26
+ def select
27
+ set_selected_state(true)
28
+ end
29
+
30
+ # Unselect a radio button object.
31
+ #
32
+ # @example
33
+ # unicode_radio.unselect
34
+ #
35
+ def unselect
36
+ set_selected_state(false)
37
+ end
38
+
39
+ # Set the selected state of a radio button object.
40
+ #
41
+ # @param state [Boolean] true = selected / false = unselected
42
+ # @example
43
+ # ascii_radio.set_selected_state(true)
44
+ #
45
+ def set_selected_state(state)
46
+ obj = element
47
+ object_not_found_exception(obj)
48
+ if state
49
+ obj.click unless obj.selected?
50
+ else
51
+ obj.click if obj.selected?
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,3 +1,3 @@
1
1
  module TestCentricityMobile
2
- VERSION = '4.0.6'
2
+ VERSION = '4.0.7'
3
3
  end
@@ -19,6 +19,7 @@ require 'testcentricity_mobile/app_elements/app_element'
19
19
  require 'testcentricity_mobile/app_elements/button'
20
20
  require 'testcentricity_mobile/app_elements/checkbox'
21
21
  require 'testcentricity_mobile/app_elements/label'
22
+ require 'testcentricity_mobile/app_elements/radio'
22
23
  require 'testcentricity_mobile/app_elements/switch'
23
24
  require 'testcentricity_mobile/app_elements/textfield'
24
25
  require 'testcentricity_mobile/app_elements/list'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testcentricity_mobile
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.6
4
+ version: 4.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.J. Mrozinski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-02 00:00:00.000000000 Z
11
+ date: 2024-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - '='
214
214
  - !ruby/object:Gem::Version
215
- version: 4.20.0
215
+ version: 4.20.1
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - '='
221
221
  - !ruby/object:Gem::Version
222
- version: 4.20.0
222
+ version: 4.20.1
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: test-unit
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -276,6 +276,7 @@ files:
276
276
  - lib/testcentricity_mobile/app_elements/image.rb
277
277
  - lib/testcentricity_mobile/app_elements/label.rb
278
278
  - lib/testcentricity_mobile/app_elements/list.rb
279
+ - lib/testcentricity_mobile/app_elements/radio.rb
279
280
  - lib/testcentricity_mobile/app_elements/switch.rb
280
281
  - lib/testcentricity_mobile/app_elements/textfield.rb
281
282
  - lib/testcentricity_mobile/appium_server.rb