testcentricity_web 4.1.5 → 4.1.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|