browser_loader 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9786f16b4c91590fdf042a5af94ec91f7e7d8f84
4
+ data.tar.gz: dc0d6aeed2d7ab216b73a8139c721eb29241c107
5
+ SHA512:
6
+ metadata.gz: 7e6c7075a6daf172b48ce29766bd49d224cc8ad9b68df620831c9f7f03f1d17978121c879ffbc2bfd92d9e6ca3c6b940664c203ee7795ee18ec1fdaee8a58710
7
+ data.tar.gz: 14540904aa50ba8b0bed54713adab5d1919580a95584b2019c8f4624a6b95a8a08e7098433fa53d5745019e5899cdff474b80465c873ea4967f0c029bc9365f7
data/.gitignore ADDED
@@ -0,0 +1,16 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /spec/examples.txt
10
+ /tmp/
11
+ *.bundle
12
+ *.so
13
+ *.o
14
+ *.a
15
+ mkmf.log
16
+ /test/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in browser_loader.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Jeff McAffee
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # BrowserLoader
2
+
3
+ BrowserLoader is a watir-webdriver based browser loader class. It provides
4
+ additional chromium configuration options.
5
+
6
+ After I re-created this functionality for the 3rd time, I decided to turn it
7
+ into a gem so updates could take place in one location rather than multiple
8
+ places.
9
+
10
+ While BrowserLoader provides configuration for Chromium, it can load Firefox
11
+ or IE if desired. At this time, default configurations are used when loading
12
+ Firefox or IE.
13
+
14
+ When running on a linux OS, BrowserLoader will start the system's version of
15
+ the browser; the executable returned by `which chromium-browser`. When running
16
+ on windows, if using Chromium, a path to the Chromium/Chrome executable must
17
+ be provided.
18
+
19
+ Rather than being a nuisance, providing the executable path allows you to use
20
+ an older version of chromium for your testing. This becomes valuable if you
21
+ consider the breaking changes automatic updates of the browser can cause.
22
+
23
+ For me, this was especially a problem on windows.
24
+
25
+ Current versions of Chromium can be found at [http://chromium.woolyss.com](http://chromium.woolyss.com)
26
+ and older versions can be downloaded from the `continous` repo maintained by
27
+ Google at [https://storage.googleapis.com/chromium-browser-continuous/index.html](https://storage.googleapis.com/chromium-browser-continuous/index.html).
28
+
29
+ When creating the browser object, BrowserLoader looks for an environment variable
30
+ named `BROWSER`. If it exists and is populated with a recognized value, Firefox
31
+ or IE will be started. By default, Chromium will be started.
32
+
33
+ Possible `BROWSER` values:
34
+
35
+ + `ie`: Internet Explorer
36
+ + `ff`: Firefox
37
+
38
+ ## Installation
39
+
40
+ Add this line to your application's Gemfile:
41
+
42
+ ```ruby
43
+ gem 'browser_loader'
44
+ ```
45
+
46
+ And then execute:
47
+
48
+ $ bundle
49
+
50
+ Or install it yourself as:
51
+
52
+ $ gem install browser_loader
53
+
54
+ ## Usage
55
+
56
+ You can use the BrowserLoader::Factory class directly in your code, or derive/
57
+ compose a class from it.
58
+
59
+ Using it stand-alone:
60
+
61
+ ```ruby
62
+ require 'browser_loader'
63
+
64
+ # Set the user data (profile) directory
65
+ BrowserLoader::Factory.user_data_dir = '/tmp/chromium_user_data'
66
+
67
+ # Override the default timeout period (in seconds)
68
+ BrowserLoader::Factory.timeout = 360
69
+
70
+ # Configure and start the Chromium browser
71
+ browser = BrowserLoader::Factory.build
72
+
73
+ # Do something with browser...
74
+
75
+ ```
76
+
77
+ Using it through composition:
78
+
79
+ ```ruby
80
+ require 'browser_loader'
81
+
82
+ module MyModule
83
+
84
+ def browser
85
+ if @browser.nil?
86
+ # Set the user data (profile) directory
87
+ BrowserLoader::Factory.user_data_dir = '/tmp/chromium_user_data'
88
+
89
+ # Override the default timeout period (in seconds)
90
+ BrowserLoader::Factory.timeout = 360
91
+
92
+ # Configure and start the Chromium browser
93
+ @browser = BrowserLoader::Factory.build
94
+
95
+ # Add an +at_exit+ proc to close the browser when the program exits.
96
+ at_exit do
97
+ @browser.close unless @browser.nil?
98
+ end
99
+ end
100
+ end
101
+ end # module
102
+
103
+
104
+ class SomeClass
105
+ include MyModule
106
+
107
+ def goto_google
108
+ browser.goto 'http://google.com'
109
+ end
110
+ end # class
111
+
112
+ ```
113
+
114
+
115
+ ## Contributing
116
+
117
+ 1. Fork it ( https://github.com/[my-github-username]/browser_loader/fork )
118
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
119
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
120
+ 4. Push to the branch (`git push origin my-new-feature`)
121
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'browser_loader/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "browser_loader"
8
+ spec.version = BrowserLoader::VERSION
9
+ spec.authors = ["Jeff McAffee"]
10
+ spec.email = ["jeff@ktechsystems.com"]
11
+ spec.summary = %q{Watir-webdriver based browser loader class.}
12
+ spec.description = %q{Watir-webdriver based browser loader class providing additional chromium configuration options.}
13
+ spec.homepage = "https://github.com/jmcaffee/browser_loader"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.10"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "pry"
25
+ spec.add_development_dependency "pry-byebug"
26
+
27
+ spec.add_runtime_dependency "watir-webdriver"
28
+ spec.add_runtime_dependency "ktutils"
29
+ end
@@ -0,0 +1,229 @@
1
+ ##############################################################################
2
+ # File: factory.rb
3
+ # Purpose: Browser configuration factory
4
+ #
5
+ # Author: Jeff McAffee 10/16/2015
6
+ # Copyright: Copyright (c) 2015, Jeff McAffee
7
+ # All rights reserved. See LICENSE.txt for details.
8
+ # Website: http://JeffMcAffee.com
9
+ #
10
+ # Some additional configuration is provided through the environment (variables).
11
+ #
12
+ # BROWSER_PROXY_PORT: when present, will be used to proxy connections.
13
+ #
14
+ # BROWSER: defaults to chrome/chromium when not set
15
+ # ie: start Internet Explorer
16
+ # ff: start Firefox
17
+ #
18
+ ##############################################################################
19
+
20
+ require 'watir-webdriver'
21
+ require 'ktutils'
22
+
23
+ module BrowserLoader
24
+ class Factory
25
+
26
+ def self.client
27
+ # Client is explicitly instantiated so we can adjust the timeout period
28
+ # or replace with a mock for testing.
29
+ @@client ||= Selenium::WebDriver::Remote::Http::Default.new
30
+ end
31
+
32
+ def self.client= new_client
33
+ @@client = new_client
34
+ end
35
+
36
+ ##
37
+ # Timeout period for browser.
38
+ # Defaults to 60 seconds
39
+ #
40
+
41
+ def self.browser_timeout
42
+ @@browser_timeout ||= 60
43
+ end
44
+
45
+ def self.browser_timeout= timeout
46
+ @@browser_timeout = timeout
47
+ end
48
+
49
+ ##
50
+ # Directory to store profile data in
51
+ # Defaults to test/chrome-data.
52
+ #
53
+ # Directory will be created if it doesn't exist. Note that it is a relative
54
+ # path, so it is created relative to the current working directory.
55
+ #
56
+ # NOTE: The only way I've found to stop the EULA from being displayed is to
57
+ # use the user-data-dir switch and point to a dir where chrome can put the
58
+ # data indicating it (EULA) has already been accepted.
59
+ #
60
+
61
+ def self.user_data_dir
62
+ @@user_data_dir ||= "test/chrome-data"
63
+
64
+ # user_data_dir must be expanded to a full (absolute) path. A relative path
65
+ # results in chromedriver failing to start.
66
+ @@user_data_dir = File.expand_path(@@user_data_dir)
67
+ #puts "*** user_data_dir location: #{@@user_data_dir}"
68
+
69
+ # Create the data dir if it doesn't exist (or chromedriver fails to start).
70
+ unless File.exists?(@@user_data_dir) and File.directory?(@@user_data_dir)
71
+ FileUtils.makedirs @@user_data_dir
72
+ end
73
+
74
+ @@user_data_dir
75
+ end
76
+
77
+ def self.user_data_dir= dir
78
+ @@user_data_dir = dir
79
+ end
80
+
81
+ ##
82
+ # Directory to store cache data in
83
+ # Defaults to test/cache-data.
84
+ #
85
+ # Directory will be deleted and recreated to ensure a clean cache.
86
+ # Note thata the path is a relative path. It will be created relative
87
+ # to the current working directory.
88
+ #
89
+
90
+ def self.disk_cache_dir
91
+ @@disk_cache_dir ||= "test/cache-data"
92
+
93
+ # Store chrome cache at test/cache-data.
94
+ # We will wipe out this directory on each start to keep a clean cache.
95
+ @@disk_cache_dir = File.expand_path(@@disk_cache_dir)
96
+ # Delete the cache dir if it exists, then recreate it.
97
+ if File.exists?(@@disk_cache_dir) and File.directory?(@@disk_cache_dir)
98
+ FileUtils.rm_rf @@disk_cache_dir
99
+ end
100
+ FileUtils.makedirs @@disk_cache_dir
101
+
102
+ @@disk_cache_dir
103
+ end
104
+
105
+ def self.disk_cache_dir= dir
106
+ @@disk_cache_dir = dir
107
+ end
108
+
109
+ def self.log_level
110
+ @@log_level ||= 0
111
+ end
112
+
113
+ ##
114
+ # Set the browser logging level
115
+ #
116
+ # Sets the minimum log level.
117
+ # Valid values are from 0 to 3:
118
+ # INFO = 0
119
+ # WARNING = 1
120
+ # LOG_ERROR = 2
121
+ # LOG_FATAL = 3
122
+ #
123
+
124
+ def self.log_level= level
125
+ @@log_level = level
126
+ end
127
+
128
+ ##
129
+ # Switches used to configure the chrome/chromium browser
130
+ #
131
+ # To modify/add switches:
132
+ # Factory.switches << "--some-other-switch=#{data}"
133
+ #
134
+ # See http://peter.sh/experiments/chromium-command-line-switches/ for a list of available switches.
135
+ # See https://sites.google.com/a/chromium.org/chromedriver/capabilities for details on setting ChromeDriver caps.
136
+ #
137
+ # If BROWSER_PROXY_PORT environment variable is set to a port number,
138
+ # the --proxy-server switch will be added.
139
+ #
140
+ # If you intend to override the user-data-dir, cache-data-dir or logging
141
+ # level, do so before calling this method.
142
+ #
143
+
144
+ def self.switches
145
+ @@switches ||= Array.new
146
+
147
+ if @@switches.empty?
148
+ # Default switches:
149
+ # ignore-certificate-errors: Ignores certificate-related errors.
150
+ # disable-popup-blocking: Disable pop-up blocking.
151
+ # disable-translate: Allows disabling of translate from
152
+ # the command line to assist with
153
+ # automated browser testing.
154
+ # no-first-run: Skip First Run tasks, whether or not
155
+ # it's actually the First Run.
156
+ @@switches = %w[--ignore-certificate-errors --disable-popup-blocking --disable-translate --no-first-run]
157
+ @@switches << "--log-level=#{log_level}"
158
+ @@switches << "--user-data-dir=#{user_data_dir}"
159
+ @@switches << "--disk-cache-dir=#{disk_cache_dir}"
160
+
161
+ proxy_port = ENV['BROWSER_PROXY_PORT']
162
+ if proxy_port && ! proxy_port.empty?
163
+ proxy_connection_string = "socks://localhost:#{proxy_port}"
164
+ @@switches << "--proxy-server=#{proxy_connection_string}"
165
+ end
166
+ end
167
+
168
+ @@switches
169
+ end
170
+
171
+ ##
172
+ # Clear out all switches so they can be reconfigured
173
+ #
174
+
175
+ def self.reset_switches
176
+ @@switches = Array.new
177
+ end
178
+
179
+ ##
180
+ # Configure and return a browser object
181
+ #
182
+
183
+ def self.build
184
+ # We must clear out any environmental proxy or Selenium fails
185
+ # to connect to the local application.
186
+ ENV['http_proxy'] = nil
187
+
188
+ # No configuration is done if IE or Firefox browser is specified.
189
+ env_browser = ENV['BROWSER']
190
+ if env_browser
191
+ if env_browser == "ie"
192
+ return Watir::Browser.new :ie
193
+ end
194
+
195
+ if env_browser == "ff"
196
+ return Watir::Browser.new :firefox
197
+ end
198
+ end
199
+
200
+ # Specify chrome browser capabilities.
201
+ caps = Selenium::WebDriver::Remote::Capabilities.chrome
202
+ caps['chromeOptions'] = {'binary' => chromium_exe }
203
+
204
+ # Set the browser timeout. Default is 60 seconds.
205
+ client.timeout = browser_timeout
206
+
207
+ browser = Watir::Browser.new :chrome,
208
+ :switches => switches,
209
+ :http_client => client,
210
+ :service_log_path => user_data_dir + '/chromedriver.out',
211
+ :desired_capabilities => caps
212
+ end
213
+
214
+ private
215
+
216
+ def self.chromium_exe
217
+ if Ktutils::OS.windows?
218
+ # Download from http://chromium.woolyss.com/
219
+ chromium_exe = ENV["chrome_browser_path"]
220
+ unless (! chromium_exe.nil? && ! chromium_exe.empty? && File.exist?(chromium_exe))
221
+ raise "chrome_browser_path environment variable not set"
222
+ end
223
+ chromium_exe
224
+ else
225
+ chromium_exe = `which chromium-browser`.chomp
226
+ end
227
+ end
228
+ end
229
+ end
@@ -0,0 +1,3 @@
1
+ module BrowserLoader
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,6 @@
1
+ require "browser_loader/version"
2
+
3
+ module BrowserLoader
4
+ end
5
+
6
+ require 'browser_loader/factory'
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrowserLoader::Factory do
4
+
5
+ let(:factory) { BrowserLoader::Factory }
6
+
7
+ it "uses a default client" do
8
+ expect(factory.client).to_not be nil
9
+ end
10
+
11
+ it "log level is 0 by default" do
12
+ expect(factory.log_level).to eq 0
13
+ end
14
+
15
+ it "browser timeout is 60 seconds by default" do
16
+ expect(factory.browser_timeout).to eq 60
17
+ end
18
+
19
+ it 'user_data_dir is test/chrome-data by default' do
20
+ expect(factory.user_data_dir.end_with?('test/chrome-data')).to be true
21
+ end
22
+
23
+ it "disk_cache_dir is test/cache-data by default" do
24
+ expect(factory.disk_cache_dir.end_with?('test/cache-data')).to be true
25
+ end
26
+
27
+ it "switches contain default values" do
28
+ switches = factory.switches
29
+ expect(switches).to include "--ignore-certificate-errors"
30
+ expect(switches).to include "--disable-popup-blocking"
31
+ expect(switches).to include "--disable-translate"
32
+ expect(switches).to include "--no-first-run"
33
+
34
+ log_level = "--log-level=#{factory.log_level}"
35
+ data_dir = "--user-data-dir=#{factory.user_data_dir}"
36
+ cache_dir = "--disk-cache-dir=#{factory.disk_cache_dir}"
37
+ expect(switches).to include log_level
38
+ expect(switches).to include data_dir
39
+ expect(switches).to include cache_dir
40
+ end
41
+
42
+ it "switches contain proxy string if configured" do
43
+ port = '123'
44
+ ENV['BROWSER_PROXY_PORT'] = port
45
+ proxy_string = "--proxy-server=socks://localhost:#{port}"
46
+
47
+ # Clear out the switches so they're regenerated.
48
+ factory.reset_switches
49
+ switches = factory.switches
50
+
51
+ expect(switches).to include proxy_string
52
+
53
+ # Clear out the switches so they're clean for other tests
54
+ factory.reset_switches
55
+ ENV['BROWSER_PROXY_PORT'] = nil
56
+ end
57
+
58
+ it "starts chrome and browses to google" do
59
+ browser = factory.build
60
+ browser.goto "https://google.com"
61
+ expect(browser.html).to include "searchform"
62
+ browser.close
63
+ end
64
+
65
+ it "starts firefox and browses to google" do
66
+ ENV['BROWSER'] = 'ff'
67
+ browser = factory.build
68
+ browser.goto "https://google.com"
69
+ expect(browser.html).to include "searchform"
70
+ browser.close
71
+ ENV['BROWSER'] = nil
72
+ end
73
+
74
+ if Ktutils::OS.windows?
75
+ it "starts IE and browses to google" do
76
+ ENV['BROWSER'] = 'ie'
77
+ browser = factory.build
78
+ browser.goto "https://google.com"
79
+ expect(browser.html).to include "searchform"
80
+ browser.close
81
+ ENV['BROWSER'] = nil
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrowserLoader do
4
+ it 'has a version number' do
5
+ expect(BrowserLoader::VERSION).not_to be nil
6
+ end
7
+ end
@@ -0,0 +1,106 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'browser_loader'
3
+
4
+ if ENV['coverage']
5
+ raise 'simplecov only works on Ruby 1.9' unless RUBY_VERSION =~ /^1\.9/
6
+
7
+ require 'simplecov'
8
+ SimpleCov.start { add_filter "spec/" }
9
+ end
10
+
11
+ # This file was generated by the `rspec --init` command. Conventionally, all
12
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
13
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
14
+ # this file to always be loaded, without a need to explicitly require it in any
15
+ # files.
16
+ #
17
+ # Given that it is always loaded, you are encouraged to keep this file as
18
+ # light-weight as possible. Requiring heavyweight dependencies from this file
19
+ # will add to the boot time of your test suite on EVERY test run, even for an
20
+ # individual file that may not need all of that loaded. Instead, consider making
21
+ # a separate helper file that requires the additional dependencies and performs
22
+ # the additional setup, and require it from the spec files that actually need
23
+ # it.
24
+ #
25
+ # The `.rspec` file also contains a few flags that are not defaults but that
26
+ # users commonly want.
27
+ #
28
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
29
+ RSpec.configure do |config|
30
+ # rspec-expectations config goes here. You can use an alternate
31
+ # assertion/expectation library such as wrong or the stdlib/minitest
32
+ # assertions if you prefer.
33
+ config.expect_with :rspec do |expectations|
34
+ # This option will default to `true` in RSpec 4. It makes the `description`
35
+ # and `failure_message` of custom matchers include text for helper methods
36
+ # defined using `chain`, e.g.:
37
+ # be_bigger_than(2).and_smaller_than(4).description
38
+ # # => "be bigger than 2 and smaller than 4"
39
+ # ...rather than:
40
+ # # => "be bigger than 2"
41
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
42
+ end
43
+
44
+ # rspec-mocks config goes here. You can use an alternate test double
45
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
46
+ config.mock_with :rspec do |mocks|
47
+ # Prevents you from mocking or stubbing a method that does not exist on
48
+ # a real object. This is generally recommended, and will default to
49
+ # `true` in RSpec 4.
50
+ mocks.verify_partial_doubles = true
51
+ end
52
+
53
+ # The settings below are suggested to provide a good initial experience
54
+ # with RSpec, but feel free to customize to your heart's content.
55
+ # These two settings work together to allow you to limit a spec run
56
+ # to individual examples or groups you care about by tagging them with
57
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
58
+ # get run.
59
+ config.filter_run :focus
60
+ config.run_all_when_everything_filtered = true
61
+
62
+ # Allows RSpec to persist some state between runs in order to support
63
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
64
+ # you configure your source control system to ignore this file.
65
+ config.example_status_persistence_file_path = "spec/examples.txt"
66
+
67
+ # Limits the available syntax to the non-monkey patched syntax that is
68
+ # recommended. For more details, see:
69
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
70
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
71
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
72
+ #config.disable_monkey_patching!
73
+
74
+ # This setting enables warnings. It's recommended, but in some cases may
75
+ # be too noisy due to issues in dependencies.
76
+ config.warnings = false
77
+
78
+ # Many RSpec users commonly either run the entire suite or an individual
79
+ # file, and it's useful to allow more verbose output when running an
80
+ # individual spec file.
81
+ if config.files_to_run.one?
82
+ # Use the documentation formatter for detailed output,
83
+ # unless a formatter has already been configured
84
+ # (e.g. via a command-line flag).
85
+ config.default_formatter = 'doc'
86
+ end
87
+
88
+ # Print the 10 slowest examples and example groups at the
89
+ # end of the spec run, to help surface which specs are running
90
+ # particularly slow.
91
+ config.profile_examples = 10
92
+
93
+ # Run specs in random order to surface order dependencies. If you find an
94
+ # order dependency and want to debug it, you can fix the order by providing
95
+ # the seed, which is printed after each run.
96
+ # --seed 1234
97
+ config.order = :random
98
+
99
+ # Seed global randomization in this process using the `--seed` CLI option.
100
+ # Setting this allows you to use `--seed` to deterministically reproduce
101
+ # test failures related to randomization by passing the same `--seed` value
102
+ # as the one that triggered the failure.
103
+ Kernel.srand config.seed
104
+ end
105
+
106
+
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: browser_loader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeff McAffee
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
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.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: watir-webdriver
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: ktutils
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Watir-webdriver based browser loader class providing additional chromium
112
+ configuration options.
113
+ email:
114
+ - jeff@ktechsystems.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - Gemfile
122
+ - LICENSE.txt
123
+ - README.md
124
+ - Rakefile
125
+ - browser_loader.gemspec
126
+ - lib/browser_loader.rb
127
+ - lib/browser_loader/factory.rb
128
+ - lib/browser_loader/version.rb
129
+ - spec/browser_loader/factory_spec.rb
130
+ - spec/browser_loader_spec.rb
131
+ - spec/spec_helper.rb
132
+ homepage: https://github.com/jmcaffee/browser_loader
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.3.0
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: Watir-webdriver based browser loader class.
156
+ test_files:
157
+ - spec/browser_loader/factory_spec.rb
158
+ - spec/browser_loader_spec.rb
159
+ - spec/spec_helper.rb
160
+ has_rdoc: