selenium-connect 3.6.0 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +9 -0
- data/README.md +12 -5
- data/bin/chromedriver +0 -0
- data/lib/selenium_connect/job.rb +15 -7
- data/selenium-connect.gemspec +2 -2
- data/spec/integration/lib/selenium_connect/runners/chrome_spec.rb +1 -1
- data/spec/integration/lib/selenium_connect/runners/firefox_spec.rb +18 -1
- data/spec/integration/lib/selenium_connect/runners/sauce_spec.rb +4 -3
- metadata +4 -6
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
#3.7.0 (2013-08-26)
|
2
|
+
Can now pass run time sauce options to a job and will capture all open window doms
|
3
|
+
|
4
|
+
- Bumped version to 3.7.0 to prepare for release.
|
5
|
+
- upgraded chromedriver and moved the tests to the right place
|
6
|
+
- updated tests and doc for additional configurations
|
7
|
+
- added the ability to pass in a hash of sauce opts to the job start array in order to set team permissions and what have
|
8
|
+
- first crack at multi window assets
|
9
|
+
|
1
10
|
#3.6.0 (2013-08-18)
|
2
11
|
upgraded selenium version and improved chrome log storage
|
3
12
|
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#selenium-connect 3.
|
1
|
+
#selenium-connect 3.7.0 (2013-08-26)
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/selenium-connect.png)](http://badge.fury.io/rb/selenium-connect) [![Build Status](https://travis-ci.org/arrgyle/selenium-connect.png?branch=develop)](https://travis-ci.org/arrgyle/selenium-connect) [![Code Climate](https://codeclimate.com/github/arrgyle/selenium-connect.png)](https://codeclimate.com/github/arrgyle/selenium-connect) [![Coverage Status](https://coveralls.io/repos/arrgyle/selenium-connect/badge.png?branch=develop)](https://coveralls.io/r/arrgyle/selenium-connect?branch=develop)
|
4
4
|
|
@@ -45,9 +45,13 @@ sc.finish
|
|
45
45
|
### Start
|
46
46
|
If host is set to "localhost" and no jar file is specified, it will run the version of [selenium-standalone-server.jar](https://code.google.com/p/selenium/downloads/list) that is bundled with the library (currently 2.33.0). Or, you can specify your own jar if you have one you prefer to use. This is done with c.jar = 'path-to-jar-file'.
|
47
47
|
|
48
|
-
If no additional parameters are set, the Selenium Server will be run in the background with logging disabled. If a logging directory is provided (with c.log = 'path-to-log-dir') then
|
49
|
-
|
50
|
-
|
48
|
+
If no additional parameters are set, the Selenium Server will be run in the background with logging disabled. If a logging directory is provided (with c.log = 'path-to-log-dir') then the following output files will be generated:
|
49
|
+
|
50
|
+
- Selenium Server JSON Wire Protocol output (server.log)
|
51
|
+
- firefox.log (If using Firefox as the browser)
|
52
|
+
- chrome.log (If using Chrome as the browser)
|
53
|
+
- dom_0.html (Or dom_1.html etc for each open window at the time the job is finished, a dump of the html)
|
54
|
+
- failshot.png (If failshot is marked as true, a screenshot of the end state)
|
51
55
|
|
52
56
|
This localhost functionality is driven using the [Selenium Rake Server Task](http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/Rake/ServerTask.html).
|
53
57
|
|
@@ -116,10 +120,13 @@ When you create your job you can pass in parameters, right now just `:name` that
|
|
116
120
|
|
117
121
|
```Ruby
|
118
122
|
#…
|
119
|
-
job.start name: 'website should load'
|
123
|
+
job.start name: 'website should load', sauce_opts: { public: 'team' }
|
120
124
|
#…
|
121
125
|
```
|
122
126
|
|
127
|
+
Note you can also pass a hash of `sauce_opts` to the job start function that will let you do additional run time configuration with options as detailed here: [https://saucelabs.com/docs/additional-config](https://saucelabs.com/docs/additional-config)
|
128
|
+
|
129
|
+
|
123
130
|
Similarly, when you finish your job you can pass in parameters. You can use the `failshot` parameter to turn on the saving of the last screenshot. For SauceLabs you can mark the tests as passed or failed:
|
124
131
|
|
125
132
|
```Ruby
|
data/bin/chromedriver
CHANGED
Binary file
|
data/lib/selenium_connect/job.rb
CHANGED
@@ -19,9 +19,12 @@ class SeleniumConnect
|
|
19
19
|
|
20
20
|
# Creates and returns the driver, using options passed in
|
21
21
|
def start(opts = {})
|
22
|
-
@job_name = slugify_name opts[:name] if opts.has_key? :name
|
23
22
|
# TODO: this could be refactored out into an options parser of sorts
|
24
|
-
@
|
23
|
+
@job_name = opts.key?(:name) ? slugify_name(opts[:name]) : 'unnamed_job'
|
24
|
+
sauce_config = {}
|
25
|
+
sauce_config.merge!(opts[:sauce_opts]) if opts.key? :sauce_opts
|
26
|
+
sauce_config.merge!(job_name: @job_name)
|
27
|
+
@config.sauce_opts = sauce_config
|
25
28
|
@driver = Runner.new(@config).driver
|
26
29
|
end
|
27
30
|
|
@@ -31,7 +34,7 @@ class SeleniumConnect
|
|
31
34
|
# extracted from the earlier main finish
|
32
35
|
begin
|
33
36
|
save_html
|
34
|
-
if opts.
|
37
|
+
if opts.key?(:failshot) && opts[:failshot] && @config.host != 'saucelabs'
|
35
38
|
save_screenshot
|
36
39
|
end
|
37
40
|
@driver.quit
|
@@ -52,21 +55,26 @@ class SeleniumConnect
|
|
52
55
|
end
|
53
56
|
|
54
57
|
def save_html
|
55
|
-
|
58
|
+
dom_number = 0
|
59
|
+
@driver.window_handles.each do |handle|
|
60
|
+
@driver.switch_to.window(handle)
|
61
|
+
save_asset("dom_#{dom_number}.html", @driver.page_source)
|
62
|
+
dom_number += 1
|
63
|
+
end
|
56
64
|
end
|
57
65
|
|
58
66
|
def process_sauce_logs(opts = {})
|
59
67
|
job_id = @driver.session_id
|
60
68
|
@sauce_facade.job_id = job_id
|
61
|
-
if opts.
|
69
|
+
if opts.key?(:failed) && opts[:failed]
|
62
70
|
status = 'failed'
|
63
71
|
@sauce_facade.fail_job
|
64
|
-
if opts.
|
72
|
+
if opts.key?(:failshot) && opts[:failshot]
|
65
73
|
screenshot = @sauce_facade.fetch_last_screenshot
|
66
74
|
@data[:assets][:failshot] = save_asset('failshot.png', screenshot) if screenshot
|
67
75
|
end
|
68
76
|
end
|
69
|
-
if opts.
|
77
|
+
if opts.key?(:passed) && opts[:passed]
|
70
78
|
status = 'passed'
|
71
79
|
@sauce_facade.pass_job
|
72
80
|
end
|
data/selenium-connect.gemspec
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'selenium-connect'
|
3
|
-
s.version = '3.
|
3
|
+
s.version = '3.7.0'
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.authors = ['Dave Haeffner', 'Jason Fox']
|
6
6
|
s.email = ['dave@arrgyle.com', 'jason@arrgyle.com']
|
7
7
|
s.homepage = 'https://github.com/arrgyle/selenium-connect'
|
8
8
|
s.summary = 'A stupid simple way to run your Selenium tests on localhost, against a Selenium Grid, or in the cloud (e.g. SauceLabs).'
|
9
|
-
s.description = '
|
9
|
+
s.description = 'Can now pass run time sauce options to a job and will capture all open window doms'
|
10
10
|
s.license = 'MIT'
|
11
11
|
|
12
12
|
s.files = `git ls-files`.split($/)
|
@@ -30,7 +30,7 @@ describe 'Chrome', selenium: true do
|
|
30
30
|
sc.finish
|
31
31
|
|
32
32
|
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'chrome.log')).should be_true
|
33
|
-
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', '
|
33
|
+
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'dom_0.html')).should be_true
|
34
34
|
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'failshot.png')).should be_true
|
35
35
|
end
|
36
36
|
end
|
@@ -25,7 +25,7 @@ describe 'Firefox', selenium: true do
|
|
25
25
|
sc.finish
|
26
26
|
|
27
27
|
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'firefox.log')).should be_true
|
28
|
-
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', '
|
28
|
+
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'dom_0.html')).should be_true
|
29
29
|
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'failshot.png')).should be_true
|
30
30
|
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'server.log')).should be_true
|
31
31
|
end
|
@@ -68,4 +68,21 @@ describe 'Firefox', selenium: true do
|
|
68
68
|
job.finish
|
69
69
|
sc.finish
|
70
70
|
end
|
71
|
+
|
72
|
+
it 'should download all the dom dumps if there are multiple windows open' do
|
73
|
+
config = SeleniumConnect::Configuration.new browser: 'firefox', log: '/build/tmp'
|
74
|
+
sc = SeleniumConnect.start config
|
75
|
+
job = sc.create_job
|
76
|
+
driver = job.start
|
77
|
+
|
78
|
+
driver.get 'http://the-internet.herokuapp.com/windows'
|
79
|
+
driver.find_element(css: '.example a').click
|
80
|
+
unless driver.title =~ /Poogle/
|
81
|
+
# simulate a failure situation
|
82
|
+
job.finish failed: true, failshot: true
|
83
|
+
end
|
84
|
+
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'dom_0.html')).should be_true
|
85
|
+
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'dom_1.html')).should be_true
|
86
|
+
sc.finish
|
87
|
+
end
|
71
88
|
end
|
@@ -24,14 +24,15 @@ describe 'Sauce Labs', selenium: true do
|
|
24
24
|
it 'just execute a sauce job successfully' do
|
25
25
|
job = @sc.create_job
|
26
26
|
name = 'successful sauce job'
|
27
|
-
driver = job.start name: name
|
27
|
+
driver = job.start name: name, sauce_opts: { public: 'share' }
|
28
28
|
execute_simple_test driver
|
29
29
|
report = job.finish passed: true
|
30
30
|
report.data[:sauce_data][:name].should be == 'successful_sauce_job'
|
31
31
|
report.data[:sauce_data][:passed].should be_true
|
32
|
-
report.data[:
|
32
|
+
report.data[:sauce_data][:public].should eq 'share'
|
33
|
+
report.data[:assets][:server_log].should eq 'server.log'
|
33
34
|
File.exist?(File.join(Dir.pwd, 'build', 'tmp', 'server.log')).should be_true
|
34
|
-
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', '
|
35
|
+
File.exist?(File.join(ENV['BUILD_PATH'], 'tmp', 'dom_0.html')).should be_true
|
35
36
|
end
|
36
37
|
|
37
38
|
it 'should mark a sauce job as failed' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-08-
|
13
|
+
date: 2013-08-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: selenium-webdriver
|
@@ -76,7 +76,8 @@ dependencies:
|
|
76
76
|
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: 0.0.8
|
79
|
-
description:
|
79
|
+
description: Can now pass run time sauce options to a job and will capture all open
|
80
|
+
window doms
|
80
81
|
email:
|
81
82
|
- dave@arrgyle.com
|
82
83
|
- jason@arrgyle.com
|
@@ -156,9 +157,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
157
|
- - ! '>='
|
157
158
|
- !ruby/object:Gem::Version
|
158
159
|
version: '0'
|
159
|
-
segments:
|
160
|
-
- 0
|
161
|
-
hash: -2907860851704269908
|
162
160
|
requirements: []
|
163
161
|
rubyforge_project:
|
164
162
|
rubygems_version: 1.8.25
|