testcentricity_web 0.8.8 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +91 -7
- data/lib/testcentricity_web/page_objects_helper.rb +5 -1
- data/lib/testcentricity_web/page_sections_helper.rb +5 -1
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/webdriver_helper.rb +36 -1
- data/testcentricity_web.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72ebdc8a23d3951e0331e793891a986e90f9087d
|
4
|
+
data.tar.gz: 9bb16a5cdc5ee7dbbc8f271dcd9a06afeb7dc54c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 460918f5625d82888571ab34ecb5de8d78ea310a1c411f28b898662121f1f53440273384a96c0687b335758e1dbaa924a8de4913d9001168c7bf67a708354c89
|
7
|
+
data.tar.gz: 21f1d4af406c383e94f7c338da5d29714facbcd909bb8f51ba230b65b5db967b73aa666cde0d221c0d6a96c396cd9467728c4876946c3abab20c189236b41296
|
data/README.md
CHANGED
@@ -11,6 +11,7 @@ The TestCentricity™ Web gem supports running testing against the following web
|
|
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 or Chrome)
|
13
13
|
* a "headless" browser (using Poltergeist and PhantomJS)
|
14
|
+
* mobile Safari browsers on iOS device simulators (using Appium and XCode on OS X)
|
14
15
|
* cloud hosted desktop or mobile web browsers using the BrowserStack, Sauce Labs, CrossBrowserTesting, or TestingBot services.
|
15
16
|
|
16
17
|
|
@@ -56,6 +57,22 @@ project's Gemfile:
|
|
56
57
|
gem 'poltergeist'
|
57
58
|
|
58
59
|
|
60
|
+
### Using Appium
|
61
|
+
|
62
|
+
If you will be running your tests on mobile Safari browsers on simulated iOS devices using Appium and XCode Simulators, you need to require
|
63
|
+
the following in your *env.rb* file:
|
64
|
+
|
65
|
+
require 'appium_capybara'
|
66
|
+
|
67
|
+
You also need to add this line to your automation project's Gemfile:
|
68
|
+
|
69
|
+
gem 'appium_capybara'
|
70
|
+
|
71
|
+
And then execute:
|
72
|
+
|
73
|
+
$ bundle
|
74
|
+
|
75
|
+
|
59
76
|
|
60
77
|
## Page Objects
|
61
78
|
|
@@ -153,11 +170,12 @@ the UI to hide implementation details, as shown below:
|
|
153
170
|
trait(:page_locator) { 'body.login-body' }
|
154
171
|
|
155
172
|
# Login page UI elements
|
156
|
-
textfield :user_id_field,
|
157
|
-
textfield :password_field,
|
158
|
-
button :login_button,
|
159
|
-
checkbox :remember_checkbox,
|
160
|
-
label :error_message_label,
|
173
|
+
textfield :user_id_field, '#userName'
|
174
|
+
textfield :password_field, '#password'
|
175
|
+
button :login_button, '#login'
|
176
|
+
checkbox :remember_checkbox, '#rememberUser'
|
177
|
+
label :error_message_label, 'div#statusBar.login-error'
|
178
|
+
link :forgot_password_link, 'a.forgotPassword'
|
161
179
|
|
162
180
|
def login(user_id, password)
|
163
181
|
user_id_field.set(user_id)
|
@@ -168,6 +186,18 @@ the UI to hide implementation details, as shown below:
|
|
168
186
|
def remember_me(state)
|
169
187
|
remember_checkbox.set_checkbox_state(state)
|
170
188
|
end
|
189
|
+
|
190
|
+
def verify_page_ui
|
191
|
+
ui = {
|
192
|
+
login_button => { :visible => true, :value => 'LOGIN' },
|
193
|
+
user_id_field => { :visible => true, :enabled => true },
|
194
|
+
password_field => { :visible => true, :enabled => true, :value => '', :placeholder => 'Password' },
|
195
|
+
remember_checkbox => { :exists => true, :enabled => true, :checked => false },
|
196
|
+
forgot_password_link => { :visible => true, :value => 'Forgot your password?' },
|
197
|
+
}
|
198
|
+
verify_ui_states(ui)
|
199
|
+
super
|
200
|
+
end
|
171
201
|
end
|
172
202
|
|
173
203
|
|
@@ -389,6 +419,29 @@ To use a local instance of the Chrome desktop browser to host the emulated mobil
|
|
389
419
|
to `chrome`.
|
390
420
|
|
391
421
|
|
422
|
+
### Mobile Safari browser on iOS Simulators
|
423
|
+
|
424
|
+
You can run your mobile web tests against the mobile Safari browser on simulated iOS devices using Appium and XCode on OS X. You will need to install
|
425
|
+
XCode and Appium, and ensure that the `appium_capybara` gem is installed and required as described above.
|
426
|
+
|
427
|
+
Once your test environment is properly configured, the following **Environment Variables** must be set as described in the table below.
|
428
|
+
|
429
|
+
**Environment Variable** | **Description**
|
430
|
+
--------------- | ----------------
|
431
|
+
`WEB_BROWSER` | Must be set to `appium`
|
432
|
+
`APP_PLATFORM` | Must be set to `MAC`
|
433
|
+
`APP_PLATFORM_NAME` | Must be set to `iOS`
|
434
|
+
`APP_BROWSER` | Must be set to `Safari`
|
435
|
+
`APP_VERSION` | Must be set to `9.3`, `9.2`, or which ever iOS Simulator version are installed in XCode
|
436
|
+
`APP_DEVICE`| Set to iOS device name supported by the iOS Simulator (`iPhone 6s Plus`, `iPad Pro`, `iPad Air 2`, etc.)
|
437
|
+
`ORIENTATION` | [Optional] Set to `portrait` or `landscape`
|
438
|
+
`APP_ALLOW_POPUPS` | [Optional] Allow javascript to open new windows in Safari. Set to `true` or `false`
|
439
|
+
`APP_IGNORE_FRAUD_WARNING` | [Optional] Prevent Safari from showing a fraudulent website warning. Set to `true` or `false`
|
440
|
+
`APP_NO_RESET` | [Optional] Don't reset app state after each test. Set to `true` or `false`
|
441
|
+
`APP_INITIAL_URL` | [Optional] Initial URL, default is a local welcome page. e.g. `http://www.apple.com`
|
442
|
+
|
443
|
+
|
444
|
+
|
392
445
|
### Remotely hosted desktop and mobile web browsers
|
393
446
|
|
394
447
|
You can run your automated tests against remotely hosted desktop and mobile web browsers using the BrowserStack, CrossBrowserTesting,
|
@@ -570,10 +623,30 @@ replace the placeholder text with your user account and authorization code for t
|
|
570
623
|
#==============
|
571
624
|
# profiles for mobile device screen orientation
|
572
625
|
#==============
|
626
|
+
|
573
627
|
portrait: ORIENTATION=portrait
|
574
628
|
landscape: ORIENTATION=landscape
|
575
629
|
|
576
630
|
|
631
|
+
#==============
|
632
|
+
# profiles for mobile Safari web browsers hosted within XCode iOS simulator
|
633
|
+
# NOTE: Requires installation of XCode, iOS version specific target simulators, Appium, and the appium_capybara gem
|
634
|
+
#==============
|
635
|
+
|
636
|
+
appium_ios: WEB_BROWSER=appium APP_PLATFORM="MAC" APP_PLATFORM_NAME="iOS" APP_BROWSER="Safari" <%= mobile %>
|
637
|
+
app_ios_93: --profile appium_ios APP_VERSION="9.3"
|
638
|
+
app_ios_92: --profile appium_ios APP_VERSION="9.2"
|
639
|
+
ipad_retina_93_sim: --profile app_ios_93 APP_DEVICE="iPad Retina"
|
640
|
+
ipad_pro_93_sim: --profile app_ios_93 APP_DEVICE="iPad Pro"
|
641
|
+
ipad_air_93_sim: --profile app_ios_93 APP_DEVICE="iPad Air"
|
642
|
+
ipad_air2_93_sim: --profile app_ios_93 APP_DEVICE="iPad Air 2"
|
643
|
+
ipad_2_93_sim: --profile app_ios_93 APP_DEVICE="iPad 2"
|
644
|
+
iphone_6s_plus_93_sim: --profile app_ios_93 APP_DEVICE="iPhone 6s Plus"
|
645
|
+
iphone_6s_93_sim: --profile app_ios_93 APP_DEVICE="iPhone 6s"
|
646
|
+
iphone_5s_93_sim: --profile app_ios_93 APP_DEVICE="iPhone 5s"
|
647
|
+
iphone_4s_93_sim: --profile app_ios_93 APP_DEVICE="iPhone 4s"
|
648
|
+
|
649
|
+
|
577
650
|
#==============
|
578
651
|
# profiles for remotely hosted web browsers on the BrowserStack service
|
579
652
|
#==============
|
@@ -810,17 +883,28 @@ invoking Cucumber in the command line. For instance, the following command invok
|
|
810
883
|
will be used as the target web browser:
|
811
884
|
|
812
885
|
$ cucumber -p chrome
|
813
|
-
|
886
|
+
|
887
|
+
|
814
888
|
The following command specifies that Cucumber will run tests against a local instance of Firefox, which will be used to emulate an iPad Pro
|
815
889
|
in landscape orientation:
|
816
890
|
|
817
891
|
$ cucumber -p ipad_pro -p landscape
|
818
|
-
|
892
|
+
|
893
|
+
|
894
|
+
The following command specifies that Cucumber will run tests against an iPad Pro with iOS version 9.3 in an XCode Simulator
|
895
|
+
in landscape orientation:
|
896
|
+
|
897
|
+
$ cucumber -p ipad_pro_93_sim -p landscape
|
898
|
+
|
899
|
+
NOTE: Appium must me running prior to executing this command
|
900
|
+
|
901
|
+
|
819
902
|
The following command specifies that Cucumber will run tests against a remotely hosted Safari web browser running on an OS X Yosemite
|
820
903
|
virtual machine on the BrowserStack service:
|
821
904
|
|
822
905
|
cucumber -p bs_safari_yos
|
823
906
|
|
907
|
+
|
824
908
|
The following command specifies that Cucumber will run tests against a remotely hosted Mobile Safari web browser on an iPhone 6s Plus in
|
825
909
|
landscape orientation running on the BrowserStack service:
|
826
910
|
|
@@ -255,7 +255,11 @@ module TestCentricity
|
|
255
255
|
when :checked
|
256
256
|
actual = ui_object.checked?
|
257
257
|
when :selected
|
258
|
-
|
258
|
+
if ui_object.get_object_type == :selectlist
|
259
|
+
actual = ui_object.get_selected_option
|
260
|
+
else
|
261
|
+
actual = ui_object.selected?
|
262
|
+
end
|
259
263
|
when :value
|
260
264
|
actual = ui_object.get_value
|
261
265
|
when :maxlength
|
@@ -271,7 +271,11 @@ module TestCentricity
|
|
271
271
|
when :checked
|
272
272
|
actual = ui_object.checked?
|
273
273
|
when :selected
|
274
|
-
|
274
|
+
if ui_object.get_object_type == :selectlist
|
275
|
+
actual = ui_object.get_selected_option
|
276
|
+
else
|
277
|
+
actual = ui_object.selected?
|
278
|
+
end
|
275
279
|
when :value
|
276
280
|
actual = ui_object.get_value
|
277
281
|
when :maxlength
|
@@ -16,6 +16,9 @@ module TestCentricity
|
|
16
16
|
Environ.set_device_type('browser')
|
17
17
|
|
18
18
|
case browser.downcase.to_sym
|
19
|
+
|
20
|
+
when :appium
|
21
|
+
initialize_appium
|
19
22
|
when :browserstack
|
20
23
|
initialize_browserstack
|
21
24
|
when :crossbrowser
|
@@ -31,13 +34,45 @@ module TestCentricity
|
|
31
34
|
end
|
32
35
|
|
33
36
|
# set browser window size only if testing with a desktop web browser
|
34
|
-
initialize_browser_size unless Capybara.current_driver == :poltergeist
|
37
|
+
initialize_browser_size unless Capybara.current_driver == :poltergeist || Capybara.current_driver == :appium
|
35
38
|
|
36
39
|
puts "Using #{Environ.browser.to_s} browser"
|
37
40
|
end
|
38
41
|
|
39
42
|
private
|
40
43
|
|
44
|
+
def self.initialize_appium
|
45
|
+
Environ.set_device(true)
|
46
|
+
Environ.set_platform(:mobile)
|
47
|
+
Environ.set_device(true)
|
48
|
+
Environ.set_device_type(ENV['APP_DEVICE'])
|
49
|
+
Capybara.default_driver = :appium
|
50
|
+
endpoint = 'http://localhost:4723/wd/hub'
|
51
|
+
desired_capabilities = {
|
52
|
+
platform: ENV['APP_PLATFORM'],
|
53
|
+
platformName: ENV['APP_PLATFORM_NAME'],
|
54
|
+
platformVersion: ENV['APP_VERSION'],
|
55
|
+
browserName: ENV['APP_BROWSER'],
|
56
|
+
deviceName: ENV['APP_DEVICE']
|
57
|
+
}
|
58
|
+
desired_capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
59
|
+
desired_capabilities['udid'] = ENV['APP_UDID'] if ENV['APP_UDID']
|
60
|
+
desired_capabilities['safariInitialUrl'] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
|
61
|
+
desired_capabilities['safariAllowPopups'] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
|
62
|
+
desired_capabilities['safariIgnoreFraudWarning'] = ENV['APP_IGNORE_FRAUD_WARNING'] if ENV['APP_IGNORE_FRAUD_WARNING']
|
63
|
+
desired_capabilities['noReset'] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
|
64
|
+
|
65
|
+
Capybara.register_driver :appium do |app|
|
66
|
+
appium_lib_options = { server_url: endpoint }
|
67
|
+
all_options = {
|
68
|
+
browser: :safari,
|
69
|
+
appium_lib: appium_lib_options,
|
70
|
+
caps: desired_capabilities
|
71
|
+
}
|
72
|
+
Appium::Capybara::Driver.new app, all_options
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
41
76
|
def self.initialize_local_browser(browser)
|
42
77
|
Capybara.default_driver = :selenium
|
43
78
|
Capybara.register_driver :selenium do |app|
|
data/testcentricity_web.gemspec
CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |spec|
|
|
15
15
|
TestCentricity™ core generic framework for desktop and mobile web site testing implements a Page Object Model DSL
|
16
16
|
for use with Cucumber, Capybara, and Selenium-Webdriver. Supports testing against locally hosted desktop browsers
|
17
17
|
(Firefox, Chrome, Safari, IE, or Edge), locally hosted emulated iOS and Android mobile browsers (using Firefox or
|
18
|
-
Chrome), a "headless" browser (using Poltergeist and PhantomJS),
|
19
|
-
Sauce Labs, CrossBrowserTesting, or TestingBot services.}
|
18
|
+
Chrome), a "headless" browser (using Poltergeist and PhantomJS), mobile Safari web browsers on iOS device simulators,
|
19
|
+
or on cloud hosted browsers using the BrowserStack, Sauce Labs, CrossBrowserTesting, or TestingBot services.}
|
20
20
|
spec.homepage = ''
|
21
21
|
spec.license = 'BSD3'
|
22
22
|
|
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.
|
4
|
+
version: 0.9.0
|
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-05-
|
11
|
+
date: 2016-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -147,8 +147,8 @@ description: |2-
|
|
147
147
|
TestCentricity™ core generic framework for desktop and mobile web site testing implements a Page Object Model DSL
|
148
148
|
for use with Cucumber, Capybara, and Selenium-Webdriver. Supports testing against locally hosted desktop browsers
|
149
149
|
(Firefox, Chrome, Safari, IE, or Edge), locally hosted emulated iOS and Android mobile browsers (using Firefox or
|
150
|
-
Chrome), a "headless" browser (using Poltergeist and PhantomJS),
|
151
|
-
Sauce Labs, CrossBrowserTesting, or TestingBot services.
|
150
|
+
Chrome), a "headless" browser (using Poltergeist and PhantomJS), mobile Safari web browsers on iOS device simulators,
|
151
|
+
or on cloud hosted browsers using the BrowserStack, Sauce Labs, CrossBrowserTesting, or TestingBot services.
|
152
152
|
email:
|
153
153
|
- test_automation@icloud.com
|
154
154
|
executables: []
|