automation_helpers 6.0 → 7.1
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/lib/automation_helpers/drivers/v4/browserstack.rb +1 -1
- data/lib/automation_helpers/drivers/v4/capabilities.rb +1 -2
- data/lib/automation_helpers/extensions/capybara/node/element.rb +11 -0
- data/lib/automation_helpers/extensions/http-cookie/cookie.rb +21 -0
- data/lib/automation_helpers/extensions/http-cookie/cookie_jar.rb +22 -0
- data/lib/automation_helpers/extensions/selenium/webdriver/element.rb +21 -0
- data/lib/automation_helpers/extensions.rb +3 -0
- data/lib/automation_helpers/patches/{capybara.rb → capybara_safari.rb} +9 -1
- data/lib/automation_helpers/patches/capybara_window.rb +40 -0
- data/lib/automation_helpers/patches/http_cookie.rb +36 -0
- data/lib/automation_helpers/patches.rb +3 -1
- data/lib/automation_helpers/version.rb +1 -1
- metadata +34 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ad027de7b1fd9a155b469103b22ce22b4f5e530350eb36da72647f18ec12bde
|
|
4
|
+
data.tar.gz: 1d86d8568cc4d0ce42364a94325480ee4ae4cb714e211041d58a52f01e6fd5fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a0536aea7a3a41266b35adb04f4cac2a4e56015b0a44ffd0a6fd50ea93c383f86b75f5545f15411843eb467bc0bf9d2c021ddf06d2ccad781632aa7953b10b4c
|
|
7
|
+
data.tar.gz: b75b94ef7d572d74bacb8c9e0386aa549b8af3101a079b1eb059b829f439e31082e0f16bd1655a7afa4342ec162abc8104c20bf53b1a4be8b70e9e637a329514
|
|
@@ -61,8 +61,7 @@ module AutomationHelpers
|
|
|
61
61
|
'browserName' => 'internet explorer',
|
|
62
62
|
'bstack:options' => {
|
|
63
63
|
'ie' => {
|
|
64
|
-
# This
|
|
65
|
-
# It is confirmed to be compliant with V4 selenium jars e.t.c.
|
|
64
|
+
# This appears to be the last maintained version and we will remove IE support in V8 of helpers
|
|
66
65
|
'driver' => '4.16.0.0',
|
|
67
66
|
'arch' => 'x32'
|
|
68
67
|
}
|
|
@@ -20,6 +20,17 @@ module Capybara
|
|
|
20
20
|
native.rect.y.to_i
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
# @return [Capybara::Node::Element]
|
|
24
|
+
#
|
|
25
|
+
# Scrolls the element directly into view. Useful to mitigate vs stale element errors
|
|
26
|
+
def scroll_into_view
|
|
27
|
+
session.driver.browser.execute_script(
|
|
28
|
+
"arguments[0].scrollIntoView({block: 'center', inline: 'nearest'});",
|
|
29
|
+
native
|
|
30
|
+
)
|
|
31
|
+
self
|
|
32
|
+
end
|
|
33
|
+
|
|
23
34
|
# @return [Boolean]
|
|
24
35
|
#
|
|
25
36
|
# Whether the element is in a stale state or not
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module HTTP
|
|
4
|
+
#
|
|
5
|
+
# Additional useful methods to extend the HTTP::Cookie class with
|
|
6
|
+
#
|
|
7
|
+
class Cookie
|
|
8
|
+
# @return [Hash]
|
|
9
|
+
#
|
|
10
|
+
# A hashified representation of the cookie that will enable you to push it into Selenium Manager
|
|
11
|
+
def to_h
|
|
12
|
+
{
|
|
13
|
+
name: name,
|
|
14
|
+
value: value,
|
|
15
|
+
path: path,
|
|
16
|
+
secure: secure,
|
|
17
|
+
expires: expires
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module HTTP
|
|
4
|
+
#
|
|
5
|
+
# Additional useful methods to extend the HTTP::CookieJar class with
|
|
6
|
+
#
|
|
7
|
+
class CookieJar
|
|
8
|
+
# @return [HTTP::Cookie, nil]
|
|
9
|
+
#
|
|
10
|
+
# The cookie that has the supplied name
|
|
11
|
+
def cookie_named(name)
|
|
12
|
+
cookies.detect { |cookie| cookie.name == name }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @return [Boolean]
|
|
16
|
+
#
|
|
17
|
+
# Whether the cookie jar contains the cookie with the supplied name
|
|
18
|
+
def include?(cookie_name)
|
|
19
|
+
cookies.any? { |cookie| cookie.name == cookie_name }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Selenium
|
|
4
|
+
module WebDriver
|
|
5
|
+
#
|
|
6
|
+
# Additional useful methods to extend the Selenium::WebDriver::Element class with
|
|
7
|
+
#
|
|
8
|
+
class Element
|
|
9
|
+
# @return [Selenium::WebDriver::Element]
|
|
10
|
+
#
|
|
11
|
+
# Scrolls the element directly into view. Useful to mitigate vs stale element errors
|
|
12
|
+
def scroll_into_view
|
|
13
|
+
@bridge.execute_script(
|
|
14
|
+
"arguments[0].scrollIntoView({block: 'center', inline: 'nearest'});",
|
|
15
|
+
self
|
|
16
|
+
)
|
|
17
|
+
self
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
require 'automation_helpers/extensions/capybara/node/element'
|
|
4
4
|
require 'automation_helpers/extensions/cucumber/core/test/case'
|
|
5
|
+
require 'automation_helpers/extensions/http-cookie/cookie'
|
|
6
|
+
require 'automation_helpers/extensions/http-cookie/cookie_jar'
|
|
7
|
+
require 'automation_helpers/extensions/selenium/webdriver/element'
|
|
5
8
|
require 'automation_helpers/extensions/selenium/webdriver/logs'
|
|
6
9
|
require 'automation_helpers/extensions/array'
|
|
7
10
|
require 'automation_helpers/extensions/string'
|
|
@@ -5,7 +5,7 @@ module AutomationHelpers
|
|
|
5
5
|
#
|
|
6
6
|
# Fix the issue where the `#text` method doesn't normalize whitespace (Only the matchers do)
|
|
7
7
|
#
|
|
8
|
-
class
|
|
8
|
+
class CapybaraSafari < Base
|
|
9
9
|
private
|
|
10
10
|
|
|
11
11
|
def description
|
|
@@ -19,6 +19,14 @@ module AutomationHelpers
|
|
|
19
19
|
def perform
|
|
20
20
|
::Capybara::Node::Element.prepend SafariTextPatch
|
|
21
21
|
end
|
|
22
|
+
|
|
23
|
+
def deprecate?
|
|
24
|
+
true
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def prevent_usage_date
|
|
28
|
+
Time.new(2027, 3, 30)
|
|
29
|
+
end
|
|
22
30
|
end
|
|
23
31
|
|
|
24
32
|
#
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module AutomationHelpers
|
|
4
|
+
module Patches
|
|
5
|
+
#
|
|
6
|
+
# Fix the issue where you cannot close the first window in the handle array with `#close_window`
|
|
7
|
+
#
|
|
8
|
+
class CapybaraWindow < Base
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def description
|
|
12
|
+
<<~DESCRIPTION
|
|
13
|
+
The method `#close_window` in Capybara::Selenium::Driver (Base), does not permit closing of the first window in the handle array
|
|
14
|
+
|
|
15
|
+
This was introduced over a decade ago and given the propensity for new windows to be opened in the course of testing,
|
|
16
|
+
this is a significant issue for users of Capybara and Selenium.
|
|
17
|
+
|
|
18
|
+
NB: WHEN USING THIS PATCH, NETWORK INTERCEPTION IS AFFECTED. DO NOT USE THIS PATCH IF YOU RELY ON NETWORK INTERCEPTION IN YOUR TESTS.
|
|
19
|
+
|
|
20
|
+
See https://github.com/teamcapybara/capybara/issues/2834 for more details.
|
|
21
|
+
DESCRIPTION
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def perform
|
|
25
|
+
::Capybara::Selenium::Driver.prepend WindowPatch
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
module WindowPatch
|
|
33
|
+
def close_window(handle)
|
|
34
|
+
within_given_window(handle) do
|
|
35
|
+
browser.close
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module AutomationHelpers
|
|
4
|
+
module Patches
|
|
5
|
+
#
|
|
6
|
+
# Fix the issue where the `#expires=` writer method doesn't permit DateTime objects
|
|
7
|
+
#
|
|
8
|
+
class HTTPCookie < Base
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def description
|
|
12
|
+
<<~DESCRIPTION
|
|
13
|
+
There is a bug/missing piece of functionality in the #expires= writer in HTTP::Cookie
|
|
14
|
+
Selenium cookies (And by default w3c cookies), come with a DateTime class for the expiry
|
|
15
|
+
|
|
16
|
+
See https://github.com/sparklemotion/http-cookie/pull/52 for more details about a potential extension.
|
|
17
|
+
DESCRIPTION
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def perform
|
|
21
|
+
::HTTP::Cookie.prepend HTTPCookiePatch
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# @api private
|
|
27
|
+
#
|
|
28
|
+
module HTTPCookiePatch
|
|
29
|
+
# Permit DateTime objects to be cast in HTTP::Cookie
|
|
30
|
+
def expires=(datetime)
|
|
31
|
+
datetime = datetime.to_time if datetime.is_a?(DateTime)
|
|
32
|
+
super
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'automation_helpers/patches/base'
|
|
4
|
-
require 'automation_helpers/patches/
|
|
4
|
+
require 'automation_helpers/patches/capybara_safari'
|
|
5
|
+
require 'automation_helpers/patches/capybara_window'
|
|
6
|
+
require 'automation_helpers/patches/http_cookie'
|
|
5
7
|
require 'automation_helpers/patches/selenium_logger'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: automation_helpers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '
|
|
4
|
+
version: '7.1'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Luke Hill
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2026-
|
|
12
|
+
date: 2026-07-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: capybara
|
|
@@ -40,7 +40,7 @@ dependencies:
|
|
|
40
40
|
version: '7.0'
|
|
41
41
|
- - "<"
|
|
42
42
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: '
|
|
43
|
+
version: '13'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
46
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -50,7 +50,7 @@ dependencies:
|
|
|
50
50
|
version: '7.0'
|
|
51
51
|
- - "<"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
53
|
+
version: '13'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: faraday
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -65,34 +65,48 @@ dependencies:
|
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
67
|
version: '2.8'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: http-cookie
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '1.0'
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '1.0'
|
|
68
82
|
- !ruby/object:Gem::Dependency
|
|
69
83
|
name: rspec
|
|
70
84
|
requirement: !ruby/object:Gem::Requirement
|
|
71
85
|
requirements:
|
|
72
86
|
- - "~>"
|
|
73
87
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '3.
|
|
88
|
+
version: '3.13'
|
|
75
89
|
type: :development
|
|
76
90
|
prerelease: false
|
|
77
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
92
|
requirements:
|
|
79
93
|
- - "~>"
|
|
80
94
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '3.
|
|
95
|
+
version: '3.13'
|
|
82
96
|
- !ruby/object:Gem::Dependency
|
|
83
97
|
name: rubocop
|
|
84
98
|
requirement: !ruby/object:Gem::Requirement
|
|
85
99
|
requirements:
|
|
86
100
|
- - "~>"
|
|
87
101
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: 1.
|
|
102
|
+
version: 1.88.0
|
|
89
103
|
type: :development
|
|
90
104
|
prerelease: false
|
|
91
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
106
|
requirements:
|
|
93
107
|
- - "~>"
|
|
94
108
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 1.
|
|
109
|
+
version: 1.88.0
|
|
96
110
|
- !ruby/object:Gem::Dependency
|
|
97
111
|
name: rubocop-performance
|
|
98
112
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -113,28 +127,28 @@ dependencies:
|
|
|
113
127
|
requirements:
|
|
114
128
|
- - "~>"
|
|
115
129
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: 3.
|
|
130
|
+
version: 3.10.2
|
|
117
131
|
type: :development
|
|
118
132
|
prerelease: false
|
|
119
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
134
|
requirements:
|
|
121
135
|
- - "~>"
|
|
122
136
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: 3.
|
|
137
|
+
version: 3.10.2
|
|
124
138
|
- !ruby/object:Gem::Dependency
|
|
125
139
|
name: selenium-webdriver
|
|
126
140
|
requirement: !ruby/object:Gem::Requirement
|
|
127
141
|
requirements:
|
|
128
142
|
- - "~>"
|
|
129
143
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: '4.
|
|
144
|
+
version: '4.22'
|
|
131
145
|
type: :development
|
|
132
146
|
prerelease: false
|
|
133
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
134
148
|
requirements:
|
|
135
149
|
- - "~>"
|
|
136
150
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: '4.
|
|
151
|
+
version: '4.22'
|
|
138
152
|
description: Automation Patches / Extensions that allow you to extend your Ruby-based
|
|
139
153
|
testing frameworks
|
|
140
154
|
email:
|
|
@@ -161,11 +175,16 @@ files:
|
|
|
161
175
|
- lib/automation_helpers/extensions/array.rb
|
|
162
176
|
- lib/automation_helpers/extensions/capybara/node/element.rb
|
|
163
177
|
- lib/automation_helpers/extensions/cucumber/core/test/case.rb
|
|
178
|
+
- lib/automation_helpers/extensions/http-cookie/cookie.rb
|
|
179
|
+
- lib/automation_helpers/extensions/http-cookie/cookie_jar.rb
|
|
180
|
+
- lib/automation_helpers/extensions/selenium/webdriver/element.rb
|
|
164
181
|
- lib/automation_helpers/extensions/selenium/webdriver/logs.rb
|
|
165
182
|
- lib/automation_helpers/extensions/string.rb
|
|
166
183
|
- lib/automation_helpers/patches.rb
|
|
167
184
|
- lib/automation_helpers/patches/base.rb
|
|
168
|
-
- lib/automation_helpers/patches/
|
|
185
|
+
- lib/automation_helpers/patches/capybara_safari.rb
|
|
186
|
+
- lib/automation_helpers/patches/capybara_window.rb
|
|
187
|
+
- lib/automation_helpers/patches/http_cookie.rb
|
|
169
188
|
- lib/automation_helpers/patches/selenium_logger.rb
|
|
170
189
|
- lib/automation_helpers/version.rb
|
|
171
190
|
homepage: https://www.github.com/site-prism/automation_helpers
|
|
@@ -183,14 +202,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
183
202
|
requirements:
|
|
184
203
|
- - ">="
|
|
185
204
|
- !ruby/object:Gem::Version
|
|
186
|
-
version: '3.
|
|
205
|
+
version: '3.3'
|
|
187
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
207
|
requirements:
|
|
189
208
|
- - ">="
|
|
190
209
|
- !ruby/object:Gem::Version
|
|
191
210
|
version: 3.2.8
|
|
192
211
|
requirements: []
|
|
193
|
-
rubygems_version: 3.
|
|
212
|
+
rubygems_version: 3.5.22
|
|
194
213
|
signing_key:
|
|
195
214
|
specification_version: 4
|
|
196
215
|
summary: Automation Helpers - Avoid writing the most common things in Ruby Automation
|