superbot 0.1.27 → 0.1.28
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 +4 -4
- data/.rubocop.relaxed.yml +3 -0
- data/.travis.yml +4 -2
- data/Gemfile +5 -0
- data/Gemfile.lock +11 -11
- data/Guardfile +16 -0
- data/Rakefile +5 -8
- data/exe/superbot +0 -6
- data/lib/superbot.rb +15 -0
- data/lib/superbot/capybara/convert.rb +1 -1
- data/lib/superbot/cli.rb +0 -5
- data/lib/superbot/cli/root_command.rb +8 -2
- data/lib/superbot/convert.rb +10 -0
- data/lib/superbot/convert/web.rb +25 -0
- data/lib/superbot/version.rb +1 -1
- data/lib/superbot/web.rb +10 -108
- data/superbot.gemspec +4 -4
- metadata +30 -29
- data/lib/superbot/cli/teleport_command.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a030454c627c3f1cbc0e8006637461cb768b907f3d16c52666e764f0e78a5c5
|
4
|
+
data.tar.gz: cda49595f023bc77c46fea4ada2a098ecf9c12806aebcc192304040f20a068d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48016bbb28209f550254a4f5633e6e38b5e8c9cea39a7923c59bbc9b86bc311ceb506b67f31f5224efaacbe9b6ee441489f75d93d9f547852cc49ec4e957f719
|
7
|
+
data.tar.gz: 5ba44971d978bf268695d15ace642b0c86159f1ae567563f191806df4932afab23b8e84d9fc64caa6356191668a2fad53589235794b8d9fc5ee3eba3d123b8c0
|
data/.rubocop.relaxed.yml
CHANGED
data/.travis.yml
CHANGED
@@ -4,10 +4,12 @@ rvm:
|
|
4
4
|
- 2.5
|
5
5
|
- 2.4
|
6
6
|
- 2.3
|
7
|
+
env:
|
8
|
+
- SUPERBOT_USE_RUBYGEMS=yes
|
7
9
|
before_install:
|
8
|
-
- gem install bundler -v 1.
|
10
|
+
- gem install bundler -v 1.17.1
|
9
11
|
deploy:
|
10
12
|
provider: rubygems
|
11
|
-
api_key: $RUBYGEMS_API_KEY
|
13
|
+
api_key: ${RUBYGEMS_API_KEY}
|
12
14
|
on:
|
13
15
|
branch: master
|
data/Gemfile
CHANGED
@@ -4,3 +4,8 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in superbot.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
unless ENV['SUPERBOT_USE_RUBYGEMS'] == "yes"
|
9
|
+
gem "superbot-teleport", path: "../superbot-teleport"
|
10
|
+
gem "superbot-cloud", path: "../superbot-cloud"
|
11
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
superbot (0.1.
|
4
|
+
superbot (0.1.28)
|
5
5
|
clamp (= 1.2.1)
|
6
6
|
kommando (~> 0.1)
|
7
7
|
launchy (= 2.4.3)
|
8
8
|
selenium-webdriver (~> 3.14, >= 3.14.0)
|
9
|
-
sinatra (= 2.0.
|
9
|
+
sinatra (= 2.0.4)
|
10
10
|
sinatra-silent (= 0.0.1)
|
11
|
-
superbot-cloud (~> 0.1.
|
11
|
+
superbot-cloud (~> 0.1.19)
|
12
|
+
superbot-teleport (~> 0.2.1)
|
12
13
|
zaru (= 0.2.0)
|
13
14
|
|
14
15
|
GEM
|
@@ -63,8 +64,6 @@ GEM
|
|
63
64
|
nenv (~> 0.1)
|
64
65
|
shellany (~> 0.0)
|
65
66
|
parallel (1.12.1)
|
66
|
-
parallel_tests (2.22.0)
|
67
|
-
parallel
|
68
67
|
parser (2.5.1.0)
|
69
68
|
ast (~> 2.4.0)
|
70
69
|
powerpack (0.1.1)
|
@@ -73,7 +72,7 @@ GEM
|
|
73
72
|
method_source (~> 0.9.0)
|
74
73
|
public_suffix (3.0.3)
|
75
74
|
rack (2.0.6)
|
76
|
-
rack-protection (2.0.
|
75
|
+
rack-protection (2.0.4)
|
77
76
|
rack
|
78
77
|
rainbow (3.0.0)
|
79
78
|
rake (10.5.0)
|
@@ -112,15 +111,17 @@ GEM
|
|
112
111
|
json (>= 1.8, < 3)
|
113
112
|
simplecov-html (~> 0.10.0)
|
114
113
|
simplecov-html (0.10.2)
|
115
|
-
sinatra (2.0.
|
114
|
+
sinatra (2.0.4)
|
116
115
|
mustermann (~> 1.0)
|
117
116
|
rack (~> 2.0)
|
118
|
-
rack-protection (= 2.0.
|
117
|
+
rack-protection (= 2.0.4)
|
119
118
|
tilt (~> 2.0)
|
120
119
|
sinatra-silent (0.0.1)
|
121
|
-
superbot-cloud (0.1.
|
120
|
+
superbot-cloud (0.1.19)
|
122
121
|
marcel (= 0.3.3)
|
123
122
|
multipart-post (= 2.0.0)
|
123
|
+
superbot-teleport (0.2.1)
|
124
|
+
excon
|
124
125
|
thor (0.20.0)
|
125
126
|
tilt (2.0.9)
|
126
127
|
unicode-display_width (1.3.3)
|
@@ -130,12 +131,11 @@ PLATFORMS
|
|
130
131
|
ruby
|
131
132
|
|
132
133
|
DEPENDENCIES
|
133
|
-
bundler (~> 1.
|
134
|
+
bundler (~> 1.17)
|
134
135
|
excon (~> 0.62)
|
135
136
|
guard (~> 2.14)
|
136
137
|
guard-rspec (~> 4.7)
|
137
138
|
guard-rubocop (~> 1.3)
|
138
|
-
parallel_tests (~> 2.22)
|
139
139
|
rake (~> 10.0)
|
140
140
|
rspec (~> 3.0)
|
141
141
|
rubocop (~> 0.53)
|
data/Guardfile
CHANGED
@@ -21,3 +21,19 @@ guard :rubocop do
|
|
21
21
|
watch(/.+\.rb$/)
|
22
22
|
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
23
23
|
end
|
24
|
+
|
25
|
+
guard 'process', name: 'superbot', command: 'superbot' do
|
26
|
+
watch(%r{^lib/(.+)\.rb})
|
27
|
+
end
|
28
|
+
|
29
|
+
guard :bundler do
|
30
|
+
require 'guard/bundler'
|
31
|
+
require 'guard/bundler/verify'
|
32
|
+
helper = Guard::Bundler::Verify.new
|
33
|
+
|
34
|
+
files = ['Gemfile']
|
35
|
+
files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) }
|
36
|
+
|
37
|
+
# Assume files are symlinked from somewhere
|
38
|
+
files.each { |file| watch(helper.real_path(file)) }
|
39
|
+
end
|
data/Rakefile
CHANGED
@@ -3,18 +3,15 @@
|
|
3
3
|
STDOUT.sync = true
|
4
4
|
|
5
5
|
require "bundler/gem_tasks"
|
6
|
-
require "
|
6
|
+
require "rubocop/rake_task"
|
7
7
|
require "kommando"
|
8
|
-
require "parallel_tests/tasks"
|
9
8
|
|
10
|
-
|
9
|
+
RuboCop::RakeTask.new
|
11
10
|
|
12
|
-
task default: %i[rubocop
|
11
|
+
task default: %i[rubocop spec e2e]
|
13
12
|
|
14
|
-
task :
|
15
|
-
|
16
|
-
puts "" # styling for rake
|
17
|
-
raise "offenses found" unless rubocop_k.code.zero?
|
13
|
+
task :spec do
|
14
|
+
system('rspec')
|
18
15
|
end
|
19
16
|
|
20
17
|
task :e2e do
|
data/exe/superbot
CHANGED
@@ -9,11 +9,5 @@ $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
|
9
9
|
STDOUT.sync = true
|
10
10
|
|
11
11
|
require 'superbot'
|
12
|
-
require 'superbot/cloud'
|
13
|
-
begin
|
14
|
-
require "superbot/local"
|
15
|
-
rescue LoadError
|
16
|
-
p # do nothing
|
17
|
-
end
|
18
12
|
|
19
13
|
Superbot::CLI::RootCommand.run
|
data/lib/superbot.rb
CHANGED
@@ -37,7 +37,22 @@ module Superbot
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
require "clamp"
|
41
|
+
# TODO
|
42
|
+
Clamp.allow_options_after_parameters = true
|
43
|
+
|
40
44
|
require_relative "superbot/version"
|
45
|
+
require_relative "superbot/cli/validations"
|
46
|
+
|
47
|
+
%w(cloud teleport).each do |microgem|
|
48
|
+
begin
|
49
|
+
require "superbot/#{microgem}"
|
50
|
+
rescue LoadError
|
51
|
+
puts "WARNING: superbot-#{microgem} is not installed"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
41
55
|
require_relative "superbot/project"
|
56
|
+
require_relative "superbot/convert"
|
42
57
|
require_relative "superbot/cli"
|
43
58
|
require_relative "superbot/web"
|
@@ -22,7 +22,7 @@ module Superbot
|
|
22
22
|
def convert_action(action)
|
23
23
|
case action[:type]
|
24
24
|
when 'visit' then "visit '#{action[:url]}'"
|
25
|
-
when 'click' then "find('#{action[:selector]}').click"
|
25
|
+
when 'click' then "find('#{action[:selector]}', match: :first).click"
|
26
26
|
when 'scroll' then
|
27
27
|
"page.execute_script('window.scrollBy(0,' + (page.execute_script('return document.body.scrollHeight') * #{action[:amountPercent]} / 100).to_s + ')')"
|
28
28
|
when 'resolution' then "page.driver.browser.manage.window.resize_to(#{action[:resolution].join(',')})"
|
data/lib/superbot/cli.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require_relative "new_command"
|
4
4
|
require_relative "run_command"
|
5
|
-
require_relative "teleport_command"
|
6
5
|
require_relative "version_command"
|
7
6
|
require_relative "record_command"
|
8
7
|
|
@@ -17,13 +16,20 @@ module Superbot
|
|
17
16
|
end
|
18
17
|
|
19
18
|
subcommand ["version"], "Show version information", VersionCommand
|
20
|
-
subcommand ["teleport"], "Open a teleport for superbots", TeleportCommand if ENV['SUPERBOT_FEAT_TELEPORT'] == 'true'
|
21
19
|
subcommand ["record"], "Open browser with selenium ide pre-loaded", RecordCommand if ENV['SUPERBOT_FEAT_RECORD'] == 'true'
|
22
20
|
if ENV['SUPERBOT_FEAT_PROJECT'] == 'true'
|
23
21
|
subcommand ["new"], "Create a new project", NewCommand
|
24
22
|
subcommand ["run"], "Run a project", RunCommand
|
25
23
|
end
|
26
24
|
|
25
|
+
if defined?(::Superbot::Cloud::CLI::RootCommand)
|
26
|
+
subcommand ["cloud"], "Show cloud commands", ::Superbot::Cloud::CLI::RootCommand
|
27
|
+
end
|
28
|
+
|
29
|
+
if defined?(::Superbot::Teleport::CLI::RootCommand)
|
30
|
+
subcommand ["teleport"], "Open teleport to the cloud", ::Superbot::Teleport::CLI::RootCommand
|
31
|
+
end
|
32
|
+
|
27
33
|
def self.run
|
28
34
|
super
|
29
35
|
rescue StandardError => exc
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Superbot
|
4
|
+
module Convert
|
5
|
+
module Web
|
6
|
+
def self.register(sinatra)
|
7
|
+
sinatra.helpers do
|
8
|
+
def capybara_runner
|
9
|
+
@capybara_runner ||= Superbot::Capybara::Runner.new
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
sinatra.post "/__superbot/v1/convert" do
|
14
|
+
begin
|
15
|
+
converted_script = Superbot::Capybara::Convert.call(request.body.read)
|
16
|
+
capybara_runner.run(converted_script)
|
17
|
+
halt 200
|
18
|
+
rescue SystemExit => e
|
19
|
+
e.message
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/superbot/version.rb
CHANGED
data/lib/superbot/web.rb
CHANGED
@@ -4,19 +4,15 @@ require "sinatra/base"
|
|
4
4
|
require "sinatra/silent"
|
5
5
|
require "net/http"
|
6
6
|
|
7
|
-
require_relative "capybara/convert"
|
8
|
-
require_relative "capybara/runner"
|
9
|
-
|
10
7
|
module Superbot
|
11
8
|
class Web
|
12
9
|
def initialize(webdriver_type: 'cloud', region: nil)
|
13
10
|
@sinatra = Sinatra.new
|
14
|
-
@sinatra.set :bind, ENV.fetch('
|
11
|
+
@sinatra.set :bind, ENV.fetch('SUPERBOT_BIND_ADDRESS', '127.0.0.1')
|
15
12
|
@sinatra.set :silent_sinatra, true
|
16
13
|
@sinatra.set :silent_webrick, true
|
17
14
|
@sinatra.set :silent_access_log, false
|
18
15
|
@sinatra.server_settings[:Silent] = true
|
19
|
-
instance = self
|
20
16
|
|
21
17
|
@sinatra.before do
|
22
18
|
headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS'
|
@@ -33,117 +29,23 @@ module Superbot
|
|
33
29
|
"PONG"
|
34
30
|
end
|
35
31
|
|
36
|
-
|
37
|
-
|
38
|
-
converted_script = Superbot::Capybara::Convert.call(request.body.read)
|
39
|
-
instance.capybara_runner.run(converted_script)
|
40
|
-
halt 200
|
41
|
-
rescue SystemExit => e
|
42
|
-
e.message
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
@webdriver_type = webdriver_type
|
47
|
-
webdriver_uri = URI.parse(Superbot.webdriver_endpoint(@webdriver_type))
|
48
|
-
@request_settings = {
|
49
|
-
scheme: webdriver_uri.scheme,
|
50
|
-
host: webdriver_uri.host,
|
51
|
-
port: webdriver_uri.port,
|
52
|
-
path: webdriver_uri.path
|
53
|
-
}
|
54
|
-
@region = region
|
55
|
-
|
56
|
-
%w(get post put patch delete).each do |verb|
|
57
|
-
@sinatra.send(verb, "/wd/hub/*") do
|
58
|
-
begin
|
59
|
-
request_path = request.path_info
|
60
|
-
request_path.delete!('/wd/hub', '') if @webdriver_type == 'local'
|
61
|
-
content_type 'application/json'
|
62
|
-
response = instance.remote_webdriver_request(
|
63
|
-
verb.capitalize,
|
64
|
-
request_path,
|
65
|
-
request.query_string,
|
66
|
-
request.body,
|
67
|
-
instance.incomming_headers(request)
|
68
|
-
)
|
69
|
-
status response.code
|
70
|
-
headers instance.all_headers(response)
|
71
|
-
response.body
|
72
|
-
rescue StandardError => e
|
73
|
-
error_message = "Remote webdriver doesn't respond"
|
74
|
-
puts error_message, e
|
75
|
-
halt 500, { message: error_message }.to_json
|
76
|
-
end
|
77
|
-
end
|
32
|
+
if defined?(Superbot::Teleport::Web)
|
33
|
+
Superbot::Teleport::Web.register(@sinatra, webdriver_type: webdriver_type, region: region)
|
78
34
|
end
|
35
|
+
Superbot::Cloud::Web.register(@sinatra) if defined?(Superbot::Cloud::Web)
|
36
|
+
Superbot::Convert::Web.register(@sinatra) if defined?(Superbot::Convert::Web)
|
79
37
|
end
|
80
38
|
|
81
|
-
def
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
def remote_webdriver_request(type, path, query_string, body, new_headers)
|
86
|
-
uri = URI.const_get(@request_settings[:scheme].upcase).build(
|
87
|
-
@request_settings.merge(
|
88
|
-
path: @request_settings[:path] + path,
|
89
|
-
query: query_string.empty? ? nil : query_string
|
90
|
-
)
|
91
|
-
)
|
92
|
-
req = Net::HTTP.const_get(type).new(uri, new_headers.merge('Content-Type' => 'application/json'))
|
93
|
-
|
94
|
-
request_body = body.read
|
95
|
-
if cloud_teleport?
|
96
|
-
user_auth_creds = Superbot::Cloud.credentials&.slice(:username, :token)
|
97
|
-
req.basic_auth(*user_auth_creds.values) if user_auth_creds
|
98
|
-
|
99
|
-
if @region && creating_session?(type, path)
|
100
|
-
parsed_body = JSON.parse(request_body)
|
101
|
-
parsed_body['desiredCapabilities']['superOptions'] = { 'region': @region }
|
102
|
-
request_body = parsed_body.to_json
|
103
|
-
end
|
104
|
-
end
|
105
|
-
req.body = request_body
|
106
|
-
|
107
|
-
Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
108
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
109
|
-
http.read_timeout = Superbot.cloud_timeout
|
110
|
-
http.request(req)
|
111
|
-
end.tap do |response|
|
112
|
-
output_response_errors(response)
|
113
|
-
end
|
39
|
+
def self.run!(options = { webdriver_type: 'cloud', region: nil })
|
40
|
+
new(options).tap(&:run!)
|
114
41
|
end
|
115
42
|
|
116
|
-
def
|
117
|
-
|
118
|
-
end
|
119
|
-
|
120
|
-
def creating_session?(method, path)
|
121
|
-
method.casecmp?('post') && path == '/session'
|
122
|
-
end
|
123
|
-
|
124
|
-
def all_headers(response)
|
125
|
-
header_list = {}
|
126
|
-
response.header.each_capitalized do |k, v|
|
127
|
-
header_list[k] = v unless k == "Transfer-Encoding"
|
128
|
-
end
|
129
|
-
header_list
|
130
|
-
end
|
131
|
-
|
132
|
-
def incomming_headers(request)
|
133
|
-
request.env.map { |header, value| [header[5..-1].split("_").map(&:capitalize).join('-'), value] if header.start_with?("HTTP_") }.compact.to_h
|
134
|
-
end
|
135
|
-
|
136
|
-
def output_response_errors(response)
|
137
|
-
return unless response.is_a?(Net::HTTPClientError) || response.is_a?(Net::HTTPServerError)
|
138
|
-
|
139
|
-
parsed_body = JSON.parse(response.body, symbolize_names: true)
|
140
|
-
puts "Error: #{parsed_body[:error]}"
|
141
|
-
rescue JSON::ParserError
|
142
|
-
puts "Request to webdriver failed with status: #{response.code}"
|
43
|
+
def run_async!
|
44
|
+
@sinatra.run_async!
|
143
45
|
end
|
144
46
|
|
145
47
|
def run!
|
146
|
-
@sinatra.
|
48
|
+
@sinatra.run!
|
147
49
|
end
|
148
50
|
|
149
51
|
def run_async_after_running!
|
data/superbot.gemspec
CHANGED
@@ -34,19 +34,19 @@ Gem::Specification.new do |spec|
|
|
34
34
|
|
35
35
|
spec.add_runtime_dependency "clamp", "1.2.1"
|
36
36
|
spec.add_runtime_dependency "zaru", "0.2.0"
|
37
|
-
spec.add_runtime_dependency "sinatra", "2.0.
|
37
|
+
spec.add_runtime_dependency "sinatra", "2.0.4"
|
38
38
|
spec.add_runtime_dependency "launchy", "2.4.3"
|
39
39
|
spec.add_runtime_dependency "sinatra-silent", "0.0.1"
|
40
40
|
spec.add_runtime_dependency "kommando", "~> 0.1"
|
41
|
-
spec.add_runtime_dependency "superbot-cloud", "~> 0.1.
|
41
|
+
spec.add_runtime_dependency "superbot-cloud", "~> 0.1.19"
|
42
|
+
spec.add_runtime_dependency "superbot-teleport", "~> 0.2.1"
|
42
43
|
spec.add_runtime_dependency "selenium-webdriver", "~> 3.14", ">= 3.14.0"
|
43
44
|
|
44
|
-
spec.add_development_dependency "bundler", "~> 1.
|
45
|
+
spec.add_development_dependency "bundler", "~> 1.17"
|
45
46
|
spec.add_development_dependency "rake", "~> 10.0"
|
46
47
|
spec.add_development_dependency "rspec", "~> 3.0"
|
47
48
|
spec.add_development_dependency "rubocop", "~> 0.53"
|
48
49
|
spec.add_development_dependency "simplecov", "~> 0.16"
|
49
|
-
spec.add_development_dependency "parallel_tests", "~> 2.22"
|
50
50
|
spec.add_development_dependency "excon", "~> 0.62"
|
51
51
|
|
52
52
|
spec.add_development_dependency "guard", "~> 2.14"
|
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.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Superbots
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.0.
|
47
|
+
version: 2.0.4
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.0.
|
54
|
+
version: 2.0.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: launchy
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,48 +100,62 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.1.
|
103
|
+
version: 0.1.19
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.1.
|
110
|
+
version: 0.1.19
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: superbot-teleport
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: 3.14.0
|
117
|
+
version: 0.2.1
|
121
118
|
type: :runtime
|
122
119
|
prerelease: false
|
123
120
|
version_requirements: !ruby/object:Gem::Requirement
|
124
121
|
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.2.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: selenium-webdriver
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 3.14.0
|
125
132
|
- - "~>"
|
126
133
|
- !ruby/object:Gem::Version
|
127
134
|
version: '3.14'
|
135
|
+
type: :runtime
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
128
139
|
- - ">="
|
129
140
|
- !ruby/object:Gem::Version
|
130
141
|
version: 3.14.0
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3.14'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: bundler
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
134
148
|
requirements:
|
135
149
|
- - "~>"
|
136
150
|
- !ruby/object:Gem::Version
|
137
|
-
version: '1.
|
151
|
+
version: '1.17'
|
138
152
|
type: :development
|
139
153
|
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
156
|
- - "~>"
|
143
157
|
- !ruby/object:Gem::Version
|
144
|
-
version: '1.
|
158
|
+
version: '1.17'
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
160
|
name: rake
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,20 +212,6 @@ dependencies:
|
|
198
212
|
- - "~>"
|
199
213
|
- !ruby/object:Gem::Version
|
200
214
|
version: '0.16'
|
201
|
-
- !ruby/object:Gem::Dependency
|
202
|
-
name: parallel_tests
|
203
|
-
requirement: !ruby/object:Gem::Requirement
|
204
|
-
requirements:
|
205
|
-
- - "~>"
|
206
|
-
- !ruby/object:Gem::Version
|
207
|
-
version: '2.22'
|
208
|
-
type: :development
|
209
|
-
prerelease: false
|
210
|
-
version_requirements: !ruby/object:Gem::Requirement
|
211
|
-
requirements:
|
212
|
-
- - "~>"
|
213
|
-
- !ruby/object:Gem::Version
|
214
|
-
version: '2.22'
|
215
215
|
- !ruby/object:Gem::Dependency
|
216
216
|
name: excon
|
217
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -303,9 +303,10 @@ files:
|
|
303
303
|
- lib/superbot/cli/record_command.rb
|
304
304
|
- lib/superbot/cli/root_command.rb
|
305
305
|
- lib/superbot/cli/run_command.rb
|
306
|
-
- lib/superbot/cli/teleport_command.rb
|
307
306
|
- lib/superbot/cli/validations.rb
|
308
307
|
- lib/superbot/cli/version_command.rb
|
308
|
+
- lib/superbot/convert.rb
|
309
|
+
- lib/superbot/convert/web.rb
|
309
310
|
- lib/superbot/project.rb
|
310
311
|
- lib/superbot/version.rb
|
311
312
|
- lib/superbot/web.rb
|
@@ -330,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
330
331
|
version: '0'
|
331
332
|
requirements: []
|
332
333
|
rubyforge_project:
|
333
|
-
rubygems_version: 2.7.
|
334
|
+
rubygems_version: 2.7.8
|
334
335
|
signing_key:
|
335
336
|
specification_version: 4
|
336
337
|
summary: Superbot Testing
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "superbot/cloud/cli/cloud/validations"
|
4
|
-
|
5
|
-
module Superbot
|
6
|
-
module CLI
|
7
|
-
class TeleportCommand < Clamp::Command
|
8
|
-
include Superbot::Validations
|
9
|
-
include Superbot::Cloud::Validations
|
10
|
-
|
11
|
-
option ['--browser'], 'BROWSER', "Browser type to use. Can be either local or cloud", default: 'cloud' do |browser|
|
12
|
-
validates_browser_type browser
|
13
|
-
end
|
14
|
-
option ['--region'], 'REGION', 'Region for remote webdriver'
|
15
|
-
|
16
|
-
def execute
|
17
|
-
require_login unless browser == 'local'
|
18
|
-
|
19
|
-
@web = Superbot::Web.new(webdriver_type: browser, region: region)
|
20
|
-
@web.run_async_after_running!
|
21
|
-
|
22
|
-
@chromedriver = Kommando.run_async 'chromedriver --silent --port=9515' if browser == 'local'
|
23
|
-
|
24
|
-
puts "", "🤖 Teleport is open ☁️ "
|
25
|
-
puts "", "Configure your webdriver to http://localhost:4567/wd/hub"
|
26
|
-
puts "", "Press [control+c] to close teleport"
|
27
|
-
|
28
|
-
handle_keyboard_interrupt
|
29
|
-
ensure
|
30
|
-
close_teleport
|
31
|
-
end
|
32
|
-
|
33
|
-
def handle_keyboard_interrupt
|
34
|
-
@interrupted = false
|
35
|
-
|
36
|
-
trap "SIGINT" do
|
37
|
-
puts
|
38
|
-
puts "Command killed by keyboard interrupt"
|
39
|
-
@interrupted = true
|
40
|
-
exit 130
|
41
|
-
end
|
42
|
-
|
43
|
-
loop do
|
44
|
-
break if @interrupted
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def close_teleport
|
49
|
-
@chromedriver&.kill
|
50
|
-
@web&.quit!
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|