testcentricity_web 4.1.9 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +96 -1
- data/README.md +88 -48
- data/lib/testcentricity_web/browser_helper.rb +2 -1
- data/lib/testcentricity_web/data_objects/environment.rb +0 -1
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +40 -3
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +89 -80
- data/lib/testcentricity_web/web_elements/media.rb +108 -0
- data/lib/testcentricity_web/web_elements/textfield.rb +28 -0
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +39 -1
- metadata +37 -181
- data/.gitignore +0 -39
- data/.idea/.name +0 -1
- data/.idea/encodings.xml +0 -6
- data/.idea/misc.xml +0 -4
- data/.idea/modules.xml +0 -8
- data/.idea/vcs.xml +0 -7
- data/.rspec +0 -4
- data/.rubocop.yml +0 -38
- data/.ruby-version +0 -1
- data/.simplecov +0 -9
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -6
- data/Rakefile +0 -115
- data/config/cucumber.yml +0 -171
- data/config/locales/en-US.yml +0 -56
- data/config/test_data/LOCAL_data.json +0 -15
- data/config/test_data/LOCAL_data.xls +0 -0
- data/config/test_data/LOCAL_data.yml +0 -11
- data/config/test_data/data.json +0 -25
- data/config/test_data/data.xls +0 -0
- data/config/test_data/data.yml +0 -20
- data/docker-compose.yml +0 -48
- data/features/basic_form_page_css.feature +0 -54
- data/features/basic_form_page_xpath.feature +0 -26
- data/features/custom_controls.feature +0 -29
- data/features/media_players.feature +0 -67
- data/features/step_definitions/generic_steps.rb.rb +0 -124
- data/features/step_definitions/media_steps.rb +0 -30
- data/features/support/data/form_data.rb +0 -43
- data/features/support/env.rb +0 -51
- data/features/support/hooks.rb +0 -270
- data/features/support/pages/base_test_page.rb +0 -22
- data/features/support/pages/basic_css_form_page.rb +0 -53
- data/features/support/pages/basic_form_page.rb +0 -429
- data/features/support/pages/basic_xpath_form_page.rb +0 -54
- data/features/support/pages/custom_controls_page.rb +0 -263
- data/features/support/pages/indexed_sections_page.rb +0 -57
- data/features/support/pages/media_test_page.rb +0 -207
- data/features/support/sections/header_nav.rb +0 -48
- data/features/support/sections/product_card.rb +0 -39
- data/features/support/world_data.rb +0 -12
- data/features/support/world_pages.rb +0 -18
- data/reports/.keep +0 -1
- data/spec/fixtures/page_object.rb +0 -22
- data/spec/fixtures/section_object.rb +0 -21
- data/spec/spec_helper.rb +0 -31
- data/spec/testcentricity_web/browser_spec.rb +0 -41
- data/spec/testcentricity_web/elements/audio_spec.rb +0 -68
- data/spec/testcentricity_web/elements/button_spec.rb +0 -18
- data/spec/testcentricity_web/elements/checkbox_spec.rb +0 -33
- data/spec/testcentricity_web/elements/file_field_spec.rb +0 -13
- data/spec/testcentricity_web/elements/image_spec.rb +0 -33
- data/spec/testcentricity_web/elements/label_spec.rb +0 -18
- data/spec/testcentricity_web/elements/link_spec.rb +0 -23
- data/spec/testcentricity_web/elements/list_spec.rb +0 -13
- data/spec/testcentricity_web/elements/radio_spec.rb +0 -28
- data/spec/testcentricity_web/elements/ui_element_spec.rb +0 -125
- data/spec/testcentricity_web/elements/video_spec.rb +0 -68
- data/spec/testcentricity_web/helper_specs/object_helpers_spec.rb +0 -39
- data/spec/testcentricity_web/helper_specs/string_helpers_spec.rb +0 -49
- data/spec/testcentricity_web/page_object_spec.rb +0 -90
- data/spec/testcentricity_web/section_object_spec.rb +0 -72
- data/spec/testcentricity_web/version_spec.rb +0 -7
- data/spec/testcentricity_web/webdriver_connect/grid_webdriver_spec.rb +0 -72
- data/spec/testcentricity_web/webdriver_connect/local_webdriver_spec.rb +0 -86
- data/spec/testcentricity_web/webdriver_connect/mobile_webdriver_spec.rb +0 -65
- data/test_site/basic_test_page.html +0 -290
- data/test_site/chosen-sprite.png +0 -0
- data/test_site/chosen-sprite@2x.png +0 -0
- data/test_site/chosen.css +0 -496
- data/test_site/chosen.jquery.js +0 -1359
- data/test_site/chosen.jquery.min.js +0 -3
- data/test_site/chosen.min.css +0 -11
- data/test_site/chosen.proto.js +0 -1399
- data/test_site/chosen.proto.min.js +0 -3
- data/test_site/composer.json +0 -36
- data/test_site/custom_controls_page.html +0 -629
- data/test_site/docsupport/chosen.png +0 -0
- data/test_site/docsupport/init.js +0 -11
- data/test_site/docsupport/init.proto.js +0 -16
- data/test_site/docsupport/jquery-1.12.4.min.js +0 -5
- data/test_site/docsupport/jquery-3.2.1.min.js +0 -4
- data/test_site/docsupport/oss-credit.png +0 -0
- data/test_site/docsupport/prism.css +0 -108
- data/test_site/docsupport/prism.js +0 -9
- data/test_site/docsupport/prototype-1.7.0.0.js +0 -6082
- data/test_site/docsupport/style.css +0 -219
- data/test_site/images/Blouse_Black.jpg +0 -0
- data/test_site/images/Granny.jpg +0 -0
- data/test_site/images/Printed_Dress.jpg +0 -0
- data/test_site/images/T-shirt.jpg +0 -0
- data/test_site/images/Wilder.jpg +0 -0
- data/test_site/images/You_Betcha.jpg +0 -0
- data/test_site/images/jeans3.jpg +0 -0
- data/test_site/indexed_sections_page.html +0 -215
- data/test_site/media/MIB2-subtitles-pt-BR.vtt +0 -49
- 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/bbc_scotland_report.mp3 +0 -0
- data/test_site/media/count_and_bars.mp4 +0 -0
- data/test_site/media_page.html +0 -86
- data/testcentricity_web.gemspec +0 -57
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e1f34273e6126cc792065a37bdb761e8ca0f0c597e9030b3f9f58f2846a8d5c2
|
|
4
|
+
data.tar.gz: 43a3dbfb5c94a0ff10b161e01d4087c3973ed11b61596363b455e1f82897c403
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 12b80dbd95dc924ca9b51b0ac5d7876f55642e8824b5f38e0fd19f008487a23f3a4d24418712785d93e93d1f330fbeaa03e7754c2fc8a3a9967d931cf47aab0b
|
|
7
|
+
data.tar.gz: a1bdb14f26c27829e71f0fb96c2ccb7183e5058dca09e46b0a515595611680ca6692f6c1a52f3c38cf60ba59c04f3ce720b29f8cd50be507a40119a13298d308
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,102 @@
|
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## [4.3.0] - 01-AUGUST-2022
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
* The `DRIVER` Environment Variable is now used to specify the `appium`, `browserstack`, `saucelabs`, `testingbot`,
|
|
9
|
+
or `lambdatest` driver.
|
|
10
|
+
|
|
11
|
+
* ### Changed
|
|
12
|
+
* The `WEB_BROWSER` Environment Variable is no longer used to specify the `appium`, `browserstack`, `saucelabs`, `testingbot`,
|
|
13
|
+
or `lambdatest` driver.
|
|
14
|
+
* TestCentricity now supports and integrates with Selenium-Webdriver version 4.3.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [4.2.6] - 12-JUNE-2022
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
* Fix `gemspec` to no longer include specs and cuke tests as part of deployment package for gem.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [4.2.5] - 10-JUNE-2022
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
*`WebDriverConnect.initialize_web_driver` method no longer raises `No such file or directory @ dir_s_mkdir` error due to
|
|
27
|
+
missing `Downloads` folder when running tests in parallel.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [4.2.4] - 02-JUNE-2022
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
* Added `UIElement.wait_until_enabled` method
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## [4.2.3] - 01-JUNE-2022
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
* Added `UIElement.wait_while_busy` method
|
|
40
|
+
* Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of `aria_busy` attribute.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## [4.2.2] - 21-MAY-2022
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
* Update default version of Appium used when running tests on Sauce Labs service.
|
|
47
|
+
* Refactored capabilities definition when running with locally hosted Appium instance.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## [4.2.1] - 23-APR-2022
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
* Added the following `Audio`, `Media`, and `Video` methods to support verification of media text tracks (subtitles, captions,
|
|
54
|
+
chapters, descriptions, or metadata):
|
|
55
|
+
* `track_count`
|
|
56
|
+
* `active_track`
|
|
57
|
+
* `active_track_data`
|
|
58
|
+
* `all_tracks_data`
|
|
59
|
+
* `track_data`
|
|
60
|
+
* `active_track_source`
|
|
61
|
+
* `track_source`
|
|
62
|
+
* Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of the following
|
|
63
|
+
`Media` properties:
|
|
64
|
+
* `:track_count`
|
|
65
|
+
* `:active_track`
|
|
66
|
+
* `:active_track_data`
|
|
67
|
+
* `:all_tracks_data`
|
|
68
|
+
* `:track_data`
|
|
69
|
+
* `:active_track_source`
|
|
70
|
+
* `:track_source`
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## [4.2.0] - 20-APR-2022
|
|
74
|
+
|
|
75
|
+
### Added
|
|
76
|
+
* `TextField.validation_message` and `TextField.validity?` methods added.
|
|
77
|
+
* Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of the following
|
|
78
|
+
`TextField.validity?` properties:
|
|
79
|
+
* `:badInput`
|
|
80
|
+
* `:customError`
|
|
81
|
+
* `:patternMismatch`
|
|
82
|
+
* `:rangeOverflow`
|
|
83
|
+
* `:rangeUnderflow`
|
|
84
|
+
* `:stepMismatch`
|
|
85
|
+
* `:tooLong`
|
|
86
|
+
* `:tooShort`
|
|
87
|
+
* `:typeMismatch`
|
|
88
|
+
* `:valid`
|
|
89
|
+
* `:valueMissing`
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## [4.1.10] - 19-APR-2022
|
|
93
|
+
|
|
94
|
+
### Fixed
|
|
95
|
+
* `PageObject.set_verify_focus` and `PageSection.set_verify_focus` methods now correctly return the `id` of the UI element
|
|
96
|
+
that unexpectedly has focus during an exception.
|
|
97
|
+
* Rolled back `require_all` gem version to 1.5.0 in gemspec development dependencies due to `RequireAll::LoadError` when
|
|
98
|
+
running gem test specs and features.
|
|
99
|
+
|
|
100
|
+
|
|
5
101
|
## [4.1.9] - 18-APR-2022
|
|
6
102
|
|
|
7
103
|
### Fixed
|
|
@@ -10,7 +106,6 @@ All notable changes to this project will be documented in this file.
|
|
|
10
106
|
radio buttons to the unchecked state.
|
|
11
107
|
|
|
12
108
|
### Added
|
|
13
|
-
|
|
14
109
|
* `CheckBox.define_custom_elements` and `Radio.define_custom_elements` methods now support specifying a child `input` component
|
|
15
110
|
contained by a top level `label` element.
|
|
16
111
|
|
data/README.md
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
# TestCentricity™ Web
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/testcentricity_web) [](http://opensource.org/licenses/BSD-3-Clause)
|
|
4
|
+
 
|
|
4
5
|
|
|
5
6
|
|
|
6
|
-
The TestCentricity™ Web core
|
|
7
|
-
|
|
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.37), and Selenium-Webdriver (version 4.3). 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
|
|
15
|
-
* mobile Chrome or Android browsers on Android Studio virtual device emulators (using Appium and Android Studio on
|
|
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)
|
|
@@ -27,13 +28,16 @@ The TestCentricity™ Web gem supports running automated tests against the follo
|
|
|
27
28
|
|
|
28
29
|
A complete history of bug fixes and new features can be found in the {file:CHANGELOG.md CHANGELOG} file.
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
The RubyDocs for this gem can be found [here](https://www.rubydoc.info/gems/testcentricity_web).
|
|
32
|
+
|
|
33
|
+
An example project that demonstrates the implementation of a page object model framework using Cucumber and TestCentricity™ Web
|
|
31
34
|
can be found [here](https://github.com/TestCentricity/tc_web_sample).
|
|
32
35
|
|
|
33
36
|
|
|
34
37
|
## Installation
|
|
35
38
|
|
|
36
|
-
TestCentricity version 4.1 and above requires Ruby 2.7 or later. To install the TestCentricity gem, add this line to your
|
|
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:
|
|
37
41
|
|
|
38
42
|
gem 'testcentricity_web'
|
|
39
43
|
|
|
@@ -57,7 +61,7 @@ If you are using Cucumber, you need to require the following in your `env.rb` fi
|
|
|
57
61
|
|
|
58
62
|
### Using RSpec
|
|
59
63
|
|
|
60
|
-
If you are using RSpec instead, you need to require the following in your `
|
|
64
|
+
If you are using RSpec instead, you need to require the following in your `spec_helper.rb` file:
|
|
61
65
|
|
|
62
66
|
require 'capybara'
|
|
63
67
|
require 'capybara/rspec'
|
|
@@ -67,7 +71,7 @@ If you are using RSpec instead, you need to require the following in your `env.r
|
|
|
67
71
|
### Using Appium
|
|
68
72
|
|
|
69
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
|
|
70
|
-
the following in your `env.rb` file:
|
|
74
|
+
the following in your `env.rb` and/or `spec_helper.rb` file:
|
|
71
75
|
|
|
72
76
|
require 'appium_capybara'
|
|
73
77
|
|
|
@@ -116,22 +120,22 @@ Web pages typically have names and URLs associated with them. Web pages also typ
|
|
|
116
120
|
indicates that the page's contents have fully loaded.
|
|
117
121
|
|
|
118
122
|
The `page_name` trait is registered with the `PageManager` object, which includes a `find_page` method that takes a page name as a
|
|
119
|
-
parameter and returns an instance of the associated `
|
|
123
|
+
parameter and returns an instance of the associated `PageObject`. If you intend to use the `PageManager`, you must define a `page_name`
|
|
120
124
|
trait for each `PageObject` to be registered.
|
|
121
125
|
|
|
122
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.
|
|
123
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
|
|
124
128
|
an `Array` of `String` values representing those page names.
|
|
125
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
|
+
|
|
126
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
|
|
127
135
|
when calling the `WebDriverConnect.initialize_web_driver` method, then your `page_url` trait can be the relative URL slug that will
|
|
128
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
|
|
129
137
|
via a URL.
|
|
130
138
|
|
|
131
|
-
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
|
|
132
|
-
`page_locator` trait is a CSS or Xpath expression that uniquely identifies the object or attribute. The `verify_page_exists` method waits
|
|
133
|
-
for the `page_locator` trait to exist.
|
|
134
|
-
|
|
135
139
|
You define your page's **Traits** as shown below:
|
|
136
140
|
|
|
137
141
|
class LoginPage < TestCentricity::PageObject
|
|
@@ -385,8 +389,7 @@ You add a `PageSection` to its associated `PageObject` as shown below:
|
|
|
385
389
|
Once your `PageObject` has been instantiated, you can call its `PageSection` methods as shown below:
|
|
386
390
|
|
|
387
391
|
home_page.search_form.search_for('ocarina')
|
|
388
|
-
|
|
389
|
-
|
|
392
|
+
|
|
390
393
|
|
|
391
394
|
## UIElements
|
|
392
395
|
|
|
@@ -400,9 +403,9 @@ all UI elements are based on the `UIElement` class.
|
|
|
400
403
|
|
|
401
404
|
Single `UIElement` declarations have the following format:
|
|
402
405
|
|
|
403
|
-
elementType :
|
|
406
|
+
elementType :elementName, locator
|
|
404
407
|
|
|
405
|
-
* The `
|
|
408
|
+
* The `elementName` is the unique name that you will use to refer to the UI element and is specified as a `Symbol`.
|
|
406
409
|
* The `locator` is the CSS or XPath attribute that uniquely and unambiguously identifies the `UIElement`.
|
|
407
410
|
|
|
408
411
|
Multiple `UIElement` declarations for a collection of elements of the same type can be performed by passing a hash table containing the
|
|
@@ -473,8 +476,8 @@ Supported `UIElement` elementTypes and their declarations have the following for
|
|
|
473
476
|
|
|
474
477
|
|
|
475
478
|
Refer to the Class List documentation for the `PageObject` and `PageSection` classes for details on the class methods used for declaring
|
|
476
|
-
and instantiating `UIElements`. Examples of UI element declarations can be found in the ***Adding UI Elements to your
|
|
477
|
-
***Adding UI Elements to your PageSection
|
|
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.
|
|
478
481
|
|
|
479
482
|
|
|
480
483
|
### UIElement Inherited Methods
|
|
@@ -524,8 +527,10 @@ With TestCentricity, all UI elements are based on the `UIElement` class, and inh
|
|
|
524
527
|
element.wait_until_gone(seconds)
|
|
525
528
|
element.wait_until_visible(seconds)
|
|
526
529
|
element.wait_until_hidden(seconds)
|
|
530
|
+
element.wait_until_enabled(seconds)
|
|
527
531
|
element.wait_until_value_is(value, seconds)
|
|
528
532
|
element.wait_until_value_changes(seconds)
|
|
533
|
+
element.wait_while_busy(seconds)
|
|
529
534
|
|
|
530
535
|
**WAI-ARIA Object Accessibility (A11y) methods:**
|
|
531
536
|
|
|
@@ -579,7 +584,7 @@ of a hex color `String`. For `section` objects, data values must be a `String`,
|
|
|
579
584
|
The `populate_data_fields` method verifies that data attributes associated with each `UIElement` is not `nil` or `empty` before attempting to
|
|
580
585
|
enter data into the `UIElement`.
|
|
581
586
|
|
|
582
|
-
The optional `wait_time` parameter is used to specify the time (in seconds) to wait for each `UIElement` to become
|
|
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
|
|
583
588
|
(the `UIElement` must be visible and enabled) before entering the associated data value. This option is useful in situations where entering data,
|
|
584
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
|
|
585
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.
|
|
@@ -657,6 +662,21 @@ The `verify_ui_states` method supports the following property/state pairs:
|
|
|
657
662
|
:max Integer
|
|
658
663
|
:step Integer
|
|
659
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
|
+
|
|
660
680
|
**Checkboxes:**
|
|
661
681
|
|
|
662
682
|
:checked Boolean
|
|
@@ -720,6 +740,13 @@ The `verify_ui_states` method supports the following property/state pairs:
|
|
|
720
740
|
:volume Float
|
|
721
741
|
:preload String
|
|
722
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
|
|
723
750
|
|
|
724
751
|
#### ARIA accessibility property/state pairs
|
|
725
752
|
|
|
@@ -738,6 +765,7 @@ The `verify_ui_states` method supports the following ARIA accessibility property
|
|
|
738
765
|
:aria_checked Boolean
|
|
739
766
|
:aria_readonly Boolean
|
|
740
767
|
:aria_pressed Boolean
|
|
768
|
+
:aria_busy Boolean
|
|
741
769
|
:aria_haspopup Boolean
|
|
742
770
|
:aria_sort String
|
|
743
771
|
:aria_rowcount String
|
|
@@ -1020,7 +1048,7 @@ cumbersome to manage if your web application has dozens of `PageObjects` that ne
|
|
|
1020
1048
|
### Using the PageManager
|
|
1021
1049
|
|
|
1022
1050
|
The `PageManager` class provides methods for supporting the instantiation and management of `PageObjects`. In the code example below,
|
|
1023
|
-
the `page_objects` method contains a hash table of your `PageObject` instances and their associated `PageObject`
|
|
1051
|
+
the `page_objects` method contains a hash table of your `PageObject` instances and their associated `PageObject` classes to be
|
|
1024
1052
|
instantiated by `PageManager`:
|
|
1025
1053
|
|
|
1026
1054
|
module WorldPages
|
|
@@ -1159,24 +1187,24 @@ The `TestCentricity::WebDriverConnect.initialize_web_driver` method configures t
|
|
|
1159
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.
|
|
1160
1188
|
|
|
1161
1189
|
The `TestCentricity::WebDriverConnect.initialize_web_driver` method accepts a single optional parameter - the base host URL. Cucumber
|
|
1162
|
-
**Environment Variables** are used to specify the target local or remote web browser, and the various webdriver capability parameters required
|
|
1163
|
-
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.
|
|
1164
1192
|
|
|
1165
1193
|
|
|
1166
1194
|
### Locally hosted desktop web browser
|
|
1167
1195
|
|
|
1168
|
-
For locally hosted desktop web browsers running on macOS
|
|
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
|
|
1169
1197
|
values from the table below:
|
|
1170
1198
|
|
|
1171
1199
|
| `WEB_BROWSER` | **Desktop Platform** |
|
|
1172
1200
|
|--------------------|------------------------------------------------|
|
|
1173
|
-
| `chrome` |
|
|
1174
|
-
| `chrome_headless` |
|
|
1175
|
-
| `firefox` |
|
|
1176
|
-
| `firefox_headless` |
|
|
1177
|
-
| `edge` |
|
|
1178
|
-
| `edge_headless` |
|
|
1179
|
-
| `safari` |
|
|
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 |
|
|
1180
1208
|
| `ie` | Windows only (IE version 10.x or greater only) |
|
|
1181
1209
|
|
|
1182
1210
|
Refer to **section 8.6 (Using Browser specific Profiles in cucumber.yml)** below.
|
|
@@ -1234,7 +1262,7 @@ A detailed list of file MIME types can be found [here](https://www.freeformatter
|
|
|
1234
1262
|
|
|
1235
1263
|
### Locally hosted emulated mobile web browser
|
|
1236
1264
|
|
|
1237
|
-
You can run your tests against mobile device browsers that are emulated within a locally hosted instance of a Chrome desktop browser on
|
|
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
|
|
1238
1266
|
Windows. The specified mobile browser's user agent, CSS screen dimensions, and default screen orientation will be automatically set within the
|
|
1239
1267
|
local Chrome browser instance. You may even specify the emulated device's screen orientation. For locally hosted emulated mobile web browsers,
|
|
1240
1268
|
the `WEB_BROWSER` Environment Variable must be set to one of the values from the table below:
|
|
@@ -1345,7 +1373,7 @@ Refer to **section 8.6 (Using Browser specific Profiles in cucumber.yml)** below
|
|
|
1345
1373
|
#### Mobile Safari browser on iOS Simulators or iOS Physical Devices
|
|
1346
1374
|
|
|
1347
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
|
|
1348
|
-
|
|
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
|
|
1349
1377
|
installed and required as described in **section 3.3 (Setup - Using Appium)** above.
|
|
1350
1378
|
|
|
1351
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).
|
|
@@ -1355,7 +1383,7 @@ Once your test environment is properly configured, the following **Environment V
|
|
|
1355
1383
|
|
|
1356
1384
|
| **Environment Variable** | **Description** |
|
|
1357
1385
|
|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
1358
|
-
| `
|
|
1386
|
+
| `DRIVER` | Must be set to `appium` |
|
|
1359
1387
|
| `APP_PLATFORM_NAME` | Must be set to `iOS` |
|
|
1360
1388
|
| `APP_BROWSER` | Must be set to `Safari` |
|
|
1361
1389
|
| `APP_VERSION` | Must be set to `15.4`, `14.5`, or which ever iOS version you wish to run within the XCode Simulator |
|
|
@@ -1386,7 +1414,7 @@ Refer to **section 8.6 (Using Browser specific Profiles in cucumber.yml)** below
|
|
|
1386
1414
|
|
|
1387
1415
|
#### Mobile Chrome or Android browsers on Android Studio Virtual Device emulators
|
|
1388
1416
|
|
|
1389
|
-
You can run your mobile web tests against the mobile Chrome or Android browser on emulated Android devices using Appium and Android Studio on
|
|
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
|
|
1390
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)
|
|
1391
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
|
|
1392
1420
|
described in **section 3.3 (Setup - Using Appium)** above.
|
|
@@ -1398,7 +1426,7 @@ Once your test environment is properly configured, the following **Environment V
|
|
|
1398
1426
|
|
|
1399
1427
|
| **Environment Variable** | **Description** |
|
|
1400
1428
|
|---------------------------|--------------------------------------------------------------------------------------------------------------------------------|
|
|
1401
|
-
| `
|
|
1429
|
+
| `DRIVER` | Must be set to `appium` |
|
|
1402
1430
|
| `APP_PLATFORM_NAME` | Must be set to `Android` |
|
|
1403
1431
|
| `APP_BROWSER` | Must be set to `Chrome` or `Browser` |
|
|
1404
1432
|
| `APP_VERSION` | Must be set to `12.0`, or which ever Android OS version you wish to run with the Android Virtual Device |
|
|
@@ -1471,7 +1499,7 @@ for information regarding the specific capabilities.
|
|
|
1471
1499
|
|
|
1472
1500
|
| **Environment Variable** | **Description** |
|
|
1473
1501
|
|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
1474
|
-
| `
|
|
1502
|
+
| `DRIVER` | Must be set to `browserstack` |
|
|
1475
1503
|
| `BS_USERNAME` | Must be set to your BrowserStack account user name |
|
|
1476
1504
|
| `BS_AUTHKEY` | Must be set to your BrowserStack account access key |
|
|
1477
1505
|
| `BS_OS` | Must be set to `OS X` or `Windows` |
|
|
@@ -1505,7 +1533,7 @@ for information regarding the specific capabilities.
|
|
|
1505
1533
|
|
|
1506
1534
|
| **Environment Variable** | **Description** |
|
|
1507
1535
|
|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
1508
|
-
| `
|
|
1536
|
+
| `DRIVER` | Must be set to `browserstack` |
|
|
1509
1537
|
| `BS_USERNAME` | Must be set to your BrowserStack account user name |
|
|
1510
1538
|
| `BS_AUTHKEY` | Must be set to your BrowserStack account access key |
|
|
1511
1539
|
| `BS_OS` | Must be set to `ios` or `android` |
|
|
@@ -1522,6 +1550,7 @@ for information regarding the specific capabilities.
|
|
|
1522
1550
|
| `NETWORK_LOGS` | [Optional] Capture network logs (`true` or `false`) |
|
|
1523
1551
|
| `APPIUM_LOGS` | [Optional] Generate Appium logs (`true` or `false`) |
|
|
1524
1552
|
|
|
1553
|
+
|
|
1525
1554
|
#### Remote desktop browsers on the Sauce Labs service
|
|
1526
1555
|
|
|
1527
1556
|
For remotely hosted desktop web browsers on the Sauce Labs service, the following **Environment Variables** must be set as described in the
|
|
@@ -1530,7 +1559,7 @@ to obtain information regarding the specific capabilities.
|
|
|
1530
1559
|
|
|
1531
1560
|
| **Environment Variable** | **Description** |
|
|
1532
1561
|
|--------------------------|----------------------------------------------------------------------------------------------------------------------------|
|
|
1533
|
-
| `
|
|
1562
|
+
| `DRIVER` | Must be set to `saucelabs` |
|
|
1534
1563
|
| `SL_USERNAME` | Must be set to your Sauce Labs account user name or email address |
|
|
1535
1564
|
| `SL_AUTHKEY` | Must be set to your Sauce Labs account access key |
|
|
1536
1565
|
| `DATA_CENTER` | Must be set to your Sauce Labs account Data Center assignment (`us-west-1`, `eu-central-1`, `apac-southeast-1`) |
|
|
@@ -1541,6 +1570,7 @@ to obtain information regarding the specific capabilities.
|
|
|
1541
1570
|
| `BROWSER_SIZE ` | [Optional] Specify width, height of browser window |
|
|
1542
1571
|
| `RECORD_VIDEO` | [Optional] Enable screen video recording during test execution (`true` or `false`) |
|
|
1543
1572
|
|
|
1573
|
+
|
|
1544
1574
|
#### Remote desktop browsers on the TestingBot service
|
|
1545
1575
|
|
|
1546
1576
|
For remotely hosted desktop web browsers on the TestingBot service, the following **Environment Variables** must be set as described in
|
|
@@ -1549,7 +1579,7 @@ regarding the specific capabilities.
|
|
|
1549
1579
|
|
|
1550
1580
|
| **Environment Variable** | **Description** |
|
|
1551
1581
|
|--------------------------|-------------------------------------------------------------------------------------------------------------------|
|
|
1552
|
-
| `
|
|
1582
|
+
| `DRIVER` | Must be set to `testingbot` |
|
|
1553
1583
|
| `TB_USERNAME` | Must be set to your TestingBot account user name |
|
|
1554
1584
|
| `TB_AUTHKEY` | Must be set to your TestingBot account access key |
|
|
1555
1585
|
| `TB_OS` | Refer to `platform` capability in chart |
|
|
@@ -1559,6 +1589,7 @@ regarding the specific capabilities.
|
|
|
1559
1589
|
| `RESOLUTION` | [Optional] Possible values: `800x600`, `1024x768`, `1280x960`, `1280x1024`, `1600x1200`, `1920x1200`, `2560x1440` |
|
|
1560
1590
|
| `BROWSER_SIZE` | [Optional] Specify width, height of browser window |
|
|
1561
1591
|
|
|
1592
|
+
|
|
1562
1593
|
#### Remote desktop browsers on the LambdaTest service
|
|
1563
1594
|
|
|
1564
1595
|
For remotely hosted desktop web browsers on the LambdaTest service, the following **Environment Variables** must be set as described in the table
|
|
@@ -1567,7 +1598,7 @@ to obtain information regarding the specific capabilities.
|
|
|
1567
1598
|
|
|
1568
1599
|
| **Environment Variable** | **Description** |
|
|
1569
1600
|
|--------------------------|------------------------------------------------------------------------------------------|
|
|
1570
|
-
| `
|
|
1601
|
+
| `DRIVER` | Must be set to `lambdatest` |
|
|
1571
1602
|
| `LT_USERNAME` | Must be set to your LambdaTest account user name or email address |
|
|
1572
1603
|
| `LT_AUTHKEY` | Must be set to your LambdaTest account access key |
|
|
1573
1604
|
| `LT_OS` | Refer to `platformName` capability in the sample script of the Wizard |
|
|
@@ -1580,6 +1611,7 @@ to obtain information regarding the specific capabilities.
|
|
|
1580
1611
|
| `ALLOW_COOKIES` | [Optional] Allow all cookies (`true` or `false`) - for Safari browsers only |
|
|
1581
1612
|
| `CONSOLE_LOGS` | [Optional] Used to capture browser console logs. |
|
|
1582
1613
|
|
|
1614
|
+
|
|
1583
1615
|
### Using Browser specific Profiles in cucumber.yml
|
|
1584
1616
|
|
|
1585
1617
|
While you can set **Environment Variables** in the command line when invoking Cucumber, a preferred method of specifying and managing
|
|
@@ -1692,7 +1724,7 @@ that you intend to connect with.
|
|
|
1692
1724
|
# NOTE: Requires installation of XCode, iOS version specific target simulators, Appium, and the appium_capybara gem
|
|
1693
1725
|
#==============
|
|
1694
1726
|
|
|
1695
|
-
appium_ios:
|
|
1727
|
+
appium_ios: DRIVER=appium AUTOMATION_ENGINE=XCUITest APP_PLATFORM_NAME="ios" APP_BROWSER="Safari" NEW_COMMAND_TIMEOUT=30 SHOW_SIM_KEYBOARD=false
|
|
1696
1728
|
app_ios_15: --profile appium_ios APP_VERSION="15.4"
|
|
1697
1729
|
ipad_pro_12_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Pro (12.9-inch) (5th generation)"
|
|
1698
1730
|
ipad_air_15_sim: --profile app_ios_15 DEVICE_TYPE=tablet APP_DEVICE="iPad Air (5th generation)" <%= desktop %>
|
|
@@ -1713,16 +1745,18 @@ that you intend to connect with.
|
|
|
1713
1745
|
# NOTE: Requires installation of Android Studio, Android version specific virtual device simulators, Appium, and the appium_capybara gem
|
|
1714
1746
|
#==============
|
|
1715
1747
|
|
|
1716
|
-
appium_android:
|
|
1748
|
+
appium_android: DRIVER=appium APP_PLATFORM_NAME="Android" <%= mobile %>
|
|
1717
1749
|
app_android_12: --profile appium_android APP_BROWSER="Chrome" APP_VERSION="12.0"
|
|
1718
1750
|
pixel_c_api31_sim: --profile app_android_12 DEVICE_TYPE=tablet APP_DEVICE="Pixel_C_API_31"
|
|
1719
1751
|
|
|
1720
1752
|
|
|
1721
1753
|
#==============
|
|
1722
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
|
|
1723
1757
|
#==============
|
|
1724
1758
|
|
|
1725
|
-
browserstack:
|
|
1759
|
+
browserstack: DRIVER=browserstack BS_USERNAME="<INSERT USER NAME HERE>" BS_AUTHKEY="<INSERT PASSWORD HERE>"
|
|
1726
1760
|
bs_desktop: --profile browserstack <%= desktop %> RESOLUTION="1920x1080"
|
|
1727
1761
|
bs_mobile: --profile browserstack <%= mobile %>
|
|
1728
1762
|
|
|
@@ -1750,9 +1784,11 @@ that you intend to connect with.
|
|
|
1750
1784
|
|
|
1751
1785
|
#==============
|
|
1752
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
|
|
1753
1789
|
#==============
|
|
1754
1790
|
|
|
1755
|
-
saucelabs:
|
|
1791
|
+
saucelabs: DRIVER=saucelabs SL_USERNAME="<INSERT USER NAME HERE>" SL_AUTHKEY="<INSERT PASSWORD HERE>" DATA_CENTER="<INSERT DATA CENTER HERE"
|
|
1756
1792
|
sl_desktop: --profile saucelabs <%= desktop %>
|
|
1757
1793
|
sl_mobile: --profile saucelabs <%= mobile %>
|
|
1758
1794
|
|
|
@@ -1774,9 +1810,11 @@ that you intend to connect with.
|
|
|
1774
1810
|
|
|
1775
1811
|
#==============
|
|
1776
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
|
|
1777
1815
|
#==============
|
|
1778
1816
|
|
|
1779
|
-
testingbot:
|
|
1817
|
+
testingbot: DRIVER=testingbot TB_USERNAME="<INSERT USER NAME HERE>" TB_AUTHKEY="<INSERT PASSWORD HERE>"
|
|
1780
1818
|
tb_desktop: --profile testingbot <%= desktop %> RESOLUTION="1920x1200"
|
|
1781
1819
|
|
|
1782
1820
|
# TestingBot macOS desktop browser profiles
|
|
@@ -1793,9 +1831,11 @@ that you intend to connect with.
|
|
|
1793
1831
|
|
|
1794
1832
|
#==============
|
|
1795
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
|
|
1796
1836
|
#==============
|
|
1797
1837
|
|
|
1798
|
-
lambdatest:
|
|
1838
|
+
lambdatest: DRIVER=lambdatest LT_USERNAME=<INSERT USER NAME HERE> LT_AUTHKEY=<INSERT PASSWORD HERE>
|
|
1799
1839
|
lt_desktop: --profile lambdatest <%= desktop %> RESOLUTION="2560x1440"
|
|
1800
1840
|
|
|
1801
1841
|
# LambdaTest macOS desktop browser profiles
|
|
@@ -1875,7 +1915,7 @@ area sub-folders as needed. Likewise, `PageSection` class definitions should be
|
|
|
1875
1915
|
|
|
1876
1916
|
## Web Test Automation Framework Implementation
|
|
1877
1917
|
|
|
1878
|
-
<img src="https://i.imgur.com/
|
|
1918
|
+
<img src="https://i.imgur.com/lCT9HbK.jpg" alt="TestCentricity Web Framework Overview" title="TestCentricity Web Framework Overview">
|
|
1879
1919
|
|
|
1880
1920
|
|
|
1881
1921
|
|
|
@@ -173,7 +173,8 @@ module TestCentricity
|
|
|
173
173
|
@devices = @devices.merge(ext_devices)
|
|
174
174
|
end
|
|
175
175
|
end
|
|
176
|
-
|
|
176
|
+
device = device.gsub(/\s+/, '').downcase.to_sym if device.is_a?(String)
|
|
177
|
+
@devices[device]
|
|
177
178
|
end
|
|
178
179
|
end
|
|
179
180
|
end
|
|
@@ -9,7 +9,7 @@ module TestCentricity
|
|
|
9
9
|
attr_accessor :locator_type
|
|
10
10
|
|
|
11
11
|
XPATH_SELECTORS = ['//', '[@', '[contains(']
|
|
12
|
-
CSS_SELECTORS = [
|
|
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|
|
|
@@ -353,8 +389,9 @@ module TestCentricity
|
|
|
353
389
|
sleep(0.5)
|
|
354
390
|
focused_obj = page.driver.browser.switch_to.active_element
|
|
355
391
|
expected_obj, = expected_element.find_element(visible = :all)
|
|
356
|
-
raise "Expected element '#{expected_element.get_name}' to have focus but found '#{focused_obj
|
|
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
|
-
|
|
395
|
+
end
|
|
396
|
+
end
|
|
360
397
|
end
|