crabfarm 0.3.3 → 0.3.4

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