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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da08a7e4f4e91c945652030f4616b76e9b087cc84efb98f6ee48c99504407abc
4
- data.tar.gz: bf78251edf46c21d60b73adfa60b3105a9c114a9c0de26454ca59ed1cba85198
3
+ metadata.gz: 4c7fde43f94aa9182aeaded09da20644c53bcafe3f21bc722fa4bbd3d7d8a405
4
+ data.tar.gz: f88afb6a905c747f73b59e6bcc64861b06ebf1744ed7804553965befe0a1f2a0
5
5
  SHA512:
6
- metadata.gz: 79921aa72ebc306b70a5615de0aec9b2ffa5e6c56186f08ce781b69837f71911334512148678320da898dcf546f310de9157e554ee65a00bd37b05f6584f6303
7
- data.tar.gz: 7f193306b1552c179a96b8d2ca832b979d6118bea9c8c9a22da5550e454de1b3282605486191727ed5af7cd3eb674c0b231bb8aad82b84f7ad353c08f5c23adf
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-2024, by Samuel Williams.
4
+ # Copyright, 2023-2025, by Samuel Williams.
5
5
 
6
- require_relative 'generic'
7
- require_relative 'process_group'
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-2024, by Samuel Williams.
4
+ # Copyright, 2023-2025, by Samuel Williams.
5
5
 
6
- require_relative 'generic'
7
- require_relative 'process_group'
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-2024, by Samuel Williams.
4
+ # Copyright, 2023-2025, by Samuel Williams.
5
5
 
6
- require 'socket'
7
- require 'async/http/endpoint'
8
- require 'async/http/client'
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 'async/actor'
7
- require 'async/pool'
6
+ require "async/actor"
7
+ require "async/pool"
8
8
 
9
- require_relative '../session'
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.start(Async::WebDriver::Bridge::Chrome.new)
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
@@ -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 'driver'
6
+ require_relative "driver"
7
7
 
8
8
  module Async
9
9
  module WebDriver
@@ -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-2024, by Samuel Williams.
4
+ # Copyright, 2023-2025, by Samuel Williams.
5
5
 
6
- require_relative 'bridge/chrome'
7
- require_relative 'bridge/firefox'
6
+ require_relative "bridge/chrome"
7
+ require_relative "bridge/firefox"
8
+ require_relative "bridge/safari"
8
9
 
9
- require_relative 'error'
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 = '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 = '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 'request_helper'
7
- require_relative 'session'
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 'request_helper'
6
+ require_relative "request_helper"
7
7
 
8
- require_relative 'scope'
8
+ require_relative "scope"
9
9
 
10
10
  module Async
11
11
  module WebDriver
@@ -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 'version'
6
+ require_relative "version"
7
7
 
8
8
  module Async
9
9
  module WebDriver
@@ -1,7 +1,7 @@
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
6
  module Async
7
7
  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 'version'
7
- require_relative 'error'
6
+ require_relative "version"
7
+ require_relative "error"
8
8
 
9
9
  module Async
10
10
  module WebDriver
@@ -1,7 +1,7 @@
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
6
  module Async
7
7
  module WebDriver
@@ -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 '../xpath'
6
+ require_relative "../xpath"
7
7
 
8
8
  module Async
9
9
  module WebDriver
@@ -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 'uri'
6
+ require "uri"
7
7
 
8
8
  module Async
9
9
  module WebDriver
@@ -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 'base64'
6
+ require "base64"
7
7
 
8
8
  module Async
9
9
  module WebDriver
@@ -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 'base64'
6
+ require "base64"
7
7
 
8
8
  module Async
9
9
  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 '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'
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 'request_helper'
7
- require_relative 'element'
6
+ require_relative "request_helper"
7
+ require_relative "element"
8
8
 
9
- require_relative 'scope'
9
+ require_relative "scope"
10
10
 
11
11
  module Async
12
12
  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
6
  module Async
7
7
  module WebDriver
8
- VERSION = "0.5.0"
8
+ VERSION = "0.7.0"
9
9
  end
10
10
  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 'webdriver/bridge'
7
- require_relative 'webdriver/bridge/pool'
6
+ require_relative "webdriver/bridge"
7
+ require_relative "webdriver/bridge/pool"
8
8
 
9
- require_relative 'webdriver/client'
10
- require_relative 'webdriver/locator'
9
+ require_relative "webdriver/client"
10
+ require_relative "webdriver/locator"
data/license.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2023-2024, by Samuel Williams.
3
+ Copyright, 2023-2025, by Samuel Williams.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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) - STandard fixtures for testing web applications with `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
- This project uses the [Developer Certificate of Origin](https://developercertificate.org/). All contributors to this project must agree to this document to have their contributions accepted.
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
- ### Contributor Covenant
41
+ ### Community Guidelines
40
42
 
41
- This project is governed by the [Contributor Covenant](https://www.contributor-covenant.org/). All contributors and participants agree to abide by its terms.
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.5.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: 2024-05-04 00:00:00.000000000 Z
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.5.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