apparition 0.0.1

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.
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Capybara
4
+ module Apparition
5
+ class << self
6
+ def windows?
7
+ RbConfig::CONFIG['host_os'] =~ /mingw|mswin|cygwin/
8
+ end
9
+
10
+ def mri?
11
+ defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ruby'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Capybara
4
+ module Apparition
5
+ VERSION = '0.0.1'
6
+ end
7
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'websocket/driver'
4
+
5
+ module Capybara::Apparition
6
+ class WebSocketClient
7
+ attr_reader :driver, :messages, :status
8
+
9
+ def initialize(url)
10
+ @socket = Socket.new(url)
11
+ @driver = ::WebSocket::Driver.client(@socket)
12
+ @messages = []
13
+ @status = :closed
14
+
15
+ setup_driver
16
+ start_driver
17
+ end
18
+
19
+ def send_msg(msg)
20
+ driver.text msg
21
+ end
22
+
23
+ def read_msg
24
+ parse_input until (msg = messages.shift)
25
+ msg
26
+ end
27
+
28
+ def close
29
+ @driver.close
30
+ end
31
+
32
+ private
33
+
34
+ def setup_driver
35
+ driver.on(:message) do |e|
36
+ messages << e.data
37
+ end
38
+
39
+ driver.on(:error) do |e|
40
+ raise e.message
41
+ end
42
+
43
+ driver.on(:close) do |_e|
44
+ @status = :closed
45
+ end
46
+
47
+ driver.on(:open) do |_e|
48
+ @status = :open
49
+ end
50
+ end
51
+
52
+ def start_driver
53
+ driver.start
54
+ parse_input until status == :open
55
+ end
56
+
57
+ def parse_input
58
+ @driver.parse(@socket.read)
59
+ end
60
+ end
61
+
62
+ require 'socket'
63
+
64
+ class Socket
65
+ attr_reader :url
66
+ def initialize(url)
67
+ @url = url
68
+ uri = URI.parse(url)
69
+ @io = TCPSocket.new(uri.host, uri.port)
70
+ end
71
+
72
+ def write(data)
73
+ @io.print data
74
+ end
75
+
76
+ def read
77
+ @io.readpartial(1024)
78
+ end
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: apparition
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Thomas Walpole
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-01-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.12'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '4'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.12'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '4'
33
+ - !ruby/object:Gem::Dependency
34
+ name: websocket-driver
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.6.5
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.6.5
47
+ - !ruby/object:Gem::Dependency
48
+ name: byebug
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: chunky_png
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: fastimage
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: irb
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: launchy
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: os
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: pdf-reader
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 1.3.3
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 1.3.3
145
+ - !ruby/object:Gem::Dependency
146
+ name: rake
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rspec
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '3.6'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.6'
173
+ - !ruby/object:Gem::Dependency
174
+ name: sinatra
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '2.0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '2.0'
187
+ description: Apparition is a driver for Capybara that allows you to run your tests
188
+ on Chrome in a headless or headed manner
189
+ email:
190
+ - twalpole@gmail.com
191
+ executables: []
192
+ extensions: []
193
+ extra_rdoc_files: []
194
+ files:
195
+ - LICENSE
196
+ - README.md
197
+ - lib/capybara/apparition.rb
198
+ - lib/capybara/apparition/browser.rb
199
+ - lib/capybara/apparition/chrome_client.rb
200
+ - lib/capybara/apparition/command.rb
201
+ - lib/capybara/apparition/cookie.rb
202
+ - lib/capybara/apparition/dev_tools_protocol/session.rb
203
+ - lib/capybara/apparition/dev_tools_protocol/target.rb
204
+ - lib/capybara/apparition/dev_tools_protocol/target_manager.rb
205
+ - lib/capybara/apparition/driver.rb
206
+ - lib/capybara/apparition/errors.rb
207
+ - lib/capybara/apparition/frame.rb
208
+ - lib/capybara/apparition/frame_manager.rb
209
+ - lib/capybara/apparition/inspector.rb
210
+ - lib/capybara/apparition/keyboard.rb
211
+ - lib/capybara/apparition/launcher.rb
212
+ - lib/capybara/apparition/mouse.rb
213
+ - lib/capybara/apparition/network_traffic.rb
214
+ - lib/capybara/apparition/network_traffic/error.rb
215
+ - lib/capybara/apparition/network_traffic/request.rb
216
+ - lib/capybara/apparition/network_traffic/response.rb
217
+ - lib/capybara/apparition/node.rb
218
+ - lib/capybara/apparition/page.rb
219
+ - lib/capybara/apparition/utility.rb
220
+ - lib/capybara/apparition/version.rb
221
+ - lib/capybara/apparition/web_socket_client.rb
222
+ homepage: https://github.com/twalpole/apparition
223
+ licenses:
224
+ - MIT
225
+ metadata: {}
226
+ post_install_message:
227
+ rdoc_options: []
228
+ require_paths:
229
+ - lib
230
+ required_ruby_version: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: 2.4.0
235
+ required_rubygems_version: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ version: '0'
240
+ requirements: []
241
+ rubygems_version: 3.0.2
242
+ signing_key:
243
+ specification_version: 4
244
+ summary: Chrome driver using CDP for Capybara
245
+ test_files: []