testcentricity_web 4.1.9 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +96 -1
- data/README.md +88 -48
- data/lib/testcentricity_web/browser_helper.rb +2 -1
- data/lib/testcentricity_web/data_objects/environment.rb +0 -1
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +40 -3
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +89 -80
- data/lib/testcentricity_web/web_elements/media.rb +108 -0
- data/lib/testcentricity_web/web_elements/textfield.rb +28 -0
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +39 -1
- metadata +37 -181
- data/.gitignore +0 -39
- data/.idea/.name +0 -1
- data/.idea/encodings.xml +0 -6
- data/.idea/misc.xml +0 -4
- data/.idea/modules.xml +0 -8
- data/.idea/vcs.xml +0 -7
- data/.rspec +0 -4
- data/.rubocop.yml +0 -38
- data/.ruby-version +0 -1
- data/.simplecov +0 -9
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -6
- data/Rakefile +0 -115
- data/config/cucumber.yml +0 -171
- data/config/locales/en-US.yml +0 -56
- data/config/test_data/LOCAL_data.json +0 -15
- data/config/test_data/LOCAL_data.xls +0 -0
- data/config/test_data/LOCAL_data.yml +0 -11
- data/config/test_data/data.json +0 -25
- data/config/test_data/data.xls +0 -0
- data/config/test_data/data.yml +0 -20
- data/docker-compose.yml +0 -48
- data/features/basic_form_page_css.feature +0 -54
- data/features/basic_form_page_xpath.feature +0 -26
- data/features/custom_controls.feature +0 -29
- data/features/media_players.feature +0 -67
- data/features/step_definitions/generic_steps.rb.rb +0 -124
- data/features/step_definitions/media_steps.rb +0 -30
- data/features/support/data/form_data.rb +0 -43
- data/features/support/env.rb +0 -51
- data/features/support/hooks.rb +0 -270
- data/features/support/pages/base_test_page.rb +0 -22
- data/features/support/pages/basic_css_form_page.rb +0 -53
- data/features/support/pages/basic_form_page.rb +0 -429
- data/features/support/pages/basic_xpath_form_page.rb +0 -54
- data/features/support/pages/custom_controls_page.rb +0 -263
- data/features/support/pages/indexed_sections_page.rb +0 -57
- data/features/support/pages/media_test_page.rb +0 -207
- data/features/support/sections/header_nav.rb +0 -48
- data/features/support/sections/product_card.rb +0 -39
- data/features/support/world_data.rb +0 -12
- data/features/support/world_pages.rb +0 -18
- data/reports/.keep +0 -1
- data/spec/fixtures/page_object.rb +0 -22
- data/spec/fixtures/section_object.rb +0 -21
- data/spec/spec_helper.rb +0 -31
- data/spec/testcentricity_web/browser_spec.rb +0 -41
- data/spec/testcentricity_web/elements/audio_spec.rb +0 -68
- data/spec/testcentricity_web/elements/button_spec.rb +0 -18
- data/spec/testcentricity_web/elements/checkbox_spec.rb +0 -33
- data/spec/testcentricity_web/elements/file_field_spec.rb +0 -13
- data/spec/testcentricity_web/elements/image_spec.rb +0 -33
- data/spec/testcentricity_web/elements/label_spec.rb +0 -18
- data/spec/testcentricity_web/elements/link_spec.rb +0 -23
- data/spec/testcentricity_web/elements/list_spec.rb +0 -13
- data/spec/testcentricity_web/elements/radio_spec.rb +0 -28
- data/spec/testcentricity_web/elements/ui_element_spec.rb +0 -125
- data/spec/testcentricity_web/elements/video_spec.rb +0 -68
- data/spec/testcentricity_web/helper_specs/object_helpers_spec.rb +0 -39
- data/spec/testcentricity_web/helper_specs/string_helpers_spec.rb +0 -49
- data/spec/testcentricity_web/page_object_spec.rb +0 -90
- data/spec/testcentricity_web/section_object_spec.rb +0 -72
- data/spec/testcentricity_web/version_spec.rb +0 -7
- data/spec/testcentricity_web/webdriver_connect/grid_webdriver_spec.rb +0 -72
- data/spec/testcentricity_web/webdriver_connect/local_webdriver_spec.rb +0 -86
- data/spec/testcentricity_web/webdriver_connect/mobile_webdriver_spec.rb +0 -65
- data/test_site/basic_test_page.html +0 -290
- data/test_site/chosen-sprite.png +0 -0
- data/test_site/chosen-sprite@2x.png +0 -0
- data/test_site/chosen.css +0 -496
- data/test_site/chosen.jquery.js +0 -1359
- data/test_site/chosen.jquery.min.js +0 -3
- data/test_site/chosen.min.css +0 -11
- data/test_site/chosen.proto.js +0 -1399
- data/test_site/chosen.proto.min.js +0 -3
- data/test_site/composer.json +0 -36
- data/test_site/custom_controls_page.html +0 -629
- data/test_site/docsupport/chosen.png +0 -0
- data/test_site/docsupport/init.js +0 -11
- data/test_site/docsupport/init.proto.js +0 -16
- data/test_site/docsupport/jquery-1.12.4.min.js +0 -5
- data/test_site/docsupport/jquery-3.2.1.min.js +0 -4
- data/test_site/docsupport/oss-credit.png +0 -0
- data/test_site/docsupport/prism.css +0 -108
- data/test_site/docsupport/prism.js +0 -9
- data/test_site/docsupport/prototype-1.7.0.0.js +0 -6082
- data/test_site/docsupport/style.css +0 -219
- data/test_site/images/Blouse_Black.jpg +0 -0
- data/test_site/images/Granny.jpg +0 -0
- data/test_site/images/Printed_Dress.jpg +0 -0
- data/test_site/images/T-shirt.jpg +0 -0
- data/test_site/images/Wilder.jpg +0 -0
- data/test_site/images/You_Betcha.jpg +0 -0
- data/test_site/images/jeans3.jpg +0 -0
- data/test_site/indexed_sections_page.html +0 -215
- data/test_site/media/MIB2-subtitles-pt-BR.vtt +0 -49
- data/test_site/media/MIB2.mp4 +0 -0
- data/test_site/media/MP4_small.mp4 +0 -0
- data/test_site/media/MPS_sample.mp3 +0 -0
- data/test_site/media/bbc_scotland_report.mp3 +0 -0
- data/test_site/media/count_and_bars.mp4 +0 -0
- data/test_site/media_page.html +0 -86
- data/testcentricity_web.gemspec +0 -57
data/config/cucumber.yml
DELETED
@@ -1,171 +0,0 @@
|
|
1
|
-
<% desktop = "--require features BROWSER_TILE=true BROWSER_SIZE=1300,1000 --publish-quiet" %>
|
2
|
-
<% mobile = "--require features BROWSER_TILE=true --publish-quiet" %>
|
3
|
-
<% reports = "--require features --format pretty --format html --out reports/test_results.html --format junit --out reports --format json --out reports/test_results.json" %>
|
4
|
-
|
5
|
-
|
6
|
-
#==============
|
7
|
-
# generic test context profiles
|
8
|
-
#==============
|
9
|
-
|
10
|
-
failing: --tags '@failing and not @wip'
|
11
|
-
wip: --tags '@wip and not @failing'
|
12
|
-
dev: --tags '@dev and (not @wip and not @failing)'
|
13
|
-
|
14
|
-
|
15
|
-
#==============
|
16
|
-
# test reporting profiles
|
17
|
-
#==============
|
18
|
-
|
19
|
-
report: <%= reports %> REPORTING=true
|
20
|
-
parallel: PARALLEL=true REPORTING=true --require features --format pretty --format html --out reports/test_results<%= ENV['TEST_ENV_NUMBER'] %>.html --format junit --out reports --format json --out reports/test_results<%= ENV['TEST_ENV_NUMBER'] %>.json
|
21
|
-
|
22
|
-
|
23
|
-
#==============
|
24
|
-
# profiles for locally hosted desktop web browsers
|
25
|
-
#==============
|
26
|
-
|
27
|
-
local: TEST_ENVIRONMENT=LOCAL
|
28
|
-
chrome: WEB_BROWSER=chrome DATA_SOURCE=yaml <%= desktop %>
|
29
|
-
edge: WEB_BROWSER=edge DATA_SOURCE=json <%= desktop %>
|
30
|
-
safari: WEB_BROWSER=safari DATA_SOURCE=Excel <%= desktop %>
|
31
|
-
firefox: WEB_BROWSER=firefox <%= desktop %>
|
32
|
-
|
33
|
-
chrome_local: --profile local --profile chrome
|
34
|
-
edge_local: --profile local --profile edge
|
35
|
-
safari_local: --profile local --profile safari
|
36
|
-
firefox_local: --profile local --profile firefox
|
37
|
-
|
38
|
-
firefox_headless: --profile local WEB_BROWSER=firefox_headless <%= desktop %>
|
39
|
-
chrome_headless: --profile local WEB_BROWSER=chrome_headless <%= desktop %>
|
40
|
-
edge_headless: --profile local WEB_BROWSER=edge_headless <%= desktop %>
|
41
|
-
|
42
|
-
|
43
|
-
#==============
|
44
|
-
# profile for Selenium Grid and Dockerized Selenium Grid hosted desktop web browsers
|
45
|
-
#==============
|
46
|
-
grid: SELENIUM=remote TEST_ENVIRONMENT=REMOTE REMOTE_ENDPOINT="http://localhost:4444/wd/hub"
|
47
|
-
chrome_grid: --profile grid --profile chrome
|
48
|
-
edge_grid: --profile grid --profile edge
|
49
|
-
firefox_grid: --profile grid --profile firefox
|
50
|
-
|
51
|
-
|
52
|
-
#==============
|
53
|
-
# profiles for mobile device screen orientation
|
54
|
-
#==============
|
55
|
-
|
56
|
-
landscape: ORIENTATION=landscape
|
57
|
-
portrait: ORIENTATION=portrait
|
58
|
-
|
59
|
-
|
60
|
-
#==============
|
61
|
-
# profiles for locally hosted mobile web browsers (emulated locally in Chrome browser)
|
62
|
-
#==============
|
63
|
-
|
64
|
-
ipad_pro_11_local: --profile local WEB_BROWSER=ipad_pro_11 HOST_BROWSER=chrome --profile portrait <%= mobile %>
|
65
|
-
ipad_pro_12_local: --profile local WEB_BROWSER=ipad_pro_12_9 HOST_BROWSER=chrome --profile portrait <%= mobile %>
|
66
|
-
ipad_pro_12_grid: --profile grid WEB_BROWSER=ipad_pro_12_9 HOST_BROWSER=chrome --profile portrait <%= mobile %>
|
67
|
-
|
68
|
-
|
69
|
-
#==============
|
70
|
-
# profile to start Appium Server prior to running mobile browser tests on iOS or Android simulators or physical devices
|
71
|
-
#==============
|
72
|
-
run_appium: APPIUM_SERVER=run
|
73
|
-
|
74
|
-
|
75
|
-
#==============
|
76
|
-
# profiles for mobile Safari web browsers hosted within XCode iOS simulators
|
77
|
-
# NOTE: Requires installation of XCode, iOS version specific target simulators, Appium, and the appium_capybara gem
|
78
|
-
#==============
|
79
|
-
|
80
|
-
appium_ios: WEB_BROWSER=appium AUTOMATION_ENGINE=XCUITest APP_PLATFORM_NAME="ios" APP_BROWSER="Safari" NEW_COMMAND_TIMEOUT=30 SHOW_SIM_KEYBOARD=false <%= mobile %>
|
81
|
-
app_ios_15: --profile appium_ios APP_VERSION="15.4"
|
82
|
-
|
83
|
-
ipad_pro_12_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Pro (12.9-inch) (5th generation)"
|
84
|
-
ipad_air_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Air (5th generation)" <%= desktop %>
|
85
|
-
|
86
|
-
ios_remote: --profile ipad_pro_12_15_sim --profile run_appium ORIENTATION=portrait TEST_ENVIRONMENT=REMOTE
|
87
|
-
|
88
|
-
|
89
|
-
#==============
|
90
|
-
# profiles for Android mobile web browsers hosted within Android Studio Android Virtual Device emulators
|
91
|
-
# NOTE: Requires installation of Android Studio, Android version specific virtual device simulators, Appium, and the appium_capybara gem
|
92
|
-
#==============
|
93
|
-
|
94
|
-
appium_android: WEB_BROWSER=appium APP_PLATFORM_NAME="Android" <%= mobile %>
|
95
|
-
app_android_12: --profile appium_android APP_BROWSER="Chrome" APP_VERSION="12.0"
|
96
|
-
pixel_c_api31_sim: --profile app_android_12 DEVICE_TYPE=tablet APP_DEVICE="Pixel_C_API_31"
|
97
|
-
|
98
|
-
android_remote: --profile pixel_c_api31_sim --profile run_appium ORIENTATION=portrait TEST_ENVIRONMENT=REMOTE
|
99
|
-
|
100
|
-
|
101
|
-
#==============
|
102
|
-
# profiles for remotely hosted web browsers on the BrowserStack service
|
103
|
-
#==============
|
104
|
-
|
105
|
-
browserstack: WEB_BROWSER=browserstack BS_USERNAME="<INSERT USER NAME HERE>" BS_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - BrowserStack"
|
106
|
-
bs_desktop: --profile browserstack <%= desktop %> RESOLUTION="1920x1080"
|
107
|
-
bs_mobile: --profile browserstack <%= mobile %>
|
108
|
-
|
109
|
-
# BrowserStack macOS desktop browser profiles
|
110
|
-
bs_macos_monterey: --profile bs_desktop BS_OS="OS X" BS_OS_VERSION="Monterey"
|
111
|
-
bs_chrome_monterey: --profile bs_macos_monterey BS_BROWSER="Chrome" BS_VERSION="latest"
|
112
|
-
bs_edge_monterey: --profile bs_macos_monterey BS_BROWSER="Edge" BS_VERSION="latest"
|
113
|
-
bs_safari_monterey: --profile bs_macos_monterey BS_BROWSER="Safari" BS_VERSION="latest"
|
114
|
-
|
115
|
-
# BrowserStack iOS mobile browser profiles
|
116
|
-
bs_ipad: --profile bs_mobile BS_OS=ios BS_BROWSER=Safari DEVICE_TYPE=tablet BS_REAL_MOBILE="true"
|
117
|
-
bs_ipad_pro_12: --profile bs_ipad BS_DEVICE="iPad Pro 12.9 2018" BS_OS_VERSION="15"
|
118
|
-
|
119
|
-
# BrowserStack Android mobile browser profiles
|
120
|
-
bs_android: --profile bs_mobile BS_OS=android BS_BROWSER=Chrome DEVICE_TYPE=tablet BS_REAL_MOBILE="true"
|
121
|
-
bs_android_tablet: --profile bs_android BS_DEVICE="Samsung Galaxy Tab S7" BS_OS_VERSION="10.0"
|
122
|
-
|
123
|
-
|
124
|
-
#==============
|
125
|
-
# profiles for remotely hosted web browsers on the LambdaTest service
|
126
|
-
#==============
|
127
|
-
|
128
|
-
lambdatest: WEB_BROWSER=lambdatest LT_USERNAME="<INSERT USER NAME HERE>" LT_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - LambdaTest"
|
129
|
-
lt_desktop: --profile lambdatest <%= desktop %> RESOLUTION="2560x1440"
|
130
|
-
|
131
|
-
# LambdaTest macOS desktop browser profiles
|
132
|
-
lt_macos_monterey: --profile lt_desktop LT_OS="MacOS Monterey"
|
133
|
-
lt_chrome_monterey: --profile lt_macos_monterey LT_BROWSER="Chrome" LT_VERSION="98.0"
|
134
|
-
lt_edge_monterey: --profile lt_macos_monterey LT_BROWSER="MicrosoftEdge" LT_VERSION="97.0"
|
135
|
-
|
136
|
-
|
137
|
-
#==============
|
138
|
-
# profiles for remotely hosted web browsers on the TestingBot service
|
139
|
-
#==============
|
140
|
-
|
141
|
-
testingbot: WEB_BROWSER=testingbot TB_USERNAME="<INSERT USER NAME HERE>" TB_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - TestingBot"
|
142
|
-
tb_desktop: --profile testingbot <%= desktop %> RESOLUTION="1920x1200"
|
143
|
-
|
144
|
-
# TestingBot macOS desktop browser profiles
|
145
|
-
tb_macos_monterey: --profile tb_desktop TB_OS="MONTEREY"
|
146
|
-
tb_chrome_monterey: --profile tb_macos_monterey TB_BROWSER="chrome" TB_VERSION="latest"
|
147
|
-
tb_edge_monterey: --profile tb_macos_monterey TB_BROWSER="microsoftedge" TB_VERSION="latest"
|
148
|
-
|
149
|
-
|
150
|
-
#==============
|
151
|
-
# profiles for remotely hosted web browsers on the SauceLabs service
|
152
|
-
#==============
|
153
|
-
|
154
|
-
saucelabs: WEB_BROWSER=saucelabs SL_USERNAME="<INSERT USER NAME HERE>" SL_AUTHKEY="<INSERT PASSWORD HERE>" DATA_CENTER="us-west-1" AUTOMATE_PROJECT="TC_Web_Sample - SauceLabs"
|
155
|
-
sl_desktop: --profile saucelabs <%= desktop %>
|
156
|
-
sl_mobile: --profile saucelabs <%= mobile %>
|
157
|
-
|
158
|
-
# SauceLabs macOS desktop browser profiles
|
159
|
-
sl_macos_monterey: --profile sl_desktop SL_OS="macOS 12" RESOLUTION="1920x1440"
|
160
|
-
sl_chrome_monterey: --profile sl_macos_monterey SL_BROWSER="chrome" SL_VERSION="latest"
|
161
|
-
sl_edge_monterey: --profile sl_macos_monterey SL_BROWSER="MicrosoftEdge" SL_VERSION="latest"
|
162
|
-
sl_firefox_monterey: --profile sl_macos_monterey SL_BROWSER="Firefox" SL_VERSION="latest"
|
163
|
-
|
164
|
-
# SauceLabs Windows desktop browser profiles
|
165
|
-
sl_windows: --profile sl_desktop RESOLUTION="1920x1200"
|
166
|
-
sl_edge_win11: --profile sl_windows SL_OS="Windows 11" SL_BROWSER="MicrosoftEdge" SL_VERSION="latest"
|
167
|
-
sl_ie_win10: --profile sl_windows SL_OS="Windows 10" SL_BROWSER="internet explorer" SL_VERSION="11"
|
168
|
-
|
169
|
-
# SauceLabs iOS mobile browser profiles
|
170
|
-
sl_ipad: --profile sl_mobile DEVICE_TYPE=tablet SL_PLATFORM=iOS SL_BROWSER=Safari
|
171
|
-
sl_ipad_pro_12: --profile sl_ipad SL_DEVICE="iPad Pro (12.9 inch) (5th generation) Simulator" SL_VERSION="15.0"
|
data/config/locales/en-US.yml
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# Localization file for English/U.S. locale.
|
2
|
-
|
3
|
-
en-US:
|
4
|
-
time:
|
5
|
-
formats:
|
6
|
-
default: "%m/%d/%Y"
|
7
|
-
long: "%B %d, %Y"
|
8
|
-
short: "%b %d"
|
9
|
-
abbrev: "%b %d, %Y"
|
10
|
-
abbrev_month: "%b"
|
11
|
-
month_year: "%B %Y"
|
12
|
-
date:
|
13
|
-
abbr_day_names:
|
14
|
-
- Sun
|
15
|
-
- Mon
|
16
|
-
- Tue
|
17
|
-
- Wed
|
18
|
-
- Thu
|
19
|
-
- Fri
|
20
|
-
- Sat
|
21
|
-
abbr_month_names:
|
22
|
-
-
|
23
|
-
- Jan
|
24
|
-
- Feb
|
25
|
-
- Mar
|
26
|
-
- Apr
|
27
|
-
- May
|
28
|
-
- Jun
|
29
|
-
- Jul
|
30
|
-
- Aug
|
31
|
-
- Sep
|
32
|
-
- Oct
|
33
|
-
- Nov
|
34
|
-
- Dec
|
35
|
-
day_names:
|
36
|
-
- Sunday
|
37
|
-
- Monday
|
38
|
-
- Tuesday
|
39
|
-
- Wednesday
|
40
|
-
- Thursday
|
41
|
-
- Friday
|
42
|
-
- Saturday
|
43
|
-
month_names:
|
44
|
-
-
|
45
|
-
- January
|
46
|
-
- February
|
47
|
-
- March
|
48
|
-
- April
|
49
|
-
- May
|
50
|
-
- June
|
51
|
-
- July
|
52
|
-
- August
|
53
|
-
- September
|
54
|
-
- October
|
55
|
-
- November
|
56
|
-
- December
|
@@ -1,15 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"Form_data": {
|
3
|
-
"primary": {
|
4
|
-
"username": "Thaddeus Eumbwebwe",
|
5
|
-
"password": "Pa55w0rd",
|
6
|
-
"image_filename": "Granny.jpg",
|
7
|
-
"multi_select": "Selection Item 3",
|
8
|
-
"drop_down_item": "Drop Down Item 3",
|
9
|
-
"check1": false,
|
10
|
-
"check2": true,
|
11
|
-
"check3": true,
|
12
|
-
"radio_select": 1
|
13
|
-
}
|
14
|
-
}
|
15
|
-
}
|
Binary file
|
data/config/test_data/data.json
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"Environments": {
|
3
|
-
"LOCAL": {
|
4
|
-
"PROTOCOL": "file",
|
5
|
-
"BASE_URL": "/../../test_site"
|
6
|
-
},
|
7
|
-
"REMOTE": {
|
8
|
-
"PROTOCOL": "http",
|
9
|
-
"BASE_URL": "192.168.1.129/test_site"
|
10
|
-
}
|
11
|
-
},
|
12
|
-
"Form_data": {
|
13
|
-
"primary": {
|
14
|
-
"username": "Thaddeus Eumbwebwe",
|
15
|
-
"password": "Pa55w0rd",
|
16
|
-
"image_filename": "Granny.jpg",
|
17
|
-
"multi_select": "Selection Item 3",
|
18
|
-
"drop_down_item": "Drop Down Item 3",
|
19
|
-
"check1": false,
|
20
|
-
"check2": true,
|
21
|
-
"check3": true,
|
22
|
-
"radio_select": 1
|
23
|
-
}
|
24
|
-
}
|
25
|
-
}
|
data/config/test_data/data.xls
DELETED
Binary file
|
data/config/test_data/data.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# This section is populated with Environment data required to execute automated test suites on all supported environments
|
2
|
-
Environments:
|
3
|
-
LOCAL:
|
4
|
-
PROTOCOL: "file"
|
5
|
-
BASE_URL: "/../../test_site"
|
6
|
-
REMOTE:
|
7
|
-
PROTOCOL: "http"
|
8
|
-
BASE_URL: "192.168.1.129/test_site"
|
9
|
-
|
10
|
-
Form_data:
|
11
|
-
primary:
|
12
|
-
username: "Xavier Snicklefritz"
|
13
|
-
password: "Pa55W0rd"
|
14
|
-
image_filename: "Wilder.jpg"
|
15
|
-
multi_select: "Selection Item 1"
|
16
|
-
drop_down_item: "Drop Down Item 2"
|
17
|
-
check1: true
|
18
|
-
check2: true
|
19
|
-
check3: true
|
20
|
-
radio_select: 3
|
data/docker-compose.yml
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
# To execute this docker-compose yml file use `docker-compose -f docker-compose.yml up`
|
2
|
-
# Add the `-d` flag at the end for detached execution
|
3
|
-
# To stop the execution, hit Ctrl+C, and then `docker-compose -f docker-compose.yml down`
|
4
|
-
version: "3"
|
5
|
-
services:
|
6
|
-
chrome:
|
7
|
-
image: selenium/node-chrome:4.1.2-20220217
|
8
|
-
shm_size: 2gb
|
9
|
-
depends_on:
|
10
|
-
- selenium-hub
|
11
|
-
environment:
|
12
|
-
- SE_EVENT_BUS_HOST=selenium-hub
|
13
|
-
- SE_EVENT_BUS_PUBLISH_PORT=4442
|
14
|
-
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
|
15
|
-
- SE_NODE_MAX_SESSIONS=4
|
16
|
-
- SE_NODE_OVERRIDE_MAX_SESSIONS=true
|
17
|
-
|
18
|
-
edge:
|
19
|
-
image: selenium/node-edge:4.1.2-20220217
|
20
|
-
shm_size: 2gb
|
21
|
-
depends_on:
|
22
|
-
- selenium-hub
|
23
|
-
environment:
|
24
|
-
- SE_EVENT_BUS_HOST=selenium-hub
|
25
|
-
- SE_EVENT_BUS_PUBLISH_PORT=4442
|
26
|
-
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
|
27
|
-
- SE_NODE_MAX_SESSIONS=4
|
28
|
-
- SE_NODE_OVERRIDE_MAX_SESSIONS=true
|
29
|
-
|
30
|
-
firefox:
|
31
|
-
image: selenium/node-firefox:4.1.2-20220217
|
32
|
-
shm_size: 2gb
|
33
|
-
depends_on:
|
34
|
-
- selenium-hub
|
35
|
-
environment:
|
36
|
-
- SE_EVENT_BUS_HOST=selenium-hub
|
37
|
-
- SE_EVENT_BUS_PUBLISH_PORT=4442
|
38
|
-
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
|
39
|
-
- SE_NODE_MAX_SESSIONS=4
|
40
|
-
- SE_NODE_OVERRIDE_MAX_SESSIONS=true
|
41
|
-
|
42
|
-
selenium-hub:
|
43
|
-
image: selenium/hub:4.1.2-20220217
|
44
|
-
container_name: selenium-hub
|
45
|
-
ports:
|
46
|
-
- "4442:4442"
|
47
|
-
- "4443:4443"
|
48
|
-
- "4444:4444"
|
@@ -1,54 +0,0 @@
|
|
1
|
-
Feature: Basic HTML Form Test Page using CSS locators
|
2
|
-
In order to ensure comprehensive support for HTML UI elements and forms
|
3
|
-
As a developer of the TestCentricity web gem
|
4
|
-
I expect to validate the interaction and verification capabilities of typical HTML form UI elements
|
5
|
-
|
6
|
-
|
7
|
-
Background:
|
8
|
-
Given I am on the Basic CSS Form page
|
9
|
-
|
10
|
-
|
11
|
-
Scenario: Validate verify_ui_states method and associated object state verification methods
|
12
|
-
Then I expect the Basic CSS Form page to be correctly displayed
|
13
|
-
|
14
|
-
|
15
|
-
@!mobile @!firefox_headless @!firefox_grid
|
16
|
-
Scenario: Validate verify_focus_order method
|
17
|
-
Then I expect the tab order to be correct
|
18
|
-
|
19
|
-
|
20
|
-
Scenario: Validate populate_data_fields method and associated object action methods
|
21
|
-
When I populate the form fields
|
22
|
-
Then I expect the form fields to be correctly populated
|
23
|
-
When I cancel my changes
|
24
|
-
Then I expect the Basic CSS Form page to be correctly displayed
|
25
|
-
|
26
|
-
|
27
|
-
Scenario Outline: Choose selectlist options by index, value, and text
|
28
|
-
When I choose selectlist options by <method>
|
29
|
-
Then I expect the selected option to be displayed
|
30
|
-
|
31
|
-
Examples:
|
32
|
-
|method |
|
33
|
-
|index |
|
34
|
-
|text |
|
35
|
-
|
36
|
-
@!safari @!firefox @!firefox_headless
|
37
|
-
Examples:
|
38
|
-
|method |
|
39
|
-
|value |
|
40
|
-
|
41
|
-
|
42
|
-
Scenario Outline: Verify functionality of navigation tabs and browser back/forward
|
43
|
-
When I click the <target_page> navigation tab
|
44
|
-
Then I expect the <target_page> page to be correctly displayed
|
45
|
-
When I navigate back
|
46
|
-
Then I should be on the Basic CSS Form page
|
47
|
-
When I navigate forward
|
48
|
-
Then I should be on the <target_page> page
|
49
|
-
|
50
|
-
Examples:
|
51
|
-
|target_page |
|
52
|
-
|Media Test |
|
53
|
-
|Indexed Sections |
|
54
|
-
|Custom Controls |
|
@@ -1,26 +0,0 @@
|
|
1
|
-
@!grid @!mobile @!headless
|
2
|
-
|
3
|
-
|
4
|
-
Feature: Basic HTML Form Test Page using Xpath locators
|
5
|
-
In order to ensure comprehensive support for HTML UI elements and forms
|
6
|
-
As a developer of the TestCentricity web gem
|
7
|
-
I expect to validate the interaction and verification capabilities of typical HTML form UI elements
|
8
|
-
|
9
|
-
|
10
|
-
Background:
|
11
|
-
Given I am on the Basic Xpath Form page
|
12
|
-
|
13
|
-
|
14
|
-
Scenario: Validate verify_ui_states method and associated object state verification methods
|
15
|
-
Then I expect the Basic Xpath Form page to be correctly displayed
|
16
|
-
|
17
|
-
|
18
|
-
Scenario: Validate verify_focus_order method
|
19
|
-
Then I expect the tab order to be correct
|
20
|
-
|
21
|
-
|
22
|
-
Scenario: Validate populate_data_fields method and associated object action methods
|
23
|
-
When I populate the form fields
|
24
|
-
Then I expect the form fields to be correctly populated
|
25
|
-
When I cancel my changes
|
26
|
-
Then I expect the Basic Xpath Form page to be correctly displayed
|
@@ -1,29 +0,0 @@
|
|
1
|
-
Feature: Custom Controls
|
2
|
-
In order to ensure comprehensive support for custom UI elements
|
3
|
-
As a developer of the TestCentricity web gem
|
4
|
-
I expect to validate the interaction and verification capabilities of custom UI elements
|
5
|
-
|
6
|
-
|
7
|
-
Background:
|
8
|
-
Given I am on the Custom Controls page
|
9
|
-
|
10
|
-
|
11
|
-
Scenario: Validate populate_data_fields method and associated object action methods
|
12
|
-
When I populate the form fields
|
13
|
-
Then I expect the form fields to be correctly populated
|
14
|
-
|
15
|
-
|
16
|
-
@!safari @!firefox @!firefox_headless @!ios
|
17
|
-
Scenario: Use custom select list input field to choose options
|
18
|
-
When I choose custom select options by typing
|
19
|
-
Then I expect the form fields to be correctly populated
|
20
|
-
|
21
|
-
|
22
|
-
Scenario Outline: Choose selectlist options by index and text
|
23
|
-
When I choose selectlist options by <method>
|
24
|
-
Then I expect the selected option to be displayed
|
25
|
-
|
26
|
-
Examples:
|
27
|
-
|method |
|
28
|
-
|index |
|
29
|
-
|text |
|
@@ -1,67 +0,0 @@
|
|
1
|
-
@!grid @!mobile
|
2
|
-
|
3
|
-
|
4
|
-
Feature: HTML5 Audio/Video Test Page using CSS locators
|
5
|
-
In order to ensure comprehensive support for HTML5 Audio and Video media elements
|
6
|
-
As a developer of the TestCentricity web gem
|
7
|
-
I expect to validate the interaction and verification capabilities of media UI elements
|
8
|
-
|
9
|
-
|
10
|
-
Background:
|
11
|
-
Given I am on the Media Test page
|
12
|
-
|
13
|
-
|
14
|
-
Scenario: Verify video player play and pause controls
|
15
|
-
When I play the video media
|
16
|
-
Then the video should be playing
|
17
|
-
When I pause the video media
|
18
|
-
Then the video should be paused
|
19
|
-
|
20
|
-
|
21
|
-
Scenario: Verify audio player play and pause controls
|
22
|
-
When I play the audio media
|
23
|
-
Then the audio should be playing
|
24
|
-
When I pause the audio media
|
25
|
-
Then the audio should be paused
|
26
|
-
|
27
|
-
|
28
|
-
Scenario: Verify video player mute control
|
29
|
-
When I mute the video media
|
30
|
-
Then the video should be muted
|
31
|
-
When I unmute the video media
|
32
|
-
Then the video should be unmuted
|
33
|
-
|
34
|
-
|
35
|
-
Scenario: Verify audio player mute control
|
36
|
-
When I mute the audio media
|
37
|
-
Then the audio should be muted
|
38
|
-
When I unmute the audio media
|
39
|
-
Then the audio should be unmuted
|
40
|
-
|
41
|
-
|
42
|
-
Scenario: Verify video player volume control
|
43
|
-
When I set the volume of the video to .5
|
44
|
-
Then the video should have a volume of .5
|
45
|
-
|
46
|
-
|
47
|
-
Scenario: Verify audio player volume control
|
48
|
-
When I set the volume of the audio to .5
|
49
|
-
Then the audio should have a volume of .5
|
50
|
-
|
51
|
-
|
52
|
-
Scenario: Verify video playback speed settings
|
53
|
-
When I play the video with a playback speed of 2x
|
54
|
-
Then the video should play at 2x speed
|
55
|
-
When I play the video with a playback speed of 0.5x
|
56
|
-
Then the video should play at 0.5x speed
|
57
|
-
When I play the video with a playback speed of 1x
|
58
|
-
Then the video should play at 1x speed
|
59
|
-
|
60
|
-
|
61
|
-
Scenario: Verify audio playback speed settings
|
62
|
-
When I play the audio with a playback speed of 2x
|
63
|
-
Then the audio should play at 2x speed
|
64
|
-
When I play the audio with a playback speed of 0.5x
|
65
|
-
Then the audio should play at 0.5x speed
|
66
|
-
When I play the audio with a playback speed of 1x
|
67
|
-
Then the audio should play at 1x speed
|
@@ -1,124 +0,0 @@
|
|
1
|
-
include TestCentricity
|
2
|
-
|
3
|
-
|
4
|
-
Given(/^I am (?:on|viewing) the (.*) page$/) do |page_name|
|
5
|
-
# find and load the specified target page
|
6
|
-
target_page = PageManager.find_page(page_name)
|
7
|
-
target_page.load_page
|
8
|
-
end
|
9
|
-
|
10
|
-
|
11
|
-
Then(/^I expect the (.*) page to be correctly displayed$/) do |page_name|
|
12
|
-
# find and verify that the specified target page is loaded
|
13
|
-
target_page = PageManager.find_page(page_name)
|
14
|
-
target_page.verify_page_exists
|
15
|
-
# verify that target page is correctly displayed
|
16
|
-
target_page.verify_page_ui
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
When(/^I populate the form fields$/) do
|
21
|
-
PageManager.current_page.populate_form
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
Then(/^I expect the form fields to be correctly populated$/) do
|
26
|
-
PageManager.current_page.verify_form_data
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
When(/^I (.*) my changes$/) do | action|
|
31
|
-
PageManager.current_page.perform_action(action.downcase.to_sym)
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
Then(/^I expect the tab order to be correct$/) do
|
36
|
-
PageManager.current_page.verify_tab_order
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
When(/^I click the (.*) navigation (?:tab|link)$/) do |page_name|
|
41
|
-
# find and navigate to the specified target page
|
42
|
-
target_page = PageManager.find_page(page_name)
|
43
|
-
target_page.navigate_to
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
Then(/^I should (?:see|be on) the (.*) page$/) do |page_name|
|
48
|
-
# find and verify that the specified target page is loaded
|
49
|
-
target_page = PageManager.find_page(page_name)
|
50
|
-
target_page.verify_page_exists
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
Then(/^I expect the (.*) page to be correctly displayed in a new browser tab$/) do |page_name|
|
55
|
-
Browsers.switch_to_new_browser_instance
|
56
|
-
Environ.set_external_page(true)
|
57
|
-
TestCentricity::WebDriverConnect.initialize_browser_size if Environ.headless
|
58
|
-
# find and verify that the specified target page is loaded
|
59
|
-
target_page = PageManager.find_page(page_name)
|
60
|
-
target_page.verify_page_exists
|
61
|
-
# verify that target page is correctly displayed
|
62
|
-
target_page.verify_page_ui
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
When(/^I (?:access|switch to) the new browser tab$/) do
|
67
|
-
Browsers.switch_to_new_browser_instance
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
When(/^I close the current browser window$/) do
|
72
|
-
Browsers.close_current_browser_window
|
73
|
-
# intercept and accept any JavaScript system or browser modals that may appear
|
74
|
-
begin
|
75
|
-
page.driver.browser.switch_to.alert.accept
|
76
|
-
switch_to_new_browser_instance
|
77
|
-
rescue
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
|
82
|
-
When(/^I close the previous browser window$/) do
|
83
|
-
Browsers.close_old_browser_instance
|
84
|
-
end
|
85
|
-
|
86
|
-
|
87
|
-
When(/^I refresh the current page$/) do
|
88
|
-
Browsers.refresh_browser unless Environ.driver == :appium
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
|
-
When(/^I navigate back$/) do
|
93
|
-
Browsers.navigate_back
|
94
|
-
end
|
95
|
-
|
96
|
-
|
97
|
-
When(/^I navigate forward$/) do
|
98
|
-
Browsers.navigate_forward
|
99
|
-
end
|
100
|
-
|
101
|
-
|
102
|
-
When(/^I delete all cookies$/) do
|
103
|
-
Browsers.delete_all_cookies
|
104
|
-
end
|
105
|
-
|
106
|
-
|
107
|
-
When(/^I set device orientation to (.*)$/) do |orientation|
|
108
|
-
Browsers.set_device_orientation(orientation.downcase.to_sym)
|
109
|
-
end
|
110
|
-
|
111
|
-
|
112
|
-
When(/^I choose custom select options by typing$/) do
|
113
|
-
custom_controls_page.set_select_options
|
114
|
-
end
|
115
|
-
|
116
|
-
|
117
|
-
When(/^I choose selectlist options by (.*)$/) do |method|
|
118
|
-
PageManager.current_page.choose_options_by(method)
|
119
|
-
end
|
120
|
-
|
121
|
-
|
122
|
-
Then(/^I expect the selected option to be displayed$/) do
|
123
|
-
PageManager.current_page.verify_chosen_options
|
124
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
When(/^I (.*) the (.*) media$/) do |action, media_type|
|
4
|
-
media_test_page.perform_action(media_type, action)
|
5
|
-
end
|
6
|
-
|
7
|
-
|
8
|
-
Then(/^the (.*) should be (.*)$/) do |media_type, state|
|
9
|
-
media_test_page.verify_media_state(media_type, state)
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
When(/^I play the (.*) with a playback speed of (.*)x$/) do |media_type, rate|
|
14
|
-
media_test_page.set_playback_rate(media_type, rate)
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
Then(/^the (.*) should play at (.*)x speed$/) do |media_type, rate|
|
19
|
-
media_test_page.verify_playback_rate(media_type, rate)
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
When(/^I set the volume of the (.*) to (.*)$/) do |media_type, volume|
|
24
|
-
media_test_page.set_volume(media_type, volume)
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
Then(/^the (.*) should have a volume of (.*)$/) do |media_type, volume|
|
29
|
-
media_test_page.verify_volume(media_type, volume)
|
30
|
-
end
|