jenkins-bot has submitted this change and it was merged.

Change subject: Browser tests: update for new Flow editor
......................................................................


Browser tests: update for new Flow editor

Change-Id: Ic12a4c68fbd8d15e268e26a9bb6ef40650bd46b0
---
M tests/browser/features/sorting_topics.feature
M tests/browser/features/step_definitions/description_steps.rb
M tests/browser/features/step_definitions/sorting_topics_steps.rb
M tests/browser/features/step_definitions/special_enable_flow_steps.rb
A tests/browser/features/support/components/board_description.rb
A tests/browser/features/support/components/flow_editor.rb
M tests/browser/features/support/pages/abstract_flow_page.rb
M tests/browser/features/support/pages/special_enable_flow_page.rb
8 files changed, 110 insertions(+), 91 deletions(-)

Approvals:
  Catrope: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/tests/browser/features/sorting_topics.feature 
b/tests/browser/features/sorting_topics.feature
index d0da113..929faaa 100644
--- a/tests/browser/features/sorting_topics.feature
+++ b/tests/browser/features/sorting_topics.feature
@@ -6,16 +6,8 @@
   Background:
     Given I am on Flow page
 
-  Scenario: Switch topic sorting to Recently Active Topics
-    When I click Newest topics link
-    And I click Recently active topics choice
-    Then the Flow page should show Recently active topics link
-    And the Flow page should not show Newest topics link
-
-  Scenario: Switch topic sorting to Recently Active Topics and then back to 
Newest topics
-    When I click Newest topics link
-    And I click Recently active topics choice
-    And I click Recently active topics link
-    And I click Newest topics choice
-    Then the Flow page should show Newest topics link
-    And the Flow page should not show Recently active topics link
+  Scenario: Sorting
+    When I sort by Newest topics
+    Then it is sorted by Newest topics
+    When I sort by Recently active topics
+    Then it is sorted by Recently active topics
diff --git a/tests/browser/features/step_definitions/description_steps.rb 
b/tests/browser/features/step_definitions/description_steps.rb
index 75a0edd..c4ee72d 100644
--- a/tests/browser/features/step_definitions/description_steps.rb
+++ b/tests/browser/features/step_definitions/description_steps.rb
@@ -1,18 +1,17 @@
 Then(/^the description should be "(.*?)"$/) do |content|
   on(FlowPage) do |page|
-    page.description_content_element.when_present
-    page.description_content.should eq(content)
+    page.description.content_element.when_present
+    page.description.content.should eq(content)
   end
 end
 
 When(/^I set the description to "(.*?)"$/) do |description_text|
   on(FlowPage) do |page|
-    page.edit_description_link_element.click
-    page.edit_description_form_element.when_visible
-    page.edit_description_textbox_element.when_present.clear
-    page.edit_description_textbox_element.when_present.send_keys 
description_text
-    page.edit_description_save_element.when_present.click
-    page.description_content_element.when_present
+    page.description.edit
+    page.description.editor_element.when_present.clear
+    page.description.editor_element.when_present.send_keys description_text
+    page.description.save
+    page.description.content_element.when_present
   end
 end
 
diff --git a/tests/browser/features/step_definitions/sorting_topics_steps.rb 
b/tests/browser/features/step_definitions/sorting_topics_steps.rb
index eb8b18b..3949d04 100644
--- a/tests/browser/features/step_definitions/sorting_topics_steps.rb
+++ b/tests/browser/features/step_definitions/sorting_topics_steps.rb
@@ -1,34 +1,29 @@
-When(/^I click Newest topics choice$/) do
-  on(FlowPage).newest_topics_choice_element.when_present.click
-end
-
-When(/^I click Newest topics link$/) do
-  on(FlowPage).newest_topics_link_element.when_present.click
-end
-
-When(/^I click Recently active topics choice$/) do
-  on(FlowPage).recently_active_topics_choice_element.when_present.click
-end
-
-When(/^I click Recently active topics link$/) do
+When(/^I sort by Newest topics$/) do
   on(FlowPage) do |page|
-    page.recently_active_topics_choice_element.when_not_visible
+    page.sorting_element.when_present
     page.recently_active_topics_link_element.when_present.click
+    page.newest_topics_choice_element.when_present.click
+    page.sorting_element.when_not_present
   end
 end
 
-Then(/^the Flow page should not show Recently active topics link$/) do
-  
expect(on(FlowPage).recently_active_topics_link_element.when_not_visible).not_to
 be_visible
+Then(/^it is sorted by Newest topics$/) do
+  on(FlowPage) do |page|
+    page.newest_topics_link_element.when_present
+  end
 end
 
-Then(/^the Flow page should show Recently active topics link$/) do
-  expect(on(FlowPage).recently_active_topics_link_element.when_present).to 
be_visible
+When(/^I sort by Recently active topics$/) do
+  on(FlowPage) do |page|
+    page.sorting_element.when_present
+    page.newest_topics_link_element.when_present.click
+    page.recently_active_topics_choice_element.when_present.click
+    page.sorting_element.when_not_present
+  end
 end
 
-Then(/^the Flow page should not show Newest topics link$/) do
-  expect(on(FlowPage).newest_topics_link_element.when_not_visible).not_to 
be_visible
-end
-
-Then(/^the Flow page should show Newest topics link$/) do
-  expect(on(FlowPage).newest_topics_link_element.when_present).to be_visible
+Then(/^it is sorted by Recently active topics$/) do
+  on(FlowPage) do |page|
+    page.recently_active_topics_link_element.when_present
+  end
 end
diff --git 
a/tests/browser/features/step_definitions/special_enable_flow_steps.rb 
b/tests/browser/features/step_definitions/special_enable_flow_steps.rb
index 1f49c0c..fedffcb 100644
--- a/tests/browser/features/step_definitions/special_enable_flow_steps.rb
+++ b/tests/browser/features/step_definitions/special_enable_flow_steps.rb
@@ -18,8 +18,9 @@
 
 When(/^I enable a new Flow board on article (.*?)$/) do |article|
   on(EnableFlowPage) do |page|
-    page.page_name.when_present.send_keys(article)
-    page.submit_button.when_present.click
+    page.page_name_element.when_present.send_keys article
+    page.page_header_element.when_present.send_keys 'header'
+    page.submit
   end
 end
 
@@ -41,8 +42,8 @@
 
 Then(/^I click the archive link$/) do
   on(AbstractFlowPage) do |page|
-    page.sidebar_toggle_element.when_present.click unless 
page.description_content_element.visible?
-    page.description_archive_link.when_present.click
+    page.description.toggle_element.when_present.click unless 
page.description.content_element.visible?
+    page.description.archive_link_element.when_present.click
   end
 end
 
diff --git a/tests/browser/features/support/components/board_description.rb 
b/tests/browser/features/support/components/board_description.rb
new file mode 100644
index 0000000..5f9cc77
--- /dev/null
+++ b/tests/browser/features/support/components/board_description.rb
@@ -0,0 +1,26 @@
+require_relative 'flow_editor'
+
+class BoardDescription
+  include PageObject
+  include FlowEditor
+
+  # board description
+  a(:edit, text: "Edit description")
+  div(:content, class: 'flow-ui-boardDescriptionWidget-content')
+
+  a(:toggle, class: "side-rail-toggle-button")
+
+  div(:editor_widget, class: 'flow-ui-boardDescriptionWidget-editor')
+
+  def editor_element
+    visualeditor_or_textarea editor_widget_element
+  end
+
+  link(:save, text: "Save description")
+
+  # If page has an archive template from a flow conversion
+  # find the link
+  link(:archive_link) do
+    content_element.link_element
+  end
+end
diff --git a/tests/browser/features/support/components/flow_editor.rb 
b/tests/browser/features/support/components/flow_editor.rb
new file mode 100644
index 0000000..f1d8ccd
--- /dev/null
+++ b/tests/browser/features/support/components/flow_editor.rb
@@ -0,0 +1,11 @@
+module FlowEditor
+  def visualeditor_or_textarea(form)
+    parent = form.is_a?(String) ? form_element(css: form) : form
+    parent.when_present
+    if parent.div_element(class: 'flow-ui-wikitextEditorWidget').exists?
+      parent.div_element(class: 
'flow-ui-wikitextEditorWidget').text_area_element
+    else
+      parent.div_element(class: 've-ce-documentNode')
+    end
+  end
+end
diff --git a/tests/browser/features/support/pages/abstract_flow_page.rb 
b/tests/browser/features/support/pages/abstract_flow_page.rb
index e77e960..57a8f9e 100644
--- a/tests/browser/features/support/pages/abstract_flow_page.rb
+++ b/tests/browser/features/support/pages/abstract_flow_page.rb
@@ -1,34 +1,14 @@
 require_relative 'wiki_page'
 
 class AbstractFlowPage < WikiPage
-  def visualeditor_or_textarea(form)
-    parent = form.is_a?(String) ? form_element(css: form) : form
-    parent.when_present
-    if parent.div_element(class: 'flow-editor-visualeditor').exists?
-      parent.div_element(class: 've-ce-documentNode')
-    else
-      parent.div_element(class: 'oo-ui-textInputWidget').text_area_element
-    end
-  end
+  include FlowEditor
+
+  page_section(:description, BoardDescription, class: 'flow-board-header')
 
   # board component
   div(:flow_component, class: 'flow-component')
   div(:flow_board, class: 'flow-board')
 
-  # board description
-  a(:edit_description_link, title: "Edit description")
-  div(:description_content, css: ".flow-board-header-content")
-  form(:edit_description_form, css: ".edit-header-form")
-  a(:sidebar_toggle, class: "side-rail-toggle-button")
-  def edit_description_textbox_element
-    visualeditor_or_textarea '.edit-header-form'
-  end
-
-  # If page has an archive template from a flow conversion
-  # find the link
-  def description_archive_link
-    div_element(class: 'flow-board-header-content').link_element
-  end
   a(:author_link, css: ".flow-author a", index: 0)
   a(:cancel_button, text: "Cancel")
 
@@ -238,32 +218,43 @@
   # New topic creation
   a(:new_topic_link, text: "Start a new topic")
   form(:new_topic_form, css: ".flow-newtopic-form")
-  text_field(:new_topic_title, name: "topiclist_topic")
+  text_field(:new_topic_title, css: ".flow-ui-newTopicWidget-title > input")
 
+  div(:new_topic_widget, class: 'flow-ui-newTopicWidget')
   def new_topic_body_element
-    visualeditor_or_textarea '.flow-newtopic-form'
+    visualeditor_or_textarea new_topic_widget_element
   end
 
-  button(:new_topic_cancel, css: ".flow-newtopic-form .mw-ui-destructive")
-  # FIXME: Remove flow-ui-constructive reference when cache has cleared
-  button(:new_topic_save, css: ".flow-newtopic-form .mw-ui-constructive, 
.flow-newtopic-form .flow-ui-constructive")
+  link(:new_topic_cancel) do
+    new_topic_widget_element.link_element(text: 'Cancel')
+  end
+
+  link(:new_topic_save) do
+    new_topic_widget_element.link_element(text: 'Add topic')
+  end
 
   # Replying
   # TODO (mattflaschen, 2014-06-24): Should distinguish between
   # top-level replies to the topic, and replies to regular posts
   form(:new_reply_form, css: ".flow-reply-form")
 
-  text_area(:new_reply_placeholder) do |page|
-    page.new_reply_form_element.text_area_element
+  div(:new_reply_placeholder, class: 'flow-ui-replyWidget')
+
+  div(:first_reply_widget) do
+    flow_first_topic_element.div_element(class: 'flow-ui-replyWidget')
   end
 
   def new_reply_editor_element
-    form = flow_first_topic_element.form_element(class: 'flow-reply-form')
-    visualeditor_or_textarea form
+    visualeditor_or_textarea first_reply_widget_element
   end
 
-  button(:new_reply_cancel, css: ".flow-reply-form .mw-ui-destructive")
-  button(:new_reply_save, css: ".flow-reply-form .mw-ui-constructive")
+  link(:new_reply_cancel) do
+    first_reply_widget_element.link_element(text: 'Cancel')
+  end
+  link(:new_reply_save) do
+    first_reply_widget_element.link_element(text: 'Reply')
+  end
+
   button(:keep_editing, text: "Keep editing")
 
   # Editing post workflow
@@ -275,8 +266,6 @@
   button(:change_post_save, css: ".flow-edit-post-form .mw-ui-constructive")
 
   div(:small_spinner, class: "mw-spinner mw-spinner-small mw-spinner-inline")
-
-  button(:edit_description_save, text: "Save description")
 
   # No javascript elements
   button(:no_javascript_add_topic, text: "Add topic")
@@ -291,10 +280,11 @@
   text_field(:no_javascript_topic_title_text, name: "topiclist_topic")
 
   # Sorting
-  span(:newest_topics_link, text: "Newest topics")
-  span(:recently_active_topics_choice, text: "Recently active topics")
-  span(:recently_active_topics_link, text: "Recently active topics")
-  span(:newest_topics_choice, text: "Newest topics")
+  div(:sorting, class: 'flow-ui-reorderTopicsWidget')
+  link(:newest_topics_link, text: "Newest topics")
+  link(:recently_active_topics_link, text: "Recently active topics")
+  div(:newest_topics_choice, text: "Newest topics")
+  div(:recently_active_topics_choice, text: "Recently active topics")
 
   ## Watch and unwatch links
   div(:first_topic_watchlist_container, css: ".flow-topic-watchlist", index: 0)
diff --git a/tests/browser/features/support/pages/special_enable_flow_page.rb 
b/tests/browser/features/support/pages/special_enable_flow_page.rb
index be3cc2c..4bfcc6d 100644
--- a/tests/browser/features/support/pages/special_enable_flow_page.rb
+++ b/tests/browser/features/support/pages/special_enable_flow_page.rb
@@ -5,13 +5,18 @@
 
   # form elements
   div(:page_name_div, id: 'mw-input-wppage')
+  div(:page_header_div, id: 'mw-input-wpheader')
   div(:submit_button_div, class: 'oo-ui-buttonElement')
 
-  def page_name
+  text_field(:page_name) do
     page_name_div_element.text_field_element
   end
 
-  def submit_button
+  text_area(:page_header) do
+    page_header_div_element.text_area_element
+  end
+
+  button(:submit) do
     submit_button_div_element.button_element
   end
 end

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic12a4c68fbd8d15e268e26a9bb6ef40650bd46b0
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: Sbisson <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to