testcentricity_web 4.1.10 → 4.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +75 -1
  3. data/README.md +73 -35
  4. data/lib/testcentricity_web/data_objects/environment.rb +0 -1
  5. data/lib/testcentricity_web/version.rb +1 -1
  6. data/lib/testcentricity_web/web_core/page_objects_helper.rb +39 -2
  7. data/lib/testcentricity_web/web_core/webdriver_helper.rb +67 -61
  8. data/lib/testcentricity_web/web_elements/media.rb +108 -0
  9. data/lib/testcentricity_web/web_elements/textfield.rb +28 -0
  10. data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +39 -1
  11. metadata +6 -150
  12. data/.gitignore +0 -39
  13. data/.idea/.name +0 -1
  14. data/.idea/encodings.xml +0 -6
  15. data/.idea/misc.xml +0 -4
  16. data/.idea/modules.xml +0 -8
  17. data/.idea/vcs.xml +0 -7
  18. data/.rspec +0 -4
  19. data/.rubocop.yml +0 -38
  20. data/.ruby-version +0 -1
  21. data/.simplecov +0 -9
  22. data/CODE_OF_CONDUCT.md +0 -13
  23. data/Gemfile +0 -6
  24. data/Rakefile +0 -115
  25. data/config/cucumber.yml +0 -171
  26. data/config/locales/en-US.yml +0 -56
  27. data/config/test_data/LOCAL_data.json +0 -15
  28. data/config/test_data/LOCAL_data.xls +0 -0
  29. data/config/test_data/LOCAL_data.yml +0 -11
  30. data/config/test_data/data.json +0 -25
  31. data/config/test_data/data.xls +0 -0
  32. data/config/test_data/data.yml +0 -20
  33. data/docker-compose.yml +0 -48
  34. data/features/basic_form_page_css.feature +0 -54
  35. data/features/basic_form_page_xpath.feature +0 -26
  36. data/features/custom_controls.feature +0 -29
  37. data/features/media_players.feature +0 -67
  38. data/features/step_definitions/generic_steps.rb.rb +0 -124
  39. data/features/step_definitions/media_steps.rb +0 -30
  40. data/features/support/data/form_data.rb +0 -43
  41. data/features/support/env.rb +0 -53
  42. data/features/support/hooks.rb +0 -270
  43. data/features/support/pages/base_test_page.rb +0 -22
  44. data/features/support/pages/basic_css_form_page.rb +0 -57
  45. data/features/support/pages/basic_form_page.rb +0 -500
  46. data/features/support/pages/basic_xpath_form_page.rb +0 -58
  47. data/features/support/pages/custom_controls_page.rb +0 -263
  48. data/features/support/pages/indexed_sections_page.rb +0 -57
  49. data/features/support/pages/media_test_page.rb +0 -207
  50. data/features/support/sections/header_nav.rb +0 -48
  51. data/features/support/sections/product_card.rb +0 -39
  52. data/features/support/world_data.rb +0 -12
  53. data/features/support/world_pages.rb +0 -18
  54. data/reports/.keep +0 -1
  55. data/spec/fixtures/page_object.rb +0 -22
  56. data/spec/fixtures/section_object.rb +0 -21
  57. data/spec/spec_helper.rb +0 -33
  58. data/spec/testcentricity_web/browser_spec.rb +0 -41
  59. data/spec/testcentricity_web/elements/audio_spec.rb +0 -68
  60. data/spec/testcentricity_web/elements/button_spec.rb +0 -18
  61. data/spec/testcentricity_web/elements/checkbox_spec.rb +0 -33
  62. data/spec/testcentricity_web/elements/file_field_spec.rb +0 -13
  63. data/spec/testcentricity_web/elements/image_spec.rb +0 -33
  64. data/spec/testcentricity_web/elements/label_spec.rb +0 -18
  65. data/spec/testcentricity_web/elements/link_spec.rb +0 -23
  66. data/spec/testcentricity_web/elements/list_spec.rb +0 -13
  67. data/spec/testcentricity_web/elements/radio_spec.rb +0 -28
  68. data/spec/testcentricity_web/elements/ui_element_spec.rb +0 -125
  69. data/spec/testcentricity_web/elements/video_spec.rb +0 -68
  70. data/spec/testcentricity_web/helper_specs/object_helpers_spec.rb +0 -39
  71. data/spec/testcentricity_web/helper_specs/string_helpers_spec.rb +0 -49
  72. data/spec/testcentricity_web/page_object_spec.rb +0 -90
  73. data/spec/testcentricity_web/section_object_spec.rb +0 -72
  74. data/spec/testcentricity_web/version_spec.rb +0 -7
  75. data/spec/testcentricity_web/webdriver_connect/grid_webdriver_spec.rb +0 -72
  76. data/spec/testcentricity_web/webdriver_connect/local_webdriver_spec.rb +0 -86
  77. data/spec/testcentricity_web/webdriver_connect/mobile_webdriver_spec.rb +0 -65
  78. data/test_site/basic_test_page.html +0 -269
  79. data/test_site/chosen/chosen-sprite.png +0 -0
  80. data/test_site/chosen/chosen-sprite@2x.png +0 -0
  81. data/test_site/chosen/chosen.css +0 -496
  82. data/test_site/chosen/chosen.jquery.js +0 -1359
  83. data/test_site/chosen/chosen.jquery.min.js +0 -3
  84. data/test_site/chosen/chosen.min.css +0 -11
  85. data/test_site/chosen/chosen.proto.js +0 -1399
  86. data/test_site/chosen/chosen.proto.min.js +0 -3
  87. data/test_site/chosen/composer.json +0 -36
  88. data/test_site/custom_controls_page.html +0 -629
  89. data/test_site/docsupport/chosen.png +0 -0
  90. data/test_site/docsupport/init.js +0 -11
  91. data/test_site/docsupport/init.proto.js +0 -16
  92. data/test_site/docsupport/jquery-1.12.4.min.js +0 -5
  93. data/test_site/docsupport/jquery-3.2.1.min.js +0 -4
  94. data/test_site/docsupport/oss-credit.png +0 -0
  95. data/test_site/docsupport/prism.css +0 -108
  96. data/test_site/docsupport/prism.js +0 -9
  97. data/test_site/docsupport/prototype-1.7.0.0.js +0 -6082
  98. data/test_site/docsupport/style.css +0 -219
  99. data/test_site/images/Blouse_Black.jpg +0 -0
  100. data/test_site/images/Granny.jpg +0 -0
  101. data/test_site/images/Printed_Dress.jpg +0 -0
  102. data/test_site/images/T-shirt.jpg +0 -0
  103. data/test_site/images/Wilder.jpg +0 -0
  104. data/test_site/images/You_Betcha.jpg +0 -0
  105. data/test_site/images/jeans3.jpg +0 -0
  106. data/test_site/indexed_sections_page.html +0 -215
  107. data/test_site/media/MIB2-subtitles-pt-BR.vtt +0 -49
  108. data/test_site/media/MIB2.mp4 +0 -0
  109. data/test_site/media/MP4_small.mp4 +0 -0
  110. data/test_site/media/MPS_sample.mp3 +0 -0
  111. data/test_site/media/bbc_scotland_report.mp3 +0 -0
  112. data/test_site/media/count_and_bars.mp4 +0 -0
  113. data/test_site/media_page.html +0 -86
  114. data/testcentricity_web.gemspec +0 -59
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23887c7085c3a17d09449043491877a3cce346498b778d3e44c3e9aeacad0bdf
4
- data.tar.gz: 6425f62243f5795ac091814a1a68e6b08d44d219862bc6c26fc5244afb16a456
3
+ metadata.gz: 6bba95ce17cd2e367f22261389fbe57cf7599ad7c8b376d293713929363dc7b2
4
+ data.tar.gz: e0e50d77d9e41d22652d6345820ef4258c31ff8e0ec63171fcfd6bba4bf8da17
5
5
  SHA512:
6
- metadata.gz: db06316bf646dac6ea37407286059429141d25433c39863cde90b915d7714cb281e28fe116fc997faefff1c98711835ad88f9be0fbea35a66b5e756b14da8236
7
- data.tar.gz: d11596401fb3288e73a1cab6b3bbf6f5443f4e1cc6c94ed2be43c38096e48335126c70aa3851530df190f7ac6b1b1c576bd2a71fd51a123e5ccaf51c6e7b1772
6
+ metadata.gz: ab4055f869598ce042c6b62172b8a89e9632268593dfcfec4cf4c7b401cfd66c3dfbfdd177f046aa429f80f575dd88558be187447cfcecd7ab2a32fa355cff78
7
+ data.tar.gz: 3c0581ac5599a71203eeb592f919de7a539ebb0855a2e3dd72cf9de2ae9a4ca69ecb7bf7b408a1540a432c1358337803ddc84eaf8d1827d6033904aa35f9e542
data/CHANGELOG.md CHANGED
@@ -2,6 +2,81 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
+ ## [4.2.6] - 12-JUNE-2022
6
+
7
+ ### Fixed
8
+ * Fix `gemspec` to no longer include specs and cuke tests as part of deployment package for gem.
9
+
10
+
11
+ ## [4.2.5] - 10-JUNE-2022
12
+
13
+ ### Fixed
14
+ *`WebDriverConnect.initialize_web_driver` method no longer raises `No such file or directory @ dir_s_mkdir` error due to
15
+ missing `Downloads` folder when running tests in parallel.
16
+
17
+
18
+ ## [4.2.4] - 02-JUNE-2022
19
+
20
+ ### Added
21
+ * Added `UIElement.wait_until_enabled` method
22
+
23
+
24
+ ## [4.2.3] - 01-JUNE-2022
25
+
26
+ ### Added
27
+ * Added `UIElement.wait_while_busy` method
28
+ * Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of `aria_busy` attribute.
29
+
30
+
31
+ ## [4.2.2] - 21-MAY-2022
32
+
33
+ ### Changed
34
+ * Update default version of Appium used when running tests on Sauce Labs service.
35
+ * Refactored capabilities definition when running with locally hosted Appium instance.
36
+
37
+
38
+ ## [4.2.1] - 23-APR-2022
39
+
40
+ ### Added
41
+ * Added the following `Audio`, `Media`, and `Video` methods to support verification of media text tracks (subtitles, captions,
42
+ chapters, descriptions, or metadata):
43
+ * `track_count`
44
+ * `active_track`
45
+ * `active_track_data`
46
+ * `all_tracks_data`
47
+ * `track_data`
48
+ * `active_track_source`
49
+ * `track_source`
50
+ * Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of the following
51
+ `Media` properties:
52
+ * `:track_count`
53
+ * `:active_track`
54
+ * `:active_track_data`
55
+ * `:all_tracks_data`
56
+ * `:track_data`
57
+ * `:active_track_source`
58
+ * `:track_source`
59
+
60
+
61
+ ## [4.2.0] - 20-APR-2022
62
+
63
+ ### Added
64
+ * `TextField.validation_message` and `TextField.validity?` methods added.
65
+ * Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of the following
66
+ `TextField.validity?` properties:
67
+ * `:badInput`
68
+ * `:customError`
69
+ * `:patternMismatch`
70
+ * `:rangeOverflow`
71
+ * `:rangeUnderflow`
72
+ * `:stepMismatch`
73
+ * `:tooLong`
74
+ * `:tooShort`
75
+ * `:typeMismatch`
76
+ * `:valid`
77
+ * `:valueMissing`
78
+
79
+
5
80
  ## [4.1.10] - 19-APR-2022
6
81
 
7
82
  ### Fixed
@@ -19,7 +94,6 @@ running gem test specs and features.
19
94
  radio buttons to the unchecked state.
20
95
 
21
96
  ### Added
22
-
23
97
  * `CheckBox.define_custom_elements` and `Radio.define_custom_elements` methods now support specifying a child `input` component
24
98
  contained by a top level `label` element.
25
99
 
data/README.md CHANGED
@@ -1,18 +1,19 @@
1
1
  # TestCentricity™ Web
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/testcentricity_web.svg)](https://badge.fury.io/rb/testcentricity_web) [![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause)
4
+ ![Gem Downloads](https://img.shields.io/gem/dt/testcentricity_web) ![Maintained](https://img.shields.io/maintenance/yes/2022)
4
5
 
5
6
 
6
- The TestCentricity™ Web core generic framework for desktop and mobile web browser-based app testing implements a Page Object Model DSL
7
- for use with Cucumber, Capybara (version 3.x), and Selenium-Webdriver (version 4.x). It also facilitates the configuration of the appropriate
7
+ The TestCentricity™ Web core framework for desktop and mobile web browser-based app testing implements a Page Object Model DSL for use
8
+ with Cucumber (version 7.x or greater), Capybara (version 3.x), and Selenium-Webdriver (version 4.x). It also facilitates the configuration of the appropriate
8
9
  Selenium-Webdriver capabilities required to establish a connection with a local or cloud hosted desktop or mobile web browser.
9
10
 
10
11
  The TestCentricity™ Web gem supports running automated tests against the following web test targets:
11
12
  * locally hosted desktop browsers (Chrome, Edge, Firefox, Safari, or IE)
12
13
  * locally hosted "headless" Chrome, Firefox, or Edge browsers
13
14
  * remote desktop and emulated mobile web browsers hosted on Selenium Grid 4 and Dockerized Selenium Grid 4 environments
14
- * mobile Safari browsers on iOS device simulators or physical iOS devices (using Appium and XCode on OS X)
15
- * mobile Chrome or Android browsers on Android Studio virtual device emulators (using Appium and Android Studio on OS X)
15
+ * mobile Safari browsers on iOS device simulators or physical iOS devices (using Appium and XCode on macOS)
16
+ * mobile Chrome or Android browsers on Android Studio virtual device emulators (using Appium and Android Studio on macOS)
16
17
  * cloud hosted desktop (Firefox, Chrome, Safari, IE, or Edge) or mobile (iOS Mobile Safari or Android) web browsers using the following service:
17
18
  * [Browserstack](https://www.browserstack.com/list-of-browsers-and-platforms?product=automate)
18
19
  * [Sauce Labs](https://saucelabs.com/open-source#automated-testing-platform)
@@ -29,13 +30,14 @@ A complete history of bug fixes and new features can be found in the {file:CHANG
29
30
 
30
31
  The RubyDocs for this gem can be found [here](https://www.rubydoc.info/gems/testcentricity_web).
31
32
 
32
- An example project that demonstrates the implementation of a page object model framework using Cucumber and TestCentricity™
33
+ An example project that demonstrates the implementation of a page object model framework using Cucumber and TestCentricity™ Web
33
34
  can be found [here](https://github.com/TestCentricity/tc_web_sample).
34
35
 
35
36
 
36
37
  ## Installation
37
38
 
38
- TestCentricity version 4.1 and above requires Ruby 2.7 or later. To install the TestCentricity gem, add this line to your automation project's Gemfile:
39
+ TestCentricity Web version 4.1 and above requires Ruby 2.7.5 or later. To install the TestCentricity Web gem, add this line to your
40
+ automation project's Gemfile:
39
41
 
40
42
  gem 'testcentricity_web'
41
43
 
@@ -59,7 +61,7 @@ If you are using Cucumber, you need to require the following in your `env.rb` fi
59
61
 
60
62
  ### Using RSpec
61
63
 
62
- If you are using RSpec instead, you need to require the following in your `env.rb` file:
64
+ If you are using RSpec instead, you need to require the following in your `spec_helper.rb` file:
63
65
 
64
66
  require 'capybara'
65
67
  require 'capybara/rspec'
@@ -69,7 +71,7 @@ If you are using RSpec instead, you need to require the following in your `env.r
69
71
  ### Using Appium
70
72
 
71
73
  If you will be running your tests on mobile Safari browsers on simulated iOS devices using Appium and XCode Simulators, you need to require
72
- the following in your `env.rb` file:
74
+ the following in your `env.rb` and/or `spec_helper.rb` file:
73
75
 
74
76
  require 'appium_capybara'
75
77
 
@@ -118,22 +120,22 @@ Web pages typically have names and URLs associated with them. Web pages also typ
118
120
  indicates that the page's contents have fully loaded.
119
121
 
120
122
  The `page_name` trait is registered with the `PageManager` object, which includes a `find_page` method that takes a page name as a
121
- parameter and returns an instance of the associated `Page Object`. If you intend to use the `PageManager`, you must define a `page_name`
123
+ parameter and returns an instance of the associated `PageObject`. If you intend to use the `PageManager`, you must define a `page_name`
122
124
  trait for each `PageObject` to be registered.
123
125
 
124
126
  The `page_name` trait is usually a `String` value that represents the name of the page that will be matched by the `PageManager.findpage` method.
125
127
  `page_name` traits are case and white-space sensitive. For pages that may be referenced with multiple names, the `page_name` trait may also be
126
128
  an `Array` of `String` values representing those page names.
127
129
 
130
+ A `page_locator` trait is defined if a page has a unique object or attribute that exists once the page's contents have fully loaded. The
131
+ `page_locator` trait is a CSS or Xpath expression that uniquely identifies the object or attribute. The `verify_page_exists` method waits
132
+ for the `page_locator` trait to exist.
133
+
128
134
  A `page_url` trait should be defined if a page can be directly loaded using a URL. If you set Capybara's `app_host`, or specify a base URL
129
135
  when calling the `WebDriverConnect.initialize_web_driver` method, then your `page_url` trait can be the relative URL slug that will
130
136
  be appended to the base URL specified in `app_host`. Specifying a `page_url` trait is optional, as not all web pages can be directly loaded
131
137
  via a URL.
132
138
 
133
- A `page_locator` trait is defined if a page has a unique object or attribute that exists once the page's contents have fully loaded. The
134
- `page_locator` trait is a CSS or Xpath expression that uniquely identifies the object or attribute. The `verify_page_exists` method waits
135
- for the `page_locator` trait to exist.
136
-
137
139
  You define your page's **Traits** as shown below:
138
140
 
139
141
  class LoginPage < TestCentricity::PageObject
@@ -387,8 +389,7 @@ You add a `PageSection` to its associated `PageObject` as shown below:
387
389
  Once your `PageObject` has been instantiated, you can call its `PageSection` methods as shown below:
388
390
 
389
391
  home_page.search_form.search_for('ocarina')
390
-
391
-
392
+
392
393
 
393
394
  ## UIElements
394
395
 
@@ -402,9 +403,9 @@ all UI elements are based on the `UIElement` class.
402
403
 
403
404
  Single `UIElement` declarations have the following format:
404
405
 
405
- elementType :element Name, locator
406
+ elementType :elementName, locator
406
407
 
407
- * The `element name` is the unique name that you will use to refer to the UI element and is specified as a `Symbol`.
408
+ * The `elementName` is the unique name that you will use to refer to the UI element and is specified as a `Symbol`.
408
409
  * The `locator` is the CSS or XPath attribute that uniquely and unambiguously identifies the `UIElement`.
409
410
 
410
411
  Multiple `UIElement` declarations for a collection of elements of the same type can be performed by passing a hash table containing the
@@ -475,8 +476,8 @@ Supported `UIElement` elementTypes and their declarations have the following for
475
476
 
476
477
 
477
478
  Refer to the Class List documentation for the `PageObject` and `PageSection` classes for details on the class methods used for declaring
478
- and instantiating `UIElements`. Examples of UI element declarations can be found in the ***Adding UI Elements to your Page Object*** and
479
- ***Adding UI Elements to your PageSection Object*** sections above.
479
+ and instantiating `UIElements`. Examples of UI element declarations can be found in the ***Adding UI Elements to your PageObject*** and
480
+ ***Adding UI Elements to your PageSection*** sections above.
480
481
 
481
482
 
482
483
  ### UIElement Inherited Methods
@@ -526,8 +527,10 @@ With TestCentricity, all UI elements are based on the `UIElement` class, and inh
526
527
  element.wait_until_gone(seconds)
527
528
  element.wait_until_visible(seconds)
528
529
  element.wait_until_hidden(seconds)
530
+ element.wait_until_enabled(seconds)
529
531
  element.wait_until_value_is(value, seconds)
530
532
  element.wait_until_value_changes(seconds)
533
+ element.wait_while_busy(seconds)
531
534
 
532
535
  **WAI-ARIA Object Accessibility (A11y) methods:**
533
536
 
@@ -581,7 +584,7 @@ of a hex color `String`. For `section` objects, data values must be a `String`,
581
584
  The `populate_data_fields` method verifies that data attributes associated with each `UIElement` is not `nil` or `empty` before attempting to
582
585
  enter data into the `UIElement`.
583
586
 
584
- The optional `wait_time` parameter is used to specify the time (in seconds) to wait for each `UIElement` to become become viable for data entry
587
+ The optional `wait_time` parameter is used to specify the time (in seconds) to wait for each `UIElement` to become viable for data entry
585
588
  (the `UIElement` must be visible and enabled) before entering the associated data value. This option is useful in situations where entering data,
586
589
  or setting the state of a `UIElement` might cause other `UIElements` to become visible or active. Specifying a wait_time value ensures that the
587
590
  subsequent `UIElements` will be ready to be interacted with as states are changed. If the wait time is `nil`, then the wait time will be 5 seconds.
@@ -659,6 +662,21 @@ The `verify_ui_states` method supports the following property/state pairs:
659
662
  :max Integer
660
663
  :step Integer
661
664
 
665
+ Text Field Constraint validation
666
+
667
+ :validation_message String
668
+ :badInput Boolean
669
+ :customError Boolean
670
+ :patternMismatch Boolean
671
+ :rangeOverflow Boolean
672
+ :rangeUnderflow Boolean
673
+ :stepMismatch Boolean
674
+ :tooLong Boolean
675
+ :tooShort Boolean
676
+ :typeMismatch Boolean
677
+ :valid Boolean
678
+ :valueMissing Boolean
679
+
662
680
  **Checkboxes:**
663
681
 
664
682
  :checked Boolean
@@ -722,6 +740,13 @@ The `verify_ui_states` method supports the following property/state pairs:
722
740
  :volume Float
723
741
  :preload String
724
742
  :poster String
743
+ :track_count Integer
744
+ :active_track Integer
745
+ :active_track_data Hash
746
+ :all_tracks_data Array of Hash
747
+ :track_data Hash
748
+ :active_track_source String
749
+ :track_source String
725
750
 
726
751
  #### ARIA accessibility property/state pairs
727
752
 
@@ -740,6 +765,7 @@ The `verify_ui_states` method supports the following ARIA accessibility property
740
765
  :aria_checked Boolean
741
766
  :aria_readonly Boolean
742
767
  :aria_pressed Boolean
768
+ :aria_busy Boolean
743
769
  :aria_haspopup Boolean
744
770
  :aria_sort String
745
771
  :aria_rowcount String
@@ -1022,7 +1048,7 @@ cumbersome to manage if your web application has dozens of `PageObjects` that ne
1022
1048
  ### Using the PageManager
1023
1049
 
1024
1050
  The `PageManager` class provides methods for supporting the instantiation and management of `PageObjects`. In the code example below,
1025
- the `page_objects` method contains a hash table of your `PageObject` instances and their associated `PageObject` class names to be
1051
+ the `page_objects` method contains a hash table of your `PageObject` instances and their associated `PageObject` classes to be
1026
1052
  instantiated by `PageManager`:
1027
1053
 
1028
1054
  module WorldPages
@@ -1161,24 +1187,24 @@ The `TestCentricity::WebDriverConnect.initialize_web_driver` method configures t
1161
1187
  establish a connection with a target web browser, and sets the base host URL of the web site you are running your tests against.
1162
1188
 
1163
1189
  The `TestCentricity::WebDriverConnect.initialize_web_driver` method accepts a single optional parameter - the base host URL. Cucumber
1164
- **Environment Variables** are used to specify the target local or remote web browser, and the various webdriver capability parameters required to configure
1165
- the connection.
1190
+ **Environment Variables** are used to specify the target local or remote web browser, and the various webdriver capability parameters required
1191
+ to configure the connection.
1166
1192
 
1167
1193
 
1168
1194
  ### Locally hosted desktop web browser
1169
1195
 
1170
- For locally hosted desktop web browsers running on macOS (OS X) or Windows platforms, the `WEB_BROWSER` Environment Variable must be set to one of the
1196
+ For locally hosted desktop web browsers running on macOS or Windows platforms, the `WEB_BROWSER` Environment Variable must be set to one of the
1171
1197
  values from the table below:
1172
1198
 
1173
1199
  | `WEB_BROWSER` | **Desktop Platform** |
1174
1200
  |--------------------|------------------------------------------------|
1175
- | `chrome` | OS X or Windows |
1176
- | `chrome_headless` | OS X or Windows (headless - no visible UI) |
1177
- | `firefox` | OS X or Windows |
1178
- | `firefox_headless` | OS X or Windows (headless - no visible UI) |
1179
- | `edge` | OS X or Windows |
1180
- | `edge_headless` | OS X or Windows (headless - no visible UI) |
1181
- | `safari` | OS X only |
1201
+ | `chrome` | macOS or Windows |
1202
+ | `chrome_headless` | macOS or Windows (headless - no visible UI) |
1203
+ | `firefox` | macOS or Windows |
1204
+ | `firefox_headless` | macOS or Windows (headless - no visible UI) |
1205
+ | `edge` | macOS or Windows |
1206
+ | `edge_headless` | macOS or Windows (headless - no visible UI) |
1207
+ | `safari` | macOS only |
1182
1208
  | `ie` | Windows only (IE version 10.x or greater only) |
1183
1209
 
1184
1210
  Refer to **section 8.6 (Using Browser specific Profiles in cucumber.yml)** below.
@@ -1236,7 +1262,7 @@ A detailed list of file MIME types can be found [here](https://www.freeformatter
1236
1262
 
1237
1263
  ### Locally hosted emulated mobile web browser
1238
1264
 
1239
- You can run your tests against mobile device browsers that are emulated within a locally hosted instance of a Chrome desktop browser on OS X or
1265
+ You can run your tests against mobile device browsers that are emulated within a locally hosted instance of a Chrome desktop browser on macOS or
1240
1266
  Windows. The specified mobile browser's user agent, CSS screen dimensions, and default screen orientation will be automatically set within the
1241
1267
  local Chrome browser instance. You may even specify the emulated device's screen orientation. For locally hosted emulated mobile web browsers,
1242
1268
  the `WEB_BROWSER` Environment Variable must be set to one of the values from the table below:
@@ -1347,7 +1373,7 @@ Refer to **section 8.6 (Using Browser specific Profiles in cucumber.yml)** below
1347
1373
  #### Mobile Safari browser on iOS Simulators or iOS Physical Devices
1348
1374
 
1349
1375
  You can run your mobile web tests against the mobile Safari browser on simulated iOS devices or physically connected iOS devices using Appium and XCode on
1350
- OS X. You must install Appium, XCode, and the iOS version-specific device simulators for XCode. You must also ensure that the `appium_capybara` gem is
1376
+ macOS. You must install Appium, XCode, and the iOS version-specific device simulators for XCode. You must also ensure that the `appium_capybara` gem is
1351
1377
  installed and required as described in **section 3.3 (Setup - Using Appium)** above.
1352
1378
 
1353
1379
  Information about Appium setup and configuration requirements for testing on physically connected iOS devices can be found on [this page](https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md).
@@ -1388,7 +1414,7 @@ Refer to **section 8.6 (Using Browser specific Profiles in cucumber.yml)** below
1388
1414
 
1389
1415
  #### Mobile Chrome or Android browsers on Android Studio Virtual Device emulators
1390
1416
 
1391
- You can run your mobile web tests against the mobile Chrome or Android browser on emulated Android devices using Appium and Android Studio on OS X. You
1417
+ You can run your mobile web tests against the mobile Chrome or Android browser on emulated Android devices using Appium and Android Studio on macOS. You
1392
1418
  must install Android Studio, the desired Android version-specific virtual device emulators, and Appium. Refer to [this page](http://appium.io/docs/en/drivers/android-uiautomator2/index.html)
1393
1419
  for information on configuring Appium to work with the Android SDK. You must also ensure that the `appium_capybara` gem is installed and required as
1394
1420
  described in **section 3.3 (Setup - Using Appium)** above.
@@ -1524,6 +1550,7 @@ for information regarding the specific capabilities.
1524
1550
  | `NETWORK_LOGS` | [Optional] Capture network logs (`true` or `false`) |
1525
1551
  | `APPIUM_LOGS` | [Optional] Generate Appium logs (`true` or `false`) |
1526
1552
 
1553
+
1527
1554
  #### Remote desktop browsers on the Sauce Labs service
1528
1555
 
1529
1556
  For remotely hosted desktop web browsers on the Sauce Labs service, the following **Environment Variables** must be set as described in the
@@ -1543,6 +1570,7 @@ to obtain information regarding the specific capabilities.
1543
1570
  | `BROWSER_SIZE ` | [Optional] Specify width, height of browser window |
1544
1571
  | `RECORD_VIDEO` | [Optional] Enable screen video recording during test execution (`true` or `false`) |
1545
1572
 
1573
+
1546
1574
  #### Remote desktop browsers on the TestingBot service
1547
1575
 
1548
1576
  For remotely hosted desktop web browsers on the TestingBot service, the following **Environment Variables** must be set as described in
@@ -1561,6 +1589,7 @@ regarding the specific capabilities.
1561
1589
  | `RESOLUTION` | [Optional] Possible values: `800x600`, `1024x768`, `1280x960`, `1280x1024`, `1600x1200`, `1920x1200`, `2560x1440` |
1562
1590
  | `BROWSER_SIZE` | [Optional] Specify width, height of browser window |
1563
1591
 
1592
+
1564
1593
  #### Remote desktop browsers on the LambdaTest service
1565
1594
 
1566
1595
  For remotely hosted desktop web browsers on the LambdaTest service, the following **Environment Variables** must be set as described in the table
@@ -1582,6 +1611,7 @@ to obtain information regarding the specific capabilities.
1582
1611
  | `ALLOW_COOKIES` | [Optional] Allow all cookies (`true` or `false`) - for Safari browsers only |
1583
1612
  | `CONSOLE_LOGS` | [Optional] Used to capture browser console logs. |
1584
1613
 
1614
+
1585
1615
  ### Using Browser specific Profiles in cucumber.yml
1586
1616
 
1587
1617
  While you can set **Environment Variables** in the command line when invoking Cucumber, a preferred method of specifying and managing
@@ -1722,6 +1752,8 @@ that you intend to connect with.
1722
1752
 
1723
1753
  #==============
1724
1754
  # profiles for remotely hosted web browsers on the BrowserStack service
1755
+ # WARNING: Credentials should not be stored as text in your cucumber.yml file where it can be exposed by anyone with access
1756
+ # to your version control system
1725
1757
  #==============
1726
1758
 
1727
1759
  browserstack: WEB_BROWSER=browserstack BS_USERNAME="<INSERT USER NAME HERE>" BS_AUTHKEY="<INSERT PASSWORD HERE>"
@@ -1752,6 +1784,8 @@ that you intend to connect with.
1752
1784
 
1753
1785
  #==============
1754
1786
  # profiles for remotely hosted web browsers on the SauceLabs service
1787
+ # WARNING: Credentials should not be stored as text in your cucumber.yml file where it can be exposed by anyone with access
1788
+ # to your version control system
1755
1789
  #==============
1756
1790
 
1757
1791
  saucelabs: WEB_BROWSER=saucelabs SL_USERNAME="<INSERT USER NAME HERE>" SL_AUTHKEY="<INSERT PASSWORD HERE>" DATA_CENTER="<INSERT DATA CENTER HERE"
@@ -1776,6 +1810,8 @@ that you intend to connect with.
1776
1810
 
1777
1811
  #==============
1778
1812
  # profiles for remotely hosted web browsers on the TestingBot service
1813
+ # WARNING: Credentials should not be stored as text in your cucumber.yml file where it can be exposed by anyone with access
1814
+ # to your version control system
1779
1815
  #==============
1780
1816
 
1781
1817
  testingbot: WEB_BROWSER=testingbot TB_USERNAME="<INSERT USER NAME HERE>" TB_AUTHKEY="<INSERT PASSWORD HERE>"
@@ -1795,6 +1831,8 @@ that you intend to connect with.
1795
1831
 
1796
1832
  #==============
1797
1833
  # profiles for remotely hosted web browsers on the LambdaTest service
1834
+ # WARNING: Credentials should not be stored as text in your cucumber.yml file where it can be exposed by anyone with access
1835
+ # to your version control system
1798
1836
  #==============
1799
1837
 
1800
1838
  lambdatest: WEB_BROWSER=lambdatest LT_USERNAME=<INSERT USER NAME HERE> LT_AUTHKEY=<INSERT PASSWORD HERE>
@@ -1877,7 +1915,7 @@ area sub-folders as needed. Likewise, `PageSection` class definitions should be
1877
1915
 
1878
1916
  ## Web Test Automation Framework Implementation
1879
1917
 
1880
- <img src="https://i.imgur.com/eukmEan.jpg" alt="TestCentricity Web Framework Overview" title="TestCentricity Web Framework Overview">
1918
+ <img src="https://i.imgur.com/lCT9HbK.jpg" alt="TestCentricity Web Framework Overview" title="TestCentricity Web Framework Overview">
1881
1919
 
1882
1920
 
1883
1921
 
@@ -415,4 +415,3 @@ module TestCentricity
415
415
  # :nocov:
416
416
  end
417
417
  end
418
-
@@ -1,3 +1,3 @@
1
1
  module TestCentricityWeb
2
- VERSION = '4.1.10'
2
+ VERSION = '4.2.6'
3
3
  end
@@ -9,7 +9,7 @@ module TestCentricity
9
9
  attr_accessor :locator_type
10
10
 
11
11
  XPATH_SELECTORS = ['//', '[@', '[contains(']
12
- CSS_SELECTORS = ['#', ':nth-child(', ':first-child', ':last-child', ':nth-of-type(', ':first-of-type', ':last-of-type', '^=', '$=', '*=', ':contains(']
12
+ CSS_SELECTORS = %w[# :nth-child( :first-child :last-child :nth-of-type( :first-of-type :last-of-type ^= $= *= :contains(]
13
13
 
14
14
  def set_locator_type(locator = nil)
15
15
  locator = @locator if locator.nil?
@@ -139,6 +139,16 @@ module TestCentricity
139
139
  ui_object.ready_state
140
140
  when :volume
141
141
  ui_object.volume
142
+ when :track_count
143
+ ui_object.track_count
144
+ when :active_track
145
+ ui_object.active_track
146
+ when :active_track_data
147
+ ui_object.active_track_data
148
+ when :active_track_source
149
+ ui_object.active_track_source
150
+ when :all_tracks_data
151
+ ui_object.all_tracks_data
142
152
  when :crossorigin
143
153
  ui_object.crossorigin
144
154
  when :preload
@@ -181,6 +191,8 @@ module TestCentricity
181
191
  ui_object.aria_describedby
182
192
  when :aria_live
183
193
  ui_object.aria_live
194
+ when :aria_busy
195
+ ui_object.aria_busy?
184
196
  when :aria_selected
185
197
  ui_object.aria_selected?
186
198
  when :aria_hidden
@@ -231,6 +243,30 @@ module TestCentricity
231
243
  ui_object.aria_multiselectable?
232
244
  when :content_editable
233
245
  ui_object.content_editable?
246
+ when :validation_message
247
+ ui_object.validation_message
248
+ when :badInput
249
+ ui_object.validity?(:badInput)
250
+ when :customError
251
+ ui_object.validity?(:customError)
252
+ when :patternMismatch
253
+ ui_object.validity?(:patternMismatch)
254
+ when :rangeOverflow
255
+ ui_object.validity?(:rangeOverflow)
256
+ when :rangeUnderflow
257
+ ui_object.validity?(:rangeUnderflow)
258
+ when :stepMismatch
259
+ ui_object.validity?(:stepMismatch)
260
+ when :tooLong
261
+ ui_object.validity?(:tooLong)
262
+ when :tooShort
263
+ ui_object.validity?(:tooShort)
264
+ when :typeMismatch
265
+ ui_object.validity?(:typeMismatch)
266
+ when :valid
267
+ ui_object.validity?(:valid)
268
+ when :valueMissing
269
+ ui_object.validity?(:valueMissing)
234
270
  else
235
271
  if property.is_a?(Hash)
236
272
  property.map do |key, value|
@@ -356,5 +392,6 @@ module TestCentricity
356
392
  raise "Expected element '#{expected_element.get_name}' to have focus but found '#{focused_obj[:id]} is focused instead'" unless focused_obj == expected_obj.native
357
393
 
358
394
  puts "Element '#{expected_element.get_name}' is focused as expected"
359
- end end
395
+ end
396
+ end
360
397
  end