falcon-capybara 1.4.0 → 1.5.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: 01acd8665a3d99cf7c1fa53c438db7c9b5e341f77ba09114660f5cceffd86603
4
- data.tar.gz: 3b14914f66d4637bf7ffd72858f0ed8db7827b67995a1c2a9c699bfc4463cfbe
3
+ metadata.gz: a729f1548db40e54fa9de296a0cd8dee98559aee2eeb246852867197f080226e
4
+ data.tar.gz: 0e9bdd77739597ad47c3b4b895021d59a46a7bd8f807ebd198e65c47908e4e1f
5
5
  SHA512:
6
- metadata.gz: 5a2efd236298b2165e47efa3c3d083de996b7740f934dd4a65cc5ab09de8374adfc770ec11f92aba10680e9c8fb01327109113cf253b7771dce207ce44b847c0
7
- data.tar.gz: 80f846895f524710119ddc31425b906d9ec556a2517746b48f4bbd1c30ecee04a03a8f7227d797517049ffec80827ebb160ee861a32c2b8c0bf2b8417e5aedde
6
+ metadata.gz: 901cc06fa726b2844a6f53ff2f9f53017292cddd0d034a9f063dbc6f256cfa21e028b4ca764c91d8597894c35164133df041289c915e3008963ca4924f2b3e32
7
+ data.tar.gz: d5f4cf87a4ea682e39bcc181c6b0c45ab9183a9daf260d5d9321e1c03258fbf652a3bb96c71a330192fdbb2ecdd3a6a68f1c25d715df387a6e0cf1865769e44f
@@ -21,6 +21,6 @@
21
21
  require 'capybara'
22
22
 
23
23
  require_relative "capybara/version"
24
- require_relative "capybara/wrapper"
24
+
25
25
  require_relative "capybara/servers"
26
26
  require_relative "capybara/drivers"
@@ -0,0 +1,16 @@
1
+ # Falcon::Capybara::Drivers
2
+
3
+ Provides Capybara driver definitions for using Chrome with self-signed HTTPS via localhost **only**.
4
+
5
+ ## Usage
6
+
7
+ In your Capybara configuration, you'd typically select one of the named server configurations:
8
+
9
+ ~~~ ruby
10
+ Capybara.configure do |config|
11
+ config.javascript_driver = :selenium_chrome_https
12
+
13
+ # Or for headless:
14
+ config.javascript_driver = :selenium_chrome_headless_https
15
+ end
16
+ ~~~
@@ -19,15 +19,26 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  require 'capybara'
22
- require 'selenium/webdriver'
23
22
 
23
+ # A selenium driver for chrome which allows insecure localhost https protocol.
24
+ # @scope Falcon Capybara Drivers
25
+ # @name selenium_chrome_https
26
+ # @attribute [Block]
24
27
  Capybara.register_driver :selenium_chrome_https do |app|
28
+ require 'selenium/webdriver'
29
+
25
30
  Capybara.drivers[:selenium_chrome].call(app).tap do |driver|
26
31
  driver.options[:options].args << '--allow-insecure-localhost'
27
32
  end
28
33
  end
29
34
 
35
+ # A headless selenium driver for chrome which allows insecure localhost https protocol.
36
+ # @scope Falcon Capybara Drivers
37
+ # @name selenium_chrome_headless_https
38
+ # @attribute [Block]
30
39
  Capybara.register_driver :selenium_chrome_headless_https do |app|
40
+ require 'selenium/webdriver'
41
+
31
42
  Capybara.drivers[:selenium_chrome_headless].call(app).tap do |driver|
32
43
  driver.options[:options].args << '--allow-insecure-localhost'
33
44
  end
@@ -0,0 +1,13 @@
1
+ # Falcon::Capybara::Servers
2
+
3
+ Provides Capybara server definitions for using Falcon with Capybara integration & acceptance tests.
4
+
5
+ ## Usage
6
+
7
+ In your Capybara configuration, you'd typically select one of the named server configurations:
8
+
9
+ ~~~ ruby
10
+ Capybara.configure do |config|
11
+ config.server = :falcon_https
12
+ end
13
+ ~~~
@@ -20,6 +20,29 @@
20
20
 
21
21
  require 'capybara'
22
22
 
23
- Capybara.servers[:falcon] = Falcon::Capybara::Wrapper.new
24
- Capybara.servers[:falcon_http] = Falcon::Capybara::Wrapper.new("http")
25
- Capybara.servers[:falcon_https] = Falcon::Capybara::Wrapper.new("https")
23
+ # The default Falcon server wrapper which uses the `HTTP` scheme.
24
+ # @scope Falcon Capybara Servers
25
+ # @name falcon
26
+ # @attribute [Block]
27
+ Capybara.register_server(:falcon) do |*arguments|
28
+ require_relative 'wrapper'
29
+ Falcon::Capybara::Wrapper.new.call(*arguments)
30
+ end
31
+
32
+ # An explicit Falcon server wrapper which uses the `HTTP` scheme.
33
+ # @scope Falcon Capybara Servers
34
+ # @name falcon_http
35
+ # @attribute [Block]
36
+ Capybara.register_server(:falcon_http) do |*arguments|
37
+ require_relative 'wrapper'
38
+ Falcon::Capybara::Wrapper.new('http').call(*arguments)
39
+ end
40
+
41
+ # The default Falcon server wrapper which uses the `HTTPS` scheme.
42
+ # @scope Falcon Capybara Servers
43
+ # @name falcon_https
44
+ # @attribute [Block]
45
+ Capybara.register_server(:falcon_https) do |*arguments|
46
+ require_relative 'wrapper'
47
+ Falcon::Capybara::Wrapper.new('https').call(*arguments)
48
+ end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Falcon
22
22
  module Capybara
23
- VERSION = "1.4.0"
23
+ VERSION = "1.5.0"
24
24
  end
25
25
  end
@@ -26,34 +26,23 @@ require 'async/io/notification'
26
26
 
27
27
  module Falcon
28
28
  module Capybara
29
+ # Implements a wrapper for starting the Falcon server for Capybara.
29
30
  class Wrapper
31
+ # @parameter scheme [String] The scheme for the server to bind to.
32
+ # e.g. `http` or `https`.
30
33
  def initialize(scheme = "http")
31
- @job = nil
32
34
  @scheme = scheme
33
-
34
- @job_available = Async::IO::Notification.new
35
- @job_complete = Async::IO::Notification.new
36
- end
37
-
38
- def close
39
- @job_available.close
40
- @job_complete.close
41
- end
42
-
43
- def remote(&block)
44
- @job = block
45
- @job_available.signal
46
-
47
- Async do
48
- Async.logger.debug (self) {"Waiting for job completion..."}
49
- @job_complete.wait
50
- end.wait
51
35
  end
52
36
 
37
+ # Build a server endpoint using the given scheme.
53
38
  def endpoint(host, port)
54
39
  Falcon::Endpoint.parse("#{@scheme}://#{host}:#{port}")
55
40
  end
56
41
 
42
+ # Run the Falcon server hosting the given rack application.
43
+ # @parameter rack_app [Proc] A Rack application.
44
+ # @parameter port [Integer] The port number to bind to.
45
+ # @parameter host [String] The local host to bind to.
57
46
  def call(rack_app, port, host)
58
47
  require 'async/reactor'
59
48
  require 'falcon/server'
@@ -69,22 +58,8 @@ module Falcon
69
58
 
70
59
  server = Falcon::Server.new(app, endpoint, endpoint.protocol, endpoint.scheme)
71
60
 
72
- task.async do
73
- Async.logger.debug (self) {"Running server..."}
74
- server.run
75
- end
76
-
77
- while true
78
- Async.logger.debug (self) {"Waiting for job..."}
79
- @job_available.wait while @job.nil?
80
-
81
- Async.logger.debug (self) {"Running job #{@job}"}
82
- @job.call
83
- @job = nil
84
-
85
- Async.logger.debug (self) {"Completing job #{@job}"}
86
- @job_complete.signal
87
- end
61
+ Async.logger.debug (self) {"Running server..."}
62
+ server.run
88
63
  end
89
64
  end
90
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: falcon-capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-25 00:00:00.000000000 Z
11
+ date: 2020-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -66,34 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: bake-bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: bake-modernize
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: bundler
99
71
  requirement: !ruby/object:Gem::Requirement
@@ -150,14 +122,16 @@ dependencies:
150
122
  - - "~>"
151
123
  - !ruby/object:Gem::Version
152
124
  version: '4.0'
153
- description:
154
- email:
125
+ description:
126
+ email:
155
127
  executables: []
156
128
  extensions: []
157
129
  extra_rdoc_files: []
158
130
  files:
159
131
  - lib/falcon/capybara.rb
132
+ - lib/falcon/capybara/drivers.md
160
133
  - lib/falcon/capybara/drivers.rb
134
+ - lib/falcon/capybara/servers.md
161
135
  - lib/falcon/capybara/servers.rb
162
136
  - lib/falcon/capybara/version.rb
163
137
  - lib/falcon/capybara/wrapper.rb
@@ -165,7 +139,7 @@ homepage: https://github.com/socketry/falcon-capybara
165
139
  licenses:
166
140
  - MIT
167
141
  metadata: {}
168
- post_install_message:
142
+ post_install_message:
169
143
  rdoc_options: []
170
144
  require_paths:
171
145
  - lib
@@ -181,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
155
  version: '0'
182
156
  requirements: []
183
157
  rubygems_version: 3.1.2
184
- signing_key:
158
+ signing_key:
185
159
  specification_version: 4
186
160
  summary: Use the falcon web server to run capybara/selenium tests.
187
161
  test_files: []