falcon-capybara 1.4.0 → 1.5.0

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: 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: []