superbot 0.1.27 → 0.1.28

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: c0e0a593137e0fee2b1e9d1a16c2a31a6bcf6460ae0c87cc1653b440a07a4834
4
- data.tar.gz: 5f17e4f9438919334e73a17bfb327a24d494bdf27bb2b3f6b656dd3a8777f4fd
3
+ metadata.gz: 0a030454c627c3f1cbc0e8006637461cb768b907f3d16c52666e764f0e78a5c5
4
+ data.tar.gz: cda49595f023bc77c46fea4ada2a098ecf9c12806aebcc192304040f20a068d2
5
5
  SHA512:
6
- metadata.gz: d285eec9a6a897ac2268a1e0aa668d5492a461026b7694b934851652edd1a5cd9e08f64fae27057eb711c4d1b6f611c7bb6bf7a17c09368738455261f65d4694
7
- data.tar.gz: 5e65c38193312991b20bc767a29d5397b5134b4779a8ce956a2b09e864885648262522af0edd3a9fd3e20d7befd0d26ff3971315e3b114068d9e6f4277e255a4
6
+ metadata.gz: 48016bbb28209f550254a4f5633e6e38b5e8c9cea39a7923c59bbc9b86bc311ceb506b67f31f5224efaacbe9b6ee441489f75d93d9f547852cc49ec4e957f719
7
+ data.tar.gz: 5ba44971d978bf268695d15ace642b0c86159f1ae567563f191806df4932afab23b8e84d9fc64caa6356191668a2fad53589235794b8d9fc5ee3eba3d123b8c0
data/.rubocop.relaxed.yml CHANGED
@@ -137,6 +137,9 @@ Lint/AssignmentInCondition:
137
137
  Enabled: false
138
138
  StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition
139
139
 
140
+ Lint/NestedMethodDefinition:
141
+ Enabled: false
142
+
140
143
  Metrics/AbcSize:
141
144
  Enabled: false
142
145
 
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.16.2
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.27)
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.3)
9
+ sinatra (= 2.0.4)
10
10
  sinatra-silent (= 0.0.1)
11
- superbot-cloud (~> 0.1.18)
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.3)
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.3)
114
+ sinatra (2.0.4)
116
115
  mustermann (~> 1.0)
117
116
  rack (~> 2.0)
118
- rack-protection (= 2.0.3)
117
+ rack-protection (= 2.0.4)
119
118
  tilt (~> 2.0)
120
119
  sinatra-silent (0.0.1)
121
- superbot-cloud (0.1.18)
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.16)
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 "rspec/core/rake_task"
6
+ require "rubocop/rake_task"
7
7
  require "kommando"
8
- require "parallel_tests/tasks"
9
8
 
10
- RSpec::Core::RakeTask.new(:spec)
9
+ RuboCop::RakeTask.new
11
10
 
12
- task default: %i[rubocop parallel:spec e2e]
11
+ task default: %i[rubocop spec e2e]
13
12
 
14
- task :rubocop do
15
- rubocop_k = Kommando.puts "rubocop"
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
@@ -1,13 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "clamp"
4
- # TODO
5
- Clamp.allow_options_after_parameters = true
6
-
7
3
  module Superbot
8
4
  module CLI
9
5
  end
10
6
  end
11
7
 
12
- require_relative "cli/validations"
13
8
  require_relative "cli/root_command"
@@ -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,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "capybara/convert"
4
+ require_relative "capybara/runner"
5
+ require_relative "convert/web"
6
+
7
+ module Superbot
8
+ module Convert
9
+ end
10
+ end
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Superbot
4
- VERSION = "0.1.27"
4
+ VERSION = "0.1.28"
5
5
  end
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('SUPERBOT_TELEPORT_BIND_ADDRESS', '127.0.0.1')
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
- @sinatra.post "/__superbot/v1/convert" do
37
- begin
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 capybara_runner
82
- @capybara_runner ||= Superbot::Capybara::Runner.new
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 cloud_teleport?
117
- %w(cloud local_cloud).include?(@webdriver_type)
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.run_async!
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.3"
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.18"
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.16"
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.27
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-05 00:00:00.000000000 Z
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.3
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.3
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.18
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.18
110
+ version: 0.1.19
111
111
  - !ruby/object:Gem::Dependency
112
- name: selenium-webdriver
112
+ name: superbot-teleport
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.14'
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.16'
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.16'
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.6
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