speedos 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +94 -0
  4. data/LICENSE.txt +9 -0
  5. data/README.md +104 -0
  6. data/bin/browsermob-proxy-2.0-beta-8/LICENSE.txt +203 -0
  7. data/bin/browsermob-proxy-2.0-beta-8/README.md +197 -0
  8. data/bin/browsermob-proxy-2.0-beta-8/README.txt +3 -0
  9. data/bin/browsermob-proxy-2.0-beta-8/bin/browsermob-proxy +100 -0
  10. data/bin/browsermob-proxy-2.0-beta-8/bin/browsermob-proxy.bat +105 -0
  11. data/bin/browsermob-proxy-2.0-beta-8/browsermob-proxy-2.0-beta-8-javadoc.jar +0 -0
  12. data/bin/browsermob-proxy-2.0-beta-8/browsermob-proxy-2.0-beta-8-sources.jar +0 -0
  13. data/bin/browsermob-proxy-2.0-beta-8/lib/annotations-7.0.3.jar +0 -0
  14. data/bin/browsermob-proxy-2.0-beta-8/lib/ant-1.8.2.jar +0 -0
  15. data/bin/browsermob-proxy-2.0-beta-8/lib/ant-launcher-1.8.2.jar +0 -0
  16. data/bin/browsermob-proxy-2.0-beta-8/lib/aopalliance-1.0.jar +0 -0
  17. data/bin/browsermob-proxy-2.0-beta-8/lib/bcprov-jdk15on-1.47.jar +0 -0
  18. data/bin/browsermob-proxy-2.0-beta-8/lib/browsermob-proxy-2.0-beta-8.jar +0 -0
  19. data/bin/browsermob-proxy-2.0-beta-8/lib/browsermob-proxy-2.0-beta-8.pom +272 -0
  20. data/bin/browsermob-proxy-2.0-beta-8/lib/commons-codec-1.6.jar +0 -0
  21. data/bin/browsermob-proxy-2.0-beta-8/lib/commons-httpclient-3.1.jar +0 -0
  22. data/bin/browsermob-proxy-2.0-beta-8/lib/commons-io-1.3.2.jar +0 -0
  23. data/bin/browsermob-proxy-2.0-beta-8/lib/commons-lang-2.5.jar +0 -0
  24. data/bin/browsermob-proxy-2.0-beta-8/lib/commons-logging-1.1.1.jar +0 -0
  25. data/bin/browsermob-proxy-2.0-beta-8/lib/dom4j-1.6.1.jar +0 -0
  26. data/bin/browsermob-proxy-2.0-beta-8/lib/freemarker-2.3.10.jar +0 -0
  27. data/bin/browsermob-proxy-2.0-beta-8/lib/guava-r07.jar +0 -0
  28. data/bin/browsermob-proxy-2.0-beta-8/lib/guice-3.0.jar +0 -0
  29. data/bin/browsermob-proxy-2.0-beta-8/lib/guice-multibindings-3.0.jar +0 -0
  30. data/bin/browsermob-proxy-2.0-beta-8/lib/guice-servlet-3.0.jar +0 -0
  31. data/bin/browsermob-proxy-2.0-beta-8/lib/httpclient-4.2.3.jar +0 -0
  32. data/bin/browsermob-proxy-2.0-beta-8/lib/httpcore-4.2.2.jar +0 -0
  33. data/bin/browsermob-proxy-2.0-beta-8/lib/httpmime-4.2.3.jar +0 -0
  34. data/bin/browsermob-proxy-2.0-beta-8/lib/icu4j-2.6.1.jar +0 -0
  35. data/bin/browsermob-proxy-2.0-beta-8/lib/jackson-core-asl-1.7.1.jar +0 -0
  36. data/bin/browsermob-proxy-2.0-beta-8/lib/jackson-mapper-asl-1.7.1.jar +0 -0
  37. data/bin/browsermob-proxy-2.0-beta-8/lib/javax.inject-1.jar +0 -0
  38. data/bin/browsermob-proxy-2.0-beta-8/lib/jaxen-1.1.1.jar +0 -0
  39. data/bin/browsermob-proxy-2.0-beta-8/lib/jcip-annotations-1.0.jar +0 -0
  40. data/bin/browsermob-proxy-2.0-beta-8/lib/jdom-1.0.jar +0 -0
  41. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-continuation-7.3.0.v20110203.jar +0 -0
  42. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-http-7.3.0.v20110203.jar +0 -0
  43. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-io-7.3.0.v20110203.jar +0 -0
  44. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-security-7.3.0.v20110203.jar +0 -0
  45. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-server-7.3.0.v20110203.jar +0 -0
  46. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-servlet-7.3.0.v20110203.jar +0 -0
  47. data/bin/browsermob-proxy-2.0-beta-8/lib/jetty-util-7.3.0.v20110203.jar +0 -0
  48. data/bin/browsermob-proxy-2.0-beta-8/lib/jopt-simple-3.2.jar +0 -0
  49. data/bin/browsermob-proxy-2.0-beta-8/lib/json-20080701.jar +0 -0
  50. data/bin/browsermob-proxy-2.0-beta-8/lib/jsoup-1.4.1.jar +0 -0
  51. data/bin/browsermob-proxy-2.0-beta-8/lib/maven-metadata-appassembler.xml +43 -0
  52. data/bin/browsermob-proxy-2.0-beta-8/lib/mvel2-2.0.18.jar +0 -0
  53. data/bin/browsermob-proxy-2.0-beta-8/lib/saxpath-1.0-FCS.jar +0 -0
  54. data/bin/browsermob-proxy-2.0-beta-8/lib/selenium-api-2.29.1.jar +0 -0
  55. data/bin/browsermob-proxy-2.0-beta-8/lib/servlet-api-2.5.jar +0 -0
  56. data/bin/browsermob-proxy-2.0-beta-8/lib/sitebricks-0.8.3.jar +0 -0
  57. data/bin/browsermob-proxy-2.0-beta-8/lib/slf4j-api-1.5.3.jar +0 -0
  58. data/bin/browsermob-proxy-2.0-beta-8/lib/slf4j-jdk14-1.5.3.jar +0 -0
  59. data/bin/browsermob-proxy-2.0-beta-8/lib/xalan-2.6.0.jar +0 -0
  60. data/bin/browsermob-proxy-2.0-beta-8/lib/xmlParserAPIs-2.6.2.jar +0 -0
  61. data/bin/browsermob-proxy-2.0-beta-8/lib/xom-1.0.jar +0 -0
  62. data/bin/browsermob-proxy-2.0-beta-8/lib/xpp3_min-1.1.4c.jar +0 -0
  63. data/bin/browsermob-proxy-2.0-beta-8/lib/xstream-1.3.1.jar +0 -0
  64. data/bin/browsermob-proxy-2.0-beta-8/ssl-support/blank_crl.dec +0 -0
  65. data/bin/browsermob-proxy-2.0-beta-8/ssl-support/blank_crl.pem +12 -0
  66. data/bin/browsermob-proxy-2.0-beta-8/ssl-support/cybervillainsCA.cer +0 -0
  67. data/bin/browsermob-proxy-2.0-beta-8/ssl-support/cybervillainsCA.jks +0 -0
  68. data/bin/speedos +41 -0
  69. data/lib/speedos/configuration.rb +11 -0
  70. data/lib/speedos/log.rb +16 -0
  71. data/lib/speedos/models/entries.rb +29 -0
  72. data/lib/speedos/models/record.rb +32 -0
  73. data/lib/speedos/page.rb +52 -0
  74. data/lib/speedos/performance.rb +22 -0
  75. data/lib/speedos.rb +14 -0
  76. data/spec/lib/entries_spec.rb +33 -0
  77. data/spec/models/record_spec.rb +24 -0
  78. data/spec/spec_helper.rb +34 -0
  79. data/spec/support/mongoid.yml +6 -0
  80. data/speedos.gemspec +25 -0
  81. data/template/.irbrc +1 -0
  82. data/template/Rakefile +22 -0
  83. data/template/initializer.rb +12 -0
  84. data/template/mongoid.yml +12 -0
  85. metadata +258 -0
@@ -0,0 +1,12 @@
1
+ -----BEGIN X509 CRL-----
2
+ MIIBuDCCASECAQEwDQYJKoZIhvcNAQEFBQAwWTEaMBgGA1UECgwRQ3liZXJWaWxs
3
+ aWFucy5jb20xLjAsBgNVBAsMJUN5YmVyVmlsbGlhbnMgQ2VydGlmaWNhdGlvbiBB
4
+ dXRob3JpdHkxCzAJBgNVBAYTAlVTFw0xMjAyMDUwMzAwMTBaFw0zMTEwMjMwMzAw
5
+ MTBaoIGTMIGQMIGBBgNVHSMEejB4gBQKvBeVNGu8hxtbTP31Y4UttI/1bKFdpFsw
6
+ WTEaMBgGA1UECgwRQ3liZXJWaWxsaWFucy5jb20xLjAsBgNVBAsMJUN5YmVyVmls
7
+ bGlhbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxCzAJBgNVBAYTAlVTggEBMAoG
8
+ A1UdFAQDAgEBMA0GCSqGSIb3DQEBBQUAA4GBAEtCmbwTrP7xgkGH3uWH7QU7i52j
9
+ aqraBnfheTv6jMFvXq/Nc9hvcmhkkw/+UezjZ/tK1a8a1+vJDPYXUzeAV/eWTPWf
10
+ AgWAwBlUTi5ALnRY07TCyQYN2rOb52ChO8cNIUGfEvs41I5N5Vrtvg6m10Eb4XF6
11
+ M2dSJ5eLlMm40kYx
12
+ -----END X509 CRL-----
data/bin/speedos ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
3
+ require 'fileutils'
4
+
5
+ def create_folder path
6
+ if !File.exists?(path)
7
+ FileUtils.mkdir_p(path)
8
+ print_msg "Created", path
9
+ else
10
+ print_msg "Do Nothing", path
11
+ end
12
+ end
13
+
14
+ def create_file path
15
+ if !File.exists?(path)
16
+ name = File.basename(path)
17
+ FileUtils.cp File.join(File.dirname(__FILE__), '..', 'template', name), path
18
+ print_msg "Created", path
19
+ else
20
+ print_msg "Do Nothing", path
21
+ end
22
+ end
23
+
24
+ def print_msg action, msg
25
+ puts "%-10s: %s" % [action, msg]
26
+ end
27
+
28
+
29
+
30
+ case ARGV
31
+ when ['init']
32
+ create_folder(File.join(Dir.pwd, 'helpers'))
33
+ create_folder(File.join(Dir.pwd, 'log'))
34
+ create_folder(File.join(Dir.pwd, 'config'))
35
+ create_folder(File.join(Dir.pwd, 'scripts'))
36
+ create_file(File.join(Dir.pwd, 'config', 'initializer.rb'))
37
+ create_file(File.join(Dir.pwd, 'config', 'mongoid.yml'))
38
+ create_file(File.join(Dir.pwd, 'Rakefile'))
39
+ create_file(File.join(Dir.pwd, '.irbrc'))
40
+ end
41
+
@@ -0,0 +1,11 @@
1
+ module Speedos
2
+ module Configuration
3
+ def self.app_env
4
+ ENV['APP_ENV'] || 'development'
5
+ end
6
+
7
+ def self.load_mongoid_config path
8
+ Mongoid.load!(path, app_env.to_sym)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Speedos
2
+ class Log
3
+ def self.logger
4
+ @logger ||= Logger.new(STDOUT)
5
+ end
6
+
7
+ def self.logger= logger
8
+ logger = Logger.new(logger) if logger.is_a? String
9
+ @logger = logger
10
+ end
11
+
12
+ def self.method_missing meth, *args, &block
13
+ logger.send(meth, *args)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,29 @@
1
+ module Speedos
2
+ class Entries
3
+ attr_reader :raw
4
+
5
+ def initialize array
6
+ @raw = array
7
+ end
8
+
9
+ def total_load_time
10
+ earliest_start_time = nil
11
+ latest_end_time = nil
12
+ @raw.each do |e|
13
+ start_time = Time.parse(e["startedDateTime"]).to_f * 1000
14
+ end_time = start_time + e["time"]
15
+ earliest_start_time = start_time if !earliest_start_time || earliest_start_time > start_time
16
+ latest_end_time = end_time if !latest_end_time || latest_end_time < end_time
17
+ end
18
+ (latest_end_time && earliest_start_time) ? (latest_end_time - earliest_start_time) : 0
19
+ end
20
+
21
+ def all_names
22
+ raw.map{|e| e['pageref']}.uniq
23
+ end
24
+
25
+ def inspect
26
+ "Entries: #{all_names}"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,32 @@
1
+ module Speedos
2
+ class Record
3
+ include Mongoid::Document
4
+ include Mongoid::Timestamps
5
+
6
+ field :success, type: Boolean
7
+ field :log
8
+
9
+ scope :successful, ->() { where(success: true) }
10
+
11
+ def entries
12
+ self.log['entries']
13
+ end
14
+
15
+ def pages
16
+ self.log['pages'].reject{ |p| p['id'].empty? }.map{ |p| page(p['id']) }
17
+ end
18
+
19
+ def page name
20
+ Entries.new(entries.select{ |p| p["pageref"] == name })
21
+ end
22
+
23
+ def self.report
24
+ Record.successful.all.each do |record|
25
+ puts record.id
26
+ record.pages.each do |page|
27
+ puts " %-30s %ss" % [page.all_names.first, (page.total_load_time / 1000).round(5)]
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,52 @@
1
+ module Speedos
2
+ class Page
3
+ def server
4
+ if !@server
5
+ @server = BrowserMob::Proxy::Server.new(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'browsermob-proxy-2.0-beta-8', 'bin', 'browsermob-proxy'))
6
+ @server.start
7
+ end
8
+ @server
9
+ end
10
+
11
+ def server_proxy
12
+ if !@proxy
13
+ @proxy = server.create_proxy
14
+ end
15
+ @proxy
16
+ end
17
+
18
+ def get_har
19
+ server_proxy.har
20
+ end
21
+
22
+ def new_har
23
+ server_proxy.new_har "", capture_headers: true
24
+ end
25
+
26
+ def firefox_profile
27
+ profile = Selenium::WebDriver::Firefox::Profile.new
28
+ profile.proxy = server_proxy.selenium_proxy
29
+ profile["network.proxy.ssl"] = server_proxy.host
30
+ profile["network.proxy.ssl_port"] = server_proxy.port
31
+ profile
32
+ end
33
+
34
+ def driver
35
+ @driver ||= reset_driver
36
+ end
37
+
38
+ def reset_driver
39
+ Capybara.register_driver :selenium do |app|
40
+ Capybara::Selenium::Driver.new(app, :profile => firefox_profile)
41
+ end
42
+ Capybara.default_driver = :selenium
43
+ @driver = Capybara::Session.new(:selenium)
44
+ end
45
+
46
+ def is value
47
+ raise "Page name cannot be empty" if value.empty?
48
+ server_proxy.new_page value
49
+ yield
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,22 @@
1
+ module Speedos
2
+ class Performance
3
+ def self.test
4
+ Log.info("Test begins")
5
+ page = Page.new
6
+ page.new_har
7
+
8
+ yield page if block_given?
9
+
10
+ Log.info("Test Complete")
11
+ success = true
12
+ rescue Exception => e
13
+ Log.error("#{e}")
14
+ Log.error("#{e.backtrace}")
15
+ success = false
16
+ ensure
17
+ Record.create(JSON.load(page.get_har.to_json).merge(success: success))
18
+ page.server_proxy.close
19
+ page.server.stop
20
+ end
21
+ end
22
+ end
data/lib/speedos.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'mongoid'
2
+ require 'faker'
3
+ require 'logger'
4
+ require 'browsermob-proxy'
5
+ require 'selenium-webdriver'
6
+ require 'capybara'
7
+
8
+ require 'speedos/performance'
9
+ require 'speedos/page'
10
+ require 'speedos/log'
11
+ require 'speedos/configuration'
12
+
13
+ require 'speedos/models/record'
14
+ require 'speedos/models/entries'
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Speedos::Entries do
4
+ context '#total_load_time' do
5
+ subject { Speedos::Entries }
6
+
7
+ context 'when all tasks start the same time' do
8
+ it 'returns the greatest load time' do
9
+ entries = subject.new([
10
+ {'startedDateTime' => DateTime.new(2012,1,1,12).to_s, 'time' => 100},
11
+ {'startedDateTime' => DateTime.new(2012,1,1,12).to_s, 'time' => 50},
12
+ ])
13
+ entries.total_load_time.should eq 100
14
+ end
15
+ end
16
+
17
+ context 'when tasks are started at the same time' do
18
+ it 'returns the total time needed' do
19
+ entries = subject.new([
20
+ {'startedDateTime' => DateTime.new(2012,1,1,12,0,0).to_s, 'time' => 100},
21
+ {'startedDateTime' => DateTime.new(2012,1,1,12,0,1).to_s, 'time' => 50},
22
+ ])
23
+ entries.total_load_time.should eq 1050
24
+ end
25
+ end
26
+ end
27
+
28
+ context '#all_names' do
29
+ subject { Speedos::Entries.new([{'pageref' => 'page 1'}, {'pageref' => 'page 2'},]) }
30
+
31
+ its(:all_names) { should =~ ['page 1', 'page 2'] }
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Speedos::Record do
4
+ context 'scopes' do
5
+ subject { Speedos::Record }
6
+ before do
7
+ @not_success = subject.create(success: false)
8
+ @success = subject.create(success: true)
9
+ end
10
+
11
+ its(:successful) { should include @success }
12
+ its(:successful) { should_not include @not_success }
13
+ end
14
+
15
+ context '#page' do
16
+ subject { Speedos::Record.create() }
17
+ before do
18
+ subject.log = {'entries' => []}
19
+ subject.save
20
+ end
21
+ it { subject.page('').should be_instance_of Speedos::Entries }
22
+ end
23
+
24
+ end
@@ -0,0 +1,34 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ ENV['APP_ENV'] = 'test'
8
+ require 'rubygems'
9
+ require 'bundler/setup'
10
+ Bundler.require
11
+
12
+ require 'speedos' # and any other gems you need
13
+
14
+ Speedos::Configuration.load_mongoid_config(File.join(File.dirname(__FILE__), 'support', 'mongoid.yml'))
15
+
16
+
17
+ RSpec.configure do |config|
18
+ config.treat_symbols_as_metadata_keys_with_true_values = true
19
+ config.run_all_when_everything_filtered = true
20
+ config.filter_run :focus
21
+
22
+ # Run specs in random order to surface order dependencies. If you find an
23
+ # order dependency and want to debug it, you can fix the order by providing
24
+ # the seed, which is printed after each run.
25
+ # --seed 1234
26
+ config.order = 'random'
27
+
28
+ DatabaseCleaner[:mongoid].strategy = :truncation
29
+
30
+ config.before :each do
31
+ Mongoid.purge!
32
+ DatabaseCleaner.clean
33
+ end
34
+ end
@@ -0,0 +1,6 @@
1
+ test:
2
+ sessions:
3
+ default:
4
+ database: performance_thg_test
5
+ hosts:
6
+ - localhost:27017
data/speedos.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.authors = ['SimplyBusiness']
3
+ gem.email = ['peter.wu@xbridge.com']
4
+ gem.description = %q{incorporates browsermod and capybara(selenium) to run front-end tests and capture performance information}
5
+ gem.summary = %q{Speedos incorporates BrowserMob Proxy along with Capybara, recording the web traffic and time taken to load all elements on each of the pages within a user journey. The aim is to identify any performance related issues, such as specific items that take a long time to load on page.}
6
+ gem.homepage = %q{https://github.com/simplybusiness/speedos}
7
+
8
+ gem.files = `git ls-files`.split($\)
9
+ gem.name = 'speedos'
10
+ gem.require_paths = ['lib']
11
+ gem.version = "0.0.1"
12
+ gem.executables = 'speedos'
13
+ gem.license = 'MIT'
14
+
15
+ gem.add_runtime_dependency 'mongoid', '3.1.4'
16
+ gem.add_runtime_dependency 'rake', '10.1.0'
17
+ gem.add_runtime_dependency 'faker', '1.1.2'
18
+ gem.add_runtime_dependency 'logger', '1.2.8'
19
+ gem.add_runtime_dependency 'browsermob-proxy', '0.1.1'
20
+ gem.add_runtime_dependency 'selenium-webdriver', '2.33'
21
+ gem.add_runtime_dependency 'capybara', '2.1.0'
22
+
23
+ gem.add_development_dependency 'rspec', '2.14.1'
24
+ gem.add_development_dependency 'database_cleaner', '1.0.1'
25
+ end
data/template/.irbrc ADDED
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), 'config', 'initializer')
data/template/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ SCRIPTS_DIR = File.join(File.dirname(__FILE__), 'scripts')
2
+
3
+ $:.unshift SCRIPTS_DIR
4
+ require File.join(File.dirname(__FILE__), 'config', 'initializer')
5
+
6
+ def generate_tasks path
7
+ Dir[File.join(path, '*')].each do |item|
8
+ name = File.basename(item, '.*').to_sym
9
+ if File.directory?(item)
10
+ namespace name do
11
+ generate_tasks item
12
+ end
13
+ else
14
+ desc "run the script located in #{item}"
15
+ task name do
16
+ load item
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ generate_tasks SCRIPTS_DIR
@@ -0,0 +1,12 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ require 'speedos'
5
+ Speedos::Configuration.load_mongoid_config(File.join(File.dirname(__FILE__), '..', 'config', 'mongoid.yml'))
6
+ Speedos::Log.logger = File.join(File.dirname(__FILE__), "..", "log", "performance.log")
7
+
8
+ DIR = ['helpers']
9
+
10
+ DIR.each { |dir| $:.unshift File.join(File.dirname(__FILE__), '..', dir) }
11
+ DIR.each { |dir| Dir["#{File.join(File.dirname(__FILE__), '..', dir)}/*.rb"].each {|file| require file }}
12
+
@@ -0,0 +1,12 @@
1
+ development:
2
+ sessions:
3
+ default:
4
+ database: speedos_dev
5
+ hosts:
6
+ - localhost:27017
7
+ test:
8
+ sessions:
9
+ default:
10
+ database: speedos_test
11
+ hosts:
12
+ - localhost:27017
metadata ADDED
@@ -0,0 +1,258 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: speedos
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - SimplyBusiness
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mongoid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 10.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 10.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: faker
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: logger
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.8
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.8
69
+ - !ruby/object:Gem::Dependency
70
+ name: browsermob-proxy
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: selenium-webdriver
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: '2.33'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: '2.33'
97
+ - !ruby/object:Gem::Dependency
98
+ name: capybara
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 2.1.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 2.1.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 2.14.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.14.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: database_cleaner
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 1.0.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 1.0.1
139
+ description: incorporates browsermod and capybara(selenium) to run front-end tests
140
+ and capture performance information
141
+ email:
142
+ - peter.wu@xbridge.com
143
+ executables:
144
+ - speedos
145
+ extensions: []
146
+ extra_rdoc_files: []
147
+ files:
148
+ - Gemfile
149
+ - Gemfile.lock
150
+ - LICENSE.txt
151
+ - README.md
152
+ - bin/browsermob-proxy-2.0-beta-8/LICENSE.txt
153
+ - bin/browsermob-proxy-2.0-beta-8/README.md
154
+ - bin/browsermob-proxy-2.0-beta-8/README.txt
155
+ - bin/browsermob-proxy-2.0-beta-8/bin/browsermob-proxy
156
+ - bin/browsermob-proxy-2.0-beta-8/bin/browsermob-proxy.bat
157
+ - bin/browsermob-proxy-2.0-beta-8/browsermob-proxy-2.0-beta-8-javadoc.jar
158
+ - bin/browsermob-proxy-2.0-beta-8/browsermob-proxy-2.0-beta-8-sources.jar
159
+ - bin/browsermob-proxy-2.0-beta-8/lib/annotations-7.0.3.jar
160
+ - bin/browsermob-proxy-2.0-beta-8/lib/ant-1.8.2.jar
161
+ - bin/browsermob-proxy-2.0-beta-8/lib/ant-launcher-1.8.2.jar
162
+ - bin/browsermob-proxy-2.0-beta-8/lib/aopalliance-1.0.jar
163
+ - bin/browsermob-proxy-2.0-beta-8/lib/bcprov-jdk15on-1.47.jar
164
+ - bin/browsermob-proxy-2.0-beta-8/lib/browsermob-proxy-2.0-beta-8.jar
165
+ - bin/browsermob-proxy-2.0-beta-8/lib/browsermob-proxy-2.0-beta-8.pom
166
+ - bin/browsermob-proxy-2.0-beta-8/lib/commons-codec-1.6.jar
167
+ - bin/browsermob-proxy-2.0-beta-8/lib/commons-httpclient-3.1.jar
168
+ - bin/browsermob-proxy-2.0-beta-8/lib/commons-io-1.3.2.jar
169
+ - bin/browsermob-proxy-2.0-beta-8/lib/commons-lang-2.5.jar
170
+ - bin/browsermob-proxy-2.0-beta-8/lib/commons-logging-1.1.1.jar
171
+ - bin/browsermob-proxy-2.0-beta-8/lib/dom4j-1.6.1.jar
172
+ - bin/browsermob-proxy-2.0-beta-8/lib/freemarker-2.3.10.jar
173
+ - bin/browsermob-proxy-2.0-beta-8/lib/guava-r07.jar
174
+ - bin/browsermob-proxy-2.0-beta-8/lib/guice-3.0.jar
175
+ - bin/browsermob-proxy-2.0-beta-8/lib/guice-multibindings-3.0.jar
176
+ - bin/browsermob-proxy-2.0-beta-8/lib/guice-servlet-3.0.jar
177
+ - bin/browsermob-proxy-2.0-beta-8/lib/httpclient-4.2.3.jar
178
+ - bin/browsermob-proxy-2.0-beta-8/lib/httpcore-4.2.2.jar
179
+ - bin/browsermob-proxy-2.0-beta-8/lib/httpmime-4.2.3.jar
180
+ - bin/browsermob-proxy-2.0-beta-8/lib/icu4j-2.6.1.jar
181
+ - bin/browsermob-proxy-2.0-beta-8/lib/jackson-core-asl-1.7.1.jar
182
+ - bin/browsermob-proxy-2.0-beta-8/lib/jackson-mapper-asl-1.7.1.jar
183
+ - bin/browsermob-proxy-2.0-beta-8/lib/javax.inject-1.jar
184
+ - bin/browsermob-proxy-2.0-beta-8/lib/jaxen-1.1.1.jar
185
+ - bin/browsermob-proxy-2.0-beta-8/lib/jcip-annotations-1.0.jar
186
+ - bin/browsermob-proxy-2.0-beta-8/lib/jdom-1.0.jar
187
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-continuation-7.3.0.v20110203.jar
188
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-http-7.3.0.v20110203.jar
189
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-io-7.3.0.v20110203.jar
190
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-security-7.3.0.v20110203.jar
191
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-server-7.3.0.v20110203.jar
192
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-servlet-7.3.0.v20110203.jar
193
+ - bin/browsermob-proxy-2.0-beta-8/lib/jetty-util-7.3.0.v20110203.jar
194
+ - bin/browsermob-proxy-2.0-beta-8/lib/jopt-simple-3.2.jar
195
+ - bin/browsermob-proxy-2.0-beta-8/lib/json-20080701.jar
196
+ - bin/browsermob-proxy-2.0-beta-8/lib/jsoup-1.4.1.jar
197
+ - bin/browsermob-proxy-2.0-beta-8/lib/maven-metadata-appassembler.xml
198
+ - bin/browsermob-proxy-2.0-beta-8/lib/mvel2-2.0.18.jar
199
+ - bin/browsermob-proxy-2.0-beta-8/lib/saxpath-1.0-FCS.jar
200
+ - bin/browsermob-proxy-2.0-beta-8/lib/selenium-api-2.29.1.jar
201
+ - bin/browsermob-proxy-2.0-beta-8/lib/servlet-api-2.5.jar
202
+ - bin/browsermob-proxy-2.0-beta-8/lib/sitebricks-0.8.3.jar
203
+ - bin/browsermob-proxy-2.0-beta-8/lib/slf4j-api-1.5.3.jar
204
+ - bin/browsermob-proxy-2.0-beta-8/lib/slf4j-jdk14-1.5.3.jar
205
+ - bin/browsermob-proxy-2.0-beta-8/lib/xalan-2.6.0.jar
206
+ - bin/browsermob-proxy-2.0-beta-8/lib/xmlParserAPIs-2.6.2.jar
207
+ - bin/browsermob-proxy-2.0-beta-8/lib/xom-1.0.jar
208
+ - bin/browsermob-proxy-2.0-beta-8/lib/xpp3_min-1.1.4c.jar
209
+ - bin/browsermob-proxy-2.0-beta-8/lib/xstream-1.3.1.jar
210
+ - bin/browsermob-proxy-2.0-beta-8/ssl-support/blank_crl.dec
211
+ - bin/browsermob-proxy-2.0-beta-8/ssl-support/blank_crl.pem
212
+ - bin/browsermob-proxy-2.0-beta-8/ssl-support/cybervillainsCA.cer
213
+ - bin/browsermob-proxy-2.0-beta-8/ssl-support/cybervillainsCA.jks
214
+ - bin/speedos
215
+ - lib/speedos.rb
216
+ - lib/speedos/configuration.rb
217
+ - lib/speedos/log.rb
218
+ - lib/speedos/models/entries.rb
219
+ - lib/speedos/models/record.rb
220
+ - lib/speedos/page.rb
221
+ - lib/speedos/performance.rb
222
+ - spec/lib/entries_spec.rb
223
+ - spec/models/record_spec.rb
224
+ - spec/spec_helper.rb
225
+ - spec/support/mongoid.yml
226
+ - speedos.gemspec
227
+ - template/.irbrc
228
+ - template/Rakefile
229
+ - template/initializer.rb
230
+ - template/mongoid.yml
231
+ homepage: https://github.com/simplybusiness/speedos
232
+ licenses:
233
+ - MIT
234
+ metadata: {}
235
+ post_install_message:
236
+ rdoc_options: []
237
+ require_paths:
238
+ - lib
239
+ required_ruby_version: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ required_rubygems_version: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ requirements: []
250
+ rubyforge_project:
251
+ rubygems_version: 2.0.5
252
+ signing_key:
253
+ specification_version: 4
254
+ summary: Speedos incorporates BrowserMob Proxy along with Capybara, recording the
255
+ web traffic and time taken to load all elements on each of the pages within a user
256
+ journey. The aim is to identify any performance related issues, such as specific
257
+ items that take a long time to load on page.
258
+ test_files: []