jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/344116 )

Change subject: Basic browser test setup for Forms section header
......................................................................


Basic browser test setup for Forms section header

Bug: T161093
Change-Id: I8480d2d23a0d8abb5faef4825d6b24ca141a611b
---
A tests/browser/Gemfile
A tests/browser/Gemfile.lock
A tests/browser/environments.yml
A tests/browser/features/forms.feature
A tests/browser/features/non_existing_lexeme.feature
A tests/browser/features/step_definitions/forms_steps.rb
A tests/browser/features/step_definitions/lexeme_steps.rb
A tests/browser/features/step_definitions/non_existing_lexeme_steps.rb
A tests/browser/features/support/env.rb
A tests/browser/features/support/pages/lexeme_page.rb
A tests/browser/features/support/pages/non_existing_lexeme_page.rb
11 files changed, 252 insertions(+), 0 deletions(-)

Approvals:
  Jonas Kress (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/tests/browser/Gemfile b/tests/browser/Gemfile
new file mode 100644
index 0000000..2e901ff
--- /dev/null
+++ b/tests/browser/Gemfile
@@ -0,0 +1,9 @@
+source 'https://rubygems.org/'
+
+gem 'activesupport', '~> 4.2', '>= 4.2.6'
+gem 'mediawiki_api-wikidata', '~> 0.2.0', '>= 0.2.1'
+gem 'mediawiki_selenium', '~> 1.7', '>= 1.7.1'
+gem 'parallel_tests', '~> 2.5'
+gem 'rake', '~> 11.1', '>= 11.1.2'
+gem 'require_all', '~> 1.3', '>= 1.3.3'
+gem 'rubocop', '~> 0.40.0', require: false
\ No newline at end of file
diff --git a/tests/browser/Gemfile.lock b/tests/browser/Gemfile.lock
new file mode 100644
index 0000000..6605fe6
--- /dev/null
+++ b/tests/browser/Gemfile.lock
@@ -0,0 +1,125 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (4.2.6)
+      i18n (~> 0.7)
+      json (~> 1.7, >= 1.7.7)
+      minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
+      tzinfo (~> 1.1)
+    ast (2.2.0)
+    builder (3.2.2)
+    childprocess (0.5.9)
+      ffi (~> 1.0, >= 1.0.11)
+    cucumber (1.3.20)
+      builder (>= 2.1.2)
+      diff-lcs (>= 1.1.3)
+      gherkin (~> 2.12)
+      multi_json (>= 1.7.5, < 2.0)
+      multi_test (>= 0.1.2)
+    data_magic (0.22)
+      faker (>= 1.1.2)
+      yml_reader (>= 0.6)
+    diff-lcs (1.2.5)
+    domain_name (0.5.20160310)
+      unf (>= 0.0.5, < 1.0.0)
+    faker (1.6.3)
+      i18n (~> 0.5)
+    faraday (0.9.2)
+      multipart-post (>= 1.2, < 3)
+    faraday-cookie_jar (0.0.6)
+      faraday (>= 0.7.4)
+      http-cookie (~> 1.0.0)
+    ffi (1.9.10)
+    gherkin (2.12.2)
+      multi_json (~> 1.3)
+    headless (2.2.3)
+    http-cookie (1.0.2)
+      domain_name (~> 0.5)
+    i18n (0.7.0)
+    json (1.8.3)
+    mediawiki_api (0.6.0)
+      faraday (~> 0.9, >= 0.9.0)
+      faraday-cookie_jar (~> 0.0, >= 0.0.6)
+    mediawiki_api-wikidata (0.2.1)
+      mediawiki_api (~> 0.6.0)
+    mediawiki_selenium (1.7.1)
+      cucumber (~> 1.3, >= 1.3.20)
+      headless (~> 2.0, >= 2.1.0)
+      json (~> 1.8, >= 1.8.1)
+      mediawiki_api (~> 0.6, >= 0.6.0)
+      page-object (~> 1.0)
+      rest-client (~> 1.6, >= 1.6.7)
+      rspec-core (~> 2.14, >= 2.14.4)
+      rspec-expectations (~> 2.14, >= 2.14.4)
+      syntax (~> 1.2, >= 1.2.0)
+      thor (~> 0.19, >= 0.19.1)
+    mime-types (2.99.2)
+    minitest (5.8.4)
+    multi_json (1.12.1)
+    multi_test (0.1.2)
+    multipart-post (2.0.0)
+    netrc (0.11.0)
+    page-object (1.1.1)
+      page_navigation (>= 0.9)
+      selenium-webdriver (>= 2.44.0)
+      watir-webdriver (>= 0.6.11)
+    page_navigation (0.9)
+      data_magic (>= 0.14)
+    parallel (1.8.0)
+    parallel_tests (2.5.0)
+      parallel
+    parser (2.3.1.0)
+      ast (~> 2.2)
+    powerpack (0.1.1)
+    rainbow (2.1.0)
+    rake (11.1.2)
+    require_all (1.3.3)
+    rest-client (1.8.0)
+      http-cookie (>= 1.0.2, < 2.0)
+      mime-types (>= 1.16, < 3.0)
+      netrc (~> 0.7)
+    rspec-core (2.99.2)
+    rspec-expectations (2.99.2)
+      diff-lcs (>= 1.1.3, < 2.0)
+    rubocop (0.40.0)
+      parser (>= 2.3.1.0, < 3.0)
+      powerpack (~> 0.1)
+      rainbow (>= 1.99.1, < 3.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (~> 1.0, >= 1.0.1)
+    ruby-progressbar (1.8.0)
+    rubyzip (1.2.0)
+    selenium-webdriver (2.53.0)
+      childprocess (~> 0.5)
+      rubyzip (~> 1.0)
+      websocket (~> 1.0)
+    syntax (1.2.0)
+    thor (0.19.1)
+    thread_safe (0.3.5)
+    tzinfo (1.2.2)
+      thread_safe (~> 0.1)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.2)
+    unicode-display_width (1.0.5)
+    watir-webdriver (0.9.1)
+      selenium-webdriver (>= 2.46.2)
+    websocket (1.2.3)
+    yml_reader (0.7)
+
+PLATFORMS
+  ruby
+  x86-mingw32
+
+DEPENDENCIES
+  activesupport (~> 4.2, >= 4.2.6)
+  mediawiki_api-wikidata (~> 0.2.0, >= 0.2.1)
+  mediawiki_selenium (~> 1.7, >= 1.7.1)
+  parallel_tests (~> 2.5)
+  rake (~> 11.1, >= 11.1.2)
+  require_all (~> 1.3, >= 1.3.3)
+  rubocop (~> 0.40.0)
+
+BUNDLED WITH
+   1.14.6
diff --git a/tests/browser/environments.yml b/tests/browser/environments.yml
new file mode 100644
index 0000000..344605a
--- /dev/null
+++ b/tests/browser/environments.yml
@@ -0,0 +1,28 @@
+# Customize this configuration as necessary to provide defaults for various
+# test environments.
+#
+# The set of defaults to use is determined by the MEDIAWIKI_ENVIRONMENT
+# environment variable.
+#
+#   export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host
+#   bundle exec cucumber
+#
+# Additional variables set by the environment will override the corresponding
+# defaults defined here.
+#
+#   export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host
+#   export MEDIAWIKI_USER=Selenium_user2
+#   bundle exec cucumber
+#
+
+# Use this with "export MEDIAWIKI_ENVIRONMENT=custom" before running "bundle 
exec cucumber".
+default:
+  # language_code: en
+  browser: chrome
+  mediawiki_url: http://localhost/wiki/
+  # A sensible default for the "mediawiki_url_api" is derived from the 
"mediawiki_url".
+  # mediawiki_url_api: http://localhost/w/api.php
+  mediawiki_user: …
+  mediawiki_password: …
+  user_factory: true
+  # lexeme_namespace: 'Lexeme:'
diff --git a/tests/browser/features/forms.feature 
b/tests/browser/features/forms.feature
new file mode 100644
index 0000000..2aeada7
--- /dev/null
+++ b/tests/browser/features/forms.feature
@@ -0,0 +1,10 @@
+@chrome @firefox @internet_explorer_10 @internet_explorer_11 @local_config 
@test.wikidata.org @wikidata.beta.wmflabs.org
+Feature: Forms of a Lexeme
+
+  Background:
+    Given I am on a Lexeme page
+      And The copyright warning has been dismissed
+      And Anonymous edit warnings are disabled
+
+  Scenario: Forms header
+    Then Forms header should be there
diff --git a/tests/browser/features/non_existing_lexeme.feature 
b/tests/browser/features/non_existing_lexeme.feature
new file mode 100644
index 0000000..c77cd2a
--- /dev/null
+++ b/tests/browser/features/non_existing_lexeme.feature
@@ -0,0 +1,6 @@
+@chrome @firefox @internet_explorer_10 @internet_explorer_11 @local_config 
@test.wikidata.org @wikidata.beta.wmflabs.org
+Feature: Non existing Lexeme
+
+Scenario: Non-existing Lexeme
+  Given I am on a page of a non existing Lexeme
+  Then check if the page says the entity does not exist
diff --git a/tests/browser/features/step_definitions/forms_steps.rb 
b/tests/browser/features/step_definitions/forms_steps.rb
new file mode 100644
index 0000000..c719c02
--- /dev/null
+++ b/tests/browser/features/step_definitions/forms_steps.rb
@@ -0,0 +1,3 @@
+Then(/^Forms header should be there$/) do
+  expect(on(LexemePage).forms_header?).to be true
+end
diff --git a/tests/browser/features/step_definitions/lexeme_steps.rb 
b/tests/browser/features/step_definitions/lexeme_steps.rb
new file mode 100644
index 0000000..4b0a22d
--- /dev/null
+++ b/tests/browser/features/step_definitions/lexeme_steps.rb
@@ -0,0 +1,21 @@
+Given(/^Anonymous edit warnings are disabled$/) do
+  on(LexemePage).set_noanonymouseditwarning_cookie
+end
+
+Given(/^The copyright warning has been dismissed$/) do
+  on(LexemePage).set_copyright_ack_cookie
+end
+
+Given(/^I am on a Lexeme page$/) do
+  step 'I have a Lexeme to test'
+  step 'I am on the page of the Lexeme to test'
+end
+
+Given(/^I have a Lexeme to test$/) do
+  lexeme_data = '{"lexicalCategory":"Q1","language":"Q1"}'
+  @lexeme_under_test = visit(LexemePage).create_lexeme(lexeme_data)
+end
+
+Given(/^I am on the page of the Lexeme to test$/) do
+  on(LexemePage).navigate_to_entity @lexeme_under_test['url']
+end
diff --git 
a/tests/browser/features/step_definitions/non_existing_lexeme_steps.rb 
b/tests/browser/features/step_definitions/non_existing_lexeme_steps.rb
new file mode 100644
index 0000000..a4b9d26
--- /dev/null
+++ b/tests/browser/features/step_definitions/non_existing_lexeme_steps.rb
@@ -0,0 +1,11 @@
+Given(/^I am on a page of a non existing Lexeme$/) do
+  visit_page(NonExistingLexemePage)
+end
+
+Then(/^check if the page says the entity does not exist$/) do
+  on_page(NonExistingLexemePage) do |page|
+    expect(page.first_heading?).to be true
+    expect(page.first_heading_element.text).to be == ENV['LEXEME_NAMESPACE'] + 
'L-invalid'
+    expect(page.no_article_text?).to be true
+  end
+end
diff --git a/tests/browser/features/support/env.rb 
b/tests/browser/features/support/env.rb
new file mode 100644
index 0000000..e8c2a46
--- /dev/null
+++ b/tests/browser/features/support/env.rb
@@ -0,0 +1,17 @@
+require 'mediawiki_selenium/cucumber'
+require 'mediawiki_selenium'
+require 'mediawiki_api/wikidata'
+require 'require_all'
+
+lenv = MediawikiSelenium::Environment.load_default
+ENV['WIKIDATA_REPO_URL'] = lenv.lookup(:mediawiki_url)
+ENV['WIKIDATA_REPO_API'] = lenv.lookup(:mediawiki_url_api, default: lambda do
+  lenv.lookup(:mediawiki_url)
+      .gsub(%r{wiki/$}, 'w/api.php')
+      .gsub(%r{index.php/?$}, 'api.php')
+end)
+ENV['LEXEME_NAMESPACE'] = lenv.lookup(:item_namespace, default: -> { 'Lexeme:' 
})
+ENV['LANGUAGE_CODE'] = lenv.lookup(:language_code, default: -> { 'en' })
+
+require_all File.dirname(__FILE__) + 
'/../../../../../Wikibase/tests/browser/features/support/modules'
+require_all File.dirname(__FILE__) + '/pages'
diff --git a/tests/browser/features/support/pages/lexeme_page.rb 
b/tests/browser/features/support/pages/lexeme_page.rb
new file mode 100644
index 0000000..38f88ab
--- /dev/null
+++ b/tests/browser/features/support/pages/lexeme_page.rb
@@ -0,0 +1,15 @@
+class LexemePage
+  include PageObject
+  include EntityPage
+
+  span(:forms_header, id: 'forms')
+
+  def create_lexeme(lexeme_data)
+    wb_api = MediawikiApi::Wikidata::WikidataClient.new URL.repo_api
+    resp = wb_api.create_entity(lexeme_data, "lexeme")
+
+    id = resp['entity']['id']
+    url = URL.repo_url(ENV['LEXEME_NAMESPACE'] + id)
+    { 'url' => url }
+  end
+end
diff --git a/tests/browser/features/support/pages/non_existing_lexeme_page.rb 
b/tests/browser/features/support/pages/non_existing_lexeme_page.rb
new file mode 100644
index 0000000..6e1a093
--- /dev/null
+++ b/tests/browser/features/support/pages/non_existing_lexeme_page.rb
@@ -0,0 +1,7 @@
+class NonExistingLexemePage
+  include PageObject
+  page_url ENV['WIKIDATA_REPO_URL'] + ENV['LEXEME_NAMESPACE'] + 'L-invalid'
+
+  h1(:first_heading, class: 'firstHeading')
+  div(:no_article_text, class: 'noarticletext')
+end

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8480d2d23a0d8abb5faef4825d6b24ca141a611b
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to