watir 7.2.0 → 7.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/.github/workflows/chrome.yml +9 -1
- data/.github/workflows/edge.yml +10 -2
- data/.github/workflows/firefox.yml +10 -2
- data/.github/workflows/ie.yml +1 -1
- data/.github/workflows/safari.yml +1 -1
- data/.github/workflows/unit.yml +3 -3
- data/.rubocop.yml +36 -14
- data/.rubocop_todo.yml +8 -1
- data/CHANGES.md +17 -1
- data/LICENSE +2 -2
- data/lib/watir/capabilities.rb +2 -12
- data/lib/watir/cookies.rb +7 -2
- data/lib/watir/elements/date_field.rb +2 -2
- data/lib/watir/elements/date_time_field.rb +2 -2
- data/lib/watir/elements/select.rb +3 -3
- data/lib/watir/locators/anchor/selector_builder.rb +3 -0
- data/lib/watir/locators/element/matcher.rb +2 -1
- data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
- data/lib/watir/locators/element/selector_builder.rb +1 -1
- data/lib/watir/locators/text_field/matcher.rb +1 -5
- data/lib/watir/version.rb +1 -1
- data/lib/watir.rb +1 -0
- data/lib/watirspec/implementation.rb +1 -1
- data/lib/watirspec.rb +1 -1
- data/spec/locator_spec_helper.rb +3 -15
- data/spec/unit/capabilities_spec.rb +552 -561
- data/spec/unit/element_locator_spec.rb +89 -78
- data/spec/unit/match_elements/button_spec.rb +69 -62
- data/spec/unit/match_elements/element_spec.rb +303 -309
- data/spec/unit/match_elements/text_field_spec.rb +76 -73
- data/spec/unit/selector_builder/anchor_spec.rb +39 -33
- data/spec/unit/selector_builder/button_spec.rb +209 -202
- data/spec/unit/selector_builder/cell_spec.rb +48 -42
- data/spec/unit/selector_builder/element_spec.rb +632 -627
- data/spec/unit/selector_builder/row_spec.rb +119 -113
- data/spec/unit/selector_builder/text_field_spec.rb +195 -188
- data/spec/unit/selector_builder/textarea_spec.rb +22 -14
- data/spec/unit/wait_spec.rb +85 -81
- data/spec/watirspec/adjacent_spec.rb +249 -247
- data/spec/watirspec/after_hooks_spec.rb +161 -159
- data/spec/watirspec/alert_spec.rb +61 -58
- data/spec/watirspec/browser_spec.rb +411 -409
- data/spec/watirspec/capabilities_spec.rb +99 -112
- data/spec/watirspec/cookies_spec.rb +144 -115
- data/spec/watirspec/drag_and_drop_spec.rb +26 -24
- data/spec/watirspec/element_hidden_spec.rb +66 -60
- data/spec/watirspec/elements/area_spec.rb +49 -47
- data/spec/watirspec/elements/areas_spec.rb +27 -25
- data/spec/watirspec/elements/button_spec.rb +253 -251
- data/spec/watirspec/elements/buttons_spec.rb +36 -34
- data/spec/watirspec/elements/checkbox_spec.rb +48 -36
- data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
- data/spec/watirspec/elements/collections_spec.rb +126 -119
- data/spec/watirspec/elements/date_field_spec.rb +202 -183
- data/spec/watirspec/elements/date_fields_spec.rb +29 -27
- data/spec/watirspec/elements/date_time_field_spec.rb +216 -195
- data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
- data/spec/watirspec/elements/dd_spec.rb +87 -85
- data/spec/watirspec/elements/dds_spec.rb +27 -25
- data/spec/watirspec/elements/del_spec.rb +106 -104
- data/spec/watirspec/elements/dels_spec.rb +26 -24
- data/spec/watirspec/elements/div_spec.rb +225 -221
- data/spec/watirspec/elements/divs_spec.rb +37 -35
- data/spec/watirspec/elements/dl_spec.rb +110 -108
- data/spec/watirspec/elements/dls_spec.rb +28 -26
- data/spec/watirspec/elements/dt_spec.rb +86 -84
- data/spec/watirspec/elements/dts_spec.rb +27 -25
- data/spec/watirspec/elements/element_spec.rb +794 -775
- data/spec/watirspec/elements/elements_spec.rb +40 -38
- data/spec/watirspec/elements/em_spec.rb +62 -60
- data/spec/watirspec/elements/ems_spec.rb +28 -26
- data/spec/watirspec/elements/filefield_spec.rb +116 -114
- data/spec/watirspec/elements/filefields_spec.rb +28 -26
- data/spec/watirspec/elements/font_spec.rb +20 -18
- data/spec/watirspec/elements/form_spec.rb +51 -49
- data/spec/watirspec/elements/forms_spec.rb +29 -27
- data/spec/watirspec/elements/frame_spec.rb +89 -87
- data/spec/watirspec/elements/frames_spec.rb +27 -25
- data/spec/watirspec/elements/hidden_spec.rb +81 -79
- data/spec/watirspec/elements/hiddens_spec.rb +28 -26
- data/spec/watirspec/elements/hn_spec.rb +59 -57
- data/spec/watirspec/elements/hns_spec.rb +26 -24
- data/spec/watirspec/elements/iframe_spec.rb +195 -191
- data/spec/watirspec/elements/iframes_spec.rb +31 -29
- data/spec/watirspec/elements/image_spec.rb +148 -146
- data/spec/watirspec/elements/images_spec.rb +26 -24
- data/spec/watirspec/elements/input_spec.rb +9 -7
- data/spec/watirspec/elements/ins_spec.rb +106 -104
- data/spec/watirspec/elements/inses_spec.rb +26 -24
- data/spec/watirspec/elements/label_spec.rb +56 -54
- data/spec/watirspec/elements/labels_spec.rb +26 -24
- data/spec/watirspec/elements/li_spec.rb +76 -74
- data/spec/watirspec/elements/link_spec.rb +173 -177
- data/spec/watirspec/elements/links_spec.rb +45 -43
- data/spec/watirspec/elements/lis_spec.rb +27 -25
- data/spec/watirspec/elements/list_spec.rb +44 -42
- data/spec/watirspec/elements/map_spec.rb +57 -55
- data/spec/watirspec/elements/maps_spec.rb +27 -25
- data/spec/watirspec/elements/meta_spec.rb +16 -14
- data/spec/watirspec/elements/metas_spec.rb +26 -24
- data/spec/watirspec/elements/ol_spec.rb +56 -65
- data/spec/watirspec/elements/ols_spec.rb +26 -24
- data/spec/watirspec/elements/option_spec.rb +91 -89
- data/spec/watirspec/elements/p_spec.rb +81 -79
- data/spec/watirspec/elements/pre_spec.rb +77 -75
- data/spec/watirspec/elements/pres_spec.rb +26 -24
- data/spec/watirspec/elements/ps_spec.rb +26 -24
- data/spec/watirspec/elements/radio_spec.rb +251 -249
- data/spec/watirspec/elements/radios_spec.rb +28 -26
- data/spec/watirspec/elements/select_list_spec.rb +537 -526
- data/spec/watirspec/elements/select_lists_spec.rb +32 -30
- data/spec/watirspec/elements/span_spec.rb +112 -110
- data/spec/watirspec/elements/spans_spec.rb +26 -24
- data/spec/watirspec/elements/strong_spec.rb +58 -58
- data/spec/watirspec/elements/strongs_spec.rb +28 -26
- data/spec/watirspec/elements/table_spec.rb +192 -139
- data/spec/watirspec/elements/tables_spec.rb +28 -26
- data/spec/watirspec/elements/tbody_spec.rb +74 -72
- data/spec/watirspec/elements/tbodys_spec.rb +40 -38
- data/spec/watirspec/elements/td_spec.rb +66 -64
- data/spec/watirspec/elements/tds_spec.rb +41 -39
- data/spec/watirspec/elements/text_field_spec.rb +206 -204
- data/spec/watirspec/elements/text_fields_spec.rb +30 -28
- data/spec/watirspec/elements/textarea_spec.rb +20 -18
- data/spec/watirspec/elements/textareas_spec.rb +18 -16
- data/spec/watirspec/elements/tfoot_spec.rb +65 -63
- data/spec/watirspec/elements/tfoots_spec.rb +42 -40
- data/spec/watirspec/elements/thead_spec.rb +65 -63
- data/spec/watirspec/elements/theads_spec.rb +42 -40
- data/spec/watirspec/elements/tr_spec.rb +48 -46
- data/spec/watirspec/elements/trs_spec.rb +42 -40
- data/spec/watirspec/elements/ul_spec.rb +56 -54
- data/spec/watirspec/elements/uls_spec.rb +26 -24
- data/spec/watirspec/radio_set_spec.rb +269 -267
- data/spec/watirspec/screenshot_spec.rb +20 -18
- data/spec/watirspec/scroll_spec.rb +152 -148
- data/spec/watirspec/shadow_root_spec.rb +88 -83
- data/spec/watirspec/support/rspec_matchers.rb +34 -25
- data/spec/watirspec/user_editable_spec.rb +200 -198
- data/spec/watirspec/wait_spec.rb +289 -295
- data/spec/watirspec/window_switching_spec.rb +423 -434
- data/spec/watirspec_helper.rb +1 -23
- data/watir.gemspec +6 -5
- metadata +47 -37
- data/spec/watirspec/attributes_spec.rb +0 -18
- data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
- data/spec/watirspec/special_chars_spec.rb +0 -23
- data/support/travis.sh +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a0bd050e4d97703802051446eb12d01751b5e63a10fe70353f0f955ac2bb9424
|
|
4
|
+
data.tar.gz: e573957fe4cd87d311af62b9a77ec8c6383f65f1e4ead17e5f117c40f31f87f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9409ddc8d5914e07ce3f8ef316be713d09bdbea6d130dc1bdf6be693930825b25baefd9dc200f5386a1a53955b2bbef7f48375e911897db2db33be4a337b85f3
|
|
7
|
+
data.tar.gz: fe6668eae425bc81e1a396dd81f41196d72d217eedca95a752e20c038fa43e55c87a951620ae37fc834517cbadf4b7e42b360b86adcdbba0798f929caf2ec866
|
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
fail-fast: false
|
|
14
14
|
matrix:
|
|
15
15
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
16
|
-
ruby: [
|
|
16
|
+
ruby: [ 3.0, 3.2 ]
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout source tree
|
|
19
19
|
uses: actions/checkout@v2
|
|
@@ -41,6 +41,14 @@ jobs:
|
|
|
41
41
|
ruby-version: ${{ matrix.ruby }}
|
|
42
42
|
- name: Install gems
|
|
43
43
|
run: bundle install
|
|
44
|
+
- name: Remove driver directories Windows
|
|
45
|
+
if: matrix.os == 'windows-latest'
|
|
46
|
+
run: |
|
|
47
|
+
rm "$env:ChromeWebDriver" -r -v
|
|
48
|
+
- name: Remove driver directories Non-Windows
|
|
49
|
+
if: matrix.os != 'windows-latest'
|
|
50
|
+
run: |
|
|
51
|
+
sudo rm -rf $CHROMEWEBDRIVER
|
|
44
52
|
- name: Run tests
|
|
45
53
|
run: bundle exec rake spec:chrome
|
|
46
54
|
env:
|
data/.github/workflows/edge.yml
CHANGED
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
fail-fast: false
|
|
14
14
|
matrix:
|
|
15
15
|
os: [macos-latest, windows-latest]
|
|
16
|
-
ruby: [
|
|
16
|
+
ruby: [ 3.0, 3.2 ]
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout source tree
|
|
19
19
|
uses: actions/checkout@v2
|
|
@@ -32,5 +32,13 @@ jobs:
|
|
|
32
32
|
ruby-version: ${{ matrix.ruby }}
|
|
33
33
|
- name: Install gems
|
|
34
34
|
run: bundle install
|
|
35
|
+
- name: Remove driver directories Windows
|
|
36
|
+
if: matrix.os == 'windows-latest'
|
|
37
|
+
run: |
|
|
38
|
+
rm "$env:EdgeWebDriver" -r -v
|
|
39
|
+
- name: Remove driver directories Non-Windows
|
|
40
|
+
if: matrix.os != 'windows-latest'
|
|
41
|
+
run: |
|
|
42
|
+
sudo rm -rf $EDGEWEBDRIVER
|
|
35
43
|
- name: Run tests
|
|
36
|
-
run: bundle exec rake spec:
|
|
44
|
+
run: bundle exec rake spec:edge
|
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
fail-fast: false
|
|
14
14
|
matrix:
|
|
15
15
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
16
|
-
ruby: [
|
|
16
|
+
ruby: [ 3.0, 3.2 ]
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout source tree
|
|
19
19
|
uses: actions/checkout@v2
|
|
@@ -41,7 +41,15 @@ jobs:
|
|
|
41
41
|
ruby-version: ${{ matrix.ruby }}
|
|
42
42
|
- name: Install gems
|
|
43
43
|
run: bundle install
|
|
44
|
+
- name: Remove driver directories Windows
|
|
45
|
+
if: matrix.os == 'windows-latest'
|
|
46
|
+
run: |
|
|
47
|
+
rm "$env:GeckoWebDriver" -r -v
|
|
48
|
+
- name: Remove driver directories Non-Windows
|
|
49
|
+
if: matrix.os != 'windows-latest'
|
|
50
|
+
run: |
|
|
51
|
+
sudo rm -rf $GECKOWEBDRIVER
|
|
44
52
|
- name: Run tests
|
|
45
|
-
run: bundle exec rake spec:
|
|
53
|
+
run: bundle exec rake spec:firefox
|
|
46
54
|
env:
|
|
47
55
|
DISPLAY: :99
|
data/.github/workflows/ie.yml
CHANGED
data/.github/workflows/unit.yml
CHANGED
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
- name: Install Ruby
|
|
22
22
|
uses: ruby/setup-ruby@v1
|
|
23
23
|
with:
|
|
24
|
-
ruby-version:
|
|
24
|
+
ruby-version: 3.0
|
|
25
25
|
- name: Install gems
|
|
26
26
|
run: bundle install
|
|
27
27
|
- name: Run tests
|
|
@@ -33,7 +33,7 @@ jobs:
|
|
|
33
33
|
strategy:
|
|
34
34
|
fail-fast: false
|
|
35
35
|
matrix:
|
|
36
|
-
ruby: ['
|
|
36
|
+
ruby: ['3.0', '3.1', '3.2', 'jruby-9.4.0.0', 'truffleruby-22.3.0']
|
|
37
37
|
steps:
|
|
38
38
|
- name: Checkout source tree
|
|
39
39
|
uses: actions/checkout@v2
|
|
@@ -54,7 +54,7 @@ jobs:
|
|
|
54
54
|
- name: Install Ruby
|
|
55
55
|
uses: ruby/setup-ruby@v1
|
|
56
56
|
with:
|
|
57
|
-
ruby-version:
|
|
57
|
+
ruby-version: 3.0
|
|
58
58
|
- name: Install gems
|
|
59
59
|
run: bundle install
|
|
60
60
|
- run: bundle exec rubocop
|
data/.rubocop.yml
CHANGED
|
@@ -3,23 +3,23 @@ inherit_from: .rubocop_todo.yml
|
|
|
3
3
|
require:
|
|
4
4
|
- rubocop-performance
|
|
5
5
|
- rubocop-rake
|
|
6
|
+
- rubocop-rspec
|
|
6
7
|
|
|
7
8
|
AllCops:
|
|
8
|
-
TargetRubyVersion:
|
|
9
|
+
TargetRubyVersion: 3.0
|
|
9
10
|
NewCops: enable
|
|
10
11
|
Exclude:
|
|
11
12
|
- 'lib/watir/elements/html_elements.rb'
|
|
12
13
|
- 'lib/watir/elements/svg_elements.rb'
|
|
13
14
|
|
|
15
|
+
Gemspec/DevelopmentDependencies:
|
|
16
|
+
Enabled: false
|
|
17
|
+
|
|
14
18
|
Layout/SpaceInsideHashLiteralBraces:
|
|
15
19
|
EnforcedStyle: no_space
|
|
16
20
|
|
|
17
|
-
Lint/UnifiedInteger:
|
|
18
|
-
Exclude:
|
|
19
|
-
- 'lib/watir/locators/element/selector_builder.rb'
|
|
20
|
-
|
|
21
21
|
Metrics/AbcSize:
|
|
22
|
-
Max:
|
|
22
|
+
Max: 23
|
|
23
23
|
Exclude:
|
|
24
24
|
- 'lib/watir/locators/element/selector_builder.rb'
|
|
25
25
|
- 'lib/watir/locators/element/selector_builder/*.rb'
|
|
@@ -28,15 +28,10 @@ Metrics/AbcSize:
|
|
|
28
28
|
|
|
29
29
|
Metrics/BlockLength:
|
|
30
30
|
Exclude:
|
|
31
|
-
- 'spec/**/*'
|
|
32
31
|
- 'support/doctest_helper.rb'
|
|
33
32
|
- 'watir.gemspec'
|
|
34
33
|
- 'Rakefile'
|
|
35
34
|
|
|
36
|
-
Metrics/ModuleLength:
|
|
37
|
-
Exclude:
|
|
38
|
-
- 'spec/**/*'
|
|
39
|
-
|
|
40
35
|
Metrics/ClassLength:
|
|
41
36
|
Max: 93
|
|
42
37
|
Exclude:
|
|
@@ -50,6 +45,7 @@ Metrics/ClassLength:
|
|
|
50
45
|
- 'lib/watir/elements/select.rb'
|
|
51
46
|
- 'lib/watir/generator/base/spec_extractor.rb'
|
|
52
47
|
- 'lib/watir/element_collection.rb'
|
|
48
|
+
- 'spec/**/*_spec.rb'
|
|
53
49
|
|
|
54
50
|
Metrics/CyclomaticComplexity:
|
|
55
51
|
Max: 9
|
|
@@ -61,14 +57,40 @@ Metrics/MethodLength:
|
|
|
61
57
|
Max: 18
|
|
62
58
|
Exclude:
|
|
63
59
|
- 'lib/watir/locators/element/selector_builder.rb'
|
|
64
|
-
- 'lib/watir/locators/element/selector_builder/xpath.rb'
|
|
65
60
|
- 'lib/watir/locators/element/selector_builder/regexp_disassembler.rb'
|
|
66
61
|
|
|
62
|
+
Metrics/ModuleLength:
|
|
63
|
+
Exclude:
|
|
64
|
+
- 'spec/**/*'
|
|
65
|
+
|
|
67
66
|
Metrics/PerceivedComplexity:
|
|
68
67
|
Max: 10
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
RSpec/AnyInstance:
|
|
70
|
+
Enabled: false
|
|
71
|
+
|
|
72
|
+
RSpec/BeforeAfterAll:
|
|
73
|
+
Enabled: false
|
|
74
|
+
|
|
75
|
+
RSpec/ExampleLength:
|
|
76
|
+
Enabled: false
|
|
77
|
+
|
|
78
|
+
RSpec/IndexedLet:
|
|
79
|
+
Enabled: false
|
|
80
|
+
|
|
81
|
+
RSpec/MultipleExpectations:
|
|
82
|
+
Enabled: false
|
|
83
|
+
|
|
84
|
+
RSpec/MultipleMemoizedHelpers:
|
|
85
|
+
Exclude:
|
|
86
|
+
- 'spec/watirspec/capabilities_spec.rb'
|
|
87
|
+
|
|
88
|
+
RSpec/NoExpectationExample:
|
|
89
|
+
Exclude:
|
|
90
|
+
- 'spec/watirspec/cookies_spec.rb'
|
|
91
|
+
|
|
92
|
+
Style/ArgumentsForwarding:
|
|
93
|
+
Enabled: false
|
|
72
94
|
|
|
73
95
|
Style/BlockDelimiters:
|
|
74
96
|
EnforcedStyle: braces_for_chaining
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on
|
|
3
|
+
# on 2022-12-31 19:29:43 UTC using RuboCop version 1.40.0.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
+
# Offense count: 1
|
|
10
|
+
RSpec/PendingWithoutReason:
|
|
11
|
+
Exclude:
|
|
12
|
+
- 'spec/watirspec/browser_spec.rb'
|
|
13
|
+
|
|
14
|
+
# Offense count: 114
|
|
15
|
+
# Configuration parameters: AllowedConstants.
|
|
9
16
|
Style/Documentation:
|
|
10
17
|
Enabled: false
|
data/CHANGES.md
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
### 7.
|
|
1
|
+
### 7.3.0 (2023-08-04)
|
|
2
|
+
|
|
3
|
+
* Fix implementation of headless to work with Selenium 4.11
|
|
4
|
+
* Remove support for Ruby 2.7
|
|
5
|
+
* `DateField` and `DateTimeField` accept inputs that behave like Date (#969)
|
|
6
|
+
* Add support for `http_only` and `same_site` cookie values (thanks Alexandre ZANNI #968)
|
|
7
|
+
|
|
8
|
+
### 7.2.2 (2023-01-03)
|
|
9
|
+
|
|
10
|
+
* Fix bug with processing vendor name-spaced capabilities
|
|
11
|
+
|
|
12
|
+
### 7.2.1 (2023-01-02)
|
|
13
|
+
|
|
14
|
+
* Fix bug for building locators with JRuby
|
|
15
|
+
* Fix bug for inferring internet explorer browser name from options
|
|
16
|
+
|
|
17
|
+
### 7.2.0 (2022-12-24)
|
|
2
18
|
|
|
3
19
|
* Implement Shadow DOM support (#953)
|
|
4
20
|
* Implement existing `Scroll#by` with Selenium Actions Class instead of JavaScript
|
data/LICENSE
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(the MIT License)
|
|
2
2
|
|
|
3
3
|
Copyright (c) 2009-2015 Jari Bakken
|
|
4
|
-
Copyright (c) 2015-
|
|
5
|
-
Copyright (c) 2018-
|
|
4
|
+
Copyright (c) 2015-2023 Alex Rodionov, Titus Fortner
|
|
5
|
+
Copyright (c) 2018-2023 Justin Ko
|
|
6
6
|
|
|
7
7
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
8
8
|
a copy of this software and associated documentation files (the
|
data/lib/watir/capabilities.rb
CHANGED
|
@@ -89,9 +89,6 @@ module Watir
|
|
|
89
89
|
process_proxy_options(options)
|
|
90
90
|
browser_specific_options(options)
|
|
91
91
|
|
|
92
|
-
vendor_opts = process_vendor_options(browser_options)
|
|
93
|
-
vendor_opts.each { |opts| options.add_option(opts) }
|
|
94
|
-
|
|
95
92
|
options
|
|
96
93
|
end
|
|
97
94
|
|
|
@@ -108,13 +105,6 @@ module Watir
|
|
|
108
105
|
options.proxy = proxy
|
|
109
106
|
end
|
|
110
107
|
|
|
111
|
-
def process_vendor_options(opts)
|
|
112
|
-
return [] unless opts.is_a? Hash
|
|
113
|
-
|
|
114
|
-
vendor = opts.select { |key, _val| key.to_s.include?(':') && opts.delete(key) }
|
|
115
|
-
vendor.map { |k, v| Selenium::WebDriver::Remote::Capabilities.new(k => v) }
|
|
116
|
-
end
|
|
117
|
-
|
|
118
108
|
def convert_timeouts(browser_options)
|
|
119
109
|
browser_options[:timeouts] ||= {}
|
|
120
110
|
browser_options[:timeouts].each_key do |key|
|
|
@@ -142,7 +132,7 @@ module Watir
|
|
|
142
132
|
options.args << '--no-sandbox'
|
|
143
133
|
end
|
|
144
134
|
when :firefox
|
|
145
|
-
options.headless
|
|
135
|
+
options.args << '-headless' if @options.delete(:headless)
|
|
146
136
|
when :safari
|
|
147
137
|
Selenium::WebDriver::Safari.technology_preview! if @options.delete(:technology_preview)
|
|
148
138
|
end
|
|
@@ -172,7 +162,7 @@ module Watir
|
|
|
172
162
|
elsif options[:options].is_a?(Selenium::WebDriver::Options)
|
|
173
163
|
options[:options].class.to_s.split('::')[-2].downcase.to_sym
|
|
174
164
|
elsif options.key?(:options)
|
|
175
|
-
options.dig(:options, :browser_name).downcase.to_sym
|
|
165
|
+
options.dig(:options, :browser_name).tr(' ', '_').downcase.to_sym
|
|
176
166
|
else
|
|
177
167
|
:chrome
|
|
178
168
|
end
|
data/lib/watir/cookies.rb
CHANGED
|
@@ -43,16 +43,19 @@ module Watir
|
|
|
43
43
|
# Adds new cookie.
|
|
44
44
|
#
|
|
45
45
|
# @example
|
|
46
|
-
# browser.cookies.add 'my_session', 'BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk', secure: true
|
|
46
|
+
# browser.cookies.add 'my_session', 'BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk', secure: true, http_only: true
|
|
47
47
|
#
|
|
48
48
|
# @param [String] name
|
|
49
49
|
# @param [String] value
|
|
50
50
|
# @param [Hash] opts
|
|
51
51
|
# @option opts [Boolean] :secure
|
|
52
|
+
# @option opts [Boolean] :http_only
|
|
52
53
|
# @option opts [String] :path
|
|
54
|
+
# @option opts [String] :same_site
|
|
53
55
|
# @option opts [Time, DateTime, NilClass] :expires
|
|
54
56
|
# @option opts [String] :domain
|
|
55
57
|
#
|
|
58
|
+
# @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
|
|
56
59
|
|
|
57
60
|
def add(name, value, opts = {})
|
|
58
61
|
cookie = {
|
|
@@ -60,7 +63,9 @@ module Watir
|
|
|
60
63
|
value: value
|
|
61
64
|
}
|
|
62
65
|
cookie[:secure] = opts[:secure] if opts.key?(:secure)
|
|
66
|
+
cookie[:http_only] = opts[:http_only] if opts.key?(:http_only)
|
|
63
67
|
cookie[:path] = opts[:path] if opts.key?(:path)
|
|
68
|
+
cookie[:same_site] = opts[:same_site] if opts.key?(:same_site)
|
|
64
69
|
expires = opts[:expires]
|
|
65
70
|
if expires
|
|
66
71
|
cookie[:expires] = expires.is_a?(String) ? ::Time.parse(expires) : expires
|
|
@@ -117,7 +122,7 @@ module Watir
|
|
|
117
122
|
#
|
|
118
123
|
|
|
119
124
|
def load(file = '.cookies')
|
|
120
|
-
YAML.
|
|
125
|
+
YAML.safe_load_file(file, permitted_classes: [::Symbol, ::Time]).each do |c|
|
|
121
126
|
add(c.delete(:name), c.delete(:value), c)
|
|
122
127
|
end
|
|
123
128
|
end
|
|
@@ -9,8 +9,8 @@ module Watir
|
|
|
9
9
|
def set!(date)
|
|
10
10
|
date = Date.parse date if date.is_a?(String)
|
|
11
11
|
|
|
12
|
-
message = "DateField##{__callee__} only accepts instances
|
|
13
|
-
raise ArgumentError, message unless
|
|
12
|
+
message = "DateField##{__callee__} only accepts instances that respond to #strftime"
|
|
13
|
+
raise ArgumentError, message unless date.respond_to?(:strftime)
|
|
14
14
|
|
|
15
15
|
date_string = date.strftime('%Y-%m-%d')
|
|
16
16
|
element_call(:wait_for_writable) do
|
|
@@ -9,8 +9,8 @@ module Watir
|
|
|
9
9
|
def set!(date)
|
|
10
10
|
date = ::Time.parse date if date.is_a?(String)
|
|
11
11
|
|
|
12
|
-
message = "DateTimeField##{__callee__} only accepts instances
|
|
13
|
-
raise ArgumentError, message unless
|
|
12
|
+
message = "DateTimeField##{__callee__} only accepts instances that respond to #strftime"
|
|
13
|
+
raise ArgumentError, message unless date.respond_to?(:strftime)
|
|
14
14
|
|
|
15
15
|
date_time_string = date.strftime('%Y-%m-%dT%H:%M')
|
|
16
16
|
element_call(:wait_for_writable) do
|
|
@@ -114,9 +114,9 @@ module Watir
|
|
|
114
114
|
def parse_select_args(str_or_rx, text, value, label)
|
|
115
115
|
selectors = {}
|
|
116
116
|
selectors[:any] = str_or_rx unless str_or_rx.empty?
|
|
117
|
-
selectors[:text] =
|
|
118
|
-
selectors[:value] =
|
|
119
|
-
selectors[:label] =
|
|
117
|
+
selectors[:text] = [text] if text
|
|
118
|
+
selectors[:value] = [value] if value
|
|
119
|
+
selectors[:label] = [label] if label
|
|
120
120
|
|
|
121
121
|
raise ArgumentError, "too many arguments used for Select#select: #{selectors}" if selectors.size > 1
|
|
122
122
|
|
|
@@ -58,11 +58,12 @@ module Watir
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def elements_match?(element, values_to_match)
|
|
61
|
+
class_keys = %i[class class_name]
|
|
61
62
|
values_to_match.all? do |how, expected|
|
|
62
63
|
if how == :tag_name
|
|
63
64
|
validate_tag(element, expected)
|
|
64
65
|
# TODO: Can this be class_name here or does that get converted?
|
|
65
|
-
elsif
|
|
66
|
+
elsif class_keys.include?(how)
|
|
66
67
|
value = fetch_value(element, how)
|
|
67
68
|
[expected].flatten.all? do |match|
|
|
68
69
|
value.split.any? do |class_value|
|
|
@@ -36,12 +36,13 @@ module Watir
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def extract_strings(expression, strings)
|
|
39
|
+
meta_set = %i[meta set]
|
|
39
40
|
expression.each do |exp|
|
|
40
41
|
if optional?(exp)
|
|
41
42
|
strings.push(+'')
|
|
42
43
|
next
|
|
43
44
|
end
|
|
44
|
-
if
|
|
45
|
+
if meta_set.include?(exp.type)
|
|
45
46
|
strings.push(+'')
|
|
46
47
|
next
|
|
47
48
|
end
|
|
@@ -7,7 +7,7 @@ module Watir
|
|
|
7
7
|
include Exception
|
|
8
8
|
attr_reader :custom_attributes, :built
|
|
9
9
|
|
|
10
|
-
WILDCARD_ATTRIBUTE = /^(aria|data)_(.+)
|
|
10
|
+
WILDCARD_ATTRIBUTE = /^(aria|data)_(.+)$/
|
|
11
11
|
VALID_WHATS = Hash.new([String, Regexp, TrueClass, FalseClass]).merge(adjacent: [::Symbol],
|
|
12
12
|
xpath: [String],
|
|
13
13
|
css: [String],
|
|
@@ -21,16 +21,12 @@ module Watir
|
|
|
21
21
|
values_to_match[:text] = values_to_match.delete(key)
|
|
22
22
|
end
|
|
23
23
|
else
|
|
24
|
-
return
|
|
24
|
+
return false
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
super
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def text_regexp_deprecation(*)
|
|
31
|
-
# does not apply to text_field
|
|
32
|
-
end
|
|
33
|
-
|
|
34
30
|
def validate_tag(element, _expected)
|
|
35
31
|
tag_name = fetch_value(element, :tag_name)
|
|
36
32
|
matches_values?(tag_name, 'input')
|
data/lib/watir/version.rb
CHANGED
data/lib/watir.rb
CHANGED
data/lib/watirspec.rb
CHANGED
data/spec/locator_spec_helper.rb
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
module LocatorSpecHelper
|
|
4
4
|
def browser
|
|
5
5
|
@browser ||= instance_double(Watir::Browser, wd: driver)
|
|
6
|
-
allow(@browser).to
|
|
6
|
+
allow(@browser).to receive_messages(browser: @browser, locator_namespace: @locator_namespace || Watir::Locators)
|
|
7
7
|
allow(@browser).to receive(:is_a?).with(Watir::Browser).and_return(true)
|
|
8
|
-
allow(@browser).to receive(:locator_namespace).and_return(@locator_namespace || Watir::Locators)
|
|
9
8
|
@browser
|
|
10
9
|
end
|
|
11
10
|
|
|
@@ -30,8 +29,7 @@ module LocatorSpecHelper
|
|
|
30
29
|
|
|
31
30
|
def element_matcher
|
|
32
31
|
@element_matcher ||= instance_double(Watir::Locators::Element::Matcher)
|
|
33
|
-
allow(@element_matcher).to
|
|
34
|
-
allow(@element_matcher).to receive(:selector).and_return(@locator || {})
|
|
32
|
+
allow(@element_matcher).to receive_messages(query_scope: browser, selector: @locator || {})
|
|
35
33
|
@element_matcher
|
|
36
34
|
end
|
|
37
35
|
|
|
@@ -39,14 +37,6 @@ module LocatorSpecHelper
|
|
|
39
37
|
Watir::Locators::Element::Locator.new(element_matcher)
|
|
40
38
|
end
|
|
41
39
|
|
|
42
|
-
def expect_one(*args)
|
|
43
|
-
expect(driver).to receive(:find_element).with(*args)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def expect_all(*args)
|
|
47
|
-
expect(driver).to receive(:find_elements).with(*args)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
40
|
def locate_one(selector = nil)
|
|
51
41
|
selector ||= @locator || {}
|
|
52
42
|
locator.locate ordered_hash(selector)
|
|
@@ -67,10 +57,8 @@ module LocatorSpecHelper
|
|
|
67
57
|
klass = opts.delete(:watir_element) || Watir::HTMLElement
|
|
68
58
|
el = instance_double(klass, opts)
|
|
69
59
|
|
|
70
|
-
allow(el).to
|
|
71
|
-
allow(el).to receive(:selector_builder).and_return(selector_builder)
|
|
60
|
+
allow(el).to receive_messages(enabled?: true, selector_builder: selector_builder, selector: @selector || {})
|
|
72
61
|
allow(el).to receive(:wd).and_return wd_element unless opts.key?(:wd)
|
|
73
|
-
allow(el).to receive(:selector).and_return(@selector || {})
|
|
74
62
|
el
|
|
75
63
|
end
|
|
76
64
|
|