testcentricity_web 4.1.4 → 4.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +18 -0
  3. data/.simplecov +5 -0
  4. data/CHANGELOG.md +43 -1
  5. data/Gemfile.lock +60 -2
  6. data/README.md +166 -21
  7. data/Rakefile +60 -1
  8. data/config/cucumber.yml +163 -0
  9. data/config/test_data/data.json +12 -0
  10. data/config/test_data/data.xls +0 -0
  11. data/config/test_data/data.yml +12 -0
  12. data/docker-compose-v3.yml +48 -0
  13. data/features/basic_test_page_css.feature +35 -0
  14. data/features/basic_test_page_xpath.feature +27 -0
  15. data/features/media_players.feature +87 -0
  16. data/features/step_definitions/generic_steps.rb.rb +44 -0
  17. data/features/step_definitions/media_steps.rb +30 -0
  18. data/features/support/env.rb +50 -0
  19. data/features/support/hooks.rb +245 -0
  20. data/features/support/pages/base_test_page.rb +11 -0
  21. data/features/support/pages/basic_css_test_page.rb +52 -0
  22. data/features/support/pages/basic_test_page.rb +297 -0
  23. data/features/support/pages/basic_xpath_test_page.rb +53 -0
  24. data/features/support/pages/custom_controls_page.rb +16 -0
  25. data/features/support/pages/indexed_sections_page.rb +16 -0
  26. data/features/support/pages/media_test_page.rb +195 -0
  27. data/features/support/sections/header_nav.rb +28 -0
  28. data/features/support/world_data.rb +12 -0
  29. data/features/support/world_pages.rb +18 -0
  30. data/lib/testcentricity_web/data_objects/environment.rb +16 -0
  31. data/lib/testcentricity_web/version.rb +1 -1
  32. data/lib/testcentricity_web/web_core/page_object.rb +8 -8
  33. data/lib/testcentricity_web/web_core/page_objects_helper.rb +41 -8
  34. data/lib/testcentricity_web/web_core/page_section.rb +1 -16
  35. data/lib/testcentricity_web/web_core/webdriver_helper.rb +77 -120
  36. data/lib/testcentricity_web/web_elements/checkbox.rb +3 -4
  37. data/lib/testcentricity_web/web_elements/media.rb +50 -4
  38. data/lib/testcentricity_web/web_elements/radio.rb +5 -1
  39. data/lib/testcentricity_web/web_elements/select_list.rb +18 -7
  40. data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +13 -0
  41. data/reports/.keep +1 -0
  42. data/test_site/basic_test_page.html +290 -0
  43. data/test_site/custom_controls_page.html +58 -0
  44. data/test_site/images/Granny.jpg +0 -0
  45. data/test_site/images/Wilder.jpg +0 -0
  46. data/test_site/images/You_Betcha.jpg +0 -0
  47. data/test_site/indexed_sections_page.html +58 -0
  48. data/test_site/media/MIB2-subtitles-pt-BR.vtt +49 -0
  49. data/test_site/media/MIB2.mp4 +0 -0
  50. data/test_site/media/MP4_small.mp4 +0 -0
  51. data/test_site/media/MPS_sample.mp3 +0 -0
  52. data/test_site/media_page.html +86 -0
  53. data/testcentricity_web.gemspec +5 -0
  54. metadata +125 -4
  55. data/test_site/test_page.html +0 -11
@@ -0,0 +1,163 @@
1
+ <% desktop = "--require features BROWSER_TILE=true BROWSER_SIZE=1300,1000 --publish-quiet" %>
2
+ <% tablet = "--tags @desktop --require features BROWSER_TILE=true --publish-quiet" %>
3
+ <% mobile = "--tags @mobile --require features BROWSER_TILE=true --publish-quiet" %>
4
+ <% reports = "--require features --format pretty --format html --out reports/test_results.html --format junit --out reports --format json --out reports/test_results.json" %>
5
+
6
+
7
+ #==============
8
+ # generic test context profiles
9
+ #==============
10
+
11
+ failing: --tags '@failing and not @wip'
12
+ wip: --tags '@wip and not @failing'
13
+ dev: --tags '@dev and (not @wip and not @failing)'
14
+
15
+
16
+ #==============
17
+ # test reporting profiles
18
+ #==============
19
+
20
+ report: <%= reports %> REPORTING=true
21
+ 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
22
+
23
+
24
+ #==============
25
+ # profiles for locally hosted desktop web browsers
26
+ #==============
27
+
28
+ local: TEST_ENVIRONMENT=LOCAL
29
+ chrome: WEB_BROWSER=chrome DATA_SOURCE=yaml <%= desktop %>
30
+ edge: WEB_BROWSER=edge DATA_SOURCE=json <%= desktop %>
31
+ safari: WEB_BROWSER=safari DATA_SOURCE=Excel <%= desktop %>
32
+ firefox: WEB_BROWSER=firefox <%= desktop %>
33
+
34
+ chrome_local: --profile local --profile chrome
35
+ edge_local: --profile local --profile edge
36
+ safari_local: --profile local --profile safari
37
+ firefox_local: --profile local --profile firefox
38
+
39
+ firefox_headless: --profile local WEB_BROWSER=firefox_headless <%= desktop %>
40
+ chrome_headless: --profile local WEB_BROWSER=chrome_headless <%= desktop %>
41
+ edge_headless: --profile local WEB_BROWSER=edge_headless <%= desktop %>
42
+
43
+
44
+ #==============
45
+ # profile for Selenium Grid and Dockerized Selenium Grid hosted desktop web browsers
46
+ #==============
47
+ grid: SELENIUM=remote TEST_ENVIRONMENT=REMOTE REMOTE_ENDPOINT="http://localhost:4444/wd/hub"
48
+ chrome_grid: --profile grid --profile chrome
49
+ edge_grid: --profile grid --profile edge
50
+ firefox_grid: --profile grid --profile firefox
51
+
52
+
53
+ #==============
54
+ # profiles for mobile device screen orientation
55
+ #==============
56
+
57
+ landscape: ORIENTATION=landscape
58
+ portrait: ORIENTATION=portrait
59
+
60
+
61
+ #==============
62
+ # profile to start Appium Server prior to running mobile browser tests on iOS or Android simulators or physical devices
63
+ #==============
64
+ run_appium: APPIUM_SERVER=run
65
+
66
+
67
+ #==============
68
+ # profiles for mobile Safari web browsers hosted within XCode iOS simulators
69
+ # NOTE: Requires installation of XCode, iOS version specific target simulators, Appium, and the appium_capybara gem
70
+ #==============
71
+
72
+ appium_ios: WEB_BROWSER=appium AUTOMATION_ENGINE=XCUITest APP_PLATFORM_NAME="ios" APP_BROWSER="Safari" NEW_COMMAND_TIMEOUT=30 SHOW_SIM_KEYBOARD=false <%= desktop %>
73
+ app_ios_15: --profile appium_ios APP_VERSION="15.4"
74
+
75
+ ipad_pro_12_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Pro (12.9-inch) (5th generation)"
76
+ ipad_air_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Air (5th generation)" <%= desktop %>
77
+
78
+ ios_remote: --profile ipad_pro_12_15_sim --profile run_appium ORIENTATION=portrait TEST_ENVIRONMENT=REMOTE
79
+
80
+
81
+ #==============
82
+ # profiles for Android mobile web browsers hosted within Android Studio Android Virtual Device emulators
83
+ # NOTE: Requires installation of Android Studio, Android version specific virtual device simulators, Appium, and the appium_capybara gem
84
+ #==============
85
+
86
+ appium_android: WEB_BROWSER=appium APP_PLATFORM_NAME="Android" <%= desktop %>
87
+ app_android_12: --profile appium_android APP_BROWSER="Chrome" APP_VERSION="12.0"
88
+ pixel_c_api31_sim: --profile app_android_12 DEVICE_TYPE=tablet APP_DEVICE="Pixel_C_API_31"
89
+
90
+ android_remote: --profile pixel_c_api31_sim --profile run_appium ORIENTATION=portrait TEST_ENVIRONMENT=REMOTE
91
+
92
+
93
+ #==============
94
+ # profiles for remotely hosted web browsers on the BrowserStack service
95
+ #==============
96
+
97
+ browserstack: WEB_BROWSER=browserstack BS_USERNAME="<INSERT USER NAME HERE>" BS_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - BrowserStack"
98
+ bs_desktop: --profile browserstack <%= desktop %> RESOLUTION="1920x1080"
99
+ bs_mobile: --profile browserstack <%= mobile %>
100
+
101
+ # BrowserStack macOS desktop browser profiles
102
+ bs_macos_monterey: --profile bs_desktop BS_OS="OS X" BS_OS_VERSION="Monterey"
103
+ bs_chrome_monterey: --profile bs_macos_monterey BS_BROWSER="Chrome" BS_VERSION="latest"
104
+ bs_edge_monterey: --profile bs_macos_monterey BS_BROWSER="Edge" BS_VERSION="latest"
105
+ bs_safari_monterey: --profile bs_macos_monterey BS_BROWSER="Safari" BS_VERSION="latest"
106
+
107
+ # BrowserStack iOS mobile browser profiles
108
+ bs_ipad: --profile bs_mobile BS_OS=ios BS_BROWSER=Safari DEVICE_TYPE=tablet BS_REAL_MOBILE="true"
109
+ bs_ipad_pro_12: --profile bs_ipad BS_DEVICE="iPad Pro 12.9 2018" BS_OS_VERSION="15"
110
+
111
+ # BrowserStack Android mobile browser profiles
112
+ bs_android: --profile bs_mobile BS_OS=android BS_BROWSER=Chrome DEVICE_TYPE=tablet BS_REAL_MOBILE="true"
113
+ bs_android_tablet: --profile bs_android BS_DEVICE="Samsung Galaxy Tab S7" BS_OS_VERSION="10.0"
114
+
115
+
116
+ #==============
117
+ # profiles for remotely hosted web browsers on the LambdaTest service
118
+ #==============
119
+
120
+ lambdatest: WEB_BROWSER=lambdatest LT_USERNAME="<INSERT USER NAME HERE>" LT_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - LambdaTest"
121
+ lt_desktop: --profile lambdatest <%= desktop %> RESOLUTION="2560x1440"
122
+
123
+ # LambdaTest macOS desktop browser profiles
124
+ lt_macos_monterey: --profile lt_desktop LT_OS="MacOS Monterey"
125
+ lt_chrome_monterey: --profile lt_macos_monterey LT_BROWSER="Chrome" LT_VERSION="98.0"
126
+ lt_edge_monterey: --profile lt_macos_monterey LT_BROWSER="MicrosoftEdge" LT_VERSION="97.0"
127
+
128
+
129
+ #==============
130
+ # profiles for remotely hosted web browsers on the TestingBot service
131
+ #==============
132
+
133
+ testingbot: WEB_BROWSER=testingbot TB_USERNAME="<INSERT USER NAME HERE>" TB_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - TestingBot"
134
+ tb_desktop: --profile testingbot <%= desktop %> RESOLUTION="1920x1200"
135
+
136
+ # TestingBot macOS desktop browser profiles
137
+ tb_macos_monterey: --profile tb_desktop TB_OS="MONTEREY"
138
+ tb_chrome_monterey: --profile tb_macos_monterey TB_BROWSER="chrome" TB_VERSION="latest"
139
+ tb_edge_monterey: --profile tb_macos_monterey TB_BROWSER="microsoftedge" TB_VERSION="latest"
140
+
141
+
142
+ #==============
143
+ # profiles for remotely hosted web browsers on the SauceLabs service
144
+ #==============
145
+
146
+ 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"
147
+ sl_desktop: --profile saucelabs <%= desktop %>
148
+ sl_mobile: --profile saucelabs <%= mobile %>
149
+
150
+ # SauceLabs macOS desktop browser profiles
151
+ sl_macos_monterey: --profile sl_desktop SL_OS="macOS 12" RESOLUTION="1920x1440"
152
+ sl_chrome_monterey: --profile sl_macos_monterey SL_BROWSER="chrome" SL_VERSION="latest"
153
+ sl_edge_monterey: --profile sl_macos_monterey SL_BROWSER="MicrosoftEdge" SL_VERSION="latest"
154
+ sl_firefox_monterey: --profile sl_macos_monterey SL_BROWSER="Firefox" SL_VERSION="latest"
155
+
156
+ # SauceLabs Windows desktop browser profiles
157
+ sl_windows: --profile sl_desktop RESOLUTION="1920x1200"
158
+ sl_edge_win11: --profile sl_windows SL_OS="Windows 11" SL_BROWSER="MicrosoftEdge" SL_VERSION="latest"
159
+ sl_ie_win10: --profile sl_windows SL_OS="Windows 10" SL_BROWSER="internet explorer" SL_VERSION="11"
160
+
161
+ # SauceLabs iOS mobile browser profiles
162
+ sl_ipad: --profile sl_mobile DEVICE_TYPE=tablet SL_PLATFORM=iOS SL_BROWSER=Safari
163
+ sl_ipad_pro_12: --profile sl_ipad SL_DEVICE="iPad Pro (12.9 inch) (5th generation) Simulator" SL_VERSION="15.0"
@@ -0,0 +1,12 @@
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
+ }
Binary file
@@ -0,0 +1,12 @@
1
+ # -------------------------------------------------------------
2
+ # This is the generic test data required to run the UAL Flight Booking test suites against the QA and PROD test environments.
3
+ # -------------------------------------------------------------
4
+
5
+ # This section is populated with Environment data required to execute automated test suites on all supported environments
6
+ Environments:
7
+ LOCAL:
8
+ PROTOCOL: "file"
9
+ BASE_URL: "/../../test_site"
10
+ REMOTE:
11
+ PROTOCOL: "http"
12
+ BASE_URL: "192.168.1.129/test_site"
@@ -0,0 +1,48 @@
1
+ # To execute this docker-compose yml file use `docker-compose -f docker-compose-v3.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-v3.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"
@@ -0,0 +1,35 @@
1
+ Feature: Basic HTML Test Page using CSS locators
2
+ In order to xxx
3
+ As a xxxx
4
+ I expect to xxxx
5
+
6
+
7
+ Background:
8
+ Given I am on the Basic CSS Test page
9
+
10
+
11
+ Scenario: xxxxx
12
+ Then I expect the Basic CSS Test page to be correctly displayed
13
+
14
+
15
+ @!mobile
16
+ Scenario: xxxxx
17
+ Then I expect the tab order to be correct
18
+
19
+
20
+ Scenario: xxxxx
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 Test page to be correctly displayed
25
+
26
+
27
+ Scenario Outline: Verify functionality of navigation tabs
28
+ When I click the <target_page> navigation tab
29
+ Then I expect the <target_page> page to be correctly displayed
30
+
31
+ Examples:
32
+ |target_page |
33
+ |Media Test |
34
+ |Indexed Sections |
35
+ |Custom Controls |
@@ -0,0 +1,27 @@
1
+ @!grid
2
+
3
+
4
+ Feature: Basic HTML Test Page using Xpath locators
5
+ In order to xxx
6
+ As a xxxx
7
+ I expect to xxxx
8
+
9
+
10
+ Background:
11
+ Given I am on the Basic Xpath Test page
12
+
13
+
14
+ Scenario: xxxxx
15
+ Then I expect the Basic Xpath Test page to be correctly displayed
16
+
17
+
18
+ @!mobile
19
+ Scenario: xxxxx
20
+ Then I expect the tab order to be correct
21
+
22
+
23
+ Scenario: xxxxx
24
+ When I populate the form fields
25
+ Then I expect the form fields to be correctly populated
26
+ When I cancel my changes
27
+ Then I expect the Basic Xpath Test page to be correctly displayed
@@ -0,0 +1,87 @@
1
+
2
+
3
+
4
+ Feature: Basic HTML Test Page using CSS locators
5
+ In order to xxx
6
+ As a xxxx
7
+ I expect to xxxx
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.25x
56
+ Then the video should play at 0.25x speed
57
+ When I play the video with a playback speed of 1.75x
58
+ Then the video should play at 1.75x speed
59
+ When I play the video with a playback speed of 0.5x
60
+ Then the video should play at 0.5x speed
61
+ When I play the video with a playback speed of 1.5x
62
+ Then the video should play at 1.5x speed
63
+ When I play the video with a playback speed of 0.75x
64
+ Then the video should play at 0.75x speed
65
+ When I play the video with a playback speed of 1.25x
66
+ Then the video should play at 1.25x speed
67
+ When I play the video with a playback speed of 1x
68
+ Then the video should play at 1x speed
69
+
70
+
71
+ Scenario: Verify audio playback speed settings
72
+ When I play the audio with a playback speed of 2x
73
+ Then the audio should play at 2x speed
74
+ When I play the audio with a playback speed of 0.25x
75
+ Then the audio should play at 0.25x speed
76
+ When I play the audio with a playback speed of 1.75x
77
+ Then the audio should play at 1.75x speed
78
+ When I play the audio with a playback speed of 0.5x
79
+ Then the audio should play at 0.5x speed
80
+ When I play the audio with a playback speed of 1.5x
81
+ Then the audio should play at 1.5x speed
82
+ When I play the audio with a playback speed of 0.75x
83
+ Then the audio should play at 0.75x speed
84
+ When I play the audio with a playback speed of 1.25x
85
+ Then the audio should play at 1.25x speed
86
+ When I play the audio with a playback speed of 1x
87
+ Then the audio should play at 1x speed
@@ -0,0 +1,44 @@
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
@@ -0,0 +1,30 @@
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
@@ -0,0 +1,50 @@
1
+ require 'capybara/cucumber'
2
+ require 'parallel_tests'
3
+ require 'appium_capybara'
4
+ require 'require_all'
5
+ require 'simplecov'
6
+ require 'testcentricity_web'
7
+
8
+ include TestCentricity
9
+
10
+ SimpleCov.command_name("features-#{ENV['WEB_BROWSER']}-#{ENV['SELENIUM']}" + (ENV['TEST_ENV_NUMBER'] || ''))
11
+
12
+ # require_relative 'world_data'
13
+ require_relative 'world_pages'
14
+
15
+ # require_rel 'data'
16
+ require_rel 'sections'
17
+ require_rel 'pages'
18
+
19
+ $LOAD_PATH << './lib'
20
+
21
+ # set Capybara's default max wait time to 20 seconds
22
+ Capybara.default_max_wait_time = 20
23
+
24
+ # set the default locale and auto load all translations from config/locales/*.rb,yml.
25
+ ENV['LOCALE'] = 'en-US' unless ENV['LOCALE']
26
+ I18n.load_path += Dir['config/locales/*.{rb,yml}']
27
+ I18n.default_locale = ENV['LOCALE']
28
+ I18n.locale = ENV['LOCALE']
29
+ Faker::Config.locale = ENV['LOCALE']
30
+
31
+ # instantiate all data objects and target test environment
32
+ include WorldData
33
+ ENV['DATA_SOURCE'] = 'yaml' unless ENV['DATA_SOURCE']
34
+ environs.find_environ(ENV['TEST_ENVIRONMENT'], ENV['DATA_SOURCE'].downcase.to_sym)
35
+ # WorldData.instantiate_data_objects
36
+
37
+ # instantiate all page objects
38
+ include WorldPages
39
+ WorldPages.instantiate_page_objects
40
+
41
+ # establish connection to WebDriver and target web browser
42
+ Webdrivers.cache_time = 86_400
43
+
44
+
45
+ url = if ENV['TEST_ENVIRONMENT'].downcase == 'local'
46
+ "file://#{File.dirname(__FILE__)}/../../test_site"
47
+ else
48
+ Environ.current.app_host
49
+ end
50
+ WebDriverConnect.initialize_web_driver(app_host: url)