mediawiki_selenium 1.6.2 → 1.6.3

Sign up to get free protection for your applications and to get access to all the features.
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.