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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 033e8dc54ff80051f5a8fd7138c9953130d4c3c86b5171ab3be08981972b7da7
4
- data.tar.gz: 3e7bb0700cf3ee06135c943d8ecc4324ddd01fd449402922ec93231bb2a2f94a
3
+ metadata.gz: 1d99d87e748e4f70a3a9ccd7eaa049f7ad78de501c83343e24b21b52d1a32f11
4
+ data.tar.gz: 2cb9d36d9e1f36e8a85e11665b4cf54c459d57387739337c77e0eacf33e23242
5
5
  SHA512:
6
- metadata.gz: 658e6875c36ad437b3cf4834b1d92e90e7195d951950c8471d1872477ab081213339e250d21f90378010bebbf1a22acaa7f1c76cb3b91724a987960629448aab
7
- data.tar.gz: fbd29bf113d130aa073df74ff6e3b00e47ad3e0db86337d606f5b864cbc3146b40619c434bdc9f61a65e1e070faa7c308bc0155eeadb1e942ee06410ce917d8b
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.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.3
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Superbot
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
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
- body = JSON.parse(request.body.read)
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.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-09-04 00:00:00.000000000 Z
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.7
316
+ rubygems_version: 2.7.6
295
317
  signing_key:
296
318
  specification_version: 4
297
319
  summary: Superbot Testing