Dduvall has uploaded a new change for review.
https://gerrit.wikimedia.org/r/248372
Change subject: Fix undefined `last_session_ids=` method exception
......................................................................
Fix undefined `last_session_ids=` method exception
The previous implementation of `RemoteBrowserFactory#teardown`
incorrectly referenced `last_session_ids=` as if it were a method of the
object's class, when it's actually defined in the module's singleton
scope.
Bug: T114368
Change-Id: I9c58eb376364a75d73f6cad98bca956193d7afe6
---
M lib/mediawiki_selenium/remote_browser_factory.rb
M spec/remote_browser_factory_spec.rb
2 files changed, 44 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/selenium
refs/changes/72/248372/1
diff --git a/lib/mediawiki_selenium/remote_browser_factory.rb
b/lib/mediawiki_selenium/remote_browser_factory.rb
index 71c3d88..341d0ed 100644
--- a/lib/mediawiki_selenium/remote_browser_factory.rb
+++ b/lib/mediawiki_selenium/remote_browser_factory.rb
@@ -45,13 +45,12 @@
def teardown(env, status)
artifacts = super
- self.class.last_session_ids = []
+ RemoteBrowserFactory.last_session_ids = []
each do |browser|
sid = browser.driver.session_id
- url = browser.driver.send(:bridge).http.send(:server_url)
- username = url.user
- key = url.password
+ username = env.lookup(:sauce_ondemand_username)
+ key = env.lookup(:sauce_ondemand_access_key)
RestClient::Request.execute(
method: :put,
@@ -66,7 +65,7 @@
}.to_json
)
- self.class.last_session_ids << sid
+ RemoteBrowserFactory.last_session_ids << sid
artifacts["http://saucelabs.com/jobs/#{sid}"] = 'text/url'
end
diff --git a/spec/remote_browser_factory_spec.rb
b/spec/remote_browser_factory_spec.rb
index cc45e5f..4db3fc8 100644
--- a/spec/remote_browser_factory_spec.rb
+++ b/spec/remote_browser_factory_spec.rb
@@ -1,4 +1,6 @@
+require 'rest_client'
require 'spec_helper'
+
require 'mediawiki_selenium/browser_factory/base'
module MediawikiSelenium
@@ -46,5 +48,43 @@
end
end
end
+
+ describe '#teardown' do
+ subject { factory.teardown(env, status) }
+
+ let(:config) do
+ {
+ sauce_ondemand_username: 'foo',
+ sauce_ondemand_access_key: 'bar',
+ build_number: 'b123'
+ }
+ end
+
+ let(:env) { Environment.new(config) }
+ let(:status) { :passed }
+
+ before do
+ browser = double('Watir::Browser')
+ driver = double('Selenium::WebDriver::Driver')
+
+ expect(factory).to receive(:each).and_yield(browser)
+ expect(browser).to receive(:driver).and_return(driver)
+ expect(driver).to receive(:session_id).and_return('123')
+ end
+
+ it 'updates the SauceLabs session for each browser and returns the URL
as an artifact' do
+ expect(RestClient::Request).to receive(:execute).with(
+ method: :put,
+ url: 'https://saucelabs.com/rest/v1/foo/jobs/123',
+ user: 'foo',
+ password: 'bar',
+ headers: { content_type: 'application/json' },
+ payload: '{"public":true,"passed":true,"build":"b123"}'
+ )
+
+ expect(subject).to include('http://saucelabs.com/jobs/123')
+ expect(subject['http://saucelabs.com/jobs/123']).to eq('text/url')
+ end
+ end
end
end
--
To view, visit https://gerrit.wikimedia.org/r/248372
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9c58eb376364a75d73f6cad98bca956193d7afe6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/selenium
Gerrit-Branch: master
Gerrit-Owner: Dduvall <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits