testcentricity_web 4.0.0 → 4.0.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 +4 -4
- data/CHANGELOG.md +1 -1
- data/Gemfile.lock +2 -4
- data/README.md +18 -17
- data/lib/testcentricity_web/data_objects/data_objects_helper.rb +30 -1
- data/lib/testcentricity_web/data_objects/environment.rb +30 -5
- data/lib/testcentricity_web/data_objects/excel_helper.rb +1 -25
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/world_extensions.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab40b67743553e06540746f3cc20b3dbef79aaf8f70f1be584dd54150a252e71
|
4
|
+
data.tar.gz: 638bb4707bb184a59fa6bf5645f8107891e569e8eb7f218ac92ef1259c21b9ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8de993273139d817ea101761ae99fbf5eb3a3737d57b7d3e537e9885dff49dcb842bef51448b88c72993768bb4e4f59f24299ed2ebd104a552d89ecd4f6bc9d7
|
7
|
+
data.tar.gz: 891917e94e04880a609a32c7a53adc5bfb125a1dd4c570fdf712d4164948b3e3748c0131ed5fc56b95ab6096c0570c0144a5eba974c926b0a7a860a35e1235ae
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [4.0.0] -
|
4
|
+
## [4.0.0] - 18-APR-2021
|
5
5
|
|
6
6
|
### Changed
|
7
7
|
* `WebDriverConnect.initialize_web_driver` method now accepts an `options` hash as an optional parameter, which can be used to
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
testcentricity_web (4.0.
|
4
|
+
testcentricity_web (4.0.1)
|
5
5
|
appium_lib
|
6
6
|
browserstack-local
|
7
7
|
capybara (>= 3.1, < 4)
|
@@ -61,9 +61,7 @@ GEM
|
|
61
61
|
concurrent-ruby (~> 1.0)
|
62
62
|
ice_nine (0.11.2)
|
63
63
|
mini_mime (1.1.0)
|
64
|
-
|
65
|
-
nokogiri (1.11.3)
|
66
|
-
mini_portile2 (~> 2.5.0)
|
64
|
+
nokogiri (1.11.3-x86_64-darwin)
|
67
65
|
racc (~> 1.4)
|
68
66
|
os (1.1.1)
|
69
67
|
power_assert (2.0.0)
|
data/README.md
CHANGED
@@ -670,24 +670,25 @@ In the above example, the step definitions associated with the 3 steps might be
|
|
670
670
|
end
|
671
671
|
|
672
672
|
# this method takes a page name as a parameter and returns an instance of the associated Page Object
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
673
|
+
def page_dispatcher(page_name)
|
674
|
+
page = case page_name
|
675
|
+
when 'Registration'
|
676
|
+
registration_page
|
677
|
+
when 'My Account'
|
678
|
+
my_account_page
|
679
|
+
when 'Terms & Conditions'
|
680
|
+
terms_conditions_page
|
681
|
+
when 'Privacy Policy'
|
682
|
+
privacy_policy_page
|
683
|
+
when 'Contact Us'
|
684
|
+
contact_us_page
|
685
|
+
when 'FAQs'
|
686
|
+
faqs_page
|
687
|
+
end
|
688
|
+
raise "No page object defined for page named '#{page_name}'" unless page
|
689
|
+
page
|
687
690
|
end
|
688
|
-
|
689
|
-
page
|
690
|
-
end
|
691
|
+
|
691
692
|
|
692
693
|
|
693
694
|
While this approach may be effective for small web applications with only a few pages (and hence few **Page Objects**), it quickly becomes
|
@@ -1,12 +1,18 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'json'
|
3
3
|
require 'virtus'
|
4
|
+
require 'time'
|
5
|
+
require 'chronic'
|
6
|
+
require 'faker'
|
4
7
|
|
5
8
|
|
6
9
|
module TestCentricity
|
7
10
|
|
8
11
|
PRIMARY_DATA_PATH ||= 'features/test_data/'
|
9
|
-
|
12
|
+
PRIMARY_DATA_FILE ||= "#{PRIMARY_DATA_PATH}data."
|
13
|
+
XL_PRIMARY_DATA_FILE ||= "#{PRIMARY_DATA_FILE}xls"
|
14
|
+
YML_PRIMARY_DATA_FILE ||= "#{PRIMARY_DATA_FILE}yml"
|
15
|
+
JSON_PRIMARY_DATA_FILE ||= "#{PRIMARY_DATA_FILE}json"
|
10
16
|
|
11
17
|
|
12
18
|
class DataObject
|
@@ -106,6 +112,28 @@ module TestCentricity
|
|
106
112
|
data[node_name] = node_data
|
107
113
|
File.write(@file_path, data.to_json)
|
108
114
|
end
|
115
|
+
|
116
|
+
private
|
117
|
+
|
118
|
+
def self.calculate_dynamic_value(value)
|
119
|
+
test_value = value.split('!', 2)
|
120
|
+
parameter = test_value[1].split('.', 2)
|
121
|
+
case parameter[0]
|
122
|
+
when 'Date'
|
123
|
+
result = eval("Chronic.parse('#{parameter[1]}')")
|
124
|
+
when 'FormattedDate', 'FormatDate'
|
125
|
+
date_time_params = parameter[1].split(' format! ', 2)
|
126
|
+
date_time = eval("Chronic.parse('#{date_time_params[0].strip}')")
|
127
|
+
result = date_time.to_s.format_date_time("#{date_time_params[1].strip}")
|
128
|
+
else
|
129
|
+
result = if Faker.constants.include?(parameter[0].to_sym)
|
130
|
+
eval("Faker::#{parameter[0]}.#{parameter[1]}")
|
131
|
+
else
|
132
|
+
eval(test_value[1])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
result.to_s
|
136
|
+
end
|
109
137
|
end
|
110
138
|
|
111
139
|
|
@@ -147,3 +175,4 @@ module TestCentricity
|
|
147
175
|
end
|
148
176
|
end
|
149
177
|
end
|
178
|
+
|
@@ -1,21 +1,45 @@
|
|
1
1
|
module TestCentricity
|
2
2
|
class EnvironData < TestCentricity::ExcelDataSource
|
3
3
|
attr_accessor :current
|
4
|
+
attr_accessor :generic_data
|
5
|
+
attr_accessor :environ_specific_data
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
def find_environ(environ_name, source_type = :excel)
|
7
|
+
def self.find_environ(environ_name, source_type = :excel)
|
8
8
|
data = case source_type
|
9
9
|
when :excel
|
10
|
-
ExcelData.read_row_data(XL_PRIMARY_DATA_FILE,
|
10
|
+
ExcelData.read_row_data(XL_PRIMARY_DATA_FILE, 'Environments', environ_name)
|
11
11
|
when :yaml
|
12
|
-
|
12
|
+
# read generic test data from data.yml file
|
13
|
+
@generic_data ||= YAML.load_file(YML_PRIMARY_DATA_FILE)
|
14
|
+
# read environment specific test data
|
15
|
+
data_file = "#{PRIMARY_DATA_PATH}#{environ_name}_data.yml"
|
16
|
+
@environ_specific_data ||= YAML.load_file(data_file)
|
17
|
+
|
18
|
+
read('Environments', environ_name)
|
13
19
|
when :json
|
14
20
|
read_json_node_data('environments.json', environ_name)
|
15
21
|
end
|
16
22
|
@current = Environ.new(data)
|
17
23
|
Environ.current = @current
|
18
24
|
end
|
25
|
+
|
26
|
+
def self.read(key_name, node_name)
|
27
|
+
if @environ_specific_data.key?(key_name) && @environ_specific_data[key_name].key?(node_name)
|
28
|
+
node_data = @environ_specific_data[key_name][node_name]
|
29
|
+
else
|
30
|
+
raise "No key named #{key_name} in generic and environment-specific data" unless @generic_data.key?(key_name)
|
31
|
+
raise "No node named #{node_name} in #{key_name} section of generic and environment-specific data" unless @generic_data[key_name].key?(node_name)
|
32
|
+
|
33
|
+
node_data = @generic_data[key_name][node_name]
|
34
|
+
end
|
35
|
+
|
36
|
+
if node_data.is_a?(Hash)
|
37
|
+
node_data.each do |key, value|
|
38
|
+
node_data[key] = calculate_dynamic_value(value) if value.to_s.start_with?('eval!')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
node_data
|
42
|
+
end
|
19
43
|
end
|
20
44
|
|
21
45
|
|
@@ -355,3 +379,4 @@ module TestCentricity
|
|
355
379
|
end
|
356
380
|
end
|
357
381
|
end
|
382
|
+
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'time'
|
2
|
-
require 'chronic'
|
3
|
-
require 'faker'
|
4
1
|
require 'spreadsheet'
|
5
2
|
|
6
3
|
|
@@ -273,27 +270,6 @@ module TestCentricity
|
|
273
270
|
# rename new Excel document, replacing the original
|
274
271
|
File.rename(outfile, file)
|
275
272
|
end
|
276
|
-
|
277
|
-
private
|
278
|
-
|
279
|
-
def self.calculate_dynamic_value(value)
|
280
|
-
test_value = value.split('!', 2)
|
281
|
-
parameter = test_value[1].split('.', 2)
|
282
|
-
case parameter[0]
|
283
|
-
when 'Date'
|
284
|
-
result = eval("Chronic.parse('#{parameter[1]}')")
|
285
|
-
when 'FormattedDate', 'FormatDate'
|
286
|
-
date_time_params = parameter[1].split(' format! ', 2)
|
287
|
-
date_time = eval("Chronic.parse('#{date_time_params[0].strip}')")
|
288
|
-
result = date_time.to_s.format_date_time("#{date_time_params[1].strip}")
|
289
|
-
else
|
290
|
-
result = if Faker.constants.include?(parameter[0].to_sym)
|
291
|
-
eval("Faker::#{parameter[0]}.#{parameter[1]}")
|
292
|
-
else
|
293
|
-
eval(test_value[1])
|
294
|
-
end
|
295
|
-
end
|
296
|
-
result.to_s
|
297
|
-
end
|
298
273
|
end
|
299
274
|
end
|
275
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testcentricity_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.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: 2021-
|
11
|
+
date: 2021-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|