Dduvall has submitted this change and it was merged.

Change subject: Skeletal browser tests
......................................................................


Skeletal browser tests

These tests depend on the random selector being overridable
using the "random=" query parameter.

See the new README.md for installation and configuration.

Change-Id: I9b767b7838c12c3d728571f4334eeecbdb9c06f1
---
A Gemfile
A Gemfile.lock
A tests/browser/README.md
A tests/browser/features/banners.feature
A tests/browser/features/step_definitions/banner_steps.rb
A tests/browser/features/support/env.rb
A tests/browser/features/support/hooks.rb
A tests/browser/features/support/pages/article_page.rb
A tests/browser/features/throttling.feature-disabled
9 files changed, 189 insertions(+), 0 deletions(-)

Approvals:
  Dduvall: Looks good to me, approved
  Awight: Looks good to me, but someone else must approve



diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..5f91d5e
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,7 @@
+# ruby=ruby-1.9.3
+# ruby-gemset=CentralNotice
+
+source 'https://rubygems.org'
+
+gem 'mediawiki_selenium', '~> 0.4.1'
+gem 'rubocop', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..bde8183
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,98 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    ast (2.0.0)
+    astrolabe (1.3.0)
+      parser (>= 2.2.0.pre.3, < 3.0)
+    builder (3.2.2)
+    childprocess (0.5.5)
+      ffi (~> 1.0, >= 1.0.11)
+    cucumber (1.3.17)
+      builder (>= 2.1.2)
+      diff-lcs (>= 1.1.3)
+      gherkin (~> 2.12)
+      multi_json (>= 1.7.5, < 2.0)
+      multi_test (>= 0.1.1)
+    data_magic (0.20)
+      faker (>= 1.1.2)
+      yml_reader (>= 0.4)
+    diff-lcs (1.2.5)
+    domain_name (0.5.22)
+      unf (>= 0.0.5, < 1.0.0)
+    faker (1.4.3)
+      i18n (~> 0.5)
+    faraday (0.9.0)
+      multipart-post (>= 1.2, < 3)
+    faraday-cookie_jar (0.0.6)
+      faraday (>= 0.7.4)
+      http-cookie (~> 1.0.0)
+    ffi (1.9.6)
+    gherkin (2.12.2)
+      multi_json (~> 1.3)
+    headless (1.0.2)
+    http-cookie (1.0.2)
+      domain_name (~> 0.5)
+    i18n (0.6.11)
+    json (1.8.1)
+    mediawiki_api (0.3.0)
+      faraday (~> 0.9, >= 0.9.0)
+      faraday-cookie_jar (~> 0.0, >= 0.0.6)
+    mediawiki_selenium (0.4.1)
+      cucumber (~> 1.3, >= 1.3.10)
+      headless (~> 1.0, >= 1.0.1)
+      json (~> 1.8, >= 1.8.1)
+      mediawiki_api (~> 0.2, >= 0.2.1)
+      page-object (~> 1.0)
+      rest-client (~> 1.6, >= 1.6.7)
+      rspec-expectations (~> 2.14, >= 2.14.4)
+      syntax (~> 1.2, >= 1.2.0)
+    mime-types (2.4.3)
+    multi_json (1.10.1)
+    multi_test (0.1.1)
+    multipart-post (2.0.0)
+    netrc (0.8.0)
+    page-object (1.0.2)
+      page_navigation (>= 0.9)
+      selenium-webdriver (>= 2.42.0)
+      watir-webdriver (>= 0.6.9)
+    page_navigation (0.9)
+      data_magic (>= 0.14)
+    parser (2.2.0.pre.7)
+      ast (>= 1.1, < 3.0)
+      slop (~> 3.4, >= 3.4.5)
+    powerpack (0.0.9)
+    rainbow (2.0.0)
+    rest-client (1.7.2)
+      mime-types (>= 1.16, < 3.0)
+      netrc (~> 0.7)
+    rspec-expectations (2.99.2)
+      diff-lcs (>= 1.1.3, < 2.0)
+    rubocop (0.27.1)
+      astrolabe (~> 1.3)
+      parser (>= 2.2.0.pre.7, < 3.0)
+      powerpack (~> 0.0.6)
+      rainbow (>= 1.99.1, < 3.0)
+      ruby-progressbar (~> 1.4)
+    ruby-progressbar (1.7.0)
+    rubyzip (1.1.6)
+    selenium-webdriver (2.44.0)
+      childprocess (~> 0.5)
+      multi_json (~> 1.0)
+      rubyzip (~> 1.0)
+      websocket (~> 1.0)
+    slop (3.6.0)
+    syntax (1.2.0)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.6)
+    watir-webdriver (0.6.11)
+      selenium-webdriver (>= 2.18.0)
+    websocket (1.2.1)
+    yml_reader (0.4)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  mediawiki_selenium (~> 0.4.1)
+  rubocop
diff --git a/tests/browser/README.md b/tests/browser/README.md
new file mode 100644
index 0000000..41c76e7
--- /dev/null
+++ b/tests/browser/README.md
@@ -0,0 +1,20 @@
+Install
+=======
+    cd tests/browser
+    bundler install
+
+Fixtures
+========
+You must create the banners manually, for now.  Set up CentralNotice so
+that there are three banners, which will display respectively when the
+random variable is at .25, .5, and .75 .  The contents of each banner
+should include:
+    <div id="centralnotice_testbanner_name">{{{title}}}</div>
+In each banner, the "title" variable should be set to the strings,
+"one", "two", and "three".  This text is used to confirm the presence
+of each banner.
+
+Running tests
+=============
+    export MEDIAWIKI_URL=http://crm.dev/
+    bundler exec cucumber
diff --git a/tests/browser/features/banners.feature 
b/tests/browser/features/banners.feature
new file mode 100644
index 0000000..47affe3
--- /dev/null
+++ b/tests/browser/features/banners.feature
@@ -0,0 +1,17 @@
+@chrome @firefox
+Feature: Crude banner display
+
+  Scenario: Banner one is displayed for low roll
+    Given I roll 0.25 for banner choice
+    When I view an article
+    Then I see banner one
+
+  Scenario: Banner two is displayed for mid roll
+    Given I roll 0.50 for banner choice
+    When I view an article
+    Then I see banner two
+
+  Scenario: No banner is displayed for high roll
+    Given I roll 0.75 for banner choice
+    When I view an article
+    Then I see no banner
diff --git a/tests/browser/features/step_definitions/banner_steps.rb 
b/tests/browser/features/step_definitions/banner_steps.rb
new file mode 100644
index 0000000..86a736f
--- /dev/null
+++ b/tests/browser/features/step_definitions/banner_steps.rb
@@ -0,0 +1,18 @@
+Given(/^I roll ([0-9.]+) for banner choice$/) do |pseudorandom|
+  @override_random = pseudorandom
+end
+
+When(/^I view an article$/) do
+  params = { article_name: "Special:Random" }
+  params[:query] = "random=#{@override_random}" if @override_random
+
+  visit(ArticlePage, using_params: params)
+end
+
+Then(/^I see banner (\w+)$/) do |banner_name|
+  expect(on(ArticlePage).banner_name).to match banner_name
+end
+
+Then(/^I see no banner$/) do
+  expect(on(ArticlePage).banner_name_element).not_to be_visible
+end
diff --git a/tests/browser/features/support/env.rb 
b/tests/browser/features/support/env.rb
new file mode 100644
index 0000000..612412b
--- /dev/null
+++ b/tests/browser/features/support/env.rb
@@ -0,0 +1,4 @@
+require 'rubygems'
+require 'bundler/setup'
+
+Bundler.require
diff --git a/tests/browser/features/support/hooks.rb 
b/tests/browser/features/support/hooks.rb
new file mode 100644
index 0000000..6bc910b
--- /dev/null
+++ b/tests/browser/features/support/hooks.rb
@@ -0,0 +1,2 @@
+# Needed for cucumber --dry-run -f stepdefs
+require_relative "env"
diff --git a/tests/browser/features/support/pages/article_page.rb 
b/tests/browser/features/support/pages/article_page.rb
new file mode 100644
index 0000000..78931c2
--- /dev/null
+++ b/tests/browser/features/support/pages/article_page.rb
@@ -0,0 +1,7 @@
+class ArticlePage
+  include PageObject
+
+  page_url URL.url('<%= params[:article_name] %><%= "?#{params[:query]}" if 
params[:query] %>')
+
+  div(:banner_name, id: "centralnotice_testbanner_name")
+end
diff --git a/tests/browser/features/throttling.feature-disabled 
b/tests/browser/features/throttling.feature-disabled
new file mode 100644
index 0000000..619ff85
--- /dev/null
+++ b/tests/browser/features/throttling.feature-disabled
@@ -0,0 +1,16 @@
+@chrome @firefox
+Feature: Campaign throttling
+
+  Background:
+    Given the following campaigns exist:
+      | preferred | throttle | banners |
+      | normal    | 60       | one     |
+      | low       | 100      | two     |
+
+  Scenario: Throttled banner has higher priority
+    Given I roll 0.59 for banner choice
+    Then I see banner one
+
+  Scenario: Throttled banner yields some allocations
+    Given I roll 0.61 for banner choice
+    Then I see banner two

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I9b767b7838c12c3d728571f4334eeecbdb9c06f1
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/CentralNotice
Gerrit-Branch: master
Gerrit-Owner: Awight <[email protected]>
Gerrit-Reviewer: AndyRussG <[email protected]>
Gerrit-Reviewer: Awight <[email protected]>
Gerrit-Reviewer: Cmcmahon <[email protected]>
Gerrit-Reviewer: Dduvall <[email protected]>
Gerrit-Reviewer: Ejegg <[email protected]>
Gerrit-Reviewer: Mwalker <[email protected]>
Gerrit-Reviewer: Ssmith <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to