Jforrester has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/393917 )

Change subject: Delete Ruby Selenium tests
......................................................................

Delete Ruby Selenium tests

These aren't being run, the Ruby framework is deprecated, and the
entire front-end of Structured Discussions is being re-written, so
it's a lot simpler to remove them now and re-add them based on the
node selenium test system with the new UI.

Bug: T164479
Change-Id: I236fc83557290323c5168ec1292084624be64f56
---
M Gemfile
M Gemfile.lock
M Rakefile
D tests/browser/README.md
D tests/browser/ci.yml
D tests/browser/environments.yml
D tests/browser/features/action_menu_permalink.feature
D tests/browser/features/anon_interface.feature
D tests/browser/features/categories.feature
D tests/browser/features/description.feature
D tests/browser/features/edit_existing.feature
D tests/browser/features/flow_in_recent_changes.feature
D tests/browser/features/flow_logged_in.feature
D tests/browser/features/flow_no_javascript.feature
D tests/browser/features/moderation.feature
D tests/browser/features/new_topic.feature
D tests/browser/features/opt_in.feature
D tests/browser/features/post_links.feature
D tests/browser/features/preload.feature
D tests/browser/features/reopen_topic.feature
D tests/browser/features/reply.feature
D tests/browser/features/reply_moderation.feature
D tests/browser/features/resolve_topic.feature
D tests/browser/features/sorting_topics.feature
D tests/browser/features/special_enableflow.feature
D tests/browser/features/step_definitions/action_menu_permalink_steps.rb
D tests/browser/features/step_definitions/api_steps.rb
D tests/browser/features/step_definitions/categories_steps.rb
D tests/browser/features/step_definitions/description_steps.rb
D tests/browser/features/step_definitions/edit_existing_steps.rb
D tests/browser/features/step_definitions/flow_in_recent_changes_steps.rb
D tests/browser/features/step_definitions/flow_no_javascript_steps.rb
D tests/browser/features/step_definitions/flow_steps.rb
D tests/browser/features/step_definitions/moderation_steps.rb
D tests/browser/features/step_definitions/new_topic_steps.rb
D tests/browser/features/step_definitions/opt_in_steps.rb
D tests/browser/features/step_definitions/preload_steps.rb
D tests/browser/features/step_definitions/reply_moderation_steps.rb
D tests/browser/features/step_definitions/reply_steps.rb
D tests/browser/features/step_definitions/resolve_reopen_steps.rb
D tests/browser/features/step_definitions/sorting_topics_steps.rb
D tests/browser/features/step_definitions/special_enable_flow_steps.rb
D tests/browser/features/step_definitions/suppress_steps.rb
D tests/browser/features/step_definitions/thank_steps.rb
D tests/browser/features/step_definitions/undo_actions.rb
D tests/browser/features/step_definitions/watch_steps.rb
D tests/browser/features/summarize.feature
D tests/browser/features/support/components/board_description.rb
D tests/browser/features/support/components/flow_editor.rb
D tests/browser/features/support/data_manager.rb
D tests/browser/features/support/env.rb
D tests/browser/features/support/extensions.rb
D tests/browser/features/support/hooks.rb
D tests/browser/features/support/pages/abstract_flow_page.rb
D tests/browser/features/support/pages/board_history_page.rb
D tests/browser/features/support/pages/flow_component.rb
D tests/browser/features/support/pages/flow_diff_page.rb
D tests/browser/features/support/pages/flow_old_permalink_page.rb
D tests/browser/features/support/pages/flow_page.rb
D tests/browser/features/support/pages/new_flow_page.rb
D tests/browser/features/support/pages/preloaded_flow_page.rb
D tests/browser/features/support/pages/recent_changes_page.rb
D tests/browser/features/support/pages/special_enable_flow_archive_page.rb
D tests/browser/features/support/pages/special_enable_flow_confirmation_page.rb
D tests/browser/features/support/pages/special_enable_flow_page.rb
D tests/browser/features/support/pages/special_notifications_page.rb
D tests/browser/features/support/pages/special_preferences_page.rb
D tests/browser/features/support/pages/topic_history_page.rb
D tests/browser/features/support/pages/user_page.rb
D tests/browser/features/support/pages/user_talk_page.rb
D tests/browser/features/support/pages/wiki_page.rb
D tests/browser/features/suppress.feature
D tests/browser/features/thank.feature
D tests/browser/features/undo.feature
D tests/browser/features/watch.feature
75 files changed, 1 insertion(+), 2,547 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Flow 
refs/changes/17/393917/1

diff --git a/Gemfile b/Gemfile
index b5a3497..942680a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,6 +1,5 @@
 source "https://rubygems.org";
 
 gem "csscss", "~> 1.3.3"
-gem 'mediawiki_selenium', '~> 1.8'
 gem 'rake', '~> 11.1', '>= 11.1.1'
 gem "rubocop", "~> 0.32.1", require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 5e814ab..81120cd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -5,71 +5,10 @@
     astrolabe (1.3.1)
       parser (~> 2.2)
     blankslate (3.1.3)
-    builder (3.2.3)
-    childprocess (0.6.2)
-      ffi (~> 1.0, >= 1.0.11)
     colorize (0.7.7)
     csscss (1.3.3)
       colorize
       parslet (>= 1.6.1, < 2.0)
-    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 (1.0)
-      faker (>= 1.1.2)
-      yml_reader (>= 0.6)
-    diff-lcs (1.3)
-    domain_name (0.5.20170223)
-      unf (>= 0.0.5, < 1.0.0)
-    faker (1.7.3)
-      i18n (~> 0.5)
-    faraday (0.11.0)
-      multipart-post (>= 1.2, < 3)
-    faraday-cookie_jar (0.0.6)
-      faraday (>= 0.7.4)
-      http-cookie (~> 1.0.0)
-    faraday_middleware (0.11.0.1)
-      faraday (>= 0.7.4, < 1.0)
-    ffi (1.9.17)
-    gherkin (2.12.2)
-      multi_json (~> 1.3)
-    headless (2.3.1)
-    http-cookie (1.0.3)
-      domain_name (~> 0.5)
-    i18n (0.8.1)
-    json (2.0.3)
-    mediawiki_api (0.7.1)
-      faraday (~> 0.9, >= 0.9.0)
-      faraday-cookie_jar (~> 0.0, >= 0.0.6)
-      faraday_middleware (~> 0.10, >= 0.10.0)
-    mediawiki_selenium (1.8.0)
-      cucumber (~> 1.3, >= 1.3.20)
-      headless (~> 2.0, >= 2.1.0)
-      json (~> 2.0, >= 2.0.2)
-      mediawiki_api (~> 0.7, >= 0.7.0)
-      page-object (~> 2.0)
-      rest-client (~> 1.6, >= 1.6.7)
-      rspec-core (~> 2.14, >= 2.14.4)
-      rspec-expectations (~> 2.14, >= 2.14.4)
-      selenium-webdriver (~> 3.1.0)
-      syntax (~> 1.2, >= 1.2.0)
-      thor (~> 0.19, >= 0.19.1)
-    mime-types (2.99.3)
-    multi_json (1.12.1)
-    multi_test (0.1.2)
-    multipart-post (2.0.0)
-    net-http-persistent (2.9.4)
-    netrc (0.11.0)
-    page-object (2.0.0)
-      net-http-persistent (~> 2.9.4)
-      page_navigation (>= 0.9)
-      selenium-webdriver (~> 3.0)
-      watir (~> 6.0)
-    page_navigation (0.10)
-      data_magic (>= 0.22)
     parser (2.2.2.6)
       ast (>= 1.1, < 3.0)
     parslet (1.7.1)
@@ -77,13 +16,6 @@
     powerpack (0.1.1)
     rainbow (2.0.0)
     rake (11.1.1)
-    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.32.1)
       astrolabe (~> 1.3)
       parser (>= 2.2.2.5, < 3.0)
@@ -91,29 +23,14 @@
       rainbow (>= 1.99.1, < 3.0)
       ruby-progressbar (~> 1.4)
     ruby-progressbar (1.7.5)
-    rubyzip (1.2.1)
-    selenium-webdriver (3.1.0)
-      childprocess (~> 0.5)
-      rubyzip (~> 1.0)
-      websocket (~> 1.0)
-    syntax (1.2.1)
-    thor (0.19.4)
-    unf (0.1.4)
-      unf_ext
-    unf_ext (0.0.7.2)
-    watir (6.2.0)
-      selenium-webdriver (~> 3.0)
-    websocket (1.2.4)
-    yml_reader (0.7)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
   csscss (~> 1.3.3)
-  mediawiki_selenium (~> 1.8)
   rake (~> 11.1, >= 11.1.1)
   rubocop (~> 0.32.1)
 
 BUNDLED WITH
-   1.14.5
+   1.16.0
diff --git a/Rakefile b/Rakefile
index 2877bf6..6eef121 100644
--- a/Rakefile
+++ b/Rakefile
@@ -8,9 +8,6 @@
   task.options = ['-c', '.rubocop.yml']
 end
 
-require 'mediawiki_selenium/rake_task'
-MediawikiSelenium::RakeTask.new
-
 task default: [:test]
 
 desc 'Run all build/tests commands (CI entry point)'
diff --git a/tests/browser/README.md b/tests/browser/README.md
deleted file mode 100644
index 3631949..0000000
--- a/tests/browser/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Please see https://github.com/wikimedia/mediawiki-selenium for instructions on 
how to run tests.
diff --git a/tests/browser/ci.yml b/tests/browser/ci.yml
deleted file mode 100644
index c2eca93..0000000
--- a/tests/browser/ci.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-BROWSER:
-  - chrome
-  - firefox
-
-MEDIAWIKI_ENVIRONMENT:
-  - beta
-
-PLATFORM:
-  - Linux
diff --git a/tests/browser/environments.yml b/tests/browser/environments.yml
deleted file mode 100644
index d9d3880..0000000
--- a/tests/browser/environments.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# 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
-#
-mw-vagrant-host: &default
-  user_factory: true
-  mediawiki_url: http://127.0.0.1:8080/wiki/
-
-mw-vagrant-guest:
-  user_factory: true
-  mediawiki_url: http://127.0.0.1/wiki/
-
-local:
-  mediawiki_user: Selenium Flow user
-  mediawiki_password: vagrant
-  mediawiki_user_b: Selenium Flow user 2
-  mediawiki_url: http://dev.wiki.local.wmftest.net:8080/wiki/
-
-beta:
-  mediawiki_url: https://en.wikipedia.beta.wmflabs.org/wiki/
-  mediawiki_user: Selenium_user
-  mediawiki_user_b: Selenium Flow user 2
-  # mediawiki_password: SET THIS IN THE ENVIRONMENT!
-
-test2:
-  mediawiki_url: https://test2.wikipedia.org/wiki/
-  mediawiki_user: Selenium_user
-  # mediawiki_password: SET THIS IN THE ENVIRONMENT!
-
-integration:
-  user_factory: true
-  # mediawiki_url: THIS WILL BE SET BY JENKINS
-
-default: *default
diff --git a/tests/browser/features/action_menu_permalink.feature 
b/tests/browser/features/action_menu_permalink.feature
deleted file mode 100644
index f285f4d..0000000
--- a/tests/browser/features/action_menu_permalink.feature
+++ /dev/null
@@ -1,25 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Actions menu Permalink
-
-  Background:
-    Given there is a new topic with title "Permalinktest"
-    And I am on Flow page
-
-  Scenario: Topic Actions menu Permalink
-    When I select the permalink for the first post of the first topic
-    And I am viewing Topic page
-    Then I see only one topic on the page
-    And the top post should have a heading which contains "Permalinktest"
-
-  Scenario: Actions menu Permalink
-    Given I reply with comment "this is my response"
-    When I select the permalink for the second post of the first topic
-    Then I am viewing Topic page
-    And I see only one topic on the page
-    And the highlighted comment is "this is my response"
-
-  Scenario: Old style topic permalink
-    When I go to an old style permalink to my topic
-    And I am viewing Topic page
-    Then I see only one topic on the page
-    And the top post should have a heading which contains "Permalinktest"
diff --git a/tests/browser/features/anon_interface.feature 
b/tests/browser/features/anon_interface.feature
deleted file mode 100644
index 6365140..0000000
--- a/tests/browser/features/anon_interface.feature
+++ /dev/null
@@ -1,8 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox
-Feature: Check the interface for anonymous users
-
-  Scenario: Anon does not see block or actions
-    Given there is a new topic
-    When I am on Flow page
-    Then I see a flow creator element
-    And the block author link should not be visible
diff --git a/tests/browser/features/categories.feature 
b/tests/browser/features/categories.feature
deleted file mode 100644
index 74854ac..0000000
--- a/tests/browser/features/categories.feature
+++ /dev/null
@@ -1,22 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Categories
-
-  Assumes Flow is enabled for the Flow_test_talk namespace.
-
-  Background:
-    Given I am on a new board
-
-  Scenario: Add a category to new board
-    When I add category "Footegory" to the description
-    Then the categories contain "Footegory"
-
-  Scenario: Add multiple categories to new board
-    When I add categories "Footegory" and "Mootegory" to the description
-    Then the categories contain "Footegory"
-    And the categories contain "Mootegory"
-
-  Scenario: Remove categories from a new board
-    Given the board contains categories "Footegory" and "Mootegory"
-    When I remove category "Footegory" from the description
-    Then the categories do not contain "Footegory"
-    And the categories contain "Mootegory"
diff --git a/tests/browser/features/description.feature 
b/tests/browser/features/description.feature
deleted file mode 100644
index f4152c7..0000000
--- a/tests/browser/features/description.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Board description
-
-  Assumes Flow is enabled for the Flow_test_talk namespace.
-
-  Background:
-    Given I am on a new board
-
-  Scenario: No description on a new board
-    Then the description should be empty
-
-  Scenario: Create a description on a new board
-    When I set the description to "first version"
-    Then the description should be "first version"
-
-  @integration
-  Scenario: Edit the description on an existing board
-    Given I set the description to "first version"
-    When I set the description to "second version"
-    Then the description should be "second version"
diff --git a/tests/browser/features/edit_existing.feature 
b/tests/browser/features/edit_existing.feature
deleted file mode 100644
index 97852db..0000000
--- a/tests/browser/features/edit_existing.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Edit existing title
-
-  Background:
-    Given there is a new topic with title "original title"
-
-  Scenario: Edit an existing title
-    Given I am on Flow page
-    When I select the Edit title action
-    And I edit the title field with "Title edited"
-    And I save the new title
-    Then the top post should have a heading which contains "Title edited"
-
-  Scenario: Edit existing post
-    Given I am logged in
-    And I am on Flow page
-    When I select Edit post
-    And I edit the post field with "Post edited"
-    And I save the new post
-    Then the saved post should contain "Post edited"
diff --git a/tests/browser/features/flow_in_recent_changes.feature 
b/tests/browser/features/flow_in_recent_changes.feature
deleted file mode 100644
index 52790fb..0000000
--- a/tests/browser/features/flow_in_recent_changes.feature
+++ /dev/null
@@ -1,17 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Flow updates are in Recent Changes
-
-  Background:
-    Given I am on Flow page
-    And I have created a Flow topic with title "New topic should be in Recent 
Changes"
-
-  Scenario: New topic is in Recent Changes
-    When I navigate to the Recent Changes page
-    Then the new topic should be in the Recent Changes page
-
-  Scenario: Edited topic is in Recent Changes
-    When I select the Edit title action
-    And I edit the title field with "Title should be in Recent Changes"
-    And I save the new title
-    And I navigate to the Recent Changes page
-    Then the new title should be in the Recent Changes page
diff --git a/tests/browser/features/flow_logged_in.feature 
b/tests/browser/features/flow_logged_in.feature
deleted file mode 100644
index 2c51795..0000000
--- a/tests/browser/features/flow_logged_in.feature
+++ /dev/null
@@ -1,19 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Create new topic logged in
-
-  It requires the cldr extension, a "Flow QA" page, and a "Selenium user" who 
has
-  permission to flow-delete (usually 'sysop'/administrator user right), to
-  flow-suppress (usually the 'oversight' user right), and to block (usually 
'sysop').
-
-  Background:
-    Given there is a new topic created by me
-    And I am logged in
-    And I am on Flow page
-
-  Scenario: Add new Flow topic and show author and block links
-    Given the author link is visible
-    And the talk to author link is not visible
-    And the block author link is not visible
-    When I hover over the author link
-    Then the talk to author link should be visible
-    And the block author link should be visible
diff --git a/tests/browser/features/flow_no_javascript.feature 
b/tests/browser/features/flow_no_javascript.feature
deleted file mode 100644
index 71390ff..0000000
--- a/tests/browser/features/flow_no_javascript.feature
+++ /dev/null
@@ -1,21 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Basic site for legacy devices
-
-  Background:
-    Given I am using a nojs browser
-    And I am on a Flow page without JavaScript
-
-  Scenario: I post a new topic without JavaScript
-    When I see the form to post a new topic
-    And I click Add topic no javascript
-    And I enter a no javascript topic title of "Selenium no javascript title"
-    And I enter a no javascript topic body of "Selenium no javascript body"
-    And I save a no javascript new topic
-    Then the page contains my no javascript topic
-    And the page contains my no javascript body
-
-  Scenario: I reply to a topic without JavaScript
-    When I see the form to reply to a topic
-    And I enter a no javascript reply of "Selenium no javascript reply"
-    And I save a no javascript reply
-    Then the page contains my no javascript reply
diff --git a/tests/browser/features/moderation.feature 
b/tests/browser/features/moderation.feature
deleted file mode 100644
index 39caf12..0000000
--- a/tests/browser/features/moderation.feature
+++ /dev/null
@@ -1,14 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Moderation
-
-  Background:
-    Given there is a new topic
-    And I am logged in
-    And I am on Flow page
-
-  Scenario: Deleting a topic
-    When I select the Delete topic button
-    And I see a dialog box
-    And I give reason for deletion as being "He's a naughty boy"
-    And I click Delete topic
-    Then the top post should be marked as deleted
diff --git a/tests/browser/features/new_topic.feature 
b/tests/browser/features/new_topic.feature
deleted file mode 100644
index 37d0111..0000000
--- a/tests/browser/features/new_topic.feature
+++ /dev/null
@@ -1,15 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Creating a new topic
-
-  Scenario: Add new Flow topic as anonymous user
-    When I have created a Flow topic with title "Anonymous user topic creation"
-    Then the top post should have a heading which contains "Anonymous user 
topic creation"
-    And the top post should have content which contains "Anonymous user topic 
creation"
-
-  Scenario: Add new Flow topic with topic-title-wikitext
-    Given I am logged in
-    And I am on a new board
-    When I have created a Flow topic containing the wikitext "[[Main Page]] 
[[Red link cIIBeqoNg8Bxo]] [[Media:Earth.jpg]] [http://example.com Example]"
-    Then the top post should have a heading which contains 
"\[http://example.com Example\]"
-    And there should be a link to the main page in the first topic title
-    And there should be a red link in the first topic title
diff --git a/tests/browser/features/opt_in.feature 
b/tests/browser/features/opt_in.feature
deleted file mode 100644
index 2e36b5e..0000000
--- a/tests/browser/features/opt_in.feature
+++ /dev/null
@@ -1,41 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Opt-in Flow beta feature
-
-  Depends on having $wgFlowEnableOptInBetaFeature = true
-  and NS_USER_TALK not occupied by Flow.
-
-  Background:
-    Given I am logged in as a new user
-
-  Scenario: Opt-in: I don't have a talk page
-    When I enable Flow beta feature
-    Then my talk page is a Flow board
-    And a notification tells me about it
-
-  @integration
-  Scenario: Opt-in: I have a wikitext talk page
-    Given my talk page has wikitext content
-    When I enable Flow beta feature
-    Then my talk page is a Flow board
-    And my flow board contains a link to my archived talk page
-    And the board description contains the templates from my talk page
-    And my previous talk page is archived
-
-  Scenario: Opt-out: I didn't have a talk page
-    Given I have Flow beta feature enabled
-    When I disable Flow beta feature
-    Then my Flow board is archived
-    And my talk page is deleted without redirect
-
-  Scenario: Opt-out: I had a wikitext talk page
-    Given my talk page has wikitext content
-    And I have Flow beta feature enabled
-    When I disable Flow beta feature
-    Then my wikitext talk page is restored
-    And my Flow board is archived
-
-  Scenario: Re-opt-in
-    Given I have used the Flow beta feature before
-    When I enable Flow beta feature
-    Then my talk page is my old Flow board
-    And my previous talk page is archived
diff --git a/tests/browser/features/post_links.feature 
b/tests/browser/features/post_links.feature
deleted file mode 100644
index 91b7bc2..0000000
--- a/tests/browser/features/post_links.feature
+++ /dev/null
@@ -1,10 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Follow user links
-
-  Background:
-    Given there is a new topic created by me
-
-  Scenario: User links takes me to the user page
-    Given I am on Flow page
-    When I click the flow creator element
-    Then I am on my user page
diff --git a/tests/browser/features/preload.feature 
b/tests/browser/features/preload.feature
deleted file mode 100644
index 29aa412..0000000
--- a/tests/browser/features/preload.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: preload
-
-  Background:
-    Given there is a page to preload content from
-
-  Scenario: Preloading title and content
-    When I am on Flow page with the title and content preload parameters
-    Then the title is preloaded
-    And the content is preloaded
-
-  Scenario: Preloading title only
-    When I am on Flow page with the title preload parameter
-    Then the title is preloaded
-    And the content is empty
-
-  Scenario: Preloading content only
-    When I am on Flow page with the content preload parameter
-    Then the content is preloaded
-    And the title is empty
diff --git a/tests/browser/features/reopen_topic.feature 
b/tests/browser/features/reopen_topic.feature
deleted file mode 100644
index 9a499d3..0000000
--- a/tests/browser/features/reopen_topic.feature
+++ /dev/null
@@ -1,16 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Reopen a resolved topic
-
-  Background:
-    Given there is a new topic
-    And I am logged in
-    And I am on Flow page
-
-  @integration
-  Scenario: Reopening a resolved topic and changing the summary
-    Given I mark the first topic as resolved
-    And I summarize as "answer when resolving"
-    When I reopen the first topic
-    And I summarize as "answer when reopening"
-    Then the first topic is open
-    And the first topic is summarized as "answer when reopening"
diff --git a/tests/browser/features/reply.feature 
b/tests/browser/features/reply.feature
deleted file mode 100644
index 70fb397..0000000
--- a/tests/browser/features/reply.feature
+++ /dev/null
@@ -1,16 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Replying
-
-  Scenario: I can reply
-    Given there is a new topic
-    And I am on Flow page
-    When I reply with comment "hi there"
-    Then the top post's first reply should contain the text "hi there"
-
-  Scenario: Replying updates watched state
-    Given there is a new topic created by me
-    And I am logged in
-    And I am on Flow page
-    And I am not watching my new Flow topic
-    When I reply with comment "I want to watch this title"
-    Then I should see an unwatch link on the topic
diff --git a/tests/browser/features/reply_moderation.feature 
b/tests/browser/features/reply_moderation.feature
deleted file mode 100644
index 23d1830..0000000
--- a/tests/browser/features/reply_moderation.feature
+++ /dev/null
@@ -1,13 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Reply moderation
-
-  Background:
-    Given I am logged in
-    And I am on Flow page
-
-  Scenario: Hiding a comment
-    Given I have created a Flow topic with title "Hide comment test"
-    And I reply with comment "hide me if you dare"
-    When I hide the second comment with reason "Shhhhh!"
-    Then the second comment should be marked as hidden
-    And the content of the second comment should not be visible
diff --git a/tests/browser/features/resolve_topic.feature 
b/tests/browser/features/resolve_topic.feature
deleted file mode 100644
index 16df2ac..0000000
--- a/tests/browser/features/resolve_topic.feature
+++ /dev/null
@@ -1,30 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Mark topic as resolved
-
-  Background:
-    Given there is a new topic
-    And I am logged in
-    And I am on Flow page
-
-  Scenario: Resolving a topic without a summary
-    When I mark the first topic as resolved
-    And I skip the summary
-    Then the first topic is resolved
-
-  Scenario: Resolving a topic and adding a summary
-    When I mark the first topic as resolved
-    And I summarize as "the answer is 42"
-    Then the first topic is resolved with summary "the answer is 42"
-
-  Scenario: Resolving a topic and keeping the summary
-    Given I summarize the first topic as "this answer should be kept"
-    When I mark the first topic as resolved
-    And I keep the summary
-    Then the first topic is resolved with summary "this answer should be kept"
-
-  @integration
-  Scenario: Resolving a topic and updating the summary
-    Given I summarize the first topic as "this answer should be changed"
-    When I mark the first topic as resolved
-    And I summarize as "this is the new answer"
-    Then the first topic is resolved with summary "this is the new answer"
diff --git a/tests/browser/features/sorting_topics.feature 
b/tests/browser/features/sorting_topics.feature
deleted file mode 100644
index 35c68b5..0000000
--- a/tests/browser/features/sorting_topics.feature
+++ /dev/null
@@ -1,11 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox
-Feature: Sorting topics
-
-  Background:
-    Given I am on Flow page
-
-  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/special_enableflow.feature 
b/tests/browser/features/special_enableflow.feature
deleted file mode 100644
index a272a27..0000000
--- a/tests/browser/features/special_enableflow.feature
+++ /dev/null
@@ -1,33 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Flow Special:EnableFlow enables new flow boards
-
-  Assumes Template:Wikitext_talk_page_converted_to_Flow exists
-  and returns a link to the archive page.
-
-  Background:
-    Given I am logged in
-    And I navigate to enable flow page
-
-  Scenario: Enabling a new Flow page
-    When I enable a new Flow board
-    Then I get confirmation for enabling a new Flow board
-    And I click on the new Flow board link
-    And The page I am on is a Flow board
-
-  Scenario: Enabling a new Flow page with a custom header
-    When I enable a new Flow board with a custom header
-    Then I get confirmation for enabling a new Flow board
-    And I click on the new Flow board link
-    And The page I am on is a Flow board
-    And I see the custom header
-
-  @integration
-  Scenario: Enabling a Flow page on existing page
-    Given I have an existing talk page
-    When I enable a new Flow board on the talk page
-    Then I get confirmation for enabling a new Flow board
-    And I click on the new Flow board link
-    And The page I am on is a Flow board
-    And the board description contains the templates from my talk page
-    And I click the archive link
-    And The archive contains the original text
diff --git 
a/tests/browser/features/step_definitions/action_menu_permalink_steps.rb 
b/tests/browser/features/step_definitions/action_menu_permalink_steps.rb
deleted file mode 100644
index 28a5651..0000000
--- a/tests/browser/features/step_definitions/action_menu_permalink_steps.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-When(/^I add (\d+) comments to the Topic$/) do |number|
-  number.to_i.times do
-    @saved_random = Random.new.rand.to_s
-    step 'I reply with comment "' + 'Selenium comment ' + @saved_random + '"'
-  end
-end
-
-When(/^I select the permalink for the first post of the first topic$/) do
-  on(FlowPage) do |page|
-    menu = page.post_actions_link_element
-    option = page.permalink_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I select the permalink for the second post of the first topic$/) do
-  on(FlowPage) do |page|
-    menu = page.second_post_actions_link_element
-    option = page.actions_link_permalink_second_comment_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I click Permalink from the Actions menu$/) do
-  on(FlowPage).permalink_button_element.when_present.click
-end
-
-When(/^I click Permalink from the 3rd comment Post Actions menu$/) do
-  on(FlowPage).actions_link_permalink_3rd_comment_element.when_present.click
-end
-
-When(/^I go to an old style permalink to my topic$/) do
-  on(FlowPage) do |page|
-    work_flow_id = page.flow_first_topic_element.attribute('data-flow-id')
-    visit(FlowOldPermalinkPage, using_params: { workflow_id: work_flow_id })
-  end
-end
-
-Then(/^I see only one topic on the page$/) do
-  on(FlowPage) do |page|
-    # We should have the a post with a heading
-    expect(page.flow_first_topic_heading_element.when_present).to be_visible
-    # but this should match nothing - there is only one topic.
-    expect(page.flow_second_topic_heading_element).not_to be_visible
-  end
-end
-
-Then(/^the highlighted comment is "(.*?)"$/) do |post_text|
-  expect(on(FlowPage).highlighted_post).to match post_text
-end
-
-Then(/^the highlighted comment should contain the text for the 3rd comment$/) 
do
-  expect(on(FlowPage).highlighted_post).to match @saved_random
-end
diff --git a/tests/browser/features/step_definitions/api_steps.rb 
b/tests/browser/features/step_definitions/api_steps.rb
deleted file mode 100644
index 4469cfb..0000000
--- a/tests/browser/features/step_definitions/api_steps.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-Given(/^there is a new topic with title \"(.*?)\"$/) do |title|
-  title = @data_manager.get title
-  api.action('flow', submodule: 'new-topic', page: 'Talk:Flow_QA', nttopic: 
title, ntcontent: 'created via API')
-end
-
-Given(/^there is a new topic$/) do
-  step "there is a new topic with title \"title\""
-end
-
-Given(/^there is a new topic created by me$/) do
-  api.log_in user, password unless api.logged_in?
-  step "there is a new topic with title \"title\""
-end
diff --git a/tests/browser/features/step_definitions/categories_steps.rb 
b/tests/browser/features/step_definitions/categories_steps.rb
deleted file mode 100644
index 739673b..0000000
--- a/tests/browser/features/step_definitions/categories_steps.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-When(/^I add category "(.*?)" to the description$/) do |category_text|
-  on(FlowPage) do |page|
-    page.description.edit
-    page.description.editor_element.when_present.send_keys '[[Category:' + 
category_text + ']]'
-    page.description.save
-    page.description.categories_element.when_present
-  end
-end
-
-When(/^I add categories "(.*?)" and "(.*?)" to the description$/) do |cat1, 
cat2|
-  on(FlowPage) do |page|
-    page.description.edit
-    page.description.editor_element.when_present.send_keys '[[Category:' +
-      cat1 + ']]' + "\n" \
-      '[[Category:' + cat2 + ']]'
-    page.description.save
-    page.description.categories_element.when_present
-  end
-end
-
-When(/^I remove category "(.*?)" from the description$/) do |category_text|
-  on(FlowPage) do |page|
-    page.description.edit
-    text = page.description.editor_element.when_present.text
-    text.slice! "[[Category:#{category_text}]]"
-    page.description.editor_element.when_present.clear
-    page.description.editor_element.when_present.send_keys text
-    page.description.save
-    page.description.categories_element.when_present
-  end
-end
-
-When(/^the board contains categories "(.*?)" and "(.*?)"$/) do |cat1, cat2|
-  step "I add categories \"#{cat1}\" and \"#{cat2}\" to the description"
-end
-
-When(/^the categories contain "(.*?)"$/) do |category_text|
-  on(FlowPage) do |page|
-    page.description.category_item(category_text).exists?
-  end
-end
-
-When(/^the categories do not contain "(.*?)"$/) do |category_text|
-  on(FlowPage) do |page|
-    expect(page.description.category_item(category_text)).not_to exist
-  end
-end
diff --git a/tests/browser/features/step_definitions/description_steps.rb 
b/tests/browser/features/step_definitions/description_steps.rb
deleted file mode 100644
index a43c649..0000000
--- a/tests/browser/features/step_definitions/description_steps.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-Then(/^the description should be "(.*?)"$/) do |content|
-  on(FlowPage) do |page|
-    page.description.content.should eq(content)
-  end
-end
-
-When(/^I set the description to "(.*?)"$/) do |description_text|
-  on(FlowPage) do |page|
-    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
-
-Then(/^the description should be empty$/) do
-  step "the description should be \"\""
-end
diff --git a/tests/browser/features/step_definitions/edit_existing_steps.rb 
b/tests/browser/features/step_definitions/edit_existing_steps.rb
deleted file mode 100644
index 213545c..0000000
--- a/tests/browser/features/step_definitions/edit_existing_steps.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-When(/^I select Edit post$/) do
-  on(FlowPage) do |page|
-    menu = page.post_actions_link_element
-    option = page.edit_post_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I select the Edit title action$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.edit_title_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I edit the post field with "(.+)"$/) do |edited_post|
-  on(FlowPage) do |page|
-    # Take focus away from menu
-    page.post_edit_element.when_present.click
-    page.post_edit_element.when_present.send_keys(edited_post + @random_string)
-  end
-end
-
-When(/^I edit the title field with "(.+)"$/) do |edited_title|
-  on(FlowPage) do |page|
-    @edited_topic_string = edited_title + @random_string
-    # Take focus away from menu
-    page.title_edit_element.when_present.when_enabled.click
-    page.title_edit = @edited_topic_string
-  end
-end
-
-When(/^I save the new post/) do
-  on(FlowPage) do |page|
-    page.change_post_save_element.when_present.click
-    page.change_post_save_element.when_not_present
-  end
-end
-
-When(/^I save the new title$/) do
-  on(FlowPage) do |page|
-    page.change_title_save_element.when_present.click
-    page.flow_first_topic_heading_element.when_present
-  end
-end
-
-Then(/^the saved post should contain "(.+)"$/) do |edited_post|
-  expect(on(FlowPage).flow_first_topic_body_element.when_present.text).to 
match(edited_post + @random_string)
-end
diff --git 
a/tests/browser/features/step_definitions/flow_in_recent_changes_steps.rb 
b/tests/browser/features/step_definitions/flow_in_recent_changes_steps.rb
deleted file mode 100644
index 4b55c50..0000000
--- a/tests/browser/features/step_definitions/flow_in_recent_changes_steps.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-When(/^I navigate to the Recent Changes page$/) do
-  visit(RecentChangesPage)
-end
-
-Then(/^the new topic should be in the Recent Changes page$/) do
-  on(RecentChangesPage) do |page|
-    page.refresh_until { page.recent_changes.match @topic_string }
-  end
-end
-
-Then(/^the new title should be in the Recent Changes page$/) do
-  on(RecentChangesPage) do |page|
-    page.refresh_until { page.recent_changes.match @edited_topic_string }
-  end
-end
diff --git 
a/tests/browser/features/step_definitions/flow_no_javascript_steps.rb 
b/tests/browser/features/step_definitions/flow_no_javascript_steps.rb
deleted file mode 100644
index 21b07cd..0000000
--- a/tests/browser/features/step_definitions/flow_no_javascript_steps.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# This test has no javascript
-# Therefore this test has no AJAX
-# Therefore it should run without any "when_present" clauses
-# If you need a "when_present" to make the test run, that is a bug
-
-Given(/^I am on a Flow page without JavaScript$/) do
-  visit(FlowPage)
-end
-
-Given(/^I am using a nojs browser$/) do
-  # The following user-agent string contains:
-  #   SymbianOS: for RL to NOT load the modern experience
-  #   SMART-TV-SamsungBrowser: to bypass mobile-frontend and stay on the 
desktop site
-  browser_factory.override(browser_user_agent: 
'SymbianOS,SMART-TV-SamsungBrowser')
-end
-
-When(/^I click Add topic no javascript$/) do
-  on(FlowPage).no_javascript_topic_title_text_element.click
-end
-
-When(/^I enter a no javascript reply of "(.*?)"$/) do |no_javascript_reply|
-  @no_javascript_reply = no_javascript_reply
-  on(FlowPage).no_javascript_reply_form_element.send_keys 
"#{@no_javascript_reply} #{@random_string}"
-end
-
-When(/^I enter a no javascript topic body of "(.*?)"$/) do 
|no_javascript_topic_body|
-  @no_javascript_topic_body = no_javascript_topic_body
-  on(FlowPage).no_javascript_topic_body_text_element.send_keys 
"#{@no_javascript_topic_body} #{@random_string}"
-end
-
-When(/^I enter a no javascript topic title of "(.*?)"$/) do 
|no_javascript_topic_title|
-  @no_javascript_topic_title = no_javascript_topic_title
-  on(FlowPage).no_javascript_topic_title_text_element.send_keys 
"#{@no_javascript_topic_title} #{@random_string}"
-end
-
-When(/^I save a no javascript new topic$/) do
-  on(FlowPage).no_javascript_add_topic_element.click
-end
-
-When(/^I save a no javascript reply$/) do
-  on(FlowPage).no_javascript_reply_element.click
-end
-
-When(/^I see the form to post a new topic$/) do
-  on(FlowPage) do |page|
-    page.no_javascript_start_topic_element.click
-  end
-end
-
-When(/^I see the form to reply to a topic$/) do
-  on(FlowPage) do |page|
-    page.no_javascript_start_reply_element.click
-  end
-end
-
-Then(/^the page contains my no javascript body$/) do
-  expect(on(FlowPage).no_javascript_page_content_body).to match 
"#{@no_javascript_topic_body} #{@random_string}"
-end
-
-Then(/^the page contains my no javascript topic$/) do
-  expect(on(FlowPage).no_javascript_page_content_title).to match 
"#{@no_javascript_topic_title} #{@random_string}"
-end
-
-Then(/^the page contains my no javascript reply$/) do
-  expect(on(FlowPage).no_javascript_page_flow_topics).to match 
"#{@no_javascript_reply} #{@random_string}"
-end
diff --git a/tests/browser/features/step_definitions/flow_steps.rb 
b/tests/browser/features/step_definitions/flow_steps.rb
deleted file mode 100644
index 940fb9b..0000000
--- a/tests/browser/features/step_definitions/flow_steps.rb
+++ /dev/null
@@ -1,253 +0,0 @@
-Given(/^I am on a new board$/) do
-  visit NewFlowPage
-  step 'The Flow page is fully loaded'
-  step 'page has no ResourceLoader errors'
-end
-
-Given(/^I am on Flow page$/) do
-  visit FlowPage
-  step 'The Flow page is fully loaded'
-  step 'page has no ResourceLoader errors'
-end
-
-# @todo: Rewrite to use more generic step below
-Given(/^I have created a Flow topic$/) do
-  step "I have created a Flow topic with title \"Title of Flow topic\""
-end
-
-Given(/^I have created a Flow topic with title "(.+)"$/) do |title|
-  step "I am on Flow page"
-  step "I type \"#{title}\" into the new topic title field"
-  step "I type \"#{title}\" into the new topic content field"
-  step "I click New topic save"
-  step "topic \"#{title}\" is saved"
-end
-
-Given(/^the author link is visible$/) do
-  on(FlowPage).author_link_element.when_present.when_present
-end
-
-Given(/^the block author link is not visible$/) do
-  on(FlowPage).usertools_block_user_link_element.when_not_visible
-end
-
-Given(/^The Flow page is fully loaded$/) do
-  on(FlowPage) do |page|
-    page.new_topic_link_element.when_not_visible
-    page.overlay_element.when_not_visible
-  end
-end
-
-Given(/^the talk to author link is not visible$/) do
-  on(FlowPage).usertools_talk_link_element.when_not_visible
-end
-
-When(/^I am viewing Topic page$/) do
-  on(FlowPage).wait_until { @browser.url =~ /Topic/ }
-end
-
-When(/^I click New topic save$/) do
-  on(FlowPage) do |page|
-    page.new_topic_save_element.when_present.click
-  end
-end
-
-# This will only work for titles without wikitext
-# due to topic_with_title
-When(/^topic "(.+)" is saved$/) do |title|
-  on(FlowPage) do |page|
-    page.new_topic_save_element.when_not_visible(10)
-
-    full_title = @data_manager.get title
-    page.topic_with_title(full_title).when_present
-  end
-end
-
-When(/^I select the Delete topic button$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_delete_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I click the flow creator element$/) do
-  on(FlowPage).author_link_element.click
-end
-
-When(/^I click the Hide topic button$/) do
-  on(FlowPage).topic_hide_button_element.when_present.click
-end
-
-When(/^I hover over the author link$/) do
-  on(FlowPage).author_link_element.hover
-end
-
-When(/^I see a flow creator element$/) do
-  on(FlowPage).author_link_element.should be_visible
-end
-
-When(/^I type "(.+)" into the new topic content field$/) do |flow_body|
-  body_string = @data_manager.get flow_body
-  on(FlowPage).new_topic_body_element.when_present.send_keys(body_string)
-end
-
-When(/^I type "(.+)" into the new topic title field$/) do |flow_title|
-  on(FlowPage) do |page|
-    @topic_string = @data_manager.get flow_title
-    page.new_topic_title_element.when_present.click
-    page.new_topic_title_element.when_present.focus
-    page.new_topic_title_element.when_present.send_keys(@topic_string)
-  end
-end
-
-When(/I log out/) do
-  on(FlowPage) do |page|
-    page.logout
-    page.logout_element.when_not_visible
-  end
-end
-
-When(/^I visit the board history page$/) do
-  visit BoardHistoryPage
-  on(BoardHistoryPage).flow_board_history_element.when_present
-end
-
-When(/^I visit the topic history page$/) do
-  step 'I select History from the Actions menu'
-  on(TopicHistoryPage).flow_topic_history_element.when_present
-end
-
-When(/^I select History from the Actions menu$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_history_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-Then(/^I am on my user page$/) do
-  text = "User:#{user_label}"
-  expect(on(UserPage).first_heading_element.when_present.text).to match(text)
-end
-
-Then(/^I should see a Delete button$/) do
-  expect(on(FlowPage).delete_button_element).to be_visible
-end
-
-Then(/^I should see a Delete topic button$/) do
-  expect(on(FlowPage).topic_delete_button_element.when_present).to be_visible
-end
-
-Then(/^I should see a Hide button$/) do
-  expect(on(FlowPage).hide_button_element.when_present).to be_visible
-end
-
-Then(/^I should see a Hide topic button$/) do
-  expect(on(FlowPage).topic_hide_button_element.when_present).to be_visible
-end
-
-Then(/^I should see a Suppress button$/) do
-  expect(on(FlowPage).suppress_button_element).to be_visible
-end
-
-Then(/^I should see a Suppress topic button$/) do
-  expect(on(FlowPage).topic_suppress_button_element.when_present).to be_visible
-end
-
-Then(/^the block author link should not be visible$/) do
-  expect(on(FlowPage).usertools_block_user_link_element).not_to be_visible
-end
-
-Then(/^the block author link should be visible$/) do
-  expect(on(FlowPage).usertools_block_user_link_element.when_present).to 
be_visible
-end
-
-Then(/^the content of the top post should be visible$/) do
-  expect(on(FlowPage).flow_first_topic_body_element.when_present).to be_visible
-end
-
-Then(/^the content of the top post should not be visible$/) do
-  expect(on(FlowPage).flow_first_topic_body_element).not_to be_visible
-end
-
-Then(/^the Save New Topic button should be disabled$/) do
-  val = on(FlowPage).new_topic_save_element.attribute("disabled")
-  expect(val).to eq("true")
-end
-
-Then(/^the talk to author link should be visible$/) do
-  expect(on(FlowPage).usertools_talk_link_element.when_present).to be_visible
-end
-
-Then(/^the top post should have a heading which contains "(.+)"$/) do |text|
-  on(FlowPage) do |page|
-    page.wait_until do
-      actual_text = page.flow_first_topic_heading_element.when_present.text
-      actual_text.match text
-    end
-  end
-end
-
-Then(/^the top post should have content which contains "(.+)"$/) do |text|
-  expect(on(FlowPage).flow_first_topic_body).to match(text)
-end
-
-Then(/^the top post should not have a heading which contains "(.+)"$/) do 
|text|
-  expect(on(FlowPage).flow_first_topic_heading).not_to match(text)
-end
-
-Then(/^I see the topic "(.*?)" on the board$/) do |title|
-  full_title = @data_manager.get title
-  on(FlowPage).topic_with_title(full_title).when_present
-end
-
-Then(/^everybody sees the topic "(.*?)" on the board$/) do |title|
-  step 'I log out'
-  step 'I am on Flow page'
-  step "I see the topic \"#{title}\" on the board"
-end
-
-Then(/^I see the following entries in board history$/) do |table|
-  on(BoardHistoryPage) do |page|
-    table.hashes.each do |row|
-      action = row['action']
-      topic = @data_manager.get row['topic']
-      entry = %(#{action} "#{topic}")
-      expect(page.flow_board_history).to match(entry)
-    end
-  end
-end
-
-Then(/^I see the following entries in topic history$/) do |table|
-  on(TopicHistoryPage) do |page|
-    table.hashes.each do |row|
-      action = row['action']
-      topic = @data_manager.get row['topic']
-      entry = %(#{action} "#{topic}")
-      expect(page.flow_topic_history).to match(entry)
-    end
-  end
-end
-
-Then(/^I do not see the following entries in board history$/) do |table|
-  on(BoardHistoryPage) do |page|
-    table.hashes.each do |row|
-      action = row['action']
-      topic = @data_manager.get row['topic']
-      entry = %(#{action} "#{topic}")
-      expect(page.flow_board_history).to_not match(entry)
-    end
-  end
-end
-
-Then(/^I do not see the following entries in topic history$/) do |table|
-  on(TopicHistoryPage) do |page|
-    table.hashes.each do |row|
-      action = row['action']
-      topic = @data_manager.get row['topic']
-      entry = %(#{action} "#{topic}")
-      expect(page.flow_topic_history).to_not match(entry)
-    end
-  end
-end
diff --git a/tests/browser/features/step_definitions/moderation_steps.rb 
b/tests/browser/features/step_definitions/moderation_steps.rb
deleted file mode 100644
index 49b191f..0000000
--- a/tests/browser/features/step_definitions/moderation_steps.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-When(/^I cancel the dialog$/) do
-  on(FlowPage).dialog_cancel_element.when_present.click
-end
-
-When(/^I click Delete topic$/) do
-  on(FlowPage).dialog_submit_delete_element.when_present.click
-end
-
-When(/^I click Hide topic$/) do
-  on(FlowPage).dialog_submit_hide_element.when_present.click
-end
-
-When(/^I give reason for deletion as being "(.*?)"$/) do |delete_reason|
-  step "I type \"#{delete_reason}\" in the dialog box"
-end
-
-When(/^I give reason for hiding as being "(.*?)"$/) do |hide_reason|
-  step "I type \"#{hide_reason}\" in the dialog box"
-end
-
-When(/^I see a dialog box$/) do
-  on(FlowPage).dialog_element.when_present
-end
-
-When(/^I type "(.*?)" in the dialog box$/) do |text|
-  on(FlowPage).dialog_input_element.when_present.send_keys(text)
-end
-
-Then(/^I do not see the dialog box$/) do
-  on(FlowPage).dialog_element.when_not_present
-end
-
-Then(/^the top post should be marked as deleted$/) do
-  
expect(on(FlowPage).flow_first_topic_moderation_msg_element.when_present.text).to
 match("This topic has been deleted")
-end
diff --git a/tests/browser/features/step_definitions/new_topic_steps.rb 
b/tests/browser/features/step_definitions/new_topic_steps.rb
deleted file mode 100644
index aa96db0..0000000
--- a/tests/browser/features/step_definitions/new_topic_steps.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# This is like 'I have created a Flow topic with title', but doesn't
-# expect the input to be a one-to-one mapping to the output.  The
-# problematic sub-step of that is "topic \"#{title}\" is saved"
-Given(/^I have created a Flow topic containing the wikitext "(.+)"$/) do 
|title|
-  step "I type \"#{title}\" into the new topic title field"
-  step "I type \"#{title}\" into the new topic content field"
-  step "I click New topic save"
-end
-
-Then(/^there should be a link to the main page in the first topic title$/) do
-  on(FlowPage) do |page|
-    page.flow_first_topic_main_page_link_element.when_present
-  end
-end
-
-Then(/^there should be a red link in the first topic title$/) do
-  on(FlowPage) do |page|
-    page.flow_first_topic_red_link_element.when_present
-  end
-end
diff --git a/tests/browser/features/step_definitions/opt_in_steps.rb 
b/tests/browser/features/step_definitions/opt_in_steps.rb
deleted file mode 100644
index 600c5a0..0000000
--- a/tests/browser/features/step_definitions/opt_in_steps.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-
-Given(/^I am logged in as a new user$/) do
-  @username = @data_manager.get 'New_user'
-  puts "New user: #{@username}"
-  api.create_account @username, password
-  visit(LoginPage).login_with @username, password
-end
-
-When(/^I enable Flow beta feature$/) do
-  visit(SpecialPreferencesPage) do |page|
-    page.beta_features_element.when_present.click
-    page.check_flow_beta_feature
-    page.save_preferences
-    page.confirmation_element.when_present
-  end
-end
-
-Then(/^my talk page is a Flow board$/) do
-  visit(UserTalkPage, using_params: { username: @username }) do |page|
-    page.refresh_until { page.flow.board_element.visible? }
-  end
-end
-
-Given(/^my talk page has wikitext content$/) do
-  talk_page = "User_talk:#{@username}"
-  @talk_page_content = "this is the content of my talk page"
-  content = @talk_page_content
-  content += "\n{{template_before_first_heading}}"
-  content += "\n== this is the first section =="
-  content += "\n{{template_after_first_heading}}"
-  api.create_page talk_page, content
-end
-
-Then(/^my previous talk page is archived$/) do
-  archive_name = "./User_talk:#{@username}/Archive_1"
-  archive_template = 'This page is an archive.'
-  visit(WikiPage, using_params: { page: archive_name }) do |page|
-    expect(page.content_element.when_present.text).to match @talk_page_content
-    expect(page.content_element.when_present.text).to match archive_template
-
-    expect(page.content).to match 'This page is an archive.'
-    expect(page.content).to_not match 'Previous discussion was archived at'
-  end
-end
-
-Given(/^I have Flow beta feature enabled$/) do
-  step 'I enable Flow beta feature'
-end
-
-When(/^I disable Flow beta feature$/) do
-  visit(SpecialPreferencesPage) do |page|
-    page.beta_features_element.when_present.click
-    page.uncheck_flow_beta_feature
-    page.save_preferences
-    page.confirmation_element.when_present
-  end
-end
-
-Then(/^my wikitext talk page is restored$/) do
-  flow_archive_link = "User_talk:#{@username}/Flow_Archive_1".tr '_', ' '
-  visit(UserTalkPage, using_params: { username: @username }) do |page|
-    page.refresh_until do
-      page.content.match @talk_page_content
-    end
-    expect(page.content).to_not match 'This page is an archive.'
-    expect(page.content).to match 'Previous discussion was archived at'
-    expect(page.content).to match flow_archive_link
-  end
-end
-
-Then(/^my Flow board is archived$/) do
-  flow_archive_name = "./User_talk:#{@username}/Flow_Archive_1"
-  visit(WikiPage, using_params: { page: flow_archive_name }) do |page|
-    page.refresh_until { page.flow.board_element.visible? }
-    page.flow.board_element.when_present
-    expect(page.flow.header).to match 'This page is an archive.'
-    expect(page.flow.header).to_not match 'Previous discussion was archived at'
-  end
-end
-
-Given(/^I have used the Flow beta feature before$/) do
-  step 'my talk page has wikitext content'
-  step 'I enable Flow beta feature'
-  step 'my talk page is a Flow board'
-  @topic_title = @data_manager.get 'title'
-  api.action('flow', submodule: 'new-topic', page: "User_talk:#{@username}", 
nttopic: @topic_title, ntcontent: 'created via API')
-  step 'I disable Flow beta feature'
-  step 'my wikitext talk page is restored'
-end
-
-Then(/^my talk page is my old Flow board$/) do
-  archive_name = "User_talk:#{@username}/Archive_1".tr '_', ' '
-  visit(WikiPage, using_params: { page: "./User_talk:#{@username}" }) do |page|
-    page.refresh_until { page.flow.board_element.visible? }
-    page.flow.board_element.when_present
-
-    expect(page.flow.header).to match archive_name
-    expect(page.flow.header).to match 'Previous discussion was archived at'
-    expect(page.flow.header).to_not match 'This page is an archive.'
-  end
-end
-
-Then(/^my flow board contains a link to my archived talk page$/) do
-  archive_name = "User_talk:#{@username}/Archive_1".tr '_', ' '
-  visit(UserTalkPage, using_params: { username: @username }) do |page|
-    page.refresh_until { page.flow.board_element.visible? }
-    expect(page.flow.header).to match archive_name
-  end
-end
-
-Then(/^a notification tells me about it$/) do
-  visit(SpecialNotificationsPage) do |page|
-    expect(page.first_notification_element.when_present.text).to match 'New 
discussion system'
-  end
-end
-
-Then(/^my talk page is deleted without redirect$/) do
-  visit(UserTalkPage, using_params: { username: @username }) do |page|
-    page.content_element.when_present
-    expect(page.content).to match 'This page has been deleted.'
-    expect(page.content).to match 'without leaving a redirect'
-  end
-end
diff --git a/tests/browser/features/step_definitions/preload_steps.rb 
b/tests/browser/features/step_definitions/preload_steps.rb
deleted file mode 100644
index 4191889..0000000
--- a/tests/browser/features/step_definitions/preload_steps.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-Given(/^there is a page to preload content from$/) do
-  page_name = 'Preloaded_body_example'
-  @content_to_preload = 'this is the content of the preload page'
-  api.create_page page_name, @content_to_preload
-end
-
-When(/^I am on Flow page with the title and content preload parameters$/) do
-  @title = @data_manager.get 'new_topic_title'
-  visit(PreloadedFlowPage,
-        using_params: {
-          topiclist_preloadtitle: @title,
-          topiclist_preload: 'Preloaded_body_example'
-        })
-  step 'The Flow page is fully loaded'
-  step 'page has no ResourceLoader errors'
-end
-
-Then(/^the title is preloaded$/) do
-  on(AbstractFlowPage) do |page|
-    expect(page.new_topic_title).to eq @title
-  end
-end
-
-Then(/^the content is preloaded$/) do
-  on(AbstractFlowPage) do |page|
-    page.wait_until do
-      page.new_topic_body_element.when_present.text
-    end
-    expect(page.new_topic_body_element.when_present.text).to eq 
@content_to_preload
-  end
-end
-
-When(/^I am on Flow page with the title preload parameter$/) do
-  @title = @data_manager.get 'new_topic_title'
-  visit(PreloadedFlowPage, using_params: { topiclist_preloadtitle: @title })
-  step 'The Flow page is fully loaded'
-  step 'page has no ResourceLoader errors'
-end
-
-Then(/^the content is empty$/) do
-  on(AbstractFlowPage) do |page|
-    expect(page.new_topic_body_element.when_present.text).to eq ''
-  end
-end
-
-When(/^I am on Flow page with the content preload parameter$/) do
-  @title = @data_manager.get 'new_topic_title'
-  visit(PreloadedFlowPage, using_params: { topiclist_preload: 
'Preloaded_body_example' })
-  step 'The Flow page is fully loaded'
-  step 'page has no ResourceLoader errors'
-end
-
-Then(/^the title is empty$/) do
-  on(AbstractFlowPage) do |page|
-    expect(page.new_topic_title).to eq ''
-  end
-end
diff --git a/tests/browser/features/step_definitions/reply_moderation_steps.rb 
b/tests/browser/features/step_definitions/reply_moderation_steps.rb
deleted file mode 100644
index f11bf78..0000000
--- a/tests/browser/features/step_definitions/reply_moderation_steps.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-When(/^I click Hide comment button$/) do
-  on(FlowPage) do |page|
-    page.actions_link_hide_3rd_comment_element.when_present.focus
-    page.actions_link_hide_3rd_comment_element.click
-  end
-end
-
-When(/^I click the Hide button in the dialog$/) do
-  on(FlowPage) do |page|
-    page.dialog_submit_hide_element.click
-    page.dialog_submit_hide_element.when_not_present
-  end
-end
-
-When(/^I hide the second comment with reason "(.*?)"$/) do |reason|
-  on(FlowPage) do |page|
-    menu = page.second_post_actions_link_element
-    option = page.actions_link_hide_second_comment_element
-    page.select_menu_option menu, option
-  end
-  step "I type \"#{reason}\" in the dialog box"
-  step 'I click the Hide button in the dialog'
-end
-
-Then(/^the second comment should be marked as hidden$/) do
-  on(FlowPage) do |page|
-    page.second_post_element.when_present
-    expect(page.second_post_moderation_msg).to match('This comment was hidden')
-  end
-end
-
-Then(/^the content of the second comment should not be visible$/) do
-  expect(on(FlowPage).second_post_content_element).not_to be_visible
-end
diff --git a/tests/browser/features/step_definitions/reply_steps.rb 
b/tests/browser/features/step_definitions/reply_steps.rb
deleted file mode 100644
index 41b4f3a..0000000
--- a/tests/browser/features/step_definitions/reply_steps.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-Given(/^I am not watching my new Flow topic$/) do
-  on(FlowPage) do |page|
-    page.first_topic_unwatch_link_element.when_present.click
-    page.first_topic_watch_link_element.when_present
-  end
-end
-
-When(/^I reply with comment "(.*?)"$/) do |content|
-  on(FlowPage) do |page|
-    page.new_reply_save_element.when_not_present
-    page.first_reply_placeholder_element.when_present.click
-    page.new_reply_editor_element.when_present.send_keys(content)
-    page.new_reply_save_element.when_present.click
-    page.new_reply_save_element.when_not_present
-    page.flow_first_topic_element.paragraph_element(text: content).when_present
-  end
-end
-
-When(/^I start a reply with comment "(.*?)"$/) do |content|
-  on(FlowPage) do |page|
-    page.new_reply_save_element.when_not_present
-    page.new_reply_placeholder_element.when_present.click
-    page.new_reply_editor_element.send_keys(content)
-  end
-end
-
-Then(/^I should see an unwatch link on the topic$/) do
-  expect(on(FlowPage).first_topic_unwatch_link_element).to be_visible
-end
-
-Then(/^the top post's first reply should contain the text "(.+)"$/) do |text|
-  on(FlowPage) do |page|
-    page.new_reply_save_element.when_not_present
-    expect(page.first_reply_body).to match(text)
-  end
-end
-
-Then(/^I should see the topic reply form$/) do
-  on(FlowPage) do |page|
-    page.wait_until { page.new_reply_editor_element.visible? }
-    expect(page.new_reply_editor_element).to be_visible
-  end
-end
diff --git a/tests/browser/features/step_definitions/resolve_reopen_steps.rb 
b/tests/browser/features/step_definitions/resolve_reopen_steps.rb
deleted file mode 100644
index 3f0c681..0000000
--- a/tests/browser/features/step_definitions/resolve_reopen_steps.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-
-When(/^I mark the first topic as resolved$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_resolve_button_element
-    page.select_menu_option menu, option
-
-    # dismiss the menu
-    page.edit_summary_element.when_present.click
-    page.edit_summary_element.when_present.focus
-  end
-end
-
-When(/^I reopen the first topic$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_reopen_button_element
-    page.select_menu_option menu, option
-
-    # dismiss the menu
-    page.edit_summary_element.when_present.click
-    page.edit_summary_element.when_present.focus
-  end
-end
-
-When(/^I skip the summary$/) do
-  on(FlowPage) do |page|
-    page.skip_summary_button_element.when_present.click
-  end
-end
-
-Then(/^the first topic is resolved$/) do
-  on(FlowPage) do |page|
-    expect(page.first_topic_resolved_mark_element).to exist
-  end
-end
-
-Then(/^the first topic is open$/) do
-  on(FlowPage) do |page|
-    expect(page.first_topic_resolved_mark_element).not_to exist
-  end
-end
-
-When(/^I enter "(.*?)" as summary$/) do |summary_text|
-  on(FlowPage) do |page|
-    page.edit_summary_element.when_present.click
-    page.edit_summary_element.when_present.focus
-    page.edit_summary_element.when_present.clear
-    page.edit_summary_element.when_present.send_keys summary_text
-  end
-end
-
-When(/^I click the update summary button$/) do
-  on(FlowPage) do |page|
-    page.update_summary_button_element.when_present.click
-    page.summary_content_element.when_present
-  end
-end
-
-When(/^I click the summarize menu item$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_summarize_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I click the edit summary menu item$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_edit_summary_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-Then(/^the first topic is summarized as "(.*?)"$/) do |summary_text|
-  on(FlowPage) do |page|
-    expect(page.summary_content_element.when_present.text).to eq(summary_text)
-  end
-end
-
-When(/^I keep the summary$/) do
-  on(FlowPage) do |page|
-    page.update_summary_button_element.when_present.click
-  end
-end
-
-Then(/^the first topic is resolved with summary "(.*?)"$/) do |summary_text|
-  step 'the first topic is resolved'
-  step "the first topic is summarized as \"#{summary_text}\""
-end
-
-Given(/^I summarize the first topic as "(.*?)"$/) do |summary_text|
-  step 'I click the summarize menu item'
-  step "I enter \"#{summary_text}\" as summary"
-  step 'I click the update summary button'
-end
-
-Given(/^I re-summarize the first topic as "(.*?)"$/) do |summary_text|
-  step 'I click the edit summary menu item'
-  step "I enter \"#{summary_text}\" as summary"
-  step 'I click the update summary button'
-end
-
-When(/^I summarize as "(.*?)"$/) do |summary_text|
-  step "I enter \"#{summary_text}\" as summary"
-  step 'I click the update summary button'
-end
diff --git a/tests/browser/features/step_definitions/sorting_topics_steps.rb 
b/tests/browser/features/step_definitions/sorting_topics_steps.rb
deleted file mode 100644
index 3949d04..0000000
--- a/tests/browser/features/step_definitions/sorting_topics_steps.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-When(/^I sort by Newest topics$/) do
-  on(FlowPage) do |page|
-    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(/^it is sorted by Newest topics$/) do
-  on(FlowPage) do |page|
-    page.newest_topics_link_element.when_present
-  end
-end
-
-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(/^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
deleted file mode 100644
index 662510e..0000000
--- a/tests/browser/features/step_definitions/special_enable_flow_steps.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-Given(/^I navigate to enable flow page$/) do
-  visit(EnableFlowPage)
-end
-
-Given(/^I have an existing talk page$/) do
-  @new_board_page = @data_manager.get_talk 'Test_Prefilled_Random_Board'
-  content = "<p class=\"flow-test-archive-content\">Some wikitext here.</p>"
-  content += "\n\n{{template_before_first_heading}}"
-  content += "\n\n== this is the first section =="
-  content += "\n\n{{template_after_first_heading}}"
-  api.create_page @new_board_page, content
-end
-
-When(/^I enable a new Flow board on the talk page$/) do
-  step "I enable a new Flow board on article #{@new_board_page}"
-end
-
-When(/^I enable a new Flow board$/) do
-  @new_board_page = @data_manager.get_talk 'Test_Random_Board'
-  step "I enable a new Flow board on article #{@new_board_page}"
-end
-
-When(/^I enable a new Flow board on article (.*?)$/) do |article|
-  on(EnableFlowPage) do |page|
-    page.page_name_element.when_present.send_keys article
-    page.submit_element.when_present.click
-  end
-end
-
-When(/^I enable a new Flow board with a custom header$/) do
-  @new_board_page = @data_manager.get_talk 'Test_Random_Board'
-  @custom_header = @data_manager.get 'custom header'
-  on(EnableFlowPage) do |page|
-    page.page_name_element.when_present.send_keys @new_board_page
-    page.page_header_element.when_present.send_keys @custom_header
-    page.submit
-  end
-end
-
-Then(/^I get confirmation for enabling a new Flow board$/) do
-  on(EnableFlowConfirmationPage) do |page|
-    page.new_board_link.when_present
-    expect(page.new_board_link.text).to match(@new_board_page)
-  end
-end
-
-Then(/^I click on the new Flow board link$/) do
-  on(EnableFlowConfirmationPage).new_board_link.when_present.click
-end
-
-Then(/^The page I am on is a Flow board$/) do
-  expect(on(AbstractFlowPage).flow_board_element.when_present).to be_visible
-end
-
-Then(/^I click the archive link$/) do
-  on(AbstractFlowPage) do |page|
-    page.description.toggle_element.when_present.click unless 
page.description.content_element.visible?
-    page.description.archive_link_element.when_present.click
-  end
-end
-
-Then(/^The archive contains the original text$/) do
-  
expect(on(SpecialConversionFlowArchivePage).content_element.when_present.text).to
 match('Some wikitext here.')
-end
-
-Then(/^I see the custom header$/) do
-  on(AbstractFlowPage) do |page|
-    page.description.content_element.when_present.text.should match 
@custom_header
-  end
-end
-
-Then(/^the board description contains the templates from my talk page$/) do
-  on(AbstractFlowPage) do |page|
-    page.refresh_until { page.description.content_element.visible? }
-    description = page.description.content_element.when_present.text
-    expect(description).to match 'Template:Template before first heading'
-    expect(description).to_not match 'Template:Template after first heading'
-  end
-end
diff --git a/tests/browser/features/step_definitions/suppress_steps.rb 
b/tests/browser/features/step_definitions/suppress_steps.rb
deleted file mode 100644
index 067c327..0000000
--- a/tests/browser/features/step_definitions/suppress_steps.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-
-Given(/^I have suppressed and restored the first topic$/) do
-  step 'I suppress the first topic'
-  step 'I undo the suppression'
-end
-
-When(/^I click Suppress topic$/) do
-  on(FlowPage).dialog_submit_suppress_element.when_present.click
-end
-
-When(/^I undo the suppression$/) do
-  on(FlowPage) do |page|
-    page.undo_suppression_button_element.when_present.click
-    page.undo_suppression_button_element.when_not_visible
-  end
-end
-
-When(/^I select to suppress the first topic$/) do
-  on(FlowPage) do |page|
-    menu = page.topic_actions_link_element
-    option = page.topic_suppress_button_element
-    page.select_menu_option menu, option
-  end
-end
-
-When(/^I suppress the first topic with reason "(.*?)"$/) do |reason|
-  step 'I select to suppress the first topic'
-  step 'I see a dialog box'
-  step "I type \"#{reason}\" in the dialog box"
-  step 'I click Suppress topic'
-  step 'the top post should be marked as suppressed'
-end
-
-When(/^I suppress the first topic$/) do
-  step "I suppress the first topic with reason \"no reason given\""
-end
-
-Then(/^the top post should be marked as suppressed$/) do
-  
expect(on(FlowPage).flow_first_topic_moderation_msg_element.when_present.text).to
 match("This topic has been suppressed")
-end
diff --git a/tests/browser/features/step_definitions/thank_steps.rb 
b/tests/browser/features/step_definitions/thank_steps.rb
deleted file mode 100644
index fc537b0..0000000
--- a/tests/browser/features/step_definitions/thank_steps.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-Given(/^the "(.*?)" page has a new unmoderated topic created by me$/) do 
|title|
-  api.action('flow', submodule: 'new-topic', page: title, nttopic: 'Thank me 
please!', ntcontent: 'Hello')
-end
-
-Given(/^the most recent topic on "(.*?)" is written by another user$/) do 
|title|
-  as_user(:b) do
-    api.action('flow', submodule: 'new-topic', page: title, nttopic: 'Thank me 
please!', ntcontent: 'Hello')
-  end
-end
-
-When(/^I click on the Thank button$/) do
-  on(FlowPage).thank_button_element.click
-end
-
-When(/^I see a Thank button$/) do
-  on(FlowPage).thank_button_element.when_present
-end
-
-Then(/^I should not see a Thank button$/) do
-  expect(on(FlowPage).thank_button_element).not_to be_visible
-end
-
-Then(/^I should see the Thank button be replaced with Thanked button$/) do
-  on(FlowPage) do |page|
-    expect(page.thanked_button_element.when_present).to be_visible
-    expect(page.thank_button_element).not_to be_visible
-  end
-end
diff --git a/tests/browser/features/step_definitions/undo_actions.rb 
b/tests/browser/features/step_definitions/undo_actions.rb
deleted file mode 100644
index 95bc7cb..0000000
--- a/tests/browser/features/step_definitions/undo_actions.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-Given(/^I am on a Flow board "(.+)"$/) do |board_title|
-  visit(NewFlowPage, using_params: { pagetitle: board_title })
-end
-
-Given(/^I am on a new Flow board with description "(.*?)"$/) do |content|
-  @board_title = @data_manager.get 'Board_for_undo_actions'
-  api.action('flow',
-             submodule: 'edit-header',
-             page: 'Flow_test_talk:New_page_' + @board_title,
-             ehcontent: content,
-             ehformat: 'wikitext')
-  visit(NewFlowPage, using_params: { pagetitle: @board_title })
-end
-
-Given(/^I am on a new Flow board with topic content \"(.*?)\"$/) do |content|
-  @board_title = @data_manager.get 'Board_for_undo_actions'
-  topic_title = @data_manager.get 'Title_for_undo_actions'
-  api.action('flow',
-             submodule: 'new-topic',
-             page: 'Flow_test_talk:New_page_' + @board_title,
-             nttopic: topic_title,
-             ntcontent: content)
-  step "I am on a Flow board \"#{@board_title}\""
-  on(NewFlowPage) do |page|
-    page.refresh_until { page.topic_with_title(topic_title) }
-  end
-end
-
-When(/^I visit the new board history page$/) do
-  visit(BoardHistoryPage, using_params: { pagetitle: 
'Flow_test_talk:New_page_' + @board_title })
-  on(BoardHistoryPage).flow_board_history_element.when_present
-end
-
-Given(/^I edit the topic with \"(.*?)\"$/) do |content|
-  step "I select Edit post"
-  step "I edit the post field with \"#{content}\""
-  step "I save the new post"
-end
-
-When(/^I click undo$/) do
-  on(TopicHistoryPage) do |page|
-    page.undo_link_element.when_present.click
-  end
-end
-
-When(/^I am on a Flow page$/) do
-  on(AbstractFlowPage) do |page|
-    page.description.content_element.when_present
-  end
-end
-
-When(/^I am on a Flow diff page$/) do
-  on(FlowDiffPage) do |page|
-    page.editor_element.when_present
-  end
-end
-
-When(/^I undo the latest action$/) do
-  step "I click undo"
-  step "I am on a Flow diff page"
-  step "I save the undo post"
-end
-
-When(/^I am on a Flow topic page$/) do
-  on(AbstractFlowPage) do |page|
-    page.flow_first_topic_element.when_present
-  end
-end
-
-When(/^I save the undo post/) do
-  on(FlowDiffPage) do |page|
-    page.undo_post_save_element.when_present.click
-    page.undo_post_save_element.when_not_present
-  end
-end
-
-Then(/^the saved undo post should contain "(.+)"$/) do |undo_text|
-  expect(on(FlowPage).flow_first_topic_body_element.when_present.text).to 
match(undo_text)
-end
diff --git a/tests/browser/features/step_definitions/watch_steps.rb 
b/tests/browser/features/step_definitions/watch_steps.rb
deleted file mode 100644
index 3669fc7..0000000
--- a/tests/browser/features/step_definitions/watch_steps.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-Given(/^I am not watching the Flow board$/) do
-  on(FlowPage) do |page|
-    page.board_unwatch_link_element.when_present.click unless 
page.board_watch_link_element.visible?
-  end
-end
-
-Given(/^I am not watching the Flow topic$/) do
-  on(FlowPage).first_topic_unwatch_link_element.when_present.click
-end
-
-Given(/^I am watching the Flow topic$/) do
-  on(FlowPage).first_topic_unwatch_link_element.when_present
-end
-
-Given(/^I am watching the Flow board$/) do
-  on(FlowPage) do |page|
-    page.board_watch_link_element.when_present.click unless 
page.board_unwatch_link_element.visible?
-  end
-end
-
-When(/^I click the Unwatch Board link$/) do
-  on(FlowPage).board_unwatch_link_element.when_present.click
-end
-
-When(/^I click the Unwatch Topic link$/) do
-  on(FlowPage).first_topic_unwatch_link_element.when_present.click
-end
-
-When(/^I click the Watch Board link$/) do
-  on(FlowPage).board_watch_link_element.when_present.click
-end
-
-When(/^I click the Watch Topic link$/) do
-  on(FlowPage).first_topic_watch_link_element.when_present.click
-end
-
-Then(/^I should see the Unwatch Topic link$/) do
-  expect(on(FlowPage).first_topic_unwatch_link_element.when_present).to 
be_visible
-end
-
-Then(/^I should not see any watch links$/) do
-  on(FlowPage) do |page|
-    expect(page.board_watch_link_element).not_to be_visible
-    expect(page.first_topic_watch_link_element).not_to be_visible
-  end
-end
-
-Then(/^I should see the Unwatch Board link$/) do
-  on(FlowPage) do |page|
-    page.board_unwatch_link_element.when_present
-  end
-end
-
-Then(/^I should see the Watch Board link$/) do
-  expect(on(FlowPage).board_watch_link_element.when_present).to be_visible
-end
-
-Then(/^I should see the Watch Topic link$/) do
-  on(FlowPage) do |page|
-    page.first_topic_watch_link_element.when_present
-  end
-end
diff --git a/tests/browser/features/summarize.feature 
b/tests/browser/features/summarize.feature
deleted file mode 100644
index eaa93d7..0000000
--- a/tests/browser/features/summarize.feature
+++ /dev/null
@@ -1,13 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Summarize
-
-  Background:
-    Given there is a new topic
-    And I am logged in
-    And I am on Flow page
-
-  Scenario: Summarize a topic
-    When I summarize the first topic as "first summary version"
-    Then the first topic is summarized as "first summary version"
-    When I re-summarize the first topic as "second summary version"
-    Then the first topic is summarized as "second summary version"
diff --git a/tests/browser/features/support/components/board_description.rb 
b/tests/browser/features/support/components/board_description.rb
deleted file mode 100644
index e56b6f3..0000000
--- a/tests/browser/features/support/components/board_description.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-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')
-  div(:categories, class: 'flow-ui-categoriesWidget')
-
-  def editor_element
-    visualeditor_or_textarea editor_widget_element
-  end
-
-  def category_item(itemName)
-    categories_element.link_element(text: itemName)
-  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(text: /Archive/)
-  end
-end
diff --git a/tests/browser/features/support/components/flow_editor.rb 
b/tests/browser/features/support/components/flow_editor.rb
deleted file mode 100644
index 54edeef..0000000
--- a/tests/browser/features/support/components/flow_editor.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-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.when_enabled
-    else
-      parent.div_element(class: 've-ce-documentNode')
-    end
-  end
-end
diff --git a/tests/browser/features/support/data_manager.rb 
b/tests/browser/features/support/data_manager.rb
deleted file mode 100644
index 1cbbdf4..0000000
--- a/tests/browser/features/support/data_manager.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class DataManager
-  def initialize
-    @data = {}
-  end
-
-  def get(part)
-    @data[part] = "#{part}_#{Random.srand}" unless @data.key? part
-    @data[part]
-  end
-
-  def get_talk(part)
-    get "Talk:#{part}"
-  end
-end
diff --git a/tests/browser/features/support/env.rb 
b/tests/browser/features/support/env.rb
deleted file mode 100644
index 18ce345..0000000
--- a/tests/browser/features/support/env.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'mediawiki_selenium'
-
-require 'mediawiki_selenium/cucumber'
-require 'mediawiki_selenium/pages'
-require 'mediawiki_selenium/step_definitions'
-
-require_relative 'extensions'
-
-def env_or_default(key, default)
-  ENV[key].nil? ? default : ENV[key].to_i
-end
-
-PageObject.default_page_wait = env_or_default 'PAGE_WAIT_TIMEOUT', 10
-PageObject.default_element_wait = env_or_default 'ELEMENT_WAIT_TIMEOUT', 30
diff --git a/tests/browser/features/support/extensions.rb 
b/tests/browser/features/support/extensions.rb
deleted file mode 100644
index 10ef890..0000000
--- a/tests/browser/features/support/extensions.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require "watir/wait"
-
-module Watir
-  class Div
-    def clear
-      send_keys [:command, 'a'], :backspace
-      send_keys [:control, 'a'], :backspace
-    end
-  end
-
-  class TextArea
-    def enabled?
-      !disabled?
-    end
-
-    def text
-      value
-    end
-  end
-end
-
-module PageObject
-  def refresh_until(timeout = PageObject.default_page_wait, message = nil)
-    platform.wait_until(timeout, message) do
-      yield.tap do |result|
-        refresh unless result
-      end
-    end
-  end
-end
-
-module PageObject
-  module Elements
-    class TextArea
-      def when_enabled
-        wait_until { enabled? }
-        self
-      end
-    end
-
-    class TextField
-      def when_enabled
-        wait_until { enabled? }
-        self
-      end
-    end
-  end
-end
diff --git a/tests/browser/features/support/hooks.rb 
b/tests/browser/features/support/hooks.rb
deleted file mode 100644
index 2d9756d..0000000
--- a/tests/browser/features/support/hooks.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# Allow running of bundle exec cucumber --dry-run -f stepdefs
-require "mediawiki_selenium"
-require 'page-object'
-require_relative 'data_manager'
-
-Before { @data_manager = DataManager.new }
diff --git a/tests/browser/features/support/pages/abstract_flow_page.rb 
b/tests/browser/features/support/pages/abstract_flow_page.rb
deleted file mode 100644
index f1d9fd8..0000000
--- a/tests/browser/features/support/pages/abstract_flow_page.rb
+++ /dev/null
@@ -1,336 +0,0 @@
-class AbstractFlowPage
-  include PageObject
-  include FlowEditor
-
-  page_section(:description, BoardDescription, class: 'flow-board-header')
-
-  def select_menu_option(menu, option)
-    menu.when_present.click
-    wait_until { option.exists? }
-    option.scroll_into_view
-    menu.when_present.click
-    option.when_present.click
-  end
-
-  a(:logout, css: "#pt-logout a")
-
-  # board component
-  div(:flow_component, class: 'flow-component')
-  div(:flow_board, class: 'flow-board')
-
-  a(:author_link, css: ".flow-author a", index: 0)
-  a(:cancel_button, text: "Cancel")
-
-  # XXX (mattflaschen, 2014-06-24): This is broken; there is no
-  # flow-topic-reply-form anywhere in Flow outside this file.
-  # Also, this should be named to distinguish between top-level posts and 
regular replies.
-  textarea(:comment_field, css: 'form.flow-topic-reply-form > 
textarea[name="topic_content"]')
-  button(:comment_reply_save, css: "form.flow-topic-reply-form 
.flow-reply-submit")
-  div(:flow_topics, class: "flow-topics")
-
-  # Dialogs
-  div(:dialog, css: ".flow-ui-modal")
-  text_field(:dialog_input, name: "topic_reason")
-  button(:dialog_cancel, css: "a.mw-ui-destructive:nth-child(2)")
-  button(:dialog_submit_delete, text: "Delete")
-  button(:dialog_submit_hide, text: "Hide")
-  button(:dialog_submit_suppress, text: "Suppress")
-
-  # Posts
-  ## Highlighted post
-  div(:highlighted_post, css: ".flow-post-highlighted")
-
-  def topic_with_title(title)
-    h2_element(text: title)
-  end
-
-  ## First topic
-  div(:flow_first_topic, css: ".flow-topic", index: 0)
-  h2(:flow_first_topic_heading, css: ".flow-topic h2", index: 0)
-  # todo this is poor naming, it's really the first_topic_first_post_content
-  div(:flow_first_topic_body) do
-    div_element(class: "flow-topic", index: 0).div_element(class: 
'flow-post-content')
-  end
-  div(:flow_first_topic_moderation_msg) do |page|
-    page.flow_first_topic_element.div_element(css: "div.flow-topic-titlebar 
div.flow-moderated-topic-title")
-  end
-
-  ## First post with link HTML in topic title
-  a(:flow_first_topic_main_page_link) do
-    h2_element(css: ".flow-topic-title", index: 0).link_element(href: 
%r{/wiki/Main_Page})
-  end
-
-  a(:flow_first_topic_red_link) do
-    h2_element(css: ".flow-topic-title", index: 0).link_element(class: 'new')
-  end
-
-  div(:flow_first_topic_original_post, css: ".flow-post", index: 0)
-  a(:flow_first_topic_original_post_edit) do |page|
-    page.flow_first_topic_original_post_element.link_element(text: "Edit")
-  end
-  a(:flow_first_topic_original_post_reply) do |page|
-    page.flow_first_topic_original_post_element.link_element(text: "Reply")
-  end
-  div(:flow_second_topic_heading, css: ".flow-topic", index: 1)
-
-  ### Hover over username behaviour
-  span(:usertools, css: '.mw-usertoollinks')
-  a(:usertools_talk_link) do |page|
-    page.usertools_element.link_element(text: 'talk')
-  end
-  a(:usertools_block_user_link) do |page|
-    page.usertools_element.link_element(text: 'block')
-  end
-
-  ### First Topic actions menu
-
-  # For topic collapsing testing
-  # Works around CSS descendant selector problem 
(https://github.com/cheezy/page-object/issues/222)
-  div(:first_moderated_topic, css: '.flow-topic.flow-topic-moderated', index: 
0)
-
-  div(:first_moderated_topic_titlebar) do |page|
-    page.first_moderated_topic_element.div_element(css: '.flow-topic-titlebar')
-  end
-
-  div(:first_moderated_message) do |page|
-    page.first_moderated_topic_titlebar_element.div_element(css: 
'.flow-moderated-topic-title')
-  end
-
-  h2(:first_moderated_topic_title) do |page|
-    page.first_moderated_topic_titlebar_element.h2_element(class: 
'flow-topic-title')
-  end
-
-  div(:first_moderated_topic_post_content) do |page|
-    page.first_moderated_topic_element.div_element(class: 'flow-post', index: 
0).div_element(class: 'flow-post-main').div_element(class: 'flow-post-content')
-  end
-
-  # Topic actions menu (all belonging to the first post)
-  a(:topic_actions_link, css: ".flow-topic .flow-topic-titlebar 
.flow-menu-js-drop a", index: 0)
-  ul(:topic_actions_menu, css: ".flow-topic .flow-topic-titlebar .flow-menu 
ul", index: 0)
-  a(:topic_hide_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Hide topic")
-  end
-  a(:topic_history_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "History")
-  end
-  a(:topic_delete_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Delete topic")
-  end
-  a(:topic_suppress_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Suppress topic")
-  end
-  a(:permalink_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Permalink")
-  end
-  a(:edit_title_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Edit title")
-  end
-  a(:topic_resolve_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Mark as resolved")
-  end
-  a(:topic_reopen_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Reopen topic")
-  end
-  a(:topic_summarize_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Summarize")
-  end
-  a(:topic_edit_summary_button) do |page|
-    page.topic_actions_menu_element.link_element(text: "Edit the topic 
summary")
-  end
-
-  ### Editing title of first topic
-  text_field(:title_edit, css: ".flow-ui-topicTitleWidget-titleInput input", 
index: 0)
-  a(:change_title_save, css: ".flow-ui-topicTitleWidget-saveButton a")
-
-  ### Post meta actions
-  span(:post_meta_actions, css: ".flow-post .flow-post-meta-actions", index: 0)
-  a(:thank_button) do |page|
-    page.post_meta_actions_element.link_element(css: 
".mw-thanks-flow-thank-link", index: 0)
-  end
-  span(:thanked_button) do |page|
-    page.post_meta_actions_element.span_element(css: 
".mw-thanks-flow-thanked", index: 0)
-  end
-
-  ### summary of first topic
-  div(:summary) do |page|
-    page.flow_first_topic_element.div_element(css: '.flow-topic-summary')
-  end
-  div(:summary_content) do |page|
-    page.summary_element.div_element(css: '.flow-topic-summary-content')
-  end
-  link(:skip_summary_button, text: 'Skip summary')
-  link(:cancel_summary_button) do |page|
-    page.summary_element.link_element(text: 'Cancel')
-  end
-  link(:update_summary_button, text: 'Update summary')
-  def edit_summary_element
-    edit_summary_widget = div_element(class: 'flow-ui-editTopicSummaryWidget')
-    visualeditor_or_textarea edit_summary_widget
-  end
-  span(:first_topic_resolved_mark) do |page|
-    page.flow_first_topic_heading_element.span_element(css: 
'.mw-ui-icon-check')
-  end
-
-  ### First post of first topic actions menu
-  a(:post_actions_link, css: ".flow-topic .flow-post .flow-menu-js-drop a", 
index: 0)
-  ul(:post_actions_menu, css: ".flow-topic .flow-post .flow-menu ul", index: 0)
-  a(:permalink_button) do |page|
-    page.post_actions_menu_element.link_element(text: "Permalink")
-  end
-  a(:hide_button) do |page|
-    page.post_actions_menu_element.link_element(text: "Hide")
-  end
-  a(:delete_button) do |page|
-    page.post_actions_menu_element.link_element(text: "Delete")
-  end
-  a(:suppress_button) do |page|
-    page.post_actions_menu_element.link_element(text: "Suppress")
-  end
-  a(:edit_post_button) do |page|
-    page.post_actions_menu_element.link_element(text: "Edit")
-  end
-
-  ### Replies to top post
-  #### 1st reply
-  # @todo: This is broken. It should be clearly possible to distinguish 
between the top reply and
-  # the top post. There is an element .flow-replies which appears to be empty.
-  div(:first_reply, css: '.flow-post', index: 1)
-  div(:first_reply_body) do |page|
-    page.first_reply_element.div_element(css: '.flow-post-content')
-  end
-
-  #### 2rd post
-  div(:second_post, css: '.flow-post', index: 1)
-  a(:second_post_actions_link, css: ".flow-topic .flow-post .flow-menu-js-drop 
a", index: 1)
-  ul(:second_post_actions_menu, css: ".flow-topic .flow-post .flow-menu ul", 
index: 1)
-
-  a(:actions_link_permalink_second_comment) do |page|
-    page.second_post_actions_menu_element.link_element(text: "Permalink")
-  end
-
-  a(:actions_link_hide_second_comment) do |page|
-    page.second_post_actions_menu_element.link_element(text: "Hide")
-  end
-
-  div(:second_post_content) do |page|
-    page.second_post_element.div_element(css: '.flow-post-content', index: 0)
-  end
-  div(:second_post_moderation_msg) do |page|
-    page.second_post_element.span_element(css: '.flow-moderated-post-content', 
index: 0)
-  end
-
-  #### 3rd reply
-  # @todo: Should be index: 2, but sadly no way to distinguish replies from 
original post
-  div(:third_reply, css: '.flow-post', index: 3)
-  div(:third_reply_moderation_msg) do |page|
-    page.third_reply_element.span_element(css: '.flow-moderated-post-content', 
index: 0)
-  end
-  div(:third_reply_content) do |page|
-    page.third_reply_element.div_element(css: '.flow-post-content', index: 0)
-  end
-
-  a(:third_post_actions_link, css: ".flow-topic .flow-post .flow-menu-js-drop 
a", index: 3)
-  ul(:third_post_actions_menu, css: ".flow-topic .flow-post .flow-menu ul", 
index: 3)
-  a(:actions_link_permalink_3rd_comment) do |page|
-    page.third_post_actions_menu_element.link_element(text: "Permalink")
-  end
-  a(:actions_link_hide_3rd_comment) do |page|
-    page.third_post_actions_menu_element.link_element(text: "Hide")
-  end
-
-  # 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, css: ".flow-ui-newTopicWidget-title > input")
-
-  div(:new_topic_widget, class: 'flow-ui-newTopicWidget')
-  def new_topic_body_element
-    visualeditor_or_textarea new_topic_widget_element
-  end
-
-  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")
-
-  div(:first_reply_widget) do
-    flow_first_topic_element.div_element(class: 'flow-ui-replyWidget')
-  end
-
-  div(:first_reply_placeholder) do
-    first_reply_widget_element.text_field_element
-  end
-
-  def new_reply_editor_element
-    visualeditor_or_textarea first_reply_widget_element
-  end
-
-  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
-
-  div(:edit_post_widget, class: 'flow-ui-editPostWidget')
-  def post_edit_element
-    visualeditor_or_textarea edit_post_widget_element
-  end
-
-  button(:change_post_save) do
-    edit_post_widget_element.link_element(text: 'Save changes')
-  end
-
-  div(:small_spinner, class: "mw-spinner mw-spinner-small mw-spinner-inline")
-
-  # No javascript elements
-  button(:no_javascript_add_topic, text: "Add topic")
-  div(:no_javascript_page_content_body, class: "flow-post-content")
-  div(:no_javascript_page_content_title, class: "flow-topic-titlebar")
-  div(:no_javascript_page_flow_topics, class: "flow-topics")
-  button(:no_javascript_reply, text: "Reply")
-  textarea(:no_javascript_reply_form, name: "topic_content")
-  a(:no_javascript_start_reply, href: /action=reply/)
-  a(:no_javascript_start_topic, href: /action=new-topic/)
-  textarea(:no_javascript_topic_body_text, name: "topiclist_content")
-  text_field(:no_javascript_topic_title_text, name: "topiclist_topic")
-
-  # Sorting
-  div(:sorting, class: 'flow-ui-reorderTopicsWidget')
-  link(:newest_topics_link, text: "Newest topics")
-  link(:recently_active_topics_link, text: "Recently active topics")
-  span(:newest_topics_choice, text: "Newest topics")
-  span(:recently_active_topics_choice, text: "Recently active topics")
-
-  ## Watch and unwatch links
-  div(:first_topic_watchlist_container, css: ".flow-topic-watchlist", index: 0)
-  a(:first_topic_watch_link) do |page|
-    page.first_topic_watchlist_container_element.link_element(css: 
".flow-watch-link-watch")
-  end
-  a(:first_topic_unwatch_link) do |page|
-    page.first_topic_watchlist_container_element.link_element(css: 
".flow-watch-link-unwatch")
-  end
-
-  a(:board_unwatch_link, css: '#ca-unwatch a')
-  a(:board_watch_link, css: '#ca-watch a')
-
-  # undo suppression
-  button(:undo_suppression_button, text: "Undo")
-
-  # history
-  a(:view_history, text: 'View history')
-
-  div(:overlay, class: 'flow-ui-load-overlay')
-end
diff --git a/tests/browser/features/support/pages/board_history_page.rb 
b/tests/browser/features/support/pages/board_history_page.rb
deleted file mode 100644
index 0cbcbd3..0000000
--- a/tests/browser/features/support/pages/board_history_page.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class BoardHistoryPage
-  include PageObject
-
-  page_url "./<%=params[:pagetitle] ? params[:pagetitle] + '?action=history' : 
'Talk:Flow_QA?action=history' %>"
-
-  div(:flow_board_history, class: 'flow-board-history')
-
-  ul(:flow_board_history_moderation, class: 'flow-history-moderation-menu')
-
-  link(:undo_link) do
-    flow_board_history_moderation_element.link_element(text: /undo/)
-  end
-end
diff --git a/tests/browser/features/support/pages/flow_component.rb 
b/tests/browser/features/support/pages/flow_component.rb
deleted file mode 100644
index ac46bc4..0000000
--- a/tests/browser/features/support/pages/flow_component.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class FlowComponent
-  include PageObject
-
-  div(:board, class: 'flow-board')
-  div(:header, class: 'flow-ui-boardDescriptionWidget-content')
-end
diff --git a/tests/browser/features/support/pages/flow_diff_page.rb 
b/tests/browser/features/support/pages/flow_diff_page.rb
deleted file mode 100644
index cfb36d2..0000000
--- a/tests/browser/features/support/pages/flow_diff_page.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class FlowDiffPage
-  include PageObject
-  include FlowEditor
-
-  div(:editor_widget, class: 'flow-ui-editorWidget')
-
-  def editor_element
-    visualeditor_or_textarea editor_widget_element
-  end
-
-  button(:undo_post_save) do
-    editor_widget_element.link_element(css: 
'.flow-ui-editorControlsWidget-saveButton a')
-  end
-end
diff --git a/tests/browser/features/support/pages/flow_old_permalink_page.rb 
b/tests/browser/features/support/pages/flow_old_permalink_page.rb
deleted file mode 100644
index c689799..0000000
--- a/tests/browser/features/support/pages/flow_old_permalink_page.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class FlowOldPermalinkPage
-  include PageObject
-
-  page_url "Talk:Flow_QA?workflow=<%=params[:workflow_id]%>"
-end
diff --git a/tests/browser/features/support/pages/flow_page.rb 
b/tests/browser/features/support/pages/flow_page.rb
deleted file mode 100644
index 33b9476..0000000
--- a/tests/browser/features/support/pages/flow_page.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class FlowPage < AbstractFlowPage
-  page_url 'Talk:Flow_QA'
-  # MEDIAWIKI_URL must have this page as Flow.
-end
diff --git a/tests/browser/features/support/pages/new_flow_page.rb 
b/tests/browser/features/support/pages/new_flow_page.rb
deleted file mode 100644
index 0582e6b..0000000
--- a/tests/browser/features/support/pages/new_flow_page.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-
-class NewFlowPage < AbstractFlowPage
-  include PageObject
-
-  # MEDIAWIKI_URL must have Flow_test_talk as Flow in 
$wgNamespaceContentModels.
-  page_url "./Flow_test_talk:New_page_<%= params[:pagetitle] ? 
params[:pagetitle] : Random.srand.to_s %>"
-end
diff --git a/tests/browser/features/support/pages/preloaded_flow_page.rb 
b/tests/browser/features/support/pages/preloaded_flow_page.rb
deleted file mode 100644
index 7a746a6..0000000
--- a/tests/browser/features/support/pages/preloaded_flow_page.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class PreloadedFlowPage
-  include PageObject
-
-  page_url "Talk:Flow_QA?topiclist_preloadtitle=<%= 
params[:topiclist_preloadtitle] %>&topiclist_preload=<%= 
params[:topiclist_preload] %>"
-end
diff --git a/tests/browser/features/support/pages/recent_changes_page.rb 
b/tests/browser/features/support/pages/recent_changes_page.rb
deleted file mode 100644
index 7e0a7aa..0000000
--- a/tests/browser/features/support/pages/recent_changes_page.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class RecentChangesPage
-  include PageObject
-
-  page_url 'Special:RecentChanges'
-
-  div(:recent_changes, class: 'mw-changeslist')
-end
diff --git 
a/tests/browser/features/support/pages/special_enable_flow_archive_page.rb 
b/tests/browser/features/support/pages/special_enable_flow_archive_page.rb
deleted file mode 100644
index 80cf305..0000000
--- a/tests/browser/features/support/pages/special_enable_flow_archive_page.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class SpecialConversionFlowArchivePage
-  include PageObject
-  paragraph(:content, class: 'flow-test-archive-content')
-end
diff --git 
a/tests/browser/features/support/pages/special_enable_flow_confirmation_page.rb 
b/tests/browser/features/support/pages/special_enable_flow_confirmation_page.rb
deleted file mode 100644
index 8434fd6..0000000
--- 
a/tests/browser/features/support/pages/special_enable_flow_confirmation_page.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class EnableFlowConfirmationPage
-  include PageObject
-
-  div(:content_div, id: 'mw-content-text')
-  def new_board_link
-    content_div_element.link_element
-  end
-end
diff --git a/tests/browser/features/support/pages/special_enable_flow_page.rb 
b/tests/browser/features/support/pages/special_enable_flow_page.rb
deleted file mode 100644
index 4bfcc6d..0000000
--- a/tests/browser/features/support/pages/special_enable_flow_page.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class EnableFlowPage
-  include PageObject
-
-  page_url 'Special:EnableFlow'
-
-  # 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')
-
-  text_field(:page_name) do
-    page_name_div_element.text_field_element
-  end
-
-  text_area(:page_header) do
-    page_header_div_element.text_area_element
-  end
-
-  button(:submit) do
-    submit_button_div_element.button_element
-  end
-end
diff --git a/tests/browser/features/support/pages/special_notifications_page.rb 
b/tests/browser/features/support/pages/special_notifications_page.rb
deleted file mode 100644
index c477d25..0000000
--- a/tests/browser/features/support/pages/special_notifications_page.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class SpecialNotificationsPage
-  include PageObject
-
-  page_url "Special:Notifications"
-
-  div(:first_notification, class: 'mw-echo-ui-notificationItemWidget', index: 
0)
-end
diff --git a/tests/browser/features/support/pages/special_preferences_page.rb 
b/tests/browser/features/support/pages/special_preferences_page.rb
deleted file mode 100644
index 928bbcc..0000000
--- a/tests/browser/features/support/pages/special_preferences_page.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class SpecialPreferencesPage
-  include PageObject
-
-  page_url "Special:Preferences"
-
-  link(:beta_features, id: 'preftab-betafeatures')
-
-  checkbox(:flow_beta_feature, name: 'wpbeta-feature-flow-user-talk-page')
-
-  button(:save_preferences, id: 'prefcontrol')
-
-  div(:confirmation, text: 'Your preferences have been saved.')
-end
diff --git a/tests/browser/features/support/pages/topic_history_page.rb 
b/tests/browser/features/support/pages/topic_history_page.rb
deleted file mode 100644
index c1b18a3..0000000
--- a/tests/browser/features/support/pages/topic_history_page.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class TopicHistoryPage
-  include PageObject
-
-  div(:flow_topic_history, class: 'flow-topic-histories')
-
-  ul(:flow_history_moderation, class: 'flow-history-moderation-menu')
-
-  link(:undo_link) do
-    flow_history_moderation_element.link_element(text: /undo/)
-  end
-end
diff --git a/tests/browser/features/support/pages/user_page.rb 
b/tests/browser/features/support/pages/user_page.rb
deleted file mode 100644
index 6a2ecec..0000000
--- a/tests/browser/features/support/pages/user_page.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class UserPage
-  include PageObject
-
-  h1(:first_heading, id: "firstHeading")
-end
diff --git a/tests/browser/features/support/pages/user_talk_page.rb 
b/tests/browser/features/support/pages/user_talk_page.rb
deleted file mode 100644
index 7ea50e1..0000000
--- a/tests/browser/features/support/pages/user_talk_page.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require_relative 'wiki_page'
-
-class UserTalkPage < WikiPage
-  include PageObject
-
-  page_url "./User_talk:<%= params[:username]%>"
-end
diff --git a/tests/browser/features/support/pages/wiki_page.rb 
b/tests/browser/features/support/pages/wiki_page.rb
deleted file mode 100644
index 42817fb..0000000
--- a/tests/browser/features/support/pages/wiki_page.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class WikiPage
-  include PageObject
-
-  page_url "<%=params[:page]%>"
-
-  a(:logout, css: "#pt-logout a")
-  div(:content, id: 'mw-content-text')
-  page_section(:flow, FlowComponent, class: 'flow-component')
-end
diff --git a/tests/browser/features/suppress.feature 
b/tests/browser/features/suppress.feature
deleted file mode 100644
index 23310a2..0000000
--- a/tests/browser/features/suppress.feature
+++ /dev/null
@@ -1,80 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Suppress
-
-  Assumes Flow is enabled on Talk:Flow_QA
-
-  Background:
-    Given I am logged in
-
-  Scenario: Suppressing a topic
-    Given there is a new topic with title "suppress-topic"
-    And I am on Flow page
-    When I suppress the first topic with reason "I suppress you"
-    Then the top post should be marked as suppressed
-
-  Scenario: Restoring a topic
-    Given there is a new topic with title "suppress-restore-topic"
-    And I am on Flow page
-    When I suppress the first topic with reason "I suppress you temporarily"
-    And I undo the suppression
-    Then I see the topic "suppress-restore-topic" on the board
-    And everybody sees the topic "suppress-restore-topic" on the board
-
-  Scenario: A suppressed topic is not in board history
-    Given there is a new topic with title "suppress-not-in-history"
-    And I am on Flow page
-    And I suppress the first topic
-    When I visit the board history page
-    Then I see the following entries in board history
-        |action              |topic                  |
-        |suppressed the topic|suppress-not-in-history|
-    And I do not see the following entries in board history
-        |action              |topic                  |
-        |commented on        |suppress-not-in-history|
-    When I log out
-    And I visit the board history page
-    Then I do not see the following entries in board history
-        |action              |topic                  |
-        |suppressed the topic|suppress-not-in-history|
-        |commented on        |suppress-not-in-history|
-
-  Scenario: A suppressed and restored topic is in board history
-    Given there is a new topic with title "suppress-restore-in-history"
-    And I am on Flow page
-    And I have suppressed and restored the first topic
-    When I visit the board history page
-    Then I see the following entries in board history
-        |action              |topic                      |
-        |restored the topic  |suppress-restore-in-history|
-        |suppressed the topic|suppress-restore-in-history|
-        |commented on        |suppress-restore-in-history|
-    When I log out
-    And I visit the board history page
-    Then I see the following entries in board history
-        |action              |topic                      |
-        |commented on        |suppress-restore-in-history|
-    Then I do not see the following entries in board history
-        |action              |topic                      |
-        |restored the topic  |suppress-restore-in-history|
-        |suppressed the topic|suppress-restore-in-history|
-
-  Scenario: A suppressed and restored topic is in topic history
-    Given there is a new topic with title "suppress-restore-in-history"
-    And I am on Flow page
-    And I have suppressed and restored the first topic
-    When I visit the topic history page
-    Then I see the following entries in topic history
-        |action              |topic                      |
-        |restored the topic  |suppress-restore-in-history|
-        |suppressed the topic|suppress-restore-in-history|
-        |commented on        |suppress-restore-in-history|
-    When I log out
-    And I am on Flow page
-    And I visit the topic history page
-    Then I see the following entries in topic history
-        |action              |topic                      |
-        |commented on        |suppress-restore-in-history|
-    Then I do not see the following entries in topic history
-        |action              |topic                      |
-        |restored the topic  |suppress-restore-in-history|
-        |suppressed the topic|suppress-restore-in-history|
diff --git a/tests/browser/features/thank.feature 
b/tests/browser/features/thank.feature
deleted file mode 100644
index 8440433..0000000
--- a/tests/browser/features/thank.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Thank author of a Flow post
-
-  Scenario: Anon does not see Thank button
-    Given there is a new topic
-    When I am on Flow page
-    Then I should not see a Thank button
-
-  Scenario: Thank the user
-    Given I am logged in
-    And the most recent topic on "Talk:Flow QA" is written by another user
-    And I am on Flow page
-    When I click on the Thank button
-    Then I should see the Thank button be replaced with Thanked button
-
-  Scenario: I cannot thank my own post
-    Given there is a new topic created by me
-    And I am logged in
-    When I am on Flow page
-    Then I should not see a Thank button
diff --git a/tests/browser/features/undo.feature 
b/tests/browser/features/undo.feature
deleted file mode 100644
index 05366c6..0000000
--- a/tests/browser/features/undo.feature
+++ /dev/null
@@ -1,21 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Undoing edits
-
-  Background:
-    Given I am logged in
-
-  Scenario: Undo an edit to a post
-    Given I am on a new Flow board with topic content "This is the original 
content"
-    And I edit the topic with "This is the edited content"
-    When I visit the topic history page
-    And I undo the latest action
-    Then I am on a Flow topic page
-    And the saved undo post should contain "This is the original content"
-
-  Scenario: Undo an edit to the description
-    Given I am on a new Flow board with description "This is the original 
content"
-    And I set the description to "This is the edited content"
-    And I visit the new board history page
-    When I undo the latest action
-    Then I am on a Flow page
-    And the description should be "This is the original content"
diff --git a/tests/browser/features/watch.feature 
b/tests/browser/features/watch.feature
deleted file mode 100644
index d8d9e58..0000000
--- a/tests/browser/features/watch.feature
+++ /dev/null
@@ -1,37 +0,0 @@
-@chrome @en.wikipedia.beta.wmflabs.org @firefox @skip
-Feature: Watching/Unwatching Boards and Topics
-
-  Background:
-    Given there is a new topic
-
-  Scenario: Watch topic
-    Given I am logged in
-    And I am on Flow page
-    And I am not watching the Flow topic
-    When I click the Watch Topic link
-    Then I should see the Unwatch Topic link
-
-  Scenario: Unwatch topic
-    Given I am logged in
-    And I am on Flow page
-    And I am watching the Flow topic
-    When I click the Unwatch Topic link
-    Then I should see the Watch Topic link
-
-  Scenario: Watch board
-    Given I am logged in
-    And I am on Flow page
-    And I am not watching the Flow board
-    When I click the Watch Board link
-    Then I should see the Unwatch Board link
-
-  Scenario: Unwatch board
-    Given I am logged in
-    And I am on Flow page
-    And I am watching the Flow board
-    When I click the Unwatch Board link
-    Then I should see the Watch Board link
-
-  Scenario: No watch links for anonymous users
-    When I am on Flow page
-    Then I should not see any watch links

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I236fc83557290323c5168ec1292084624be64f56
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: Jforrester <jforres...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to