testcentricity 3.0.5 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -1
- data/README.md +48 -46
- data/lib/testcentricity/app_core/appium_connect_helper.rb +7 -9
- data/lib/testcentricity/app_elements/app_element_helper.rb +13 -3
- data/lib/testcentricity/version.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5085330706851742ef5bf4055e156a56229178f0acf7d53f050eb3c850f58f9
|
4
|
+
data.tar.gz: 54d503195507c5beb340236133e8e44710726fcc919a8b4af83074c9842edb15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a010e6e698a1c653bd16f6ae1ab906c847a40eea0c81bea629e210991de6dd7226c6f52a9dccddde195d91c38cb1019b23aa9f74221946a0301cb95fe5fe517a
|
7
|
+
data.tar.gz: 2159f2f00e3ed85fa3e7287510514a364006a5db7c84c6da473e0dbb656c7a061397bab4a09d79e7819e350ed36e4281a706fef39664b56b06dad0012ed34b45
|
data/CHANGELOG.md
CHANGED
@@ -2,10 +2,39 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
4
|
|
5
|
+
## [3.1.1] - 04-AUGUST-2022
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
* `AppiumConnect.available_contexts` now correctly returns a list of native app and web contexts when testing hybrid apps
|
9
|
+
with WebViews on iOS simulators.
|
10
|
+
|
11
|
+
|
12
|
+
## [3.1.0] - 02-AUGUST-2022
|
13
|
+
|
14
|
+
### Added
|
15
|
+
* The `DRIVER` Environment Variable is now used to specify the `appium`, `browserstack`, `saucelabs`, `testingbot`,
|
16
|
+
or `lambdatest` driver.
|
17
|
+
|
18
|
+
* ### Changed
|
19
|
+
* The `WEB_BROWSER` Environment Variable is no longer used to specify the `appium`, `browserstack`, `saucelabs`, `testingbot`,
|
20
|
+
or `lambdatest` driver.
|
21
|
+
|
22
|
+
### Updated
|
23
|
+
* Incorporated all changes from the [TestCentricity™ Web gem](https://rubygems.org/gems/testcentricity_web) version 4.3.0, which is
|
24
|
+
bundled with this gem.
|
25
|
+
|
26
|
+
|
27
|
+
## [3.0.6] - 21-JUNE-2022
|
28
|
+
|
29
|
+
### Fixed
|
30
|
+
* `AppButton.get_caption` correctly returns captions of React Native buttons on Android platform where button caption object
|
31
|
+
hierarchy is `//android.widget.Button/android.widget.ViewGroup/android.widget.TextView`.
|
32
|
+
|
33
|
+
|
5
34
|
## [3.0.5] - 12-JUNE-2022
|
6
35
|
|
7
36
|
### Fixed
|
8
|
-
*
|
37
|
+
* Fixed `gemspec` to no longer include specs and Cucumber tests as part of deployment package for the gem.
|
9
38
|
|
10
39
|
### Updated
|
11
40
|
* Incorporated all changes from the [TestCentricity™ Web gem](https://rubygems.org/gems/testcentricity_web) version 4.2.6, which is
|
data/README.md
CHANGED
@@ -5,10 +5,10 @@
|
|
5
5
|
|
6
6
|
|
7
7
|
The TestCentricity™ core framework for native mobile iOS and Android apps and desktop/mobile web testing implements a Screen
|
8
|
-
and Page Object Model DSL for use with Cucumber (version 7.x or greater), Appium, Capybara, and Selenium-Webdriver (version
|
9
|
-
the configuration of the appropriate Appium capabilities and driver required to establish a connection
|
10
|
-
cloud hosted (using BrowserStack, Sauce Labs, or TestingBot services) iOS and Android real devices or
|
11
|
-
information on desktop/mobile web testing with this gem, refer to docs for the [TestCentricity™ Web gem](https://www.rubydoc.info/gems/testcentricity_web)
|
8
|
+
and Page Object Model DSL for use with Cucumber (version 7.x or greater), Appium, Capybara, and Selenium-Webdriver (version
|
9
|
+
4.3). It also facilitates the configuration of the appropriate Appium capabilities and driver required to establish a connection
|
10
|
+
with locally hosted or cloud hosted (using BrowserStack, Sauce Labs, or TestingBot services) iOS and Android real devices or
|
11
|
+
simulators. For more information on desktop/mobile web testing with this gem, refer to docs for the [TestCentricity™ Web gem](https://www.rubydoc.info/gems/testcentricity_web)
|
12
12
|
|
13
13
|
The TestCentricity™ gem supports automated testing of native iOS and Android apps running on the following mobile test targets:
|
14
14
|
* locally hosted iOS device simulators or physical iOS devices (using Appium and XCode on macOS)
|
@@ -858,7 +858,9 @@ tests, place the code shown below into your `hooks.rb` file.
|
|
858
858
|
BeforeAll do
|
859
859
|
# start Appium Server if command line option was specified and target browser is mobile simulator or device
|
860
860
|
if ENV['APPIUM_SERVER'] == 'run' && Environ.driver == :appium
|
861
|
-
|
861
|
+
$server = TestCentricity::AppiumServer.new
|
862
|
+
$server.start
|
863
|
+
end
|
862
864
|
end
|
863
865
|
|
864
866
|
AfterAll do
|
@@ -885,24 +887,24 @@ The Appium server must be running prior to invoking Cucumber to run your feature
|
|
885
887
|
|
886
888
|
Once your test environment is properly configured, the following **Environment Variables** must be set as described in the table below.
|
887
889
|
|
888
|
-
| **Environment Variable**
|
889
|
-
|
890
|
-
| `
|
891
|
-
| `APP_PLATFORM_NAME`
|
892
|
-
| `AUTOMATION_ENGINE`
|
893
|
-
| `APP_VERSION`
|
894
|
-
| `APP_DEVICE`
|
895
|
-
| `DEVICE_TYPE`
|
896
|
-
| `APP_UDID`
|
897
|
-
| `TEAM_ID`
|
898
|
-
| `TEAM_NAME`
|
899
|
-
| `APP_NO_RESET`
|
900
|
-
| `APP_FULL_RESET`
|
901
|
-
| `WDA_LOCAL_PORT`
|
902
|
-
| `LOCALE`
|
903
|
-
| `LANGUAGE`
|
904
|
-
| `ORIENTATION`
|
905
|
-
| `NEW_COMMAND_TIMEOUT`
|
890
|
+
| **Environment Variable** | **Description** |
|
891
|
+
|--------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
892
|
+
| `DRIVER` | Must be set to `appium` |
|
893
|
+
| `APP_PLATFORM_NAME` | Must be set to `iOS` |
|
894
|
+
| `AUTOMATION_ENGINE` | Must be set to `XCUITest` |
|
895
|
+
| `APP_VERSION` | Must be set to `15.4`, `14.5`, or which ever iOS version you wish to run within the XCode Simulator |
|
896
|
+
| `APP_DEVICE` | Set to iOS device name supported by the iOS Simulator (`iPhone 13 Pro Max`, `iPad Pro (12.9-inch) (5th generation)`, etc.) or name of physically connected iOS device |
|
897
|
+
| `DEVICE_TYPE` | Must be set to `phone` or `tablet` |
|
898
|
+
| `APP_UDID` | UDID of physically connected iOS device (not used for simulators) |
|
899
|
+
| `TEAM_ID` | unique 10-character Apple developer team identifier string (not used for simulators) |
|
900
|
+
| `TEAM_NAME` | String representing a signing certificate (not used for simulators) |
|
901
|
+
| `APP_NO_RESET` | [Optional] Don't reset app state after each test. Set to `true` or `false` |
|
902
|
+
| `APP_FULL_RESET` | [Optional] Perform a complete reset. Set to `true` or `false` |
|
903
|
+
| `WDA_LOCAL_PORT` | [Optional] Used to forward traffic from Mac host to real iOS devices over USB. Default value is same as port number used by WDA on device. |
|
904
|
+
| `LOCALE` | [Optional] Locale to set for the simulator. e.g. `fr_CA` |
|
905
|
+
| `LANGUAGE` | [Optional] Language to set for the simulator. e.g. `fr` |
|
906
|
+
| `ORIENTATION` | [Optional] Set to `portrait` or `landscape` (only for iOS simulators) |
|
907
|
+
| `NEW_COMMAND_TIMEOUT` | [Optional] Time (in Seconds) that Appium will wait for a new command from the client |
|
906
908
|
|
907
909
|
|
908
910
|
Refer to **section 9.5 (Using Configuration Specific Profiles in cucumber.yml)** below.
|
@@ -917,21 +919,21 @@ to run your features/scenarios.
|
|
917
919
|
|
918
920
|
Once your test environment is properly configured, the following **Environment Variables** must be set as described in the table below.
|
919
921
|
|
920
|
-
| **Environment Variable**
|
921
|
-
|
922
|
-
| `
|
923
|
-
| `APP_PLATFORM_NAME`
|
924
|
-
| `AUTOMATION_ENGINE`
|
925
|
-
| `APP_VERSION`
|
926
|
-
| `APP_DEVICE`
|
927
|
-
| `DEVICE_TYPE`
|
928
|
-
| `APP_UDID`
|
929
|
-
| `ORIENTATION`
|
930
|
-
| `APP_NO_RESET`
|
931
|
-
| `APP_FULL_RESET`
|
932
|
-
| `LOCALE`
|
933
|
-
| `LANGUAGE`
|
934
|
-
| `NEW_COMMAND_TIMEOUT`
|
922
|
+
| **Environment Variable** | **Description** |
|
923
|
+
|--------------------------|--------------------------------------------------------------------------------------------------------------------------------|
|
924
|
+
| `DRIVER` | Must be set to `appium` |
|
925
|
+
| `APP_PLATFORM_NAME` | Must be set to `Android` |
|
926
|
+
| `AUTOMATION_ENGINE` | Must be set to `UiAutomator2` |
|
927
|
+
| `APP_VERSION` | Must be set to `12.0`, or which ever Android OS version you wish to run with the Android Virtual Device |
|
928
|
+
| `APP_DEVICE` | Set to Android Virtual Device ID (`Pixel_2_XL_API_26`, `Nexus_6_API_23`, etc.) found in Advanced Settings of AVD Configuration |
|
929
|
+
| `DEVICE_TYPE` | Must be set to `phone` or `tablet` |
|
930
|
+
| `APP_UDID` | UDID of physically connected Android device (not used for simulators) |
|
931
|
+
| `ORIENTATION` | [Optional] Set to `portrait` or `landscape` |
|
932
|
+
| `APP_NO_RESET` | [Optional] Don't reset app state after each test. Set to `true` or `false` |
|
933
|
+
| `APP_FULL_RESET` | [Optional] Perform a complete reset. Set to `true` or `false` |
|
934
|
+
| `LOCALE` | [Optional] Locale to set for the simulator. e.g. `fr_CA` |
|
935
|
+
| `LANGUAGE` | [Optional] Language to set for the simulator. e.g. `fr` |
|
936
|
+
| `NEW_COMMAND_TIMEOUT` | [Optional] Time (in Seconds) that Appium will wait for a new command from the client |
|
935
937
|
|
936
938
|
|
937
939
|
Refer to **section 9.5 (Using Configuration Specific Profiles in cucumber.yml)** below.
|
@@ -951,7 +953,7 @@ for information regarding the specific capabilities.
|
|
951
953
|
|
952
954
|
| **Environment Variable** | **Description** |
|
953
955
|
|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
|
954
|
-
| `
|
956
|
+
| `DRIVER` | Must be set to `browserstack` |
|
955
957
|
| `BS_USERNAME` | Must be set to your BrowserStack account user name |
|
956
958
|
| `BS_AUTHKEY` | Must be set to your BrowserStack account access key |
|
957
959
|
| `BS_OS` | Must be set to `ios` or `android` |
|
@@ -975,7 +977,7 @@ to obtain information regarding the specific capabilities.
|
|
975
977
|
|
976
978
|
| **Environment Variable** | **Description** |
|
977
979
|
|--------------------------|-----------------------------------------------------------------------------------------------------------------|
|
978
|
-
| `
|
980
|
+
| `DRIVER` | Must be set to `saucelabs` |
|
979
981
|
| `SL_USERNAME` | Must be set to your Sauce Labs account user name or email address |
|
980
982
|
| `SL_AUTHKEY` | Must be set to your Sauce Labs account access key |
|
981
983
|
| `DATA_CENTER` | Must be set to your Sauce Labs account Data Center assignment (`us-west-1`, `eu-central-1`, `apac-southeast-1`) |
|
@@ -996,7 +998,7 @@ for information regarding the specific capabilities.
|
|
996
998
|
|
997
999
|
| **Environment Variable** | **Description** |
|
998
1000
|
|--------------------------|---------------------------------------------------|
|
999
|
-
| `
|
1001
|
+
| `DRIVER` | Must be set to `testingbot` |
|
1000
1002
|
| `TB_USERNAME` | Must be set to your TestingBot account user name |
|
1001
1003
|
| `TB_AUTHKEY` | Must be set to your TestingBot account access key |
|
1002
1004
|
| `TB_OS` | Must be set to `ios` or `android` |
|
@@ -1046,7 +1048,7 @@ code for the cloud service(s) that you intend to connect with.
|
|
1046
1048
|
# NOTE: Requires installation of XCode, iOS version specific target simulators, and Appium
|
1047
1049
|
#==============
|
1048
1050
|
|
1049
|
-
appium_ios:
|
1051
|
+
appium_ios: DRIVER=appium --profile ios AUTOMATION_ENGINE=XCUITest APP_PLATFORM_NAME="iOS" NEW_COMMAND_TIMEOUT="30" <%= mobile %>
|
1050
1052
|
app_ios_14: --profile appium_ios APP_VERSION="14.5"
|
1051
1053
|
app_ios_15: --profile appium_ios APP_VERSION="15.4"
|
1052
1054
|
|
@@ -1061,7 +1063,7 @@ code for the cloud service(s) that you intend to connect with.
|
|
1061
1063
|
# NOTE: Requires installation of Android Studio, Android version specific virtual device simulators, and Appium
|
1062
1064
|
#==============
|
1063
1065
|
|
1064
|
-
appium_android:
|
1066
|
+
appium_android: DRIVER=appium --profile android AUTOMATION_ENGINE=UiAutomator2 APP_PLATFORM_NAME="Android" <%= mobile %>
|
1065
1067
|
app_android_12: --profile appium_android APP_VERSION="12.0"
|
1066
1068
|
pixel_5_api31_sim: --profile app_android_12 DEVICE_TYPE=phone APP_DEVICE="Pixel_5_API_31"
|
1067
1069
|
|
@@ -1072,7 +1074,7 @@ code for the cloud service(s) that you intend to connect with.
|
|
1072
1074
|
# to your version control system
|
1073
1075
|
#==============
|
1074
1076
|
|
1075
|
-
browserstack:
|
1077
|
+
browserstack: DRIVER=browserstack BS_USERNAME="<INSERT USER NAME HERE>" BS_AUTHKEY="<INSERT PASSWORD HERE>" TEST_CONTEXT="TestCentricity"
|
1076
1078
|
|
1077
1079
|
# BrowserStack iOS real device native app profiles
|
1078
1080
|
bs_ios: --profile browserstack --profile ios BS_OS=ios <%= mobile %>
|
@@ -1091,7 +1093,7 @@ code for the cloud service(s) that you intend to connect with.
|
|
1091
1093
|
# to your version control system
|
1092
1094
|
#==============
|
1093
1095
|
|
1094
|
-
saucelabs:
|
1096
|
+
saucelabs: DRIVER=saucelabs SL_USERNAME="<INSERT USER NAME HERE>" SL_AUTHKEY="<INSERT PASSWORD HERE>" DATA_CENTER="us-west-1" AUTOMATE_PROJECT="TestCentricity - SauceLabs"
|
1095
1097
|
|
1096
1098
|
# SauceLabs iOS real device native app profiles
|
1097
1099
|
sl_ios: --profile saucelabs --profile ios SL_OS=ios <%= mobile %>
|
@@ -1109,7 +1111,7 @@ code for the cloud service(s) that you intend to connect with.
|
|
1109
1111
|
# to your version control system
|
1110
1112
|
#==============
|
1111
1113
|
|
1112
|
-
testingbot:
|
1114
|
+
testingbot: DRIVER=testingbot TB_USERNAME="<INSERT USER NAME HERE>" TB_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TestCentricity - TestingBot"
|
1113
1115
|
|
1114
1116
|
# TestingBot iOS real device native app profiles
|
1115
1117
|
tb_ios: --profile testingbot --profile ios TB_OS=iOS <%= mobile %>
|
@@ -18,14 +18,12 @@ module TestCentricity
|
|
18
18
|
@capabilities = options[:desired_capabilities] if options.key?(:desired_capabilities)
|
19
19
|
end
|
20
20
|
Environ.platform = :mobile
|
21
|
-
Environ.driver = :appium
|
22
21
|
Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
|
23
22
|
|
24
23
|
Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
25
24
|
Environ.device_os_version = ENV['APP_VERSION']
|
26
|
-
|
27
|
-
Environ.
|
28
|
-
case browser.downcase.to_sym
|
25
|
+
Environ.driver = ENV['DRIVER'].downcase.to_sym
|
26
|
+
case Environ.driver
|
29
27
|
when :appium
|
30
28
|
Environ.device_name = ENV['APP_DEVICE']
|
31
29
|
Environ.device_os = ENV['APP_PLATFORM_NAME']
|
@@ -47,14 +45,13 @@ module TestCentricity
|
|
47
45
|
Environ.device_name = ENV['LT_DEVICE']
|
48
46
|
Environ.device_os = ENV['LT_OS']
|
49
47
|
else
|
50
|
-
raise "#{
|
48
|
+
raise "#{Environ.driver} is not a valid selector"
|
51
49
|
end
|
52
50
|
@running = false
|
53
51
|
end
|
54
52
|
|
55
53
|
def self.start_driver
|
56
|
-
|
57
|
-
capabilities = case browser.downcase.to_sym
|
54
|
+
capabilities = case Environ.driver
|
58
55
|
when :appium
|
59
56
|
appium_local_capabilities
|
60
57
|
when :browserstack
|
@@ -66,7 +63,7 @@ module TestCentricity
|
|
66
63
|
when :lambdatest
|
67
64
|
lambdatest_capabilities
|
68
65
|
else
|
69
|
-
raise "#{
|
66
|
+
raise "#{Environ.driver} is not a valid selector"
|
70
67
|
end
|
71
68
|
puts "Appium desired_capabilities = #{capabilities}" if ENV['DEBUG']
|
72
69
|
|
@@ -193,7 +190,7 @@ module TestCentricity
|
|
193
190
|
end
|
194
191
|
|
195
192
|
def self.webview_context
|
196
|
-
contexts = available_contexts
|
193
|
+
contexts = $driver.available_contexts
|
197
194
|
puts "Contexts = #{contexts}" if ENV['DEBUG']
|
198
195
|
set_context(contexts.last)
|
199
196
|
puts "Current context = #{$driver.current_context}" if ENV['DEBUG']
|
@@ -285,6 +282,7 @@ module TestCentricity
|
|
285
282
|
caps[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
|
286
283
|
caps[:appActivity] = ENV['APP_ACTIVITY'] if ENV['APP_ACTIVITY']
|
287
284
|
caps[:appPackage] = ENV['APP_PACKAGE'] if ENV['APP_PACKAGE']
|
285
|
+
caps[:webviewConnectTimeout] = '90000'
|
288
286
|
|
289
287
|
if ENV['BUNDLE_ID']
|
290
288
|
caps[:bundleId] = ENV['BUNDLE_ID']
|
@@ -109,9 +109,19 @@ module TestCentricity
|
|
109
109
|
end
|
110
110
|
else
|
111
111
|
caption = obj.text
|
112
|
-
if caption.blank?
|
113
|
-
|
114
|
-
|
112
|
+
if caption.blank?
|
113
|
+
case obj.attribute(:class)
|
114
|
+
when 'android.view.ViewGroup'
|
115
|
+
caption_obj = obj.find_element(:xpath, '//android.widget.TextView')
|
116
|
+
caption = caption_obj.text
|
117
|
+
when 'android.widget.Button'
|
118
|
+
caption_obj = obj.find_element(:xpath, '//android.widget.TextView')
|
119
|
+
caption = caption_obj.text
|
120
|
+
if caption.blank?
|
121
|
+
caption_obj = obj.find_element(:xpath, '//android.widget.ViewGroup/android.widget.TextView')
|
122
|
+
caption = caption_obj.text
|
123
|
+
end
|
124
|
+
end
|
115
125
|
end
|
116
126
|
caption
|
117
127
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testcentricity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.1
|
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: 2022-
|
11
|
+
date: 2022-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: cucumber
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 8.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 8.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: cuke_modeler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,16 +98,16 @@ dependencies:
|
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 3.11.0
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 3.11.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: simplecov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 4.
|
187
|
+
version: 4.3.0
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 4.
|
194
|
+
version: 4.3.0
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: test-unit
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|