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

Reply via email to