superbot 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +38 -2
- data/exe/superbot +8 -0
- data/lib/superbot/capybara/convert.rb +37 -0
- data/lib/superbot/capybara/runner.rb +64 -0
- data/lib/superbot/cli/root_command.rb +6 -0
- data/lib/superbot/version.rb +1 -1
- data/lib/superbot/web.rb +4 -3
- data/superbot.gemspec +1 -0
- metadata +25 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d99d87e748e4f70a3a9ccd7eaa049f7ad78de501c83343e24b21b52d1a32f11
|
4
|
+
data.tar.gz: 2cb9d36d9e1f36e8a85e11665b4cf54c459d57387739337c77e0eacf33e23242
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a040b5c8d44141bd5c6fca9ddb4d477793207b42981ed40c326346a02ef61691a5b7b8c0ea23edb708863b34d9a59b26cb7dddd419da7bcd287e50b79da7d68b
|
7
|
+
data.tar.gz: 3fa1e7e58ff704e764907729c5b5586a0c3743dc512616f19d4688065a8c39a9c8a356628d7463c55c86e47944485870b19833b47cd501c19a40b74c54b457db
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
superbot (0.1.
|
4
|
+
superbot (0.1.2)
|
5
5
|
clamp (= 1.2.1)
|
6
6
|
launchy (= 2.4.3)
|
7
7
|
sinatra (= 2.0.3)
|
@@ -13,7 +13,22 @@ GEM
|
|
13
13
|
specs:
|
14
14
|
addressable (2.5.2)
|
15
15
|
public_suffix (>= 2.0.2, < 4.0)
|
16
|
+
archive-zip (0.11.0)
|
17
|
+
io-like (~> 0.3.0)
|
16
18
|
ast (2.4.0)
|
19
|
+
capybara (3.6.0)
|
20
|
+
addressable
|
21
|
+
mini_mime (>= 0.1.3)
|
22
|
+
nokogiri (~> 1.8)
|
23
|
+
rack (>= 1.6.0)
|
24
|
+
rack-test (>= 0.6.3)
|
25
|
+
xpath (~> 3.1)
|
26
|
+
childprocess (0.9.0)
|
27
|
+
ffi (~> 1.0, >= 1.0.11)
|
28
|
+
chromedriver-helper (1.2.0)
|
29
|
+
archive-zip (~> 0.10)
|
30
|
+
nokogiri (~> 1.8)
|
31
|
+
cjsonci (0.1.0)
|
17
32
|
clamp (1.2.1)
|
18
33
|
coderay (1.1.2)
|
19
34
|
diff-lcs (1.3)
|
@@ -38,6 +53,7 @@ GEM
|
|
38
53
|
guard-rubocop (1.3.0)
|
39
54
|
guard (~> 2.0)
|
40
55
|
rubocop (~> 0.20)
|
56
|
+
io-like (0.3.0)
|
41
57
|
json (2.1.0)
|
42
58
|
kommando (0.1.2)
|
43
59
|
launchy (2.4.3)
|
@@ -48,8 +64,12 @@ GEM
|
|
48
64
|
ruby_dep (~> 1.2)
|
49
65
|
lumberjack (1.0.13)
|
50
66
|
method_source (0.9.0)
|
67
|
+
mini_mime (1.0.1)
|
68
|
+
mini_portile2 (2.3.0)
|
51
69
|
mustermann (1.0.3)
|
52
70
|
nenv (0.3.0)
|
71
|
+
nokogiri (1.8.4)
|
72
|
+
mini_portile2 (~> 2.3.0)
|
53
73
|
notiffany (0.1.1)
|
54
74
|
nenv (~> 0.1)
|
55
75
|
shellany (~> 0.0)
|
@@ -66,6 +86,8 @@ GEM
|
|
66
86
|
rack (2.0.5)
|
67
87
|
rack-protection (2.0.3)
|
68
88
|
rack
|
89
|
+
rack-test (1.1.0)
|
90
|
+
rack (>= 1.0, < 3)
|
69
91
|
rainbow (3.0.0)
|
70
92
|
rake (10.5.0)
|
71
93
|
rb-fsevent (0.10.3)
|
@@ -93,6 +115,10 @@ GEM
|
|
93
115
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
94
116
|
ruby-progressbar (1.9.0)
|
95
117
|
ruby_dep (1.5.0)
|
118
|
+
rubyzip (1.2.2)
|
119
|
+
selenium-webdriver (3.14.0)
|
120
|
+
childprocess (~> 0.5)
|
121
|
+
rubyzip (~> 1.2)
|
96
122
|
shellany (0.0.1)
|
97
123
|
simplecov (0.16.1)
|
98
124
|
docile (~> 1.1)
|
@@ -105,9 +131,18 @@ GEM
|
|
105
131
|
rack-protection (= 2.0.3)
|
106
132
|
tilt (~> 2.0)
|
107
133
|
sinatra-silent (0.0.1)
|
134
|
+
superbot-capybara (360.0.0)
|
135
|
+
capybara (= 3.6.0)
|
136
|
+
cjsonci (= 0.1.0)
|
137
|
+
superbot-selenium-webdriver (= 314.2.5)
|
138
|
+
superbot-selenium-webdriver (314.2.5)
|
139
|
+
chromedriver-helper (= 1.2.0)
|
140
|
+
selenium-webdriver (= 3.14.0)
|
108
141
|
thor (0.20.0)
|
109
142
|
tilt (2.0.8)
|
110
143
|
unicode-display_width (1.3.3)
|
144
|
+
xpath (3.1.0)
|
145
|
+
nokogiri (~> 1.8)
|
111
146
|
zaru (0.2.0)
|
112
147
|
|
113
148
|
PLATFORMS
|
@@ -126,6 +161,7 @@ DEPENDENCIES
|
|
126
161
|
rubocop (~> 0.53)
|
127
162
|
simplecov (~> 0.16)
|
128
163
|
superbot!
|
164
|
+
superbot-capybara
|
129
165
|
|
130
166
|
BUNDLED WITH
|
131
|
-
1.16.
|
167
|
+
1.16.4
|
data/exe/superbot
CHANGED
@@ -9,4 +9,12 @@ $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
|
9
9
|
STDOUT.sync = true
|
10
10
|
|
11
11
|
require 'superbot'
|
12
|
+
%w(cloud local).each do |gem_ext|
|
13
|
+
begin
|
14
|
+
require "superbot/#{gem_ext}"
|
15
|
+
rescue LoadError
|
16
|
+
p # do nothing
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
12
20
|
Superbot::CLI::RootCommand.run
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Superbot
|
4
|
+
module Capybara
|
5
|
+
class Convert
|
6
|
+
def initialize(json)
|
7
|
+
@json = JSON.parse(json, symbolize_names: true)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.call(json)
|
11
|
+
new(json).call
|
12
|
+
end
|
13
|
+
|
14
|
+
def call
|
15
|
+
converted_json&.tap { |script| Superbot::Capybara::Runner.run(script) }
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_accessor :json
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def convert_action(action)
|
23
|
+
case action[:type]
|
24
|
+
when 'visit' then "visit '#{action[:url]}'"
|
25
|
+
when 'click' then "click_on '#{action[:selector]}'"
|
26
|
+
when 'scroll' then
|
27
|
+
"page.execute_script('window.scrollBy(0,' + (page.execute_script('return document.body.scrollHeight') * #{action[:amountPercent]} / 100).to_s + ')')"
|
28
|
+
when 'resolution' then "page.driver.browser.manage.window.resize_to(#{action[:resolution].join(',')})"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def converted_json
|
33
|
+
json.map { |action| convert_action(action) }.join('; ')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'kommando'
|
4
|
+
|
5
|
+
module Superbot
|
6
|
+
module Capybara
|
7
|
+
class Runner
|
8
|
+
def initialize(script)
|
9
|
+
@script = script
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.run(*args)
|
13
|
+
new(*args).run
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
run_script
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_accessor :script
|
23
|
+
|
24
|
+
def run_script
|
25
|
+
gem 'superbot-capybara'
|
26
|
+
|
27
|
+
k = Kommando.new "sb-capybara"
|
28
|
+
k.in.writeln({ eval: script }.to_json)
|
29
|
+
|
30
|
+
finished = false
|
31
|
+
|
32
|
+
k.out.once(/{"type":"ok".*\n/) do
|
33
|
+
puts "Test succeed"
|
34
|
+
finished = true
|
35
|
+
end
|
36
|
+
|
37
|
+
k.out.once(/{"type":"error".*\n/) do
|
38
|
+
begin
|
39
|
+
parsed_error = JSON.parse(k.out.lines.last, symbolize_names: true)
|
40
|
+
error_message = parsed_error[:message]
|
41
|
+
puts "Test failed with #{error_message}"
|
42
|
+
end
|
43
|
+
finished = true
|
44
|
+
end
|
45
|
+
|
46
|
+
k.run_async
|
47
|
+
|
48
|
+
loop do
|
49
|
+
break if finished
|
50
|
+
|
51
|
+
sleep 0.001
|
52
|
+
end
|
53
|
+
|
54
|
+
begin
|
55
|
+
k.kill
|
56
|
+
rescue Timeout::Error
|
57
|
+
p # do nothing
|
58
|
+
end
|
59
|
+
rescue Gem::LoadError
|
60
|
+
puts "superbot-capybara not installed"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -19,6 +19,12 @@ module Superbot
|
|
19
19
|
warn exc.message
|
20
20
|
warn exc.backtrace.join("\n")
|
21
21
|
end
|
22
|
+
|
23
|
+
def subcommand_missing(name)
|
24
|
+
return super unless %w(cloud local).include?(name)
|
25
|
+
|
26
|
+
abort "Subcommand '#{name}' requires gem superbot-#{name} to be installed"
|
27
|
+
end
|
22
28
|
end
|
23
29
|
end
|
24
30
|
end
|
data/lib/superbot/version.rb
CHANGED
data/lib/superbot/web.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'sinatra'
|
4
4
|
require "sinatra/silent"
|
5
|
+
require_relative "capybara/convert"
|
6
|
+
require_relative "capybara/runner"
|
5
7
|
|
6
8
|
module Superbot
|
7
9
|
class Web
|
@@ -28,9 +30,7 @@ module Superbot
|
|
28
30
|
end
|
29
31
|
|
30
32
|
@sinatra.post "/__superbot/v1/convert" do
|
31
|
-
|
32
|
-
|
33
|
-
"visit 'http://example.com'\n#{body.inspect}"
|
33
|
+
Superbot::Capybara::Convert.call(request.body.read)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -45,6 +45,7 @@ module Superbot
|
|
45
45
|
|
46
46
|
loop do
|
47
47
|
break if @sinatra.running?
|
48
|
+
|
48
49
|
sleep 0.001
|
49
50
|
end
|
50
51
|
end
|
data/superbot.gemspec
CHANGED
@@ -46,6 +46,7 @@ Gem::Specification.new do |spec|
|
|
46
46
|
spec.add_development_dependency "simplecov", "~> 0.16"
|
47
47
|
spec.add_development_dependency "parallel_tests", "~> 2.22"
|
48
48
|
spec.add_development_dependency "excon", "~> 0.62"
|
49
|
+
spec.add_development_dependency 'superbot-capybara', '~> 360.0', '>= 360.0.0'
|
49
50
|
|
50
51
|
spec.add_development_dependency "guard", "~> 2.14"
|
51
52
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: superbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Superbots
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -192,6 +192,26 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0.62'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: superbot-capybara
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '360.0'
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: 360.0.0
|
205
|
+
type: :development
|
206
|
+
prerelease: false
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - "~>"
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '360.0'
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 360.0.0
|
195
215
|
- !ruby/object:Gem::Dependency
|
196
216
|
name: guard
|
197
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,6 +281,8 @@ files:
|
|
261
281
|
- bin/setup
|
262
282
|
- exe/superbot
|
263
283
|
- lib/superbot.rb
|
284
|
+
- lib/superbot/capybara/convert.rb
|
285
|
+
- lib/superbot/capybara/runner.rb
|
264
286
|
- lib/superbot/cli.rb
|
265
287
|
- lib/superbot/cli/new_command.rb
|
266
288
|
- lib/superbot/cli/root_command.rb
|
@@ -291,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
291
313
|
version: '0'
|
292
314
|
requirements: []
|
293
315
|
rubyforge_project:
|
294
|
-
rubygems_version: 2.7.
|
316
|
+
rubygems_version: 2.7.6
|
295
317
|
signing_key:
|
296
318
|
specification_version: 4
|
297
319
|
summary: Superbot Testing
|