Dduvall has submitted this change and it was merged.

Change subject: Phantomjs environment bindings and specs
......................................................................


Phantomjs environment bindings and specs

Change-Id: Ib00b7670368a23126d2d517dcc5139ed1f53b480
---
M Gemfile
M lib/mediawiki_selenium/browser_factory/base.rb
M lib/mediawiki_selenium/browser_factory/chrome.rb
M lib/mediawiki_selenium/browser_factory/firefox.rb
M lib/mediawiki_selenium/browser_factory/phantomjs.rb
A spec/browser_factory/phantomjs_spec.rb
6 files changed, 52 insertions(+), 17 deletions(-)

Approvals:
  Dduvall: Looks good to me, approved



diff --git a/Gemfile b/Gemfile
index 6fa2b49..8e0572d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,4 +1,4 @@
-#ruby=ruby-2.1.1
+#ruby=ruby-2.1.3
 #ruby-gemset=mediawiki_selenium
 
 source "https://rubygems.org";
diff --git a/lib/mediawiki_selenium/browser_factory/base.rb 
b/lib/mediawiki_selenium/browser_factory/base.rb
index 6552984..0f739f6 100644
--- a/lib/mediawiki_selenium/browser_factory/base.rb
+++ b/lib/mediawiki_selenium/browser_factory/base.rb
@@ -58,18 +58,18 @@
           end
         end
 
-        finalize_options(options)
+        finalize_options!(options)
 
         options
       end
 
       protected
 
-      def capabilities
+      def desired_capabilities
         Selenium::WebDriver::Remote::Capabilities.send(type)
       end
 
-      def finalize_options(options)
+      def finalize_options!(options)
       end
 
       def http_client
@@ -79,7 +79,7 @@
       private
 
       def default_browser_options
-        { http_client: http_client, desired_capabilities: capabilities }
+        { http_client: http_client, desired_capabilities: desired_capabilities 
}
       end
     end
   end
diff --git a/lib/mediawiki_selenium/browser_factory/chrome.rb 
b/lib/mediawiki_selenium/browser_factory/chrome.rb
index c20a022..ac7653a 100644
--- a/lib/mediawiki_selenium/browser_factory/chrome.rb
+++ b/lib/mediawiki_selenium/browser_factory/chrome.rb
@@ -11,7 +11,7 @@
 
       protected
 
-      def capabilities
+      def desired_capabilities
         super.tap do |capabilities|
           capabilities["chromeOptions"] = {
             "args" => [],
@@ -20,10 +20,11 @@
         end
       end
 
-      def finalize_options(options)
+      def finalize_options!(options)
         options[:desired_capabilities]["chromeOptions"].tap do |options|
           options["profile"] = options["profile"].as_json["zip"]
         end
+        super
       end
     end
   end
diff --git a/lib/mediawiki_selenium/browser_factory/firefox.rb 
b/lib/mediawiki_selenium/browser_factory/firefox.rb
index 7cd61c3..b37f6f3 100644
--- a/lib/mediawiki_selenium/browser_factory/firefox.rb
+++ b/lib/mediawiki_selenium/browser_factory/firefox.rb
@@ -17,7 +17,7 @@
 
       protected
 
-      def capabilities
+      def desired_capabilities
         super.tap do |capabilities|
           capabilities[:firefox_profile] = 
Selenium::WebDriver::Firefox::Profile.new
         end
diff --git a/lib/mediawiki_selenium/browser_factory/phantomjs.rb 
b/lib/mediawiki_selenium/browser_factory/phantomjs.rb
index 5a8309b..7ff1673 100644
--- a/lib/mediawiki_selenium/browser_factory/phantomjs.rb
+++ b/lib/mediawiki_selenium/browser_factory/phantomjs.rb
@@ -1,16 +1,12 @@
 module MediawikiSelenium
   module BrowserFactory
     class Phantomjs < Base
-      def capabilities
-        super.tap do |capabilities|
-          bind(:browser_language) do |language|
-            capabilities["phantomjs.page.customHeaders.Accept-Language"] = 
language
-          end
+      bind(:browser_language) do |language, opts|
+        
opts[:desired_capabilities]["phantomjs.page.customHeaders.Accept-Language"] = 
language
+      end
 
-          bind(:browser_user_agent) do |user_agent|
-            capabilities["phantomjs.page.settings.userAgent"] = user_agent
-          end
-        end
+      bind(:browser_user_agent) do |user_agent, opts|
+        opts[:desired_capabilities]["phantomjs.page.settings.userAgent"] = 
user_agent
       end
     end
   end
diff --git a/spec/browser_factory/phantomjs_spec.rb 
b/spec/browser_factory/phantomjs_spec.rb
new file mode 100644
index 0000000..f524a54
--- /dev/null
+++ b/spec/browser_factory/phantomjs_spec.rb
@@ -0,0 +1,38 @@
+require "spec_helper"
+
+module MediawikiSelenium::BrowserFactory
+  describe Phantomjs do
+    let(:factory_class) { Phantomjs }
+    let(:factory) { factory_class.new(:phantomjs) }
+
+    describe ".default_bindings" do
+      subject { factory_class.default_bindings }
+
+      it { is_expected.to include(:browser_language) }
+      it { is_expected.not_to include(:browser_timeout) }
+      it { is_expected.to include(:browser_user_agent) }
+    end
+
+    describe "#browser_options" do
+      subject { factory.browser_options(config) }
+
+      context "given a custom browser_language" do
+        let(:config) { { browser_language: "eo" } }
+
+        it "sets phantomjs.page.customHeaders.Accept-Language to the given 
language" do
+          capabilities = subject[:desired_capabilities]
+          
expect(capabilities["phantomjs.page.customHeaders.Accept-Language"]).to eq("eo")
+        end
+      end
+
+      context "given a custom browser_user_agent" do
+        let(:config) { { browser_user_agent: "FooBot" } }
+
+        it "sets phantomjs.page.settings.userAgent to the given string" do
+          capabilities = subject[:desired_capabilities]
+          expect(capabilities["phantomjs.page.settings.userAgent"]).to 
eq("FooBot")
+        end
+      end
+    end
+  end
+end

-- 
To view, visit https://gerrit.wikimedia.org/r/169853
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib00b7670368a23126d2d517dcc5139ed1f53b480
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/selenium
Gerrit-Branch: env-abstraction-layer
Gerrit-Owner: Dduvall <[email protected]>
Gerrit-Reviewer: Dduvall <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to