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 +4 -4
- data/lib/crabfarm/adapters/browser/abstract_webdriver.rb +1 -6
- data/lib/crabfarm/adapters/browser/chrome.rb +2 -8
- data/lib/crabfarm/adapters/browser/firefox.rb +2 -10
- data/lib/crabfarm/adapters/browser/phantom_js.rb +12 -16
- data/lib/crabfarm/adapters/browser/remote_webdriver.rb +2 -15
- data/lib/crabfarm/configuration.rb +1 -1
- data/lib/crabfarm/modes/recorder.rb +42 -12
- data/lib/crabfarm/support/webdriver_factory.rb +59 -0
- data/lib/crabfarm/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c304e14669cf10f756664e0971f04051644c41ed
|
4
|
+
data.tar.gz: 820b288d8a92ce0d9fdb2bba0a61441f49b773c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
|
2
|
-
require
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
@@ -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
|
11
|
+
def memento_path(_name)
|
10
12
|
File.join(GlobalState.mementos_path, _name + '.json.gz')
|
11
13
|
end
|
12
14
|
|
13
|
-
def
|
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
|
-
|
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
|
-
|
29
|
-
|
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
|
data/lib/crabfarm/version.rb
CHANGED
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.
|
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
|