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

Reply via email to