apparition 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []