diff --git a/.travis.yml b/.travis.yml
index 65527331128a0d6050e11108579a4d8762c69525..9bab337f336541a553d415a6c8eadf36e899bdf8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,10 +5,12 @@ env:
   matrix:
     - TASK=spinach DB=mysql
     - TASK=spec:api DB=mysql
+    - TASK=spec:feature DB=mysql
     - TASK=spec:other DB=mysql
     - TASK=jasmine:ci DB=mysql
     - TASK=spinach DB=postgresql
     - TASK=spec:api DB=postgresql
+    - TASK=spec:feature DB=postgresql
     - TASK=spec:other DB=postgresql
     - TASK=jasmine:ci DB=postgresql
 before_install:
diff --git a/lib/tasks/spec.rake b/lib/tasks/spec.rake
index b760a607f7e1432a6d2ce9e2499e29cd54dee208..49fbe1bd47ae7f19b0240e9734d4283f93bb9c70 100644
--- a/lib/tasks/spec.rake
+++ b/lib/tasks/spec.rake
@@ -1,7 +1,7 @@
 Rake::Task["spec"].clear if Rake::Task.task_defined?('spec')
 
 namespace :spec do
-  desc 'GITLAB | Run feature specs'
+  desc 'GITLAB | Run request specs'
   task :api do
     cmds = [
       %W(rake gitlab:setup),
@@ -10,11 +10,20 @@ namespace :spec do
     run_commands(cmds)
   end
 
+  desc 'GITLAB | Run feature specs'
+  task :feature do
+    cmds = [
+      %W(rake gitlab:setup),
+      %W(rspec spec --tag @feature)
+    ]
+    run_commands(cmds)
+  end
+
   desc 'GITLAB | Run other specs'
   task :other do
     cmds = [
       %W(rake gitlab:setup),
-      %W(rspec spec --tag ~@api)
+      %W(rspec spec --tag ~@api --tag ~@feature)
     ]
     run_commands(cmds)
   end
diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb
index 102a1b928f58a3b9020a4aa156ff6c6cf310f289..120448ae3352378357cb964b187a04dfecd5101d 100644
--- a/spec/features/admin/admin_hooks_spec.rb
+++ b/spec/features/admin/admin_hooks_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Admin::Hooks" do
+describe "Admin::Hooks", feature: true do
   before do
     @project = create(:project)
     login_as :admin
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
index 233708912446cf5a6380123816ecfde39b440a7d..3b3d027ab75c6f440fcc017f8c4c97c4f2c3abb1 100644
--- a/spec/features/admin/admin_projects_spec.rb
+++ b/spec/features/admin/admin_projects_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Admin::Projects" do
+describe "Admin::Projects", feature: true  do
   before do
     @project = create(:project)
     login_as :admin
diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb
index 8d69b595aee80cce5a6cb444f004410b90e52087..1aba40966c471e99ec3b3ac2031d70f6c70cf3b6 100644
--- a/spec/features/admin/admin_users_spec.rb
+++ b/spec/features/admin/admin_users_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Admin::Users" do
+describe "Admin::Users", feature: true  do
   before { login_as :admin }
 
   describe "GET /admin/users" do
diff --git a/spec/features/admin/security_spec.rb b/spec/features/admin/security_spec.rb
index 6306832628b8ba6aac2bbcd6b197d501341bccc9..21b0d8b965eeff3dae60d04f5c5ecc8a12ae2b15 100644
--- a/spec/features/admin/security_spec.rb
+++ b/spec/features/admin/security_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Admin::Projects" do
+describe "Admin::Projects", feature: true  do
   describe "GET /admin/projects" do
     subject { admin_projects_path }
 
diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb
index 62f4469034957ba42d745337117e8660ec9d07ab..9fd2933b2cc97063ca68db976b45d4bbfeb88abf 100644
--- a/spec/features/atom/dashboard_issues_spec.rb
+++ b/spec/features/atom/dashboard_issues_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Dashboard Issues Feed" do
+describe "Dashboard Issues Feed", feature: true  do
   describe "GET /issues" do
     let!(:user)     { create(:user) }
     let!(:project1) { create(:project) }
diff --git a/spec/features/atom/dashboard_spec.rb b/spec/features/atom/dashboard_spec.rb
index 6257ad5c8958018eb3c30f9216e1745023f0f4a7..e5d9f8ab5d5c7ac3e5f16ebb1e56e5353a06aa2e 100644
--- a/spec/features/atom/dashboard_spec.rb
+++ b/spec/features/atom/dashboard_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Dashboard Feed" do
+describe "Dashboard Feed", feature: true  do
   describe "GET /" do
     let!(:user) { create(:user) }
 
diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb
index c9bbdad380f54c6232183ba308b55115389e16d0..6ff03ec862cf3ddd8e208f285ae94f8ee4c71249 100644
--- a/spec/features/atom/issues_spec.rb
+++ b/spec/features/atom/issues_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Issues Feed" do
+describe "Issues Feed", feature: true  do
   describe "GET /issues" do
     let!(:user)     { create(:user) }
     let!(:project)  { create(:project) }
diff --git a/spec/features/gitlab_flavored_markdown_spec.rb b/spec/features/gitlab_flavored_markdown_spec.rb
index 07be6b81441110157845a93fe88902a88f4e3efe..9f50d1c97384666afbb7d0e8764258596788ae68 100644
--- a/spec/features/gitlab_flavored_markdown_spec.rb
+++ b/spec/features/gitlab_flavored_markdown_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "GitLab Flavored Markdown", features: true do
+describe "GitLab Flavored Markdown", feature: true do
   let(:project) { create(:project) }
   let(:issue) { create(:issue, project: project) }
   let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index b9dab7846b17096c2ef61cc6817acbdd8a644fd8..e62517ad710ea56132a443c3657b9cb7ef18766b 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Issues" do
+describe "Issues", feature: true do
   let(:project) { create(:project) }
 
   before do
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index 25a86b11fa9d9a3cdb0b50b2d700e3b0def0db2a..cfb6deb1834eb931a61ce73960002323a65b0f9d 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "On a merge request", js: true do
+describe "On a merge request", js: true, feature: true do
   let!(:merge_request) { create(:merge_request, :simple) }
   let!(:project) { merge_request.source_project }
   let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb
index b67ce3c67f187b23e4996d1932796bb279e6eec8..e8364bbb96290c395b2ae6590fcdf881aa4e6125 100644
--- a/spec/features/profile_spec.rb
+++ b/spec/features/profile_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Profile account page" do
+describe "Profile account page", feature: true do
   before(:each) { enable_observers }
   after(:each) {disable_observers}
   let(:user) { create(:user) }
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index 9d5f9d5a2e244fedd44fbbd78a9ead4544eb564a..1e24782c39ae0f46c45e12d5fcb4edb0287492af 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Projects" do
+describe "Projects", feature: true  do
   before(:each) { enable_observers }
   after(:each) {disable_observers}
   before { login_as :user }
diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb
index 3ca59da493bfff0bb5785cc2020b8d9ba0399f7f..f12eb124296e863ea9736062183cf4ef9d00ffa3 100644
--- a/spec/features/search_spec.rb
+++ b/spec/features/search_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Search" do
+describe "Search", feature: true  do
   before do
     ActiveRecord::Base.observers.enable(:user_observer)
     login_as :user
diff --git a/spec/features/security/dashboard_access_spec.rb b/spec/features/security/dashboard_access_spec.rb
index adec5926c6f68bb629faa841651625d72f6e2f78..1cca82cef64316f5fcf92b7030527667e18955a3 100644
--- a/spec/features/security/dashboard_access_spec.rb
+++ b/spec/features/security/dashboard_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Dashboard access" do
+describe "Dashboard access", feature: true  do
   describe "GET /dashboard" do
     subject { dashboard_path }
 
diff --git a/spec/features/security/group/group_access_spec.rb b/spec/features/security/group/group_access_spec.rb
index c262d76ab54446231da1d6da2c9358bce9715ed7..b65e1d2dbf687c66b03c497c17c4dd08b95291ca 100644
--- a/spec/features/security/group/group_access_spec.rb
+++ b/spec/features/security/group/group_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Group access" do
+describe "Group access", feature: true  do
   describe "GET /projects/new" do
     it { new_group_path.should be_allowed_for :admin }
     it { new_group_path.should be_allowed_for :user }
diff --git a/spec/features/security/group/internal_group_access_spec.rb b/spec/features/security/group/internal_group_access_spec.rb
index 79a6aee41b58de6c0b7f313f167ec3012dfb21cf..da5c6eb4e911811ac6c6feaa07377f7c36075101 100644
--- a/spec/features/security/group/internal_group_access_spec.rb
+++ b/spec/features/security/group/internal_group_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Group with internal project access" do
+describe "Group with internal project access", feature: true  do
   describe "Group" do
     let(:group) { create(:group) }
 
diff --git a/spec/features/security/group/mixed_group_access_spec.rb b/spec/features/security/group/mixed_group_access_spec.rb
index 028cd32d2bbf1d50a94435e410c9b60d7e075962..c9889d99590c2f07febcf00f3b33812f97479fe2 100644
--- a/spec/features/security/group/mixed_group_access_spec.rb
+++ b/spec/features/security/group/mixed_group_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Group access" do
+describe "Group access", feature: true  do
   describe "Group" do
     let(:group) { create(:group) }
 
diff --git a/spec/features/security/group/public_group_access_spec.rb b/spec/features/security/group/public_group_access_spec.rb
index f0ed7649eb5b74e68721807a2170542a9d97d631..2e76ab154ff13dec8d7ad65862ccc0657cf9a66f 100644
--- a/spec/features/security/group/public_group_access_spec.rb
+++ b/spec/features/security/group/public_group_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Group with public project access" do
+describe "Group with public project access", feature: true  do
   describe "Group" do
     let(:group) { create(:group) }
 
diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb
index 078c257538fe197666ef7210a0c1808fb7f5e769..4efc0ffdcd3844a9b1978a60acaa27413cd484a9 100644
--- a/spec/features/security/profile_access_spec.rb
+++ b/spec/features/security/profile_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Users Security" do
+describe "Users Security", feature: true  do
   describe "Project" do
     before do
       @u1 = create(:user)
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index 152cf66dcfda57c3ff9ea09800982c639f23858a..f6ab47ed91ba90f2bdf22946bf1957f681117ea3 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Internal Project Access" do
+describe "Internal Project Access", feature: true  do
   let(:project) { create(:project, :internal) }
 
   let(:master) { create(:user) }
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index 0402ff3973528b433f6384b7b0e995872eec07e3..8a0fcb8e9fffae71633dc58da2ed2b3ed2bf2467 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Private Project Access" do
+describe "Private Project Access", feature: true  do
   let(:project) { create(:project) }
 
   let(:master)   { create(:user) }
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index 7e6a39fad69faa0c640ce3993f5330b0985ac7e9..eb511bfefe02b8ecf01b8acde6b6eda72da0c7e5 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Public Project Access" do
+describe "Public Project Access", feature: true  do
   let(:project) { create(:project) }
 
   let(:master) { create(:user) }
diff --git a/spec/features/users_spec.rb b/spec/features/users_spec.rb
index ed9e44fb47e1d79fdca3e2bfd004d2a55a1787c7..7b831c48611f67a675796eba5670a1777070198c 100644
--- a/spec/features/users_spec.rb
+++ b/spec/features/users_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe 'Users' do
+describe 'Users', feature: true do
   describe "GET /users/sign_up" do
     before do
       Gitlab.config.gitlab.stub(:signup_enabled).and_return(true)