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.
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