mediawiki_selenium 1.6.2 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c55bb41a3040b8fe13f7959cb9471870fb964c47
4
- data.tar.gz: d8dee93ee8a956288de1ae1e412e3512a2427689
3
+ metadata.gz: ffa3ecc9539e538abf8730f38ba611ded2b25006
4
+ data.tar.gz: 85ab4f6ebb1f28a385df0c95a492ee24d9d1ed78
5
5
  SHA512:
6
- metadata.gz: 86045429284cab2eea77d9c5a2a8f76e7922d982c5ebb728e644ceea15b7126085a26872dd4790fe147f5bfd25f01e77a6baad6d4cbe515de1303dcc5b28fe5f
7
- data.tar.gz: fc39ea530db1f558c0f61261b012e555bc6bc308b3ec17ce53330ae3a872f59f1fbbe28dda10c351d66b6dac982f74190ac5326cdee9bd1b50797ab6ff44968d
6
+ metadata.gz: 70bc364392d8c6d5e9264d610858f4565abe5eeb0e55ba440fb76b280a65e2be8e33e78e1f7122225b0fef11c913a3425279ce91f7627ed85a2fc6ac0ff882ba
7
+ data.tar.gz: 50b31211b5b9e1eae9611ddf1c18e5861b2381e78a085f140a1d1d43cee831f00853ffb838c24a151519fba1d98e36340937fbf42d930f50259eaef9bc93bf26
data/README.md CHANGED
@@ -37,7 +37,7 @@ Create a `Gemfile` in the root of your MediaWiki-related project that
37
37
  specifies the version of `mediawiki_selenium` you wish to use (typically the
38
38
  latest version).
39
39
 
40
- gem 'mediawiki_selenium', '~> 1.5.0'
40
+ gem 'mediawiki_selenium', '~> 1.6.3'
41
41
 
42
42
  Install the gem and its dependencies by running `bundle install`. (If
43
43
  [Bundler](http://bundler.io/) is not yet installed, install it with
data/RELEASES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Release notes
2
2
 
3
+ ### 1.6.3 2015-12-15
4
+
5
+ * Added support for all SauceLabs provided browsers
6
+
3
7
  ### 1.6.2 2015-10-23
4
8
  * Fixed undefined `last_session_ids=` method bug in `RemoteBrowserFactory`
5
9
  which entirely broke SauceLabs use in previous 1.6.x versions
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ # pre-flight
2
+ require 'bundler/setup'
3
+ require 'bundler/gem_tasks'
4
+
5
+ require 'rspec/core/rake_task'
6
+ require 'rubocop/rake_task'
7
+ require 'yard'
8
+
9
+ RSpec::Core::RakeTask.new(:spec)
10
+ RuboCop::RakeTask.new(:rubocop)
11
+ YARD::Rake::YardocTask.new(:yard)
12
+
13
+ task default: [:test]
14
+
15
+ desc 'Run all build/tests commands (CI entry point)'
16
+ task test: [:build, :rubocop, :spec, :yard]
17
+
18
+ desc 'Generate all documentations'
19
+ task doc: [:yard]
data/UPGRADE.md CHANGED
@@ -10,7 +10,7 @@ in the root directory of your project.
10
10
  First, update the `Gemfile` in your project's root directory to specify the
11
11
  new version.
12
12
 
13
- gem 'mediawiki_selenium', '~> 1.6.2'
13
+ gem 'mediawiki_selenium', '~> 1.6.3'
14
14
 
15
15
  ### Update `require` paths in `env.rb`
16
16
 
@@ -37,7 +37,7 @@ if they don't apply to your test cases. The only must have is the first
37
37
  First, update the `Gemfile` in your project's root directory to specify the
38
38
  new version.
39
39
 
40
- gem 'mediawiki_selenium', '~> 1.6.2'
40
+ gem 'mediawiki_selenium', '~> 1.6.3'
41
41
 
42
42
  ### Upgrade gems and dependencies
43
43
 
@@ -0,0 +1,21 @@
1
+ Feature: Support for entire suite of browsers provided by SauceLabs
2
+ Background:
3
+ Given I have configured my environment from `ENV`
4
+ And I have set "SAUCE_ONDEMAND_USERNAME" in my shell
5
+ And I have set "SAUCE_ONDEMAND_ACCESS_KEY" in my shell
6
+
7
+ Scenario Outline: All SauceLabs browsers are supported
8
+ Given I have configured my environment to use <browser> on <platform>
9
+ When I start interacting with the browser
10
+ Then the browser is open
11
+
12
+ Examples:
13
+ | browser | platform |
14
+ | firefox | linux |
15
+ | firefox | windows |
16
+ | chrome | linux |
17
+ | chrome | windows |
18
+ | internet_explorer | windows |
19
+ | safari | os x 10.11 |
20
+ | android | linux |
21
+ | iphone | os x 10.11 |
@@ -1,5 +1,10 @@
1
1
  require 'net/https'
2
2
 
3
+ Given(/^I have configured my environment to use (.*?) on (.*?)$/) do |browser, platform|
4
+ @configs = [ENV, { browser: browser, platform: platform, browser_timeout: 120 }]
5
+ @env = MediawikiSelenium::Environment.new(*@configs)
6
+ end
7
+
3
8
  Then(/^the SauceLabs job should be marked as failed$/) do
4
9
  job_id = @env.browser.driver.session_id
5
10
 
@@ -5,7 +5,9 @@ module MediawikiSelenium
5
5
  autoload :Chrome, 'mediawiki_selenium/browser_factory/chrome'
6
6
  autoload :Phantomjs, 'mediawiki_selenium/browser_factory/phantomjs'
7
7
 
8
- # Resolves and instantiates a new factory for the given browser name.
8
+ # Resolves and instantiates a new factory for the given browser name. If a
9
+ # specific implementation is not defined for the given browser, a `Base`
10
+ # factory will be returned.
9
11
  #
10
12
  # @example Create a new firefox factory
11
13
  # factory = BrowserFactory.new(:firefox)
@@ -17,7 +19,14 @@ module MediawikiSelenium
17
19
  # @return [BrowserFactory::Base]
18
20
  #
19
21
  def self.new(browser_name)
20
- factory_class = const_get(browser_name.to_s.split('_').map(&:capitalize).join(''))
22
+ factory_class_name = browser_name.to_s.split('_').map(&:capitalize).join('')
23
+
24
+ if const_defined?(factory_class_name)
25
+ factory_class = const_get(factory_class_name)
26
+ else
27
+ factory_class = Base
28
+ end
29
+
21
30
  factory_class.new(browser_name)
22
31
  end
23
32
  end
@@ -227,7 +227,7 @@ module MediawikiSelenium
227
227
  end
228
228
 
229
229
  def new_browser(options)
230
- Watir::Browser.new(options[:desired_capabilities].browser_name, options)
230
+ Watir::Browser.new(browser_name, options)
231
231
  end
232
232
  end
233
233
  end
@@ -32,7 +32,11 @@ module MediawikiSelenium
32
32
  protected
33
33
 
34
34
  def default_browser_options
35
- super.merge(profile: Selenium::WebDriver::Firefox::Profile.new)
35
+ profile = Selenium::WebDriver::Firefox::Profile.new
36
+ # Never show any firstrun pages.
37
+ # @see http://kb.mozillazine.org/Browser.startup.homepage_override.mstone
38
+ profile['browser.startup.homepage_override.mstone'] = 'ignore'
39
+ super.merge(profile: profile)
36
40
  end
37
41
  end
38
42
  end
@@ -9,6 +9,8 @@ module MediawikiSelenium
9
9
  # - sauce_ondemand_access_key
10
10
  # - platform
11
11
  # - version
12
+ # - device_name
13
+ # - device_orientation
12
14
  #
13
15
  module RemoteBrowserFactory
14
16
  REQUIRED_CONFIG = [:sauce_ondemand_username, :sauce_ondemand_access_key]
@@ -37,6 +39,14 @@ module MediawikiSelenium
37
39
  base.configure(:version) do |version, options|
38
40
  options[:desired_capabilities].version = version
39
41
  end
42
+
43
+ base.configure(:device_name) do |device_name, options|
44
+ options[:desired_capabilities]['deviceName'] = device_name
45
+ end
46
+
47
+ base.configure(:device_orientation) do |device_orientation, options|
48
+ options[:desired_capabilities]['deviceOrientation'] = device_orientation
49
+ end
40
50
  end
41
51
  end
42
52
 
@@ -1,3 +1,3 @@
1
1
  module MediawikiSelenium
2
- VERSION = '1.6.2'
2
+ VERSION = '1.6.3'
3
3
  end
@@ -97,8 +97,6 @@ module MediawikiSelenium::BrowserFactory
97
97
  before do
98
98
  expect(Selenium::WebDriver::Remote::Capabilities).to receive(browser_name).
99
99
  at_least(:once).and_return(capabilities)
100
- expect(capabilities).to receive(:browser_name).
101
- at_least(:once).and_return(browser_name)
102
100
  end
103
101
 
104
102
  it 'creates a new Watir::Browser' do
@@ -16,10 +16,18 @@ module MediawikiSelenium::BrowserFactory
16
16
  describe '#browser_options' do
17
17
  subject { factory.browser_options(config) }
18
18
 
19
+ let(:config) { {} }
19
20
  let(:profile) { double(Selenium::WebDriver::Firefox::Profile) }
20
21
 
21
22
  before do
22
- expect(Selenium::WebDriver::Firefox::Profile).to receive(:new).and_return(profile)
23
+ allow(Selenium::WebDriver::Firefox::Profile).to receive(:new).and_return(profile)
24
+ allow(profile).to receive(:[]=)
25
+ end
26
+
27
+ it 'attempts to disable any firtrun page' do
28
+ expect(profile).to receive(:[]=).with('browser.startup.homepage_override.mstone', 'ignore')
29
+
30
+ subject
23
31
  end
24
32
 
25
33
  context 'given a browser proxy' do
@@ -42,13 +50,11 @@ module MediawikiSelenium::BrowserFactory
42
50
 
43
51
  it 'sets dom.max_script_run_time to the given number' do
44
52
  expect(profile).to receive(:[]=).with('dom.max_script_run_time', 30)
45
- allow(profile).to receive(:[]=)
46
53
  subject
47
54
  end
48
55
 
49
56
  it 'sets dom.max_chrome_script_run_time to the given number' do
50
57
  expect(profile).to receive(:[]=).with('dom.max_chrome_script_run_time', 30)
51
- allow(profile).to receive(:[]=)
52
58
  subject
53
59
  end
54
60
  end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ module MediawikiSelenium
4
+ describe BrowserFactory do
5
+ describe '.new' do
6
+ context 'given a browser that has a specific implementation' do
7
+ subject { BrowserFactory.new(:firefox) }
8
+
9
+ it 'instantiates the concrete factory class' do
10
+ expect(subject).to be_a(BrowserFactory::Firefox)
11
+ end
12
+ end
13
+
14
+ context 'given a browser that has no specific implementation' do
15
+ subject { BrowserFactory.new(:lynx) }
16
+
17
+ it { is_expected.to be_a(BrowserFactory::Base) }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -47,6 +47,24 @@ module MediawikiSelenium
47
47
  subject
48
48
  end
49
49
  end
50
+
51
+ context 'given a device name' do
52
+ let(:config) { { device_name: 'tabliphone' } }
53
+
54
+ it 'configures the deviceName' do
55
+ expect(capabilities).to receive(:[]=).with('deviceName', 'tabliphone')
56
+ subject
57
+ end
58
+ end
59
+
60
+ context 'given a device orientation' do
61
+ let(:config) { { device_orientation: 'portrait' } }
62
+
63
+ it 'configures the deviceOrientation' do
64
+ expect(capabilities).to receive(:[]=).with('deviceOrientation', 'portrait')
65
+ subject
66
+ end
67
+ end
50
68
  end
51
69
 
52
70
  describe '#teardown' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediawiki_selenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris McMahon
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2015-10-26 00:00:00.000000000 Z
16
+ date: 2015-12-15 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: cucumber
@@ -329,6 +329,7 @@ files:
329
329
  - LICENSE
330
330
  - README.md
331
331
  - RELEASES.md
332
+ - Rakefile
332
333
  - UPGRADE.md
333
334
  - bin/mediawiki-selenium-init
334
335
  - features/api.feature
@@ -337,6 +338,7 @@ files:
337
338
  - features/recording.feature
338
339
  - features/rspec.feature
339
340
  - features/saucelabs.feature
341
+ - features/saucelabs_browsers.feature
340
342
  - features/screenshots.feature
341
343
  - features/step_definitions/api_helper_steps.rb
342
344
  - features/step_definitions/browser_steps.rb
@@ -395,6 +397,7 @@ files:
395
397
  - spec/browser_factory/chrome_spec.rb
396
398
  - spec/browser_factory/firefox_spec.rb
397
399
  - spec/browser_factory/phantomjs_spec.rb
400
+ - spec/browser_factory_spec.rb
398
401
  - spec/environment_spec.rb
399
402
  - spec/headless_helper_spec.rb
400
403
  - spec/page_factory_spec.rb
@@ -425,7 +428,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
425
428
  version: '0'
426
429
  requirements: []
427
430
  rubyforge_project:
428
- rubygems_version: 2.4.3
431
+ rubygems_version: 2.4.5.1
429
432
  signing_key:
430
433
  specification_version: 4
431
434
  summary: An easy way to run MediaWiki Selenium tests.