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
