selenium_tor 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 615212a0bec3109cb6ebe51090a362d148c31d8bc88ab9d0fecf4d384a9084a9
4
- data.tar.gz: 131ef6f7ab2bdf7cf3a1df3014afcab84de4e6bfa6420599feb5d83bfed19afa
3
+ metadata.gz: 45483bd8f793aa018296ee9ae0e06c496d0dd4dde2155e5421f05f7da9d497c1
4
+ data.tar.gz: 8ca6956063b24ee1b30e3c8a4a7f2332fcc40fb12be62a9fd94058470e5ff657
5
5
  SHA512:
6
- metadata.gz: 30fbd1bfeb30c55c532164379e7bdfae6fe767cee32ecf6ac46dbc78e43221766ee5d6d9f11080474b8a6c81add95c03f15878ac0145f9f4fd8950c5395d2935
7
- data.tar.gz: 7aa97939922a4548d83a438b4c2a731c01007d8e4f2fc4c8dda63f6d03ec4b80d77d96b34ecd7e5550ea1297d000e540ac9cdd737a0fd3538733deeaa6e6deb0
6
+ metadata.gz: fa1ad5934e06fb5a69c81e267e55d919cc29cce8fbc0480297b0439d65db53c79c63e27dfc718455b90d6368f5af359bd153003f570befc88a6c96bb3bc18dc4
7
+ data.tar.gz: a565f2f16b886d9a70c3646775e6cb093fc586b9702e01f7707bbae481395f8207322525355a5224fe2251d119681e18285ecebec48d0b78d07b27bf775f0e4b
data/.rubocop.yml CHANGED
@@ -23,6 +23,10 @@ Lint/RescueException:
23
23
  Exclude:
24
24
  - 'test/test_readme.rb'
25
25
 
26
+ Minitest/TestFileName:
27
+ Exclude:
28
+ - 'test/features/fingerprinting/vglrun_test_fingerprintjs.rb'
29
+
26
30
  Style/RegexpLiteral:
27
31
  Exclude:
28
32
  - 'Guardfile'
@@ -32,7 +36,3 @@ Minitest/TestMethodName:
32
36
 
33
37
  Minitest/AssertTruthy:
34
38
  Enabled: false
35
-
36
- Minitest/TestFileName:
37
- Exclude:
38
- - test/features/fingerprinting/vglrun_test_fingerprintjs.rb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## master (unreleased)
2
2
 
3
+ ## [1.5.4] - 2024-10-10
4
+
5
+ * Add Bsdiff gem dependency
6
+ * Add [TZP](https://arkenfox.github.io/TZP/tzp.html) test
7
+
8
+ ### Bug fixes
9
+
10
+ * [#18](https://gitlab.com/matzfan/selenium-tor/-/issues/18)
11
+
3
12
  ## [1.5.3] - 2024-09-08
4
13
 
5
14
  * Bump rexml 3.3.7 to fix [rexml missing strscan dep](https://github.com/ruby/rexml/issues/140)
data/README.md CHANGED
@@ -5,14 +5,22 @@
5
5
 
6
6
  A Selenium extension for Tor Browser.
7
7
  ```ruby
8
+ # before_all
9
+ require 'selenium_tor'
10
+
8
11
  options = Selenium::WebDriver::Tor::Options.new
9
12
  @driver = Selenium::WebDriver.for :tor, options: options
10
13
  ```
14
+ When you are done don't forget to quit the driver. Failure to do so may leave orphaned tor processes.
15
+ ```ruby
16
+ # after_all
17
+ @driver&.quit
18
+ ```
11
19
  Once you have a driver instance:
12
20
  ```ruby
13
21
  @driver.get 'https://check.torproject.org'
14
22
  @driver.title
15
- # => Congratulations. This browser is configured to use Tor.
23
+ # => "Congratulations. This browser is configured to use Tor."
16
24
  ```
17
25
 
18
26
  ## \_why?
@@ -35,14 +43,13 @@ If bundler is not being used to manage dependencies, install the gem by executin
35
43
 
36
44
  [Tor Browser](https://www.torproject.org/download).
37
45
 
38
- The shared libraries Tor Bowser requires will be available if you have Firefox or Firefox ESR installed on your system. If not, do `sudo apt install firefox-esr` or the equivalent for your package manager.
39
-
40
46
  As with Firefox browser, `geckodriver` needs to be installed and in your PATH.
41
47
 
42
48
  The gem needs to know the location of the Tor Browser Bundle (TBB). The Tor Browser download package archive must be extracted and the root TBB directory (named "tor-browser") placed somewhere on your system. By default it is assumed to be in the current user's HOME directory. An alternative location can be set via the env var `TOR_BROWSER_ROOT_DIR` - e.g. `export TOR_BROWSER_ROOT_DIR=/home/<user>/Downloads`. The Tor Browser binary location is *automatically set* by reference to this directory, so there is no need to do this:
43
49
  ```ruby
44
50
  options = Selenium::WebDriver::Tor::Options.new
45
51
  options.binary = '/some/path/to/tor_firefox_binary' # UNNECESSARY
52
+ # => '/some/path/to/tor_firefox_binary'
46
53
  ```
47
54
 
48
55
  The location of the TBB is not expected to change during code execution.
@@ -53,18 +60,21 @@ Tor Selenium is tested on **Linux only** right now.
53
60
 
54
61
  A configuration option to patch the libxul.so packaged with Tor Browser is provided. This has the effect of preventing websites from fingerprinting Selenium-driven Tor Browser via a JS call to `navigator.webdriver`:
55
62
  ```ruby
56
- Tor::Driver.libxul_patched? # is Tor Browser's libxul.so patched?
63
+ @driver_class = Selenium::WebDriver::Tor::Driver
64
+ @driver_class.libxul_patched? # is Tor Browser's libxul.so patched?
57
65
  # => false
58
- Tor::Driver.patch_libxul # patch libxul.so
59
- Tor::Driver.libxul_patched?
66
+ @driver_class.patch_libxul # patch libxul.so
67
+ @driver_class.libxul_patched?
60
68
  # => true
61
- Tor::Driver.unpatch_libxul # revert the patch and restore the libxul.so packaged with Tor Browser
69
+ @driver_class.unpatch_libxul # revert the patch and restore the libxul.so packaged with Tor Browser
70
+ # => 0
62
71
  ```
63
- The patcher uses the `[bsdiff](https://www.daemonology.net/bsdiff)` package, which must be installed on your system.
72
+ The patcher uses the [Bsdiff](https://gitlab.com/matzfan/bsdiff) gem, which in turn requires the bzip2 library (`libbz2-dev`).
64
73
 
65
74
  ## Usage
66
75
  ```ruby
67
76
  require 'selenium_tor'
77
+ # => false
68
78
  ```
69
79
  Tor Browser is based on Firefox, so for usage please read the Selenium [docs](https://www.selenium.dev/documentation/webdriver/browsers/firefox) for Firefox browser.
70
80
 
@@ -94,18 +104,19 @@ end
94
104
 
95
105
  @drivers = [driver, driver]
96
106
 
97
- Parallel.all?(@drivers, in_threads: @drivers.size) do |driver|
107
+ ::Parallel.all?(@drivers, in_threads: @drivers.size) do |driver|
98
108
  driver.get 'https://check.torproject.org'
99
109
  end
100
110
 
101
111
  @drivers.each(&:quit)
112
+ # => truthy
102
113
  ```
103
114
  ### Tor Browser specific functionality
104
115
 
105
116
  You can get and set the security level (shield icon in TB) as follows. 4 is 'Standard', 2 is 'Safer', 1 is 'Safest'.
106
117
  ```ruby
107
118
  @driver.security_level
108
- # => 4 - the default value
119
+ # => 4
109
120
  @driver.security_level = 2
110
121
  @driver.security_level
111
122
  # => 2
@@ -113,16 +124,17 @@ You can get and set the security level (shield icon in TB) as follows. 4 is 'Sta
113
124
  You can get a new circuit for the current page ('New Tor circuit for this site' on TB's application menu):
114
125
  ```ruby
115
126
  @driver.new_circuit_for_site # new circuit for the current page domain
127
+ # => nil
116
128
  ```
117
129
  ### Miscellaneous
118
130
 
119
131
  You can get and set Driver preferences dynamically like this. Caveat emptor.
120
132
  ```ruby
121
133
  @driver.pref['browser.download.dir']
122
- # => ""
123
- @driver.pref['browser.download.dir'] = 'home/user/Downloads'
134
+ # => ''
135
+ @driver.pref['browser.download.dir'] = '/home/user/Downloads'
124
136
  @driver.pref['browser.download.dir']
125
- # => "home/user/Downloads"
137
+ # => '/home/user/Downloads'
126
138
  ```
127
139
 
128
140
  The `Selenium::WebDriver::Tor` namespace is used for `Driver`, `Options`, `Profile` and all tor-specific classes. Otherwise Selenium's `Selenium::WebDriver::Firefox` namespace is used.
@@ -131,13 +143,15 @@ Remote functionality is not tested, but may be if a suitable Tor Browser Docker
131
143
 
132
144
  A number of constants are set during driver initialization based upon values found in the Tor Browser Bundle (TBB) root directory - see below. These include:
133
145
  ```ruby
146
+ Tor = Selenium::WebDriver::Tor
134
147
  Tor::TBB_DIR # path to the TBB root directory
135
148
  Tor::TBB_BROWSER_DIR # path to the 'Browser' directory in the above
136
149
  Tor::TBB_BINARY_PATH # path to the firefox binary
137
150
  Tor::TBB_TOR_BINARY_PATH # path to the bundled tor binary
138
151
  Tor::TBB_PROFILE_DIR # path to the default profile directory
139
152
  Tor::TBB_EXTENSIONS_DIR # path to the 'extensions' directory in the above
140
- Tor::TBB_VERSION # the version installed, e.g. "13.0.1", note: driver.capabilities.browser_version returns the Firefox version Tor Browser is based on
153
+ Tor::TBB_VERSION # the version installed, e.g. "13.0.1", note: driver.capabilities.browser_version returns the Firefox version Tor Browser is based on
154
+ # => instance_of String
141
155
  ```
142
156
 
143
157
  ## Known issues
@@ -150,7 +164,9 @@ The gem uses Xvfb to allow Tor Browser to be manipulated headlessly. Xvfb in tur
150
164
 
151
165
  ## Testing
152
166
 
153
- After checking out the repo, run `bin/setup` to install dependencies.
167
+ ~~After checking out the repo, run `bin/setup` to install dependencies.~~
168
+
169
+ Tests dependencies are `[bsdiff](https://www.daemonology.net/bsdiff)`, `VirtualGL` (see Fingerprinting above) and `Xvfb` if you want to run headless tests.
154
170
 
155
171
  Tests are run in the display set by the `DISPLAY` env var, usually :0 by default. To run headless tests, set it to another value:
156
172
 
data/lib/tor/driver.rb CHANGED
@@ -29,7 +29,8 @@ module Selenium
29
29
  @data_dir = Dir.mktmpdir
30
30
  @options = options || Options.new # fix for issue #11, 'tis a puzzlement
31
31
  add_torrc_path_to_options
32
- @instance = DriverDelegate.new(options: @options, **)
32
+ # @instance = DriverDelegate.new(options: @options, **)
33
+ @instance = DriverDelegate.new(options: @options, **, service: service)
33
34
  install_extensions @instance
34
35
  create_tor_process_and_start_tor @options.tor_opts
35
36
  super(@instance)
@@ -87,6 +88,12 @@ module Selenium
87
88
  def domain
88
89
  URI(current_url).host&.match(/[^\.]+\.\w+$/)
89
90
  end
91
+
92
+ def service
93
+ service = Service.tor
94
+ service.args << '--enable-crash-reporter' # BUG: 18, https://github.com/mozilla/geckodriver/issues/2202
95
+ service
96
+ end
90
97
  end
91
98
  end
92
99
  end
@@ -1,21 +1,53 @@
1
1
  ---
2
- 13.5.2:
3
- unpatched_libxul: b2f8b3fd25466bd3ffa12fb34b422767b28e09577d5714d6d0c97f695dac15dc
4
- patched_libxul: 7f761479c2d0307b97023455cfd7811b5749690302f54508b247720105dd0a3b
5
- patch_checksum: 695f7534586c757781bd33a6dbc627cfe62d010edce20e5754fa5efff7aa80d0
6
- 13.5.3:
7
- unpatched_libxul: a3d065c3f77a0c28dd798952965fc4a2d3c28fb8171728b212fff31e7c8bea20
8
- patched_libxul: ef43a1e5e1d89f4be717430153088357ecc0625c28444ab9b084587927cb7383
9
- patch_checksum: 9d1d6596e2efe7a74b43cc469f5f0c6e9a59752e9fccea6613b896393c2651ae
10
- 14.0a2:
11
- unpatched_libxul: e0eda8db975fe315e9be32b3bf95ee62767c60ee34deac97a7163f8ab0480dc9
12
- patched_libxul: ed05f9c383f4ecbce69d978aefc0625c44874193707ebe11166e714b3e2b4f64
13
- patch_checksum: 0cf817f97bdbe51fba5ad61d566934c9ebdda8fce5540bc803aeca23e0ac3e8b
14
- 14.0a3:
15
- unpatched_libxul: f448fc180b547d622b969fe170028408f75493cf95be5e4c1180594daec2226b
16
- patched_libxul: 337a4ef0e723069695294b37a4843126529c44e2bc4f90b1533b547100355db3
17
- patch_checksum: 08dd8cab30c4416adf7ab6411e1346dce4a8b6f42e4c410adcd5bc63a71506e5
2
+ 14.0a8:
3
+ unpatched_libxul: 3ce2cef75c68f52df50cc435c9307bae8596ecbbf53d067e0731506096fb36cd
4
+ patched_libxul: 789bb47f02d7f5c87cae05409ea31a2cf1d222f6716c2dd81fc333f221bf8c16
5
+ patch_checksum: d5d4e4bbd43e7070da5fe74b1ecf461ec1d45535ac65b3884de43941d7dbc795
6
+ 14.0a7:
7
+ unpatched_libxul: d5cb03c1a4eec29035fb416f8eccece7457d20e941cb3214b6f38290930a8b89
8
+ patched_libxul: 99eff0d6aa3afe9c824820dd502d65578275cfeaeed95892abd133176195284f
9
+ patch_checksum: d2954379bb924e61867f3c5f9c4d15cd2785bd3927ecf759ad1adb08c4c48911
10
+ 14.0a6:
11
+ unpatched_libxul: 03d715c15e52bce158d6c7b51635fe662013bce99ed8a7557d11e4d9a6f242be
12
+ patched_libxul: dea564104ca64c7c40a50d6a1b7bb68c6c99e91ad67d5a31e71c07d0534ac2c9
13
+ patch_checksum: 709de7e4e96569750dddce0b61b206e2e03a4a941bb754284c5a558dc82f5eff
14
+ 14.0a5:
15
+ unpatched_libxul: b21ee80498095637c801648464afb2ccfbe07fabc38107ea326f79f7703ea497
16
+ patched_libxul: bdbcf7e96eb8f58cb5b499576ff47b6b4aecea95e146045fe2a837c92af7ca53
17
+ patch_checksum: 36db05c8fd7ce8a9d37fa4aec204d587c676ebff7c7432c219a7be1861afdd35
18
18
  14.0a4:
19
19
  unpatched_libxul: 2edf6d6a22db0c64f2488cad9a335279018f5ef589c4bfdfe631d227c50fd0f2
20
20
  patched_libxul: 602fd5be68deb8fbd30b733c403f36ac125834cec2bc10ed2085e1b50b3ea776
21
21
  patch_checksum: 23dc44777b828cabfcbd2341c678b7743f5da6e9cce633b1637674334ca5773f
22
+ 14.0a3:
23
+ unpatched_libxul: f448fc180b547d622b969fe170028408f75493cf95be5e4c1180594daec2226b
24
+ patched_libxul: 337a4ef0e723069695294b37a4843126529c44e2bc4f90b1533b547100355db3
25
+ patch_checksum: 08dd8cab30c4416adf7ab6411e1346dce4a8b6f42e4c410adcd5bc63a71506e5
26
+ 14.0a2:
27
+ unpatched_libxul: e0eda8db975fe315e9be32b3bf95ee62767c60ee34deac97a7163f8ab0480dc9
28
+ patched_libxul: ed05f9c383f4ecbce69d978aefc0625c44874193707ebe11166e714b3e2b4f64
29
+ patch_checksum: 0cf817f97bdbe51fba5ad61d566934c9ebdda8fce5540bc803aeca23e0ac3e8b
30
+ 13.5.7:
31
+ unpatched_libxul: dff5619f50ca52a53f231e837252a89114240bac0b66fc401e037145fb48e35a
32
+ patched_libxul: d840ea5b9f502531ab96dc983602964fcc44ccec33e47066ce7e8f43a5db0348
33
+ patch_checksum: ea6fb30bd4591f4eb0a1eb99aaf2d2629f69ddd431bb6c59abd8d96656165650
34
+ 13.5.6:
35
+ unpatched_libxul: 048d9332ed8ad4b40ff445d4135341b1facdec134fe933936311475c097eb664
36
+ patched_libxul: 13f813580551b03bad26be5f30e16e24b933abddf64aa255f4764349bb7a5a8f
37
+ patch_checksum: e9ccf50e16a3bd182e777dffa95af1d789273af32bae0fbb6af58dc1cb0f4ff0
38
+ 13.5.5:
39
+ unpatched_libxul: 67a1bacf07a2c5ef3a6ac3f0f63af114ffc6567a962ceba411c8262abbef0284
40
+ patched_libxul: c9d8fcd83ee8d1254672effc04c94040c6d8433c147a380028eec51f7e61557f
41
+ patch_checksum: 2d87245eb18f3f5625b818b183e45ce888ef00d562efc0a78186f13a49034ecc
42
+ 13.5.4:
43
+ unpatched_libxul: d4b20c9c3aa969f009254fac1e134239b05ca316b84ddb360c2e6f6cfbb062ea
44
+ patched_libxul: c55212fb3644d79b70cab7f14e0dd829d317fa158bab71278a16bb0407d92195
45
+ patch_checksum: c9f89c1fc1906912385fb0eaaa0bfb1b7152a1cb9e38a6066dd8cc32e104e7dd
46
+ 13.5.3:
47
+ unpatched_libxul: a3d065c3f77a0c28dd798952965fc4a2d3c28fb8171728b212fff31e7c8bea20
48
+ patched_libxul: ef43a1e5e1d89f4be717430153088357ecc0625c28444ab9b084587927cb7383
49
+ patch_checksum: 9d1d6596e2efe7a74b43cc469f5f0c6e9a59752e9fccea6613b896393c2651ae
50
+ 13.5.2:
51
+ unpatched_libxul: b2f8b3fd25466bd3ffa12fb34b422767b28e09577d5714d6d0c97f695dac15dc
52
+ patched_libxul: 7f761479c2d0307b97023455cfd7811b5749690302f54508b247720105dd0a3b
53
+ patch_checksum: 695f7534586c757781bd33a6dbc627cfe62d010edce20e5754fa5efff7aa80d0
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'bsdiff'
3
4
  require 'digest'
4
5
  require 'json'
5
6
  require 'open-uri'
@@ -13,9 +14,8 @@ module Selenium
13
14
  module LibxulPatchable
14
15
  class LibxulPatchableError < StandardError; end
15
16
 
16
- # PATCH_REPO = 'https://gitlab.com/matzfan/keymaster/-/releases' # TODO
17
17
  LIBXUL_CHECKSUMS = YAML.load_file(File.join(__dir__, 'libxul_checksums.yml'))[Tor::TBB_VERSION]
18
- PATCH_REPO = 'https://gitlab.com/matzfan/keymaster/-/raw/main/patches/tor-browser'
18
+ PATCH_REPO = 'https://gitlab.com/matzfan/keymaster/-/raw/master/patches/tor-browser'
19
19
  ISSUES_URL = 'https://gitlab.com/matzfan/keymaster/-/issues'
20
20
 
21
21
  def libxul_patched?
@@ -60,9 +60,7 @@ module Selenium
60
60
  end
61
61
 
62
62
  def execute_patch(patchfile)
63
- raise LibxulPatchableError, 'bspatch not found, please install bsdiff' if `which bspatch`.empty?
64
-
65
- `bspatch #{libxul_original} #{libxul_patched} #{patchfile}`
63
+ Bsdiff.patch libxul_original, libxul_patched, patchfile
66
64
  end
67
65
 
68
66
  def unpatched_libxul_checksum_for_version
data/lib/tor/version.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Selenium
4
4
  module WebDriver
5
5
  module Tor
6
- VERSION = '1.5.3'
6
+ VERSION = '1.5.4'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium_tor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - MatzFan
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-09-08 00:00:00.000000000 Z
10
+ date: 2024-10-09 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: bsdiff
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 0.0.2
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.2
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: selenium-webdriver
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -25,14 +38,12 @@ dependencies:
25
38
  - !ruby/object:Gem::Version
26
39
  version: '4.24'
27
40
  description: An extension for Selenium::WebDriver that automates Tor Browser
28
- email:
29
41
  executables: []
30
42
  extensions: []
31
43
  extra_rdoc_files: []
32
44
  files:
33
45
  - ".jshintrc"
34
46
  - ".rubocop.yml"
35
- - ".ruby-version"
36
47
  - ".yamllint"
37
48
  - CHANGELOG.md
38
49
  - Guardfile
@@ -56,7 +67,6 @@ files:
56
67
  - lib/tor/tor_process.rb
57
68
  - lib/tor/torrc.rb
58
69
  - lib/tor/version.rb
59
- - selenium_tor.gemspec
60
70
  - sig/tor.rbs
61
71
  - tmp/.placeholder
62
72
  homepage: https://gitlab.com/matzfan/selenium-tor
@@ -67,7 +77,6 @@ metadata:
67
77
  source_code_uri: https://gitlab.com/matzfan/selenium-tor
68
78
  changelog_uri: https://gitlab.com/matzfan/selenium-tor/CHANGELOG.md
69
79
  rubygems_mfa_required: 'true'
70
- post_install_message:
71
80
  rdoc_options: []
72
81
  require_paths:
73
82
  - lib
@@ -82,8 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
91
  - !ruby/object:Gem::Version
83
92
  version: '0'
84
93
  requirements: []
85
- rubygems_version: 3.5.18
86
- signing_key:
94
+ rubygems_version: 3.6.0.dev
87
95
  specification_version: 4
88
96
  summary: Selenium extension for Tor Browser
89
97
  test_files: []
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.3.5
data/selenium_tor.gemspec DELETED
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'lib/tor/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'selenium_tor'
7
- spec.version = Selenium::WebDriver::Tor::VERSION
8
- spec.authors = ['MatzFan']
9
-
10
- spec.summary = 'Selenium extension for Tor Browser'
11
- spec.description = 'An extension for Selenium::WebDriver that automates Tor Browser'
12
- spec.homepage = 'https://gitlab.com/matzfan/selenium-tor'
13
- spec.license = 'MIT'
14
- spec.required_ruby_version = '>= 3.2'
15
-
16
- spec.metadata['homepage_uri'] = spec.homepage
17
- spec.metadata['source_code_uri'] = 'https://gitlab.com/matzfan/selenium-tor'
18
- spec.metadata['changelog_uri'] = 'https://gitlab.com/matzfan/selenium-tor/CHANGELOG.md'
19
- spec.metadata['rubygems_mfa_required'] = 'true'
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(__dir__) do
24
- `git ls-files -z`.split("\x0").reject do |f|
25
- (File.expand_path(f) == __FILE__) ||
26
- f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor Gemfile])
27
- end
28
- end
29
- spec.bindir = 'exe'
30
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
- spec.require_paths = ['lib']
32
-
33
- spec.add_dependency 'selenium-webdriver', '>= 4.24'
34
- end