superbot 0.1.1 → 0.1.2

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.
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