RDee 0.1 → 0.2

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: 1f108a3c7c47f5ce2e00c26b947671fa2bd992ed
4
- data.tar.gz: 782ca4414611441da4ce915b868a31ebde8c49ea
3
+ metadata.gz: 0ee57a488781369377cdc08a2c8ef183d0d599ad
4
+ data.tar.gz: b93f7f13abec8499bd2b559bf719fb8a177a7ce5
5
5
  SHA512:
6
- metadata.gz: 587e4e884907beff175008cbf8a68ab56488c8d9e094f91b230ba9ae92ce78311834fb53dcf3603bd5b6ba913ec295595698f41379a2f59e289101edbed61ac4
7
- data.tar.gz: 8a290e05a8d5c27341513f249ab704fc115b1f0f1065ffd0a9be9dc97d55452efe2e6908d96fd87d427c9344c0a7d8e1b0c4196d0d2aea68bf464bf6a538a9e1
6
+ metadata.gz: 8535d8b60f972c6d1b52a97b4b0b3dcd6057672825e96f927c4ef1ee83fe20334ea90d2090a56f06a61100f9c32347239a940fe232822f57204b8b181fafc326
7
+ data.tar.gz: 4695865cee85acaa708296d9fd2ca3db5a6d36e5e4321f6e6e1a54a86d3ce5d2cc85575c937ad76feaf1df9614d62ccb0240d058821501f4b4a08df3c740d6e8
data/ChangeLog CHANGED
@@ -1,2 +1,6 @@
1
- === Release 0.1
1
+ === Release 0.2 / 18-August-2014
2
+ * Enhancements
3
+ * Printing and raising exception when browser connection cannot be established
4
+
5
+ === Release 0.1 / 23-July-2014
2
6
  * Initial release
data/README.md CHANGED
@@ -1,12 +1,103 @@
1
- # RD
1
+ # RDee
2
+
3
+ RDee is a gem that makes it easy to switch between different browsers when you are using
4
+ Selenium or Watir as your driver. You can also easily switch between running on a local
5
+ browser or a browser that is part of a Selenium Grid on on Sauce Labs.
6
+
7
+ ## Usage
8
+
9
+ RDee was designed to make it easy for your tests to switch between different browsers. It
10
+ can select browsers that are running on your local machine or on a Selenium Grid. The way
11
+ you select a browser is by calling one of the following methods:
12
+
13
+ ````ruby
14
+ RDee.selenium_browser(target = :firefox, options = {})
15
+ # or
16
+ RDee.watir_browser(target = :firefox, options = {})
17
+ ````
18
+
19
+ These methods take two optional parameters. The first is the target browser. The second
20
+ is options that can be passed to that browser when it is started.
21
+
22
+ ### Specifying the target browser
23
+
24
+ As we saw in the previous section, you can specify the target browser by passing a symbol
25
+ to the `selenium_browser` or `watir_browser` methods. The problem with this is that you
26
+ would have to change the code if you wanted to use a different browser. RDee has made
27
+ this simpler by allowing you to set the target browser using an environment variable.
28
+ The environment variable is named `RDEE_BROWSER`. A couple of typical usage patterns
29
+ are to set this in the `cucumber.yml` file for specific profiles or to simply set this
30
+ on the command-line when running the tests. Here is an example of a `cucumber.yml` file:
31
+
32
+ ````yml
33
+ default: RDEE_BROWSER=firefox --format pretty --color
34
+ chrome: RDEE_BROWSER=chrome --format pretty --color
35
+ safari: RDEE_BROWSER=safari --format pretty --color
36
+ ````
37
+
38
+ From the command-line you could simply do this:
39
+
40
+ ````
41
+ RDEE_BROWSER=chrome bundle exec cucumber
42
+ ````
43
+
44
+ The format of the target passed to the methods or set in the environment variable determines
45
+ what browser, version, and host os you get. The format follows the following pattern:
46
+
47
+ ````
48
+ firefox30_win8
49
+ ````
50
+
51
+ The first part of the target determines what browser to use. At the current time you can
52
+ specify `firefox`, `chrome`, `ie`, or `safari`. In the near future we will be supporting
53
+ mobile platforms so stay tuned.
54
+
55
+ Immediately following the browser is the version. This is optional and if you do not specify
56
+ it will select whatever version is available. It is up to you to make sure that the browser
57
+ and version combination are valid.
58
+
59
+ Following the version there is an underscore followed by the host os. This value is also
60
+ optional. Currently the following host os values are available:
61
+
62
+ | host | description |
63
+ | --- | --- |
64
+ | win81 | Windows 8.1 |
65
+ | win8 | Windows 8 |
66
+ | win7 | Windows 7 |
67
+ | winxp | Windows XP |
68
+ | snow_leopard | OS X 10.6 |
69
+ | mountain_lion | OS X 10.8 |
70
+ | mavricks | OS X 10.9 |
71
+ | linux | Linux |
72
+
73
+ The host os value is typically used when running the tests on a Selenium Grid. It is up to
74
+ you to ensure that the host and requested browser combination exist on your grid.
75
+
76
+ ### Additional Configurations
77
+
78
+ Additional parameters can be set by calling the configure method on the RDee module. First
79
+ of all, you can set the `url` value. If the `url` is set RDee will attempt to make a remote
80
+ connect to the grid specified by the `url`. Additionaly you can specify whether it should
81
+ use a persistent http connection as well as specify additional parameters that should be
82
+ sent to a specific type of browser when it is used. Here are examples:
83
+
84
+ ````ruby
85
+ RDee.configure do | config |
86
+ config.url = 'http://path.to.selenium.grid/wd/hub'
87
+ config.persistent_http = true
88
+ config.chrome_options = { :switches => %w[--disable-extensions]}
89
+ config.firefox_options = { :switches => %w[--disable-popups]}
90
+ config.ie_options = { :switches => %w[--disable-popups]}
91
+ config.safari_options = { :switches => %w[--disable-popups]}
92
+ end
93
+ ````
2
94
 
3
- TODO: Write a gem description
4
95
 
5
96
  ## Installation
6
97
 
7
98
  Add this line to your application's Gemfile:
8
99
 
9
- gem 'rd'
100
+ gem 'RDee'
10
101
 
11
102
  And then execute:
12
103
 
@@ -14,11 +105,8 @@ And then execute:
14
105
 
15
106
  Or install it yourself as:
16
107
 
17
- $ gem install rd
18
-
19
- ## Usage
108
+ $ gem install RDee
20
109
 
21
- TODO: Write usage instructions here
22
110
 
23
111
  ## Contributing
24
112
 
@@ -2,6 +2,86 @@ require 'rdee/version'
2
2
  require 'rdee/browser_factory'
3
3
  require 'rdee/target_parser'
4
4
 
5
+ #
6
+ # RDee was designed to make it easy for your tests to switch between different browsers. It
7
+ # can select browsers that are running on your local machine or on a Selenium Grid. The way
8
+ # you select a browser is by calling one of the following methods:
9
+ #
10
+ # @example Calling the RDee methods
11
+ # RDee.selenium_browser(target = :firefox, options = {})
12
+ # # or
13
+ # RDee.watir_browser(target = :firefox, options = {})
14
+ #
15
+ #
16
+ # These methods take two optional parameters. The first is the target browser. The second
17
+ # is options that can be passed to that browser when it is started.
18
+ #
19
+ # You can specify the target browser by passing a symbol
20
+ # to the `selenium_browser` or `watir_browser` methods. The problem with this is that you
21
+ # would have to change the code if you wanted to use a different browser. RDee has made
22
+ # this simpler by allowing you to set the target browser using an environment variable.
23
+ # The environment variable is named `RDEE_BROWSER`. A couple of typical usage patterns
24
+ # are to set this in the `cucumber.yml` file for specific profiles or to simply set this
25
+ # on the command-line when running the tests. Here is an example of a `cucumber.yml` file:
26
+ #
27
+ # @example Setting RDEE_BROWSer environment variable in cucumber.yml
28
+ # default: RDEE_BROWSER=firefox --format pretty --color
29
+ # chrome: RDEE_BROWSER=chrome --format pretty --color
30
+ # safari: RDEE_BROWSER=safari --format pretty --color
31
+ #
32
+ # From the command-line you could simply do this:
33
+ #
34
+ # @example Setting the RDEE_BROWSER environment variable from command-line
35
+ # RDEE_BROWSER=chrome bundle exec cucumber
36
+ #
37
+ # The format of the target passed to the methods or set in the environment variable determines
38
+ # what browser, version, and host os you get. The format follows the following pattern:
39
+ #
40
+ # @example Format of the target browser
41
+ # firefox30_win8
42
+ #
43
+ #
44
+ # The first part of the target determines what browser to use. At the current time you can
45
+ # specify `firefox`, `chrome`, `ie`, or `safari`. In the near future we will be supporting
46
+ # mobile platforms so stay tuned.
47
+ #
48
+ # Immediately following the browser is the version. This is optional and if you do not specify
49
+ # it will select whatever version is available. It is up to you to make sure that the browser
50
+ # and version combination are valid.
51
+ #
52
+ # Following the version there is an underscore followed by the host os. This value is also
53
+ # optional. Currently the following host os values are available:
54
+ #
55
+ # | host | description |
56
+ # | ------------- | ----------- |
57
+ # | win81 | Windows 8.1 |
58
+ # | win8 | Windows 8 |
59
+ # | win7 | Windows 7 |
60
+ # | winxp | Windows XP |
61
+ # | snow_leopard | OS X 10.6 |
62
+ # | mountain_lion | OS X 10.8 |
63
+ # | mavricks | OS X 10.9 |
64
+ # | linux | Linux |
65
+ #
66
+ # The host os value is typically used when running the tests on a Selenium Grid. It is up to
67
+ # you to ensure that the host and requested browser combination exist on your grid.
68
+ #
69
+ # Additional parameters can be set by calling the configure method on the RDee module. First
70
+ # of all, you can set the `url` value. If the `url` is set RDee will attempt to make a remote
71
+ # connect to the grid specified by the `url`. Additionaly you can specify whether it should
72
+ # use a persistent http connection as well as specify additional parameters that should be
73
+ # sent to a specific type of browser when it is used. Here are examples:
74
+ #
75
+ # @example Setting parameters using configure
76
+ # RDee.configure do | config |
77
+ # config.url = 'http://path.to.selenium.grid/wd/hub'
78
+ # config.persistent_http = true
79
+ # config.chrome_options = { :switches => %w[--disable-extensions]}
80
+ # config.firefox_options = { :switches => %w[--disable-popups]}
81
+ # config.ie_options = { :switches => %w[--disable-popups]}
82
+ # config.safari_options = { :switches => %w[--disable-popups]}
83
+ # end
84
+ #
5
85
  module RDee
6
86
 
7
87
  def self.watir_browser(target = :firefox, options = {})
@@ -1,11 +1,16 @@
1
1
  require_relative 'target_parser'
2
2
 
3
+
4
+
3
5
  module RDee
6
+ class ConnectionError < StandardError
7
+ end
8
+
4
9
  class BrowserFactory
5
10
  include TargetParser
6
11
 
7
12
  attr_accessor :url, :persistent_http, :chrome_options, :firefox_options,
8
- :ie_options, :safari_options, :opera_options
13
+ :ie_options, :safari_options
9
14
 
10
15
  def watir_browser(target, options)
11
16
  platform, options = platform_and_options(target, options)
@@ -20,19 +25,29 @@ module RDee
20
25
  private
21
26
 
22
27
  def watir_browser_for(platform, options)
23
- if options.empty?
24
- Watir::Browser.new platform
25
- else
26
- Watir::Browser.new platform, options
28
+ begin
29
+ if options.empty?
30
+ Watir::Browser.new platform
31
+ else
32
+ Watir::Browser.new platform, options
33
+ end
34
+ rescue Exception => e
35
+ $stderr.puts e
36
+ raise RDee::ConnectionError, e
27
37
  end
28
38
  end
29
39
 
30
40
  def selenium_browser_for(platform, options)
31
- if options.empty?
32
- Selenium::WebDriver.for platform
33
- else
34
- Selenium::WebDriver.for platform, options
35
- end
41
+ begin
42
+ if options.empty?
43
+ Selenium::WebDriver.for platform
44
+ else
45
+ Selenium::WebDriver.for platform, options
46
+ end
47
+ rescue Exception => e
48
+ $stderr.puts e
49
+ raise RDee::ConnectionError, e
50
+ end
36
51
  end
37
52
 
38
53
  def platform_and_options(target, options)
@@ -1,3 +1,3 @@
1
1
  module RDee
2
- VERSION = "0.1"
2
+ VERSION = "0.2"
3
3
  end
@@ -10,7 +10,12 @@ describe RDee do
10
10
  expect(watir_browser).to receive(:new).with(:firefox)
11
11
  RDee.watir_browser
12
12
  end
13
- end
13
+
14
+ it "should catch and print exceptions that occur when establishing a connection" do
15
+ expect(watir_browser).to receive(:new).and_raise(Exception, 'foo')
16
+ expect{ RDee.watir_browser }.to raise_error(RDee::ConnectionError, 'foo')
17
+ end
18
+ end
14
19
 
15
20
  context "when getting a connection for Selenium" do
16
21
  let(:selenium_browser) { Selenium::WebDriver }
@@ -19,7 +24,12 @@ describe RDee do
19
24
  expect(selenium_browser).to receive(:for).with(:firefox)
20
25
  RDee.selenium_browser
21
26
  end
22
- end
27
+
28
+ it "should catch and print exceptions that occur when establishing a connection" do
29
+ expect(selenium_browser).to receive(:for).and_raise(Exception, 'foo')
30
+ expect{ RDee.selenium_browser }.to raise_error(RDee::ConnectionError, 'foo')
31
+ end
32
+ end
23
33
 
24
34
  context "when using common functionality" do
25
35
  it "should use the BROWSER environment variable when present" do
@@ -70,6 +80,7 @@ describe RDee do
70
80
  config.url = nil
71
81
  end
72
82
  end
83
+
73
84
  end
74
85
 
75
86
  context "when passing additional browser options" do
@@ -161,15 +172,5 @@ describe RDee do
161
172
  end
162
173
  end
163
174
 
164
- it "should not allow opera_options when not using opera" do
165
- RDee.configure do |config|
166
- config.opera_options = {opera_options: 'option'}
167
- end
168
- expect(watir_browser).to receive(:new).with(:firefox)
169
- RDee.watir_browser(:firefox)
170
- RDee.configure do |config|
171
- config.opera_options = nil
172
- end
173
- end
174
175
  end
175
176
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RDee
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey S. Morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-23 00:00:00.000000000 Z
11
+ date: 2014-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: watir-webdriver
@@ -174,3 +174,4 @@ test_files:
174
174
  - spec/lib/target_parser_spec.rb
175
175
  - spec/lib/targets_spec.rb
176
176
  - spec/spec_helper.rb
177
+ has_rdoc: