Tobias Gritschacher has submitted this change and it was merged. Change subject: Migrate simple RSpec browser tests to Cucumber. ......................................................................
Migrate simple RSpec browser tests to Cucumber. Bug: 57844 Change-Id: If001b79132d59a16d61b26269f8c2d80758a070c --- A tests/browser/features/delete_item.feature A tests/browser/features/edit_tab.feature A tests/browser/features/non_existing_item.feature A tests/browser/features/step_definitions/delete_item_steps.rb A tests/browser/features/step_definitions/edit_tab_steps.rb M tests/browser/features/step_definitions/entity_steps.rb A tests/browser/features/step_definitions/non_existing_item_steps.rb A tests/browser/features/support/pages/delete_item_page.rb A tests/browser/features/support/pages/login_page.rb A tests/browser/features/support/pages/noexisting_item_page.rb A tests/browser/features/support/pages/repo_login_page.rb 11 files changed, 166 insertions(+), 0 deletions(-) Approvals: Tobias Gritschacher: Verified; Looks good to me, approved diff --git a/tests/browser/features/delete_item.feature b/tests/browser/features/delete_item.feature new file mode 100644 index 0000000..ddef403 --- /dev/null +++ b/tests/browser/features/delete_item.feature @@ -0,0 +1,14 @@ +# Wikidata item tests +# +# License:: GNU GPL v2+ +# +# feature the delete of an item + +@wikidata.beta.wmflabs.org +Feature: Delete item + +Scenario: Delete item + Given I am logged in + And I am on an item page + When I click the item delete button + Then Page should be deleted diff --git a/tests/browser/features/edit_tab.feature b/tests/browser/features/edit_tab.feature new file mode 100644 index 0000000..b8fed6f --- /dev/null +++ b/tests/browser/features/edit_tab.feature @@ -0,0 +1,14 @@ +# Wikidata item tests +# +# License:: GNU GPL v2+ +# +# feature the functionality of the edit tab function + +@wikidata.beta.wmflabs.org +Feature: Edit tab + +Scenario: Edit tab + Given I am on an item page + Then the edit-tab button should not be visible + + diff --git a/tests/browser/features/non_existing_item.feature b/tests/browser/features/non_existing_item.feature new file mode 100644 index 0000000..ac5cdac --- /dev/null +++ b/tests/browser/features/non_existing_item.feature @@ -0,0 +1,12 @@ +# Wikidata item tests +# +# License:: GNU GPL v2+ +# +# feature the functionality of a non existing item page + +@wikidata.beta.wmflabs.org +Feature: Non existing item + +Scenario: Edit tab + Given I am on an non existing item page + Then check if this page behaves correctly diff --git a/tests/browser/features/step_definitions/delete_item_steps.rb b/tests/browser/features/step_definitions/delete_item_steps.rb new file mode 100644 index 0000000..7ff58e2 --- /dev/null +++ b/tests/browser/features/step_definitions/delete_item_steps.rb @@ -0,0 +1,18 @@ +# -*- encoding : utf-8 -*- +# Wikidata item tests +# +# License:: GNU GPL v2+ +# +# steps for the item deletion + +When(/^I click the item delete button$/) do + on(DeleteItemPage).delete_item(@item_under_test["url"]) +end + +Then(/^Page should be deleted$/) do + on(ItemPage) do |page| + page.navigate_to_entity @item_under_test["url"] + page.entityLabelSpan?.should be_false + page.entityDescriptionSpan?.should be_false + end +end diff --git a/tests/browser/features/step_definitions/edit_tab_steps.rb b/tests/browser/features/step_definitions/edit_tab_steps.rb new file mode 100644 index 0000000..0d84732 --- /dev/null +++ b/tests/browser/features/step_definitions/edit_tab_steps.rb @@ -0,0 +1,10 @@ +# -*- encoding : utf-8 -*- +# Wikidata item tests +# +# License:: GNU GPL v2+ +# +# steps to check the edit tab functionality + +Then(/^the edit\-tab button should not be visible$/) do + on(ItemPage).editTab?.should be_false +end diff --git a/tests/browser/features/step_definitions/entity_steps.rb b/tests/browser/features/step_definitions/entity_steps.rb index 2cdba7f..3d9fb91 100644 --- a/tests/browser/features/step_definitions/entity_steps.rb +++ b/tests/browser/features/step_definitions/entity_steps.rb @@ -6,6 +6,10 @@ # # basic steps for entities +Given /^I am logged in$/ do + visit(RepoLoginPage).login_with(ENV["WB_REPO_USERNAME"], ENV["WB_REPO_PASSWORD"]) +end + Given /^I am on an item page$/ do item_data = '{"labels":{"en":{"language":"en","value":"' + generate_random_string(8) + '"}},"descriptions":{"en":{"language":"en","value":"' + generate_random_string(20) + '"}}}' wb_api = WikibaseAPI::Gateway.new(URL.repo_api) diff --git a/tests/browser/features/step_definitions/non_existing_item_steps.rb b/tests/browser/features/step_definitions/non_existing_item_steps.rb new file mode 100644 index 0000000..7e6be1a --- /dev/null +++ b/tests/browser/features/step_definitions/non_existing_item_steps.rb @@ -0,0 +1,18 @@ +# -*- encoding : utf-8 -*- +# Wikidata item tests +# +# License:: GNU GPL v2+ +# +# steps for the non existing item functionality + +Given(/^I am on an non existing item page$/) do + visit_page(NonExistingItemPage) +end + +Then(/^check if this page behaves correctly$/) do + on_page(NonExistingItemPage) do |page| + page.firstHeading.should be_true + page.firstHeading_element.text.should == ITEM_NAMESPACE + ITEM_ID_PREFIX + "xy" + end +end + diff --git a/tests/browser/features/support/pages/delete_item_page.rb b/tests/browser/features/support/pages/delete_item_page.rb new file mode 100644 index 0000000..18ea9bc --- /dev/null +++ b/tests/browser/features/support/pages/delete_item_page.rb @@ -0,0 +1,18 @@ +# -*- encoding : utf-8 -*- +# Wikidata UI tests +# +# Author:: Tobias Gritschacher (tobias.gritschac...@wikimedia.de) +# License:: GNU GPL v2+ +# +# page object for delete item action + +class DeleteItemPage + include PageObject + + button(:delete, :id => 'wpConfirmB') + + def delete_item(url) + navigate_to(url + "&action=delete") + delete + end +end diff --git a/tests/browser/features/support/pages/login_page.rb b/tests/browser/features/support/pages/login_page.rb new file mode 100644 index 0000000..5979e70 --- /dev/null +++ b/tests/browser/features/support/pages/login_page.rb @@ -0,0 +1,28 @@ +# -*- encoding : utf-8 -*- +# Wikidata UI tests +# +# Author:: Tobias Gritschacher (tobias.gritschac...@wikimedia.de) +# License:: GNU GPL v2+ +# +# base page object for MW login page + +class LoginPage + include PageObject + + text_field(:username, :id => 'wpName1') + text_field(:password, :id => 'wpPassword1') + button(:login, :id => 'wpLoginAttempt') + link(:logout, :xpath => "//li[@id='pt-logout']/a") + + def login_with(username, password) + self.username = username + self.password = password + login + end + + def logout_user + if logout? + logout + end + end +end diff --git a/tests/browser/features/support/pages/noexisting_item_page.rb b/tests/browser/features/support/pages/noexisting_item_page.rb new file mode 100644 index 0000000..556d44d --- /dev/null +++ b/tests/browser/features/support/pages/noexisting_item_page.rb @@ -0,0 +1,16 @@ +# -*- encoding : utf-8 -*- +# Wikidata UI tests +# +# Author:: Tobias Gritschacher (tobias.gritschac...@wikimedia.de) +# License:: GNU GPL v2+ +# +# page object for a non existing item + +class NonExistingItemPage + include PageObject + page_url WIKIDATA_REPO_URL + ITEM_NAMESPACE + ITEM_ID_PREFIX + "xy" + + span(:firstHeading, :xpath => "//h1[@id='firstHeading']/span") + link(:specialLogLink, :css => "div#mw-content-text > div > p > span > a:nth-child(1)") + link(:specialCreateNewItemLink, :css => "div#mw-content-text > div > p > a:nth-child(2)") +end diff --git a/tests/browser/features/support/pages/repo_login_page.rb b/tests/browser/features/support/pages/repo_login_page.rb new file mode 100644 index 0000000..478f679 --- /dev/null +++ b/tests/browser/features/support/pages/repo_login_page.rb @@ -0,0 +1,14 @@ +# -*- encoding : utf-8 -*- +# Wikidata UI tests +# +# Author:: Tobias Gritschacher (tobias.gritschac...@wikimedia.de) +# License:: GNU GPL v2+ +# +# page object for repo login page + +class RepoLoginPage < LoginPage + include PageObject + + page_url "#{WIKIDATA_REPO_URL}Special:UserLogin" + +end -- To view, visit https://gerrit.wikimedia.org/r/107129 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: If001b79132d59a16d61b26269f8c2d80758a070c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Zfilipin <zfili...@wikimedia.org> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: Vldandrew <vldand...@gmail.com> Gerrit-Reviewer: Zfilipin <zfili...@wikimedia.org> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits