browser_shooter 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ pkg/*
5
5
  tmp
6
6
  .rvmrc
7
7
  shoots/
8
+ etc
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
data/README.md CHANGED
@@ -32,7 +32,7 @@ Repeat this steps in every VM.
32
32
  Create a YAML file like this:
33
33
 
34
34
  # myconfig.yml
35
- shoots_path: "/tmp/shoots"
35
+ output_path: "/tmp/shoots"
36
36
 
37
37
  scripts:
38
38
  google:
@@ -73,10 +73,8 @@ Look in the `examples` folder for more complete examples.
73
73
 
74
74
  The screenshots will be stored in:
75
75
 
76
- /<shoots_path>/<time_stamp>/<script_name>_<browser_name>[_<sufix>].png
76
+ /<output_path>/<time_stamp>/<script_name>_<browser_name>[_<sufix>].png
77
77
 
78
78
  ## Status
79
79
 
80
- Still in a _discovery_ state.. no tests.
81
-
82
- But is functional a can be usefull in no-production environments.
80
+ Still in a _discovery_ state.. but is already **functional**.
data/bin/browser_shooter CHANGED
File without changes
@@ -15,6 +15,8 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
17
17
  s.add_development_dependency "rake", "0.9.2.2"
18
+ s.add_development_dependency "mocha"
19
+
18
20
  s.add_dependency "selenium-webdriver"
19
21
  s.add_dependency "selenium"
20
22
  s.add_dependency "selenium-client"
data/examples/config1.yml CHANGED
@@ -1,4 +1,4 @@
1
- shoots_path: "~/browser_shoots"
1
+ output_path: "~/browser_shoots"
2
2
 
3
3
  scripts:
4
4
  google:
data/examples/config2.yml CHANGED
@@ -1,4 +1,4 @@
1
- shoots_path: "~/browser_shoots"
1
+ output_path: "~/browser_shoots"
2
2
 
3
3
  scripts:
4
4
  brandengage:
data/examples/config3.yml CHANGED
@@ -1,4 +1,4 @@
1
- shoots_path: "~/browser_shoots"
1
+ output_path: "~/browser_shoots"
2
2
 
3
3
  scripts:
4
4
  dedicated_bareplayer:
@@ -0,0 +1,26 @@
1
+ output_path: "~/browser_shooter"
2
+
3
+ scripts:
4
+ lightbox:
5
+ name: "lightbox"
6
+ url: "http://localhost:3000"
7
+ commands: |
8
+ open "/test/browser_shooter/lightbox_bareplayer.html"
9
+ window_maximize
10
+ pause 5
11
+ alert
12
+ click "link=Show video"
13
+ pause 5
14
+ select_frame "_sp_wiframe"
15
+ run_script "$f().play()"
16
+ wait_for_element "css=span.enabled", :timeout_in_seconds => 15
17
+ click "css=span.enabled"
18
+ pause 5
19
+ alert
20
+
21
+ browsers:
22
+ windows-firefox:
23
+ name: "osx-firefox"
24
+ host: 127.0.0.1
25
+ port: 4444
26
+ browser: "*firefox"
@@ -0,0 +1,18 @@
1
+ output_path: "~/browser_shooter"
2
+
3
+ scripts:
4
+ lightbox:
5
+ name: "lightbox"
6
+ url: "http://localhost:3000"
7
+ commands: |
8
+ open "/test/browser_shooter/lightbox_bareplayer.html"
9
+ window_maximize
10
+ shot
11
+
12
+
13
+ browsers:
14
+ windows-firefox:
15
+ name: "osx-firefox"
16
+ host: 127.0.0.1
17
+ port: 4444
18
+ browser: "*firefox"
@@ -1,6 +1,6 @@
1
1
  class BrowserShooter
2
2
  module Commander
3
- def self.execute( command, client, shoot_path )
3
+ def self.execute( command, client, output_path )
4
4
  BrowserShooter::Logger.log "command: #{command}"
5
5
 
6
6
  if( command.split[0].strip == "shot" )
@@ -8,7 +8,7 @@ class BrowserShooter
8
8
 
9
9
  BrowserShooter::Commander.shot(
10
10
  client,
11
- shoot_path,
11
+ output_path,
12
12
  sufix
13
13
  )
14
14
 
@@ -17,7 +17,7 @@ class BrowserShooter
17
17
 
18
18
  BrowserShooter::Commander.shot_system(
19
19
  client,
20
- shoot_path,
20
+ output_path,
21
21
  sufix
22
22
  )
23
23
 
@@ -30,6 +30,36 @@ class BrowserShooter
30
30
  end
31
31
  end
32
32
 
33
+ def self.wrapper_execute( command, client, output_path )
34
+ result = {
35
+ :time => Time.now.to_i,
36
+ :command => command
37
+ }
38
+
39
+ begin
40
+ message =
41
+ BrowserShooter::Commander.execute(
42
+ command,
43
+ client,
44
+ output_path
45
+ )
46
+
47
+ result.merge!(
48
+ :success => true,
49
+ :message => message
50
+ )
51
+
52
+ rescue Exception => e
53
+ result.merge!(
54
+ :success => false,
55
+ :message => e.message
56
+ )
57
+
58
+ end
59
+
60
+ return result
61
+ end
62
+
33
63
  def self.shot( client, path, sufix = nil )
34
64
  sufix = "_#{sufix}" unless sufix.nil?
35
65
  path = "#{path}#{sufix}.png"
@@ -39,22 +69,28 @@ class BrowserShooter
39
69
  File.open( path, "wb" ) do |f|
40
70
  f.write( Base64.decode64( client.capture_entire_page_screenshot_to_string( "" ) ) )
41
71
  end
72
+
73
+ return path
42
74
  end
43
75
 
44
76
  def self.shot_system( client, path, sufix = nil )
45
77
  sufix = "_#{sufix}" unless sufix.nil?
46
- path = "#{path}#{sufix}_system.png"
78
+ path = "#{path}#{sufix}.system.png"
47
79
 
48
80
  BrowserShooter::Logger.log "shooting system in '#{path}'"
49
81
 
50
- File.open( "#{path}.screen.png", "wb" ) do |f|
82
+ File.open( path, "wb" ) do |f|
51
83
  f.write( Base64.decode64( client.capture_screenshot_to_string ) )
52
84
  end
85
+
86
+ return path
53
87
  end
54
88
 
55
89
  def self.pause( seconds )
56
90
  BrowserShooter::Logger.log "pausing #{seconds} seconds"
57
- sleep seconds
91
+ Kernel.sleep seconds
92
+
93
+ return "#{seconds} later..."
58
94
  end
59
95
  end
60
96
  end
@@ -0,0 +1,31 @@
1
+ class BrowserShooter
2
+ module Configurator
3
+ def self.load_config( config_file_path )
4
+ config = {
5
+ "output_path" => "~/browser_shooter",
6
+ "logs_format" => "csv"
7
+ }
8
+
9
+ config.merge! YAML.load_file( config_file_path )
10
+
11
+ config["output_path"] = set_up_output_path( config["output_path"] )
12
+
13
+ config
14
+ end
15
+
16
+ def self.set_up_output_path( output_path )
17
+ output_path = File.expand_path( "#{output_path}/#{timestamp}" )
18
+ BrowserShooter::Logger.log( "output_path: #{output_path}" )
19
+
20
+ FileUtils.mkdir_p( output_path )
21
+ FileUtils.mkdir( "#{output_path}/shots" )
22
+ FileUtils.mkdir( "#{output_path}/logs" )
23
+
24
+ output_path
25
+ end
26
+
27
+ def self.timestamp
28
+ Time.now.strftime("%Y%m%d%H%M%S")
29
+ end
30
+ end
31
+ end
@@ -1,11 +1,11 @@
1
1
  class BrowserShooter
2
2
  module Driver
3
- def self.run_script_on_browser(script, browser, shoots_path)
4
- BrowserShooter::Logger.log "Runing script '#{script["name"]}' with url '#{script["url"]}' in browser '#{browser["name"]}'"
5
-
3
+ def self.run_script_on_browser(script, browser, output_path)
6
4
  client = nil
7
5
 
8
6
  begin
7
+ BrowserShooter::Logger.log "Runing script '#{script["name"]}' with url '#{script["url"]}' in browser '#{browser["name"]}'"
8
+
9
9
  client =
10
10
  Selenium::Client::Driver.new(
11
11
  :host => browser["host"],
@@ -17,17 +17,16 @@ class BrowserShooter
17
17
 
18
18
  client.start_new_browser_session
19
19
 
20
- script["commands"].lines.each do |command|
21
- BrowserShooter::Commander.execute(
22
- command,
23
- client,
24
- "#{shoots_path}/#{script["name"]}_#{browser["name"]}"
25
- )
26
- end
20
+ logs =
21
+ script["commands"].lines.map do |command|
22
+ BrowserShooter::Commander.wrapper_execute(
23
+ command.strip,
24
+ client,
25
+ "#{output_path}/#{script["name"]}_#{browser["name"]}"
26
+ )
27
+ end
27
28
 
28
- rescue Exception => e
29
- BrowserShooter::Logger.log "ERROR: #{e.message}"
30
- # puts e.backtrace
29
+ logs
31
30
 
32
31
  ensure
33
32
  client.close_current_browser_session if client
@@ -0,0 +1,28 @@
1
+ class BrowserShooter
2
+ module LogExporter
3
+ def self.export( path, logs, format )
4
+ BrowserShooter::Logger.log "Exporting '#{format}' logs to #{path}"
5
+ send(:"export_to_#{format}", path, logs )
6
+ end
7
+
8
+ def self.export_to_json( path, logs )
9
+ File.open( "#{path}.json", "w" ) do |f|
10
+ f.write JSON.pretty_generate( logs )
11
+ end
12
+ end
13
+
14
+ def self.export_to_csv( path, logs )
15
+ logs.each do |script_name, results|
16
+ _path = File.expand_path "#{path}/#{script_name}.csv"
17
+
18
+ File.open( _path, "w" ) do |f|
19
+ f.puts results.first.keys.join( " | " )
20
+
21
+ results.each do |result|
22
+ f.puts result.values.join( " | " )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  class BrowserShooter
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -1,46 +1,41 @@
1
1
  require_relative "./browser_shooter/version"
2
+ require_relative "./browser_shooter/configurator"
2
3
  require_relative "./browser_shooter/logger"
3
4
  require_relative "./browser_shooter/driver"
4
5
  require_relative "./browser_shooter/commander"
6
+ require_relative "./browser_shooter/log_exporter"
5
7
 
6
8
  require "selenium-webdriver"
7
9
  require "selenium-client"
8
10
  require "yaml"
11
+ require "json"
9
12
 
10
13
  class BrowserShooter
11
- attr_reader :config
14
+ attr_reader :config_file_path
12
15
 
13
16
  def initialize( config_file_path )
14
- @config = load_config( config_file_path )
15
- end
16
-
17
- def load_config( config_file_path )
18
- config = YAML.load_file( config_file_path )
19
- config = set_up_shoots_path( config )
20
-
21
- config
17
+ @config_file_path = config_file_path
22
18
  end
23
19
 
24
20
  def run
25
21
  BrowserShooter::Logger.log "Starting script running with version #{BrowserShooter::VERSION}..."
26
22
 
23
+ config = BrowserShooter::Configurator.load_config( config_file_path )
24
+ logs = {}
25
+
27
26
  config["scripts"].each_value do |script|
28
27
  config["browsers"].each_value do |browser|
29
- BrowserShooter::Driver.run_script_on_browser(script, browser, config["shoots_path"])
28
+ logs["#{script["name"]}_#{browser["name"]}"] =
29
+ BrowserShooter::Driver.run_script_on_browser(script, browser, config["output_path"])
30
30
  end
31
31
  end
32
32
 
33
- BrowserShooter::Logger.log "... script running ended."
34
- end
35
-
36
- def set_up_shoots_path( config )
37
- config["shoots_path"] = File.expand_path( "#{config["shoots_path"]}/#{Time.now.strftime("%Y%m%d%H%M%S")}" )
38
- BrowserShooter::Logger.log( "shoots_path: #{config["shoots_path"]}" )
39
-
40
- FileUtils.mkdir_p( config["shoots_path"] )
33
+ BrowserShooter::LogExporter.export( "#{config["output_path"]}/logs", logs, config["logs_format"] )
41
34
 
42
- config
35
+ BrowserShooter::Logger.log "... script running ended."
36
+ BrowserShooter::Logger.log "shots are in: #{config["output_path"]}/shots"
37
+ BrowserShooter::Logger.log "logs are in: #{config["output_path"]}/logs"
38
+ BrowserShooter::Logger.log "BYE!"
43
39
  end
44
-
45
40
  end
46
41
 
@@ -1,7 +1,23 @@
1
1
  require_relative "test_helper"
2
2
 
3
3
  class BrowserScreenshotTest < Test::Unit::TestCase
4
+ def test_initialize
5
+ assert_equal( "filepath", BrowserShooter.new( "filepath" ).config_file_path )
6
+ end
7
+
4
8
  def test_run
5
- BrowserShooter.new( "#{FIXTURES}/config.yml" ).run
9
+ config_file_path = "#{FIXTURES}/config_simple.yml"
10
+ BrowserShooter::Configurator.expects( :load_config ).with( config_file_path ).returns( YAML.load_file( config_file_path ) )
11
+
12
+ BrowserShooter::Driver.expects( :run_script_on_browser).with( "script-one", "browser-one", "/shoots-path" )
13
+ BrowserShooter::Driver.expects( :run_script_on_browser).with( "script-one", "browser-two", "/shoots-path" )
14
+ BrowserShooter::Driver.expects( :run_script_on_browser).with( "script-one", "browser-three", "/shoots-path" )
15
+ BrowserShooter::Driver.expects( :run_script_on_browser).with( "script-two", "browser-one", "/shoots-path" )
16
+ BrowserShooter::Driver.expects( :run_script_on_browser).with( "script-two", "browser-two", "/shoots-path" )
17
+ BrowserShooter::Driver.expects( :run_script_on_browser).with( "script-two", "browser-three", "/shoots-path" )
18
+
19
+ BrowserShooter::Util.expects( :export_logs_to_csv )
20
+
21
+ BrowserShooter.new( config_file_path ).run
6
22
  end
7
23
  end
@@ -0,0 +1,89 @@
1
+ require_relative "test_helper"
2
+
3
+ class CommanderTest < Test::Unit::TestCase
4
+ def test_execute_when_shot_with_sufix
5
+ BrowserShooter::Commander.expects( :shot ).with( "client", "shoot-path", "sufix" )
6
+ BrowserShooter::Commander.execute( "shot sufix", "client", "shoot-path" )
7
+ end
8
+
9
+ def test_execute_when_shot_without_sufix
10
+ BrowserShooter::Commander.expects( :shot ).with( "client", "shoot-path", nil )
11
+ BrowserShooter::Commander.execute( "shot", "client", "shoot-path" )
12
+ end
13
+
14
+ def test_execute_when_shot_system_with_sufix
15
+ BrowserShooter::Commander.expects( :shot_system ).with( "client", "shoot-path", "sufix" )
16
+ BrowserShooter::Commander.execute( "shot_system sufix", "client", "shoot-path" )
17
+ end
18
+
19
+ def test_execute_when_shot_system_without_sufix
20
+ BrowserShooter::Commander.expects( :shot_system ).with( "client", "shoot-path", nil )
21
+ BrowserShooter::Commander.execute( "shot_system", "client", "shoot-path" )
22
+ end
23
+
24
+ def test_execute_when_shot_pause
25
+ BrowserShooter::Commander.expects( :pause ).with( 10 )
26
+ BrowserShooter::Commander.execute( "pause 10", "client", "shoot-path" )
27
+ end
28
+
29
+ def test_shot_with_sufix
30
+ in_tmpdir do |tmpdir|
31
+ client = stub( :capture_entire_page_screenshot_to_string => read_fixture( "screenshot.base64" ) )
32
+ path = "#{tmpdir}/myfile"
33
+
34
+ BrowserShooter::Commander.shot( client, path, "sufix" )
35
+
36
+ assert_equal(
37
+ Digest::MD5.hexdigest( Base64.decode64( read_fixture( "screenshot.base64" ) ) ),
38
+ Digest::MD5.hexdigest( File.read( "#{path}_sufix.png" ) )
39
+ )
40
+ end
41
+ end
42
+
43
+ def test_shot_without_sufix
44
+ in_tmpdir do |tmpdir|
45
+ client = stub( :capture_entire_page_screenshot_to_string => read_fixture( "screenshot.base64" ) )
46
+ path = "#{tmpdir}/myfile"
47
+
48
+ BrowserShooter::Commander.shot( client, path, nil )
49
+
50
+ assert_equal(
51
+ Digest::MD5.hexdigest( Base64.decode64( read_fixture( "screenshot.base64" ) ) ),
52
+ Digest::MD5.hexdigest( File.read( "#{path}.png" ) )
53
+ )
54
+ end
55
+ end
56
+
57
+ def test_shot_system_with_sufix
58
+ in_tmpdir do |tmpdir|
59
+ client = stub( :capture_screenshot_to_string => read_fixture( "screenshot.base64" ) )
60
+ path = "#{tmpdir}/myfile"
61
+
62
+ BrowserShooter::Commander.shot_system( client, path, "sufix" )
63
+
64
+ assert_equal(
65
+ Digest::MD5.hexdigest( Base64.decode64( read_fixture( "screenshot.base64" ) ) ),
66
+ Digest::MD5.hexdigest( File.read( "#{path}_sufix.system.png" ) )
67
+ )
68
+ end
69
+ end
70
+
71
+ def test_shot_system_without_sufix
72
+ in_tmpdir do |tmpdir|
73
+ client = stub( :capture_screenshot_to_string => read_fixture( "screenshot.base64" ) )
74
+ path = "#{tmpdir}/myfile"
75
+
76
+ BrowserShooter::Commander.shot_system( client, path, nil )
77
+
78
+ assert_equal(
79
+ Digest::MD5.hexdigest( Base64.decode64( read_fixture( "screenshot.base64" ) ) ),
80
+ Digest::MD5.hexdigest( File.read( "#{path}.system.png" ) )
81
+ )
82
+ end
83
+ end
84
+
85
+ def test_pause
86
+ Kernel.expects( :sleep ).with( 1 )
87
+ BrowserShooter::Commander.pause( 1 )
88
+ end
89
+ end
@@ -0,0 +1,16 @@
1
+ require_relative "test_helper"
2
+
3
+ class ConfiguratorTest < Test::Unit::TestCase
4
+ def test_load_config
5
+ BrowserShooter::Configurator.expects( :timestamp ).returns( "timestamp" )
6
+ FileUtils.expects( :mkdir_p ).with( "/shoots-path/timestamp" )
7
+ FileUtils.expects( :mkdir ).with( "/shoots-path/timestamp/shots" )
8
+ FileUtils.expects( :mkdir ).with( "/shoots-path/timestamp/logs" )
9
+
10
+ config = BrowserShooter::Configurator.load_config( "#{FIXTURES}/config_simple.yml" )
11
+
12
+ assert_equal( "/shoots-path/timestamp", config["output_path"] )
13
+ assert_equal( "script-one", config["scripts"]["script-one"] )
14
+ assert_equal( "browser-one", config["browsers"]["browser-one"] )
15
+ end
16
+ end
@@ -0,0 +1,39 @@
1
+ require_relative "test_helper"
2
+
3
+ class DriverTest < Test::Unit::TestCase
4
+
5
+ def test_run_script_on_browser
6
+ browser = {
7
+ "name" => "browser-name",
8
+ "host" => "browser-host",
9
+ "port" => "browser-port",
10
+ "browser" => "browser-browser"
11
+ }
12
+
13
+ script = {
14
+ "name" => "script-name",
15
+ "url" => "script-url",
16
+ "commands" => "one\ntwo\nthree"
17
+ }
18
+
19
+ expected_opts = {
20
+ :host => "browser-host",
21
+ :port => "browser-port",
22
+ :browser => "browser-browser",
23
+ :url => "script-url",
24
+ :timeout_in_seconds => 40
25
+ }
26
+
27
+ client = Object.new
28
+ client.expects( :start_new_browser_session )
29
+ client.expects( :close_current_browser_session )
30
+
31
+ Selenium::Client::Driver.expects( :new ).with( expected_opts ).returns( client )
32
+
33
+ BrowserShooter::Commander.expects( :execute ).with( "one", client, "shoots-path/script-name_browser-name")
34
+ BrowserShooter::Commander.expects( :execute ).with( "two", client, "shoots-path/script-name_browser-name")
35
+ BrowserShooter::Commander.expects( :execute ).with( "three", client, "shoots-path/script-name_browser-name")
36
+
37
+ BrowserShooter::Driver.run_script_on_browser(script, browser, "shoots-path")
38
+ end
39
+ end
@@ -1,4 +1,4 @@
1
- shoots_path: "/tmp/shoots"
1
+ output_path: "/tmp/shoots"
2
2
 
3
3
  scripts:
4
4
  google:
@@ -7,12 +7,11 @@ scripts:
7
7
  commands: |
8
8
  open "/"
9
9
  window_maximize
10
- shot before
10
+ shot 01_before
11
11
  type "id=lst-ib", "fernando guillen"
12
12
  click "name=btnG", wait_for :page
13
13
  pause 3
14
- shot after
15
-
14
+ shot 02_after
16
15
 
17
16
  miniclip:
18
17
  name: "miniclip"
@@ -22,19 +21,6 @@ scripts:
22
21
  window_maximize
23
22
  shot
24
23
 
25
- brandengage:
26
- name: "brandengage"
27
- url: "http://staging.iframe.sponsorpay.com"
28
- commands: |
29
- open "/test/brandengage.html"
30
- window_maximize
31
- click "link=be_1372_dedicated"
32
- pause 5
33
- get_alert
34
- click "link=sp.showVideo();"
35
- pause 5
36
- shot
37
-
38
24
  browsers:
39
25
  windows-firefox:
40
26
  name: "windows-firefox"
@@ -0,0 +1,11 @@
1
+ output_path: "/shoots-path"
2
+ logs_format: "csv"
3
+
4
+ scripts:
5
+ script-one: "script-one"
6
+ script-two: "script-two"
7
+
8
+ browsers:
9
+ browser-one: "browser-one"
10
+ browser-two: "browser-two"
11
+ browser-three: "browser-three"
Binary file
data/test/test_helper.rb CHANGED
@@ -1,4 +1,30 @@
1
1
  require "test/unit"
2
+ require "mocha"
2
3
  require_relative "../lib/browser_shooter"
3
4
 
4
- FIXTURES = File.expand_path( "#{File.dirname(__FILE__)}/fixtures" )
5
+ module TestHelper
6
+ FIXTURES = File.expand_path( "#{File.dirname(__FILE__)}/fixtures" )
7
+
8
+ def read_fixture( fixture_name )
9
+ File.read( "#{FIXTURES}/#{fixture_name}" )
10
+ end
11
+
12
+ def in_tmpdir
13
+ path = File.expand_path "#{Dir.tmpdir}/#{Time.now.to_i}_#{rand(1000)}/"
14
+ FileUtils.mkdir_p( path )
15
+
16
+ yield( path )
17
+
18
+ ensure
19
+ FileUtils.rm_rf( path ) if File.exists?( path )
20
+ end
21
+ end
22
+
23
+ class Test::Unit::TestCase
24
+ include TestHelper
25
+
26
+ def setup
27
+ BrowserShooter::Logger.stubs( :log )
28
+ end
29
+ end
30
+
metadata CHANGED
@@ -1,106 +1,93 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: browser_shooter
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 3
9
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Fernando Guillen
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-01-09 00:00:00 +01:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-02 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: bundler
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70249375547000 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 0
31
- - 0
32
- - rc
33
- - 6
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 1.0.0.rc.6
35
22
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70249375547000
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70249375546500 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- segments:
46
- - 0
47
- - 9
48
- - 2
49
- - 2
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
50
32
  version: 0.9.2.2
51
33
  type: :development
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: selenium-webdriver
55
34
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70249375546500
36
+ - !ruby/object:Gem::Dependency
37
+ name: mocha
38
+ requirement: &70249375546120 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70249375546120
47
+ - !ruby/object:Gem::Dependency
48
+ name: selenium-webdriver
49
+ requirement: &70249375545660 !ruby/object:Gem::Requirement
57
50
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- segments:
62
- - 0
63
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
64
55
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: selenium
68
56
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: *70249375545660
58
+ - !ruby/object:Gem::Dependency
59
+ name: selenium
60
+ requirement: &70249375545240 !ruby/object:Gem::Requirement
70
61
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- segments:
75
- - 0
76
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
77
66
  type: :runtime
78
- version_requirements: *id004
79
- - !ruby/object:Gem::Dependency
80
- name: selenium-client
81
67
  prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
68
+ version_requirements: *70249375545240
69
+ - !ruby/object:Gem::Dependency
70
+ name: selenium-client
71
+ requirement: &70249375544820 !ruby/object:Gem::Requirement
83
72
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- segments:
88
- - 0
89
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
90
77
  type: :runtime
91
- version_requirements: *id005
78
+ prerelease: false
79
+ version_requirements: *70249375544820
92
80
  description: Selenium RC wraper to create browser screenshots
93
- email:
81
+ email:
94
82
  - fguillen.mail@gmail.com
95
- executables:
83
+ executables:
96
84
  - browser_shooter
97
85
  extensions: []
98
-
99
86
  extra_rdoc_files: []
100
-
101
- files:
87
+ files:
102
88
  - .gitignore
103
89
  - .rvmrc.example
90
+ - .travis.yml
104
91
  - Gemfile
105
92
  - README.md
106
93
  - Rakefile
@@ -109,47 +96,53 @@ files:
109
96
  - examples/config1.yml
110
97
  - examples/config2.yml
111
98
  - examples/config3.yml
99
+ - examples/config4.yml
100
+ - examples/config5.yml
112
101
  - lib/browser_shooter.rb
113
102
  - lib/browser_shooter/commander.rb
103
+ - lib/browser_shooter/configurator.rb
114
104
  - lib/browser_shooter/driver.rb
105
+ - lib/browser_shooter/log_exporter.rb
115
106
  - lib/browser_shooter/logger.rb
116
107
  - lib/browser_shooter/version.rb
117
108
  - test/browser_shooter_test.rb
109
+ - test/commander_test.rb
110
+ - test/configurator_test.rb
111
+ - test/driver_test.rb
118
112
  - test/fixtures/config.yml
113
+ - test/fixtures/config_simple.yml
114
+ - test/fixtures/screenshot.base64
119
115
  - test/test_helper.rb
120
- has_rdoc: true
121
116
  homepage: https://github.com/fguillen/BrowserShooter
122
117
  licenses: []
123
-
124
118
  post_install_message:
125
119
  rdoc_options: []
126
-
127
- require_paths:
120
+ require_paths:
128
121
  - lib
129
- required_ruby_version: !ruby/object:Gem::Requirement
122
+ required_ruby_version: !ruby/object:Gem::Requirement
130
123
  none: false
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- segments:
135
- - 0
136
- version: "0"
137
- required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
129
  none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- segments:
143
- - 0
144
- version: "0"
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
145
134
  requirements: []
146
-
147
135
  rubyforge_project: browser_shooter
148
- rubygems_version: 1.3.7
136
+ rubygems_version: 1.8.15
149
137
  signing_key:
150
138
  specification_version: 3
151
139
  summary: Selenium RC wraper to create browser screenshots
152
- test_files:
140
+ test_files:
153
141
  - test/browser_shooter_test.rb
142
+ - test/commander_test.rb
143
+ - test/configurator_test.rb
144
+ - test/driver_test.rb
154
145
  - test/fixtures/config.yml
146
+ - test/fixtures/config_simple.yml
147
+ - test/fixtures/screenshot.base64
155
148
  - test/test_helper.rb