async-webdriver 0.6.0 → 0.8.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
- checksums.yaml.gz.sig +0 -0
- data/lib/async/webdriver/bridge/chrome.rb +3 -3
- data/lib/async/webdriver/bridge/firefox.rb +3 -3
- data/lib/async/webdriver/bridge/generic.rb +4 -8
- data/lib/async/webdriver/bridge/pool.rb +12 -5
- data/lib/async/webdriver/bridge/process_group.rb +2 -2
- data/lib/async/webdriver/bridge/safari.rb +3 -3
- data/lib/async/webdriver/bridge.rb +7 -7
- data/lib/async/webdriver/client.rb +3 -3
- data/lib/async/webdriver/element.rb +5 -5
- data/lib/async/webdriver/error.rb +2 -2
- data/lib/async/webdriver/locator.rb +1 -1
- data/lib/async/webdriver/request_helper.rb +8 -6
- data/lib/async/webdriver/scope/elements.rb +1 -1
- data/lib/async/webdriver/scope/fields.rb +8 -3
- data/lib/async/webdriver/scope/navigation.rb +2 -2
- data/lib/async/webdriver/scope/printing.rb +2 -2
- data/lib/async/webdriver/scope/screen_capture.rb +2 -2
- data/lib/async/webdriver/scope.rb +11 -11
- data/lib/async/webdriver/session.rb +4 -4
- data/lib/async/webdriver/version.rb +2 -2
- data/lib/async/webdriver.rb +5 -5
- data/license.md +1 -1
- data/readme.md +15 -4
- data/releases.md +6 -0
- data.tar.gz.sig +0 -0
- metadata +5 -9
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c3dae5c334d2b97f044519b5c4235c104148fadcac0e95f25764551197a889c
|
4
|
+
data.tar.gz: b843c0e5eca27f7382d9d972fdce259051607c844600eea887a82e4a81d5e167
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39488968a35e04975b8f1bfe8d2287dac5811f4a6e32db4a52dc14c835d43b0b502285d0e88f7925f1b0776610ec3011901a575dee56af5755101fface01d44c
|
7
|
+
data.tar.gz: '082e3d764d278351a50cf7bc969d586a94ee26a0066314f9de3577189dd752cb54eb0eaecc8fe1d9b4aadef1627c0df6b8eb7829702aa9cbc7e8a27b2281944b'
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023-
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "generic"
|
7
|
+
require_relative "process_group"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module WebDriver
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023-
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "generic"
|
7
|
+
require_relative "process_group"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module WebDriver
|
@@ -1,21 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023-
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
6
|
+
require "socket"
|
7
|
+
require "async/http/endpoint"
|
8
|
+
require "async/http/client"
|
9
9
|
|
10
10
|
module Async
|
11
11
|
module WebDriver
|
12
12
|
module Bridge
|
13
13
|
# Generic W3C WebDriver implementation.
|
14
14
|
class Generic
|
15
|
-
def self.start(**options)
|
16
|
-
self.new(**options).start
|
17
|
-
end
|
18
|
-
|
19
15
|
def initialize(**options)
|
20
16
|
@options = options
|
21
17
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "async/actor"
|
7
|
+
require "async/pool"
|
8
8
|
|
9
|
-
require_relative
|
9
|
+
require_relative "../session"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module WebDriver
|
@@ -15,8 +15,10 @@ module Async
|
|
15
15
|
#
|
16
16
|
# ``` ruby
|
17
17
|
# begin
|
18
|
-
# bridge = Async::WebDriver::Bridge::Pool.
|
18
|
+
# bridge = Async::WebDriver::Bridge::Pool.new(Async::WebDriver::Bridge::Chrome.new)
|
19
19
|
# session = bridge.session
|
20
|
+
# # ...
|
21
|
+
# session.close
|
20
22
|
# ensure
|
21
23
|
# bridge&.close
|
22
24
|
# end
|
@@ -69,6 +71,11 @@ module Async
|
|
69
71
|
def acquire
|
70
72
|
if @sessions.empty?
|
71
73
|
session = @client.post("session", {capabilities: @capabilities})
|
74
|
+
|
75
|
+
if session.nil?
|
76
|
+
raise Async::WebDriver::Error, "Failed to create session with capabilities: #{@capabilities.inspect}"
|
77
|
+
end
|
78
|
+
|
72
79
|
session[:cache] = self
|
73
80
|
session[:endpoint] = @driver.endpoint
|
74
81
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright,
|
4
|
+
# Copyright, 2024-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "generic"
|
7
|
+
require_relative "process_group"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module WebDriver
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023-
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
6
|
+
require_relative "bridge/chrome"
|
7
|
+
require_relative "bridge/firefox"
|
8
|
+
require_relative "bridge/safari"
|
9
9
|
|
10
|
-
require_relative
|
10
|
+
require_relative "error"
|
11
11
|
|
12
12
|
module Async
|
13
13
|
module WebDriver
|
@@ -36,14 +36,14 @@ module Async
|
|
36
36
|
# ASYNC_WEBDRIVER_BRIDGE=Chrome
|
37
37
|
# ASYNC_WEBDRIVER_BRIDGE=Firefox
|
38
38
|
# ```
|
39
|
-
ASYNC_WEBDRIVER_BRIDGE =
|
39
|
+
ASYNC_WEBDRIVER_BRIDGE = "ASYNC_WEBDRIVER_BRIDGE"
|
40
40
|
|
41
41
|
# The environment variable used to disable headless mode.
|
42
42
|
#
|
43
43
|
# ```
|
44
44
|
# ASYNC_WEBDRIVER_BRIDGE_HEADLESS=false
|
45
45
|
# ```
|
46
|
-
ASYNC_WEBDRIVER_BRIDGE_HEADLESS =
|
46
|
+
ASYNC_WEBDRIVER_BRIDGE_HEADLESS = "ASYNC_WEBDRIVER_BRIDGE_HEADLESS"
|
47
47
|
|
48
48
|
class UnsupportedError < Error
|
49
49
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "request_helper"
|
7
|
+
require_relative "session"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module WebDriver
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "request_helper"
|
7
7
|
|
8
|
-
require_relative
|
8
|
+
require_relative "scope"
|
9
9
|
|
10
10
|
module Async
|
11
11
|
module WebDriver
|
@@ -211,9 +211,9 @@ module Async
|
|
211
211
|
# element.tagName
|
212
212
|
# ```
|
213
213
|
#
|
214
|
-
# @returns [String] The tag name of the element.
|
214
|
+
# @returns [String] The tag name of the element, always in lowercase for consistency across browsers.
|
215
215
|
def tag_name
|
216
|
-
get("name")
|
216
|
+
get("name").downcase
|
217
217
|
end
|
218
218
|
|
219
219
|
# A struct representing the size of an element.
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "version"
|
7
|
+
require_relative "error"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module WebDriver
|
@@ -46,10 +46,10 @@ module Async
|
|
46
46
|
# @returns [Object] The unwrapped value.
|
47
47
|
def unwrap_object(value)
|
48
48
|
if value.is_a?(Hash) and value.key?(ELEMENT_KEY)
|
49
|
-
Element.new(self.session, value[ELEMENT_KEY])
|
50
|
-
else
|
51
|
-
value
|
49
|
+
value = Element.new(self.session, value[ELEMENT_KEY])
|
52
50
|
end
|
51
|
+
|
52
|
+
return value
|
53
53
|
end
|
54
54
|
|
55
55
|
# Used by `JSON.load` to unwrap objects.
|
@@ -60,6 +60,8 @@ module Async
|
|
60
60
|
when Array
|
61
61
|
value.map!(&method(:unwrap_object))
|
62
62
|
end
|
63
|
+
|
64
|
+
return value
|
63
65
|
end
|
64
66
|
|
65
67
|
# Extract the value from the reply.
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "../xpath"
|
7
7
|
|
8
8
|
module Async
|
9
9
|
module WebDriver
|
@@ -32,7 +32,12 @@ module Async
|
|
32
32
|
element.clear
|
33
33
|
end
|
34
34
|
|
35
|
-
element.
|
35
|
+
if element.tag_name == "select"
|
36
|
+
option = element.find_element_by_xpath(".//option[text()=#{XPath::escape(value)}]")
|
37
|
+
option.click unless option.selected?
|
38
|
+
else
|
39
|
+
element.send_keys(value)
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
# Click a button with the given label.
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
12
|
-
require_relative
|
13
|
-
require_relative
|
14
|
-
require_relative
|
15
|
-
require_relative
|
6
|
+
require_relative "scope/alerts"
|
7
|
+
require_relative "scope/cookies"
|
8
|
+
require_relative "scope/document"
|
9
|
+
require_relative "scope/elements"
|
10
|
+
require_relative "scope/fields"
|
11
|
+
require_relative "scope/frames"
|
12
|
+
require_relative "scope/navigation"
|
13
|
+
require_relative "scope/printing"
|
14
|
+
require_relative "scope/screen_capture"
|
15
|
+
require_relative "scope/timeouts"
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "request_helper"
|
7
|
+
require_relative "element"
|
8
8
|
|
9
|
-
require_relative
|
9
|
+
require_relative "scope"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module WebDriver
|
data/lib/async/webdriver.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2023, by Samuel Williams.
|
4
|
+
# Copyright, 2023-2025, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "webdriver/bridge"
|
7
|
+
require_relative "webdriver/bridge/pool"
|
8
8
|
|
9
|
-
require_relative
|
10
|
-
require_relative
|
9
|
+
require_relative "webdriver/client"
|
10
|
+
require_relative "webdriver/locator"
|
data/license.md
CHANGED
data/readme.md
CHANGED
@@ -18,9 +18,20 @@ Please see the [project documentation](https://socketry.github.io/async-webdrive
|
|
18
18
|
|
19
19
|
- [GitHub Actions Integrations](https://socketry.github.io/async-webdriver/guides/github-actions-integration/index) - This guide explains how to use `async-webdriver` with GitHub Actions.
|
20
20
|
|
21
|
+
- [Sus Integration](https://socketry.github.io/async-webdriver/guides/sus-integration/index) - This guide will show you how to integrate `async-webdriver` with the sus test framework.
|
22
|
+
|
23
|
+
## Releases
|
24
|
+
|
25
|
+
Please see the [project releases](https://socketry.github.io/async-webdriver/releases/index) for all releases.
|
26
|
+
|
27
|
+
### v0.8.0
|
28
|
+
|
29
|
+
- Fix `fill_in` `<select>` on Safari.
|
30
|
+
- `Element#tag_name` now normalizes the tag name to lowercase (Safari returns uppercase while other browsers return lowercase).
|
31
|
+
|
21
32
|
## See Also
|
22
33
|
|
23
|
-
- [sus-fixtures-async-webdriver](https://github.com/socketry/sus-fixtures-async-webdriver) -
|
34
|
+
- [sus-fixtures-async-webdriver](https://github.com/socketry/sus-fixtures-async-webdriver) - Standard fixtures for testing web applications with `async-webdriver`.
|
24
35
|
|
25
36
|
## Contributing
|
26
37
|
|
@@ -34,8 +45,8 @@ We welcome contributions to this project.
|
|
34
45
|
|
35
46
|
### Developer Certificate of Origin
|
36
47
|
|
37
|
-
|
48
|
+
In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
|
38
49
|
|
39
|
-
###
|
50
|
+
### Community Guidelines
|
40
51
|
|
41
|
-
This project is
|
52
|
+
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
|
data/releases.md
ADDED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain:
|
11
10
|
- |
|
@@ -37,7 +36,7 @@ cert_chain:
|
|
37
36
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
38
37
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
39
38
|
-----END CERTIFICATE-----
|
40
|
-
date:
|
39
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
41
40
|
dependencies:
|
42
41
|
- !ruby/object:Gem::Dependency
|
43
42
|
name: async-actor
|
@@ -109,8 +108,6 @@ dependencies:
|
|
109
108
|
- - "~>"
|
110
109
|
- !ruby/object:Gem::Version
|
111
110
|
version: '0.2'
|
112
|
-
description:
|
113
|
-
email:
|
114
111
|
executables: []
|
115
112
|
extensions: []
|
116
113
|
extra_rdoc_files: []
|
@@ -145,6 +142,7 @@ files:
|
|
145
142
|
- lib/async/webdriver/xpath.rb
|
146
143
|
- license.md
|
147
144
|
- readme.md
|
145
|
+
- releases.md
|
148
146
|
homepage: https://github.com/socketry/async-webdriver
|
149
147
|
licenses:
|
150
148
|
- MIT
|
@@ -152,7 +150,6 @@ metadata:
|
|
152
150
|
documentation_uri: https://socketry.github.io/async-webdriver/
|
153
151
|
funding_uri: https://github.com/sponsors/ioquatix
|
154
152
|
source_code_uri: https://github.com/socketry/async-webdriver.git
|
155
|
-
post_install_message:
|
156
153
|
rdoc_options: []
|
157
154
|
require_paths:
|
158
155
|
- lib
|
@@ -160,15 +157,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
157
|
requirements:
|
161
158
|
- - ">="
|
162
159
|
- !ruby/object:Gem::Version
|
163
|
-
version: '3.
|
160
|
+
version: '3.2'
|
164
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
162
|
requirements:
|
166
163
|
- - ">="
|
167
164
|
- !ruby/object:Gem::Version
|
168
165
|
version: '0'
|
169
166
|
requirements: []
|
170
|
-
rubygems_version: 3.
|
171
|
-
signing_key:
|
167
|
+
rubygems_version: 3.6.7
|
172
168
|
specification_version: 4
|
173
169
|
summary: A native library implementing the W3C WebDriver client specification.
|
174
170
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|