crabfarm 0.3.3 → 0.3.4

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
  SHA1:
3
- metadata.gz: 4d125e666643d25a2a8ec454491bbbff92cf7f08
4
- data.tar.gz: 20e33641d3f93933b304ef6aae3b3872f4eff6f9
3
+ metadata.gz: c304e14669cf10f756664e0971f04051644c41ed
4
+ data.tar.gz: 820b288d8a92ce0d9fdb2bba0a61441f49b773c5
5
5
  SHA512:
6
- metadata.gz: 275850f791673c8a6357092d5a88ce63caeb18daf5e93446eee809181a258aa5e8309a604ce1e70401e66b4072be5a86377f576407da1414d02a02f3a8346416
7
- data.tar.gz: d28ed53ade466f34d05564be93486cab3b48fb94ad4e94799bf81afe3516a1ff2a974963e758841dfc87562f1490e9c42c1f3b01eead193feb51ceaa333c3d9e
6
+ metadata.gz: 00c1879c2ec15db0706a42970822cc8b3431f602f224b51b2f8ea0e3ee4fb194020bb1299d191b90d00b541ec93941b85f75454446e24d46d65e3a1979f03a03
7
+ data.tar.gz: 2bdff2459cf55d9c936fa48d34af8e82d66df08d0e97ed7062dac4e1c6c79c14bcd4eeac53f76e9b3e4da434ae3bc30c9e0bb7630aad2cadee37afe53cf3bcef
@@ -19,12 +19,7 @@ module Crabfarm
19
19
  end
20
20
 
21
21
  def build_driver(_session_id)
22
-
23
- # load driver and configure general selenium settings
24
- driver = build_webdriver_instance
25
- driver.manage.window.resize_to(config[:window_width], config[:window_height]) rescue nil
26
-
27
- return wrap_driver driver
22
+ return wrap_driver build_webdriver_instance
28
23
  end
29
24
 
30
25
  def release_driver(_driver)
@@ -1,3 +1,4 @@
1
+ require 'crabfarm/support/webdriver_factory'
1
2
  require "crabfarm/adapters/browser/abstract_webdriver"
2
3
 
3
4
  module Crabfarm
@@ -8,14 +9,7 @@ module Crabfarm
8
9
  private
9
10
 
10
11
  def build_webdriver_instance
11
- switches = []
12
-
13
- if config[:proxy].present?
14
- switches << "--proxy-server=#{config[:proxy]}"
15
- switches << "--ignore-certificate-errors"
16
- end
17
-
18
- Selenium::WebDriver.for :chrome, :switches => switches
12
+ Support::WebdriverFactory.build_chrome_driver config
19
13
  end
20
14
 
21
15
  end
@@ -1,3 +1,4 @@
1
+ require 'crabfarm/support/webdriver_factory'
1
2
  require "crabfarm/adapters/browser/abstract_webdriver"
2
3
 
3
4
  module Crabfarm
@@ -8,16 +9,7 @@ module Crabfarm
8
9
  private
9
10
 
10
11
  def build_webdriver_instance
11
- profile = Selenium::WebDriver::Firefox::Profile.new
12
-
13
- if config.key? :proxy
14
- profile.proxy = Selenium::WebDriver::Proxy.new({
15
- :http => config[:proxy],
16
- :ssl => config[:proxy]
17
- })
18
- end
19
-
20
- Selenium::WebDriver.for :firefox, :profile => profile
12
+ Support::WebdriverFactory.build_firefox_driver config
21
13
  end
22
14
 
23
15
  end
@@ -1,5 +1,6 @@
1
- require "crabfarm/adapters/browser/abstract_webdriver"
2
- require "crabfarm/phantom_runner"
1
+ require 'crabfarm/support/webdriver_factory'
2
+ require 'crabfarm/adapters/browser/abstract_webdriver'
3
+ require 'crabfarm/phantom_runner'
3
4
 
4
5
  module Crabfarm
5
6
  module Adapters
@@ -18,19 +19,7 @@ module Crabfarm
18
19
  private
19
20
 
20
21
  def build_webdriver_instance
21
- client = Selenium::WebDriver::Remote::Http::Default.new
22
- client.timeout = config[:remote_timeout]
23
-
24
- driver = Selenium::WebDriver.for :remote, {
25
- :url => phantom_url,
26
- :http_client => client,
27
- :desired_capabilities => config[:capabilities] || Selenium::WebDriver::Remote::Capabilities.firefox
28
- }
29
-
30
- # TODO: not sure if this is necessary...
31
- # driver.send(:bridge).setWindowSize(config[:window_width], config[:window_height])
32
-
33
- return driver
22
+ Support::WebdriverFactory.build_remote_driver driver_config
34
23
  end
35
24
 
36
25
  def load_and_start_phantom
@@ -49,10 +38,17 @@ module Crabfarm
49
38
  }
50
39
  end
51
40
 
52
- def phantom_url
41
+ def phantom_url
53
42
  "http://localhost:#{@phantom.port}"
54
43
  end
55
44
 
45
+ def driver_config
46
+ config.merge({
47
+ remote_host: phantom_url,
48
+ proxy: nil
49
+ })
50
+ end
51
+
56
52
  end
57
53
  end
58
54
  end
@@ -1,3 +1,4 @@
1
+ require 'crabfarm/support/webdriver_factory'
1
2
  require "crabfarm/adapters/browser/abstract_webdriver"
2
3
 
3
4
  module Crabfarm
@@ -8,21 +9,7 @@ module Crabfarm
8
9
  private
9
10
 
10
11
  def build_webdriver_instance
11
- client = Selenium::WebDriver::Remote::Http::Default.new
12
- client.timeout = config[:remote_timeout]
13
-
14
- if config.has_key? :proxy
15
- client.proxy = Selenium::WebDriver::Proxy.new({
16
- :http => config[:proxy],
17
- :ssl => config[:proxy]
18
- })
19
- end
20
-
21
- Selenium::WebDriver.for(:remote, {
22
- :url => config[:remote_host],
23
- :http_client => client,
24
- :desired_capabilities => config[:capabilities] || Selenium::WebDriver::Remote::Capabilities.firefox
25
- })
12
+ WebdriverFactory.build_remote_driver config
26
13
  end
27
14
 
28
15
  end
@@ -65,7 +65,7 @@ module Crabfarm
65
65
  phantom_ssl: 'any',
66
66
  phantom_bin_path: 'phantomjs',
67
67
  crabtrap_bin_path: 'crabtrap',
68
- recorder_driver: :firefox
68
+ recorder_driver: :chrome
69
69
  }
70
70
  end
71
71
 
@@ -1,33 +1,28 @@
1
1
  require 'rainbow'
2
2
  require 'rainbow/ext/string'
3
+ require 'crabfarm/support/webdriver_factory'
3
4
  require 'crabfarm/crabtrap_runner'
4
5
 
5
6
  module Crabfarm
6
7
  module Modes
7
8
  module Recorder
9
+ extend self
8
10
 
9
- def self.memento_path(_name)
11
+ def memento_path(_name)
10
12
  File.join(GlobalState.mementos_path, _name + '.json.gz')
11
13
  end
12
14
 
13
- def self.start(_target, _replay=false)
15
+ def start(_target, _replay=false)
14
16
  return puts "Must provide a recording target" unless _target.is_a? String
15
17
 
16
18
  target_path = memento_path _target
17
19
  return puts "Memento file does not exist: #{target_path}" if _replay and not File.exist? target_path
18
20
 
19
- crabtrap_config = Crabfarm.config.crabtrap_config
20
- crabtrap_config[:mode] = _replay ? :replay : :capture
21
- crabtrap_config[:port] = Utils::PortDiscovery.find_available_port
22
- crabtrap_config[:bucket_path] = target_path
23
-
24
- crabtrap = CrabtrapRunner.new crabtrap_config
25
- crabtrap.start
21
+ start_crabtrap _replay, target_path
26
22
 
27
23
  begin
28
- browser_name = Crabfarm.config.recorder_driver
29
- browser_factory = Strategies.load(:browser, browser_name).new "127.0.0.1:#{crabtrap.port}"
30
- driver = browser_factory.build_driver nil
24
+ driver = build_driver Crabfarm.config.recorder_driver
25
+ return puts "Invalid recorder_driver name '#{Crabfarm.config.recorder_driver}'" if driver.nil?
31
26
 
32
27
  begin
33
28
  puts "Press Ctrl-C or close browser to stop #{_replay ? 'playback' : 'capturing'}."
@@ -46,6 +41,41 @@ module Crabfarm
46
41
  end
47
42
  end
48
43
 
44
+ private
45
+
46
+ def start_crabtrap(_replay, _target_path)
47
+ crabtrap_config = Crabfarm.config.crabtrap_config
48
+ crabtrap_config[:mode] = _replay ? :replay : :capture
49
+ crabtrap_config[:port] = Utils::PortDiscovery.find_available_port
50
+ crabtrap_config[:bucket_path] = _target_path
51
+
52
+ @crabtrap = CrabtrapRunner.new crabtrap_config
53
+ @crabtrap.start
54
+ end
55
+
56
+ def crabtrap
57
+ @crabtrap
58
+ end
59
+
60
+ def build_driver(_name)
61
+ case _name.to_sym
62
+ when :firefox
63
+ Crabfarm::Support::WebdriverFactory.build_firefox_driver driver_config
64
+ when :chrome
65
+ Crabfarm::Support::WebdriverFactory.build_chrome_driver driver_config
66
+ else return nil end
67
+ end
68
+
69
+ def driver_config
70
+ {
71
+ proxy: "127.0.0.1:#{crabtrap.port}",
72
+ window_width: Crabfarm.config.webdriver_window_width,
73
+ window_height: Crabfarm.config.webdriver_window_height
74
+ }
75
+ end
76
+
77
+
78
+
49
79
  end
50
80
  end
51
81
  end
@@ -0,0 +1,59 @@
1
+ require 'selenium-webdriver'
2
+
3
+ module Crabfarm
4
+ module Support
5
+ module WebdriverFactory
6
+ extend self
7
+
8
+ def build_chrome_driver(_options={})
9
+ switches = []
10
+
11
+ if _options[:proxy].present?
12
+ switches << "--proxy-server=#{_options[:proxy]}"
13
+ switches << "--ignore-certificate-errors"
14
+ end
15
+
16
+ common_setup Selenium::WebDriver.for(:chrome, :switches => switches), _options
17
+ end
18
+
19
+ def build_firefox_driver(_options={})
20
+ profile = Selenium::WebDriver::Firefox::Profile.new
21
+
22
+ if _options[:proxy].present?
23
+ profile.proxy = Selenium::WebDriver::Proxy.new({
24
+ :http => _options[:proxy],
25
+ :ssl => _options[:proxy]
26
+ })
27
+ end
28
+
29
+ common_setup Selenium::WebDriver.for(:firefox, :profile => profile), _options
30
+ end
31
+
32
+ def build_remote_driver(_options={})
33
+ client = Selenium::WebDriver::Remote::Http::Default.new
34
+ client.timeout = _options[:remote_timeout]
35
+
36
+ if _options[:proxy].present?
37
+ client.proxy = Selenium::WebDriver::Proxy.new({
38
+ :http => _options[:proxy],
39
+ :ssl => _options[:proxy]
40
+ })
41
+ end
42
+
43
+ common_setup(Selenium::WebDriver.for(:remote, {
44
+ :url => _options[:remote_host],
45
+ :http_client => client,
46
+ :desired_capabilities => _options[:capabilities] || Selenium::WebDriver::Remote::Capabilities.firefox
47
+ }), _options)
48
+ end
49
+
50
+ private
51
+
52
+ def common_setup(_driver, _options)
53
+ _driver.manage.window.resize_to(_options[:window_width], _options[:window_height]) rescue nil
54
+ return _driver
55
+ end
56
+
57
+ end
58
+ end
59
+ end
@@ -1,3 +1,3 @@
1
1
  module Crabfarm
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crabfarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
@@ -420,6 +420,7 @@ files:
420
420
  - lib/crabfarm/strategies.rb
421
421
  - lib/crabfarm/support/custom_puma.rb
422
422
  - lib/crabfarm/support/gli.rb
423
+ - lib/crabfarm/support/webdriver_factory.rb
423
424
  - lib/crabfarm/templates/boot.rb.erb
424
425
  - lib/crabfarm/templates/crabfarm_bin.erb
425
426
  - lib/crabfarm/templates/Crabfile.erb