testcentricity_web 0.7.8 → 0.7.9
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/README.md +2 -2
- data/lib/testcentricity_web/browser_helper.rb +8 -0
- data/lib/testcentricity_web/data_objects_helper.rb +8 -0
- data/lib/testcentricity_web/environment.rb +2 -0
- data/lib/testcentricity_web/exception_queue_helper.rb +7 -3
- data/lib/testcentricity_web/utility_helpers.rb +1 -1
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/webdriver_helper.rb +36 -32
- data/lib/testcentricity_web/world_extensions.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3eb35217003e7c6f2828883021e9b5088ee3006
|
4
|
+
data.tar.gz: 8b8e132ac3ee73442cef16731c2145fba046f63d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7367b9001be3c10a766187863b8239b36a93eb98319bc156660616785ff03d740c347fdfe2359e88f79b53308a2a386b3c619baff28c53978412dd1bc26e2fa
|
7
|
+
data.tar.gz: 994539843137d2964a35a30d10d8f6b9bc3bf805583ad57886d16e02525b7ecf8cd1ed4b087c86ca78c9e108439d4bcc5769a83413f3cf5c32808cbb702fdefc
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
The TestCentricity™ core generic framework for desktop and mobile web site testing implements a Page Object and Data Object Model DSL for
|
7
7
|
use with Cucumber, Capybara, and Selenium-Webdriver.
|
8
8
|
|
9
|
-
The TestCentricity™
|
9
|
+
The TestCentricity™ Web gem supports running testing against the following web test targets:
|
10
10
|
|
11
11
|
* locally hosted desktop browsers (Firefox, Chrome, Safari, IE, or Edge)
|
12
12
|
* locally hosted emulated iOS, Android, and Windows Phone mobile browsers (using Firefox)
|
@@ -337,7 +337,7 @@ the connection.
|
|
337
337
|
|
338
338
|
For locally hosted desktop web browsers, the `WEB_BROWSER` Environment Variable must be set to one of the values from the table below:
|
339
339
|
|
340
|
-
`WEB_BROWSER` | Desktop Platform
|
340
|
+
`WEB_BROWSER` | **Desktop Platform**
|
341
341
|
--------------- | ----------------
|
342
342
|
`firefox` | OS X or Windows
|
343
343
|
`chrome` | OS X or Windows
|
@@ -72,6 +72,14 @@ module TestCentricity
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
def self.set_device_orientation(orientation)
|
76
|
+
if Environ.is_mobile? && !Environ.is_device?
|
77
|
+
Browsers.set_browser_window_size(Browsers.browser_size(Environ.browser.to_s, orientation))
|
78
|
+
else
|
79
|
+
puts '***** Cannot change device orientation of desktop web browsers or remote devices *****'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
75
83
|
def self.mobile_device_agent(device)
|
76
84
|
key = device.gsub(/\s+/, "").downcase.to_sym
|
77
85
|
devices = device_agents
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'json'
|
3
|
+
|
2
4
|
|
3
5
|
module TestCentricity
|
4
6
|
|
@@ -32,6 +34,12 @@ module TestCentricity
|
|
32
34
|
data = YAML.load_file("#{XL_PRIMARY_DATA_PATH}#{file_name}")
|
33
35
|
data[node_name]
|
34
36
|
end
|
37
|
+
|
38
|
+
def read_json_node_data(file_name, node_name)
|
39
|
+
raw_data = File.read("#{XL_PRIMARY_DATA_PATH}#{file_name}")
|
40
|
+
data = JSON.parse(raw_data)
|
41
|
+
data[node_name]
|
42
|
+
end
|
35
43
|
end
|
36
44
|
|
37
45
|
|
@@ -10,6 +10,8 @@ module TestCentricity
|
|
10
10
|
data = ExcelData.read_row_data(XL_PRIMARY_DATA_FILE, WKS_ENVIRONS, environ_name)
|
11
11
|
when :yaml
|
12
12
|
data = read_yaml_node_data('environments.yml', environ_name)
|
13
|
+
when :json
|
14
|
+
data = read_json_node_data('environments.json', environ_name)
|
13
15
|
end
|
14
16
|
@current = Environ.new(data)
|
15
17
|
Environ.set_current(@current)
|
@@ -6,20 +6,20 @@ module TestCentricity
|
|
6
6
|
|
7
7
|
def self.enqueue_assert_equal(expected, actual, error_message)
|
8
8
|
unless expected == actual
|
9
|
-
|
9
|
+
enqueue("#{error_message} to be\n #{expected}\nbut found\n #{actual}")
|
10
10
|
enqueue_screenshot
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.enqueue_assert_not_equal(expected, actual, error_message)
|
15
15
|
unless expected != actual
|
16
|
-
|
16
|
+
enqueue("#{error_message} to not be equal to #{expected}")
|
17
17
|
enqueue_screenshot
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.enqueue_exception(error_message)
|
22
|
-
|
22
|
+
enqueue(error_message)
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.post_exceptions
|
@@ -30,6 +30,10 @@ module TestCentricity
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
+
def self.enqueue(message)
|
34
|
+
@error_queue = "#{@error_queue}#{message}\n\n"
|
35
|
+
end
|
36
|
+
|
33
37
|
def self.enqueue_screenshot
|
34
38
|
timestamp = Time.now.strftime('%Y%m%d%H%M%S')
|
35
39
|
filename = "Screenshot-#{timestamp}"
|
@@ -11,7 +11,7 @@ end
|
|
11
11
|
|
12
12
|
class String
|
13
13
|
def to_bool
|
14
|
-
return true
|
14
|
+
return true if self == true || self =~ (/(true|t|yes|y|x|1)$/i)
|
15
15
|
return false if self == false || self.blank? || self =~ (/(false|f|no|n|0)$/i)
|
16
16
|
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
|
17
17
|
end
|
@@ -15,18 +15,18 @@ module TestCentricity
|
|
15
15
|
Environ.set_device_type('browser')
|
16
16
|
|
17
17
|
case browser.downcase.to_sym
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
18
|
+
when :browserstack
|
19
|
+
initialize_browserstack
|
20
|
+
when :crossbrowser
|
21
|
+
initialize_crossbrowser
|
22
|
+
when :poltergeist
|
23
|
+
initialize_poltergeist
|
24
|
+
when :saucelabs
|
25
|
+
initialize_saucelabs
|
26
|
+
when :testingbot
|
27
|
+
initialize_testingbot
|
28
|
+
else
|
29
|
+
initialize_local_browser(browser)
|
30
30
|
end
|
31
31
|
|
32
32
|
Capybara.app_host = app_host unless app_host.nil?
|
@@ -34,13 +34,15 @@ module TestCentricity
|
|
34
34
|
# set browser window size only if testing with a desktop web browser
|
35
35
|
unless Capybara.current_driver == :poltergeist
|
36
36
|
if Environ.is_desktop?
|
37
|
-
if
|
37
|
+
if ENV['BROWSER_SIZE'] == 'max'
|
38
38
|
Browsers.maximize_browser
|
39
39
|
elsif ENV['BROWSER_SIZE']
|
40
40
|
Browsers.set_browser_window_size(ENV['BROWSER_SIZE'])
|
41
41
|
else
|
42
42
|
Browsers.set_browser_window_size(Browsers.browser_size(browser, ENV['ORIENTATION']))
|
43
43
|
end
|
44
|
+
elsif Environ.is_mobile? && !Environ.is_device?
|
45
|
+
Browsers.set_browser_window_size(Browsers.browser_size(browser, ENV['ORIENTATION']))
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
@@ -53,16 +55,16 @@ module TestCentricity
|
|
53
55
|
Capybara.default_driver = :selenium
|
54
56
|
Capybara.register_driver :selenium do |app|
|
55
57
|
case browser.downcase.to_sym
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
58
|
+
when :firefox, :chrome, :ie, :safari, :edge
|
59
|
+
Capybara::Selenium::Driver.new(app, :browser => browser.to_sym)
|
60
|
+
when :iphone, :iphone5, :iphone6, :iphone6_plus, :ipad, :ipad_pro, :android_phone, :android_tablet, :windows_phone7, :windows_phone8
|
61
|
+
Environ.set_platform(:mobile)
|
62
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
63
|
+
profile['general.useragent.override'] = Browsers.mobile_device_agent(browser)
|
64
|
+
Capybara::Selenium::Driver.new(app, :profile => profile)
|
65
|
+
else
|
66
|
+
Capybara::Selenium::Driver.new(app, :browser => :firefox)
|
67
|
+
Environ.set_browser('firefox')
|
66
68
|
end
|
67
69
|
end
|
68
70
|
end
|
@@ -103,15 +105,15 @@ module TestCentricity
|
|
103
105
|
capabilities['browserstack.localIdentifier'] = ENV['BS_LOCAL_ID'] if ENV['BS_LOCAL_ID']
|
104
106
|
|
105
107
|
case browser.downcase.to_sym
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
108
|
+
when :ie
|
109
|
+
capabilities['ie.ensureCleanSession'] = 'true'
|
110
|
+
capabilities['ie.browserCommandLineSwitches'] = 'true'
|
111
|
+
capabilities['nativeEvents'] ='true'
|
112
|
+
when :safari
|
113
|
+
capabilities['cleanSession'] = 'true'
|
114
|
+
when :iphone, :ipad
|
115
|
+
capabilities['javascriptEnabled'] = 'true'
|
116
|
+
capabilities['cleanSession'] = 'true'
|
115
117
|
end
|
116
118
|
Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
|
117
119
|
end
|
@@ -137,6 +139,7 @@ module TestCentricity
|
|
137
139
|
Environ.set_platform(:desktop)
|
138
140
|
elsif ENV['CB_PLATFORM']
|
139
141
|
capabilities['os_api_name'] = ENV['CB_PLATFORM']
|
142
|
+
Environ.set_device_type(ENV['CB_PLATFORM'])
|
140
143
|
Environ.set_platform(:mobile)
|
141
144
|
end
|
142
145
|
Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
|
@@ -181,6 +184,7 @@ module TestCentricity
|
|
181
184
|
capabilities['deviceName'] = ENV['SL_DEVICE']
|
182
185
|
capabilities['deviceType'] = ENV['SL_DEVICE_TYPE'] if ENV['SL_DEVICE_TYPE']
|
183
186
|
capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
187
|
+
Environ.set_device_type(ENV['SL_DEVICE'])
|
184
188
|
Environ.set_platform(:mobile)
|
185
189
|
end
|
186
190
|
|
@@ -3,11 +3,15 @@ module WorldData
|
|
3
3
|
@environs ||= TestCentricity::EnvironData.new
|
4
4
|
end
|
5
5
|
|
6
|
+
# instantiate and register all data objects specified in data_objects method
|
6
7
|
def instantiate_data_objects
|
8
|
+
# return if data objects have already been instantiated and registered
|
7
9
|
return if TestCentricity::DataManager.loaded?
|
8
10
|
|
9
11
|
data_objects.each do | data_type, data_class |
|
12
|
+
# instantiate next data object
|
10
13
|
eval("def #{data_type.to_s};@#{data_type.to_s} ||= #{data_class}.new;end")
|
14
|
+
# register the data object
|
11
15
|
TestCentricity::DataManager.register_data_object(data_type, data_class.new)
|
12
16
|
end
|
13
17
|
end
|
@@ -15,11 +19,15 @@ end
|
|
15
19
|
|
16
20
|
|
17
21
|
module WorldPages
|
22
|
+
# instantiate and register all page objects specified in page_objects method
|
18
23
|
def instantiate_page_objects
|
24
|
+
# return if page objects have already been instantiated and registered
|
19
25
|
return if TestCentricity::PageManager.loaded?
|
20
26
|
|
21
27
|
page_objects.each do | page_object, page_class |
|
28
|
+
# instantiate next page object
|
22
29
|
eval("def #{page_object.to_s};@#{page_object.to_s} ||= #{page_class}.new;end")
|
30
|
+
# register the page object
|
23
31
|
TestCentricity::PageManager.register_page_object(page_object, page_class.new)
|
24
32
|
end
|
25
33
|
end
|
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: 0.7.
|
4
|
+
version: 0.7.9
|
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: 2016-04-
|
11
|
+
date: 2016-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|