async-webdriver 0.5.0 → 0.7.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 +7 -5
- data/lib/async/webdriver/bridge/process_group.rb +2 -2
- data/lib/async/webdriver/bridge/safari.rb +84 -0
- data/lib/async/webdriver/bridge.rb +8 -6
- data/lib/async/webdriver/client.rb +3 -3
- data/lib/async/webdriver/element.rb +3 -3
- data/lib/async/webdriver/error.rb +2 -2
- data/lib/async/webdriver/locator.rb +1 -1
- data/lib/async/webdriver/request_helper.rb +3 -3
- data/lib/async/webdriver/scope/elements.rb +1 -1
- data/lib/async/webdriver/scope/fields.rb +2 -2
- 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 +6 -4
- data.tar.gz.sig +0 -0
- metadata +4 -8
- 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: 4c7fde43f94aa9182aeaded09da20644c53bcafe3f21bc722fa4bbd3d7d8a405
|
4
|
+
data.tar.gz: f88afb6a905c747f73b59e6bcc64861b06ebf1744ed7804553965befe0a1f2a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c11a7bd6686ae143b6a0357925741f5d6131f6d0b54aaa7b7ce3535be7c94debc357dec9407c07a939334b2a6145ad86a5585fae8ba95a254f02b224b2eeeb1b
|
7
|
+
data.tar.gz: 8873992a29a8351f3a4d5ac4681369aae2ab7d9055cfc0c6f3251fd0c77a6c99229888c0298829d27d1c81f6504d78feff8cbddc575b59d04a2223424022d8cc
|
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
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2024-2025, by Samuel Williams.
|
5
|
+
|
6
|
+
require_relative "generic"
|
7
|
+
require_relative "process_group"
|
8
|
+
|
9
|
+
module Async
|
10
|
+
module WebDriver
|
11
|
+
module Bridge
|
12
|
+
# A bridge to the Safari browser using `safaridriver`.
|
13
|
+
#
|
14
|
+
# ``` ruby
|
15
|
+
# begin
|
16
|
+
# bridge = Async::WebDriver::Bridge::Safari.start
|
17
|
+
# client = Async::WebDriver::Client.open(bridge.endpoint)
|
18
|
+
# ensure
|
19
|
+
# bridge&.close
|
20
|
+
# end
|
21
|
+
# ```
|
22
|
+
class Safari < Generic
|
23
|
+
def path
|
24
|
+
@options.fetch(:path, "safaridriver")
|
25
|
+
end
|
26
|
+
|
27
|
+
# @returns [String] The version of the `safaridriver` executable.
|
28
|
+
def version
|
29
|
+
::IO.popen([self.path, "--version"]) do |io|
|
30
|
+
return io.read
|
31
|
+
end
|
32
|
+
rescue Errno::ENOENT
|
33
|
+
return nil
|
34
|
+
end
|
35
|
+
|
36
|
+
class Driver < Bridge::Driver
|
37
|
+
def initialize(**options)
|
38
|
+
super(**options)
|
39
|
+
@process_group = nil
|
40
|
+
end
|
41
|
+
|
42
|
+
# @returns [Array(String)] The arguments to pass to the `safaridriver` executable.
|
43
|
+
def arguments(**options)
|
44
|
+
[
|
45
|
+
options.fetch(:path, "safaridriver"),
|
46
|
+
"--port=#{self.port}",
|
47
|
+
].compact
|
48
|
+
end
|
49
|
+
|
50
|
+
def start
|
51
|
+
@process_group = ProcessGroup.spawn(*arguments(**@options))
|
52
|
+
|
53
|
+
super
|
54
|
+
end
|
55
|
+
|
56
|
+
def close
|
57
|
+
if @process_group
|
58
|
+
@process_group.close
|
59
|
+
@process_group = nil
|
60
|
+
end
|
61
|
+
|
62
|
+
super
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# Start the driver.
|
67
|
+
def start(**options)
|
68
|
+
Driver.new(**options).tap(&:start)
|
69
|
+
end
|
70
|
+
|
71
|
+
# The default capabilities for the Safari browser which need to be provided when requesting a new session.
|
72
|
+
# @parameter headless [Boolean] Whether to run the browser in headless mode.
|
73
|
+
# @returns [Hash] The default capabilities for the Safari browser.
|
74
|
+
def default_capabilities(headless: self.headless?)
|
75
|
+
{
|
76
|
+
alwaysMatch: {
|
77
|
+
browserName: "safari",
|
78
|
+
},
|
79
|
+
}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -1,12 +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
|
6
|
+
require_relative "bridge/chrome"
|
7
|
+
require_relative "bridge/firefox"
|
8
|
+
require_relative "bridge/safari"
|
8
9
|
|
9
|
-
require_relative
|
10
|
+
require_relative "error"
|
10
11
|
|
11
12
|
module Async
|
12
13
|
module WebDriver
|
@@ -17,6 +18,7 @@ module Async
|
|
17
18
|
ALL = [
|
18
19
|
Bridge::Chrome,
|
19
20
|
Bridge::Firefox,
|
21
|
+
Bridge::Safari,
|
20
22
|
]
|
21
23
|
|
22
24
|
def self.each(&block)
|
@@ -34,14 +36,14 @@ module Async
|
|
34
36
|
# ASYNC_WEBDRIVER_BRIDGE=Chrome
|
35
37
|
# ASYNC_WEBDRIVER_BRIDGE=Firefox
|
36
38
|
# ```
|
37
|
-
ASYNC_WEBDRIVER_BRIDGE =
|
39
|
+
ASYNC_WEBDRIVER_BRIDGE = "ASYNC_WEBDRIVER_BRIDGE"
|
38
40
|
|
39
41
|
# The environment variable used to disable headless mode.
|
40
42
|
#
|
41
43
|
# ```
|
42
44
|
# ASYNC_WEBDRIVER_BRIDGE_HEADLESS=false
|
43
45
|
# ```
|
44
|
-
ASYNC_WEBDRIVER_BRIDGE_HEADLESS =
|
46
|
+
ASYNC_WEBDRIVER_BRIDGE_HEADLESS = "ASYNC_WEBDRIVER_BRIDGE_HEADLESS"
|
45
47
|
|
46
48
|
class UnsupportedError < Error
|
47
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
|
@@ -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
|
@@ -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,11 @@ 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
|
+
|
21
23
|
## See Also
|
22
24
|
|
23
|
-
- [sus-fixtures-async-webdriver](https://github.com/socketry/sus-fixtures-async-webdriver) -
|
25
|
+
- [sus-fixtures-async-webdriver](https://github.com/socketry/sus-fixtures-async-webdriver) - Standard fixtures for testing web applications with `async-webdriver`.
|
24
26
|
|
25
27
|
## Contributing
|
26
28
|
|
@@ -34,8 +36,8 @@ We welcome contributions to this project.
|
|
34
36
|
|
35
37
|
### Developer Certificate of Origin
|
36
38
|
|
37
|
-
|
39
|
+
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
40
|
|
39
|
-
###
|
41
|
+
### Community Guidelines
|
40
42
|
|
41
|
-
This project is
|
43
|
+
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.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.7.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: 2025-02-28 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: []
|
@@ -123,6 +120,7 @@ files:
|
|
123
120
|
- lib/async/webdriver/bridge/generic.rb
|
124
121
|
- lib/async/webdriver/bridge/pool.rb
|
125
122
|
- lib/async/webdriver/bridge/process_group.rb
|
123
|
+
- lib/async/webdriver/bridge/safari.rb
|
126
124
|
- lib/async/webdriver/client.rb
|
127
125
|
- lib/async/webdriver/element.rb
|
128
126
|
- lib/async/webdriver/error.rb
|
@@ -151,7 +149,6 @@ metadata:
|
|
151
149
|
documentation_uri: https://socketry.github.io/async-webdriver/
|
152
150
|
funding_uri: https://github.com/sponsors/ioquatix
|
153
151
|
source_code_uri: https://github.com/socketry/async-webdriver.git
|
154
|
-
post_install_message:
|
155
152
|
rdoc_options: []
|
156
153
|
require_paths:
|
157
154
|
- lib
|
@@ -166,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
163
|
- !ruby/object:Gem::Version
|
167
164
|
version: '0'
|
168
165
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
170
|
-
signing_key:
|
166
|
+
rubygems_version: 3.6.2
|
171
167
|
specification_version: 4
|
172
168
|
summary: A native library implementing the W3C WebDriver client specification.
|
173
169
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|