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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +18 -0
  3. data/.simplecov +9 -0
  4. data/CHANGELOG.md +44 -0
  5. data/Gemfile.lock +60 -2
  6. data/README.md +17 -7
  7. data/Rakefile +86 -1
  8. data/config/cucumber.yml +170 -0
  9. data/config/test_data/LOCAL_data.json +15 -0
  10. data/config/test_data/LOCAL_data.xls +0 -0
  11. data/config/test_data/LOCAL_data.yml +11 -0
  12. data/config/test_data/data.json +25 -0
  13. data/config/test_data/data.xls +0 -0
  14. data/config/test_data/data.yml +20 -0
  15. data/docker-compose-v3.yml +48 -0
  16. data/features/basic_form_page_css.feature +39 -0
  17. data/features/basic_form_page_xpath.feature +26 -0
  18. data/features/media_players.feature +84 -0
  19. data/features/step_definitions/generic_steps.rb.rb +109 -0
  20. data/features/step_definitions/media_steps.rb +30 -0
  21. data/features/support/data/form_data.rb +43 -0
  22. data/features/support/env.rb +50 -0
  23. data/features/support/hooks.rb +265 -0
  24. data/features/support/pages/base_test_page.rb +22 -0
  25. data/features/support/pages/basic_css_form_page.rb +52 -0
  26. data/features/support/pages/basic_form_page.rb +393 -0
  27. data/features/support/pages/basic_xpath_form_page.rb +53 -0
  28. data/features/support/pages/custom_controls_page.rb +13 -0
  29. data/features/support/pages/indexed_sections_page.rb +13 -0
  30. data/features/support/pages/media_test_page.rb +208 -0
  31. data/features/support/sections/header_nav.rb +39 -0
  32. data/features/support/world_data.rb +12 -0
  33. data/features/support/world_pages.rb +18 -0
  34. data/lib/testcentricity_web/appium_server.rb +5 -0
  35. data/lib/testcentricity_web/data_objects/data_objects_helper.rb +7 -0
  36. data/lib/testcentricity_web/data_objects/environment.rb +18 -0
  37. data/lib/testcentricity_web/data_objects/excel_helper.rb +60 -59
  38. data/lib/testcentricity_web/version.rb +1 -1
  39. data/lib/testcentricity_web/web_core/drag_drop_helper.rb +4 -0
  40. data/lib/testcentricity_web/web_core/page_object.rb +8 -8
  41. data/lib/testcentricity_web/web_core/page_objects_helper.rb +43 -8
  42. data/lib/testcentricity_web/web_core/page_section.rb +1 -16
  43. data/lib/testcentricity_web/web_core/webdriver_helper.rb +16 -0
  44. data/lib/testcentricity_web/web_elements/checkbox.rb +3 -4
  45. data/lib/testcentricity_web/web_elements/file_field.rb +9 -5
  46. data/lib/testcentricity_web/web_elements/image.rb +2 -1
  47. data/lib/testcentricity_web/web_elements/media.rb +45 -11
  48. data/lib/testcentricity_web/web_elements/radio.rb +5 -1
  49. data/lib/testcentricity_web/web_elements/select_list.rb +11 -3
  50. data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +33 -7
  51. data/lib/testcentricity_web/web_elements/video.rb +2 -2
  52. data/reports/.keep +1 -0
  53. data/test_site/basic_test_page.html +290 -0
  54. data/test_site/custom_controls_page.html +58 -0
  55. data/test_site/images/Granny.jpg +0 -0
  56. data/test_site/images/Wilder.jpg +0 -0
  57. data/test_site/images/You_Betcha.jpg +0 -0
  58. data/test_site/indexed_sections_page.html +58 -0
  59. data/test_site/media/MIB2-subtitles-pt-BR.vtt +49 -0
  60. data/test_site/media/MIB2.mp4 +0 -0
  61. data/test_site/media/MP4_small.mp4 +0 -0
  62. data/test_site/media/MPS_sample.mp3 +0 -0
  63. data/test_site/media/count_and_bars.mp4 +0 -0
  64. data/test_site/media_page.html +86 -0
  65. data/testcentricity_web.gemspec +5 -0
  66. metadata +131 -4
  67. data/test_site/test_page.html +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 022bc17f6fc489c52de9a91fdccb61b722db97cb17b2c21951a2650930adeeb8
4
- data.tar.gz: cfeefd68b74714b35b738f865b8c5796d4ebe3c302bed0deff208cef34d4f225
3
+ metadata.gz: ec1cf64d0d0e52b5d49ce5980dc049add4befecbc830650c4c908db5b2e07ac2
4
+ data.tar.gz: 841d00666f64914cf72d0f279e060c5ba31c1eb8a056020015a1430daf9c38a6
5
5
  SHA512:
6
- metadata.gz: 19bb489e029052084ba7c4d3c29bc7a1a5f483039624048860be14ba75d2e8960667410ac7b838a962eac263cd80bb0bf66e881b592f03ce91bcd3ebd45c2e15
7
- data.tar.gz: 2f45f5c2dda5f485a123527c394f5480e91f1bb123c58efe1a7bf56225388bb0cbed82abbf0c01618d6c370ac7cd6b03f350a338025e06da5597b19989e849b2
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
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
4
+
5
+ SimpleCov.start do
6
+ add_filter '/features/'
7
+ add_filter '/spec/'
8
+ merge_timeout 3600
9
+ end
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.5)
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.9)
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 `selectlist` controls. For `checkbox` and `radio` controls, data
573
- must either be a `Boolean` or a `String` that evaluates to a `Boolean` value (Yes, No, 1, 0, true, false). For `section` objects, data values
574
- must be a `String`, and the `section` object must have a `set` method defined.
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.2 in an
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 'bundler/gem_tasks'
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
@@ -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,11 @@
1
+ Form_data:
2
+ primary:
3
+ username: "Ignatius von Snicklefritz"
4
+ password: "T0p_Sekrit"
5
+ image_filename: "Wilder.jpg"
6
+ multi_select: "Selection Item 2"
7
+ drop_down_item: "Drop Down Item 5"
8
+ check1: true
9
+ check2: true
10
+ check3: false
11
+ radio_select: 2
@@ -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