testcentricity_web 4.1.5 → 4.1.8
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/.gitignore +18 -0
- data/.simplecov +9 -0
- data/CHANGELOG.md +44 -0
- data/Gemfile.lock +60 -2
- data/README.md +17 -7
- data/Rakefile +86 -1
- data/config/cucumber.yml +170 -0
- data/config/test_data/LOCAL_data.json +15 -0
- data/config/test_data/LOCAL_data.xls +0 -0
- data/config/test_data/LOCAL_data.yml +11 -0
- data/config/test_data/data.json +25 -0
- data/config/test_data/data.xls +0 -0
- data/config/test_data/data.yml +20 -0
- data/docker-compose-v3.yml +48 -0
- data/features/basic_form_page_css.feature +39 -0
- data/features/basic_form_page_xpath.feature +26 -0
- data/features/media_players.feature +84 -0
- data/features/step_definitions/generic_steps.rb.rb +109 -0
- data/features/step_definitions/media_steps.rb +30 -0
- data/features/support/data/form_data.rb +43 -0
- data/features/support/env.rb +50 -0
- data/features/support/hooks.rb +265 -0
- data/features/support/pages/base_test_page.rb +22 -0
- data/features/support/pages/basic_css_form_page.rb +52 -0
- data/features/support/pages/basic_form_page.rb +393 -0
- data/features/support/pages/basic_xpath_form_page.rb +53 -0
- data/features/support/pages/custom_controls_page.rb +13 -0
- data/features/support/pages/indexed_sections_page.rb +13 -0
- data/features/support/pages/media_test_page.rb +208 -0
- data/features/support/sections/header_nav.rb +39 -0
- data/features/support/world_data.rb +12 -0
- data/features/support/world_pages.rb +18 -0
- data/lib/testcentricity_web/appium_server.rb +5 -0
- data/lib/testcentricity_web/data_objects/data_objects_helper.rb +7 -0
- data/lib/testcentricity_web/data_objects/environment.rb +18 -0
- data/lib/testcentricity_web/data_objects/excel_helper.rb +60 -59
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/drag_drop_helper.rb +4 -0
- data/lib/testcentricity_web/web_core/page_object.rb +8 -8
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +43 -8
- data/lib/testcentricity_web/web_core/page_section.rb +1 -16
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +16 -0
- data/lib/testcentricity_web/web_elements/checkbox.rb +3 -4
- data/lib/testcentricity_web/web_elements/file_field.rb +9 -5
- data/lib/testcentricity_web/web_elements/image.rb +2 -1
- data/lib/testcentricity_web/web_elements/media.rb +45 -11
- data/lib/testcentricity_web/web_elements/radio.rb +5 -1
- data/lib/testcentricity_web/web_elements/select_list.rb +11 -3
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +33 -7
- data/lib/testcentricity_web/web_elements/video.rb +2 -2
- data/reports/.keep +1 -0
- data/test_site/basic_test_page.html +290 -0
- data/test_site/custom_controls_page.html +58 -0
- data/test_site/images/Granny.jpg +0 -0
- data/test_site/images/Wilder.jpg +0 -0
- data/test_site/images/You_Betcha.jpg +0 -0
- data/test_site/indexed_sections_page.html +58 -0
- data/test_site/media/MIB2-subtitles-pt-BR.vtt +49 -0
- 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/count_and_bars.mp4 +0 -0
- data/test_site/media_page.html +86 -0
- data/testcentricity_web.gemspec +5 -0
- metadata +131 -4
- data/test_site/test_page.html +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec1cf64d0d0e52b5d49ce5980dc049add4befecbc830650c4c908db5b2e07ac2
|
4
|
+
data.tar.gz: 841d00666f64914cf72d0f279e060c5ba31c1eb8a056020015a1430daf9c38a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e4e6f516c68a18689ccecfa7ee52ca97db9ffb8641c63d21641061e70ca4ac0f1b53d5191b02c6335ac1403e6bdf8afe0b0133d1204f2b87d4496d00a4c4fc1
|
7
|
+
data.tar.gz: c38230893848b6145e79e131f9e6a99867fa0a1d590d2b272a00709ee107b9a8044180c037cd1182cd6aa13d58c208e3ce154c2de08b66161a7c06ce02e0a8bc
|
data/.gitignore
CHANGED
@@ -18,3 +18,21 @@ Thumbs.db
|
|
18
18
|
|
19
19
|
# rspec failure tracking
|
20
20
|
.rspec_status
|
21
|
+
|
22
|
+
# Ignore test-reports
|
23
|
+
reports/*.html
|
24
|
+
reports/*.xml
|
25
|
+
reports/*.json
|
26
|
+
reports/screenshots/
|
27
|
+
test-reports
|
28
|
+
capybara-*.html
|
29
|
+
debug.log
|
30
|
+
|
31
|
+
BrowserStackLocal
|
32
|
+
cbttunnel.jar
|
33
|
+
|
34
|
+
/.yardoc/
|
35
|
+
/local.log
|
36
|
+
.run/*.xml
|
37
|
+
|
38
|
+
echo coverage >> .gitignore
|
data/.simplecov
ADDED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,50 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
4
|
|
5
|
+
## [4.1.8] - 31-MAR-2022
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
* `Image.loaded?` now correctly returns a `Boolean` value instead of a `String`.
|
9
|
+
* `Video.video_height` and `Video.video_width` now correctly returns an `Integer` value instead of a `String`.
|
10
|
+
* `UIElement.scroll_to` now works for all supported browsers.
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
* `UIElement.crossorigin` is no longer limited to `Audio` and `Video` objects.
|
14
|
+
|
15
|
+
|
16
|
+
## [4.1.7] - 28-MAR-2022
|
17
|
+
|
18
|
+
### Fixed
|
19
|
+
* `CheckBox.set_checkbox_state` and `Radio.set_selected_state` work on iOS simulators again.
|
20
|
+
|
21
|
+
### Changed
|
22
|
+
* `Audio.playback_rate` and `Video.playback_rate` now return value as a `Float` instead of a `String`.
|
23
|
+
* `Audio.default_playback_rate` and `Video.default_playback_rate` now return value as a `Float` instead of a `String`.
|
24
|
+
* `Audio.current_time` and `Video.current_time` now return value as a `Float` rounded to two decimal places.
|
25
|
+
* `Audio.duration` and `Video.duration` now return value as a `Float` rounded to two decimal places.
|
26
|
+
|
27
|
+
### Added
|
28
|
+
* `Audio.mute` and `Video.mute` methods added.
|
29
|
+
* `Audio.unmute` and `Video.unmute` methods added.
|
30
|
+
* `Audio.playback_rate` and `Video.playback_rate` now accept a `Float` value as an input for setting the playback rate
|
31
|
+
of media.
|
32
|
+
* `Audio.volume` and `Video.volume` now accept a `Float` value between 0 and 1 as an input for setting the volume of media.
|
33
|
+
|
34
|
+
|
35
|
+
## [4.1.6] - 21-MAR-2022
|
36
|
+
|
37
|
+
### Fixed
|
38
|
+
* `PageObject.verify_page_exists` now works with `page_locator` traits expressed in Xpath format, and no longer fails with a
|
39
|
+
`invalid selector: An invalid or illegal selector was specified - Selenium::WebDriver::Error::InvalidSelectorError` error.
|
40
|
+
|
41
|
+
### Added
|
42
|
+
* `UIElement.required?` method added.
|
43
|
+
* `PageObject.populate_data_fields` and `PageSection.populate_data_fields` methods now work with the following:
|
44
|
+
* `input(type='color')` color picker controls if they are specified as a `textfield` type element.
|
45
|
+
* `input(type='range')` slider controls if they are specified as a `range` type element.
|
46
|
+
* `input(type='file')` file upload controls if they are specified as a `filefield` type element.
|
47
|
+
|
48
|
+
|
5
49
|
## [4.1.5] - 15-MAR-2022
|
6
50
|
|
7
51
|
### Fixed
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
testcentricity_web (4.1.
|
4
|
+
testcentricity_web (4.1.8)
|
5
5
|
appium_lib
|
6
6
|
browserstack-local
|
7
7
|
capybara (>= 3.1, < 4)
|
@@ -21,6 +21,9 @@ GEM
|
|
21
21
|
specs:
|
22
22
|
addressable (2.8.0)
|
23
23
|
public_suffix (>= 2.0.2, < 5.0)
|
24
|
+
appium_capybara (2.0.0)
|
25
|
+
appium_lib (~> 12.0.0)
|
26
|
+
capybara (~> 3.36)
|
24
27
|
appium_lib (12.0.0)
|
25
28
|
appium_lib_core (~> 5.0.0)
|
26
29
|
nokogiri (~> 1.8, >= 1.8.1)
|
@@ -33,6 +36,7 @@ GEM
|
|
33
36
|
ice_nine (~> 0.11.0)
|
34
37
|
thread_safe (~> 0.3, >= 0.3.1)
|
35
38
|
browserstack-local (1.3.0)
|
39
|
+
builder (3.2.4)
|
36
40
|
capybara (3.36.0)
|
37
41
|
addressable
|
38
42
|
matrix
|
@@ -46,23 +50,63 @@ GEM
|
|
46
50
|
chronic (0.10.2)
|
47
51
|
coercible (1.0.0)
|
48
52
|
descendants_tracker (~> 0.0.1)
|
49
|
-
concurrent-ruby (1.1.
|
53
|
+
concurrent-ruby (1.1.10)
|
54
|
+
cucumber (7.1.0)
|
55
|
+
builder (~> 3.2, >= 3.2.4)
|
56
|
+
cucumber-core (~> 10.1, >= 10.1.0)
|
57
|
+
cucumber-create-meta (~> 6.0, >= 6.0.1)
|
58
|
+
cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
|
59
|
+
cucumber-gherkin (~> 22.0, >= 22.0.0)
|
60
|
+
cucumber-html-formatter (~> 17.0, >= 17.0.0)
|
61
|
+
cucumber-messages (~> 17.1, >= 17.1.1)
|
62
|
+
cucumber-wire (~> 6.2, >= 6.2.0)
|
63
|
+
diff-lcs (~> 1.4, >= 1.4.4)
|
64
|
+
mime-types (~> 3.3, >= 3.3.1)
|
65
|
+
multi_test (~> 0.1, >= 0.1.2)
|
66
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
67
|
+
cucumber-core (10.1.1)
|
68
|
+
cucumber-gherkin (~> 22.0, >= 22.0.0)
|
69
|
+
cucumber-messages (~> 17.1, >= 17.1.1)
|
70
|
+
cucumber-tag-expressions (~> 4.1, >= 4.1.0)
|
71
|
+
cucumber-create-meta (6.0.4)
|
72
|
+
cucumber-messages (~> 17.1, >= 17.1.1)
|
73
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
74
|
+
cucumber-cucumber-expressions (14.0.0)
|
75
|
+
cucumber-gherkin (22.0.0)
|
76
|
+
cucumber-messages (~> 17.1, >= 17.1.1)
|
77
|
+
cucumber-html-formatter (17.0.0)
|
78
|
+
cucumber-messages (~> 17.1, >= 17.1.0)
|
79
|
+
cucumber-messages (17.1.1)
|
80
|
+
cucumber-tag-expressions (4.1.0)
|
81
|
+
cucumber-wire (6.2.1)
|
82
|
+
cucumber-core (~> 10.1, >= 10.1.0)
|
83
|
+
cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
|
50
84
|
descendants_tracker (0.0.4)
|
51
85
|
thread_safe (~> 0.3, >= 0.3.1)
|
86
|
+
diff-lcs (1.5.0)
|
87
|
+
docile (1.4.0)
|
52
88
|
eventmachine (1.2.7)
|
53
89
|
faker (2.20.0)
|
54
90
|
i18n (>= 1.8.11, < 2)
|
55
91
|
faye-websocket (0.11.1)
|
56
92
|
eventmachine (>= 0.12.0)
|
57
93
|
websocket-driver (>= 0.5.1)
|
94
|
+
ffi (1.15.5)
|
58
95
|
i18n (1.10.0)
|
59
96
|
concurrent-ruby (~> 1.0)
|
60
97
|
ice_nine (0.11.2)
|
61
98
|
matrix (0.4.2)
|
99
|
+
mime-types (3.4.1)
|
100
|
+
mime-types-data (~> 3.2015)
|
101
|
+
mime-types-data (3.2022.0105)
|
62
102
|
mini_mime (1.1.2)
|
103
|
+
multi_test (0.1.2)
|
63
104
|
nokogiri (1.13.3-x86_64-darwin)
|
64
105
|
racc (~> 1.4)
|
65
106
|
os (1.1.4)
|
107
|
+
parallel (1.21.0)
|
108
|
+
parallel_tests (3.7.3)
|
109
|
+
parallel
|
66
110
|
power_assert (2.0.1)
|
67
111
|
public_suffix (4.0.6)
|
68
112
|
racc (1.6.0)
|
@@ -72,6 +116,7 @@ GEM
|
|
72
116
|
rake (13.0.6)
|
73
117
|
redcarpet (3.5.1)
|
74
118
|
regexp_parser (2.2.1)
|
119
|
+
require_all (1.5.0)
|
75
120
|
rexml (3.2.5)
|
76
121
|
ruby-ole (1.2.12.2)
|
77
122
|
rubyzip (2.3.2)
|
@@ -79,8 +124,16 @@ GEM
|
|
79
124
|
childprocess (>= 0.5, < 5.0)
|
80
125
|
rexml (~> 3.2, >= 3.2.5)
|
81
126
|
rubyzip (>= 1.2.2)
|
127
|
+
simplecov (0.21.2)
|
128
|
+
docile (~> 1.1)
|
129
|
+
simplecov-html (~> 0.11)
|
130
|
+
simplecov_json_formatter (~> 0.1)
|
131
|
+
simplecov-html (0.12.3)
|
132
|
+
simplecov_json_formatter (0.1.4)
|
82
133
|
spreadsheet (1.1.7)
|
83
134
|
ruby-ole (>= 1.0)
|
135
|
+
sys-uname (1.2.2)
|
136
|
+
ffi (~> 1.1)
|
84
137
|
test-unit (3.5.3)
|
85
138
|
power_assert
|
86
139
|
thread_safe (0.3.6)
|
@@ -103,9 +156,14 @@ PLATFORMS
|
|
103
156
|
x86_64-darwin-21
|
104
157
|
|
105
158
|
DEPENDENCIES
|
159
|
+
appium_capybara
|
106
160
|
bundler
|
161
|
+
cucumber
|
162
|
+
parallel_tests
|
107
163
|
rake
|
108
164
|
redcarpet
|
165
|
+
require_all
|
166
|
+
simplecov (~> 0.18)
|
109
167
|
testcentricity_web!
|
110
168
|
|
111
169
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -239,7 +239,7 @@ the UI to hide implementation details, as shown below:
|
|
239
239
|
remember_checkbox => { exists: true, enabled: true, checked: false },
|
240
240
|
forgot_password_link => { visible: true, caption: 'Forgot your password?' },
|
241
241
|
error_message_label => { visible: false }
|
242
|
-
|
242
|
+
}
|
243
243
|
verify_ui_states(ui)
|
244
244
|
end
|
245
245
|
end
|
@@ -282,7 +282,7 @@ the UI to hide implementation details, as shown below:
|
|
282
282
|
password_field => profile.password,
|
283
283
|
pword_confirm_field => profile.confirm_password,
|
284
284
|
email_opt_in_check => profile.email_opt_in
|
285
|
-
|
285
|
+
}
|
286
286
|
populate_data_fields(fields)
|
287
287
|
sign_up_button.click
|
288
288
|
end
|
@@ -503,7 +503,9 @@ With TestCentricity, all UI elements are based on the `UIElement` class, and inh
|
|
503
503
|
element.displayed?
|
504
504
|
element.obscured?
|
505
505
|
element.focused?
|
506
|
+
element.required?
|
506
507
|
element.content_editable?
|
508
|
+
element.crossorigin
|
507
509
|
element.get_value
|
508
510
|
element.count
|
509
511
|
element.style
|
@@ -569,9 +571,10 @@ interacted with.
|
|
569
571
|
|
570
572
|
The `PageObject.populate_data_fields` and `PageSection.populate_data_fields` methods support the entry of test data into a collection of
|
571
573
|
`UIElements`. The `populate_data_fields` method accepts a hash containing key/hash pairs of `UIElements` and their associated data to be
|
572
|
-
entered. Data values must be in the form of a `String` for `textfield` and `
|
573
|
-
must either be a `Boolean` or a `String` that evaluates to a `Boolean` value (Yes, No, 1, 0, true, false). For `
|
574
|
-
must be
|
574
|
+
entered. Data values must be in the form of a `String` for `textfield`, `selectlist`, and `filefield` controls. For `checkbox` and `radio`
|
575
|
+
controls, data must either be a `Boolean` or a `String` that evaluates to a `Boolean` value (Yes, No, 1, 0, true, false). For `range` controls,
|
576
|
+
data must be an `Integer`. For `input(type='color')` color picker controls, which are specified as a `textfield`, data must be in the form
|
577
|
+
of a hex color `String`. For `section` objects, data values must be a `String`, and the `section` object must have a `set` method defined.
|
575
578
|
|
576
579
|
The `populate_data_fields` method verifies that data attributes associated with each `UIElement` is not `nil` or `empty` before attempting to
|
577
580
|
enter data into the `UIElement`.
|
@@ -627,6 +630,7 @@ The `verify_ui_states` method supports the following property/state pairs:
|
|
627
630
|
:visible Boolean
|
628
631
|
:hidden Boolean
|
629
632
|
:displayed Boolean
|
633
|
+
:obscured Boolean
|
630
634
|
:width Integer
|
631
635
|
:height Integer
|
632
636
|
:x Integer
|
@@ -636,6 +640,13 @@ The `verify_ui_states` method supports the following property/state pairs:
|
|
636
640
|
:attribute Hash
|
637
641
|
:style String
|
638
642
|
:tabindex Integer
|
643
|
+
:required Boolean
|
644
|
+
:crossorigin String
|
645
|
+
|
646
|
+
**Pages:**
|
647
|
+
|
648
|
+
:secure Boolean
|
649
|
+
:title String
|
639
650
|
|
640
651
|
**Text Fields:**
|
641
652
|
|
@@ -707,7 +718,6 @@ The `verify_ui_states` method supports the following property/state pairs:
|
|
707
718
|
:playback_rate Float
|
708
719
|
:ready_state Integer
|
709
720
|
:volume Float
|
710
|
-
:crossorigin String
|
711
721
|
:preload String
|
712
722
|
:poster String
|
713
723
|
|
@@ -1820,7 +1830,7 @@ in landscape orientation:
|
|
1820
1830
|
cucumber -p ipad_pro -p landscape
|
1821
1831
|
|
1822
1832
|
|
1823
|
-
The following command specifies that Cucumber will run tests against an iPad Pro (12.9-inch) (5th generation) with iOS version 15.
|
1833
|
+
The following command specifies that Cucumber will run tests against an iPad Pro (12.9-inch) (5th generation) with iOS version 15.4 in an
|
1824
1834
|
XCode Simulator in landscape orientation:
|
1825
1835
|
|
1826
1836
|
cucumber -p ipad_pro_12_15_sim -p landscape
|
data/Rakefile
CHANGED
@@ -1 +1,86 @@
|
|
1
|
-
require '
|
1
|
+
require 'rubygems'
|
2
|
+
require 'cucumber'
|
3
|
+
require 'cucumber/rake/task'
|
4
|
+
require 'rake'
|
5
|
+
|
6
|
+
|
7
|
+
namespace :features do
|
8
|
+
Cucumber::Rake::Task.new(:edge_local) do |t|
|
9
|
+
t.profile = 'edge_local'
|
10
|
+
end
|
11
|
+
|
12
|
+
Cucumber::Rake::Task.new(:chrome_local) do |t|
|
13
|
+
t.profile = 'chrome_local'
|
14
|
+
end
|
15
|
+
|
16
|
+
Cucumber::Rake::Task.new(:edge_headless) do |t|
|
17
|
+
t.profile = 'edge_headless'
|
18
|
+
end
|
19
|
+
|
20
|
+
Cucumber::Rake::Task.new(:chrome_headless) do |t|
|
21
|
+
t.profile = 'chrome_headless'
|
22
|
+
end
|
23
|
+
|
24
|
+
Cucumber::Rake::Task.new(:safari_local) do |t|
|
25
|
+
t.profile = 'safari_local'
|
26
|
+
end
|
27
|
+
|
28
|
+
Cucumber::Rake::Task.new(:firefox_local) do |t|
|
29
|
+
t.profile = 'firefox_local'
|
30
|
+
end
|
31
|
+
|
32
|
+
Cucumber::Rake::Task.new(:firefox_headless) do |t|
|
33
|
+
t.profile = 'firefox_headless'
|
34
|
+
end
|
35
|
+
|
36
|
+
Cucumber::Rake::Task.new(:edge_grid) do |t|
|
37
|
+
t.profile = 'edge_grid'
|
38
|
+
end
|
39
|
+
|
40
|
+
Cucumber::Rake::Task.new(:chrome_grid) do |t|
|
41
|
+
t.profile = 'chrome_grid'
|
42
|
+
end
|
43
|
+
|
44
|
+
Cucumber::Rake::Task.new(:firefox_grid) do |t|
|
45
|
+
t.profile = 'firefox_grid'
|
46
|
+
end
|
47
|
+
|
48
|
+
Cucumber::Rake::Task.new(:ios_remote) do |t|
|
49
|
+
t.profile = 'ios_remote'
|
50
|
+
end
|
51
|
+
|
52
|
+
Cucumber::Rake::Task.new(:emulated_mobile) do |t|
|
53
|
+
t.profile = 'ipad_pro_12_local'
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
task :required => [
|
58
|
+
:edge_local,
|
59
|
+
:edge_headless,
|
60
|
+
:chrome_local,
|
61
|
+
:chrome_headless,
|
62
|
+
:firefox_local,
|
63
|
+
:firefox_headless,
|
64
|
+
:safari_local,
|
65
|
+
:emulated_mobile,
|
66
|
+
]
|
67
|
+
|
68
|
+
task :grid => [:edge_grid, :chrome_grid, :firefox_grid]
|
69
|
+
|
70
|
+
task :mobile => [:ios_remote]
|
71
|
+
|
72
|
+
task :all => [
|
73
|
+
:edge_local,
|
74
|
+
:edge_headless,
|
75
|
+
:chrome_local,
|
76
|
+
:chrome_headless,
|
77
|
+
:firefox_local,
|
78
|
+
:firefox_headless,
|
79
|
+
:safari_local,
|
80
|
+
:edge_grid,
|
81
|
+
:chrome_grid,
|
82
|
+
:firefox_grid,
|
83
|
+
:emulated_mobile,
|
84
|
+
:ios_remote
|
85
|
+
]
|
86
|
+
end
|
data/config/cucumber.yml
ADDED
@@ -0,0 +1,170 @@
|
|
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
|
+
|
67
|
+
|
68
|
+
#==============
|
69
|
+
# profile to start Appium Server prior to running mobile browser tests on iOS or Android simulators or physical devices
|
70
|
+
#==============
|
71
|
+
run_appium: APPIUM_SERVER=run
|
72
|
+
|
73
|
+
|
74
|
+
#==============
|
75
|
+
# profiles for mobile Safari web browsers hosted within XCode iOS simulators
|
76
|
+
# NOTE: Requires installation of XCode, iOS version specific target simulators, Appium, and the appium_capybara gem
|
77
|
+
#==============
|
78
|
+
|
79
|
+
appium_ios: WEB_BROWSER=appium AUTOMATION_ENGINE=XCUITest APP_PLATFORM_NAME="ios" APP_BROWSER="Safari" NEW_COMMAND_TIMEOUT=30 SHOW_SIM_KEYBOARD=false <%= mobile %>
|
80
|
+
app_ios_15: --profile appium_ios APP_VERSION="15.4"
|
81
|
+
|
82
|
+
ipad_pro_12_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Pro (12.9-inch) (5th generation)"
|
83
|
+
ipad_air_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Air (5th generation)" <%= desktop %>
|
84
|
+
|
85
|
+
ios_remote: --profile ipad_pro_12_15_sim --profile run_appium ORIENTATION=portrait TEST_ENVIRONMENT=REMOTE
|
86
|
+
|
87
|
+
|
88
|
+
#==============
|
89
|
+
# profiles for Android mobile web browsers hosted within Android Studio Android Virtual Device emulators
|
90
|
+
# NOTE: Requires installation of Android Studio, Android version specific virtual device simulators, Appium, and the appium_capybara gem
|
91
|
+
#==============
|
92
|
+
|
93
|
+
appium_android: WEB_BROWSER=appium APP_PLATFORM_NAME="Android" <%= mobile %>
|
94
|
+
app_android_12: --profile appium_android APP_BROWSER="Chrome" APP_VERSION="12.0"
|
95
|
+
pixel_c_api31_sim: --profile app_android_12 DEVICE_TYPE=tablet APP_DEVICE="Pixel_C_API_31"
|
96
|
+
|
97
|
+
android_remote: --profile pixel_c_api31_sim --profile run_appium ORIENTATION=portrait TEST_ENVIRONMENT=REMOTE
|
98
|
+
|
99
|
+
|
100
|
+
#==============
|
101
|
+
# profiles for remotely hosted web browsers on the BrowserStack service
|
102
|
+
#==============
|
103
|
+
|
104
|
+
browserstack: WEB_BROWSER=browserstack BS_USERNAME="<INSERT USER NAME HERE>" BS_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - BrowserStack"
|
105
|
+
bs_desktop: --profile browserstack <%= desktop %> RESOLUTION="1920x1080"
|
106
|
+
bs_mobile: --profile browserstack <%= mobile %>
|
107
|
+
|
108
|
+
# BrowserStack macOS desktop browser profiles
|
109
|
+
bs_macos_monterey: --profile bs_desktop BS_OS="OS X" BS_OS_VERSION="Monterey"
|
110
|
+
bs_chrome_monterey: --profile bs_macos_monterey BS_BROWSER="Chrome" BS_VERSION="latest"
|
111
|
+
bs_edge_monterey: --profile bs_macos_monterey BS_BROWSER="Edge" BS_VERSION="latest"
|
112
|
+
bs_safari_monterey: --profile bs_macos_monterey BS_BROWSER="Safari" BS_VERSION="latest"
|
113
|
+
|
114
|
+
# BrowserStack iOS mobile browser profiles
|
115
|
+
bs_ipad: --profile bs_mobile BS_OS=ios BS_BROWSER=Safari DEVICE_TYPE=tablet BS_REAL_MOBILE="true"
|
116
|
+
bs_ipad_pro_12: --profile bs_ipad BS_DEVICE="iPad Pro 12.9 2018" BS_OS_VERSION="15"
|
117
|
+
|
118
|
+
# BrowserStack Android mobile browser profiles
|
119
|
+
bs_android: --profile bs_mobile BS_OS=android BS_BROWSER=Chrome DEVICE_TYPE=tablet BS_REAL_MOBILE="true"
|
120
|
+
bs_android_tablet: --profile bs_android BS_DEVICE="Samsung Galaxy Tab S7" BS_OS_VERSION="10.0"
|
121
|
+
|
122
|
+
|
123
|
+
#==============
|
124
|
+
# profiles for remotely hosted web browsers on the LambdaTest service
|
125
|
+
#==============
|
126
|
+
|
127
|
+
lambdatest: WEB_BROWSER=lambdatest LT_USERNAME="<INSERT USER NAME HERE>" LT_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - LambdaTest"
|
128
|
+
lt_desktop: --profile lambdatest <%= desktop %> RESOLUTION="2560x1440"
|
129
|
+
|
130
|
+
# LambdaTest macOS desktop browser profiles
|
131
|
+
lt_macos_monterey: --profile lt_desktop LT_OS="MacOS Monterey"
|
132
|
+
lt_chrome_monterey: --profile lt_macos_monterey LT_BROWSER="Chrome" LT_VERSION="98.0"
|
133
|
+
lt_edge_monterey: --profile lt_macos_monterey LT_BROWSER="MicrosoftEdge" LT_VERSION="97.0"
|
134
|
+
|
135
|
+
|
136
|
+
#==============
|
137
|
+
# profiles for remotely hosted web browsers on the TestingBot service
|
138
|
+
#==============
|
139
|
+
|
140
|
+
testingbot: WEB_BROWSER=testingbot TB_USERNAME="<INSERT USER NAME HERE>" TB_AUTHKEY="<INSERT PASSWORD HERE>" AUTOMATE_PROJECT="TC_Web_Sample - TestingBot"
|
141
|
+
tb_desktop: --profile testingbot <%= desktop %> RESOLUTION="1920x1200"
|
142
|
+
|
143
|
+
# TestingBot macOS desktop browser profiles
|
144
|
+
tb_macos_monterey: --profile tb_desktop TB_OS="MONTEREY"
|
145
|
+
tb_chrome_monterey: --profile tb_macos_monterey TB_BROWSER="chrome" TB_VERSION="latest"
|
146
|
+
tb_edge_monterey: --profile tb_macos_monterey TB_BROWSER="microsoftedge" TB_VERSION="latest"
|
147
|
+
|
148
|
+
|
149
|
+
#==============
|
150
|
+
# profiles for remotely hosted web browsers on the SauceLabs service
|
151
|
+
#==============
|
152
|
+
|
153
|
+
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"
|
154
|
+
sl_desktop: --profile saucelabs <%= desktop %>
|
155
|
+
sl_mobile: --profile saucelabs <%= mobile %>
|
156
|
+
|
157
|
+
# SauceLabs macOS desktop browser profiles
|
158
|
+
sl_macos_monterey: --profile sl_desktop SL_OS="macOS 12" RESOLUTION="1920x1440"
|
159
|
+
sl_chrome_monterey: --profile sl_macos_monterey SL_BROWSER="chrome" SL_VERSION="latest"
|
160
|
+
sl_edge_monterey: --profile sl_macos_monterey SL_BROWSER="MicrosoftEdge" SL_VERSION="latest"
|
161
|
+
sl_firefox_monterey: --profile sl_macos_monterey SL_BROWSER="Firefox" SL_VERSION="latest"
|
162
|
+
|
163
|
+
# SauceLabs Windows desktop browser profiles
|
164
|
+
sl_windows: --profile sl_desktop RESOLUTION="1920x1200"
|
165
|
+
sl_edge_win11: --profile sl_windows SL_OS="Windows 11" SL_BROWSER="MicrosoftEdge" SL_VERSION="latest"
|
166
|
+
sl_ie_win10: --profile sl_windows SL_OS="Windows 10" SL_BROWSER="internet explorer" SL_VERSION="11"
|
167
|
+
|
168
|
+
# SauceLabs iOS mobile browser profiles
|
169
|
+
sl_ipad: --profile sl_mobile DEVICE_TYPE=tablet SL_PLATFORM=iOS SL_BROWSER=Safari
|
170
|
+
sl_ipad_pro_12: --profile sl_ipad SL_DEVICE="iPad Pro (12.9 inch) (5th generation) Simulator" SL_VERSION="15.0"
|
@@ -0,0 +1,15 @@
|
|
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
|
@@ -0,0 +1,25 @@
|
|
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
|
+
}
|
Binary file
|
@@ -0,0 +1,20 @@
|
|
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
|