diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb
index a1975c0e341cc04d64ddee8f75d264e61bfa17f7..984d5398708403ffe930f913c094f206bbbab23d 100644
--- a/app/controllers/admin/projects_controller.rb
+++ b/app/controllers/admin/projects_controller.rb
@@ -40,14 +40,14 @@ class Admin::ProjectsController < Admin::ApplicationController
     ::Projects::TransferService.new(@project, current_user, params.dup).execute(namespace)
 
     @project.reload
-    redirect_to admin_namespace_project_path(@project.namespace, @project)
+    redirect_to admin_project_path(@project)
   end
 
   def repository_check
     RepositoryCheck::SingleRepositoryWorker.perform_async(@project.id)
 
     redirect_to(
-      admin_namespace_project_path(@project.namespace, @project),
+      admin_project_path(@project),
       notice: 'Repository check was triggered.'
     )
   end
diff --git a/app/controllers/concerns/creates_commit.rb b/app/controllers/concerns/creates_commit.rb
index f87db4d9e846237832e282ec964c168259926f4a..782f0be9c4afa380a7dd0b273b526d40b747907c 100644
--- a/app/controllers/concerns/creates_commit.rb
+++ b/app/controllers/concerns/creates_commit.rb
@@ -78,8 +78,7 @@ module CreatesCommit
   end
 
   def new_merge_request_path
-    namespace_project_new_merge_request_path(
-      @project_to_commit_into.namespace,
+    project_new_merge_request_path(
       @project_to_commit_into,
       merge_request: {
         source_project_id: @project_to_commit_into.id,
@@ -91,7 +90,7 @@ module CreatesCommit
   end
 
   def existing_merge_request_path
-    namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
+    project_merge_request_path(@project, @merge_request)
   end
 
   def merge_request_exists?
diff --git a/app/controllers/concerns/milestone_actions.rb b/app/controllers/concerns/milestone_actions.rb
index 1ff785ac2ca259b3a4a081488abbb4e2ba9be265..081f33367801e6e9f1df1d1043d83087f0814b75 100644
--- a/app/controllers/concerns/milestone_actions.rb
+++ b/app/controllers/concerns/milestone_actions.rb
@@ -45,7 +45,7 @@ module MilestoneActions
 
   def milestone_redirect_path
     if @project
-      namespace_project_milestone_path(@project.namespace, @project, @milestone)
+      project_milestone_path(@project, @milestone)
     elsif @group
       group_milestone_path(@group, @milestone.safe_title, title: @milestone.title)
     else
diff --git a/app/controllers/concerns/repository_settings_redirect.rb b/app/controllers/concerns/repository_settings_redirect.rb
index 0854c73a02fec2df6526d9c3ad09525c20ff8a90..0576f0e6e7043e2d5e5286b942e3fd884d88ad5d 100644
--- a/app/controllers/concerns/repository_settings_redirect.rb
+++ b/app/controllers/concerns/repository_settings_redirect.rb
@@ -2,6 +2,6 @@ module RepositorySettingsRedirect
   extend ActiveSupport::Concern
 
   def redirect_to_repository_settings(project)
-    redirect_to namespace_project_settings_repository_path(project.namespace, project)
+    redirect_to project_settings_repository_path(project)
   end
 end
diff --git a/app/controllers/concerns/spammable_actions.rb b/app/controllers/concerns/spammable_actions.rb
index b68d76aeff0591eba73d9833f6f68789770bf38b..ada0dde87fb6350306d1d4d6dc0be814270592b8 100644
--- a/app/controllers/concerns/spammable_actions.rb
+++ b/app/controllers/concerns/spammable_actions.rb
@@ -9,9 +9,9 @@ module SpammableActions
 
   def mark_as_spam
     if SpamService.new(spammable).mark_as_spam!
-      redirect_to spammable, notice: "#{spammable.spammable_entity_type.titlecase} was submitted to Akismet successfully."
+      redirect_to spammable_path, notice: "#{spammable.spammable_entity_type.titlecase} was submitted to Akismet successfully."
     else
-      redirect_to spammable, alert: 'Error with Akismet. Please check the logs for more info.'
+      redirect_to spammable_path, alert: 'Error with Akismet. Please check the logs for more info.'
     end
   end
 
@@ -25,7 +25,7 @@ module SpammableActions
 
   def recaptcha_check_with_fallback(&fallback)
     if spammable.valid?
-      redirect_to spammable
+      redirect_to spammable_path
     elsif render_recaptcha?
       ensure_spam_config_loaded!
 
@@ -56,6 +56,10 @@ module SpammableActions
     raise NotImplementedError, "#{self.class} does not implement #{__method__}"
   end
 
+  def spammable_path
+    raise NotImplementedError, "#{self.class} does not implement #{__method__}"
+  end
+
   def authorize_submit_spammable!
     access_denied! unless current_user.admin?
   end
diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb
index 7625187c7beccb7efc5e25f6029d26859b4e22bd..0982a61902bbff98667a8cb2d7bc4c1cc31e7379 100644
--- a/app/controllers/invites_controller.rb
+++ b/app/controllers/invites_controller.rb
@@ -63,7 +63,7 @@ class InvitesController < ApplicationController
     when Project
       project = member.source
       label = "project #{project.name_with_namespace}"
-      path = namespace_project_path(project.namespace, project)
+      path = project_path(project)
     when Group
       group = member.source
       label = "group #{group.name}"
diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb
index 3d7ce4f0222a8af27165b58738e11fad4e513ff6..95de3a446414f8d41cc9fe95d2288e51af35c674 100644
--- a/app/controllers/projects/application_controller.rb
+++ b/app/controllers/projects/application_controller.rb
@@ -76,13 +76,13 @@ class Projects::ApplicationController < ApplicationController
   def require_non_empty_project
     # Be sure to return status code 303 to avoid a double DELETE:
     # http://api.rubyonrails.org/classes/ActionController/Redirecting.html
-    redirect_to namespace_project_path(@project.namespace, @project), status: 303 if @project.empty_repo?
+    redirect_to project_path(@project), status: 303 if @project.empty_repo?
   end
 
   def require_branch_head
     unless @repository.branch_exists?(@ref)
       redirect_to(
-        namespace_project_tree_path(@project.namespace, @project, @ref),
+        project_tree_path(@project, @ref),
         notice: "This action is not allowed unless you are on a branch"
       )
     end
diff --git a/app/controllers/projects/artifacts_controller.rb b/app/controllers/projects/artifacts_controller.rb
index ea036b1f70541f2d9b61c49c87e5cc6f453aab51..f637a9a803bea85108c79b283151b6343c2f6f03 100644
--- a/app/controllers/projects/artifacts_controller.rb
+++ b/app/controllers/projects/artifacts_controller.rb
@@ -46,7 +46,7 @@ class Projects::ArtifactsController < Projects::ApplicationController
 
   def keep
     build.keep_artifacts!
-    redirect_to namespace_project_job_path(project.namespace, project, build)
+    redirect_to project_job_path(project, build)
   end
 
   def latest_succeeded
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index a82d6fd5a4ae011e5aa29b7e7ea00e5419fe76ed..49ea2945675f105587453559faa00b30897d46d6 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -27,9 +27,9 @@ class Projects::BlobController < Projects::ApplicationController
 
   def create
     create_commit(Files::CreateService, success_notice: "The file has been successfully created.",
-                                        success_path: -> { namespace_project_blob_path(@project.namespace, @project, File.join(@branch_name, @file_path)) },
+                                        success_path: -> { project_blob_path(@project, File.join(@branch_name, @file_path)) },
                                         failure_view: :new,
-                                        failure_path: namespace_project_new_blob_path(@project.namespace, @project, @ref))
+                                        failure_path: project_new_blob_path(@project, @ref))
   end
 
   def show
@@ -63,7 +63,7 @@ class Projects::BlobController < Projects::ApplicationController
     @path = params[:file_path] if params[:file_path].present?
     create_commit(Files::UpdateService, success_path: -> { after_edit_path },
                                         failure_view: :edit,
-                                        failure_path: namespace_project_blob_path(@project.namespace, @project, @id))
+                                        failure_path: project_blob_path(@project, @id))
 
   rescue Files::UpdateService::FileChangedError
     @conflict = true
@@ -83,9 +83,9 @@ class Projects::BlobController < Projects::ApplicationController
 
   def destroy
     create_commit(Files::DeleteService, success_notice: "The file has been successfully deleted.",
-                                        success_path: -> { namespace_project_tree_path(@project.namespace, @project, @branch_name) },
+                                        success_path: -> { project_tree_path(@project, @branch_name) },
                                         failure_view: :show,
-                                        failure_path: namespace_project_blob_path(@project.namespace, @project, @id))
+                                        failure_path: project_blob_path(@project, @id))
   end
 
   def diff
@@ -118,7 +118,7 @@ class Projects::BlobController < Projects::ApplicationController
     else
       if tree = @repository.tree(@commit.id, @path)
         if tree.entries.any?
-          return redirect_to namespace_project_tree_path(@project.namespace, @project, File.join(@ref, @path))
+          return redirect_to project_tree_path(@project, File.join(@ref, @path))
         end
       end
 
@@ -143,10 +143,10 @@ class Projects::BlobController < Projects::ApplicationController
   def after_edit_path
     from_merge_request = MergeRequestsFinder.new(current_user, project_id: @project.id).execute.find_by(iid: params[:from_merge_request_iid])
     if from_merge_request && @branch_name == @ref
-      diffs_namespace_project_merge_request_path(from_merge_request.target_project.namespace, from_merge_request.target_project, from_merge_request) +
+      diffs_project_merge_request_path(from_merge_request.target_project, from_merge_request) +
         "##{hexdigest(@path)}"
     else
-      namespace_project_blob_path(@project.namespace, @project, File.join(@branch_name, @path))
+      project_blob_path(@project, File.join(@branch_name, @path))
     end
   end
 
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index 94a752c21eb7cc670bf37b708f2382f4cbdc01cf..8605853117905ee7155c7c8bd7d4c825fa149fca 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -52,7 +52,7 @@ class Projects::BranchesController < Projects::ApplicationController
             redirect_to url_to_autodeploy_setup(project, branch_name),
               notice: view_context.autodeploy_flash_notice(branch_name)
           else
-            redirect_to namespace_project_tree_path(@project.namespace, @project, branch_name)
+            redirect_to project_tree_path(@project, branch_name)
           end
         else
           @error = result[:message]
@@ -62,7 +62,7 @@ class Projects::BranchesController < Projects::ApplicationController
 
       format.json do
         if result[:status] == :success
-          render json: { name: branch_name, url: namespace_project_tree_url(@project.namespace, @project, branch_name) }
+          render json: { name: branch_name, url: project_tree_url(@project, branch_name) }
         else
           render json: result[:messsage], status: :unprocessable_entity
         end
@@ -79,7 +79,7 @@ class Projects::BranchesController < Projects::ApplicationController
         flash_type = result[:status] == :error ? :alert : :notice
         flash[flash_type] = result[:message]
 
-        redirect_to namespace_project_branches_path(@project.namespace, @project), status: 303
+        redirect_to project_branches_path(@project), status: 303
       end
 
       format.js { render nothing: true, status: result[:return_code] }
@@ -90,7 +90,7 @@ class Projects::BranchesController < Projects::ApplicationController
   def destroy_all_merged
     DeleteMergedBranchesService.new(@project, current_user).async_execute
 
-    redirect_to namespace_project_branches_path(@project.namespace, @project),
+    redirect_to project_branches_path(@project),
       notice: 'Merged branches are being deleted. This can take some time depending on the number of branches. Please refresh the page to see changes.'
   end
 
@@ -106,8 +106,7 @@ class Projects::BranchesController < Projects::ApplicationController
   end
 
   def url_to_autodeploy_setup(project, branch_name)
-    namespace_project_new_blob_path(
-      project.namespace,
+    project_new_blob_path(
       project,
       branch_name,
       file_name: '.gitlab-ci.yml',
diff --git a/app/controllers/projects/build_artifacts_controller.rb b/app/controllers/projects/build_artifacts_controller.rb
index f34a198634e7f30fb1a5be1894c25a569087475e..b45e5d7ff43a67c1c1f3bcbe7a4de5f0a3dc544e 100644
--- a/app/controllers/projects/build_artifacts_controller.rb
+++ b/app/controllers/projects/build_artifacts_controller.rb
@@ -7,23 +7,23 @@ class Projects::BuildArtifactsController < Projects::ApplicationController
   before_action :validate_artifacts!
 
   def download
-    redirect_to download_namespace_project_job_artifacts_path(project.namespace, project, job)
+    redirect_to download_project_job_artifacts_path(project, job)
   end
 
   def browse
-    redirect_to browse_namespace_project_job_artifacts_path(project.namespace, project, job, path: params[:path])
+    redirect_to browse_project_job_artifacts_path(project, job, path: params[:path])
   end
 
   def file
-    redirect_to file_namespace_project_job_artifacts_path(project.namespace, project, job, path: params[:path])
+    redirect_to file_project_job_artifacts_path(project, job, path: params[:path])
   end
 
   def raw
-    redirect_to raw_namespace_project_job_artifacts_path(project.namespace, project, job, path: params[:path])
+    redirect_to raw_project_job_artifacts_path(project, job, path: params[:path])
   end
 
   def latest_succeeded
-    redirect_to latest_succeeded_namespace_project_artifacts_path(project.namespace, project, job, ref_name_and_path: params[:ref_name_and_path], job: params[:job])
+    redirect_to latest_succeeded_project_artifacts_path(project, job, ref_name_and_path: params[:ref_name_and_path], job: params[:job])
   end
 
   private
diff --git a/app/controllers/projects/builds_controller.rb b/app/controllers/projects/builds_controller.rb
index 1334a231788bc74cc63e09d821c50403dd9b26ae..230b072dcea365092a0e5a68e5fbf34a4788ca9a 100644
--- a/app/controllers/projects/builds_controller.rb
+++ b/app/controllers/projects/builds_controller.rb
@@ -2,15 +2,15 @@ class Projects::BuildsController < Projects::ApplicationController
   before_action :authorize_read_build!
 
   def index
-    redirect_to namespace_project_jobs_path(project.namespace, project)
+    redirect_to project_jobs_path(project)
   end
 
   def show
-    redirect_to namespace_project_job_path(project.namespace, project, job)
+    redirect_to project_job_path(project, job)
   end
 
   def raw
-    redirect_to raw_namespace_project_job_path(project.namespace, project, job)
+    redirect_to raw_project_job_path(project, job)
   end
 
   private
diff --git a/app/controllers/projects/commit_controller.rb b/app/controllers/projects/commit_controller.rb
index 7c3cce1c24119950815fdcac97112a2cd8ed0f00..14a1e11a6ea350955b280264e828f3f08a7512d1 100644
--- a/app/controllers/projects/commit_controller.rb
+++ b/app/controllers/projects/commit_controller.rb
@@ -80,16 +80,16 @@ class Projects::CommitController < Projects::ApplicationController
   end
 
   def successful_change_path
-    referenced_merge_request_url || namespace_project_commits_url(@project.namespace, @project, @branch_name)
+    referenced_merge_request_url || project_commits_url(@project, @branch_name)
   end
 
   def failed_change_path
-    referenced_merge_request_url || namespace_project_commit_url(@project.namespace, @project, params[:id])
+    referenced_merge_request_url || project_commit_url(@project, params[:id])
   end
 
   def referenced_merge_request_url
     if merge_request = @commit.merged_merge_request(current_user)
-      namespace_project_merge_request_url(merge_request.target_project.namespace, merge_request.target_project, merge_request)
+      project_merge_request_url(merge_request.target_project, merge_request)
     end
   end
 
diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb
index ef400c4d7455bb9098a1e74c0bbf961e10a3ffe4..c8613c0d63476d210562c2bfd6c569e8448da92a 100644
--- a/app/controllers/projects/compare_controller.rb
+++ b/app/controllers/projects/compare_controller.rb
@@ -31,9 +31,9 @@ class Projects::CompareController < Projects::ApplicationController
         from: params[:from].presence,
         to: params[:to].presence
       }
-      redirect_to namespace_project_compare_index_path(@project.namespace, @project, from_to_vars)
+      redirect_to project_compare_index_path(@project, from_to_vars)
     else
-      redirect_to namespace_project_compare_path(@project.namespace, @project,
+      redirect_to project_compare_path(@project,
                                                params[:from], params[:to])
     end
   end
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index f88a1ffd1e93765b0a6431ebf3409556291b3c00..919d021b59c3d437a4eb3589434d93a66ac56863 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -63,7 +63,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
     @environment = project.environments.create(environment_params)
 
     if @environment.persisted?
-      redirect_to namespace_project_environment_path(project.namespace, project, @environment)
+      redirect_to project_environment_path(project, @environment)
     else
       render :new
     end
@@ -71,7 +71,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
 
   def update
     if @environment.update(environment_params)
-      redirect_to namespace_project_environment_path(project.namespace, project, @environment)
+      redirect_to project_environment_path(project, @environment)
     else
       render :edit
     end
@@ -86,7 +86,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
       if stop_action
         polymorphic_url([project.namespace.becomes(Namespace), project, stop_action])
       else
-        namespace_project_environment_url(project.namespace, project, @environment)
+        project_environment_url(project, @environment)
       end
 
     respond_to do |format|
diff --git a/app/controllers/projects/forks_controller.rb b/app/controllers/projects/forks_controller.rb
index 1eb3800e49da42364169888e4e00f270ea5c1b08..3f83bef2c799c98a7de3f7a6b8605006e98d66fb 100644
--- a/app/controllers/projects/forks_controller.rb
+++ b/app/controllers/projects/forks_controller.rb
@@ -44,12 +44,12 @@ class Projects::ForksController < Projects::ApplicationController
 
     if @forked_project.saved? && @forked_project.forked?
       if @forked_project.import_in_progress?
-        redirect_to namespace_project_import_path(@forked_project.namespace, @forked_project, continue: continue_params)
+        redirect_to project_import_path(@forked_project, continue: continue_params)
       else
         if continue_params
           redirect_to continue_params[:to], notice: continue_params[:notice]
         else
-          redirect_to namespace_project_path(@forked_project.namespace, @forked_project), notice: "The project '#{@forked_project.name}' was successfully forked."
+          redirect_to project_path(@forked_project), notice: "The project '#{@forked_project.name}' was successfully forked."
         end
       end
     else
diff --git a/app/controllers/projects/graphs_controller.rb b/app/controllers/projects/graphs_controller.rb
index df5221fe95f2762550444b440ba38a7ea123745b..57372f9e79d1f4fee8157f79909bb77925350af6 100644
--- a/app/controllers/projects/graphs_controller.rb
+++ b/app/controllers/projects/graphs_controller.rb
@@ -29,7 +29,7 @@ class Projects::GraphsController < Projects::ApplicationController
   end
 
   def ci
-    redirect_to charts_namespace_project_pipelines_path(@project.namespace, @project)
+    redirect_to charts_project_pipelines_path(@project)
   end
 
   private
diff --git a/app/controllers/projects/group_links_controller.rb b/app/controllers/projects/group_links_controller.rb
index deb33a2f0ff22b1dfac7ceee240fc2d033803a09..8fc614b414db7e1f2ea640edead107f148709dfd 100644
--- a/app/controllers/projects/group_links_controller.rb
+++ b/app/controllers/projects/group_links_controller.rb
@@ -22,7 +22,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
       flash[:alert] = 'Please select a group.'
     end
 
-    redirect_to namespace_project_settings_members_path(project.namespace, project)
+    redirect_to project_settings_members_path(project)
   end
 
   def update
@@ -36,7 +36,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
 
     respond_to do |format|
       format.html do
-        redirect_to namespace_project_settings_members_path(project.namespace, project), status: 302
+        redirect_to project_settings_members_path(project), status: 302
       end
       format.js { head :ok }
     end
diff --git a/app/controllers/projects/hook_logs_controller.rb b/app/controllers/projects/hook_logs_controller.rb
index 354f0d6db3a356ba7ebc9723a1d68d9ff1541769..b9c4b29580abae943ad7499d06425f86e778981a 100644
--- a/app/controllers/projects/hook_logs_controller.rb
+++ b/app/controllers/projects/hook_logs_controller.rb
@@ -18,7 +18,7 @@ class Projects::HookLogsController < Projects::ApplicationController
 
     set_hook_execution_notice(status, message)
 
-    redirect_to edit_namespace_project_hook_path(@project.namespace, @project, @hook)
+    redirect_to edit_project_hook_path(@project, @hook)
   end
 
   private
diff --git a/app/controllers/projects/hooks_controller.rb b/app/controllers/projects/hooks_controller.rb
index f51432801545c225d6a75ce1a4850f492e94d13e..18895c3f0f3e32300b039a6775ae7603e2dce280 100644
--- a/app/controllers/projects/hooks_controller.rb
+++ b/app/controllers/projects/hooks_controller.rb
@@ -17,7 +17,7 @@ class Projects::HooksController < Projects::ApplicationController
       @hooks = @project.hooks.select(&:persisted?)
       flash[:alert] = @hook.errors.full_messages.join.html_safe
     end
-    redirect_to namespace_project_settings_integrations_path(@project.namespace, @project)
+    redirect_to project_settings_integrations_path(@project)
   end
 
   def edit
@@ -26,7 +26,7 @@ class Projects::HooksController < Projects::ApplicationController
   def update
     if hook.update_attributes(hook_params)
       flash[:notice] = 'Hook was successfully updated.'
-      redirect_to namespace_project_settings_integrations_path(@project.namespace, @project)
+      redirect_to project_settings_integrations_path(@project)
     else
       render 'edit'
     end
@@ -47,7 +47,7 @@ class Projects::HooksController < Projects::ApplicationController
   def destroy
     hook.destroy
 
-    redirect_to namespace_project_settings_integrations_path(@project.namespace, @project), status: 302
+    redirect_to project_settings_integrations_path(@project), status: 302
   end
 
   private
diff --git a/app/controllers/projects/imports_controller.rb b/app/controllers/projects/imports_controller.rb
index 4b143434ea5ba700f152619fbcf1934c40439e24..49aa32119eff9ad76add9ad1fd80a0b2d547232e 100644
--- a/app/controllers/projects/imports_controller.rb
+++ b/app/controllers/projects/imports_controller.rb
@@ -17,7 +17,7 @@ class Projects::ImportsController < Projects::ApplicationController
       @project.reload.import_schedule
     end
 
-    redirect_to namespace_project_import_path(@project.namespace, @project)
+    redirect_to project_import_path(@project)
   end
 
   def show
@@ -25,10 +25,10 @@ class Projects::ImportsController < Projects::ApplicationController
       if continue_params
         redirect_to continue_params[:to], notice: continue_params[:notice]
       else
-        redirect_to namespace_project_path(@project.namespace, @project), notice: finished_notice
+        redirect_to project_path(@project), notice: finished_notice
       end
     elsif @project.import_failed?
-      redirect_to new_namespace_project_import_path(@project.namespace, @project)
+      redirect_to new_project_import_path(@project)
     else
       if continue_params && continue_params[:notice_now]
         flash.now[:notice] = continue_params[:notice_now]
@@ -50,19 +50,19 @@ class Projects::ImportsController < Projects::ApplicationController
 
   def require_no_repo
     if @project.repository_exists?
-      redirect_to namespace_project_path(@project.namespace, @project)
+      redirect_to project_path(@project)
     end
   end
 
   def redirect_if_progress
     if @project.import_in_progress?
-      redirect_to namespace_project_import_path(@project.namespace, @project)
+      redirect_to project_import_path(@project)
     end
   end
 
   def redirect_if_no_import
     if @project.repository_exists? && @project.no_import?
-      redirect_to namespace_project_path(@project.namespace, @project)
+      redirect_to project_path(@project)
     end
   end
 end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index 54f108353cdca13c0bb58e32fa3c8f282cbe3a47..c9e636fb65ed9ab51b755e12260fea7b8b243cf3 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -238,6 +238,10 @@ class Projects::IssuesController < Projects::ApplicationController
   alias_method :awardable, :issue
   alias_method :spammable, :issue
 
+  def spammable_path
+    project_issue_path(@project, @issue)
+  end
+
   def authorize_update_issue!
     return render_404 unless can?(current_user, :update_issue, @issue)
   end
diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb
index cb4f46388fdc0f1c63f17811837fd5073623d64a..96abdac91b63187569f15ecc2d3b13ab09e42b81 100644
--- a/app/controllers/projects/jobs_controller.rb
+++ b/app/controllers/projects/jobs_controller.rb
@@ -38,7 +38,7 @@ class Projects::JobsController < Projects::ApplicationController
       build.cancel if can?(current_user, :update_build, build)
     end
 
-    redirect_to namespace_project_jobs_path(project.namespace, project)
+    redirect_to project_jobs_path(project)
   end
 
   def show
@@ -108,7 +108,7 @@ class Projects::JobsController < Projects::ApplicationController
 
   def erase
     if @build.erase(erased_by: current_user)
-      redirect_to namespace_project_job_path(project.namespace, project, @build),
+      redirect_to project_job_path(project, @build),
                 notice: "Build has been successfully erased!"
     else
       respond_422
@@ -137,6 +137,6 @@ class Projects::JobsController < Projects::ApplicationController
   end
 
   def build_path(build)
-    namespace_project_job_path(build.project.namespace, build.project, build)
+    project_job_path(build.project, build)
   end
 end
diff --git a/app/controllers/projects/labels_controller.rb b/app/controllers/projects/labels_controller.rb
index daa973c9281dbcc88aec5c4be0e95daaa269dd7b..480a2dff262ff7c321d6039dd43ae038a4eadcf8 100644
--- a/app/controllers/projects/labels_controller.rb
+++ b/app/controllers/projects/labels_controller.rb
@@ -33,7 +33,7 @@ class Projects::LabelsController < Projects::ApplicationController
 
     if @label.valid?
       respond_to do |format|
-        format.html { redirect_to namespace_project_labels_path(@project.namespace, @project) }
+        format.html { redirect_to project_labels_path(@project) }
         format.json { render json: @label }
       end
     else
@@ -51,7 +51,7 @@ class Projects::LabelsController < Projects::ApplicationController
     @label = Labels::UpdateService.new(label_params).execute(@label)
 
     if @label.valid?
-      redirect_to namespace_project_labels_path(@project.namespace, @project)
+      redirect_to project_labels_path(@project)
     else
       render :edit
     end
@@ -61,12 +61,11 @@ class Projects::LabelsController < Projects::ApplicationController
     Gitlab::IssuesLabels.generate(@project)
 
     if params[:redirect] == 'issues'
-      redirect_to namespace_project_issues_path(@project.namespace, @project)
+      redirect_to project_issues_path(@project)
     elsif params[:redirect] == 'merge_requests'
-      redirect_to namespace_project_merge_requests_path(@project.namespace,
-                                                        @project)
+      redirect_to project_merge_requests_path(@project)
     else
-      redirect_to namespace_project_labels_path(@project.namespace, @project)
+      redirect_to project_labels_path(@project)
     end
   end
 
@@ -74,7 +73,7 @@ class Projects::LabelsController < Projects::ApplicationController
     @label.destroy
     @labels = find_labels
 
-    redirect_to namespace_project_labels_path(@project.namespace, @project),
+    redirect_to project_labels_path(@project),
                 status: 302,
                 notice: 'Label was removed'
   end
@@ -114,7 +113,7 @@ class Projects::LabelsController < Projects::ApplicationController
       return render_404 unless promote_service.execute(@label)
       respond_to do |format|
         format.html do
-          redirect_to(namespace_project_labels_path(@project.namespace, @project),
+          redirect_to(project_labels_path(@project),
                       notice: 'Label was promoted to a Group Label')
         end
         format.js
@@ -125,7 +124,7 @@ class Projects::LabelsController < Projects::ApplicationController
 
       respond_to do |format|
         format.html do
-          redirect_to(namespace_project_labels_path(@project.namespace, @project),
+          redirect_to(project_labels_path(@project),
                       notice: 'Failed to promote label due to internal error. Please contact administrators.')
         end
         format.js
diff --git a/app/controllers/projects/mattermosts_controller.rb b/app/controllers/projects/mattermosts_controller.rb
index 38f7e6eb5e9a4d64910524f9dfbd032009d75e0a..0f6add3e28790317bae06e408d726b8076eb04b8 100644
--- a/app/controllers/projects/mattermosts_controller.rb
+++ b/app/controllers/projects/mattermosts_controller.rb
@@ -16,12 +16,10 @@ class Projects::MattermostsController < Projects::ApplicationController
 
     if result
       flash[:notice] = 'This service is now configured'
-      redirect_to edit_namespace_project_service_path(
-        @project.namespace, @project, service)
+      redirect_to edit_project_service_path(@project, service)
     else
       flash[:alert] = message || 'Failed to configure service'
-      redirect_to new_namespace_project_mattermost_path(
-        @project.namespace, @project)
+      redirect_to new_project_mattermost_path(@project)
     end
   end
 
diff --git a/app/controllers/projects/merge_requests/conflicts_controller.rb b/app/controllers/projects/merge_requests/conflicts_controller.rb
index a71f23e790d829c6e0e63b4f79ace96411ae891d..28afef101a95ee6e0a13494f9e119844ae0cd59f 100644
--- a/app/controllers/projects/merge_requests/conflicts_controller.rb
+++ b/app/controllers/projects/merge_requests/conflicts_controller.rb
@@ -52,7 +52,7 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap
 
       flash[:notice] = 'All merge conflicts were resolved. The merge request can now be merged.'
 
-      render json: { redirect_to: namespace_project_merge_request_url(@project.namespace, @project, @merge_request, resolved_conflicts: true) }
+      render json: { redirect_to: project_merge_request_url(@project, @merge_request, resolved_conflicts: true) }
     rescue Gitlab::Conflict::ResolutionError => e
       render status: :bad_request, json: { message: e.message }
     end
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 04f8e95aa090fdbb72202a5d209054e7533f7ea1..a573b3925912290f34013d95d86e4105ad09887a 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -211,21 +211,18 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
 
           stop_url =
             if environment.stop_action? && can?(current_user, :create_deployment, environment)
-              stop_namespace_project_environment_path(project.namespace, project, environment)
+              stop_project_environment_path(project, environment)
             end
 
           metrics_url =
             if can?(current_user, :read_environment, environment) && environment.has_metrics?
-              metrics_namespace_project_environment_deployment_path(environment.project.namespace,
-                                                                    environment.project,
-                                                                    environment,
-                                                                    deployment)
+              metrics_project_environment_deployment_path(environment.project, environment, deployment)
             end
 
           {
             id: environment.id,
             name: environment.name,
-            url: namespace_project_environment_path(project.namespace, project, environment),
+            url: project_environment_path(project, environment),
             metrics_url: metrics_url,
             stop_url: stop_url,
             external_url: environment.external_url,
diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb
index 953b1e83e492fa3766c4c5863694c799543d2dd7..a80562e77ce05fd7a584cf4e6b30e651e14373c8 100644
--- a/app/controllers/projects/milestones_controller.rb
+++ b/app/controllers/projects/milestones_controller.rb
@@ -51,8 +51,7 @@ class Projects::MilestonesController < Projects::ApplicationController
     @milestone = Milestones::CreateService.new(project, current_user, milestone_params).execute
 
     if @milestone.save
-      redirect_to namespace_project_milestone_path(@project.namespace,
-                                                   @project, @milestone)
+      redirect_to project_milestone_path(@project, @milestone)
     else
       render "new"
     end
@@ -65,8 +64,7 @@ class Projects::MilestonesController < Projects::ApplicationController
       format.js
       format.html do
         if @milestone.valid?
-          redirect_to namespace_project_milestone_path(@project.namespace,
-                                                   @project, @milestone)
+          redirect_to project_milestone_path(@project, @milestone)
         else
           render :edit
         end
diff --git a/app/controllers/projects/network_controller.rb b/app/controllers/projects/network_controller.rb
index 33a152ad34f86bdf2304a26e6afb089b4d112f1b..dfa5e4f7f46c9ebbe868e84c2c6dd18f6a7126f3 100644
--- a/app/controllers/projects/network_controller.rb
+++ b/app/controllers/projects/network_controller.rb
@@ -8,8 +8,8 @@ class Projects::NetworkController < Projects::ApplicationController
   before_action :assign_commit
 
   def show
-    @url = namespace_project_network_path(@project.namespace, @project, @ref, @options.merge(format: :json))
-    @commit_url = namespace_project_commit_path(@project.namespace, @project, 'ae45ca32').gsub("ae45ca32", "%s")
+    @url = project_network_path(@project, @ref, @options.merge(format: :json))
+    @commit_url = project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")
 
     respond_to do |format|
       format.html do
diff --git a/app/controllers/projects/pages_controller.rb b/app/controllers/projects/pages_controller.rb
index 28b383e69ebcb48ecf26aefe6bc95b865448ed91..d421b1a8eb5c729a0040c72faf22c362d9083062 100644
--- a/app/controllers/projects/pages_controller.rb
+++ b/app/controllers/projects/pages_controller.rb
@@ -15,7 +15,7 @@ class Projects::PagesController < Projects::ApplicationController
 
     respond_to do |format|
       format.html  do
-        redirect_to namespace_project_pages_path(@project.namespace, @project),
+        redirect_to project_pages_path(@project),
                     status: 302,
                     notice: 'Pages were removed'
       end
diff --git a/app/controllers/projects/pages_domains_controller.rb b/app/controllers/projects/pages_domains_controller.rb
index dbd011f6c5d235946365d17354ae73f5d8535162..15e77d854dcfdcd88b862e96cc2deb1f129fb44c 100644
--- a/app/controllers/projects/pages_domains_controller.rb
+++ b/app/controllers/projects/pages_domains_controller.rb
@@ -16,7 +16,7 @@ class Projects::PagesDomainsController < Projects::ApplicationController
     @domain = @project.pages_domains.create(pages_domain_params)
 
     if @domain.valid?
-      redirect_to namespace_project_pages_path(@project.namespace, @project)
+      redirect_to project_pages_path(@project)
     else
       render 'new'
     end
@@ -27,7 +27,7 @@ class Projects::PagesDomainsController < Projects::ApplicationController
 
     respond_to do |format|
       format.html do
-        redirect_to namespace_project_pages_path(@project.namespace, @project),
+        redirect_to project_pages_path(@project),
                     status: 302,
                     notice: 'Domain was removed'
       end
diff --git a/app/controllers/projects/pipeline_schedules_controller.rb b/app/controllers/projects/pipeline_schedules_controller.rb
index 60db179277b574404372ba8da6995b728bf05fc6..0d967a7e691a40e61e2e3e0441f424aa8e396664 100644
--- a/app/controllers/projects/pipeline_schedules_controller.rb
+++ b/app/controllers/projects/pipeline_schedules_controller.rb
@@ -34,7 +34,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController
 
   def update
     if schedule.update(schedule_params)
-      redirect_to namespace_project_pipeline_schedules_path(@project.namespace.becomes(Namespace), @project)
+      redirect_to project_pipeline_schedules_path(@project)
     else
       render :edit
     end
diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb
index 303e91a8dc0c9ce5c146dcecf15ab968989f0d2d..a3bfbf0694e27352fbbdebaffe421d5ab4e6299c 100644
--- a/app/controllers/projects/pipelines_controller.rb
+++ b/app/controllers/projects/pipelines_controller.rb
@@ -60,7 +60,7 @@ class Projects::PipelinesController < Projects::ApplicationController
       .execute(:web, ignore_skip_ci: true, save_on_errors: false)
 
     if @pipeline.persisted?
-      redirect_to namespace_project_pipeline_path(project.namespace, project, @pipeline)
+      redirect_to project_pipeline_path(project, @pipeline)
     else
       render 'new'
     end
@@ -111,7 +111,7 @@ class Projects::PipelinesController < Projects::ApplicationController
 
     respond_to do |format|
       format.html do
-        redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
+        redirect_back_or_default default: project_pipelines_path(project)
       end
 
       format.json { head :no_content }
@@ -123,7 +123,7 @@ class Projects::PipelinesController < Projects::ApplicationController
 
     respond_to do |format|
       format.html do
-        redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
+        redirect_back_or_default default: project_pipelines_path(project)
       end
 
       format.json { head :no_content }
diff --git a/app/controllers/projects/pipelines_settings_controller.rb b/app/controllers/projects/pipelines_settings_controller.rb
index 38a476510008cea47a704714911756d22b7c47a8..f13884307b6bf25d70844d94000edaeb3790c139 100644
--- a/app/controllers/projects/pipelines_settings_controller.rb
+++ b/app/controllers/projects/pipelines_settings_controller.rb
@@ -2,13 +2,13 @@ class Projects::PipelinesSettingsController < Projects::ApplicationController
   before_action :authorize_admin_pipeline!
 
   def show
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project, params: params)
+    redirect_to project_settings_ci_cd_path(@project, params: params)
   end
 
   def update
     if @project.update_attributes(update_params)
       flash[:notice] = "Pipelines settings for '#{@project.name}' were successfully updated."
-      redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      redirect_to project_settings_ci_cd_path(@project)
     else
       render 'show'
     end
diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb
index d2d267385828a5012f84a8452e919889f4cf7c08..57a6686f66c83e3c2334f003da2387041634fae4 100644
--- a/app/controllers/projects/project_members_controller.rb
+++ b/app/controllers/projects/project_members_controller.rb
@@ -7,7 +7,7 @@ class Projects::ProjectMembersController < Projects::ApplicationController
 
   def index
     sort = params[:sort].presence || sort_value_name
-    redirect_to namespace_project_settings_members_path(@project.namespace, @project, sort: sort)
+    redirect_to project_settings_members_path(@project, sort: sort)
   end
 
   def update
@@ -19,7 +19,7 @@ class Projects::ProjectMembersController < Projects::ApplicationController
   end
 
   def resend_invite
-    redirect_path = namespace_project_settings_members_path(@project.namespace, @project)
+    redirect_path = project_settings_members_path(@project)
 
     @project_member = @project.project_members.find(params[:id])
 
@@ -42,7 +42,7 @@ class Projects::ProjectMembersController < Projects::ApplicationController
       return render_404
     end
 
-    redirect_to(namespace_project_settings_members_path(project.namespace, project),
+    redirect_to(project_settings_members_path(project),
                 notice: notice)
   end
 
diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb
index 2a0b58fae7c4e28a9cf6a28b0f35fc797e0eaf4c..1eb78d8b5223c6ba7249c2aebd834d64832e87c3 100644
--- a/app/controllers/projects/refs_controller.rb
+++ b/app/controllers/projects/refs_controller.rb
@@ -13,21 +13,21 @@ class Projects::RefsController < Projects::ApplicationController
         new_path =
           case params[:destination]
           when "tree"
-            namespace_project_tree_path(@project.namespace, @project, @id)
+            project_tree_path(@project, @id)
           when "blob"
-            namespace_project_blob_path(@project.namespace, @project, @id)
+            project_blob_path(@project, @id)
           when "graph"
-            namespace_project_network_path(@project.namespace, @project, @id, @options)
+            project_network_path(@project, @id, @options)
           when "graphs"
-            namespace_project_graph_path(@project.namespace, @project, @id)
+            project_graph_path(@project, @id)
           when "find_file"
-            namespace_project_find_file_path(@project.namespace, @project, @id)
+            project_find_file_path(@project, @id)
           when "graphs_commits"
-            commits_namespace_project_graph_path(@project.namespace, @project, @id)
+            commits_project_graph_path(@project, @id)
           when "badges"
-            namespace_project_pipelines_settings_path(@project.namespace, @project, ref: @id)
+            project_pipelines_settings_path(@project, ref: @id)
           else
-            namespace_project_commits_path(@project.namespace, @project, @id)
+            project_commits_path(@project, @id)
           end
 
         redirect_to new_path
@@ -62,7 +62,7 @@ class Projects::RefsController < Projects::ApplicationController
 
     offset = (@offset + @limit)
     if contents.size > offset
-      @more_log_url = logs_file_namespace_project_ref_path(@project.namespace, @project, @ref, @path || '', offset: offset)
+      @more_log_url = logs_file_project_ref_path(@project, @ref, @path || '', offset: offset)
     end
 
     respond_to do |format|
diff --git a/app/controllers/projects/registry/repositories_controller.rb b/app/controllers/projects/registry/repositories_controller.rb
index 98e78585be888fe5c23cdabe04f05bd7880b9869..71e7dc70a4dea44794b075b69da95b38b583814b 100644
--- a/app/controllers/projects/registry/repositories_controller.rb
+++ b/app/controllers/projects/registry/repositories_controller.rb
@@ -10,11 +10,11 @@ module Projects
 
       def destroy
         if image.destroy
-          redirect_to project_container_registry_path(@project),
+          redirect_to project_container_registry_index_path(@project),
                       status: 302,
                       notice: 'Image repository has been removed successfully!'
         else
-          redirect_to project_container_registry_path(@project),
+          redirect_to project_container_registry_index_path(@project),
                       status: 302,
                       alert: 'Failed to remove image repository!'
         end
diff --git a/app/controllers/projects/registry/tags_controller.rb b/app/controllers/projects/registry/tags_controller.rb
index 5050dba3aab6441686ea7082afe058ca1a1ed946..ae72bd03cfba637884fe8046cc718ee5f15bfc42 100644
--- a/app/controllers/projects/registry/tags_controller.rb
+++ b/app/controllers/projects/registry/tags_controller.rb
@@ -5,11 +5,11 @@ module Projects
 
       def destroy
         if tag.delete
-          redirect_to project_container_registry_path(@project),
+          redirect_to project_container_registry_index_path(@project),
                       status: 302,
                       notice: 'Registry tag has been removed successfully!'
         else
-          redirect_to project_container_registry_path(@project),
+          redirect_to project_container_registry_index_path(@project),
                       status: 302,
                       alert: 'Failed to remove registry tag!'
         end
diff --git a/app/controllers/projects/releases_controller.rb b/app/controllers/projects/releases_controller.rb
index 2c097cb4d8d7c622007db8f2d73be16e95137e97..3e0a530fdb9b25f89cd306454180c271d8bb4a23 100644
--- a/app/controllers/projects/releases_controller.rb
+++ b/app/controllers/projects/releases_controller.rb
@@ -19,7 +19,7 @@ class Projects::ReleasesController < Projects::ApplicationController
       release.destroy
     end
 
-    redirect_to namespace_project_tag_path(@project.namespace, @project, @tag.name)
+    redirect_to project_tag_path(@project, @tag.name)
   end
 
   private
diff --git a/app/controllers/projects/runners_controller.rb b/app/controllers/projects/runners_controller.rb
index 160e632648a96746c4b1d57e2e9c09ec63a65a6f..9f9773575a5f836fd49ac7a9a2cb024db1a5e966 100644
--- a/app/controllers/projects/runners_controller.rb
+++ b/app/controllers/projects/runners_controller.rb
@@ -5,7 +5,7 @@ class Projects::RunnersController < Projects::ApplicationController
   layout 'project_settings'
 
   def index
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    redirect_to project_settings_ci_cd_path(@project)
   end
 
   def edit
@@ -49,7 +49,7 @@ class Projects::RunnersController < Projects::ApplicationController
   def toggle_shared_runners
     project.toggle!(:shared_runners_enabled)
 
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    redirect_to project_settings_ci_cd_path(@project)
   end
 
   protected
diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb
index 704f8cc8a799eec167aabca7ee69fdf8eaa10301..d54a1111f115a138709fcda4438cb5cda80df411 100644
--- a/app/controllers/projects/services_controller.rb
+++ b/app/controllers/projects/services_controller.rb
@@ -15,7 +15,7 @@ class Projects::ServicesController < Projects::ApplicationController
 
   def update
     if @service.save(context: :manual_change)
-      redirect_to(namespace_project_settings_integrations_path(@project.namespace, @project), notice: success_message)
+      redirect_to(project_settings_integrations_path(@project), notice: success_message)
     else
       render 'edit'
     end
diff --git a/app/controllers/projects/snippets_controller.rb b/app/controllers/projects/snippets_controller.rb
index 98dd307bd9dc6908b23bb0bbca2dd685698ea027..d07143d294f70e6889c57b6b139102d0b11f85b7 100644
--- a/app/controllers/projects/snippets_controller.rb
+++ b/app/controllers/projects/snippets_controller.rb
@@ -30,7 +30,7 @@ class Projects::SnippetsController < Projects::ApplicationController
     ).execute
     @snippets = @snippets.page(params[:page])
     if @snippets.out_of_range? && @snippets.total_pages != 0
-      redirect_to namespace_project_snippets_path(page: @snippets.total_pages)
+      redirect_to project_snippets_path(@project, page: @snippets.total_pages)
     end
   end
 
@@ -79,7 +79,7 @@ class Projects::SnippetsController < Projects::ApplicationController
 
     @snippet.destroy
 
-    redirect_to namespace_project_snippets_path(@project.namespace, @project), status: 302
+    redirect_to project_snippets_path(@project), status: 302
   end
 
   protected
@@ -90,6 +90,10 @@ class Projects::SnippetsController < Projects::ApplicationController
   alias_method :awardable, :snippet
   alias_method :spammable, :snippet
 
+  def spammable_path
+    project_snippet_path(@project, @snippet)
+  end
+
   def authorize_read_project_snippet!
     return render_404 unless can?(current_user, :read_project_snippet, @snippet)
   end
diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb
index ebc9f4edab4cf99bb4d080a587467fd010c03781..b62d7d9b7c5392abd4fe8be86342583de5f05843 100644
--- a/app/controllers/projects/tags_controller.rb
+++ b/app/controllers/projects/tags_controller.rb
@@ -35,7 +35,7 @@ class Projects::TagsController < Projects::ApplicationController
     if result[:status] == :success
       @tag = result[:tag]
 
-      redirect_to namespace_project_tag_path(@project.namespace, @project, @tag.name)
+      redirect_to project_tag_path(@project, @tag.name)
     else
       @error = result[:message]
       @message = params[:message]
@@ -50,7 +50,7 @@ class Projects::TagsController < Projects::ApplicationController
     respond_to do |format|
       if result[:status] == :success
         format.html do
-          redirect_to namespace_project_tags_path(@project.namespace, @project), status: 303
+          redirect_to project_tags_path(@project), status: 303
         end
 
         format.js
@@ -58,7 +58,7 @@ class Projects::TagsController < Projects::ApplicationController
         @error = result[:message]
 
         format.html do
-          redirect_to namespace_project_tags_path(@project.namespace, @project),
+          redirect_to project_tags_path(@project),
             alert: @error, status: 303
         end
 
diff --git a/app/controllers/projects/tree_controller.rb b/app/controllers/projects/tree_controller.rb
index 266a15c1cf945589e7e4be328f34a5d1223004f7..30181ac3bdf6ac743904e9354eae61f5799f9eb7 100644
--- a/app/controllers/projects/tree_controller.rb
+++ b/app/controllers/projects/tree_controller.rb
@@ -16,7 +16,7 @@ class Projects::TreeController < Projects::ApplicationController
     if tree.entries.empty?
       if @repository.blob_at(@commit.id, @path)
         return redirect_to(
-          namespace_project_blob_path(@project.namespace, @project,
+          project_blob_path(@project,
                                       File.join(@ref, @path))
         )
       elsif @path.present?
@@ -37,8 +37,8 @@ class Projects::TreeController < Projects::ApplicationController
     return render_404 unless @commit_params.values.all?
 
     create_commit(Files::CreateDirService,  success_notice: "The directory has been successfully created.",
-                                            success_path: namespace_project_tree_path(@project.namespace, @project, File.join(@branch_name, @dir_name)),
-                                            failure_path: namespace_project_tree_path(@project.namespace, @project, @ref))
+                                            success_path: project_tree_path(@project, File.join(@branch_name, @dir_name)),
+                                            failure_path: project_tree_path(@project, @ref))
   end
 
   private
diff --git a/app/controllers/projects/triggers_controller.rb b/app/controllers/projects/triggers_controller.rb
index e86adddd77fc18dbf2f070d950c7c2802931155f..a5b17fa65ea3abb07bb92a0606503e49365e8519 100644
--- a/app/controllers/projects/triggers_controller.rb
+++ b/app/controllers/projects/triggers_controller.rb
@@ -7,7 +7,7 @@ class Projects::TriggersController < Projects::ApplicationController
   layout 'project_settings'
 
   def index
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    redirect_to project_settings_ci_cd_path(@project)
   end
 
   def create
@@ -19,7 +19,7 @@ class Projects::TriggersController < Projects::ApplicationController
       flash[:alert] = 'You could not create a new trigger.'
     end
 
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    redirect_to project_settings_ci_cd_path(@project)
   end
 
   def take_ownership
@@ -29,7 +29,7 @@ class Projects::TriggersController < Projects::ApplicationController
       flash[:alert] = 'You could not take ownership of trigger.'
     end
 
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    redirect_to project_settings_ci_cd_path(@project)
   end
 
   def edit
@@ -37,7 +37,7 @@ class Projects::TriggersController < Projects::ApplicationController
 
   def update
     if trigger.update(trigger_params)
-      redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project), notice: 'Trigger was successfully updated.'
+      redirect_to project_settings_ci_cd_path(@project), notice: 'Trigger was successfully updated.'
     else
       render action: "edit"
     end
@@ -50,7 +50,7 @@ class Projects::TriggersController < Projects::ApplicationController
       flash[:alert] = "Could not remove the trigger."
     end
 
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project), status: 302
+    redirect_to project_settings_ci_cd_path(@project), status: 302
   end
 
   private
diff --git a/app/controllers/projects/variables_controller.rb b/app/controllers/projects/variables_controller.rb
index 50e25a00f03215a5d3e4eb7040ccdc02a5afb23f..573d1c0562283f99f5ed8db30f6687b011da80f3 100644
--- a/app/controllers/projects/variables_controller.rb
+++ b/app/controllers/projects/variables_controller.rb
@@ -4,7 +4,7 @@ class Projects::VariablesController < Projects::ApplicationController
   layout 'project_settings'
 
   def index
-    redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    redirect_to project_settings_ci_cd_path(@project)
   end
 
   def show
@@ -15,7 +15,7 @@ class Projects::VariablesController < Projects::ApplicationController
     @variable = @project.variables.find(params[:id])
 
     if @variable.update_attributes(project_params)
-      redirect_to namespace_project_variables_path(project.namespace, project), notice: 'Variable was successfully updated.'
+      redirect_to project_variables_path(project), notice: 'Variable was successfully updated.'
     else
       render action: "show"
     end
@@ -26,7 +26,7 @@ class Projects::VariablesController < Projects::ApplicationController
 
     if @variable.valid? && @project.variables << @variable
       flash[:notice] = 'Variables were successfully updated.'
-      redirect_to namespace_project_settings_ci_cd_path(project.namespace, project)
+      redirect_to project_settings_ci_cd_path(project)
     else
       render "show"
     end
@@ -36,7 +36,7 @@ class Projects::VariablesController < Projects::ApplicationController
     @key = @project.variables.find(params[:id])
     @key.destroy
 
-    redirect_to namespace_project_settings_ci_cd_path(project.namespace, project),
+    redirect_to project_settings_ci_cd_path(project),
                 status: 302,
                 notice: 'Variable was successfully removed.'
   end
diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb
index e54b90b8d52d22bf6684a585d32516eab265e397..ac98470c2b105192d3634c45d2d231fd9e940078 100644
--- a/app/controllers/projects/wikis_controller.rb
+++ b/app/controllers/projects/wikis_controller.rb
@@ -49,7 +49,7 @@ class Projects::WikisController < Projects::ApplicationController
 
     if @page.valid?
       redirect_to(
-        namespace_project_wiki_path(@project.namespace, @project, @page),
+        project_wiki_path(@project, @page),
         notice: 'Wiki was successfully updated.'
       )
     else
@@ -62,7 +62,7 @@ class Projects::WikisController < Projects::ApplicationController
 
     if @page.persisted?
       redirect_to(
-        namespace_project_wiki_path(@project.namespace, @project, @page),
+        project_wiki_path(@project, @page),
         notice: 'Wiki was successfully updated.'
       )
     else
@@ -75,7 +75,7 @@ class Projects::WikisController < Projects::ApplicationController
 
     unless @page
       redirect_to(
-        namespace_project_wiki_path(@project.namespace, @project, :home),
+        project_wiki_path(@project, :home),
         notice: "Page not found"
       )
     end
@@ -85,7 +85,7 @@ class Projects::WikisController < Projects::ApplicationController
     @page = @project_wiki.find_page(params[:id])
     WikiPages::DestroyService.new(@project, current_user).execute(@page)
 
-    redirect_to namespace_project_wiki_path(@project.namespace, @project, :home),
+    redirect_to project_wiki_path(@project, :home),
                 status: 302,
                 notice: "Page was successfully deleted"
   end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 450895cdf3aeb8d571b9e695e948cfde58acc918..87a69e8e6f9d70de0b295eec0ad77ae7e01a48e8 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -92,7 +92,7 @@ class ProjectsController < Projects::ApplicationController
 
   def show
     if @project.import_in_progress?
-      redirect_to namespace_project_import_path(@project.namespace, @project)
+      redirect_to project_import_path(@project)
       return
     end
 
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 4a5796017851ccdeb46d54777dbd52de0bd532e8..d58c8d14a75aca7b651b6f09bb0615609ce887d5 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -44,7 +44,7 @@ class SearchController < ApplicationController
       query = params[:search].strip.downcase
       found_by_commit_sha = Commit.valid_hash?(query) && only_commit.sha.start_with?(query)
 
-      redirect_to namespace_project_commit_path(@project.namespace, @project, only_commit) if found_by_commit_sha
+      redirect_to project_commit_path(@project, only_commit) if found_by_commit_sha
     end
   end
 end
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index 3d86dd2ea2c0c23c0bdbca590259447bb9a3366c..8c3abd0a085c5c3740b35b959a0b69d2e73c3a51 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -107,6 +107,10 @@ class SnippetsController < ApplicationController
   alias_method :awardable, :snippet
   alias_method :spammable, :snippet
 
+  def spammable_path
+    snippet_path(@snippet)
+  end
+
   def authorize_read_snippet!
     return if can?(current_user, :read_personal_snippet, @snippet)
 
diff --git a/app/helpers/award_emoji_helper.rb b/app/helpers/award_emoji_helper.rb
index 024cf38469ec1e41c9b7d3971bab2c8df4804ec0..86b19368cfd598d2cdd0aff7a93fc237da169e6e 100644
--- a/app/helpers/award_emoji_helper.rb
+++ b/app/helpers/award_emoji_helper.rb
@@ -7,7 +7,7 @@ module AwardEmojiHelper
       if awardable.for_personal_snippet?
         toggle_award_emoji_snippet_note_path(awardable.noteable, awardable)
       else
-        toggle_award_emoji_namespace_project_note_path(@project.namespace, @project, awardable.id)
+        toggle_award_emoji_project_note_path(@project, awardable.id)
       end
     else
       url_for([:toggle_award_emoji, @project.namespace.becomes(Namespace), @project, awardable])
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index ee36617ba9adc63ffe4aa35f6c23e07971c9eb35..e964d7a5e1690ba8d822855486f769174b645ad6 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -9,7 +9,7 @@ module BlobHelper
   end
 
   def edit_path(project = @project, ref = @ref, path = @path, options = {})
-    namespace_project_edit_blob_path(project.namespace, project,
+    project_edit_blob_path(project,
                                      tree_join(ref, path),
                                      options[:link_opts])
   end
@@ -33,7 +33,7 @@ module BlobHelper
         notice: edit_in_new_fork_notice,
         notice_now: edit_in_new_fork_notice_now
       }
-      fork_path = namespace_project_forks_path(project.namespace, project, namespace_key: current_user.namespace.id, continue: continue_params)
+      fork_path = project_forks_path(project, namespace_key: current_user.namespace.id, continue: continue_params)
 
       button_tag 'Edit',
         class: "#{common_classes} js-edit-blob-link-fork-toggler",
@@ -62,7 +62,7 @@ module BlobHelper
         notice: edit_in_new_fork_notice + " Try to #{action} this file again.",
         notice_now: edit_in_new_fork_notice_now
       }
-      fork_path = namespace_project_forks_path(project.namespace, project, namespace_key: current_user.namespace.id, continue: continue_params)
+      fork_path = project_forks_path(project, namespace_key: current_user.namespace.id, continue: continue_params)
 
       button_tag label,
         class: "#{common_classes} js-edit-blob-link-fork-toggler",
@@ -120,15 +120,15 @@ module BlobHelper
 
   def blob_raw_url
     if @build && @entry
-      raw_namespace_project_job_artifacts_path(@project.namespace, @project, @build, path: @entry.path)
+      raw_project_job_artifacts_path(@project, @build, path: @entry.path)
     elsif @snippet
       if @snippet.project_id
-        raw_namespace_project_snippet_path(@project.namespace, @project, @snippet)
+        raw_project_snippet_path(@project, @snippet)
       else
         raw_snippet_path(@snippet)
       end
     elsif @blob
-      namespace_project_raw_path(@project.namespace, @project, @id)
+      project_raw_path(@project, @id)
     end
   end
 
@@ -279,12 +279,12 @@ module BlobHelper
     options = []
 
     if can?(current_user, :create_issue, project)
-      options << link_to("submit an issue", new_namespace_project_issue_path(project.namespace, project))
+      options << link_to("submit an issue", new_project_issue_path(project))
     end
 
     merge_project = can?(current_user, :create_merge_request, project) ? project : (current_user && current_user.fork_of(project))
     if merge_project
-      options << link_to("create a merge request", namespace_project_new_merge_request_path(project.namespace, project))
+      options << link_to("create a merge request", project_new_merge_request_path(project))
     end
 
     options
diff --git a/app/helpers/boards_helper.rb b/app/helpers/boards_helper.rb
index e2df52e3833231c6a35f7775000becf87074adcd..8b33c362a9c17bcb0ef2f62ed2ffa0e53c0394cf 100644
--- a/app/helpers/boards_helper.rb
+++ b/app/helpers/boards_helper.rb
@@ -3,12 +3,12 @@ module BoardsHelper
     board = @board || @boards.first
 
     {
-      endpoint: namespace_project_boards_path(@project.namespace, @project),
+      endpoint: project_boards_path(@project),
       board_id: board.id,
       disabled: "#{!can?(current_user, :admin_list, @project)}",
-      issue_link_base: namespace_project_issues_path(@project.namespace, @project),
+      issue_link_base: project_issues_path(@project),
       root_path: root_path,
-      bulk_update_path: bulk_update_namespace_project_issues_path(@project.namespace, @project),
+      bulk_update_path: bulk_update_project_issues_path(@project),
       default_avatar: image_path(default_avatar)
     }
   end
diff --git a/app/helpers/branches_helper.rb b/app/helpers/branches_helper.rb
index 59519c1335bfb703376c2ccf5f8376c8614591bd..686437fc99a551b1cd6282c4546e40a4cf9feb44 100644
--- a/app/helpers/branches_helper.rb
+++ b/app/helpers/branches_helper.rb
@@ -7,7 +7,7 @@ module BranchesHelper
 
     options = exist_opts.merge(options)
 
-    namespace_project_branches_path(@project.namespace, @project, @id, options)
+    project_branches_path(@project, @id, options)
   end
 
   def can_push_branch?(project, branch_name)
diff --git a/app/helpers/builds_helper.rb b/app/helpers/builds_helper.rb
index f0a0d245dc080c984eff8e6d8ae78132e7969022..85bc784d53cc9c646114a10a1dc5b0159a2974dc 100644
--- a/app/helpers/builds_helper.rb
+++ b/app/helpers/builds_helper.rb
@@ -20,8 +20,8 @@ module BuildsHelper
 
   def javascript_build_options
     {
-      page_url: namespace_project_job_url(@project.namespace, @project, @build),
-      build_url: namespace_project_job_url(@project.namespace, @project, @build, :json),
+      page_url: project_job_url(@project, @build),
+      build_url: project_job_url(@project, @build, :json),
       build_status: @build.status,
       build_stage: @build.stage,
       log_state: ''
@@ -31,7 +31,7 @@ module BuildsHelper
   def build_failed_issue_options
     {
       title: "Build Failed ##{@build.id}",
-      description: namespace_project_job_url(@project.namespace, @project, @build)
+      description: project_job_url(@project, @build)
     }
   end
 end
diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb
index 21c0eb8b54ca743281746e0248c3c86381475e04..8022547a6ad903e55393341dd1c1bfd8cea597ed 100644
--- a/app/helpers/ci_status_helper.rb
+++ b/app/helpers/ci_status_helper.rb
@@ -8,7 +8,7 @@
 module CiStatusHelper
   def ci_status_path(pipeline)
     project = pipeline.project
-    namespace_project_pipeline_path(project.namespace, project, pipeline)
+    project_pipeline_path(project, pipeline)
   end
 
   def ci_label_for_status(status)
@@ -99,10 +99,7 @@ module CiStatusHelper
 
   def render_project_pipeline_status(pipeline_status, tooltip_placement: 'auto left')
     project = pipeline_status.project
-    path = pipelines_namespace_project_commit_path(
-      project.namespace,
-      project,
-      pipeline_status.sha)
+    path = pipelines_project_commit_path(project, pipeline_status.sha)
 
     render_status_with_link(
       'commit',
@@ -113,10 +110,7 @@ module CiStatusHelper
 
   def render_commit_status(commit, ref: nil, tooltip_placement: 'auto left')
     project = commit.project
-    path = pipelines_namespace_project_commit_path(
-      project.namespace,
-      project,
-      commit)
+    path = pipelines_project_commit_path(project, commit)
 
     render_status_with_link(
       'commit',
@@ -127,7 +121,7 @@ module CiStatusHelper
 
   def render_pipeline_status(pipeline, tooltip_placement: 'auto left')
     project = pipeline.project
-    path = namespace_project_pipeline_path(project.namespace, project, pipeline)
+    path = project_pipeline_path(project, pipeline)
     render_status_with_link('pipeline', pipeline.status, path, tooltip_placement: tooltip_placement)
   end
 
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 0accd1f8d7766e3e8fb7bedd90e9fa1bcdcb90be..d08e346d605d16ec0b1c0fc02f940728ba138310 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -30,7 +30,7 @@ module CommitsHelper
     crumbs = content_tag(:li) do
       link_to(
         @project.path,
-        namespace_project_commits_path(@project.namespace, @project, @ref)
+        project_commits_path(@project, @ref)
       )
     end
 
@@ -42,8 +42,7 @@ module CommitsHelper
           # The text is just the individual part, but the link needs all the parts before it
           link_to(
             part,
-            namespace_project_commits_path(
-              @project.namespace,
+            project_commits_path(
               @project,
               tree_join(@ref, parts[0..i].join('/'))
             )
@@ -86,20 +85,20 @@ module CommitsHelper
     if @path.blank?
       return link_to(
         _("Browse Files"),
-        namespace_project_tree_path(project.namespace, project, commit),
+        project_tree_path(project, commit),
         class: "btn btn-default"
       )
     elsif @repo.blob_at(commit.id, @path)
       return link_to(
         _("Browse File"),
-        namespace_project_blob_path(project.namespace, project,
+        project_blob_path(project,
                                     tree_join(commit.id, @path)),
         class: "btn btn-default"
       )
     elsif @path.present?
       return link_to(
         _("Browse Directory"),
-        namespace_project_tree_path(project.namespace, project,
+        project_tree_path(project,
                                     tree_join(commit.id, @path)),
         class: "btn btn-default"
       )
@@ -165,7 +164,7 @@ module CommitsHelper
         notice: "#{edit_in_new_fork_notice} Try to #{action} this commit again.",
         notice_now: edit_in_new_fork_notice_now
       }
-      fork_path = namespace_project_forks_path(@project.namespace, @project,
+      fork_path = project_forks_path(@project,
         namespace_key: current_user.namespace.id,
         continue: continue_params)
 
@@ -175,7 +174,7 @@ module CommitsHelper
 
   def view_file_button(commit_sha, diff_new_path, project)
     link_to(
-      namespace_project_blob_path(project.namespace, project,
+      project_blob_path(project,
                                   tree_join(commit_sha, diff_new_path)),
       class: 'btn view-file js-view-file'
     ) do
diff --git a/app/helpers/compare_helper.rb b/app/helpers/compare_helper.rb
index 424ded2b69dfb586ddbac133b231c98ef496e31f..2c28dd81c87b622b0e02378b7941047a301df117 100644
--- a/app/helpers/compare_helper.rb
+++ b/app/helpers/compare_helper.rb
@@ -9,8 +9,7 @@ module CompareHelper
   end
 
   def create_mr_path(from = params[:from], to = params[:to], project = @project)
-    namespace_project_new_merge_request_path(
-      project.namespace,
+    project_new_merge_request_path(
       project,
       merge_request: {
         source_branch: to,
diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index 16a99addd0b7822b79b9b96868e0632a15ff9f84..926502bf23922cab2c587be6ad63ce66e922e7a2 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -103,18 +103,18 @@ module DiffHelper
   end
 
   def diff_file_blob_raw_path(diff_file)
-    namespace_project_raw_path(@project.namespace, @project, tree_join(diff_file.content_sha, diff_file.file_path))
+    project_raw_path(@project, tree_join(diff_file.content_sha, diff_file.file_path))
   end
 
   def diff_file_old_blob_raw_path(diff_file)
     sha = diff_file.old_content_sha
     return unless sha
-    namespace_project_raw_path(@project.namespace, @project, tree_join(diff_file.old_content_sha, diff_file.old_path))
+    project_raw_path(@project, tree_join(diff_file.old_content_sha, diff_file.old_path))
   end
 
   def diff_file_html_data(project, diff_file_path, diff_commit_id)
     {
-      blob_diff_path: namespace_project_blob_diff_path(project.namespace, project,
+      blob_diff_path: project_blob_diff_path(project,
                                                        tree_join(diff_commit_id, diff_file_path)),
       view: diff_view
     }
@@ -142,7 +142,7 @@ module DiffHelper
     diff_file = viewer.diff_file
     options = []
 
-    blob_url = namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.content_sha, diff_file.file_path))
+    blob_url = project_blob_path(@project, tree_join(diff_file.content_sha, diff_file.file_path))
     options << link_to('view the blob', blob_url)
 
     options
@@ -163,17 +163,17 @@ module DiffHelper
   end
 
   def commit_diff_whitespace_link(project, commit, options)
-    url = namespace_project_commit_path(project.namespace, project, commit.id, params_with_whitespace)
+    url = project_commit_path(project, commit.id, params_with_whitespace)
     toggle_whitespace_link(url, options)
   end
 
   def diff_merge_request_whitespace_link(project, merge_request, options)
-    url = diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, params_with_whitespace)
+    url = diffs_project_merge_request_path(project, merge_request, params_with_whitespace)
     toggle_whitespace_link(url, options)
   end
 
   def diff_compare_whitespace_link(project, from, to, options)
-    url = namespace_project_compare_path(project.namespace, project, from, to, params_with_whitespace)
+    url = project_compare_path(project, from, to, params_with_whitespace)
     toggle_whitespace_link(url, options)
   end
 
diff --git a/app/helpers/environment_helper.rb b/app/helpers/environment_helper.rb
index ff8550439d0e4bd14882f678067e8e715eab8310..1e78a189c085612d24f37ad5cd63a96754726ba8 100644
--- a/app/helpers/environment_helper.rb
+++ b/app/helpers/environment_helper.rb
@@ -8,7 +8,7 @@ module EnvironmentHelper
   def environment_link_for_build(project, build)
     environment = environment_for_build(project, build)
     if environment
-      link_to environment.name, namespace_project_environment_path(project.namespace, project, environment)
+      link_to environment.name, project_environment_path(project, environment)
     else
       content_tag :span, build.expanded_environment_name
     end
diff --git a/app/helpers/environments_helper.rb b/app/helpers/environments_helper.rb
index 515e802e01e4831847c4e539a02e8be52cd9a9fd..4ce89f89fa990fb9c87cb373e815b8a8fe258524 100644
--- a/app/helpers/environments_helper.rb
+++ b/app/helpers/environments_helper.rb
@@ -1,7 +1,7 @@
 module EnvironmentsHelper
   def environments_list_data
     {
-      endpoint: namespace_project_environments_path(@project.namespace, @project, format: :json)
+      endpoint: project_environments_path(@project, format: :json)
     }
   end
 end
diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index 751d61955b764d6b5b78cf347593f713dca167d1..48c87dca2178e921524ab38e9157ef353d85a45c 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -99,13 +99,12 @@ module EventsHelper
 
   def event_feed_url(event)
     if event.issue?
-      namespace_project_issue_url(event.project.namespace, event.project,
+      project_issue_url(event.project,
                                   event.issue)
     elsif event.merge_request?
-      namespace_project_merge_request_url(event.project.namespace,
-                                          event.project, event.merge_request)
+      project_merge_request_url(event.project, event.merge_request)
     elsif event.commit_note?
-      namespace_project_commit_url(event.project.namespace, event.project,
+      project_commit_url(event.project,
                                    event.note_target)
     elsif event.note?
       if event.note_target
@@ -119,15 +118,15 @@ module EventsHelper
   def push_event_feed_url(event)
     if event.push_with_commits? && event.md_ref?
       if event.commits_count > 1
-        namespace_project_compare_url(event.project.namespace, event.project,
+        project_compare_url(event.project,
                                       from: event.commit_from, to:
                                       event.commit_to)
       else
-        namespace_project_commit_url(event.project.namespace, event.project,
+        project_commit_url(event.project,
                                      id: event.commit_to)
       end
     else
-      namespace_project_commits_url(event.project.namespace, event.project,
+      project_commits_url(event.project,
                                     event.ref_name)
     end
   end
@@ -146,15 +145,9 @@ module EventsHelper
 
   def event_note_target_path(event)
     if event.commit_note?
-      namespace_project_commit_path(event.project.namespace,
-                                    event.project,
-                                    event.note_target,
-                                    anchor: dom_id(event.target))
+      project_commit_path(event.project, event.note_target, anchor: dom_id(event.target))
     elsif event.project_snippet_note?
-      namespace_project_snippet_path(event.project.namespace,
-                                     event.project,
-                                     event.note_target,
-                                     anchor: dom_id(event.target))
+      project_snippet_path(event.project, event.note_target, anchor: dom_id(event.target))
     else
       polymorphic_path([event.project.namespace.becomes(Namespace),
                         event.project, event.note_target],
diff --git a/app/helpers/external_wiki_helper.rb b/app/helpers/external_wiki_helper.rb
index defd87d6bbe620991e9f7158058780f3149acf72..8cf890b74a87dd7dcd5c74c11dd2bac3eba1c2ce 100644
--- a/app/helpers/external_wiki_helper.rb
+++ b/app/helpers/external_wiki_helper.rb
@@ -4,7 +4,7 @@ module ExternalWikiHelper
     if external_wiki_service
       external_wiki_service.properties['external_wiki_url']
     else
-      namespace_project_wiki_path(project.namespace, project, :home)
+      project_wiki_path(project, :home)
     end
   end
 end
diff --git a/app/helpers/gitlab_routing_helper.rb b/app/helpers/gitlab_routing_helper.rb
index 8c7af62e19968cd66668854cc9e61265ad9dd00a..b5f4bbe97dc9c47a39d03072a0923d9ca4e97516 100644
--- a/app/helpers/gitlab_routing_helper.rb
+++ b/app/helpers/gitlab_routing_helper.rb
@@ -1,144 +1,89 @@
-# Shorter routing method for project and project items
-# Since update to rails 4.1.9 we are now allowed to use `/` in project routing
-# so we use nested routing for project resources which include project and
-# project namespace. To avoid writing long methods every time we define shortcuts for
-# some of routing.
-#
-# For example instead of this:
-#
-#   namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
-#
-# We can simply use shortcut:
-#
-#   merge_request_path(merge_request)
-#
+# Shorter routing method for some project items
 module GitlabRoutingHelper
-  # Project
-  def project_path(project, *args)
-    namespace_project_path(project.namespace, project, *args)
-  end
-
-  def project_url(project, *args)
-    namespace_project_url(project.namespace, project, *args)
-  end
-
-  def edit_project_path(project, *args)
-    edit_namespace_project_path(project.namespace, project, *args)
-  end
-
-  def edit_project_url(project, *args)
-    edit_namespace_project_url(project.namespace, project, *args)
-  end
-
-  def project_files_path(project, *args)
-    namespace_project_tree_path(project.namespace, project, @ref || project.repository.root_ref)
-  end
-
-  def project_commits_path(project, *args)
-    namespace_project_commits_path(project.namespace, project, @ref || project.repository.root_ref)
-  end
-
-  def project_pipelines_path(project, *args)
-    namespace_project_pipelines_path(project.namespace, project, *args)
-  end
-
-  def project_environments_path(project, *args)
-    namespace_project_environments_path(project.namespace, project, *args)
-  end
+  extend ActiveSupport::Concern
 
-  def project_cycle_analytics_path(project, *args)
-    namespace_project_cycle_analytics_path(project.namespace, project, *args)
+  # Project
+  def project_tree_path(project, ref = nil, *args)
+    namespace_project_tree_path(project.namespace, project, ref || @ref || project.repository.root_ref, *args) # rubocop:disable Cop/ProjectPathHelper
   end
 
-  def project_jobs_path(project, *args)
-    namespace_project_jobs_path(project.namespace, project, *args)
+  def project_commits_path(project, ref = nil, *args)
+    namespace_project_commits_path(project.namespace, project, ref || @ref || project.repository.root_ref, *args) # rubocop:disable Cop/ProjectPathHelper
   end
 
   def project_ref_path(project, ref_name, *args)
-    namespace_project_commits_path(project.namespace, project, ref_name, *args)
-  end
-
-  def project_container_registry_path(project, *args)
-    namespace_project_container_registry_index_path(project.namespace, project, *args)
-  end
-
-  def activity_project_path(project, *args)
-    activity_namespace_project_path(project.namespace, project, *args)
+    project_commits_path(project, ref_name, *args)
   end
 
   def runners_path(project, *args)
-    namespace_project_runners_path(project.namespace, project, *args)
+    project_runners_path(project, *args)
   end
 
   def runner_path(runner, *args)
-    namespace_project_runner_path(@project.namespace, @project, runner, *args)
+    project_runner_path(@project, runner, *args)
   end
 
   def environment_path(environment, *args)
-    namespace_project_environment_path(environment.project.namespace, environment.project, environment, *args)
+    project_environment_path(environment.project, environment, *args)
   end
 
   def environment_metrics_path(environment, *args)
-    metrics_namespace_project_environment_path(environment.project.namespace, environment.project, environment, *args)
+    metrics_project_environment_path(environment.project, environment, *args)
   end
 
   def issue_path(entity, *args)
-    namespace_project_issue_path(entity.project.namespace, entity.project, entity, *args)
+    project_issue_path(entity.project, entity, *args)
   end
 
   def merge_request_path(entity, *args)
-    namespace_project_merge_request_path(entity.project.namespace, entity.project, entity, *args)
+    project_merge_request_path(entity.project, entity, *args)
   end
 
   def pipeline_path(pipeline, *args)
-    namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline.id, *args)
+    project_pipeline_path(pipeline.project, pipeline.id, *args)
   end
 
   def milestone_path(entity, *args)
-    namespace_project_milestone_path(entity.project.namespace, entity.project, entity, *args)
+    project_milestone_path(entity.project, entity, *args)
   end
 
   def issue_url(entity, *args)
-    namespace_project_issue_url(entity.project.namespace, entity.project, entity, *args)
+    project_issue_url(entity.project, entity, *args)
   end
 
   def merge_request_url(entity, *args)
-    namespace_project_merge_request_url(entity.project.namespace, entity.project, entity, *args)
+    project_merge_request_url(entity.project, entity, *args)
   end
 
   def pipeline_url(pipeline, *args)
-    namespace_project_pipeline_url(pipeline.project.namespace, pipeline.project, pipeline.id, *args)
+    project_pipeline_url(pipeline.project, pipeline.id, *args)
   end
 
   def pipeline_job_url(pipeline, build, *args)
-    namespace_project_job_url(pipeline.project.namespace, pipeline.project, build.id, *args)
+    project_job_url(pipeline.project, build.id, *args)
   end
 
   def commits_url(entity, *args)
-    namespace_project_commits_url(entity.project.namespace, entity.project, entity.ref, *args)
+    project_commits_url(entity.project, entity.ref, *args)
   end
 
   def commit_url(entity, *args)
-    namespace_project_commit_url(entity.project.namespace, entity.project, entity.sha, *args)
-  end
-
-  def project_snippet_url(entity, *args)
-    namespace_project_snippet_url(entity.project.namespace, entity.project, entity, *args)
+    project_commit_url(entity.project, entity.sha, *args)
   end
 
   def preview_markdown_path(project, *args)
     if @snippet.is_a?(PersonalSnippet)
       preview_markdown_snippets_path
     else
-      preview_markdown_namespace_project_path(project.namespace, project, *args)
+      preview_markdown_project_path(project, *args)
     end
   end
 
   def toggle_subscription_path(entity, *args)
     if entity.is_a?(Issue)
-      toggle_subscription_namespace_project_issue_path(entity.project.namespace, entity.project, entity)
+      toggle_subscription_project_issue_path(entity.project, entity)
     else
-      toggle_subscription_namespace_project_merge_request_path(entity.project.namespace, entity.project, entity)
+      toggle_subscription_project_merge_request_path(entity.project, entity)
     end
   end
 
@@ -152,32 +97,27 @@ module GitlabRoutingHelper
 
   ## Members
   def project_members_url(project, *args)
-    namespace_project_project_members_url(project.namespace, project)
+    project_project_members_url(project)
   end
 
   def project_member_path(project_member, *args)
-    namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member)
+    project_project_member_path(project_member.source, project_member)
   end
 
   def request_access_project_members_path(project, *args)
-    request_access_namespace_project_project_members_path(project.namespace, project)
+    request_access_project_project_members_path(project)
   end
 
   def leave_project_members_path(project, *args)
-    leave_namespace_project_project_members_path(project.namespace, project)
+    leave_project_project_members_path(project)
   end
 
   def approve_access_request_project_member_path(project_member, *args)
-    approve_access_request_namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member)
+    approve_access_request_project_project_member_path(project_member.source, project_member)
   end
 
   def resend_invite_project_member_path(project_member, *args)
-    resend_invite_namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member)
-  end
-
-  # Snippets
-  def personal_snippet_url(snippet, *args)
-    snippet_url(snippet)
+    resend_invite_project_project_member_path(project_member.source, project_member)
   end
 
   # Groups
@@ -211,50 +151,37 @@ module GitlabRoutingHelper
 
   def artifacts_action_path(path, project, build)
     action, path_params = path.split('/', 2)
-    args = [project.namespace, project, build, path_params]
+    args = [project, build, path_params]
 
     case action
     when 'download'
-      download_namespace_project_job_artifacts_path(*args)
+      download_project_job_artifacts_path(*args)
     when 'browse'
-      browse_namespace_project_job_artifacts_path(*args)
+      browse_project_job_artifacts_path(*args)
     when 'file'
-      file_namespace_project_job_artifacts_path(*args)
+      file_project_job_artifacts_path(*args)
     when 'raw'
-      raw_namespace_project_job_artifacts_path(*args)
+      raw_project_job_artifacts_path(*args)
     end
   end
 
   # Pipeline Schedules
   def pipeline_schedules_path(project, *args)
-    namespace_project_pipeline_schedules_path(project.namespace, project, *args)
+    project_pipeline_schedules_path(project, *args)
   end
 
   def pipeline_schedule_path(schedule, *args)
     project = schedule.project
-    namespace_project_pipeline_schedule_path(project.namespace, project, schedule, *args)
+    project_pipeline_schedule_path(project, schedule, *args)
   end
 
   def edit_pipeline_schedule_path(schedule)
     project = schedule.project
-    edit_namespace_project_pipeline_schedule_path(project.namespace, project, schedule)
+    edit_project_pipeline_schedule_path(project, schedule)
   end
 
   def take_ownership_pipeline_schedule_path(schedule, *args)
     project = schedule.project
-    take_ownership_namespace_project_pipeline_schedule_path(project.namespace, project, schedule, *args)
-  end
-
-  # Settings
-  def project_settings_integrations_path(project, *args)
-    namespace_project_settings_integrations_path(project.namespace, project, *args)
-  end
-
-  def project_settings_members_path(project, *args)
-    namespace_project_settings_members_path(project.namespace, project, *args)
-  end
-
-  def project_settings_ci_cd_path(project, *args)
-    namespace_project_settings_ci_cd_path(project.namespace, project, *args)
+    take_ownership_project_pipeline_schedule_path(project, schedule, *args)
   end
 end
diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 05177e58c5af3dfcd5e21cf78d18e79ed15de396..b5366519ed99d63317a6ed692e0c2af1aad9df7f 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -26,9 +26,9 @@ module IssuablesHelper
     project = issuable.project
 
     if issuable.is_a?(MergeRequest)
-      namespace_project_merge_request_path(project.namespace, project, issuable.iid, :json)
+      project_merge_request_path(project, issuable.iid, :json)
     else
-      namespace_project_issue_path(project.namespace, project, issuable.iid, :json)
+      project_issue_path(project, issuable.iid, :json)
     end
   end
 
@@ -197,7 +197,7 @@ module IssuablesHelper
 
   def issuable_initial_data(issuable)
     data = {
-      endpoint: namespace_project_issue_path(@project.namespace, @project, issuable),
+      endpoint: project_issue_path(@project, issuable),
       canUpdate: can?(current_user, :update_issue, issuable),
       canDestroy: can?(current_user, :destroy_issue, issuable),
       canMove: current_user ? issuable.can_move?(current_user) : false,
@@ -295,7 +295,7 @@ module IssuablesHelper
       mark_icon: (is_collapsed ? icon('check-square', class: 'todo-undone') : nil),
       issuable_id: issuable.id,
       issuable_type: issuable.class.name.underscore,
-      url: namespace_project_todos_path(@project.namespace, @project),
+      url: project_todos_path(@project),
       delete_path: (dashboard_todo_path(todo) if todo),
       placement: (is_collapsed ? 'left' : nil),
       container: (is_collapsed ? 'body' : nil)
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 82288f1da353e597b0599806d821e0e70e20d3ce..42b6cfdf02fe9c59951298526138c22d25ff7c5f 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -150,7 +150,7 @@ module IssuesHelper
              Gitlab::UrlBuilder.build(single_discussion.first_note)
            else
              project = merge_request.project
-             namespace_project_merge_request_path(project.namespace, project, merge_request)
+             project_merge_request_path(project, merge_request)
            end
 
     link_to link_text, path
diff --git a/app/helpers/labels_helper.rb b/app/helpers/labels_helper.rb
index 6baf6f31d8f6b3a702e81288c04fc1dc85ec9280..4b99de1b6a5c61deb314964456d150e4a3767263 100644
--- a/app/helpers/labels_helper.rb
+++ b/app/helpers/labels_helper.rb
@@ -57,14 +57,14 @@ module LabelsHelper
   def edit_label_path(label)
     case label
     when GroupLabel then edit_group_label_path(label.group, label)
-    when ProjectLabel then edit_namespace_project_label_path(label.project.namespace, label.project, label)
+    when ProjectLabel then edit_project_label_path(label.project, label)
     end
   end
 
   def destroy_label_path(label)
     case label
     when GroupLabel then group_label_path(label.group, label)
-    when ProjectLabel then namespace_project_label_path(label.project.namespace, label.project, label)
+    when ProjectLabel then project_label_path(label.project, label)
     end
   end
 
@@ -127,7 +127,7 @@ module LabelsHelper
     project = @target_project || @project
 
     if project
-      namespace_project_labels_path(project.namespace, project, :json)
+      project_labels_path(project, :json)
     else
       dashboard_labels_path(:json)
     end
@@ -149,8 +149,8 @@ module LabelsHelper
 
     case label_subscription_status(label, project)
     when 'group-level' then toggle_subscription_group_label_path(label.group, label)
-    when 'project-level' then toggle_subscription_namespace_project_label_path(project.namespace, project, label)
-    when 'unsubscribed' then toggle_subscription_namespace_project_label_path(project.namespace, project, label)
+    when 'project-level' then toggle_subscription_project_label_path(project, label)
+    when 'unsubscribed' then toggle_subscription_project_label_path(project, label)
     end
   end
 
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index 54d6f86fa114e16311a818067777048d32d27a40..78cf7b26a311bed689b0f289603b86672d29b066 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -1,8 +1,7 @@
 module MergeRequestsHelper
   def new_mr_path_from_push_event(event)
     target_project = event.project.default_merge_request_target
-    namespace_project_new_merge_request_path(
-      event.project.namespace,
+    project_new_merge_request_path(
       event.project,
       new_mr_from_push_event(event, target_project)
     )
@@ -48,8 +47,8 @@ module MergeRequestsHelper
   end
 
   def mr_change_branches_path(merge_request)
-    namespace_project_new_merge_request_path(
-      @project.namespace, @project,
+    project_new_merge_request_path(
+      @project,
       merge_request: {
         source_project_id: merge_request.source_project_id,
         target_project_id: merge_request.target_project_id,
@@ -82,9 +81,7 @@ module MergeRequestsHelper
   end
 
   def merge_request_version_path(project, merge_request, merge_request_diff, start_sha = nil)
-    diffs_namespace_project_merge_request_path(
-      project.namespace, project, merge_request,
-      diff_id: merge_request_diff.id, start_sha: start_sha)
+    diffs_project_merge_request_path(project, merge_request, diff_id: merge_request_diff.id, start_sha: start_sha)
   end
 
   def version_index(merge_request_diff)
diff --git a/app/helpers/milestones_helper.rb b/app/helpers/milestones_helper.rb
index f346e20e8074fc93271ea4d655f5ae18802310ff..8c7851dcfc21caf67f352e315ad9454217b411d5 100644
--- a/app/helpers/milestones_helper.rb
+++ b/app/helpers/milestones_helper.rb
@@ -1,7 +1,7 @@
 module MilestonesHelper
   def milestones_filter_path(opts = {})
     if @project
-      namespace_project_milestones_path(@project.namespace, @project, opts)
+      project_milestones_path(@project, opts)
     elsif @group
       group_milestones_path(@group, opts)
     else
@@ -11,7 +11,7 @@ module MilestonesHelper
 
   def milestones_label_path(opts = {})
     if @project
-      namespace_project_issues_path(@project.namespace, @project, opts)
+      project_issues_path(@project, opts)
     elsif @group
       issues_group_path(@group, opts)
     else
@@ -73,7 +73,7 @@ module MilestonesHelper
   def milestones_filter_dropdown_path
     project = @target_project || @project
     if project
-      namespace_project_milestones_path(project.namespace, project, :json)
+      project_milestones_path(project, :json)
     elsif @group
       group_milestones_path(@group, :json)
     else
@@ -120,7 +120,7 @@ module MilestonesHelper
 
   def milestone_merge_request_tab_path(milestone)
     if @project
-      merge_requests_namespace_project_milestone_path(@project.namespace, @project, milestone, format: :json)
+      merge_requests_project_milestone_path(@project, milestone, format: :json)
     elsif @group
       merge_requests_group_milestone_path(@group, milestone.safe_title, title: milestone.title, format: :json)
     else
@@ -130,7 +130,7 @@ module MilestonesHelper
 
   def milestone_participants_tab_path(milestone)
     if @project
-      participants_namespace_project_milestone_path(@project.namespace, @project, milestone, format: :json)
+      participants_project_milestone_path(@project, milestone, format: :json)
     elsif @group
       participants_group_milestone_path(@group, milestone.safe_title, title: milestone.title, format: :json)
     else
@@ -140,7 +140,7 @@ module MilestonesHelper
 
   def milestone_labels_tab_path(milestone)
     if @project
-      labels_namespace_project_milestone_path(@project.namespace, @project, milestone, format: :json)
+      labels_project_milestone_path(@project, milestone, format: :json)
     elsif @group
       labels_group_milestone_path(@group, milestone.safe_title, title: milestone.title, format: :json)
     else
diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb
index ecc6cd6c6c574bde63de5afe26fc87d3e6e819da..0a0881d95cf70617050fc23639327a27e2d1174c 100644
--- a/app/helpers/notes_helper.rb
+++ b/app/helpers/notes_helper.rb
@@ -81,11 +81,11 @@ module NotesHelper
 
       path_params = version_params.merge(anchor: discussion.line_code)
 
-      diffs_namespace_project_merge_request_path(discussion.project.namespace, discussion.project, discussion.noteable, path_params)
+      diffs_project_merge_request_path(discussion.project, discussion.noteable, path_params)
     elsif discussion.for_commit?
       anchor = discussion.line_code if discussion.diff_discussion?
 
-      namespace_project_commit_path(discussion.project.namespace, discussion.project, discussion.noteable, anchor: anchor)
+      project_commit_path(discussion.project, discussion.noteable, anchor: anchor)
     end
   end
 
@@ -93,12 +93,7 @@ module NotesHelper
     if @snippet.is_a?(PersonalSnippet)
       snippet_notes_path(@snippet)
     else
-      namespace_project_noteable_notes_path(
-        namespace_id: @project.namespace,
-        project_id: @project,
-        target_id: @noteable.id,
-        target_type: @noteable.class.name.underscore
-      )
+      project_noteable_notes_path(@project, target_id: @noteable.id, target_type: @noteable.class.name.underscore)
     end
   end
 
@@ -106,7 +101,7 @@ module NotesHelper
     if note.noteable.is_a?(PersonalSnippet)
       snippet_note_path(note.noteable, note)
     else
-      namespace_project_note_path(project.namespace, project, note)
+      project_note_path(project, note)
     end
   end
 
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 53d95c2de94bc6bfee93ce59f833eea9abaf6aee..5022b291f7fcfcbb93d488688788be7f2d447ccd 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -347,8 +347,7 @@ module ProjectsHelper
 
   def add_special_file_path(project, file_name:, commit_message: nil, branch_name: nil, context: nil)
     commit_message ||= s_("CommitMessage|Add %{file_name}") % { file_name: file_name.downcase }
-    namespace_project_new_blob_path(
-      project.namespace,
+    project_new_blob_path(
       project,
       project.default_branch || 'master',
       file_name:      file_name,
@@ -359,8 +358,7 @@ module ProjectsHelper
   end
 
   def add_koding_stack_path(project)
-    namespace_project_new_blob_path(
-      project.namespace,
+    project_new_blob_path(
       project,
       project.default_branch || 'master',
       file_name:      '.koding.yml',
@@ -414,8 +412,7 @@ module ProjectsHelper
 
   def contribution_guide_path(project)
     if project && contribution_guide = project.repository.contribution_guide
-      namespace_project_blob_path(
-        project.namespace,
+      project_blob_path(
         project,
         tree_join(project.default_branch,
                   contribution_guide.name)
@@ -445,7 +442,7 @@ module ProjectsHelper
 
   def project_wiki_path_with_version(proj, page, version, is_newest)
     url_params = is_newest ? {} : { version_id: version }
-    namespace_project_wiki_path(proj.namespace, proj, page, url_params)
+    project_wiki_path(proj, page, url_params)
   end
 
   def project_status_css_class(status)
@@ -470,8 +467,7 @@ module ProjectsHelper
 
   def filename_path(project, filename)
     if project && blob = project.repository.send(filename)
-      namespace_project_blob_path(
-        project.namespace,
+      project_blob_path(
         project,
         tree_join(project.default_branch, blob.name)
       )
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index f39a3bb55a88b6c455c10b19550f4f97ccbf4bb2..8c44f4b0934264af3f7ef2cbc1822c63eca6a66b 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -67,16 +67,16 @@ module SearchHelper
       ref = @ref || @project.repository.root_ref
 
       [
-        { category: "Current Project", label: "Files",          url: namespace_project_tree_path(@project.namespace, @project, ref) },
-        { category: "Current Project", label: "Commits",        url: namespace_project_commits_path(@project.namespace, @project, ref) },
-        { category: "Current Project", label: "Network",        url: namespace_project_network_path(@project.namespace, @project, ref) },
-        { category: "Current Project", label: "Graph",          url: namespace_project_graph_path(@project.namespace, @project, ref) },
-        { category: "Current Project", label: "Issues",         url: namespace_project_issues_path(@project.namespace, @project) },
-        { category: "Current Project", label: "Merge Requests", url: namespace_project_merge_requests_path(@project.namespace, @project) },
-        { category: "Current Project", label: "Milestones",     url: namespace_project_milestones_path(@project.namespace, @project) },
-        { category: "Current Project", label: "Snippets",       url: namespace_project_snippets_path(@project.namespace, @project) },
-        { category: "Current Project", label: "Members",        url: namespace_project_settings_members_path(@project.namespace, @project) },
-        { category: "Current Project", label: "Wiki",           url: namespace_project_wikis_path(@project.namespace, @project) }
+        { category: "Current Project", label: "Files",          url: project_tree_path(@project, ref) },
+        { category: "Current Project", label: "Commits",        url: project_commits_path(@project, ref) },
+        { category: "Current Project", label: "Network",        url: project_network_path(@project, ref) },
+        { category: "Current Project", label: "Graph",          url: project_graph_path(@project, ref) },
+        { category: "Current Project", label: "Issues",         url: project_issues_path(@project) },
+        { category: "Current Project", label: "Merge Requests", url: project_merge_requests_path(@project) },
+        { category: "Current Project", label: "Milestones",     url: project_milestones_path(@project) },
+        { category: "Current Project", label: "Snippets",       url: project_snippets_path(@project) },
+        { category: "Current Project", label: "Members",        url: project_settings_members_path(@project) },
+        { category: "Current Project", label: "Wiki",           url: project_wikis_path(@project) }
       ]
     else
       []
@@ -104,7 +104,7 @@ module SearchHelper
         id: p.id,
         value: "#{search_result_sanitize(p.name)}",
         label: "#{search_result_sanitize(p.name_with_namespace)}",
-        url: namespace_project_path(p.namespace, p)
+        url: project_path(p)
       }
     end
   end
@@ -133,7 +133,7 @@ module SearchHelper
       data: {
         'project-id' => @project.id,
         'username-params' => @users.to_json(only: [:id, :username]),
-        'base-endpoint' => namespace_project_path(@project.namespace, @project)
+        'base-endpoint' => project_path(@project)
       }
     }
   end
diff --git a/app/helpers/snippets_helper.rb b/app/helpers/snippets_helper.rb
index 2fd64b3441e4c33b9110f8034817c8c07a452c2e..b447d4952e7d4b8021784e4a2b5c6af612194cef 100644
--- a/app/helpers/snippets_helper.rb
+++ b/app/helpers/snippets_helper.rb
@@ -1,8 +1,7 @@
 module SnippetsHelper
   def reliable_snippet_path(snippet, opts = nil)
     if snippet.project_id?
-      namespace_project_snippet_path(snippet.project.namespace,
-                                     snippet.project, snippet, opts)
+      project_snippet_path(snippet.project, snippet, opts)
     else
       snippet_path(snippet, opts)
     end
@@ -10,7 +9,7 @@ module SnippetsHelper
 
   def download_snippet_path(snippet)
     if snippet.project_id
-      raw_namespace_project_snippet_path(@project.namespace, @project, snippet, inline: false)
+      raw_project_snippet_path(@project, snippet, inline: false)
     else
       raw_snippet_path(snippet, inline: false)
     end
@@ -21,7 +20,7 @@ module SnippetsHelper
   # @returns String, path to snippet index
   def subject_snippets_path(subject = nil, opts = nil)
     if subject.is_a?(Project)
-      namespace_project_snippets_path(subject.namespace, subject, opts)
+      project_snippets_path(subject, opts)
     else # assume subject === User
       dashboard_snippets_path(opts)
     end
diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb
index 1a55ee05996e232172812833488b2d453e2c4747..ee701076a1404a1e9b379e99615ddffb47de0ed6 100644
--- a/app/helpers/tab_helper.rb
+++ b/app/helpers/tab_helper.rb
@@ -107,8 +107,7 @@ module TabHelper
   def branches_tab_class
     if current_controller?(:protected_branches) ||
         current_controller?(:branches) ||
-        current_page?(namespace_project_repository_path(@project.namespace,
-                                                        @project))
+        current_page?(project_repository_path(@project))
       'active'
     end
   end
diff --git a/app/helpers/tags_helper.rb b/app/helpers/tags_helper.rb
index 31aaf9e5607aac967e262e55478828b8aef29d77..d000d6b1c0affe3073dd7055e028fadbc6d11c81 100644
--- a/app/helpers/tags_helper.rb
+++ b/app/helpers/tags_helper.rb
@@ -10,7 +10,7 @@ module TagsHelper
     }
 
     options = exist_opts.merge(options)
-    namespace_project_tags_path(@project.namespace, @project, @id, options)
+    project_tags_path(@project, @id, options)
   end
 
   def tag_list(project)
diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb
index 3d1b3a4711ab64049479a71a118ffe369622e804..2a7aa299e8389129953f63640a55ec8964093e5c 100644
--- a/app/helpers/todos_helper.rb
+++ b/app/helpers/todos_helper.rb
@@ -39,7 +39,7 @@ module TodosHelper
     anchor = dom_id(todo.note) if todo.note.present?
 
     if todo.for_commit?
-      namespace_project_commit_path(todo.project.namespace.becomes(Namespace), todo.project,
+      project_commit_path(todo.project,
                                     todo.target, anchor: anchor)
     else
       path = [todo.project.namespace.becomes(Namespace), todo.project, todo.target]
diff --git a/app/mailers/emails/issues.rb b/app/mailers/emails/issues.rb
index 0f84784129511bc8843c6b45dc3801b8563010b0..64ca2d2eacf95d293126bee57026a3c8ba47eb5f 100644
--- a/app/mailers/emails/issues.rb
+++ b/app/mailers/emails/issues.rb
@@ -31,7 +31,7 @@ module Emails
       setup_issue_mail(issue_id, recipient_id)
 
       @label_names = label_names
-      @labels_url = namespace_project_labels_url(@project.namespace, @project)
+      @labels_url = project_labels_url(@project)
       mail_answer_thread(@issue, issue_thread_options(updated_by_user_id, recipient_id))
     end
 
@@ -56,7 +56,7 @@ module Emails
     def setup_issue_mail(issue_id, recipient_id)
       @issue = Issue.find(issue_id)
       @project = @issue.project
-      @target_url = namespace_project_issue_url(@project.namespace, @project, @issue)
+      @target_url = project_issue_url(@project, @issue)
 
       @sent_notification = SentNotification.record(@issue, recipient_id, reply_key)
     end
diff --git a/app/mailers/emails/merge_requests.rb b/app/mailers/emails/merge_requests.rb
index ec27ac517db361dd62693c29cc68168500168abd..3626f8ce416131dd2a2716c98757c142cdc172c5 100644
--- a/app/mailers/emails/merge_requests.rb
+++ b/app/mailers/emails/merge_requests.rb
@@ -22,7 +22,7 @@ module Emails
       setup_merge_request_mail(merge_request_id, recipient_id)
 
       @label_names = label_names
-      @labels_url = namespace_project_labels_url(@project.namespace, @project)
+      @labels_url = project_labels_url(@project)
       mail_answer_thread(@merge_request, merge_request_thread_options(updated_by_user_id, recipient_id))
     end
 
@@ -59,7 +59,7 @@ module Emails
     def setup_merge_request_mail(merge_request_id, recipient_id)
       @merge_request = MergeRequest.find(merge_request_id)
       @project = @merge_request.project
-      @target_url = namespace_project_merge_request_url(@project.namespace, @project, @merge_request)
+      @target_url = project_merge_request_url(@project, @merge_request)
 
       @sent_notification = SentNotification.record(@merge_request, recipient_id, reply_key)
     end
diff --git a/app/mailers/emails/notes.rb b/app/mailers/emails/notes.rb
index 00707a0023eefc4868b6565c9d31d6ceef07e9e8..77a82b895cea293604bb89da16f9ca0f4594c443 100644
--- a/app/mailers/emails/notes.rb
+++ b/app/mailers/emails/notes.rb
@@ -4,7 +4,7 @@ module Emails
       setup_note_mail(note_id, recipient_id)
 
       @commit = @note.noteable
-      @target_url = namespace_project_commit_url(*note_target_url_options)
+      @target_url = project_commit_url(*note_target_url_options)
       mail_answer_thread(@commit, note_thread_options(recipient_id))
     end
 
@@ -12,7 +12,7 @@ module Emails
       setup_note_mail(note_id, recipient_id)
 
       @issue = @note.noteable
-      @target_url = namespace_project_issue_url(*note_target_url_options)
+      @target_url = project_issue_url(*note_target_url_options)
       mail_answer_thread(@issue, note_thread_options(recipient_id))
     end
 
@@ -20,7 +20,7 @@ module Emails
       setup_note_mail(note_id, recipient_id)
 
       @merge_request = @note.noteable
-      @target_url = namespace_project_merge_request_url(*note_target_url_options)
+      @target_url = project_merge_request_url(*note_target_url_options)
       mail_answer_thread(@merge_request, note_thread_options(recipient_id))
     end
 
@@ -28,7 +28,7 @@ module Emails
       setup_note_mail(note_id, recipient_id)
 
       @snippet = @note.noteable
-      @target_url = namespace_project_snippet_url(*note_target_url_options)
+      @target_url = project_snippet_url(*note_target_url_options)
       mail_answer_thread(@snippet, note_thread_options(recipient_id))
     end
 
@@ -43,7 +43,7 @@ module Emails
     private
 
     def note_target_url_options
-      [@project.namespace, @project, @note.noteable, anchor: "note_#{@note.id}"]
+      [@project, @note.noteable, anchor: "note_#{@note.id}"]
     end
 
     def note_thread_options(recipient_id)
diff --git a/app/mailers/emails/projects.rb b/app/mailers/emails/projects.rb
index e0af70814114e8fed0136ae01d78ba9caf8eb58e..761d873c01c48b512a7ce4f95de423715fc729ae 100644
--- a/app/mailers/emails/projects.rb
+++ b/app/mailers/emails/projects.rb
@@ -3,7 +3,7 @@ module Emails
     def project_was_moved_email(project_id, user_id, old_path_with_namespace)
       @current_user = @user = User.find user_id
       @project = Project.find project_id
-      @target_url = namespace_project_url(@project.namespace, @project)
+      @target_url = project_url(@project)
       @old_path_with_namespace = old_path_with_namespace
       mail(to: @user.notification_email,
            subject: subject("Project was moved"))
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index f315e38bcaa308fd51b9ff492189280711950611..eaac6fcb548aac34a42da1ee4152c574f1edf79e 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -1,5 +1,6 @@
 class Notify < BaseMailer
   include ActionDispatch::Routing::PolymorphicRoutes
+  include GitlabRoutingHelper
 
   include Emails::Issues
   include Emails::MergeRequests
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 66c96d0f586a5210a5370dadadfdc67b53cd305f..eb24ff00ce39e179206b8346ff5fcb534d51109b 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -218,8 +218,7 @@ class Environment < ActiveRecord::Base
   end
 
   def etag_cache_key
-    Gitlab::Routing.url_helpers.namespace_project_environments_path(
-      project.namespace,
+    Gitlab::Routing.url_helpers.project_environments_path(
       project,
       format: :json)
   end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 3a9a6dba601bb3641a0e2e6ac00a098f0949dd79..a97e88f76f6de693390a21cd6e56b9e977f1f6b7 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -295,11 +295,7 @@ class Issue < ActiveRecord::Base
   end
 
   def expire_etag_cache
-    key = Gitlab::Routing.url_helpers.realtime_changes_namespace_project_issue_path(
-      project.namespace,
-      project,
-      self
-    )
+    key = Gitlab::Routing.url_helpers.realtime_changes_project_issue_path(project, self)
     Gitlab::EtagCaching::Store.new.touch(key)
   end
 end
diff --git a/app/models/note.rb b/app/models/note.rb
index ca6999427c08bf6ff086643401d70ce4b4ab020b..dfd435bcdf6c6883d31325e2d3b0ae4e22b541bc 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -330,8 +330,7 @@ class Note < ActiveRecord::Base
   def expire_etag_cache
     return unless for_issue?
 
-    key = Gitlab::Routing.url_helpers.namespace_project_noteable_notes_path(
-      noteable.project.namespace,
+    key = Gitlab::Routing.url_helpers.project_noteable_notes_path(
       noteable.project,
       target_type: noteable_type.underscore,
       target_id: noteable.id
diff --git a/app/models/project.rb b/app/models/project.rb
index 8e9e42d28ab90a6990d0021b97b026f4e5fbf5c9..315e1a6cb17b42f782b9afd03778cd58b1310c96 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -675,7 +675,7 @@ class Project < ActiveRecord::Base
   end
 
   def web_url
-    Gitlab::Routing.url_helpers.namespace_project_url(self.namespace, self)
+    Gitlab::Routing.url_helpers.project_url(self)
   end
 
   def new_issue_address(author)
@@ -851,7 +851,7 @@ class Project < ActiveRecord::Base
   def avatar_url(**args)
     # We use avatar_path instead of overriding avatar_url because of carrierwave.
     # See https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11001/diffs#note_28659864
-    avatar_path(args) || (Gitlab::Routing.url_helpers.namespace_project_avatar_url(namespace, self) if avatar_in_git)
+    avatar_path(args) || (Gitlab::Routing.url_helpers.project_avatar_url(self) if avatar_in_git)
   end
 
   # For compatibility with old code
diff --git a/app/models/project_services/gitlab_issue_tracker_service.rb b/app/models/project_services/gitlab_issue_tracker_service.rb
index ad4eb9536e1157ba3a0141e07b057a71e7dcca44..5e31f393bbeecff1ebe58b269086f2d4a414a6f3 100644
--- a/app/models/project_services/gitlab_issue_tracker_service.rb
+++ b/app/models/project_services/gitlab_issue_tracker_service.rb
@@ -12,26 +12,26 @@ class GitlabIssueTrackerService < IssueTrackerService
   end
 
   def project_url
-    namespace_project_issues_url(project.namespace, project)
+    project_issues_url(project)
   end
 
   def new_issue_url
-    new_namespace_project_issue_url(namespace_id: project.namespace, project_id: project)
+    new_project_issue_url(project)
   end
 
   def issue_url(iid)
-    namespace_project_issue_url(namespace_id: project.namespace, project_id: project, id: iid)
+    project_issue_url(project, id: iid)
   end
 
   def project_path
-    namespace_project_issues_path(project.namespace, project)
+    project_issues_path(project)
   end
 
   def new_issue_path
-    new_namespace_project_issue_path(namespace_id: project.namespace, project_id: project)
+    new_project_issue_path(project)
   end
 
   def issue_path(iid)
-    namespace_project_issue_path(namespace_id: project.namespace, project_id: project, id: iid)
+    project_issue_path(project, id: iid)
   end
 end
diff --git a/app/models/project_services/issue_tracker_service.rb b/app/models/project_services/issue_tracker_service.rb
index fcc7c4bec06eeee03952829cdb16f34d2e4583b1..1fa4cd4db301870415d1568ddbce232e031837f7 100644
--- a/app/models/project_services/issue_tracker_service.rb
+++ b/app/models/project_services/issue_tracker_service.rb
@@ -21,7 +21,7 @@ class IssueTrackerService < Service
   end
 
   def project_path
-    project_url
+    read_attribute(:project_url)
   end
 
   def new_issue_path
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index 00328892b4abf2ebdfc6947111f172e4207399ae..8af642b44aa545db7a99100f841decb46a88dfea 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -152,8 +152,8 @@ class JiraService < IssueTrackerService
         url: resource_url(user_path(author))
       },
       project: {
-        name: self.project.path_with_namespace,
-        url: resource_url(namespace_project_path(project.namespace, self.project))
+        name: project.path_with_namespace,
+        url: resource_url(namespace_project_path(project.namespace, project)) # rubocop:disable Cop/ProjectPathHelper
       },
       entity: {
         name: noteable_type.humanize.downcase,
diff --git a/app/models/project_wiki.rb b/app/models/project_wiki.rb
index f26ee57510c0127a30e7a9b2dfe183a17c9c4a1b..beaadbbd1ab118e8cdad1bc21cc2ffe5c129870b 100644
--- a/app/models/project_wiki.rb
+++ b/app/models/project_wiki.rb
@@ -31,7 +31,7 @@ class ProjectWiki
   end
 
   def web_url
-    Gitlab::Routing.url_helpers.namespace_project_wiki_url(@project.namespace, @project, :home)
+    Gitlab::Routing.url_helpers.project_wiki_url(@project, :home)
   end
 
   def url_to_repo
diff --git a/app/presenters/merge_request_presenter.rb b/app/presenters/merge_request_presenter.rb
index 8bf35953d29d20390c503246e64607518367e3fd..6ba1d3165e9bf2db0e2216e8b7fabcb3cea6b627 100644
--- a/app/presenters/merge_request_presenter.rb
+++ b/app/presenters/merge_request_presenter.rb
@@ -20,30 +20,25 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
 
   def cancel_merge_when_pipeline_succeeds_path
     if can_cancel_merge_when_pipeline_succeeds?(current_user)
-      cancel_merge_when_pipeline_succeeds_namespace_project_merge_request_path(
-        project.namespace,
-        project,
-        merge_request)
+      cancel_merge_when_pipeline_succeeds_project_merge_request_path(project, merge_request)
     end
   end
 
   def create_issue_to_resolve_discussions_path
     if can?(current_user, :create_issue, project) && project.issues_enabled?
-      new_namespace_project_issue_path(project.namespace,
-                                       project,
-                                       merge_request_to_resolve_discussions_of: iid)
+      new_project_issue_path(project, merge_request_to_resolve_discussions_of: iid)
     end
   end
 
   def remove_wip_path
     if can?(current_user, :update_merge_request, merge_request.project)
-      remove_wip_namespace_project_merge_request_path(project.namespace, project, merge_request)
+      remove_wip_project_merge_request_path(project, merge_request)
     end
   end
 
   def merge_path
     if can_be_merged_by?(current_user)
-      merge_namespace_project_merge_request_path(project.namespace, project, merge_request)
+      merge_project_merge_request_path(project, merge_request)
     end
   end
 
@@ -55,7 +50,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
         notice_now: edit_in_new_fork_notice_now
       }
 
-      namespace_project_forks_path(merge_request.project.namespace, merge_request.project,
+      project_forks_path(merge_request.project,
                                    namespace_key: current_user.namespace.id,
                                    continue: continue_params)
     end
@@ -69,7 +64,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
         notice_now: edit_in_new_fork_notice_now
       }
 
-      namespace_project_forks_path(project.namespace, project,
+      project_forks_path(project,
                                    namespace_key: current_user.namespace.id,
                                    continue: continue_params)
     end
@@ -77,19 +72,19 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
 
   def conflict_resolution_path
     if conflicts.can_be_resolved_in_ui? && conflicts.can_be_resolved_by?(current_user)
-      conflicts_namespace_project_merge_request_path(project.namespace, project, merge_request)
+      conflicts_project_merge_request_path(project, merge_request)
     end
   end
 
   def target_branch_commits_path
     if target_branch_exists?
-      namespace_project_commits_path(project.namespace, project, target_branch)
+      project_commits_path(project, target_branch)
     end
   end
 
   def source_branch_path
     if source_branch_exists?
-      namespace_project_branch_path(source_project.namespace, source_project, source_branch)
+      project_branch_path(source_project, source_branch)
     end
   end
 
@@ -99,7 +94,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
 
     if source_branch_exists?
       namespace = link_to(namespace, project_path(source_project))
-      branch = link_to(branch, namespace_project_commits_path(source_project.namespace, source_project, source_branch))
+      branch = link_to(branch, project_commits_path(source_project, source_branch))
     end
 
     if for_fork?
@@ -136,7 +131,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
                                                     merge_request: merge_request,
                                                     closes_issues: closing_issues
                                                    ).assignable_issues
-    path = assign_related_issues_namespace_project_merge_request_path(project.namespace, project, merge_request)
+    path = assign_related_issues_project_merge_request_path(project, merge_request)
     if issues.present?
       pluralize_this_issue = issues.count > 1 ? "these issues" : "this issue"
       link_to "Assign yourself to #{pluralize_this_issue}", path, method: :post
diff --git a/app/serializers/build_action_entity.rb b/app/serializers/build_action_entity.rb
index 301b718d06000af44d91bd882015fac63268b30d..f2d76a8ad813b1f0d3854e74b407a3236f62f299 100644
--- a/app/serializers/build_action_entity.rb
+++ b/app/serializers/build_action_entity.rb
@@ -6,10 +6,7 @@ class BuildActionEntity < Grape::Entity
   end
 
   expose :path do |build|
-    play_namespace_project_job_path(
-      build.project.namespace,
-      build.project,
-      build)
+    play_project_job_path(build.project, build)
   end
 
   expose :playable?, as: :playable
diff --git a/app/serializers/build_artifact_entity.rb b/app/serializers/build_artifact_entity.rb
index cb55c98f7c6db042c27de703d6296c784b2b1934..6e0e33bc09b758d48b5ea437dd405d9c5caebe53 100644
--- a/app/serializers/build_artifact_entity.rb
+++ b/app/serializers/build_artifact_entity.rb
@@ -9,24 +9,15 @@ class BuildArtifactEntity < Grape::Entity
   expose :artifacts_expire_at, as: :expire_at
 
   expose :path do |job|
-    download_namespace_project_job_artifacts_path(
-      project.namespace,
-      project,
-      job)
+    download_project_job_artifacts_path(project, job)
   end
 
   expose :keep_path, if: -> (*) { job.has_expiring_artifacts? } do |job|
-    keep_namespace_project_job_artifacts_path(
-      project.namespace,
-      project,
-      job)
+    keep_project_job_artifacts_path(project, job)
   end
 
   expose :browse_path do |job|
-    browse_namespace_project_job_artifacts_path(
-      project.namespace,
-      project,
-      job)
+    browse_project_job_artifacts_path(project, job)
   end
 
   private
diff --git a/app/serializers/build_details_entity.rb b/app/serializers/build_details_entity.rb
index eeb5399aa8b4becd36cf373740d041aa337c01fe..20f9938f038333d38e63c33055e3e5dd199f15f2 100644
--- a/app/serializers/build_details_entity.rb
+++ b/app/serializers/build_details_entity.rb
@@ -7,7 +7,7 @@ class BuildDetailsEntity < JobEntity
 
   expose :erased_by, if: -> (*) { build.erased? }, using: UserEntity
   expose :erase_path, if: -> (*) { build.erasable? && can?(current_user, :update_build, project) } do |build|
-    erase_namespace_project_job_path(project.namespace, project, build)
+    erase_project_job_path(project, build)
   end
 
   expose :merge_request, if: -> (*) { can?(current_user, :read_merge_request, build.merge_request) } do
@@ -16,23 +16,23 @@ class BuildDetailsEntity < JobEntity
     end
 
     expose :path do |build|
-      namespace_project_merge_request_path(project.namespace, project, build.merge_request)
+      project_merge_request_path(project, build.merge_request)
     end
   end
 
   expose :new_issue_path, if: -> (*) { can?(request.current_user, :create_issue, project) && build.failed? } do |build|
-    new_namespace_project_issue_path(project.namespace, project, issue: build_failed_issue_options)
+    new_project_issue_path(project, issue: build_failed_issue_options)
   end
 
   expose :raw_path do |build|
-    raw_namespace_project_job_path(project.namespace, project, build)
+    raw_project_job_path(project, build)
   end
 
   private
 
   def build_failed_issue_options
     { title: "Build Failed ##{build.id}",
-      description: namespace_project_job_path(project.namespace, project, build) }
+      description: project_job_path(project, build) }
   end
 
   def current_user
diff --git a/app/serializers/commit_entity.rb b/app/serializers/commit_entity.rb
index 31763955f978d606c1c90ef2d9913407fb519d4a..e4e9d8ef90a30ead66c371fadea3d25c4242507e 100644
--- a/app/serializers/commit_entity.rb
+++ b/app/serializers/commit_entity.rb
@@ -8,16 +8,10 @@ class CommitEntity < API::Entities::RepoCommit
   end
 
   expose :commit_url do |commit|
-    namespace_project_commit_url(
-      request.project.namespace,
-      request.project,
-      commit)
+    project_commit_url(request.project, commit)
   end
 
   expose :commit_path do |commit|
-    namespace_project_commit_path(
-      request.project.namespace,
-      request.project,
-      commit)
+    project_commit_path(request.project, commit)
   end
 end
diff --git a/app/serializers/deployment_entity.rb b/app/serializers/deployment_entity.rb
index e493c9162fd6a1a1a3a58915f5fde0c1d5f8a9ca..241c689bccdd6822630b198c0a1101946da9d9ca 100644
--- a/app/serializers/deployment_entity.rb
+++ b/app/serializers/deployment_entity.rb
@@ -11,10 +11,7 @@ class DeploymentEntity < Grape::Entity
     end
 
     expose :ref_path do |deployment|
-      namespace_project_tree_path(
-        deployment.project.namespace,
-        deployment.project,
-        id: deployment.ref)
+      project_tree_path(deployment.project, id: deployment.ref)
     end
   end
 
diff --git a/app/serializers/environment_entity.rb b/app/serializers/environment_entity.rb
index 4e8a3c67b21b11ec9e40fa8ac7e637b644b0edbe..dcaccc3007db7910947d06f9f71937b30bba4405 100644
--- a/app/serializers/environment_entity.rb
+++ b/app/serializers/environment_entity.rb
@@ -10,32 +10,20 @@ class EnvironmentEntity < Grape::Entity
   expose :stop_action?
 
   expose :metrics_path, if: -> (environment, _) { environment.has_metrics? } do |environment|
-    metrics_namespace_project_environment_path(
-      environment.project.namespace,
-      environment.project,
-      environment)
+    metrics_project_environment_path(environment.project, environment)
   end
 
   expose :environment_path do |environment|
-    namespace_project_environment_path(
-      environment.project.namespace,
-      environment.project,
-      environment)
+    project_environment_path(environment.project, environment)
   end
 
   expose :stop_path do |environment|
-    stop_namespace_project_environment_path(
-      environment.project.namespace,
-      environment.project,
-      environment)
+    stop_project_environment_path(environment.project, environment)
   end
 
   expose :terminal_path, if: ->(environment, _) { environment.has_terminals? } do |environment|
     can?(request.current_user, :admin_environment, environment.project) &&
-      terminal_namespace_project_environment_path(
-        environment.project.namespace,
-        environment.project,
-        environment)
+      terminal_project_environment_path(environment.project, environment)
   end
 
   expose :created_at, :updated_at
diff --git a/app/serializers/issue_entity.rb b/app/serializers/issue_entity.rb
index 35df95549b7daa5d65670dc6d3dcdc679496bf5d..c189a4992da83b7d3b9f43f622a2bc7ef327aba6 100644
--- a/app/serializers/issue_entity.rb
+++ b/app/serializers/issue_entity.rb
@@ -11,6 +11,6 @@ class IssueEntity < IssuableEntity
   expose :labels, using: LabelEntity
 
   expose :web_url do |issue|
-    namespace_project_issue_path(issue.project.namespace, issue.project, issue)
+    project_issue_path(issue.project, issue)
   end
 end
diff --git a/app/serializers/merge_request_entity.rb b/app/serializers/merge_request_entity.rb
index 7bb981041cc577f9b60abe8ff413eb96653ee35c..7ec2dbd0efe812dbf66851a8b2b26b9eee148388 100644
--- a/app/serializers/merge_request_entity.rb
+++ b/app/serializers/merge_request_entity.rb
@@ -99,9 +99,7 @@ class MergeRequestEntity < IssuableEntity
 
   expose :new_blob_path do |merge_request|
     if can?(current_user, :push_code, merge_request.project)
-      namespace_project_new_blob_path(merge_request.project.namespace,
-                                      merge_request.project,
-                                      merge_request.source_branch)
+      project_new_blob_path(merge_request.project, merge_request.source_branch)
     end
   end
 
@@ -134,30 +132,19 @@ class MergeRequestEntity < IssuableEntity
   end
 
   expose :email_patches_path do |merge_request|
-    namespace_project_merge_request_path(merge_request.project.namespace,
-                                         merge_request.project,
-                                         merge_request,
-                                         format: :patch)
+    project_merge_request_path(merge_request.project, merge_request, format: :patch)
   end
 
   expose :plain_diff_path do |merge_request|
-    namespace_project_merge_request_path(merge_request.project.namespace,
-                                         merge_request.project,
-                                         merge_request,
-                                         format: :diff)
+    project_merge_request_path(merge_request.project, merge_request, format: :diff)
   end
 
   expose :status_path do |merge_request|
-    namespace_project_merge_request_path(merge_request.target_project.namespace,
-                                         merge_request.target_project,
-                                         merge_request,
-                                         format: :json)
+    project_merge_request_path(merge_request.target_project, merge_request, format: :json)
   end
 
   expose :ci_environments_status_path do |merge_request|
-    ci_environments_status_namespace_project_merge_request_path(merge_request.project.namespace,
-                                                                merge_request.project,
-                                                                merge_request)
+    ci_environments_status_project_merge_request_path(merge_request.project, merge_request)
   end
 
   expose :merge_commit_message_with_description do |merge_request|
@@ -173,9 +160,7 @@ class MergeRequestEntity < IssuableEntity
   end
 
   expose :commit_change_content_path do |merge_request|
-    commit_change_content_namespace_project_merge_request_path(merge_request.project.namespace,
-                                                               merge_request.project,
-                                                               merge_request)
+    commit_change_content_project_merge_request_path(merge_request.project, merge_request)
   end
 
   private
diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb
index 6d1fd9d459f072d2333550173d4510fa51fb641f..c4f000b0ca3f4900395ea8ccba6b14355a338b09 100644
--- a/app/serializers/pipeline_entity.rb
+++ b/app/serializers/pipeline_entity.rb
@@ -10,10 +10,7 @@ class PipelineEntity < Grape::Entity
   expose :created_at, :updated_at
 
   expose :path do |pipeline|
-    namespace_project_pipeline_path(
-      pipeline.project.namespace,
-      pipeline.project,
-      pipeline)
+    project_pipeline_path(pipeline.project, pipeline)
   end
 
   expose :flags do
@@ -48,15 +45,11 @@ class PipelineEntity < Grape::Entity
   expose :commit, using: CommitEntity
 
   expose :retry_path, if: -> (*) { can_retry? }  do |pipeline|
-    retry_namespace_project_pipeline_path(pipeline.project.namespace,
-                                          pipeline.project,
-                                          pipeline.id)
+    retry_project_pipeline_path(pipeline.project, pipeline)
   end
 
   expose :cancel_path, if: -> (*) { can_cancel? } do |pipeline|
-    cancel_namespace_project_pipeline_path(pipeline.project.namespace,
-                                           pipeline.project,
-                                           pipeline.id)
+    cancel_project_pipeline_path(pipeline.project, pipeline)
   end
 
   expose :yaml_errors, if: -> (pipeline, _) { pipeline.has_yaml_errors? }
diff --git a/app/serializers/project_entity.rb b/app/serializers/project_entity.rb
index a471a7e6a882540be3d0232af0abcf89233a3eee..dc283ba3e7aa9483d2bcab7e78c42eae440fe1d1 100644
--- a/app/serializers/project_entity.rb
+++ b/app/serializers/project_entity.rb
@@ -5,7 +5,7 @@ class ProjectEntity < Grape::Entity
   expose :name
 
   expose :full_path do |project|
-    namespace_project_path(project.namespace, project)
+    project_path(project)
   end
 
   expose :full_name do |project|
diff --git a/app/serializers/runner_entity.rb b/app/serializers/runner_entity.rb
index ed7dacc2dbd6375a724e989e1067f3f753ffe019..e9999a36d8ab6c739fa8b3b1d4669330534545fc 100644
--- a/app/serializers/runner_entity.rb
+++ b/app/serializers/runner_entity.rb
@@ -5,7 +5,7 @@ class RunnerEntity < Grape::Entity
 
   expose :edit_path,
     if: -> (*) { can?(request.current_user, :admin_build, project) && runner.specific? } do |runner|
-    edit_namespace_project_runner_path(project.namespace, project, runner)
+    edit_project_runner_path(project, runner)
   end
 
   private
diff --git a/app/serializers/stage_entity.rb b/app/serializers/stage_entity.rb
index cee0089056fb4f0da7c10593ab8a91b145a2800d..4523b15152e6a41e429af52dcbcc371450ba102c 100644
--- a/app/serializers/stage_entity.rb
+++ b/app/serializers/stage_entity.rb
@@ -14,16 +14,14 @@ class StageEntity < Grape::Entity
   expose :detailed_status, as: :status, with: StatusEntity
 
   expose :path do |stage|
-    namespace_project_pipeline_path(
-      stage.pipeline.project.namespace,
+    project_pipeline_path(
       stage.pipeline.project,
       stage.pipeline,
       anchor: stage.name)
   end
 
   expose :dropdown_path do |stage|
-    stage_namespace_project_pipeline_path(
-      stage.pipeline.project.namespace,
+    stage_project_pipeline_path(
       stage.pipeline.project,
       stage.pipeline,
       stage: stage.name,
diff --git a/app/services/merge_requests/get_urls_service.rb b/app/services/merge_requests/get_urls_service.rb
index 5dd40e07c0d8646e51abc77bcc91f3b4bdc331c4..668a1741736805d8296cd894fc5e5d3556382665 100644
--- a/app/services/merge_requests/get_urls_service.rb
+++ b/app/services/merge_requests/get_urls_service.rb
@@ -49,13 +49,13 @@ module MergeRequests
 
     def url_for_new_merge_request(branch_name)
       merge_request_params = { source_branch: branch_name }
-      url = Gitlab::Routing.url_helpers.namespace_project_new_merge_request_url(project.namespace, project, merge_request: merge_request_params)
+      url = Gitlab::Routing.url_helpers.project_new_merge_request_url(project, merge_request: merge_request_params)
       { branch_name: branch_name, url: url, new_merge_request: true }
     end
 
     def url_for_existing_merge_request(merge_request)
       target_project = merge_request.target_project
-      url = Gitlab::Routing.url_helpers.namespace_project_merge_request_url(target_project.namespace, target_project, merge_request)
+      url = Gitlab::Routing.url_helpers.project_merge_request_url(target_project, merge_request)
       { branch_name: merge_request.source_branch, url: url, new_merge_request: false }
     end
   end
diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb
index 0837c07e6aa8c92f92998d16abc75db77f256a9a..da0f21d449ab6909bbb94118a8aa6aa0c6f7410b 100644
--- a/app/services/system_note_service.rb
+++ b/app/services/system_note_service.rb
@@ -282,7 +282,7 @@ module SystemNoteService
     body = "changed this line in"
     if version_params = merge_request.version_params_for(diff_refs)
       line_code = change_position.line_code(project.repository)
-      url = url_helpers.diffs_namespace_project_merge_request_url(project.namespace, project, merge_request, version_params.merge(anchor: line_code))
+      url = url_helpers.diffs_project_merge_request_url(project, merge_request, version_params.merge(anchor: line_code))
 
       body << " [version #{version_index} of the diff](#{url})"
     else
@@ -413,7 +413,7 @@ module SystemNoteService
   #
   #   "created branch `201-issue-branch-button`"
   def new_issue_branch(issue, project, author, branch)
-    link = url_helpers.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch)
+    link = url_helpers.project_compare_url(project, from: project.default_branch, to: branch)
 
     body = "created branch [`#{branch}`](#{link})"
 
@@ -630,10 +630,9 @@ module SystemNoteService
   def diff_comparison_url(merge_request, project, oldrev)
     diff_id = merge_request.merge_request_diff.id
 
-    url_helpers.diffs_namespace_project_merge_request_url(
-      project.namespace,
+    url_helpers.diffs_project_merge_request_url(
       project,
-      merge_request.iid,
+      merge_request,
       diff_id: diff_id,
       start_sha: oldrev
     )
diff --git a/app/views/admin/projects/_projects.html.haml b/app/views/admin/projects/_projects.html.haml
index 596f367a00d8ce910da4e884729c6debb7c14f17..c69c27611893d2c2b9aef822acb3ff09672fab8a 100644
--- a/app/views/admin/projects/_projects.html.haml
+++ b/app/views/admin/projects/_projects.html.haml
@@ -4,7 +4,7 @@
       - @projects.each_with_index do |project|
         %li.project-row{ class: ('no-description' if project.description.blank?) }
           .controls
-            = link_to 'Edit', edit_namespace_project_path(project.namespace, project), id: "edit_#{dom_id(project)}", class: "btn"
+            = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn"
             = link_to 'Delete', [project.namespace.becomes(Namespace), project], data: { confirm: remove_project_message(project) }, method: :delete, class: "btn btn-remove"
           .stats
             %span.badge
diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml
index 08a8f62711371168ded13b9e83cd4195687e3f3d..fb9057b2db5d56d17a6bfeb70a7b4a1862b65e2b 100644
--- a/app/views/admin/projects/show.html.haml
+++ b/app/views/admin/projects/show.html.haml
@@ -108,7 +108,7 @@
       .panel-heading
         Transfer project
       .panel-body
-        = form_for @project, url: transfer_admin_namespace_project_path(@project.namespace, @project), method: :put, html: { class: 'form-horizontal' } do |f|
+        = form_for @project, url: transfer_admin_project_path(@project), method: :put, html: { class: 'form-horizontal' } do |f|
           .form-group
             = f.label :new_namespace_id, "Namespace", class: 'control-label'
             .col-sm-10
@@ -128,7 +128,7 @@
       .panel-heading
         Repository check
       .panel-body
-        = form_for @project, url: repository_check_admin_namespace_project_path(@project.namespace, @project), method: :post do |f|
+        = form_for @project, url: repository_check_admin_project_path(@project), method: :post do |f|
           .form-group
             - if @project.last_repository_check_at.nil?
               This repository has never been checked.
diff --git a/app/views/admin/runners/show.html.haml b/app/views/admin/runners/show.html.haml
index 801430e525e73ee5491e47d0e9292ad1941fba03..df2bf27be9d1d9a12fa160592a5be9372f5be69a 100644
--- a/app/views/admin/runners/show.html.haml
+++ b/app/views/admin/runners/show.html.haml
@@ -85,7 +85,7 @@
         %tr.build
           %td.id
             - if project
-              = link_to namespace_project_job_path(project.namespace, project, build) do
+              = link_to project_job_path(project, build) do
                 %strong ##{build.id}
             - else
               %strong ##{build.id}
diff --git a/app/views/admin/users/projects.html.haml b/app/views/admin/users/projects.html.haml
index 15eaf1c0e67f16c845e0404646a22a0140a2df9f..4a440f3f6d4182d2d9428ff25988ae9504fc52ab 100644
--- a/app/views/admin/users/projects.html.haml
+++ b/app/views/admin/users/projects.html.haml
@@ -33,7 +33,7 @@
           - member = project.team.find_member(@user.id)
           %li.project_member
             .list-item-name
-              = link_to admin_namespace_project_path(project.namespace, project), class: dom_class(project) do
+              = link_to admin_project_path(project), class: dom_class(project) do
                 = project.name_with_namespace
 
             - if member
@@ -44,5 +44,5 @@
                   %span.light.vertical-align-middle= member.human_access
 
                   - if member.respond_to? :project
-                    = link_to namespace_project_project_member_path(project.namespace, project, member), data: { confirm: remove_member_message(member) }, remote: true, method: :delete, class: "btn-xs btn btn-remove prepend-left-10", title: 'Remove user from project' do
+                    = link_to project_project_member_path(project, member), data: { confirm: remove_member_message(member) }, remote: true, method: :delete, class: "btn-xs btn btn-remove prepend-left-10", title: 'Remove user from project' do
                       %i.fa.fa-times
diff --git a/app/views/discussions/_new_issue_for_all_discussions.html.haml b/app/views/discussions/_new_issue_for_all_discussions.html.haml
index ca9e0e8728a47b3532b0cd8e4534514477c23174..cab346fb514abe03ef076cd9c0362513eeb5c8fa 100644
--- a/app/views/discussions/_new_issue_for_all_discussions.html.haml
+++ b/app/views/discussions/_new_issue_for_all_discussions.html.haml
@@ -3,4 +3,4 @@
     .btn.btn-default.discussion-create-issue-btn.has-tooltip{ title: "Resolve all discussions in new issue",
                                                              "aria-label" => "Resolve all discussions in a new issue",
                                                              "data-container" => "body" }
-      = link_to custom_icon('icon_mr_issue'), new_namespace_project_issue_path(@project.namespace, @project, merge_request_to_resolve_discussions_of: merge_request.iid), title: "Resolve all discussions in new issue", class: 'new-issue-for-discussion'
+      = link_to custom_icon('icon_mr_issue'), new_project_issue_path(@project, merge_request_to_resolve_discussions_of: merge_request.iid), title: "Resolve all discussions in new issue", class: 'new-issue-for-discussion'
diff --git a/app/views/discussions/_new_issue_for_discussion.html.haml b/app/views/discussions/_new_issue_for_discussion.html.haml
index df5546a1e32d76573e8f4e3c7c5bcfa5d382ef79..a9bc317b8f837cf94505d37a92dda96fb1aa76be 100644
--- a/app/views/discussions/_new_issue_for_discussion.html.haml
+++ b/app/views/discussions/_new_issue_for_discussion.html.haml
@@ -5,4 +5,4 @@
       .btn.btn-default.discussion-create-issue-btn.has-tooltip{ title: "Resolve this discussion in a new issue",
                                                                "aria-label" => "Resolve this discussion in a new issue",
                                                                "data-container" => "body" }
-        = link_to custom_icon('icon_mr_issue'), new_namespace_project_issue_path(@project.namespace, @project, merge_request_to_resolve_discussions_of: merge_request.iid, discussion_to_resolve: discussion.id), title: "Resolve this discussion in a new issue", class: 'new-issue-for-discussion'
+        = link_to custom_icon('icon_mr_issue'), new_project_issue_path(@project, merge_request_to_resolve_discussions_of: merge_request.iid, discussion_to_resolve: discussion.id), title: "Resolve this discussion in a new issue", class: 'new-issue-for-discussion'
diff --git a/app/views/events/_commit.html.haml b/app/views/events/_commit.html.haml
index 3c64f1be5ffb44fa30a09b1d7fc339771f564c25..ad434a6455650a925f3e9ae8bec492c4cc368f36 100644
--- a/app/views/events/_commit.html.haml
+++ b/app/views/events/_commit.html.haml
@@ -1,5 +1,5 @@
 %li.commit
   .commit-row-title
-    = link_to truncate_sha(commit[:id]), namespace_project_commit_path(project.namespace, project, commit[:id]), class: "commit-sha", alt: '', title: truncate_sha(commit[:id])
+    = link_to truncate_sha(commit[:id]), project_commit_path(project, commit[:id]), class: "commit-sha", alt: '', title: truncate_sha(commit[:id])
     &middot;
     = markdown event_commit_title(commit[:message]), project: project, pipeline: :single_line, author: event.author
diff --git a/app/views/events/_event_push.atom.haml b/app/views/events/_event_push.atom.haml
index f8f0bcb76082c754614b66548de67a78b3f2bbf3..9fcacfbbf3699e194074e938e50300c368dfd1cf 100644
--- a/app/views/events/_event_push.atom.haml
+++ b/app/views/events/_event_push.atom.haml
@@ -2,7 +2,7 @@
   - event.commits.first(15).each do |commit|
     %p
       %strong= commit[:author][:name]
-      = link_to "(##{truncate_sha(commit[:id])})", namespace_project_commit_path(event.project.namespace, event.project, id: commit[:id])
+      = link_to "(##{truncate_sha(commit[:id])})", project_commit_path(event.project, id: commit[:id])
       %i
         at
         = commit[:timestamp].to_time.to_s(:short)
diff --git a/app/views/events/event/_push.html.haml b/app/views/events/event/_push.html.haml
index 769ac655d0a54f36f419f2694d78bdf4425de0cf..54b414cc62abe0e326936e21deaf1a097d375a52 100644
--- a/app/views/events/event/_push.html.haml
+++ b/app/views/events/event/_push.html.haml
@@ -6,7 +6,7 @@
   %span.author_name= link_to_author event
   %span.pushed #{event.action_name} #{event.ref_type}
   %strong
-    - commits_link = namespace_project_commits_path(project.namespace, project, event.ref_name)
+    - commits_link = project_commits_path(project, event.ref_name)
     = link_to_if project.repository.branch_exists?(event.ref_name), event.ref_name, commits_link, class: 'ref-name'
 
   = render "events/event_scope", event: event
@@ -31,7 +31,7 @@
             - from = project.default_branch
             - from_label = from
 
-          = link_to namespace_project_compare_path(project.namespace, project, from: from, to: event.commit_to) do
+          = link_to project_compare_path(project, from: from, to: event.commit_to) do
             Compare #{from_label}...#{truncate_sha(event.commit_to)}
 
           - if create_mr
diff --git a/app/views/groups/projects.html.haml b/app/views/groups/projects.html.haml
index 62ad47972b9e2462259d4a95041d787dfb72d4bf..7a2e688a1144ae93f15bf0a3efa2855fbce1097b 100644
--- a/app/views/groups/projects.html.haml
+++ b/app/views/groups/projects.html.haml
@@ -20,8 +20,8 @@
             %span.label.label-warning archived
           %span.badge
             = storage_counter(project.statistics.storage_size)
-          = link_to 'Members', namespace_project_project_members_path(project.namespace, project), id: "edit_#{dom_id(project)}", class: "btn btn-sm"
-          = link_to 'Edit', edit_namespace_project_path(project.namespace, project), id: "edit_#{dom_id(project)}", class: "btn btn-sm"
+          = link_to 'Members', project_project_members_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-sm"
+          = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-sm"
           = link_to 'Remove', project, data: { confirm: remove_project_message(project)}, method: :delete, class: "btn btn-sm btn-remove"
     - if @projects.blank?
       .nothing-here-block This group has no projects yet
diff --git a/app/views/import/base/create.js.haml b/app/views/import/base/create.js.haml
index 57e8c3ca1e1d3e450787f884d62d72b06c7b5792..fde671e25a9c841434f59aee96c296dfe5981f4f 100644
--- a/app/views/import/base/create.js.haml
+++ b/app/views/import/base/create.js.haml
@@ -4,7 +4,7 @@
     job.attr("id", "project_#{@project.id}")
     target_field = job.find(".import-target")
     target_field.empty()
-    target_field.append('#{link_to @project.path_with_namespace, namespace_project_path(@project.namespace, @project)}')
+    target_field.append('#{link_to @project.path_with_namespace, project_path(@project)}')
     $("table.import-jobs tbody").prepend(job)
     job.addClass("active").find(".import-actions").html("<i class='fa fa-spinner fa-spin'></i> started")
 - else
diff --git a/app/views/invites/show.html.haml b/app/views/invites/show.html.haml
index 882fdf1317de821771ed861b15899c4fa437b838..ad6213b4efd0b7d2dc22b491481e626392fac3d1 100644
--- a/app/views/invites/show.html.haml
+++ b/app/views/invites/show.html.haml
@@ -12,7 +12,7 @@
     - project = @member.source
     project
     %strong
-      = link_to project.name_with_namespace, namespace_project_url(project.namespace, project)
+      = link_to project.name_with_namespace, project_url(project)
   - when Group
     - group = @member.source
     group
diff --git a/app/views/issues/_issue.atom.builder b/app/views/issues/_issue.atom.builder
index 2ed78bb3b658640e3b9299a4e0ffb265742e8db2..0c113c08526fb0906cb9907706e6c275c1190fdb 100644
--- a/app/views/issues/_issue.atom.builder
+++ b/app/views/issues/_issue.atom.builder
@@ -1,6 +1,6 @@
 xml.entry do
-  xml.id      namespace_project_issue_url(issue.project.namespace, issue.project, issue)
-  xml.link    href: namespace_project_issue_url(issue.project.namespace, issue.project, issue)
+  xml.id      project_issue_url(issue.project, issue)
+  xml.link    href: project_issue_url(issue.project, issue)
   xml.title   truncate(issue.title, length: 80)
   xml.updated issue.updated_at.xmlschema
   xml.media   :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(issue.author_email))
diff --git a/app/views/layouts/_init_auto_complete.html.haml b/app/views/layouts/_init_auto_complete.html.haml
index 6caaba240bb489ea978653a5e365f00743927693..4bb0dfc73fdc88ac31d64b8320f55bdf01e92ae0 100644
--- a/app/views/layouts/_init_auto_complete.html.haml
+++ b/app/views/layouts/_init_auto_complete.html.haml
@@ -5,10 +5,10 @@
   :javascript
     gl.GfmAutoComplete = gl.GfmAutoComplete || {};
     gl.GfmAutoComplete.dataSources = {
-      members: "#{members_namespace_project_autocomplete_sources_path(project.namespace, project, type: noteable_type, type_id: params[:id])}",
-      issues: "#{issues_namespace_project_autocomplete_sources_path(project.namespace, project)}",
-      mergeRequests: "#{merge_requests_namespace_project_autocomplete_sources_path(project.namespace, project)}",
-      labels: "#{labels_namespace_project_autocomplete_sources_path(project.namespace, project)}",
-      milestones: "#{milestones_namespace_project_autocomplete_sources_path(project.namespace, project)}",
-      commands: "#{commands_namespace_project_autocomplete_sources_path(project.namespace, project, type: noteable_type, type_id: params[:id])}"
+      members: "#{members_project_autocomplete_sources_path(project, type: noteable_type, type_id: params[:id])}",
+      issues: "#{issues_project_autocomplete_sources_path(project)}",
+      mergeRequests: "#{merge_requests_project_autocomplete_sources_path(project)}",
+      labels: "#{labels_project_autocomplete_sources_path(project)}",
+      milestones: "#{milestones_project_autocomplete_sources_path(project)}",
+      commands: "#{commands_project_autocomplete_sources_path(project, type: noteable_type, type_id: params[:id])}"
     };
diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml
index b689991bb6d67a6c596d8b372a8ec164891d89d9..59f16b47bf7442fa834a90d25ba122e7b418128b 100644
--- a/app/views/layouts/_search.html.haml
+++ b/app/views/layouts/_search.html.haml
@@ -5,7 +5,7 @@
 - if @group && @group.persisted? && @group.path
   - group_data_attrs = { group_path: j(@group.path), name: @group.name, issues_path: issues_group_path(j(@group.path)), mr_path: merge_requests_group_path(j(@group.path)) }
 - if @project && @project.persisted?
-  - project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: namespace_project_issues_path(@project.namespace, @project), mr_path: namespace_project_merge_requests_path(@project.namespace, @project) }
+  - project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: project_issues_path(@project), mr_path: project_merge_requests_path(@project) }
 .search.search-form{ class: "#{'has-location-badge' if label.present?}" }
   = form_tag search_path, method: :get, class: 'navbar-form' do |f|
     .search-input-container
diff --git a/app/views/layouts/header/_default.html.haml b/app/views/layouts/header/_default.html.haml
index 7e8b9cb9ad0b35e379029f4cb7c973b5cc37b75d..ed44263741e3a72b361b2e8d103e7484e6fa0306 100644
--- a/app/views/layouts/header/_default.html.haml
+++ b/app/views/layouts/header/_default.html.haml
@@ -95,4 +95,4 @@
 - if @project && !@project.empty_repo?
   - if ref = @ref || @project.repository.root_ref
     :javascript
-      var findFileURL = "#{namespace_project_find_file_path(@project.namespace, @project, ref)}";
+      var findFileURL = "#{project_find_file_path(@project, ref)}";
diff --git a/app/views/layouts/header/_new.html.haml b/app/views/layouts/header/_new.html.haml
index 5859f689dd10c2596e89d7098ab99f596a77c1b9..bee7291da459561f4375699437a90bce27c589c9 100644
--- a/app/views/layouts/header/_new.html.haml
+++ b/app/views/layouts/header/_new.html.haml
@@ -88,4 +88,4 @@
 - if @project && !@project.empty_repo?
   - if ref = @ref || @project.repository.root_ref
     :javascript
-      var findFileURL = "#{namespace_project_find_file_path(@project.namespace, @project, ref)}";
+      var findFileURL = "#{project_find_file_path(@project, ref)}";
diff --git a/app/views/layouts/header/_new_dropdown.haml b/app/views/layouts/header/_new_dropdown.haml
index 4d41579168c57b834d0ccb496510ef7a915f2dda..9da739b097400fa6a574eea64d36385e7704e802 100644
--- a/app/views/layouts/header/_new_dropdown.haml
+++ b/app/views/layouts/header/_new_dropdown.haml
@@ -30,13 +30,13 @@
           %li.dropdown-bold-header This project
           - if create_project_issue
             %li
-              = link_to 'New issue', new_namespace_project_issue_path(@project.namespace, @project)
+              = link_to 'New issue', new_project_issue_path(@project)
           - if merge_project
             %li
-              = link_to 'New merge request', namespace_project_new_merge_request_path(merge_project.namespace, merge_project)
+              = link_to 'New merge request', project_new_merge_request_path(merge_project)
           - if create_project_snippet
             %li.header-new-project-snippet
-              = link_to 'New snippet', new_namespace_project_snippet_path(@project.namespace, @project)
+              = link_to 'New snippet', new_project_snippet_path(@project)
           %li.divider
           %li.dropdown-bold-header GitLab
       - if current_user.can_create_project?
diff --git a/app/views/layouts/nav/_new_project_sidebar.html.haml b/app/views/layouts/nav/_new_project_sidebar.html.haml
index eae9da5da1463e1687d3d10846f7551a3b82f272..6e483353a2dc02b3d4168055abdbccf11c79db7e 100644
--- a/app/views/layouts/nav/_new_project_sidebar.html.haml
+++ b/app/views/layouts/nav/_new_project_sidebar.html.haml
@@ -27,52 +27,52 @@
 
     - if project_nav_tab? :files
       = nav_link(controller: %w(tree blob blame edit_tree new_tree find_file commit commits compare projects/repositories tags branches releases graphs network)) do
-        = link_to project_files_path(@project), title: 'Repository',  class: 'shortcuts-tree' do
+        = link_to project_tree_path(@project), title: 'Repository',  class: 'shortcuts-tree' do
           %span
             Repository
 
         %ul.sidebar-sub-level-items
           = nav_link(controller: %w(tree blob blame edit_tree new_tree find_file)) do
-            = link_to project_files_path(@project) do
+            = link_to project_tree_path(@project) do
               #{ _('Files') }
 
           = nav_link(controller: [:commit, :commits]) do
-            = link_to namespace_project_commits_path(@project.namespace, @project, current_ref) do
+            = link_to project_commits_path(@project, current_ref) do
               #{ _('Commits') }
 
           = nav_link(html_options: {class: branches_tab_class}) do
-            = link_to namespace_project_branches_path(@project.namespace, @project) do
+            = link_to project_branches_path(@project) do
               #{ _('Branches') }
 
           = nav_link(controller: [:tags, :releases]) do
-            = link_to namespace_project_tags_path(@project.namespace, @project) do
+            = link_to project_tags_path(@project) do
               #{ _('Tags') }
 
           = nav_link(path: 'graphs#show') do
-            = link_to namespace_project_graph_path(@project.namespace, @project, current_ref) do
+            = link_to project_graph_path(@project, current_ref) do
               #{ _('Contributors') }
 
           = nav_link(controller: %w(network)) do
-            = link_to namespace_project_network_path(@project.namespace, @project, current_ref) do
+            = link_to project_network_path(@project, current_ref) do
               #{ s_('ProjectNetworkGraph|Graph') }
 
           = nav_link(controller: :compare) do
-            = link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: current_ref) do
+            = link_to project_compare_index_path(@project, from: @repository.root_ref, to: current_ref) do
               #{ _('Compare') }
 
           = nav_link(path: 'graphs#charts') do
-            = link_to charts_namespace_project_graph_path(@project.namespace, @project, current_ref) do
+            = link_to charts_project_graph_path(@project, current_ref) do
               #{ _('Charts') }
 
     - if project_nav_tab? :container_registry
       = nav_link(controller: %w[projects/registry/repositories]) do
-        = link_to project_container_registry_path(@project), title: 'Container Registry', class: 'shortcuts-container-registry' do
+        = link_to project_container_registry_index_path(@project), title: 'Container Registry', class: 'shortcuts-container-registry' do
           %span
             Registry
 
     - if project_nav_tab? :issues
       = nav_link(controller: @project.default_issues_tracker? ? [:issues, :labels, :milestones, :boards] : :issues) do
-        = link_to namespace_project_issues_path(@project.namespace, @project), title: 'Issues', class: 'shortcuts-issues' do
+        = link_to project_issues_path(@project), title: 'Issues', class: 'shortcuts-issues' do
           %span
             Issues
             - if @project.default_issues_tracker?
@@ -81,36 +81,36 @@
         %ul.sidebar-sub-level-items
           - if project_nav_tab?(:issues) && !current_controller?(:merge_requests)
             = nav_link(controller: :issues) do
-              = link_to namespace_project_issues_path(@project.namespace, @project), title: 'Issues' do
+              = link_to project_issues_path(@project), title: 'Issues' do
                 %span
                   List
 
             = nav_link(controller: :boards) do
-              = link_to namespace_project_boards_path(@project.namespace, @project), title: 'Board' do
+              = link_to project_boards_path(@project), title: 'Board' do
                 %span
                   Board
 
           - if project_nav_tab?(:merge_requests) && current_controller?(:merge_requests)
             = nav_link(controller: :merge_requests) do
-              = link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests' do
+              = link_to project_merge_requests_path(@project), title: 'Merge Requests' do
                 %span
                   Merge Requests
 
           - if project_nav_tab? :labels
             = nav_link(controller: :labels) do
-              = link_to namespace_project_labels_path(@project.namespace, @project), title: 'Labels' do
+              = link_to project_labels_path(@project), title: 'Labels' do
                 %span
                   Labels
 
           - if project_nav_tab? :milestones
             = nav_link(controller: :milestones) do
-              = link_to namespace_project_milestones_path(@project.namespace, @project), title: 'Milestones' do
+              = link_to project_milestones_path(@project), title: 'Milestones' do
                 %span
                   Milestones
 
     - if project_nav_tab? :merge_requests
       = nav_link(controller: @project.default_issues_tracker? ? :merge_requests : [:merge_requests, :labels, :milestones]) do
-        = link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
+        = link_to project_merge_requests_path(@project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
           %span
             Merge Requests
             %span.badge.count.merge_counter.js-merge-counter= number_with_delimiter(MergeRequestsFinder.new(current_user, project_id: @project.id).execute.opened.count)
@@ -148,7 +148,7 @@
 
           - if @project.feature_available?(:builds, current_user) && !@project.empty_repo?
             = nav_link(path: 'pipelines#charts') do
-              = link_to charts_namespace_project_pipelines_path(@project.namespace, @project), title: 'Charts', class: 'shortcuts-pipelines-charts' do
+              = link_to charts_project_pipelines_path(@project), title: 'Charts', class: 'shortcuts-pipelines-charts' do
                 %span
                   Charts
 
@@ -160,7 +160,7 @@
 
     - if project_nav_tab? :snippets
       = nav_link(controller: :snippets) do
-        = link_to namespace_project_snippets_path(@project.namespace, @project), title: 'Snippets', class: 'shortcuts-snippets' do
+        = link_to project_snippets_path(@project), title: 'Snippets', class: 'shortcuts-snippets' do
           %span
             Snippets
 
@@ -187,23 +187,23 @@
                 %span
                   Integrations
             = nav_link(controller: :repository) do
-              = link_to namespace_project_settings_repository_path(@project.namespace, @project), title: 'Repository' do
+              = link_to project_settings_repository_path(@project), title: 'Repository' do
                 %span
                   Repository
             - if @project.feature_available?(:builds, current_user)
               = nav_link(controller: :ci_cd) do
-                = link_to namespace_project_settings_ci_cd_path(@project.namespace, @project), title: 'Pipelines' do
+                = link_to project_settings_ci_cd_path(@project), title: 'Pipelines' do
                   %span
                     Pipelines
             - if Gitlab.config.pages.enabled
               = nav_link(controller: :pages) do
-                = link_to namespace_project_pages_path(@project.namespace, @project), title: 'Pages' do
+                = link_to project_pages_path(@project), title: 'Pages' do
                   %span
                     Pages
 
     - else
       = nav_link(path: %w[members#show]) do
-        = link_to namespace_project_settings_members_path(@project.namespace, @project), title: 'Settings', class: 'shortcuts-tree' do
+        = link_to project_settings_members_path(@project), title: 'Settings', class: 'shortcuts-tree' do
           %span
             Settings
 
@@ -216,18 +216,18 @@
     -# Shortcut to Repository > Graph (formerly, Network)
     - if project_nav_tab? :network
       %li.hidden
-        = link_to namespace_project_network_path(@project.namespace, @project, current_ref), title: 'Network', class: 'shortcuts-network' do
+        = link_to project_network_path(@project, current_ref), title: 'Network', class: 'shortcuts-network' do
           Graph
 
     -# Shortcut to Repository > Charts (formerly, top-nav item "Graphs")
     - unless @project.empty_repo?
       %li.hidden
-        = link_to charts_namespace_project_graph_path(@project.namespace, @project, current_ref), title: 'Charts', class: 'shortcuts-repository-charts' do
+        = link_to charts_project_graph_path(@project, current_ref), title: 'Charts', class: 'shortcuts-repository-charts' do
           Charts
 
     -# Shortcut to Issues > New Issue
     %li.hidden
-      = link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'shortcuts-new-issue' do
+      = link_to new_project_issue_path(@project), class: 'shortcuts-new-issue' do
         Create a new issue
 
     -# Shortcut to Pipelines > Jobs
@@ -244,4 +244,4 @@
 
     -# Shortcut to issue boards
     %li.hidden
-      = link_to 'Issue Boards', namespace_project_boards_path(@project.namespace, @project), title: 'Issue Boards', class: 'shortcuts-issue-boards'
+      = link_to 'Issue Boards', project_boards_path(@project), title: 'Issue Boards', class: 'shortcuts-issue-boards'
diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml
index b095adcfe7eb9eb41344a83da7d26d0e0cea59c3..14deb46eee357cec4f8f7f11f487d07488a7f02c 100644
--- a/app/views/layouts/nav/_project.html.haml
+++ b/app/views/layouts/nav/_project.html.haml
@@ -12,19 +12,19 @@
 
     - if project_nav_tab? :files
       = nav_link(controller: %w(tree blob blame edit_tree new_tree find_file commit commits compare projects/repositories tags branches releases graphs network)) do
-        = link_to project_files_path(@project), title: 'Repository',  class: 'shortcuts-tree' do
+        = link_to project_tree_path(@project), title: 'Repository',  class: 'shortcuts-tree' do
           %span
             Repository
 
     - if project_nav_tab? :container_registry
       = nav_link(controller: %w[projects/registry/repositories]) do
-        = link_to project_container_registry_path(@project), title: 'Container Registry', class: 'shortcuts-container-registry' do
+        = link_to project_container_registry_index_path(@project), title: 'Container Registry', class: 'shortcuts-container-registry' do
           %span
             Registry
 
     - if project_nav_tab? :issues
       = nav_link(controller: @project.default_issues_tracker? ? [:issues, :labels, :milestones, :boards] : :issues) do
-        = link_to namespace_project_issues_path(@project.namespace, @project), title: 'Issues', class: 'shortcuts-issues' do
+        = link_to project_issues_path(@project), title: 'Issues', class: 'shortcuts-issues' do
           %span
             Issues
             - if @project.default_issues_tracker?
@@ -34,7 +34,7 @@
       - controllers = [:merge_requests, 'projects/merge_requests/conflicts']
       - controllers.push(:merge_requests, :labels, :milestones) unless @project.default_issues_tracker?
       = nav_link(controller: controllers) do
-        = link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
+        = link_to project_merge_requests_path(@project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
           %span
             Merge Requests
             %span.badge.count.merge_counter.js-merge-counter= number_with_delimiter(issuables_count_for_state(:merge_requests, :opened, finder: MergeRequestsFinder.new(current_user, project_id: @project.id)))
@@ -53,7 +53,7 @@
 
     - if project_nav_tab? :snippets
       = nav_link(controller: :snippets) do
-        = link_to namespace_project_snippets_path(@project.namespace, @project), title: 'Snippets', class: 'shortcuts-snippets' do
+        = link_to project_snippets_path(@project), title: 'Snippets', class: 'shortcuts-snippets' do
           %span
             Snippets
 
@@ -64,7 +64,7 @@
             Settings
     - else
       = nav_link(path: %w[members#show]) do
-        = link_to namespace_project_settings_members_path(@project.namespace, @project), title: 'Settings', class: 'shortcuts-tree' do
+        = link_to project_settings_members_path(@project), title: 'Settings', class: 'shortcuts-tree' do
           %span
             Settings
 
@@ -77,18 +77,18 @@
     -# Shortcut to Repository > Graph (formerly, Network)
     - if project_nav_tab? :network
       %li.hidden
-        = link_to namespace_project_network_path(@project.namespace, @project, current_ref), title: 'Network', class: 'shortcuts-network' do
+        = link_to project_network_path(@project, current_ref), title: 'Network', class: 'shortcuts-network' do
           Graph
 
     -# Shortcut to Repository > Charts (formerly, top-nav item "Graphs")
     - unless @project.empty_repo?
       %li.hidden
-        = link_to charts_namespace_project_graph_path(@project.namespace, @project, current_ref), title: 'Charts', class: 'shortcuts-repository-charts' do
+        = link_to charts_project_graph_path(@project, current_ref), title: 'Charts', class: 'shortcuts-repository-charts' do
           Charts
 
     -# Shortcut to Issues > New Issue
     %li.hidden
-      = link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'shortcuts-new-issue' do
+      = link_to new_project_issue_path(@project), class: 'shortcuts-new-issue' do
         Create a new issue
 
     -# Shortcut to Pipelines > Jobs
@@ -105,4 +105,4 @@
 
     -# Shortcut to issue boards
     %li.hidden
-      = link_to 'Issue Boards', namespace_project_boards_path(@project.namespace, @project), title: 'Issue Boards', class: 'shortcuts-issue-boards'
+      = link_to 'Issue Boards', project_boards_path(@project), title: 'Issue Boards', class: 'shortcuts-issue-boards'
diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml
index 4458c3c2c238b121703d79d829a57f69d9aa0173..99adb83cd1f18f7c5c2f035077b244d17bc3ed7b 100644
--- a/app/views/layouts/project.html.haml
+++ b/app/views/layouts/project.html.haml
@@ -11,7 +11,7 @@
   - project = @target_project || @project
   - if current_user
     :javascript
-      window.uploads_path = "#{namespace_project_uploads_path project.namespace,project}";
+      window.uploads_path = "#{project_uploads_path(project)}";
 
 - content_for :header_content do
   .js-dropdown-menu-projects
diff --git a/app/views/notify/closed_issue_email.text.haml b/app/views/notify/closed_issue_email.text.haml
index bc12e38675f749db55257edb9e648a6fe6dcbdd4..b35d4b7502d57341cb650a2cce387c725cba12aa 100644
--- a/app/views/notify/closed_issue_email.text.haml
+++ b/app/views/notify/closed_issue_email.text.haml
@@ -1,3 +1,3 @@
 Issue was closed by #{@updated_by.name}
 
-Issue ##{@issue.iid}: #{namespace_project_issue_url(@issue.project.namespace, @issue.project, @issue)}
+Issue ##{@issue.iid}: #{project_issue_url(@issue.project, @issue)}
diff --git a/app/views/notify/closed_merge_request_email.text.haml b/app/views/notify/closed_merge_request_email.text.haml
index d0c96b83976be60216e867b480558a4568c36a3f..c4e06cb3cb1967a359b7b0900b14e3b7745e74b3 100644
--- a/app/views/notify/closed_merge_request_email.text.haml
+++ b/app/views/notify/closed_merge_request_email.text.haml
@@ -1,6 +1,6 @@
 Merge Request #{@merge_request.to_reference} was closed by #{@updated_by.name}
 
-Merge Request url: #{namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request)}
+Merge Request url: #{project_merge_request_url(@merge_request.target_project, @merge_request)}
 
 = merge_path_description(@merge_request, 'to')
 
diff --git a/app/views/notify/issue_moved_email.html.haml b/app/views/notify/issue_moved_email.html.haml
index 40f7d61fe19f6b15ebc95f4dc275bfa839ddbf44..472c31e9a5e5fc162896b1e42a2dc33d37392830 100644
--- a/app/views/notify/issue_moved_email.html.haml
+++ b/app/views/notify/issue_moved_email.html.haml
@@ -2,5 +2,5 @@
   Issue was moved to another project.
 %p
   New issue:
-  = link_to namespace_project_issue_url(@new_project.namespace, @new_project, @new_issue) do
+  = link_to project_issue_url(@new_project, @new_issue) do
     = @new_issue.title
diff --git a/app/views/notify/issue_moved_email.text.erb b/app/views/notify/issue_moved_email.text.erb
index b3bd43c2055baf45882f66cff6e4c86cd3256dca..66ede43635b9fbc4576258eb17f8ce5366a09625 100644
--- a/app/views/notify/issue_moved_email.text.erb
+++ b/app/views/notify/issue_moved_email.text.erb
@@ -1,4 +1,4 @@
 Issue was moved to another project.
 
 New issue location:
-<%= namespace_project_issue_url(@new_project.namespace, @new_project, @new_issue) %>
+<%= project_issue_url(@new_project, @new_issue) %>
diff --git a/app/views/notify/issue_status_changed_email.text.erb b/app/views/notify/issue_status_changed_email.text.erb
index e6ab3fcde7705471517f92f92114475ab90876c4..4200881f7e8a009086be96aac46dcc8b8b41accd 100644
--- a/app/views/notify/issue_status_changed_email.text.erb
+++ b/app/views/notify/issue_status_changed_email.text.erb
@@ -1,4 +1,4 @@
 Issue was <%= @issue_status %> by <%= @updated_by.name %>
 
-Issue <%= @issue.iid %>: <%= url_for(namespace_project_issue_url(@issue.project.namespace, @issue.project, @issue)) %>
+Issue <%= @issue.iid %>: <%= url_for(project_issue_url(@issue.project, @issue)) %>
 
diff --git a/app/views/notify/merge_request_status_email.text.haml b/app/views/notify/merge_request_status_email.text.haml
index 4c9719ba7326f7c5762266da5b7973a208eedc37..ae2a29338651af37fbb7b7f893773d0a33c745a0 100644
--- a/app/views/notify/merge_request_status_email.text.haml
+++ b/app/views/notify/merge_request_status_email.text.haml
@@ -1,6 +1,6 @@
 Merge Request #{@merge_request.to_reference} was #{@mr_status} by #{@updated_by.name}
 
-Merge Request url: #{namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request)}
+Merge Request url: #{project_merge_request_url(@merge_request.target_project, @merge_request)}
 
 = merge_path_description(@merge_request, 'to')
 
diff --git a/app/views/notify/merged_merge_request_email.text.haml b/app/views/notify/merged_merge_request_email.text.haml
index 46c1c9dee0bb3b81b28301f4c9d689a07fc8e178..661c23bcbe20e678b6341ea30301f502fab1a8ad 100644
--- a/app/views/notify/merged_merge_request_email.text.haml
+++ b/app/views/notify/merged_merge_request_email.text.haml
@@ -1,6 +1,6 @@
 Merge Request #{@merge_request.to_reference} was merged
 
-Merge Request url: #{namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request)}
+Merge Request url: #{project_merge_request_url(@merge_request.target_project, @merge_request)}
 
 = merge_path_description(@merge_request, 'to')
 
diff --git a/app/views/notify/new_issue_email.text.erb b/app/views/notify/new_issue_email.text.erb
index 13f1ac08e94548282dd93600c75eb8c51265b0a2..3c716f772967e0375410fd85e9d52486b05cdae7 100644
--- a/app/views/notify/new_issue_email.text.erb
+++ b/app/views/notify/new_issue_email.text.erb
@@ -1,6 +1,6 @@
 New Issue was created.
 
-Issue <%= @issue.iid %>: <%= url_for(namespace_project_issue_url(@issue.project.namespace, @issue.project, @issue)) %>
+Issue <%= @issue.iid %>: <%= url_for(project_issue_url(@issue.project, @issue)) %>
 Author:    <%= @issue.author_name %>
 Assignee:  <%= @issue.assignee_list %>
 
diff --git a/app/views/notify/new_mention_in_issue_email.text.erb b/app/views/notify/new_mention_in_issue_email.text.erb
index f19ac3adfc7aab9fe8d8ad628afb936ca780711d..23213106c5b295fa77ee1f26e145c1532f25382f 100644
--- a/app/views/notify/new_mention_in_issue_email.text.erb
+++ b/app/views/notify/new_mention_in_issue_email.text.erb
@@ -1,6 +1,6 @@
 You have been mentioned in an issue.
 
-Issue <%= @issue.iid %>: <%= url_for(namespace_project_issue_url(@issue.project.namespace, @issue.project, @issue)) %>
+Issue <%= @issue.iid %>: <%= url_for(project_issue_url(@issue.project, @issue)) %>
 Author:    <%= @issue.author_name %>
 Assignee:  <%= @issue.assignee_list %>
 
diff --git a/app/views/notify/new_mention_in_merge_request_email.text.erb b/app/views/notify/new_mention_in_merge_request_email.text.erb
index 5bf0282e0974e41d55f2626b3564ef2089fa7474..6fcebb22fc426c8e2897b77cafae0ea208f040e2 100644
--- a/app/views/notify/new_mention_in_merge_request_email.text.erb
+++ b/app/views/notify/new_mention_in_merge_request_email.text.erb
@@ -1,6 +1,6 @@
 You have been mentioned in Merge Request <%= @merge_request.to_reference %>
 
-<%= url_for(namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request)) %>
+<%= url_for(project_merge_request_url(@merge_request.target_project, @merge_request)) %>
 
 <%= merge_path_description(@merge_request, 'to') %>
 Author:    <%= @merge_request.author_name %>
diff --git a/app/views/notify/new_merge_request_email.text.erb b/app/views/notify/new_merge_request_email.text.erb
index 3c8f178ac778cf34fd2e0a32191111fbe97496ca..7d98400e6fe1203cc15dbe51b279b5e7bdd8ecb2 100644
--- a/app/views/notify/new_merge_request_email.text.erb
+++ b/app/views/notify/new_merge_request_email.text.erb
@@ -1,6 +1,6 @@
 New Merge Request <%= @merge_request.to_reference %>
 
-<%= url_for(namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request)) %>
+<%= url_for(project_merge_request_url(@merge_request.target_project, @merge_request)) %>
 
 <%= merge_path_description(@merge_request, 'to') %>
 Author:    <%= @merge_request.author_name %>
diff --git a/app/views/notify/project_was_exported_email.html.haml b/app/views/notify/project_was_exported_email.html.haml
index 3def26342a13f484e617e28b7a34619dac010a8b..f0ba7827cefb2cfcd6a52618db96ae9cfe85b69b 100644
--- a/app/views/notify/project_was_exported_email.html.haml
+++ b/app/views/notify/project_was_exported_email.html.haml
@@ -2,7 +2,7 @@
   Project #{@project.name} was exported successfully.
 %p
   The project export can be downloaded from:
-  = link_to download_export_namespace_project_url(@project.namespace, @project), rel: 'nofollow', download: '' do
+  = link_to download_export_project_url(@project), rel: 'nofollow', download: '' do
     = @project.name_with_namespace + " export"
 %p
   The download link will expire in 24 hours.
diff --git a/app/views/notify/project_was_exported_email.text.erb b/app/views/notify/project_was_exported_email.text.erb
index 42c4d176876817b6c57c4902276740cf10ae3f82..cd3a1f7934f114eca0e1083a09011873f02de644 100644
--- a/app/views/notify/project_was_exported_email.text.erb
+++ b/app/views/notify/project_was_exported_email.text.erb
@@ -1,6 +1,6 @@
 Project <%= @project.name %> was exported successfully.
 
 The project export can be downloaded from:
-<%= download_export_namespace_project_url(@project.namespace, @project) %>
+<%= download_export_project_url(@project) %>
 
 The download link will expire in 24 hours.
diff --git a/app/views/notify/project_was_moved_email.html.haml b/app/views/notify/project_was_moved_email.html.haml
index 87b3ff7f0b323f07cf42be52d564519ebec73aa1..c476a39b6619de8c4e0f2128fa8a0eb26363e91e 100644
--- a/app/views/notify/project_was_moved_email.html.haml
+++ b/app/views/notify/project_was_moved_email.html.haml
@@ -2,7 +2,7 @@
   Project #{@old_path_with_namespace} was moved to another location
 %p
   The project is now located under
-  = link_to namespace_project_url(@project.namespace, @project) do
+  = link_to project_url(@project) do
     = @project.name_with_namespace
 %p
   To update the remote url in your local repository run (for ssh):
diff --git a/app/views/notify/project_was_moved_email.text.erb b/app/views/notify/project_was_moved_email.text.erb
index b2c5f71e46505e16aaa8c2c0342e46bdd5138768..7c45163e0e83badba5ac30b67fbd95a4db535984 100644
--- a/app/views/notify/project_was_moved_email.text.erb
+++ b/app/views/notify/project_was_moved_email.text.erb
@@ -1,7 +1,7 @@
 Project <%= @old_path_with_namespace %> was moved to another location
 
 The project is now located under 
-<%= namespace_project_url(@project.namespace, @project) %>
+<%= project_url(@project) %>
 
 
 To update the remote url in your local repository run (for ssh):
diff --git a/app/views/notify/repository_push_email.html.haml b/app/views/notify/repository_push_email.html.haml
index 546376aeed80717119ed76d5209420933e41f3ab..5c5520f4cb8dce70a0e297e694d5dc9f54495745 100644
--- a/app/views/notify/repository_push_email.html.haml
+++ b/app/views/notify/repository_push_email.html.haml
@@ -3,7 +3,7 @@
 
 %h3
   #{@message.author_name} #{@message.action_name} #{@message.ref_type} #{@message.ref_name}
-  at #{link_to(@message.project_name_with_namespace, namespace_project_url(@message.project_namespace, @message.project))}
+  at #{link_to(@message.project_name_with_namespace, project_url(@message.project))}
 
 - if @message.compare
   - if @message.reverse_compare?
@@ -17,7 +17,7 @@
   %ul
     - @message.commits.each do |commit|
       %li
-        %strong= link_to(commit.short_id, namespace_project_commit_url(@message.project_namespace, @message.project, commit))
+        %strong= link_to(commit.short_id, project_commit_url(@message.project, commit))
         %div
           %span by #{commit.author_name}
           %i at #{commit.committed_date.to_s(:iso8601)}
diff --git a/app/views/notify/resolved_all_discussions_email.text.erb b/app/views/notify/resolved_all_discussions_email.text.erb
index b0d380af8fcb07fa745080c709c53856ec1b7587..2881f3e699efe0b4ec7652c294300419946ceb54 100644
--- a/app/views/notify/resolved_all_discussions_email.text.erb
+++ b/app/views/notify/resolved_all_discussions_email.text.erb
@@ -1,3 +1,3 @@
 All discussions on Merge Request <%= @merge_request.to_reference %> were resolved by <%= @resolved_by.name %>
 
-<%= url_for(namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request)) %>
+<%= url_for(project_merge_request_url(@merge_request.target_project, @merge_request)) %>
diff --git a/app/views/profiles/chat_names/_chat_name.html.haml b/app/views/profiles/chat_names/_chat_name.html.haml
index 1ec1e7c70e4f08f50983295862caa817d851fb20..fe1cf802971dde2e96234f2c1284c847bedc4c29 100644
--- a/app/views/profiles/chat_names/_chat_name.html.haml
+++ b/app/views/profiles/chat_names/_chat_name.html.haml
@@ -10,7 +10,7 @@
   %td
     %strong
       - if can?(current_user, :admin_project, project)
-        = link_to service.title, edit_namespace_project_service_path(project.namespace, project, service)
+        = link_to service.title, edit_project_service_path(project, service)
       - else
         = service.title
   %td
diff --git a/app/views/projects/_activity.html.haml b/app/views/projects/_activity.html.haml
index 10f581d751b690aa6ac123b420977de4fae4c198..ecc966ed4534f472bb861f7e7be94445a64e1058 100644
--- a/app/views/projects/_activity.html.haml
+++ b/app/views/projects/_activity.html.haml
@@ -1,7 +1,7 @@
 %div{ class: container_class }
   .nav-block.activity-filter-block.activities
     .controls
-      = link_to namespace_project_path(@project.namespace, @project, rss_url_options), title: "Subscribe", class: 'btn rss-btn has-tooltip' do
+      = link_to project_path(@project, rss_url_options), title: "Subscribe", class: 'btn rss-btn has-tooltip' do
         = icon('rss')
 
     = render 'shared/event_filter'
diff --git a/app/views/projects/_find_file_link.html.haml b/app/views/projects/_find_file_link.html.haml
index cb4d2bbacf541823b289535e9a9afa7be071de6b..da1b2d7f9b64b98e0b7030f9039cedbc18711195 100644
--- a/app/views/projects/_find_file_link.html.haml
+++ b/app/views/projects/_find_file_link.html.haml
@@ -1,3 +1,3 @@
-= link_to namespace_project_find_file_path(@project.namespace, @project, @ref), class: 'btn shortcuts-find-file', rel: 'nofollow' do
+= link_to project_find_file_path(@project, @ref), class: 'btn shortcuts-find-file', rel: 'nofollow' do
   = icon('search')
   %span= _('Find file')
diff --git a/app/views/projects/_last_push.html.haml b/app/views/projects/_last_push.html.haml
index f1ef50d2de24fdc085098d365b1e8f813a926619..1a71bfca2e244dc306f4989f494cd8e6f6e3c6bf 100644
--- a/app/views/projects/_last_push.html.haml
+++ b/app/views/projects/_last_push.html.haml
@@ -5,7 +5,7 @@
       .event-last-push-text
         %span You pushed to
         %strong
-          = link_to event.ref_name, namespace_project_commits_path(event.project.namespace, event.project, event.ref_name), class: 'ref-name'
+          = link_to event.ref_name, project_commits_path(event.project, event.ref_name), class: 'ref-name'
 
         - if event.project != @project
           %span at
diff --git a/app/views/projects/_wiki.html.haml b/app/views/projects/_wiki.html.haml
index 2bab22e125d96de5e4e6a71b18c69ff18966403d..a56c3503c776384aa080418413c51c4a3c001ebc 100644
--- a/app/views/projects/_wiki.html.haml
+++ b/app/views/projects/_wiki.html.haml
@@ -14,5 +14,5 @@
           Add a homepage to your wiki that contains information about your project
         %p
           We recommend you
-          = link_to "add a homepage", namespace_project_wiki_path(@project.namespace, @project, :home)
+          = link_to "add a homepage", project_wiki_path(@project, :home)
           to your project's wiki and GitLab will show it here instead of this message.
diff --git a/app/views/projects/artifacts/_tree_directory.html.haml b/app/views/projects/artifacts/_tree_directory.html.haml
index e2966ec33c2ffa8d68d46471126cbabe3870e1a2..03be6f15313d09b7e29f6fdd9da487860f879318 100644
--- a/app/views/projects/artifacts/_tree_directory.html.haml
+++ b/app/views/projects/artifacts/_tree_directory.html.haml
@@ -1,4 +1,4 @@
-- path_to_directory = browse_namespace_project_job_artifacts_path(@project.namespace, @project, @build, path: directory.path)
+- path_to_directory = browse_project_job_artifacts_path(@project, @build, path: directory.path)
 
 %tr.tree-item{ 'data-link' => path_to_directory }
   %td.tree-item-file-name
diff --git a/app/views/projects/artifacts/_tree_file.html.haml b/app/views/projects/artifacts/_tree_file.html.haml
index ea0b43b85cfc4b7850cbd0fdd2d517a9e6133101..8edb9be049a18c7a7496365a286f8e8c19a00641 100644
--- a/app/views/projects/artifacts/_tree_file.html.haml
+++ b/app/views/projects/artifacts/_tree_file.html.haml
@@ -1,4 +1,4 @@
-- path_to_file = file_namespace_project_job_artifacts_path(@project.namespace, @project, @build, path: file.path)
+- path_to_file = file_project_job_artifacts_path(@project, @build, path: file.path)
 
 %tr.tree-item{ 'data-link' => path_to_file }
   - blob = file.blob
diff --git a/app/views/projects/artifacts/browse.html.haml b/app/views/projects/artifacts/browse.html.haml
index 961c805dc7c9ef498d8ba4bc62ff3d2806dcfc0b..576e5b385afb4902585768aa29faa80b4221676f 100644
--- a/app/views/projects/artifacts/browse.html.haml
+++ b/app/views/projects/artifacts/browse.html.haml
@@ -6,17 +6,17 @@
 .tree-holder
   .nav-block
     .tree-controls
-      = link_to download_namespace_project_job_artifacts_path(@project.namespace, @project, @build),
+      = link_to download_project_job_artifacts_path(@project, @build),
         rel: 'nofollow', download: '', class: 'btn btn-default download' do
         = icon('download')
         Download artifacts archive
 
     %ul.breadcrumb.repo-breadcrumb
       %li
-        = link_to 'Artifacts', browse_namespace_project_job_artifacts_path(@project.namespace, @project, @build)
+        = link_to 'Artifacts', browse_project_job_artifacts_path(@project, @build)
       - path_breadcrumbs do |title, path|
         %li
-          = link_to truncate(title, length: 40), browse_namespace_project_job_artifacts_path(@project.namespace, @project, @build, path)
+          = link_to truncate(title, length: 40), browse_project_job_artifacts_path(@project, @build, path)
 
   .tree-content-holder
     %table.table.tree-table
diff --git a/app/views/projects/artifacts/file.html.haml b/app/views/projects/artifacts/file.html.haml
index b25c7c95196d101d41bec12d60ec266789a586ee..18e86ac5a92a2ec630796263040227e040c207ef 100644
--- a/app/views/projects/artifacts/file.html.haml
+++ b/app/views/projects/artifacts/file.html.haml
@@ -7,15 +7,15 @@
   .nav-block
     %ul.breadcrumb.repo-breadcrumb
       %li
-        = link_to 'Artifacts', browse_namespace_project_job_artifacts_path(@project.namespace, @project, @build)
+        = link_to 'Artifacts', browse_project_job_artifacts_path(@project, @build)
       - path_breadcrumbs do |title, path|
         - title = truncate(title, length: 40)
         %li
           - if path == @path
-            = link_to file_namespace_project_job_artifacts_path(@project.namespace, @project, @build, path) do
+            = link_to file_project_job_artifacts_path(@project, @build, path) do
               %strong= title
           - else
-            = link_to title, browse_namespace_project_job_artifacts_path(@project.namespace, @project, @build, path)
+            = link_to title, browse_project_job_artifacts_path(@project, @build, path)
 
 
   %article.file-holder
diff --git a/app/views/projects/blame/show.html.haml b/app/views/projects/blame/show.html.haml
index 3627f72f5e19f2c450ecd5f1af5664ea4b9c5a6c..f11afe8fc224b493d9bb8fb77dbf514543d16d81 100644
--- a/app/views/projects/blame/show.html.haml
+++ b/app/views/projects/blame/show.html.haml
@@ -22,9 +22,9 @@
                   = author_avatar(commit, size: 36)
                   .commit-row-title
                     %strong
-                      = link_to_gfm truncate(commit.title, length: 35), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "cdark"
+                      = link_to_gfm truncate(commit.title, length: 35), project_commit_path(@project, commit.id), class: "cdark"
                     .pull-right
-                      = link_to commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit), class: "commit-sha"
+                      = link_to commit.short_id, project_commit_path(@project, commit), class: "commit-sha"
                     &nbsp;
                   .light
                     = commit_author_link(commit, avatar: false)
diff --git a/app/views/projects/blob/_breadcrumb.html.haml b/app/views/projects/blob/_breadcrumb.html.haml
index 2c944b516a43b63bd5fe25bbf442514a2f24f9fe..1c148de9678ca906d5fc2d5d9a1fe6ce0ffb71e6 100644
--- a/app/views/projects/blob/_breadcrumb.html.haml
+++ b/app/views/projects/blob/_breadcrumb.html.haml
@@ -6,16 +6,16 @@
 
     %ul.breadcrumb.repo-breadcrumb
       %li
-        = link_to namespace_project_tree_path(@project.namespace, @project, @ref) do
+        = link_to project_tree_path(@project, @ref) do
           = @project.path
       - path_breadcrumbs do |title, path|
         - title = truncate(title, length: 40)
         %li
           - if path == @path
-            = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@ref, path)) do
+            = link_to project_blob_path(@project, tree_join(@ref, path)) do
               %strong= title
           - else
-            = link_to title, namespace_project_tree_path(@project.namespace, @project, tree_join(@ref, path))
+            = link_to title, project_tree_path(@project, tree_join(@ref, path))
 
   .tree-controls
     = render 'projects/find_file_link'
@@ -24,14 +24,14 @@
       -# only show normal/blame view links for text files
       - if blob.readable_text?
         - if blame
-          = link_to 'Normal view', namespace_project_blob_path(@project.namespace, @project, @id),
+          = link_to 'Normal view', project_blob_path(@project, @id),
               class: 'btn'
         - else
-          = link_to 'Blame', namespace_project_blame_path(@project.namespace, @project, @id),
+          = link_to 'Blame', project_blame_path(@project, @id),
               class: 'btn js-blob-blame-link' unless blob.empty?
 
-      = link_to 'History', namespace_project_commits_path(@project.namespace, @project, @id),
+      = link_to 'History', project_commits_path(@project, @id),
           class: 'btn'
 
-      = link_to 'Permalink', namespace_project_blob_path(@project.namespace, @project,
+      = link_to 'Permalink', project_blob_path(@project,
           tree_join(@commit.sha, @path)), class: 'btn js-data-file-blob-permalink-url'
diff --git a/app/views/projects/blob/_new_dir.html.haml b/app/views/projects/blob/_new_dir.html.haml
index 40978583e8b2337490107fc709c15cbf9818dca7..b2959ef6d31f4f0b770fc1d970a29a8ce0a51c52 100644
--- a/app/views/projects/blob/_new_dir.html.haml
+++ b/app/views/projects/blob/_new_dir.html.haml
@@ -5,7 +5,7 @@
         %a.close{ href: "#", "data-dismiss" => "modal" } ×
         %h3.page-title= _('Create New Directory')
       .modal-body
-        = form_tag namespace_project_create_dir_path(@project.namespace, @project, @id), method: :post, remote: false, class: 'form-horizontal js-create-dir-form js-quick-submit js-requires-input' do
+        = form_tag project_create_dir_path(@project, @id), method: :post, remote: false, class: 'form-horizontal js-create-dir-form js-quick-submit js-requires-input' do
           .form-group
             = label_tag :dir_name, _('Directory name'), class: 'control-label'
             .col-sm-10
diff --git a/app/views/projects/blob/_remove.html.haml b/app/views/projects/blob/_remove.html.haml
index c8ca040621384d2a959fcb06a97311338da109fe..6a4a657fa8caf140f9c56eee9c6b8b5b81753b8c 100644
--- a/app/views/projects/blob/_remove.html.haml
+++ b/app/views/projects/blob/_remove.html.haml
@@ -6,7 +6,7 @@
         %h3.page-title Delete #{@blob.name}
 
       .modal-body
-        = form_tag namespace_project_blob_path(@project.namespace, @project, @id), method: :delete, class: 'form-horizontal js-delete-blob-form js-quick-submit js-requires-input' do
+        = form_tag project_blob_path(@project, @id), method: :delete, class: 'form-horizontal js-delete-blob-form js-quick-submit js-requires-input' do
           = render 'shared/new_commit_form', placeholder: "Delete #{@blob.name}"
 
           .form-group
diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml
index 4af624611514dcdd92686667090de4ca6a8e2192..f8cb612a2b4bca6f6acd67599f38d6c8d6d993cf 100644
--- a/app/views/projects/blob/edit.html.haml
+++ b/app/views/projects/blob/edit.html.haml
@@ -9,7 +9,7 @@
   - if @conflict
     .alert.alert-danger
       Someone edited the file the same time you did. Please check out
-      = link_to "the file", namespace_project_blob_path(@project.namespace, @project, tree_join(@branch_name, @file_path)), target: "_blank", rel: 'noopener noreferrer'
+      = link_to "the file", project_blob_path(@project, tree_join(@branch_name, @file_path)), target: "_blank", rel: 'noopener noreferrer'
       and make sure your changes will not unintentionally remove theirs.
   .editor-title-row
     %h3.page-title.blob-edit-page-title
@@ -22,13 +22,13 @@
           Write
 
       %li
-        = link_to '#preview', 'data-preview-url' => namespace_project_preview_blob_path(@project.namespace, @project, @id) do
+        = link_to '#preview', 'data-preview-url' => project_preview_blob_path(@project, @id) do
           = editing_preview_title(@blob.name)
 
-    = form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-quick-submit js-requires-input js-edit-blob-form', data: blob_editor_paths) do
+    = form_tag(project_update_blob_path(@project, @id), method: :put, class: 'form-horizontal js-quick-submit js-requires-input js-edit-blob-form', data: blob_editor_paths) do
       = render 'projects/blob/editor', ref: @ref, path: @path, blob_data: @blob.data
       = render 'shared/new_commit_form', placeholder: "Update #{@blob.name}"
       = hidden_field_tag 'last_commit_sha', @last_commit_sha
       = hidden_field_tag 'content', '', id: "file-content"
       = hidden_field_tag 'from_merge_request_iid', params[:from_merge_request_iid]
-      = render 'projects/commit_button', ref: @ref, cancel_path: namespace_project_blob_path(@project.namespace, @project, @id)
+      = render 'projects/commit_button', ref: @ref, cancel_path: project_blob_path(@project, @id)
diff --git a/app/views/projects/blob/new.html.haml b/app/views/projects/blob/new.html.haml
index 2afb909572a425f4b5231da8851c43db5e6aafad..8620a470041eb059c178f6fd1e4f1c62f55db826 100644
--- a/app/views/projects/blob/new.html.haml
+++ b/app/views/projects/blob/new.html.haml
@@ -7,10 +7,10 @@
     New file
   = render 'template_selectors'
 .file-editor
-  = form_tag(namespace_project_create_blob_path(@project.namespace, @project, @id), method: :post, class: 'form-horizontal js-edit-blob-form js-new-blob-form js-quick-submit js-requires-input', data: blob_editor_paths) do
+  = form_tag(project_create_blob_path(@project, @id), method: :post, class: 'form-horizontal js-edit-blob-form js-new-blob-form js-quick-submit js-requires-input', data: blob_editor_paths) do
     = render 'projects/blob/editor', ref: @ref
     = render 'shared/new_commit_form', placeholder: "Add new file"
 
     = hidden_field_tag 'content', '', id: 'file-content'
     = render 'projects/commit_button', ref: @ref,
-              cancel_path: namespace_project_tree_path(@project.namespace, @project, @id)
+              cancel_path: project_tree_path(@project, @id)
diff --git a/app/views/projects/blob/show.html.haml b/app/views/projects/blob/show.html.haml
index 41f75a491a54e3628c3d7438d0d3de6c0da7c87a..6e2ae4717cdb918ddff4e32fa8dbb42e2d1b7d0a 100644
--- a/app/views/projects/blob/show.html.haml
+++ b/app/views/projects/blob/show.html.haml
@@ -16,4 +16,4 @@
     = render 'projects/blob/remove'
 
     - title = "Replace #{@blob.name}"
-    = render 'projects/blob/upload', title: title, placeholder: title, button_title: 'Replace file', form_path: namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put
+    = render 'projects/blob/upload', title: title, placeholder: title, button_title: 'Replace file', form_path: project_update_blob_path(@project, @id), method: :put
diff --git a/app/views/projects/blob/viewers/_changelog.html.haml b/app/views/projects/blob/viewers/_changelog.html.haml
index 53921e63b5f6254f740a766af54f01c7a3d82d09..46e3e7f798a7db0b51e872033dce2d8fc5c89c23 100644
--- a/app/views/projects/blob/viewers/_changelog.html.haml
+++ b/app/views/projects/blob/viewers/_changelog.html.haml
@@ -1,4 +1,4 @@
 = icon('history fw')
 = succeed '.' do
   To find the state of this project's repository at the time of any of these versions, check out
-  = link_to "the tags", namespace_project_tags_path(viewer.project.namespace, viewer.project)
+  = link_to "the tags", project_tags_path(viewer.project)
diff --git a/app/views/projects/blob/viewers/_readme.html.haml b/app/views/projects/blob/viewers/_readme.html.haml
index 334b33faf486e5964350a22c7f459e7d27141ac1..507f44d47452d7fbeb0a2ad96f6906d062359a4f 100644
--- a/app/views/projects/blob/viewers/_readme.html.haml
+++ b/app/views/projects/blob/viewers/_readme.html.haml
@@ -1,4 +1,4 @@
 = icon('info-circle fw')
 = succeed '.' do
   To learn more about this project, read
-  = link_to "the wiki", namespace_project_wikis_path(viewer.project.namespace, viewer.project)
+  = link_to "the wiki", project_wikis_path(viewer.project)
diff --git a/app/views/projects/boards/_show.html.haml b/app/views/projects/boards/_show.html.haml
index 3622720a8b7c4db8080565aa62198ea3346c378e..07272ea2df1869f1eb66183f620b11949384e738 100644
--- a/app/views/projects/boards/_show.html.haml
+++ b/app/views/projects/boards/_show.html.haml
@@ -4,7 +4,7 @@
 
 - if show_new_nav?
   - content_for :sub_title_before do
-    %li= link_to "Issues", namespace_project_issues_path(@project.namespace, @project)
+    %li= link_to "Issues", project_issues_path(@project)
 
 - content_for :page_specific_javascripts do
   = webpack_bundle_tag 'common_vue'
@@ -34,7 +34,7 @@
       ":key" => "_uid" }
   = render "projects/boards/components/sidebar"
   %board-add-issues-modal{ "blank-state-image" => render('shared/empty_states/icons/issues.svg'),
-    "new-issue-path" => new_namespace_project_issue_path(@project.namespace, @project),
+    "new-issue-path" => new_project_issue_path(@project),
     "milestone-path" => milestones_filter_dropdown_path,
     "label-path" => labels_filter_path,
     ":issue-link-base" => "issueLinkBase",
diff --git a/app/views/projects/boards/components/sidebar/_assignee.html.haml b/app/views/projects/boards/components/sidebar/_assignee.html.haml
index c314573bdea515c825b88b8c60beae894241820d..8d957613be15e68f4d47415d038bafb78de5b077 100644
--- a/app/views/projects/boards/components/sidebar/_assignee.html.haml
+++ b/app/views/projects/boards/components/sidebar/_assignee.html.haml
@@ -22,7 +22,7 @@
         - dropdown_options = issue_assignees_dropdown_options
         %button.dropdown-menu-toggle.js-user-search.js-author-search.js-multiselect.js-save-user-data.js-issue-board-sidebar{ type: 'button', ref: 'assigneeDropdown', data: { toggle: 'dropdown', field_name: 'issue[assignee_ids][]', first_user: current_user&.username, current_user: 'true', project_id: @project.id, null_user: 'true', multi_select: 'true', 'dropdown-header': dropdown_options[:data][:'dropdown-header'], 'max-select': dropdown_options[:data][:'max-select'] },
           ":data-issuable-id" => "issue.id",
-          ":data-issue-update" => "'#{namespace_project_issues_path(@project.namespace, @project)}/' + issue.id + '.json'" }
+          ":data-issue-update" => "'#{project_issues_path(@project)}/' + issue.id + '.json'" }
           = dropdown_options[:title]
           = icon("chevron-down")
         .dropdown-menu.dropdown-select.dropdown-menu-user.dropdown-menu-selectable.dropdown-menu-author
diff --git a/app/views/projects/boards/components/sidebar/_due_date.html.haml b/app/views/projects/boards/components/sidebar/_due_date.html.haml
index 1a3b88e28c577b3678b63da6b8eb78f5c3048632..f44a9d49a54ab67bdf5560aa4342da639fbd55fa 100644
--- a/app/views/projects/boards/components/sidebar/_due_date.html.haml
+++ b/app/views/projects/boards/components/sidebar/_due_date.html.haml
@@ -23,7 +23,7 @@
       .dropdown
         %button.dropdown-menu-toggle.js-due-date-select.js-issue-boards-due-date{ type: 'button',
           data: { toggle: 'dropdown', field_name: "issue[due_date]", ability_name: "issue" },
-          ":data-issue-update" => "'#{namespace_project_issues_path(@project.namespace, @project)}/' + issue.id + '.json'" }
+          ":data-issue-update" => "'#{project_issues_path(@project)}/' + issue.id + '.json'" }
           %span.dropdown-toggle-text Due date
           = icon('chevron-down')
         .dropdown-menu.dropdown-menu-due-date
diff --git a/app/views/projects/boards/components/sidebar/_labels.html.haml b/app/views/projects/boards/components/sidebar/_labels.html.haml
index bee0f3dd065f700f9c5a17440bf02e75a791786d..7d0c35fe183b71a7631ff0ef683c34839671bb91 100644
--- a/app/views/projects/boards/components/sidebar/_labels.html.haml
+++ b/app/views/projects/boards/components/sidebar/_labels.html.haml
@@ -19,8 +19,8 @@
         ":value" => "label.id" }
       .dropdown
         %button.dropdown-menu-toggle.js-label-select.js-multiselect.js-issue-board-sidebar{ type: "button",
-          data: { toggle: "dropdown", field_name: "issue[label_names][]", show_no: "true", show_any: "true", project_id: @project.id, labels: namespace_project_labels_path(@project.namespace, @project, :json), namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path) },
-          ":data-issue-update" => "'#{namespace_project_issues_path(@project.namespace, @project)}/' + issue.id + '.json'" }
+          data: { toggle: "dropdown", field_name: "issue[label_names][]", show_no: "true", show_any: "true", project_id: @project.id, labels: project_labels_path(@project, :json), namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path) },
+          ":data-issue-update" => "'#{project_issues_path(@project)}/' + issue.id + '.json'" }
           %span.dropdown-toggle-text
             Label
           = icon('chevron-down')
diff --git a/app/views/projects/boards/components/sidebar/_milestone.html.haml b/app/views/projects/boards/components/sidebar/_milestone.html.haml
index 4e46351bf8abc64db19d98e8f5916c1e89cd9ce6..002e9994ee0edba65c74cc51d246d67c6b3bfa9b 100644
--- a/app/views/projects/boards/components/sidebar/_milestone.html.haml
+++ b/app/views/projects/boards/components/sidebar/_milestone.html.haml
@@ -16,10 +16,10 @@
         name: "issue[milestone_id]",
         "v-if" => "issue.milestone" }
       .dropdown
-        %button.dropdown-menu-toggle.js-milestone-select.js-issue-board-sidebar{ type: "button", data: { toggle: "dropdown", show_no: "true", field_name: "issue[milestone_id]", project_id: @project.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), ability_name: "issue", use_id: "true", default_no: "true" },
+        %button.dropdown-menu-toggle.js-milestone-select.js-issue-board-sidebar{ type: "button", data: { toggle: "dropdown", show_no: "true", field_name: "issue[milestone_id]", project_id: @project.id, milestones: project_milestones_path(@project, :json), ability_name: "issue", use_id: "true", default_no: "true" },
           ":data-selected" => "milestoneTitle",
           ":data-issuable-id" => "issue.id",
-          ":data-issue-update" => "'#{namespace_project_issues_path(@project.namespace, @project)}/' + issue.id + '.json'" }
+          ":data-issue-update" => "'#{project_issues_path(@project)}/' + issue.id + '.json'" }
           Milestone
           = icon("chevron-down")
         .dropdown-menu.dropdown-select.dropdown-menu-selectable
diff --git a/app/views/projects/boards/components/sidebar/_notifications.html.haml b/app/views/projects/boards/components/sidebar/_notifications.html.haml
index a08c7f2af096a3f94f96597174e23d2ca1b895bf..aaddd7e249fbd2969e5ce61c5c42e8e48d40d7e3 100644
--- a/app/views/projects/boards/components/sidebar/_notifications.html.haml
+++ b/app/views/projects/boards/components/sidebar/_notifications.html.haml
@@ -1,5 +1,5 @@
 - if current_user
-  .block.light.subscription{ ":data-url" => "'#{namespace_project_issues_path(@project.namespace, @project)}/' + issue.id + '/toggle_subscription'" }
+  .block.light.subscription{ ":data-url" => "'#{project_issues_path(@project)}/' + issue.id + '/toggle_subscription'" }
     %span.issuable-header-text.hide-collapsed.pull-left
       Notifications
     %button.btn.btn-default.pull-right.js-subscribe-button.issuable-subscribe-button.hide-collapsed{ type: "button" }
diff --git a/app/views/projects/branches/_branch.html.haml b/app/views/projects/branches/_branch.html.haml
index 869633e016d0cdefdeefbd6c8242370f7af9edda..19712a8f1becf707b00f778f62a58fa934a8f3ea 100644
--- a/app/views/projects/branches/_branch.html.haml
+++ b/app/views/projects/branches/_branch.html.haml
@@ -6,7 +6,7 @@
 - merge_project = can?(current_user, :create_merge_request, @project) ? @project : (current_user && current_user.fork_of(@project))
 %li{ class: "js-branch-#{branch.name}" }
   %div
-    = link_to namespace_project_tree_path(@project.namespace, @project, branch.name), class: 'item-title str-truncated ref-name' do
+    = link_to project_tree_path(@project, branch.name), class: 'item-title str-truncated ref-name' do
       = icon('code-fork')
       = branch.name
     &nbsp;
@@ -25,7 +25,7 @@
           Merge request
 
       - if branch.name != @repository.root_ref
-        = link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: branch.name), class: "btn btn-default #{'prepend-left-10' unless merge_project}", method: :post, title: "Compare" do
+        = link_to project_compare_index_path(@project, from: @repository.root_ref, to: branch.name), class: "btn btn-default #{'prepend-left-10' unless merge_project}", method: :post, title: "Compare" do
           Compare
 
       = render 'projects/buttons/download', project: @project, ref: branch.name, pipeline: @refs_pipelines[branch.name]
@@ -42,7 +42,7 @@
               title: "Delete protected branch",
               data: { toggle: "modal",
                 target: "#modal-delete-branch",
-                delete_path: namespace_project_branch_path(@project.namespace, @project, branch.name),
+                delete_path: project_branch_path(@project, branch.name),
                 branch_name: branch.name } }
               = icon("trash-o")
           - else
@@ -51,7 +51,7 @@
               title: "Only a project master or owner can delete a protected branch" }
               = icon("trash-o")
         - else
-          = link_to namespace_project_branch_path(@project.namespace, @project, branch.name),
+          = link_to project_branch_path(@project, branch.name),
             class: "btn btn-remove remove-row js-ajax-loading-spinner has-tooltip",
             title: "Delete branch",
             method: :delete,
diff --git a/app/views/projects/branches/_commit.html.haml b/app/views/projects/branches/_commit.html.haml
index ad8f9da0621aafe87eb78e1bf897910ee1a3e826..18fbb81c16708907e329d8bfb5c3a37a66e74eca 100644
--- a/app/views/projects/branches/_commit.html.haml
+++ b/app/views/projects/branches/_commit.html.haml
@@ -1,9 +1,9 @@
 .branch-commit
   .icon-container.commit-icon
     = custom_icon("icon_commit")
-  = link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit.id), class: "commit-sha"
+  = link_to commit.short_id, project_commit_path(project, commit.id), class: "commit-sha"
   &middot;
   %span.str-truncated
-    = link_to_gfm commit.title, namespace_project_commit_path(project.namespace, project, commit.id), class: "commit-row-message"
+    = link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message"
   &middot;
   #{time_ago_with_tooltip(commit.committed_date)}
diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml
index 4bade77a077670c719b6016ca4cd188389533d10..8bc1996452b681855d10b278d8acc69508c24470 100644
--- a/app/views/projects/branches/index.html.haml
+++ b/app/views/projects/branches/index.html.haml
@@ -6,7 +6,7 @@
   .top-area.adjust
     .nav-text
       Protected branches can be managed in
-      = link_to 'project settings', namespace_project_protected_branches_path(@project.namespace, @project)
+      = link_to 'project settings', project_protected_branches_path(@project)
 
     .nav-controls
       = form_tag(filter_branches_path, method: :get) do
@@ -25,9 +25,9 @@
               = link_to title, filter_branches_path(sort: value), class: ("is-active" if @sort == value)
 
       - if can? current_user, :push_code, @project
-        = link_to namespace_project_merged_branches_path(@project.namespace, @project), class: 'btn btn-inverted btn-remove has-tooltip', title: "Delete all branches that are merged into '#{@project.repository.root_ref}'", method: :delete, data: { confirm: "Deleting the merged branches cannot be undone. Are you sure?", container: 'body' } do
+        = link_to project_merged_branches_path(@project), class: 'btn btn-inverted btn-remove has-tooltip', title: "Delete all branches that are merged into '#{@project.repository.root_ref}'", method: :delete, data: { confirm: "Deleting the merged branches cannot be undone. Are you sure?", container: 'body' } do
           Delete merged branches
-        = link_to new_namespace_project_branch_path(@project.namespace, @project), class: 'btn btn-create' do
+        = link_to new_project_branch_path(@project), class: 'btn btn-create' do
           New branch
 
   - if @branches.any?
diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml
index 5a0eba3551fb1658641ba10a99c9fddb0eb2bec2..03eefcc2b4de82d06b7475da7a31df71922e106c 100644
--- a/app/views/projects/branches/new.html.haml
+++ b/app/views/projects/branches/new.html.haml
@@ -27,7 +27,7 @@
       .help-block Existing branch name, tag, or commit SHA
   .form-actions
     = button_tag 'Create branch', class: 'btn btn-create', tabindex: 3
-    = link_to 'Cancel', namespace_project_branches_path(@project.namespace, @project), class: 'btn btn-cancel'
+    = link_to 'Cancel', project_branches_path(@project), class: 'btn btn-cancel'
 
 :javascript
   var availableRefs = #{@project.repository.ref_names.to_json};
diff --git a/app/views/projects/buttons/_download.html.haml b/app/views/projects/buttons/_download.html.haml
index a73ddd5eb33183f3939ce33c67ac1a4150ea1533..883922dbf04738645b5f33d53673d742359549ad 100644
--- a/app/views/projects/buttons/_download.html.haml
+++ b/app/views/projects/buttons/_download.html.haml
@@ -10,19 +10,19 @@
       %li.dropdown-header
         #{ _('Source code') }
       %li
-        = link_to archive_namespace_project_repository_path(project.namespace, project, ref: ref, format: 'zip'), rel: 'nofollow', download: '' do
+        = link_to archive_project_repository_path(project, ref: ref, format: 'zip'), rel: 'nofollow', download: '' do
           %i.fa.fa-download
           %span=  _('Download zip')
       %li
-        = link_to archive_namespace_project_repository_path(project.namespace, project, ref: ref, format: 'tar.gz'), rel: 'nofollow', download: '' do
+        = link_to archive_project_repository_path(project, ref: ref, format: 'tar.gz'), rel: 'nofollow', download: '' do
           %i.fa.fa-download
           %span= _('Download tar.gz')
       %li
-        = link_to archive_namespace_project_repository_path(project.namespace, project, ref: ref, format: 'tar.bz2'), rel: 'nofollow', download: '' do
+        = link_to archive_project_repository_path(project, ref: ref, format: 'tar.bz2'), rel: 'nofollow', download: '' do
           %i.fa.fa-download
           %span= _('Download tar.bz2')
       %li
-        = link_to archive_namespace_project_repository_path(project.namespace, project, ref: ref, format: 'tar'), rel: 'nofollow', download: '' do
+        = link_to archive_project_repository_path(project, ref: ref, format: 'tar'), rel: 'nofollow', download: '' do
           %i.fa.fa-download
           %span= _('Download tar')
 
@@ -37,7 +37,7 @@
             %li.dropdown-header Previous Artifacts
           - artifacts.each do |job|
             %li
-              = link_to latest_succeeded_namespace_project_artifacts_path(project.namespace, project, "#{ref}/download", job: job.name), rel: 'nofollow', download: '' do
+              = link_to latest_succeeded_project_artifacts_path(project, "#{ref}/download", job: job.name), rel: 'nofollow', download: '' do
                 %i.fa.fa-download
                 %span
                   #{ s_('DownloadArtifacts|Download') } '#{job.name}'
diff --git a/app/views/projects/buttons/_dropdown.html.haml b/app/views/projects/buttons/_dropdown.html.haml
index aa1a533b5cbcb08211c522d17f9e98aec0d9d665..b04d6a1fa5e01785f1a35e29886bd79731a8ac43 100644
--- a/app/views/projects/buttons/_dropdown.html.haml
+++ b/app/views/projects/buttons/_dropdown.html.haml
@@ -10,19 +10,19 @@
 
       - if can_create_issue
         %li
-          = link_to new_namespace_project_issue_path(@project.namespace, @project) do
+          = link_to new_project_issue_path(@project) do
             = icon('exclamation-circle fw')
             #{ _('New issue') }
 
       - if merge_project
         %li
-          = link_to namespace_project_new_merge_request_path(merge_project.namespace, merge_project) do
+          = link_to project_new_merge_request_path(merge_project) do
             = icon('tasks fw')
             #{ _('New merge request') }
 
       - if can_create_snippet
         %li
-          = link_to new_namespace_project_snippet_path(@project.namespace, @project) do
+          = link_to new_project_snippet_path(@project) do
             = icon('file-text-o fw')
             #{ _('New snippet') }
 
@@ -31,28 +31,28 @@
 
       - if can?(current_user, :push_code, @project)
         %li
-          = link_to namespace_project_new_blob_path(@project.namespace, @project, @project.default_branch || 'master') do
+          = link_to project_new_blob_path(@project, @project.default_branch || 'master') do
             = icon('file fw')
             #{ _('New file') }
         %li
-          = link_to new_namespace_project_branch_path(@project.namespace, @project) do
+          = link_to new_project_branch_path(@project) do
             = icon('code-fork fw')
             #{ _('New branch') }
         %li
-          = link_to new_namespace_project_tag_path(@project.namespace, @project) do
+          = link_to new_project_tag_path(@project) do
             = icon('tags fw')
             #{ _('New tag') }
       - elsif current_user && current_user.already_forked?(@project)
         %li
-          = link_to namespace_project_new_blob_path(@project.namespace, @project, @project.default_branch || 'master') do
+          = link_to project_new_blob_path(@project, @project.default_branch || 'master') do
             = icon('file fw')
             #{ _('New file') }
       - elsif can?(current_user, :fork_project, @project)
         %li
-          - continue_params = { to:         namespace_project_new_blob_path(@project.namespace, @project, @project.default_branch || 'master'),
+          - continue_params = { to:         project_new_blob_path(@project, @project.default_branch || 'master'),
                                 notice:     edit_in_new_fork_notice,
                                 notice_now: edit_in_new_fork_notice_now }
-          - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key:  current_user.namespace.id,
+          - fork_path = project_forks_path(@project, namespace_key:  current_user.namespace.id,
                                                                                   continue:       continue_params)
           = link_to fork_path, method: :post do
             = icon('file fw')
diff --git a/app/views/projects/buttons/_fork.html.haml b/app/views/projects/buttons/_fork.html.haml
index 42f8c75f57b0b3775023f26a4c82ffd8ec76ca2e..f45cc7f0f45e3bc4ed3328e96d80eba23c56f358 100644
--- a/app/views/projects/buttons/_fork.html.haml
+++ b/app/views/projects/buttons/_fork.html.haml
@@ -5,14 +5,14 @@
         = custom_icon('icon_fork')
         %span= s_('GoToYourFork|Fork')
     - elsif !current_user.can_create_project?
-      = link_to new_namespace_project_fork_path(@project.namespace, @project), title: _('You have reached your project limit'), class: 'btn has-tooltip disabled' do
+      = link_to new_project_fork_path(@project), title: _('You have reached your project limit'), class: 'btn has-tooltip disabled' do
         = custom_icon('icon_fork')
         %span= s_('CreateNewFork|Fork')
     - else
-      = link_to new_namespace_project_fork_path(@project.namespace, @project), class: 'btn' do
+      = link_to new_project_fork_path(@project), class: 'btn' do
         = custom_icon('icon_fork')
         %span= s_('CreateNewFork|Fork')
     .count-with-arrow
       %span.arrow
-      = link_to namespace_project_forks_path(@project.namespace, @project), title: n_('Fork', 'Forks', @project.forks_count), class: 'count' do
+      = link_to project_forks_path(@project), title: n_('Fork', 'Forks', @project.forks_count), class: 'count' do
         = @project.forks_count
diff --git a/app/views/projects/buttons/_star.html.haml b/app/views/projects/buttons/_star.html.haml
index 58413e2fc52ff13d7d407533d80009c216c46513..e248676be0d2a3533be47a525509e5af52ee83c9 100644
--- a/app/views/projects/buttons/_star.html.haml
+++ b/app/views/projects/buttons/_star.html.haml
@@ -1,5 +1,5 @@
 - if current_user
-  = link_to toggle_star_namespace_project_path(@project.namespace, @project), { class: 'btn star-btn toggle-star', method: :post, remote: true } do
+  = link_to toggle_star_project_path(@project), { class: 'btn star-btn toggle-star', method: :post, remote: true } do
     - if current_user.starred?(@project)
       = icon('star')
       %span.starred=  _('Unstar')
diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml
index d9f28d66b664ed9972cf6eaa60e1c831218e267b..c1842527480cc3b0f593f8c6819ba4da49b32b2c 100644
--- a/app/views/projects/ci/builds/_build.html.haml
+++ b/app/views/projects/ci/builds/_build.html.haml
@@ -14,7 +14,7 @@
 
   %td.branch-commit
     - if can?(current_user, :read_build, job)
-      = link_to namespace_project_job_url(job.project.namespace, job.project, job) do
+      = link_to project_job_url(job.project, job) do
         %span.build-link ##{job.id}
     - else
       %span.build-link ##{job.id}
@@ -30,7 +30,7 @@
         = custom_icon("icon_commit")
 
     - if commit_sha
-      = link_to job.short_sha, namespace_project_commit_path(job.project.namespace, job.project, job.sha), class: "commit-sha"
+      = link_to job.short_sha, project_commit_path(job.project, job.sha), class: "commit-sha"
 
     - if job.stuck?
       = icon('warning', class: 'text-warning has-tooltip', title: 'Job is stuck. Check runners.')
@@ -63,7 +63,7 @@
   - if admin
     %td
       - if job.project
-        = link_to job.project.name_with_namespace, admin_namespace_project_path(job.project.namespace, job.project)
+        = link_to job.project.name_with_namespace, admin_project_path(job.project)
     %td
       - if job.try(:runner)
         = runner_link(job.runner)
@@ -95,16 +95,16 @@
   %td
     .pull-right
       - if can?(current_user, :read_build, job) && job.artifacts?
-        = link_to download_namespace_project_job_artifacts_path(job.project.namespace, job.project, job), rel: 'nofollow', download: '', title: 'Download artifacts', class: 'btn btn-build' do
+        = link_to download_project_job_artifacts_path(job.project, job), rel: 'nofollow', download: '', title: 'Download artifacts', class: 'btn btn-build' do
           = icon('download')
       - if can?(current_user, :update_build, job)
         - if job.active?
-          = link_to cancel_namespace_project_job_path(job.project.namespace, job.project, job, return_to: request.original_url), method: :post, title: 'Cancel', class: 'btn btn-build' do
+          = link_to cancel_project_job_path(job.project, job, return_to: request.original_url), method: :post, title: 'Cancel', class: 'btn btn-build' do
             = icon('remove', class: 'cred')
         - elsif allow_retry
           - if job.playable? && !admin && can?(current_user, :update_build, job)
-            = link_to play_namespace_project_job_path(job.project.namespace, job.project, job, return_to: request.original_url), method: :post, title: 'Play', class: 'btn btn-build' do
+            = link_to play_project_job_path(job.project, job, return_to: request.original_url), method: :post, title: 'Play', class: 'btn btn-build' do
               = custom_icon('icon_play')
           - elsif job.retryable?
-            = link_to retry_namespace_project_job_path(job.project.namespace, job.project, job, return_to: request.original_url), method: :post, title: 'Retry', class: 'btn btn-build' do
+            = link_to retry_project_job_path(job.project, job, return_to: request.original_url), method: :post, title: 'Retry', class: 'btn btn-build' do
               = icon('repeat')
diff --git a/app/views/projects/commit/_change.html.haml b/app/views/projects/commit/_change.html.haml
index 2267f123e3833cfcbeaacdb8733699d9837a7d9b..d0a380516f92f50efb16dfd9a9b2dd70e9947835 100644
--- a/app/views/projects/commit/_change.html.haml
+++ b/app/views/projects/commit/_change.html.haml
@@ -22,7 +22,7 @@
             = label_tag 'start_branch', branch_label, class: 'control-label'
             .col-sm-10
               = hidden_field_tag :start_branch, @project.default_branch, id: 'start_branch'
-              = dropdown_tag(@project.default_branch, options: { title: s_("BranchSwitcherTitle|Switch branch"), filter: true, placeholder: s_("BranchSwitcherPlaceholder|Search branches"), toggle_class: 'js-project-refs-dropdown dynamic', dropdown_class: 'dropdown-menu-selectable', data: { field_name: "start_branch", selected: @project.default_branch, start_branch: @project.default_branch, refs_url: namespace_project_branches_path(@project.namespace, @project), submit_form_on_click: false } })
+              = dropdown_tag(@project.default_branch, options: { title: s_("BranchSwitcherTitle|Switch branch"), filter: true, placeholder: s_("BranchSwitcherPlaceholder|Search branches"), toggle_class: 'js-project-refs-dropdown dynamic', dropdown_class: 'dropdown-menu-selectable', data: { field_name: "start_branch", selected: @project.default_branch, start_branch: @project.default_branch, refs_url: project_branches_path(@project), submit_form_on_click: false } })
 
               - if can?(current_user, :push_code, @project)
                 = render 'shared/new_merge_request_checkbox'
diff --git a/app/views/projects/commit/_ci_menu.html.haml b/app/views/projects/commit/_ci_menu.html.haml
index 8aed88da38babd417f88496e1e124f097ade9aa2..f3f11b5b4052a01340c51d5a15ef8bef0ed549e6 100644
--- a/app/views/projects/commit/_ci_menu.html.haml
+++ b/app/views/projects/commit/_ci_menu.html.haml
@@ -1,10 +1,10 @@
 %ul.nav-links.no-top.no-bottom.commit-ci-menu
   = nav_link(path: 'commit#show') do
-    = link_to namespace_project_commit_path(@project.namespace, @project, @commit.id) do
+    = link_to project_commit_path(@project, @commit.id) do
       Changes
       %span.badge= @diffs.size
   - if can?(current_user, :read_pipeline, @project)
     = nav_link(path: 'commit#pipelines') do
-      = link_to pipelines_namespace_project_commit_path(@project.namespace, @project, @commit.id) do
+      = link_to pipelines_project_commit_path(@project, @commit.id) do
         Pipelines
         %span.badge= @commit.pipelines.size
diff --git a/app/views/projects/commit/_commit_box.html.haml b/app/views/projects/commit/_commit_box.html.haml
index 7fe44816bae9d775e5cc7df7f2ce66ec7924fc6f..572c368990e3d512d29efc41bf8a27582157d323 100644
--- a/app/views/projects/commit/_commit_box.html.haml
+++ b/app/views/projects/commit/_commit_box.html.haml
@@ -21,7 +21,7 @@
       %span.btn.disabled.btn-grouped.hidden-xs.append-right-10
         = icon('comment')
         = @notes_count
-    = link_to namespace_project_tree_path(@project.namespace, @project, @commit), class: "btn btn-default append-right-10 hidden-xs hidden-sm" do
+    = link_to project_tree_path(@project, @commit), class: "btn btn-default append-right-10 hidden-xs hidden-sm" do
       #{ _('Browse files') }
     .dropdown.inline
       %a.btn.btn-default.dropdown-toggle{ data: { toggle: "dropdown" } }
@@ -29,22 +29,22 @@
         = icon('caret-down')
       %ul.dropdown-menu.dropdown-menu-align-right
         %li.visible-xs-block.visible-sm-block
-          = link_to namespace_project_tree_path(@project.namespace, @project, @commit) do
+          = link_to project_tree_path(@project, @commit) do
             _('Browse Files')
         - unless @commit.has_been_reverted?(current_user)
           %li.clearfix
-            = revert_commit_link(@commit, namespace_project_commit_path(@project.namespace, @project, @commit.id), has_tooltip: false)
+            = revert_commit_link(@commit, project_commit_path(@project, @commit.id), has_tooltip: false)
         %li.clearfix
-          = cherry_pick_commit_link(@commit, namespace_project_commit_path(@project.namespace, @project, @commit.id), has_tooltip: false)
+          = cherry_pick_commit_link(@commit, project_commit_path(@project, @commit.id), has_tooltip: false)
         - if can_collaborate_with_project?
           %li.clearfix
-            = link_to s_("CreateTag|Tag"), new_namespace_project_tag_path(@project.namespace, @project, ref: @commit)
+            = link_to s_("CreateTag|Tag"), new_project_tag_path(@project, ref: @commit)
         %li.divider
         %li.dropdown-header
           #{ _('Download') }
         - unless @commit.parents.length > 1
-          %li= link_to s_("DownloadCommit|Email Patches"), namespace_project_commit_path(@project.namespace, @project, @commit, format: :patch)
-        %li= link_to s_("DownloadCommit|Plain Diff"),    namespace_project_commit_path(@project.namespace, @project, @commit, format: :diff)
+          %li= link_to s_("DownloadCommit|Email Patches"), project_commit_path(@project, @commit, format: :patch)
+        %li= link_to s_("DownloadCommit|Plain Diff"),    project_commit_path(@project, @commit, format: :diff)
 
 .commit-box
   %h3.commit-title
@@ -59,7 +59,7 @@
       = custom_icon("icon_commit")
     %span.cgray= n_('parent', 'parents', @commit.parents.count)
     - @commit.parents.each do |parent|
-      = link_to parent.short_id, namespace_project_commit_path(@project.namespace, @project, parent), class: "commit-sha"
+      = link_to parent.short_id, project_commit_path(@project, parent), class: "commit-sha"
     %span.commit-info.branches
       %i.fa.fa-spinner.fa-spin
 
@@ -67,10 +67,10 @@
     - last_pipeline = @commit.last_pipeline
     .well-segment.pipeline-info
       .status-icon-container{ class: "ci-status-icon-#{@commit.status}" }
-        = link_to namespace_project_pipeline_path(@project.namespace, @project, last_pipeline.id) do
+        = link_to project_pipeline_path(@project, last_pipeline.id) do
           = ci_icon_for_status(last_pipeline.status)
       #{ _('Pipeline') }
-      = link_to "##{last_pipeline.id}", namespace_project_pipeline_path(@project.namespace, @project, last_pipeline.id)
+      = link_to "##{last_pipeline.id}", project_pipeline_path(@project, last_pipeline.id)
       = ci_label_for_status(last_pipeline.status)
       - if last_pipeline.stages_count.nonzero?
         #{ n_(s_('Pipeline|with stage'), s_('Pipeline|with stages'), last_pipeline.stages_count) }
@@ -80,4 +80,4 @@
       = time_interval_in_words last_pipeline.duration
 
 :javascript
-  $(".commit-info.branches").load("#{branches_namespace_project_commit_path(@project.namespace, @project, @commit.id)}");
+  $(".commit-info.branches").load("#{branches_project_commit_path(@project, @commit.id)}");
diff --git a/app/views/projects/commit/pipelines.html.haml b/app/views/projects/commit/pipelines.html.haml
index ac93eac41acc4c3f882fbb8a0f165219b34a6d30..c66ea873dbadc4a16a24c0dc9565730bdb9df5d4 100644
--- a/app/views/projects/commit/pipelines.html.haml
+++ b/app/views/projects/commit/pipelines.html.haml
@@ -2,4 +2,4 @@
 
 = render 'commit_box'
 = render 'ci_menu'
-= render 'projects/commit/pipelines_list', endpoint: pipelines_namespace_project_commit_path(@project.namespace, @project, @commit.id)
+= render 'projects/commit/pipelines_list', endpoint: pipelines_project_commit_path(@project, @commit.id)
diff --git a/app/views/projects/commits/_commit.atom.builder b/app/views/projects/commits/_commit.atom.builder
index 1657fb46163758fe8f9869e17e5079052f134e56..d806acdda1373e9defb9b9f2b91bcb69da9e77ca 100644
--- a/app/views/projects/commits/_commit.atom.builder
+++ b/app/views/projects/commits/_commit.atom.builder
@@ -1,6 +1,6 @@
 xml.entry do
-  xml.id      namespace_project_commit_url(@project.namespace, @project, id: commit.id)
-  xml.link    href: namespace_project_commit_url(@project.namespace, @project, id: commit.id)
+  xml.id      project_commit_url(@project, id: commit.id)
+  xml.link    href: project_commit_url(@project, id: commit.id)
   xml.title   truncate(commit.title, length: 80)
   xml.updated commit.committed_date.xmlschema
   xml.media   :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(commit.author_email))
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index 8a4ef5a45b362732caaa27569f5936b6298820e6..1033bad0d49e16ebe4e1c490f015808a6f0c3cc5 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -16,7 +16,7 @@
 
     .commit-detail
       .commit-content
-        = link_to_gfm commit.title, namespace_project_commit_path(project.namespace, project, commit.id), class: "commit-row-message item-title"
+        = link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message item-title"
         %span.commit-row-message.visible-xs-inline
           &middot;
           = commit.short_id
@@ -39,6 +39,6 @@
       .commit-actions.flex-row.hidden-xs
         - if commit.status(ref)
           = render_commit_status(commit, ref: ref)
-        = link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit), class: "commit-sha btn btn-transparent"
+        = link_to commit.short_id, project_commit_path(project, commit), class: "commit-sha btn btn-transparent"
         = clipboard_button(text: commit.id, title: _("Copy commit SHA to clipboard"))
         = link_to_browse_code(project, commit)
diff --git a/app/views/projects/commits/_head.html.haml b/app/views/projects/commits/_head.html.haml
index ebeaab863bc112fcb2bda6277f34affc9f25235b..e1549baef89bfac27aa43eff79f3b0fe0f1edbd4 100644
--- a/app/views/projects/commits/_head.html.haml
+++ b/app/views/projects/commits/_head.html.haml
@@ -4,33 +4,33 @@
     .nav-links.sub-nav.scrolling-tabs
       %ul{ class: (container_class) }
         = nav_link(controller: %w(tree blob blame edit_tree new_tree find_file)) do
-          = link_to project_files_path(@project) do
+          = link_to project_tree_path(@project) do
             #{ _('Files') }
 
         = nav_link(controller: [:commit, :commits]) do
-          = link_to namespace_project_commits_path(@project.namespace, @project, current_ref) do
+          = link_to project_commits_path(@project, current_ref) do
             #{ _('Commits') }
 
         = nav_link(html_options: {class: branches_tab_class}) do
-          = link_to namespace_project_branches_path(@project.namespace, @project) do
+          = link_to project_branches_path(@project) do
             #{ _('Branches') }
 
         = nav_link(controller: [:tags, :releases]) do
-          = link_to namespace_project_tags_path(@project.namespace, @project) do
+          = link_to project_tags_path(@project) do
             #{ _('Tags') }
 
         = nav_link(path: 'graphs#show') do
-          = link_to namespace_project_graph_path(@project.namespace, @project, current_ref) do
+          = link_to project_graph_path(@project, current_ref) do
             #{ _('Contributors') }
 
         = nav_link(controller: %w(network)) do
-          = link_to namespace_project_network_path(@project.namespace, @project, current_ref) do
+          = link_to project_network_path(@project, current_ref) do
             #{ s_('ProjectNetworkGraph|Graph') }
 
         = nav_link(controller: :compare) do
-          = link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: current_ref) do
+          = link_to project_compare_index_path(@project, from: @repository.root_ref, to: current_ref) do
             #{ _('Compare') }
 
         = nav_link(path: 'graphs#charts') do
-          = link_to charts_namespace_project_graph_path(@project.namespace, @project, current_ref) do
+          = link_to charts_project_graph_path(@project, current_ref) do
             #{ _('Charts') }
diff --git a/app/views/projects/commits/_inline_commit.html.haml b/app/views/projects/commits/_inline_commit.html.haml
index 5fb899354672f65a1568fbbeee1475f26319d21f..48cefbe45f2e1d1e4b57a063121eb56b2e3f7196 100644
--- a/app/views/projects/commits/_inline_commit.html.haml
+++ b/app/views/projects/commits/_inline_commit.html.haml
@@ -1,8 +1,8 @@
 %li.commit.inline-commit
   .commit-row-title
-    = link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit), class: "commit-sha"
+    = link_to commit.short_id, project_commit_path(project, commit), class: "commit-sha"
     &nbsp;
     %span.str-truncated
-      = link_to_gfm commit.title, namespace_project_commit_path(project.namespace, project, commit.id), class: "commit-row-message"
+      = link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message"
     .pull-right
       #{time_ago_with_tooltip(commit.committed_date)}
diff --git a/app/views/projects/commits/show.atom.builder b/app/views/projects/commits/show.atom.builder
index 9cf792e1721deaaa90f701fe4e02d79bfe294624..a9b776314749bcc9f6cb4db1cf78ea2a05d5e776 100644
--- a/app/views/projects/commits/show.atom.builder
+++ b/app/views/projects/commits/show.atom.builder
@@ -1,7 +1,7 @@
 xml.title   "#{@project.name}:#{@ref} commits"
-xml.link    href: namespace_project_commits_url(@project.namespace, @project, @ref, rss_url_options), rel: "self", type: "application/atom+xml"
-xml.link    href: namespace_project_commits_url(@project.namespace, @project, @ref), rel: "alternate", type: "text/html"
-xml.id      namespace_project_commits_url(@project.namespace, @project, @ref)
+xml.link    href: project_commits_url(@project, @ref, rss_url_options), rel: "self", type: "application/atom+xml"
+xml.link    href: project_commits_url(@project, @ref), rel: "alternate", type: "text/html"
+xml.id      project_commits_url(@project, @ref)
 xml.updated @commits.first.committed_date.xmlschema if @commits.any?
 
 xml << render(@commits) if @commits.any?
diff --git a/app/views/projects/commits/show.html.haml b/app/views/projects/commits/show.html.haml
index 7ed7e441344b65d2b237a992072c707840ccc10a..b8547c10c7380e6660309fcc23619774990529df 100644
--- a/app/views/projects/commits/show.html.haml
+++ b/app/views/projects/commits/show.html.haml
@@ -2,7 +2,7 @@
 
 - page_title _("Commits"), @ref
 = content_for :meta_tags do
-  = auto_discovery_link_tag(:atom, namespace_project_commits_url(@project.namespace, @project, @ref, rss_url_options), title: "#{@project.name}:#{@ref} commits")
+  = auto_discovery_link_tag(:atom, project_commits_url(@project, @ref, rss_url_options), title: "#{@project.name}:#{@ref} commits")
 
 = content_for :sub_nav do
   = render "head"
@@ -19,16 +19,16 @@
       .tree-controls.hidden-xs.hidden-sm
         - if @merge_request.present?
           .control
-            = link_to _("View open merge request"), namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'btn'
+            = link_to _("View open merge request"), project_merge_request_path(@project, @merge_request), class: 'btn'
         - elsif create_mr_button?(@repository.root_ref, @ref)
           .control
             = link_to _("Create merge request"), create_mr_path(@repository.root_ref, @ref), class: 'btn btn-success'
 
         .control
-          = form_tag(namespace_project_commits_path(@project.namespace, @project, @id), method: :get, class: 'commits-search-form') do
+          = form_tag(project_commits_path(@project, @id), method: :get, class: 'commits-search-form') do
             = search_field_tag :search, params[:search], { placeholder: _('Filter by commit message'), id: 'commits-search', class: 'form-control search-text-input input-short', spellcheck: false }
         .control
-          = link_to namespace_project_commits_path(@project.namespace, @project, @ref, rss_url_options), title: _("Commits feed"), class: 'btn' do
+          = link_to project_commits_path(@project, @ref, rss_url_options), title: _("Commits feed"), class: 'btn' do
             = icon("rss")
 
   %div{ id: dom_id(@project) }
diff --git a/app/views/projects/compare/_form.html.haml b/app/views/projects/compare/_form.html.haml
index adb724c1b8d1ceaff3a08f47855c4b28f1138b31..94b7db5eb25efdb2e0334c0393f6233872ed4afd 100644
--- a/app/views/projects/compare/_form.html.haml
+++ b/app/views/projects/compare/_form.html.haml
@@ -1,4 +1,4 @@
-= form_tag namespace_project_compare_index_path(@project.namespace, @project), method: :post, class: 'form-inline js-requires-input' do
+= form_tag project_compare_index_path(@project), method: :post, class: 'form-inline js-requires-input' do
   .clearfix
     - if params[:to] && params[:from]
       .compare-switch-container
@@ -7,7 +7,7 @@
       .input-group.inline-input-group
         %span.input-group-addon from
         = hidden_field_tag :from, params[:from]
-        = button_tag type: 'button', title: params[:from], class: "form-control compare-dropdown-toggle js-compare-dropdown has-tooltip git-revision-dropdown-toggle", required: true, data: { refs_url: refs_namespace_project_path(@project.namespace, @project), toggle: "dropdown", target: ".js-compare-from-dropdown", selected: params[:from], field_name: :from } do
+        = button_tag type: 'button', title: params[:from], class: "form-control compare-dropdown-toggle js-compare-dropdown has-tooltip git-revision-dropdown-toggle", required: true, data: { refs_url: refs_project_path(@project), toggle: "dropdown", target: ".js-compare-from-dropdown", selected: params[:from], field_name: :from } do
           .dropdown-toggle-text.str-truncated= params[:from] || 'Select branch/tag'
       = render 'shared/ref_dropdown'
     .compare-ellipsis.inline ...
@@ -15,12 +15,12 @@
       .input-group.inline-input-group
         %span.input-group-addon to
         = hidden_field_tag :to, params[:to]
-        = button_tag type: 'button', title: params[:to], class: "form-control compare-dropdown-toggle js-compare-dropdown has-tooltip git-revision-dropdown-toggle", required: true, data: { refs_url: refs_namespace_project_path(@project.namespace, @project), toggle: "dropdown", target: ".js-compare-to-dropdown", selected: params[:to], field_name: :to } do
+        = button_tag type: 'button', title: params[:to], class: "form-control compare-dropdown-toggle js-compare-dropdown has-tooltip git-revision-dropdown-toggle", required: true, data: { refs_url: refs_project_path(@project), toggle: "dropdown", target: ".js-compare-to-dropdown", selected: params[:to], field_name: :to } do
           .dropdown-toggle-text.str-truncated= params[:to] || 'Select branch/tag'
       = render 'shared/ref_dropdown'
     &nbsp;
     = button_tag "Compare", class: "btn btn-create commits-compare-btn"
     - if @merge_request.present?
-      = link_to "View open merge request", namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'prepend-left-10 btn'
+      = link_to "View open merge request", project_merge_request_path(@project, @merge_request), class: 'prepend-left-10 btn'
     - elsif create_mr_button?
       = link_to "Create merge request", create_mr_path, class: 'prepend-left-10 btn'
diff --git a/app/views/projects/deploy_keys/_index.html.haml b/app/views/projects/deploy_keys/_index.html.haml
index cb98ce04430d890ed3b740281c7ddb4794d30de1..45985a5ecefa04904d548fed9170edb0d3446df0 100644
--- a/app/views/projects/deploy_keys/_index.html.haml
+++ b/app/views/projects/deploy_keys/_index.html.haml
@@ -12,4 +12,4 @@
       Create a new deploy key for this project
     = render @deploy_keys.form_partial_path
     %hr
-    #js-deploy-keys{ data: { endpoint: namespace_project_deploy_keys_path } }
+    #js-deploy-keys{ data: { endpoint: project_deploy_keys_path(@project) } }
diff --git a/app/views/projects/deploy_keys/edit.html.haml b/app/views/projects/deploy_keys/edit.html.haml
index 37219f8d7aece998be6229d7b0f1975803b57546..cd910b82b577b511f60ec3a3cb826c368cf7ccba 100644
--- a/app/views/projects/deploy_keys/edit.html.haml
+++ b/app/views/projects/deploy_keys/edit.html.haml
@@ -7,4 +7,4 @@
     = render partial: 'shared/deploy_keys/form', locals: { form: f, deploy_key: @deploy_key }
     .form-actions
       = f.submit 'Save changes', class: 'btn-save btn'
-      = link_to 'Cancel', namespace_project_settings_repository_path(@project.namespace, @project), class: 'btn btn-cancel'
+      = link_to 'Cancel', project_settings_repository_path(@project), class: 'btn btn-cancel'
diff --git a/app/views/projects/deployments/_commit.html.haml b/app/views/projects/deployments/_commit.html.haml
index 4502c397d29b2b121733cc9e3c41d194ceaccb77..4c22166c25671ac12553256a63ea7cef01ff4a79 100644
--- a/app/views/projects/deployments/_commit.html.haml
+++ b/app/views/projects/deployments/_commit.html.haml
@@ -6,12 +6,12 @@
       = link_to deployment.ref, project_ref_path(@project, deployment.ref), class: "ref-name"
     .icon-container.commit-icon
       = custom_icon("icon_commit")
-    = link_to deployment.short_sha, namespace_project_commit_path(@project.namespace, @project, deployment.sha), class: "commit-sha"
+    = link_to deployment.short_sha, project_commit_path(@project, deployment.sha), class: "commit-sha"
 
     %p.commit-title.flex-truncate-parent
       %span.flex-truncate-child
         - if commit_title = deployment.commit_title
           = author_avatar(deployment.commit, size: 20)
-          = link_to_gfm commit_title, namespace_project_commit_path(@project.namespace, @project, deployment.sha), class: "commit-row-message"
+          = link_to_gfm commit_title, project_commit_path(@project, deployment.sha), class: "commit-row-message"
         - else
           Cant find HEAD commit for this branch
diff --git a/app/views/projects/diffs/_warning.html.haml b/app/views/projects/diffs/_warning.html.haml
index 402c18c447e919fb6e5dabc2146932861326385a..da34a83d8e0c9dae8bff83841873ddd54df8cd0c 100644
--- a/app/views/projects/diffs/_warning.html.haml
+++ b/app/views/projects/diffs/_warning.html.haml
@@ -3,8 +3,8 @@
     Too many changes to show.
     .pull-right
       - if current_controller?(:commit)
-        = link_to "Plain diff", namespace_project_commit_path(@project.namespace, @project, @commit, format: :diff), class: "btn btn-sm"
-        = link_to "Email patch", namespace_project_commit_path(@project.namespace, @project, @commit, format: :patch), class: "btn btn-sm"
+        = link_to "Plain diff", project_commit_path(@project, @commit, format: :diff), class: "btn btn-sm"
+        = link_to "Email patch", project_commit_path(@project, @commit, format: :patch), class: "btn btn-sm"
       - elsif current_controller?('projects/merge_requests/diffs') && @merge_request&.persisted?
         = link_to "Plain diff", merge_request_path(@merge_request, format: :diff), class: "btn btn-sm"
         = link_to "Email patch", merge_request_path(@merge_request, format: :patch), class: "btn btn-sm"
diff --git a/app/views/projects/diffs/viewers/_image.html.haml b/app/views/projects/diffs/viewers/_image.html.haml
index 19d08181223ab8255c112e730386e30b2ac411cb..33d3dcbeafae48755283d011a3fbfade86084450 100644
--- a/app/views/projects/diffs/viewers/_image.html.haml
+++ b/app/views/projects/diffs/viewers/_image.html.haml
@@ -15,7 +15,7 @@
     .two-up.view
       %span.wrap
         .frame.deleted
-          %a{ href: namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.old_content_sha, diff_file.old_path)) }
+          %a{ href: project_blob_path(@project, tree_join(diff_file.old_content_sha, diff_file.old_path)) }
             %img{ src: old_blob_raw_path, alt: diff_file.old_path }
         %p.image-info.hide
           %span.meta-filesize= number_to_human_size(old_blob.size)
@@ -27,7 +27,7 @@
           %span.meta-height
       %span.wrap
         .frame.added
-          %a{ href: namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.content_sha, diff_file.new_path)) }
+          %a{ href: project_blob_path(@project, tree_join(diff_file.content_sha, diff_file.new_path)) }
             %img{ src: blob_raw_path, alt: diff_file.new_path }
         %p.image-info.hide
           %span.meta-filesize= number_to_human_size(blob.size)
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 78057facde753965ce55fb4e7a72605240349882..087cb8044490bd31805142bc784a2b670cd65f55 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -134,7 +134,7 @@
             .help-block The maximum file size allowed is 200KB.
             - if @project.avatar?
               %hr
-              = link_to 'Remove avatar', namespace_project_avatar_path(@project.namespace, @project), data: { confirm: "Project avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-sm remove-avatar"
+              = link_to 'Remove avatar', project_avatar_path(@project), data: { confirm: "Project avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-sm remove-avatar"
         = f.submit 'Save changes', class: "btn btn-save"
 
   .row.prepend-top-default
@@ -148,7 +148,7 @@
           Runs a number of housekeeping tasks within the current repository,
           such as compressing file revisions and removing unreachable objects.
     .col-lg-8
-      = link_to 'Housekeeping', housekeeping_namespace_project_path(@project.namespace, @project),
+      = link_to 'Housekeeping', housekeeping_project_path(@project),
           method: :post, class: "btn btn-default"
   %hr
   .row.prepend-top-default
@@ -164,12 +164,12 @@
     .col-lg-8
 
       - if @project.export_project_path
-        = link_to 'Download export',  download_export_namespace_project_path(@project.namespace, @project),
+        = link_to 'Download export',  download_export_project_path(@project),
                 rel: 'nofollow', download: '', method: :get, class: "btn btn-default"
-        = link_to 'Generate new export',  generate_new_export_namespace_project_path(@project.namespace, @project),
+        = link_to 'Generate new export',  generate_new_export_project_path(@project),
                 method: :post, class: "btn btn-default"
       - else
-        = link_to 'Export project', export_namespace_project_path(@project.namespace, @project),
+        = link_to 'Export project', export_project_path(@project),
                 method: :post, class: "btn btn-default"
 
       .bs-callout.bs-callout-info
@@ -207,13 +207,13 @@
         - if @project.archived?
           %p
             %strong Once active this project shows up in the search and on the dashboard.
-          = link_to 'Unarchive project', unarchive_namespace_project_path(@project.namespace, @project),
+          = link_to 'Unarchive project', unarchive_project_path(@project),
               data: { confirm: "Are you sure that you want to unarchive this project?\nWhen this project is unarchived it is active and can be committed to again." },
               method: :post, class: "btn btn-success"
         - else
           %p
             %strong Archived projects cannot be committed to!
-          = link_to 'Archive project', archive_namespace_project_path(@project.namespace, @project),
+          = link_to 'Archive project', archive_project_path(@project),
               data: { confirm: "Are you sure that you want to archive this project?\nAn archived project cannot be committed to." },
               method: :post, class: "btn btn-warning"
   %hr
@@ -252,7 +252,7 @@
         %p.append-bottom-0
           Please select the group you want to transfer this project to in the dropdown to the right.
       .col-lg-8
-        = form_for([@project.namespace.becomes(Namespace), @project], url: transfer_namespace_project_path(@project.namespace, @project), method: :put, remote: true, html: { class: 'js-project-transfer-form' } ) do |f|
+        = form_for([@project.namespace.becomes(Namespace), @project], url: transfer_project_path(@project), method: :put, remote: true, html: { class: 'js-project-transfer-form' } ) do |f|
           .form-group
             = label_tag :new_namespace_id, nil, class: 'label-light' do
               %span  Select a new namespace
@@ -276,7 +276,7 @@
             = succeed "." do
               = link_to @project.forked_from_project.name_with_namespace, project_path(@project.forked_from_project)
       .col-lg-8
-        = form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_namespace_project_path(@project.namespace, @project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f|
+        = form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_project_path(@project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f|
           %p
             %strong Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source.
           = button_to 'Remove fork relationship', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_message(@project) }
@@ -289,7 +289,7 @@
         %p.append-bottom-0
           Removing the project will delete its repository and all related resources including issues, merge requests etc.
       .col-lg-8
-        = form_tag(namespace_project_path(@project.namespace, @project), method: :delete) do
+        = form_tag(project_path(@project), method: :delete) do
           %p
             %strong Removed projects cannot be restored!
           = button_to 'Remove project', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) }
diff --git a/app/views/projects/environments/_form.html.haml b/app/views/projects/environments/_form.html.haml
index 6d040f5cfe6790e4176c31f66528ad5447fd4388..1605f3a33513d35ca1463ea43d23093427ae3ee2 100644
--- a/app/views/projects/environments/_form.html.haml
+++ b/app/views/projects/environments/_form.html.haml
@@ -19,4 +19,4 @@
 
     .form-actions
       = f.submit 'Save', class: 'btn btn-save'
-      = link_to 'Cancel', namespace_project_environments_path(@project.namespace, @project), class: 'btn btn-cancel'
+      = link_to 'Cancel', project_environments_path(@project), class: 'btn btn-cancel'
diff --git a/app/views/projects/environments/_stop.html.haml b/app/views/projects/environments/_stop.html.haml
index 14a2d627203544d1d7c260bca6eeb1eb12d4b195..c35f9af2873784bedf386da7cbf1e3d0f21b07b5 100644
--- a/app/views/projects/environments/_stop.html.haml
+++ b/app/views/projects/environments/_stop.html.haml
@@ -1,5 +1,5 @@
 - if can?(current_user, :create_deployment, environment) && environment.stop_action?
   .inline
-    = link_to stop_namespace_project_environment_path(@project.namespace, @project, environment), method: :post,
+    = link_to stop_project_environment_path(@project, environment), method: :post,
       class: 'btn stop-env-link', rel: 'nofollow', data: { confirm: 'Are you sure you want to stop this environment?' } do
       = icon('stop', class: 'stop-env-icon')
diff --git a/app/views/projects/environments/_terminal_button.html.haml b/app/views/projects/environments/_terminal_button.html.haml
index 97de9c95de7a940e29f299444476c02d03ddb690..a6201bdbc42c05e478dac3c615da125d0419d12a 100644
--- a/app/views/projects/environments/_terminal_button.html.haml
+++ b/app/views/projects/environments/_terminal_button.html.haml
@@ -1,3 +1,3 @@
 - if environment.has_terminals? && can?(current_user, :admin_environment, @project)
-  = link_to terminal_namespace_project_environment_path(@project.namespace, @project, environment), class: 'btn terminal-button' do
+  = link_to terminal_project_environment_path(@project, environment), class: 'btn terminal-button' do
     = icon('terminal')
diff --git a/app/views/projects/environments/index.html.haml b/app/views/projects/environments/index.html.haml
index 80d2b6f5d9505b03d95d8f837fb5635e962832ef..30cdbc5ae04f45c1b9d5f55e1ccf1d0270cfadcf 100644
--- a/app/views/projects/environments/index.html.haml
+++ b/app/views/projects/environments/index.html.haml
@@ -12,6 +12,6 @@
   "can-create-environment" => can?(current_user, :create_environment, @project).to_s,
   "project-environments-path" => project_environments_path(@project),
   "project-stopped-environments-path" => project_environments_path(@project, scope: :stopped),
-  "new-environment-path" => new_namespace_project_environment_path(@project.namespace, @project),
+  "new-environment-path" => new_project_environment_path(@project),
   "help-page-path" => help_page_path("ci/environments"),
   "css-class" => container_class } }
diff --git a/app/views/projects/environments/metrics.html.haml b/app/views/projects/environments/metrics.html.haml
index 3aa41174b741a17044c3ef2a5d3249ec37f4f210..e9e1ad9ef3085a5cd0a1af4a10ac1339412239da 100644
--- a/app/views/projects/environments/metrics.html.haml
+++ b/app/views/projects/environments/metrics.html.haml
@@ -14,8 +14,8 @@
           Environment:
           = link_to @environment.name, environment_path(@environment)
 
-  #prometheus-graphs{ data: { "settings-path": edit_namespace_project_service_path(@project.namespace, @project, 'prometheus'),
+  #prometheus-graphs{ data: { "settings-path": edit_project_service_path(@project, 'prometheus'),
     "documentation-path": help_page_path('administration/monitoring/prometheus/index.md'),
-    "additional-metrics": additional_metrics_namespace_project_environment_path(@project.namespace, @project, @environment, format: :json),
-    "has-metrics": "#{@environment.has_metrics?}", deployment_endpoint: namespace_project_environment_deployments_path(@project.namespace, @project, @environment, format: :json) } }
+    "additional-metrics": additional_metrics_project_environment_path(@project, @environment, format: :json),
+    "has-metrics": "#{@environment.has_metrics?}", deployment_endpoint: project_environment_deployments_path(@project, @environment, format: :json) } }
 
diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml
index 31e2bb11ce8c1fb64192953632e19e418a9baa9e..0ce0f5465fc20cc91e7a7eaa17cec0deff8843d2 100644
--- a/app/views/projects/environments/show.html.haml
+++ b/app/views/projects/environments/show.html.haml
@@ -12,9 +12,9 @@
         = render 'projects/environments/external_url', environment: @environment
         = render 'projects/environments/metrics_button', environment: @environment
         - if can?(current_user, :update_environment, @environment)
-          = link_to 'Edit', edit_namespace_project_environment_path(@project.namespace, @project, @environment), class: 'btn'
+          = link_to 'Edit', edit_project_environment_path(@project, @environment), class: 'btn'
         - if can?(current_user, :stop_environment, @environment)
-          = link_to 'Stop', stop_namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post
+          = link_to 'Stop', stop_project_environment_path(@project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post
 
   .environments-container
     - if @deployments.blank?
diff --git a/app/views/projects/environments/terminal.html.haml b/app/views/projects/environments/terminal.html.haml
index 4c4aa0baff3fac1385d2c6f53b44a9e033416498..464135b5ac769568584abcffb9b0ccd8233cae51 100644
--- a/app/views/projects/environments/terminal.html.haml
+++ b/app/views/projects/environments/terminal.html.haml
@@ -22,4 +22,4 @@
           = render 'projects/deployments/actions', deployment: @environment.last_deployment
 
 .terminal-container{ class: container_class }
-  #terminal{ data: { project_path: "#{terminal_namespace_project_environment_path(@project.namespace, @project, @environment)}.ws" } }
+  #terminal{ data: { project_path: "#{terminal_project_environment_path(@project, @environment)}.ws" } }
diff --git a/app/views/projects/find_file/show.html.haml b/app/views/projects/find_file/show.html.haml
index 8a409541fe5890ab2587614573dd032db8593c96..e3bf48ee47f7e3d78b6366134a8ce56dcc8441c2 100644
--- a/app/views/projects/find_file/show.html.haml
+++ b/app/views/projects/find_file/show.html.haml
@@ -7,7 +7,7 @@
       = render 'shared/ref_switcher', destination: 'find_file', path: @path
     %ul.breadcrumb.repo-breadcrumb
       %li
-        = link_to namespace_project_tree_path(@project.namespace, @project, @ref) do
+        = link_to project_tree_path(@project, @ref) do
           = @project.path
       %li.file-finder
         %input#file_find.form-control.file-finder-input{ type: "text", placeholder: _('Find by path'), autocomplete: 'off' }
@@ -20,8 +20,8 @@
 
 :javascript
   var projectFindFile = new ProjectFindFile($(".file-finder-holder"), {
-    url: "#{escape_javascript(namespace_project_files_path(@project.namespace, @project, @ref, @options.merge(format: :json)))}",
-    treeUrl: "#{escape_javascript(namespace_project_tree_path(@project.namespace, @project, @ref))}",
-    blobUrlTemplate: "#{escape_javascript(namespace_project_blob_path(@project.namespace, @project, @id || @commit.id))}"
+    url: "#{escape_javascript(project_files_path(@project, @ref, @options.merge(format: :json)))}",
+    treeUrl: "#{escape_javascript(project_tree_path(@project, @ref))}",
+    blobUrlTemplate: "#{escape_javascript(project_blob_path(@project, @id || @commit.id))}"
   });
   new ShortcutsFindFile(projectFindFile);
diff --git a/app/views/projects/forks/error.html.haml b/app/views/projects/forks/error.html.haml
index 524b77783ef1dc9b1ee5916076fd9c2835d87fe9..d365bcd4ecc7f19e937d0681743f165a04f1edee 100644
--- a/app/views/projects/forks/error.html.haml
+++ b/app/views/projects/forks/error.html.haml
@@ -20,6 +20,6 @@
           = error
 
     %p
-      = link_to new_namespace_project_fork_path(@project.namespace, @project), title: "Fork", class: "btn" do
+      = link_to new_project_fork_path(@project), title: "Fork", class: "btn" do
         %i.fa.fa-code-fork
         Try to fork again
diff --git a/app/views/projects/forks/index.html.haml b/app/views/projects/forks/index.html.haml
index f4aa523b32d9e263cf810b0ce1324e1ea491fd0c..111cbcda2665d9d282e724a4ad0f047ca40855c1 100644
--- a/app/views/projects/forks/index.html.haml
+++ b/app/views/projects/forks/index.html.haml
@@ -34,7 +34,7 @@
           = custom_icon('icon_fork')
           %span Fork
       - else
-        = link_to new_namespace_project_fork_path(@project.namespace, @project), title: "Fork project", class: 'btn btn-new' do
+        = link_to new_project_fork_path(@project), title: "Fork project", class: 'btn btn-new' do
           = custom_icon('icon_fork')
           %span Fork
 
diff --git a/app/views/projects/forks/new.html.haml b/app/views/projects/forks/new.html.haml
index 5242bc72b716d4eb40489668a2e3fa87911d6b8d..0f36e1a7353be25557b8c2e9389619a723cfb46e 100644
--- a/app/views/projects/forks/new.html.haml
+++ b/app/views/projects/forks/new.html.haml
@@ -30,7 +30,7 @@
                         = namespace.human_name
                 - else
                   .fork-thumbnail
-                    = link_to namespace_project_forks_path(@project.namespace, @project, namespace_key: namespace.id), method: "POST" do
+                    = link_to project_forks_path(@project, namespace_key: namespace.id), method: "POST" do
                       - if /no_((\w*)_)*avatar/.match(avatar)
                         .no-avatar
                           = icon 'question'
diff --git a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
index b23bbadbdb43a05944533f02df3e19f6e3ca72cf..b98dc09534f179a98e61232a3294ea79be77ef5f 100644
--- a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
+++ b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
@@ -20,14 +20,14 @@
       - if generic_commit_status.ref
         .icon-container
           = generic_commit_status.tags.any? ? icon('tag') : icon('code-fork')
-        = link_to generic_commit_status.ref, namespace_project_commits_path(generic_commit_status.project.namespace, generic_commit_status.project, generic_commit_status.ref)
+        = link_to generic_commit_status.ref, project_commits_path(generic_commit_status.project, generic_commit_status.ref)
       - else
         .light none
       .icon-container.commit-icon
         = custom_icon("icon_commit")
 
     - if commit_sha
-      = link_to generic_commit_status.short_sha, namespace_project_commit_path(generic_commit_status.project.namespace, generic_commit_status.project, generic_commit_status.sha), class: "commit-sha"
+      = link_to generic_commit_status.short_sha, project_commit_path(generic_commit_status.project, generic_commit_status.sha), class: "commit-sha"
 
     - if retried
       = icon('warning', class: 'text-warning has-tooltip', title: 'Status was retried.')
@@ -53,7 +53,7 @@
   - if admin
     %td
       - if generic_commit_status.project
-        = link_to generic_commit_status.project.name_with_namespace, admin_namespace_project_path(generic_commit_status.project.namespace, generic_commit_status.project)
+        = link_to generic_commit_status.project.name_with_namespace, admin_project_path(generic_commit_status.project)
     %td
       - if generic_commit_status.try(:runner)
         = runner_link(generic_commit_status.runner)
diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml
index 680f8ae6c8f9b32aafb683757e1561210e37340d..640e0d689ca3cd80c13675d8cfbbde7a261b8510 100644
--- a/app/views/projects/graphs/show.html.haml
+++ b/app/views/projects/graphs/show.html.haml
@@ -35,7 +35,7 @@
 :javascript
   $.ajax({
     type: "GET",
-    url: "#{namespace_project_graph_path(@project.namespace, @project, current_ref, format: :json)}",
+    url: "#{project_graph_path(@project, current_ref, format: :json)}",
     dataType: "json",
     success: function (data) {
       var graph = new ContributorsStatGraph();
diff --git a/app/views/projects/hook_logs/_index.html.haml b/app/views/projects/hook_logs/_index.html.haml
index 6962b22345104ec393c0ed1d0c42e2bbbd0692ee..05b06cfc8b292070f853130d877590d2418ab7bb 100644
--- a/app/views/projects/hook_logs/_index.html.haml
+++ b/app/views/projects/hook_logs/_index.html.haml
@@ -28,7 +28,7 @@
             %td.light
               = time_ago_with_tooltip(hook_log.created_at)
             %td
-              = link_to 'View details', namespace_project_hook_hook_log_path(project.namespace, project, hook, hook_log)
+              = link_to 'View details', project_hook_hook_log_path(project, hook, hook_log)
 
       = paginate hook_logs, theme: 'gitlab'
 
diff --git a/app/views/projects/hook_logs/show.html.haml b/app/views/projects/hook_logs/show.html.haml
index 2eabe92f8eb491fe936f6a60194e5668fd220c76..ab5a7b117d78844055af662cd29fe1d95235ff2d 100644
--- a/app/views/projects/hook_logs/show.html.haml
+++ b/app/views/projects/hook_logs/show.html.haml
@@ -6,6 +6,6 @@
       Request details
   .col-lg-9
 
-    = link_to 'Resend Request', retry_namespace_project_hook_hook_log_path(@project.namespace, @project, @hook, @hook_log), class: "btn btn-default pull-right prepend-left-10"
+    = link_to 'Resend Request', retry_project_hook_hook_log_path(@project, @hook, @hook_log), class: "btn btn-default pull-right prepend-left-10"
 
     = render partial: 'shared/hook_logs/content', locals: { hook_log: @hook_log }
diff --git a/app/views/projects/hooks/edit.html.haml b/app/views/projects/hooks/edit.html.haml
index fd382c1d63fc2c0f20bc86a38f630cfa7f2964d6..4944e0c8041e22f1c0e25c422d35358f7eb47bfc 100644
--- a/app/views/projects/hooks/edit.html.haml
+++ b/app/views/projects/hooks/edit.html.haml
@@ -9,14 +9,13 @@
       #{link_to 'Webhooks', help_page_path('user/project/integrations/webhooks')} can be
       used for binding events when something is happening within the project.
   .col-lg-9.append-bottom-default
-    = form_for [@project.namespace.becomes(Namespace), @project, @hook], as: :hook, url: namespace_project_hook_path do |f|
+    = form_for [@project.namespace.becomes(Namespace), @project, @hook], as: :hook, url: project_hook_path(@project, @hook) do |f|
       = render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook }
 
       = f.submit 'Save changes', class: 'btn btn-create'
-      = link_to 'Test hook', test_namespace_project_hook_path(@project.namespace, @project, @hook), class: 'btn btn-default'
-      = link_to 'Remove', namespace_project_hook_path(@project.namespace, @project, @hook), method: :delete, class: 'btn btn-remove pull-right', data: { confirm: 'Are you sure?' }
+      = link_to 'Test hook', test_project_hook_path(@project, @hook), class: 'btn btn-default'
+      = link_to 'Remove', project_hook_path(@project, @hook), method: :delete, class: 'btn btn-remove pull-right', data: { confirm: 'Are you sure?' }
 
 %hr
 
 = render partial: 'projects/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs, project: @project }
-
diff --git a/app/views/projects/imports/new.html.haml b/app/views/projects/imports/new.html.haml
index 25a87411cac64e168745ae8388890addca14baee..778ff91362d47bba5d5a6a04c48e63c039a3e654 100644
--- a/app/views/projects/imports/new.html.haml
+++ b/app/views/projects/imports/new.html.haml
@@ -12,7 +12,7 @@
         :preserve
           #{h(sanitize_repo_path(@project, @project.import_error))}
 
-= form_for @project, url: namespace_project_import_path(@project.namespace, @project), method: :post, html: { class: 'form-horizontal' } do |f|
+= form_for @project, url: project_import_path(@project), method: :post, html: { class: 'form-horizontal' } do |f|
   = render "shared/import_form", f: f
 
   .form-actions
diff --git a/app/views/projects/issues/_head.html.haml b/app/views/projects/issues/_head.html.haml
index 7a188cb64459cd3e657088b7cef14c062f014e8c..e9f21594a712e4ed85d307994d1977ef8b8e1ce8 100644
--- a/app/views/projects/issues/_head.html.haml
+++ b/app/views/projects/issues/_head.html.haml
@@ -5,29 +5,29 @@
       %ul{ class: (container_class) }
         - if project_nav_tab?(:issues) && !current_controller?(:merge_requests)
           = nav_link(controller: :issues) do
-            = link_to namespace_project_issues_path(@project.namespace, @project), title: 'Issues' do
+            = link_to project_issues_path(@project), title: 'Issues' do
               %span
                 List
 
           = nav_link(controller: :boards) do
-            = link_to namespace_project_boards_path(@project.namespace, @project), title: 'Board' do
+            = link_to project_boards_path(@project), title: 'Board' do
               %span
                 Board
 
         - if project_nav_tab?(:merge_requests) && current_controller?(:merge_requests)
           = nav_link(controller: :merge_requests) do
-            = link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests' do
+            = link_to project_merge_requests_path(@project), title: 'Merge Requests' do
               %span
                 Merge Requests
 
         - if project_nav_tab? :labels
           = nav_link(controller: :labels) do
-            = link_to namespace_project_labels_path(@project.namespace, @project), title: 'Labels' do
+            = link_to project_labels_path(@project), title: 'Labels' do
               %span
                 Labels
 
         - if project_nav_tab? :milestones
           = nav_link(controller: :milestones) do
-            = link_to namespace_project_milestones_path(@project.namespace, @project), title: 'Milestones' do
+            = link_to project_milestones_path(@project), title: 'Milestones' do
               %span
                 Milestones
diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml
index 6a0d96f50cd74299422c853db07f31eb17b250f4..7dc35be57a6161c07ed301a537f8438838cb24b2 100644
--- a/app/views/projects/issues/_issue.html.haml
+++ b/app/views/projects/issues/_issue.html.haml
@@ -24,7 +24,7 @@
           - if issue.milestone
             %span.issuable-milestone.hidden-xs
               &nbsp;
-              = link_to namespace_project_issues_path(issue.project.namespace, issue.project, milestone_title: issue.milestone.title) do
+              = link_to project_issues_path(issue.project, milestone_title: issue.milestone.title) do
                 = icon('clock-o')
                 = issue.milestone.title
           - if issue.due_date
diff --git a/app/views/projects/issues/_issue_by_email.html.haml b/app/views/projects/issues/_issue_by_email.html.haml
index 35b7d1b920cd3a7ef14430d5fcbd20340874ff4d..264032a3a31b8b0308edc6df7ad1f529e8a3e3f1 100644
--- a/app/views/projects/issues/_issue_by_email.html.haml
+++ b/app/views/projects/issues/_issue_by_email.html.haml
@@ -30,5 +30,5 @@
 
           Anyone who gets ahold of it can create issues as if they were you.
           You should
-          = link_to 'reset it', new_issue_address_namespace_project_path(@project.namespace, @project), class: 'incoming-email-token-reset'
+          = link_to 'reset it', new_issue_address_project_path(@project), class: 'incoming-email-token-reset'
           if that ever happens.
diff --git a/app/views/projects/issues/_merge_requests.html.haml b/app/views/projects/issues/_merge_requests.html.haml
index bda52fe461c49c55d1de5e8bd28299c4c243d1ff..6a5674875143319d7a6c34c6931255b21469ad4b 100644
--- a/app/views/projects/issues/_merge_requests.html.haml
+++ b/app/views/projects/issues/_merge_requests.html.haml
@@ -18,7 +18,7 @@
           - unless @issue.project.id == merge_request.target_project.id
             in
             - project = merge_request.target_project
-            = link_to project.name_with_namespace, namespace_project_path(project.namespace, project)
+            = link_to project.name_with_namespace, project_path(project)
 
         - if merge_request.merged?
           %span.merge-request-status.prepend-left-10.merged
diff --git a/app/views/projects/issues/_nav_btns.html.haml b/app/views/projects/issues/_nav_btns.html.haml
index 698959ec74ff2a5792702eafc64cdaf67e96ee7a..756faf4625ea9a74300f25666c78312cd6932957 100644
--- a/app/views/projects/issues/_nav_btns.html.haml
+++ b/app/views/projects/issues/_nav_btns.html.haml
@@ -2,10 +2,9 @@
   = icon('rss')
 - if @can_bulk_update
   = button_tag "Edit Issues", class: "btn btn-default append-right-10 js-bulk-update-toggle"
-= link_to "New issue", new_namespace_project_issue_path(@project.namespace,
-                                         @project,
-                                         issue: { assignee_id: issues_finder.assignee.try(:id),
-                                                  milestone_id: issues_finder.milestones.first.try(:id) }),
-                                         class: "btn btn-new",
-                                         title: "New issue",
-                                         id: "new_issue_link"
+= link_to "New issue", new_project_issue_path(@project,
+                                              issue: { assignee_id: issues_finder.assignee.try(:id),
+                                                       milestone_id: issues_finder.milestones.first.try(:id) }),
+                                              class: "btn btn-new",
+                                              title: "New issue",
+                                              id: "new_issue_link"
diff --git a/app/views/projects/issues/_new_branch.html.haml b/app/views/projects/issues/_new_branch.html.haml
index dba092c884461b7d42e9e0e7d2cf845cb37bc009..e1b4a49850af71102db1b7380c2f4330870240f1 100644
--- a/app/views/projects/issues/_new_branch.html.haml
+++ b/app/views/projects/issues/_new_branch.html.haml
@@ -1,5 +1,5 @@
 - if can?(current_user, :push_code, @project)
-  .create-mr-dropdown-wrap{ data: { can_create_path: can_create_branch_namespace_project_issue_path(@project.namespace, @project, @issue), create_mr_path: create_merge_request_namespace_project_issue_path(@project.namespace, @project, @issue), create_branch_path: namespace_project_branches_path(@project.namespace, @project, branch_name: @issue.to_branch_name, issue_iid: @issue.iid) } }
+  .create-mr-dropdown-wrap{ data: { can_create_path: can_create_branch_project_issue_path(@project, @issue), create_mr_path: create_merge_request_project_issue_path(@project, @issue), create_branch_path: project_branches_path(@project, branch_name: @issue.to_branch_name, issue_iid: @issue.iid) } }
     .btn-group.unavailable
       %button.btn.btn-grouped{ type: 'button', disabled: 'disabled' }
         = icon('spinner', class: 'fa-spin')
diff --git a/app/views/projects/issues/_related_branches.html.haml b/app/views/projects/issues/_related_branches.html.haml
index 8c9f6f3b4df6078b4868049bec3bed34608f2834..1df38db9fd474b069cb1996783da7ad2fd1be9b3 100644
--- a/app/views/projects/issues/_related_branches.html.haml
+++ b/app/views/projects/issues/_related_branches.html.haml
@@ -11,4 +11,4 @@
             = render_pipeline_status(pipeline)
         %span.related-branch-info
           %strong
-            = link_to branch, namespace_project_compare_path(@project.namespace, @project, from: @project.default_branch, to: branch), class: "ref-name"
+            = link_to branch, project_compare_path(@project, from: @project.default_branch, to: branch), class: "ref-name"
diff --git a/app/views/projects/issues/index.atom.builder b/app/views/projects/issues/index.atom.builder
index 61346884346e0935ef38291a7c34345c9a6db0aa..4029926f373dcb286cc207dfcc1f85e7c3f1be90 100644
--- a/app/views/projects/issues/index.atom.builder
+++ b/app/views/projects/issues/index.atom.builder
@@ -1,7 +1,7 @@
 xml.title   "#{@project.name} issues"
 xml.link    href: url_for(params), rel: "self", type: "application/atom+xml"
-xml.link    href: namespace_project_issues_url(@project.namespace, @project), rel: "alternate", type: "text/html"
-xml.id      namespace_project_issues_url(@project.namespace, @project)
+xml.link    href: project_issues_url(@project), rel: "alternate", type: "text/html"
+xml.id      project_issues_url(@project)
 xml.updated @issues.first.updated_at.xmlschema if @issues.reorder(nil).any?
 
 xml << render(partial: 'issues/issue', collection: @issues) if @issues.reorder(nil).any?
diff --git a/app/views/projects/issues/index.html.haml b/app/views/projects/issues/index.html.haml
index 89ac5ff7128b79f36240b2b7277a9043f3ab5dd2..aacb057840d36873a2f73232ac8dba31d73c5fa7 100644
--- a/app/views/projects/issues/index.html.haml
+++ b/app/views/projects/issues/index.html.haml
@@ -33,4 +33,4 @@
       - if new_issue_email
         = render 'issue_by_email', email: new_issue_email
 - else
-  = render 'shared/empty_states/issues', button_path: new_namespace_project_issue_path(@project.namespace, @project)
+  = render 'shared/empty_states/issues', button_path: new_project_issue_path(@project)
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index d909b0bfbbd22184faf593aa05c68a5268146dfb..cf8493faba8d7128ad6485cfe017a8940255a9b4 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -31,26 +31,26 @@
         %ul
           - if can_update_issue
             %li
-              = link_to 'Edit', edit_namespace_project_issue_path(@project.namespace, @project, @issue), class: 'issuable-edit'
+              = link_to 'Edit', edit_project_issue_path(@project, @issue), class: 'issuable-edit'
             %li
               = link_to 'Close issue', issue_path(@issue, issue: { state_event: :close }, format: 'json'), class: "btn-close #{issue_button_visibility(@issue, true)}", title: 'Close issue'
             %li
               = link_to 'Reopen issue', issue_path(@issue, issue: { state_event: :reopen }, format: 'json'), class: "btn-reopen #{issue_button_visibility(@issue, false)}", title: 'Reopen issue'
           - if can_report_spam
             %li
-              = link_to 'Submit as spam', mark_as_spam_namespace_project_issue_path(@project.namespace, @project, @issue), method: :post, class: 'btn-spam', title: 'Submit as spam'
+              = link_to 'Submit as spam', mark_as_spam_project_issue_path(@project, @issue), method: :post, class: 'btn-spam', title: 'Submit as spam'
           - if can_update_issue || can_report_spam
             %li.divider
           %li
-            = link_to 'New issue', new_namespace_project_issue_path(@project.namespace, @project), title: 'New issue', id: 'new_issue_link'
+            = link_to 'New issue', new_project_issue_path(@project), title: 'New issue', id: 'new_issue_link'
 
     - if can_update_issue
-      = link_to 'Edit', edit_namespace_project_issue_path(@project.namespace, @project, @issue), class: 'hidden-xs hidden-sm btn btn-grouped issuable-edit'
+      = link_to 'Edit', edit_project_issue_path(@project, @issue), class: 'hidden-xs hidden-sm btn btn-grouped issuable-edit'
       = link_to 'Close issue', issue_path(@issue, issue: { state_event: :close }, format: 'json'), class: "hidden-xs hidden-sm btn btn-grouped btn-close #{issue_button_visibility(@issue, true)}", title: 'Close issue'
       = link_to 'Reopen issue', issue_path(@issue, issue: { state_event: :reopen }, format: 'json'), class: "hidden-xs hidden-sm btn btn-grouped btn-reopen #{issue_button_visibility(@issue, false)}", title: 'Reopen issue'
     - if can_report_spam
-      = link_to 'Submit as spam', mark_as_spam_namespace_project_issue_path(@project.namespace, @project, @issue), method: :post, class: 'hidden-xs hidden-sm btn btn-grouped btn-spam', title: 'Submit as spam'
-    = link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'hidden-xs hidden-sm btn btn-grouped new-issue-link btn-new btn-inverted', title: 'New issue', id: 'new_issue_link' do
+      = link_to 'Submit as spam', mark_as_spam_project_issue_path(@project, @issue), method: :post, class: 'hidden-xs hidden-sm btn btn-grouped btn-spam', title: 'Submit as spam'
+    = link_to new_project_issue_path(@project), class: 'hidden-xs hidden-sm btn btn-grouped new-issue-link btn-new btn-inverted', title: 'New issue', id: 'new_issue_link' do
       New issue
 
 .issue-details.issuable-details
@@ -65,10 +65,10 @@
 
       = edited_time_ago_with_tooltip(@issue, placement: 'bottom', html_class: 'issue-edited-ago js-issue-edited-ago')
 
-    #merge-requests{ data: { url: referenced_merge_requests_namespace_project_issue_url(@project.namespace, @project, @issue) } }
+    #merge-requests{ data: { url: referenced_merge_requests_project_issue_url(@project, @issue) } }
       // This element is filled in using JavaScript.
 
-    #related-branches{ data: { url: related_branches_namespace_project_issue_url(@project.namespace, @project, @issue) } }
+    #related-branches{ data: { url: related_branches_project_issue_url(@project, @issue) } }
       // This element is filled in using JavaScript.
 
   .content-block.emoji-block
diff --git a/app/views/projects/jobs/_header.html.haml b/app/views/projects/jobs/_header.html.haml
index ad72ab5b199b67332962b8fbe84674332a760048..d81b8f6bb4c0d538b6c8cad28d6369d60b042140 100644
--- a/app/views/projects/jobs/_header.html.haml
+++ b/app/views/projects/jobs/_header.html.haml
@@ -6,13 +6,13 @@
     = render 'ci/status/badge', status: @build.detailed_status(current_user), link: false, title: @build.status_title
     %strong
       Job
-      = link_to "##{@build.id}", namespace_project_job_path(@project.namespace, @project, @build), class: 'js-build-id'
+      = link_to "##{@build.id}", project_job_path(@project, @build), class: 'js-build-id'
     in pipeline
     %strong
       = link_to "##{pipeline.id}", pipeline_path(pipeline)
     for
     %strong
-      = link_to pipeline.short_sha, namespace_project_commit_path(@project.namespace, @project, pipeline.sha), class: 'commit-sha'
+      = link_to pipeline.short_sha, project_commit_path(@project, pipeline.sha), class: 'commit-sha'
     from
     %strong
       = link_to @build.ref, project_ref_path(@project, @build.ref), class: 'ref-name'
@@ -24,8 +24,8 @@
   - if show_controls
     .nav-controls
       - if can?(current_user, :create_issue, @project) && @build.failed?
-        = link_to "New issue", new_namespace_project_issue_path(@project.namespace, @project, issue: build_failed_issue_options), class: 'btn btn-new btn-inverted'
+        = link_to "New issue", new_project_issue_path(@project, issue: build_failed_issue_options), class: 'btn btn-new btn-inverted'
       - if can?(current_user, :update_build, @build) && @build.retryable?
-        = link_to "Retry job", retry_namespace_project_job_path(@project.namespace, @project, @build), class: 'btn btn-inverted-secondary', method: :post
+        = link_to "Retry job", retry_project_job_path(@project, @build), class: 'btn btn-inverted-secondary', method: :post
     %button.btn.btn-default.pull-right.visible-xs-block.visible-sm-block.build-gutter-toggle.js-sidebar-build-toggle{ role: "button", type: "button" }
       = icon('angle-double-left')
diff --git a/app/views/projects/jobs/_sidebar.html.haml b/app/views/projects/jobs/_sidebar.html.haml
index 93e8a4e385ccbf70dd04e3272e9d0ae342821030..bddb587ddc6378125b79e3557835eb879cb3f71e 100644
--- a/app/views/projects/jobs/_sidebar.html.haml
+++ b/app/views/projects/jobs/_sidebar.html.haml
@@ -26,14 +26,14 @@
         - if @build.artifacts?
           .btn-group.btn-group-justified{ role: :group }
             - if @build.has_expiring_artifacts? && can?(current_user, :update_build, @build)
-              = link_to keep_namespace_project_job_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default', method: :post do
+              = link_to keep_project_job_artifacts_path(@project, @build), class: 'btn btn-sm btn-default', method: :post do
                 Keep
 
-            = link_to download_namespace_project_job_artifacts_path(@project.namespace, @project, @build), rel: 'nofollow', download: '', class: 'btn btn-sm btn-default' do
+            = link_to download_project_job_artifacts_path(@project, @build), rel: 'nofollow', download: '', class: 'btn btn-sm btn-default' do
               Download
 
             - if @build.artifacts_metadata?
-              = link_to browse_namespace_project_job_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default' do
+              = link_to browse_project_job_artifacts_path(@project, @build), class: 'btn btn-sm btn-default' do
                 Browse
 
     - if @build.trigger_request
@@ -58,7 +58,7 @@
     .block
       %p
         Commit
-        = link_to @build.pipeline.short_sha, namespace_project_commit_path(@project.namespace, @project, @build.pipeline.sha), class: 'commit-sha link-commit'
+        = link_to @build.pipeline.short_sha, project_commit_path(@project, @build.pipeline.sha), class: 'commit-sha link-commit'
         = clipboard_button(text: @build.pipeline.short_sha, title: "Copy commit SHA to clipboard")
         - if @build.merge_request
           in
@@ -73,9 +73,9 @@
           %span{ class: "ci-status-icon-#{@build.pipeline.status}" }
             = ci_icon_for_status(@build.pipeline.status)
           Pipeline
-          = link_to "##{@build.pipeline.id}", namespace_project_pipeline_path(@project.namespace, @project, @build.pipeline), class: 'link-commit'
+          = link_to "##{@build.pipeline.id}", project_pipeline_path(@project, @build.pipeline), class: 'link-commit'
           from
-          = link_to "#{@build.pipeline.ref}", namespace_project_branch_path(@project.namespace, @project, @build.pipeline.ref), class: 'link-commit'
+          = link_to "#{@build.pipeline.ref}", project_branch_path(@project, @build.pipeline.ref), class: 'link-commit'
         %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
           %span.stage-selection More
           = icon('chevron-down')
@@ -88,7 +88,7 @@
     - HasStatus::ORDERED_STATUSES.each do |build_status|
       - builds.select{|build| build.status == build_status}.each do |build|
         .build-job{ class: sidebar_build_class(build, @build), data: { stage: build.stage } }
-          = link_to namespace_project_job_path(@project.namespace, @project, build) do
+          = link_to project_job_path(@project, build) do
             = icon('arrow-right')
             %span{ class: "ci-status-icon-#{build.status}" }
               = ci_icon_for_status(build.status)
diff --git a/app/views/projects/jobs/index.html.haml b/app/views/projects/jobs/index.html.haml
index a33e3978ee12df71680b74043be58e0637713840..8604c7d3ea407958831fcf7853e7fc0a297d9e21 100644
--- a/app/views/projects/jobs/index.html.haml
+++ b/app/views/projects/jobs/index.html.haml
@@ -10,7 +10,7 @@
     .nav-controls
       - if can?(current_user, :update_build, @project)
         - if @all_builds.running_or_pending.any?
-          = link_to 'Cancel running', cancel_all_namespace_project_jobs_path(@project.namespace, @project),
+          = link_to 'Cancel running', cancel_all_project_jobs_path(@project),
             data: { confirm: 'Are you sure?' }, class: 'btn btn-danger', method: :post
 
         - unless @repository.gitlab_ci_yml
diff --git a/app/views/projects/jobs/show.html.haml b/app/views/projects/jobs/show.html.haml
index e9bc10684171c54c8eaac752d7c6f331f8a2a6bc..fa086413fbe9d9e73f96c8b0b3e9102a7812bd46 100644
--- a/app/views/projects/jobs/show.html.haml
+++ b/app/views/projects/jobs/show.html.haml
@@ -21,7 +21,7 @@
 
             %br
             Go to
-            = link_to namespace_project_runners_path(@build.project.namespace, @build.project) do
+            = link_to project_runners_path(@build.project) do
               Runners page
 
     - if @build.starts_environment?
@@ -60,18 +60,18 @@
           Showing last
           %span.js-truncated-info-size.truncated-info-size><
           KiB of log -
-          %a.js-raw-link.raw-link{ href: raw_namespace_project_job_path(@project.namespace, @project, @build) }>< Complete Raw
+          %a.js-raw-link.raw-link{ href: raw_project_job_path(@project, @build) }>< Complete Raw
 
         .controllers
           - if @build.has_trace?
-            = link_to raw_namespace_project_job_path(@project.namespace, @project, @build),
+            = link_to raw_project_job_path(@project, @build),
                     title: 'Show complete raw',
                     data: { placement: 'top', container: 'body' },
                     class: 'js-raw-link-controller has-tooltip controllers-buttons' do
               = icon('file-text-o')
 
           - if can?(current_user, :update_build, @project) && @build.erasable?
-            = link_to erase_namespace_project_job_path(@project.namespace, @project, @build),
+            = link_to erase_project_job_path(@project, @build),
                       method: :post,
                       data: { confirm: 'Are you sure you want to erase this build?', placement: 'top', container: 'body' },
                       title: 'Erase job log',
@@ -93,7 +93,7 @@
 
 .js-build-options{ data: javascript_build_options }
 
-#js-job-details-vue{ data: { endpoint: namespace_project_job_path(@project.namespace, @project, @build, format: :json) } }
+#js-job-details-vue{ data: { endpoint: project_job_path(@project, @build, format: :json) } }
 
 - content_for :page_specific_javascripts do
   = webpack_bundle_tag('common_vue')
diff --git a/app/views/projects/labels/edit.html.haml b/app/views/projects/labels/edit.html.haml
index 7f0059cdcda05e51623dc869782835957e5dd03c..84b0b65d1c093637e4c496088635f575febc6020 100644
--- a/app/views/projects/labels/edit.html.haml
+++ b/app/views/projects/labels/edit.html.haml
@@ -6,4 +6,4 @@
   %h3.page-title
     Edit Label
   %hr
-  = render 'shared/labels/form', url: namespace_project_label_path(@project.namespace.becomes(Namespace), @project, @label), back_path: namespace_project_labels_path(@project.namespace, @project)
+  = render 'shared/labels/form', url: project_label_path(@project, @label), back_path: project_labels_path(@project)
diff --git a/app/views/projects/labels/index.html.haml b/app/views/projects/labels/index.html.haml
index fc72c4fb635d4d7cfe0242b9ad9a6416d2eb7eeb..8fbc4588902c33b06333bc16822f869ce77bc6b3 100644
--- a/app/views/projects/labels/index.html.haml
+++ b/app/views/projects/labels/index.html.haml
@@ -11,7 +11,7 @@
 
       .nav-controls
         - if can?(current_user, :admin_label, @project)
-          = link_to new_namespace_project_label_path(@project.namespace, @project), class: "btn btn-new" do
+          = link_to new_project_label_path(@project), class: "btn btn-new" do
             New label
 
     .labels
@@ -20,7 +20,7 @@
         - hide = @available_labels.empty? || (params[:page].present? && params[:page] != '1')
         .prioritized-labels{ class: ('hide' if hide) }
           %h5 Prioritized Labels
-          %ul.content-list.manage-labels-list.js-prioritized-labels{ "data-url" => set_priorities_namespace_project_labels_path(@project.namespace, @project) }
+          %ul.content-list.manage-labels-list.js-prioritized-labels{ "data-url" => set_priorities_project_labels_path(@project) }
             #js-priority-labels-empty-state{ class: "#{'hidden' unless @prioritized_labels.empty?}" }
               = render 'shared/empty_states/priority_labels'
             - if @prioritized_labels.present?
diff --git a/app/views/projects/labels/new.html.haml b/app/views/projects/labels/new.html.haml
index 8f6c085a361dfb303388569028f6df663995e241..79e90b7ca3be4783e2b2680a6da29d35160087c3 100644
--- a/app/views/projects/labels/new.html.haml
+++ b/app/views/projects/labels/new.html.haml
@@ -6,4 +6,4 @@
   %h3.page-title
     New Label
   %hr
-  = render 'shared/labels/form', url: namespace_project_labels_path(@project.namespace.becomes(Namespace), @project), back_path: namespace_project_labels_path(@project.namespace, @project)
+  = render 'shared/labels/form', url: project_labels_path(@project), back_path: project_labels_path(@project)
diff --git a/app/views/projects/mattermosts/_no_teams.html.haml b/app/views/projects/mattermosts/_no_teams.html.haml
index aac74a25b7549b0149fdc1a6b40e934877b8ddd8..243dcfdc187d3c7acaa4becafe6c0a71dae5ad69 100644
--- a/app/views/projects/mattermosts/_no_teams.html.haml
+++ b/app/views/projects/mattermosts/_no_teams.html.haml
@@ -13,4 +13,4 @@
   and try again.
 %hr
 .clearfix
-  = link_to 'Go back', edit_namespace_project_service_path(@project.namespace, @project, @service), class: 'btn btn-lg pull-right'
+  = link_to 'Go back', edit_project_service_path(@project, @service), class: 'btn btn-lg pull-right'
diff --git a/app/views/projects/mattermosts/_team_selection.html.haml b/app/views/projects/mattermosts/_team_selection.html.haml
index 04bd4e8b6830e8f18c392dc67254f9bcc07c83dc..3bdb5d0adc4948911111063c2f40377752935172 100644
--- a/app/views/projects/mattermosts/_team_selection.html.haml
+++ b/app/views/projects/mattermosts/_team_selection.html.haml
@@ -2,7 +2,7 @@
   This service will be installed on the Mattermost instance at
   %strong= link_to Gitlab.config.mattermost.host, Gitlab.config.mattermost.host
 %hr
-= form_for(:mattermost, method: :post, url: namespace_project_mattermost_path(@project.namespace, @project), html: { class: 'js-requires-input'} ) do |f|
+= form_for(:mattermost, method: :post, url: project_mattermost_path(@project), html: { class: 'js-requires-input'} ) do |f|
   %h4 Team
   %p
     = @teams.one? ? 'The team' : 'Select the team'
@@ -42,5 +42,5 @@
   %hr
   .clearfix
     .pull-right
-      = link_to 'Cancel', edit_namespace_project_service_path(@project.namespace, @project, @service), class: 'btn btn-lg'
+      = link_to 'Cancel', edit_project_service_path(@project, @service), class: 'btn btn-lg'
       = f.submit 'Install', class: 'btn btn-save btn-lg'
diff --git a/app/views/projects/merge_requests/_head.html.haml b/app/views/projects/merge_requests/_head.html.haml
index b7f73fe5339dd6efba89ca9f663c93ea6ef086e6..1e505222887cd773e2d0786eb36edf9a0e304ee9 100644
--- a/app/views/projects/merge_requests/_head.html.haml
+++ b/app/views/projects/merge_requests/_head.html.haml
@@ -4,18 +4,18 @@
     .nav-links.sub-nav.scrolling-tabs
       %ul{ class: (container_class) }
         = nav_link(controller: :merge_requests) do
-          = link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests' do
+          = link_to project_merge_requests_path(@project), title: 'Merge Requests' do
             %span
               List
 
         - if project_nav_tab? :labels
           = nav_link(controller: :labels) do
-            = link_to namespace_project_labels_path(@project.namespace, @project), title: 'Labels' do
+            = link_to project_labels_path(@project), title: 'Labels' do
               %span
                 Labels
 
         - if project_nav_tab? :milestones
           = nav_link(controller: :milestones) do
-            = link_to namespace_project_milestones_path(@project.namespace, @project), title: 'Milestones' do
+            = link_to project_milestones_path(@project), title: 'Milestones' do
               %span
                 Milestones
diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml
index 3599f2271b5c3adc5bd2568e96de534252d5d4ee..0a1ebcb8124803debbf2d3f9a030a468bc60a9ce 100644
--- a/app/views/projects/merge_requests/_merge_request.html.haml
+++ b/app/views/projects/merge_requests/_merge_request.html.haml
@@ -23,7 +23,7 @@
         - if merge_request.milestone
           %span.issuable-milestone.hidden-xs
             &nbsp;
-            = link_to namespace_project_merge_requests_path(merge_request.project.namespace, merge_request.project, milestone_title: merge_request.milestone.title) do
+            = link_to project_merge_requests_path(merge_request.project, milestone_title: merge_request.milestone.title) do
               = icon('clock-o')
               = merge_request.milestone.title
         - if merge_request.target_project.default_branch != merge_request.target_branch
diff --git a/app/views/projects/merge_requests/_mr_title.html.haml b/app/views/projects/merge_requests/_mr_title.html.haml
index d9428b8562e16f37c3d84acec8bfe0a9726e43cc..3182aecd0a8d9e888c5633639cd98817e228844a 100644
--- a/app/views/projects/merge_requests/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/_mr_title.html.haml
@@ -28,8 +28,8 @@
             %li{ class: merge_request_button_visibility(@merge_request, false) }
               = link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: 'reopen-mr-link', title: 'Reopen merge request'
             %li
-              = link_to 'Edit', edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'issuable-edit'
+              = link_to 'Edit', edit_project_merge_request_path(@project, @merge_request), class: 'issuable-edit'
         = link_to 'Close', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, class: "hidden-xs hidden-sm btn btn-grouped btn-close #{merge_request_button_visibility(@merge_request, true)}", title: 'Close merge request'
         = link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: "hidden-xs hidden-sm btn btn-grouped btn-reopen reopen-mr-link #{merge_request_button_visibility(@merge_request, false)}", title: 'Reopen merge request'
-        = link_to edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: "hidden-xs hidden-sm btn btn-grouped issuable-edit" do
+        = link_to edit_project_merge_request_path(@project, @merge_request), class: "hidden-xs hidden-sm btn btn-grouped issuable-edit" do
           Edit
diff --git a/app/views/projects/merge_requests/_pipelines.html.haml b/app/views/projects/merge_requests/_pipelines.html.haml
index 2f1dbe87619431c39b3bb63fd4b32aca4c50ea5c..473b7b919c83948a34d6dff23099ebf7171ed9e0 100644
--- a/app/views/projects/merge_requests/_pipelines.html.haml
+++ b/app/views/projects/merge_requests/_pipelines.html.haml
@@ -1,4 +1,4 @@
-- endpoint_path = local_assigns[:endpoint] || pipelines_namespace_project_merge_request_path(@project.namespace, @project, @merge_request, format: :json)
+- endpoint_path = local_assigns[:endpoint] || pipelines_project_merge_request_path(@project, @merge_request, format: :json)
 - disable_initialization = local_assigns.fetch(:disable_initialization, false)
 
 = render 'projects/commit/pipelines_list', endpoint: endpoint_path, disable_initialization: disable_initialization
diff --git a/app/views/projects/merge_requests/conflicts.html.haml b/app/views/projects/merge_requests/conflicts.html.haml
index f016b9c13b38bb3dd4b4d816b7a7192f2717e459..454bc359b6bea0b3e7be92d6c724f88f0dcd40b3 100644
--- a/app/views/projects/merge_requests/conflicts.html.haml
+++ b/app/views/projects/merge_requests/conflicts.html.haml
@@ -10,8 +10,8 @@
 
 = render 'shared/issuable/sidebar', issuable: @merge_request
 
-#conflicts{ "v-cloak" => "true", data: { conflicts_path: conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request, format: :json),
-    resolve_conflicts_path: resolve_conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request) } }
+#conflicts{ "v-cloak" => "true", data: { conflicts_path: conflicts_project_merge_request_path(@merge_request.project, @merge_request, format: :json),
+    resolve_conflicts_path: resolve_conflicts_project_merge_request_path(@merge_request.project, @merge_request) } }
   .loading{ "v-if" => "isLoading" }
     %i.fa.fa-spinner.fa-spin
 
diff --git a/app/views/projects/merge_requests/conflicts/_submit_form.html.haml b/app/views/projects/merge_requests/conflicts/_submit_form.html.haml
index e675e1830d0936d85d7124eee5c74e8958205ef7..13026b7566ab410fa842bd21e1b5c9126b9ee1f3 100644
--- a/app/views/projects/merge_requests/conflicts/_submit_form.html.haml
+++ b/app/views/projects/merge_requests/conflicts/_submit_form.html.haml
@@ -13,4 +13,4 @@
           %button.btn.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" }
             %span {{commitButtonText}}
         .col-xs-6.text-right
-          = link_to "Cancel", namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request), class: "btn btn-cancel"
+          = link_to "Cancel", project_merge_request_path(@merge_request.project, @merge_request), class: "btn btn-cancel"
diff --git a/app/views/projects/merge_requests/conflicts/show.html.haml b/app/views/projects/merge_requests/conflicts/show.html.haml
index f016b9c13b38bb3dd4b4d816b7a7192f2717e459..454bc359b6bea0b3e7be92d6c724f88f0dcd40b3 100644
--- a/app/views/projects/merge_requests/conflicts/show.html.haml
+++ b/app/views/projects/merge_requests/conflicts/show.html.haml
@@ -10,8 +10,8 @@
 
 = render 'shared/issuable/sidebar', issuable: @merge_request
 
-#conflicts{ "v-cloak" => "true", data: { conflicts_path: conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request, format: :json),
-    resolve_conflicts_path: resolve_conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request) } }
+#conflicts{ "v-cloak" => "true", data: { conflicts_path: conflicts_project_merge_request_path(@merge_request.project, @merge_request, format: :json),
+    resolve_conflicts_path: resolve_conflicts_project_merge_request_path(@merge_request.project, @merge_request) } }
   .loading{ "v-if" => "isLoading" }
     %i.fa.fa-spinner.fa-spin
 
diff --git a/app/views/projects/merge_requests/creations/_new_compare.html.haml b/app/views/projects/merge_requests/creations/_new_compare.html.haml
index 7cda326afef7a94cc8ebd7670bb9dbcdafaa2849..4e5aae496b1016c1923351a6b63a03c46816480c 100644
--- a/app/views/projects/merge_requests/creations/_new_compare.html.haml
+++ b/app/views/projects/merge_requests/creations/_new_compare.html.haml
@@ -1,7 +1,7 @@
 %h3.page-title
   New Merge Request
 
-= form_for [@project.namespace.becomes(Namespace), @project, @merge_request], url: namespace_project_new_merge_request_path(@project.namespace, @project), method: :get, html: { class: "merge-request-form form-inline js-requires-input" } do |f|
+= form_for [@project.namespace.becomes(Namespace), @project, @merge_request], url: project_new_merge_request_path(@project), method: :get, html: { class: "merge-request-form form-inline js-requires-input" } do |f|
   .hide.alert.alert-danger.mr-compare-errors
   .merge-request-branches.row
     .col-md-6
@@ -69,7 +69,7 @@
 
 :javascript
   new Compare({
-    targetProjectUrl: "#{namespace_project_new_merge_request_update_branches_path(@source_project.namespace, @source_project)}",
-    sourceBranchUrl: "#{namespace_project_new_merge_request_branch_from_path(@source_project.namespace, @source_project)}",
-    targetBranchUrl: "#{namespace_project_new_merge_request_branch_to_path(@source_project.namespace, @source_project)}"
+    targetProjectUrl: "#{project_new_merge_request_update_branches_path(@source_project)}",
+    sourceBranchUrl: "#{project_new_merge_request_branch_from_path(@source_project)}",
+    targetBranchUrl: "#{project_new_merge_request_branch_to_path(@source_project)}"
   });
diff --git a/app/views/projects/merge_requests/diffs/_versions.html.haml b/app/views/projects/merge_requests/diffs/_versions.html.haml
index 0999b95c9c9d34f33b484a1ed0494f1daea5bb49..9f7152b9824eeb6b181108be72049a60f4d0a2d7 100644
--- a/app/views/projects/merge_requests/diffs/_versions.html.haml
+++ b/app/views/projects/merge_requests/diffs/_versions.html.haml
@@ -77,7 +77,7 @@
         = icon('info-circle')
         Selected versions have different base commits.
         Changes will include
-        = link_to namespace_project_compare_path(@project.namespace, @project, from: @start_version.base_commit_sha, to: @merge_request_diff.base_commit_sha) do
+        = link_to project_compare_path(@project, from: @start_version.base_commit_sha, to: @merge_request_diff.base_commit_sha) do
           new commits
         from
         = succeed '.' do
@@ -94,4 +94,4 @@
         of the diff.
 
         .pull-right
-          = link_to 'Show latest version', diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'btn btn-sm'
+          = link_to 'Show latest version', diffs_project_merge_request_path(@project, @merge_request), class: 'btn btn-sm'
diff --git a/app/views/projects/merge_requests/index.html.haml b/app/views/projects/merge_requests/index.html.haml
index 6fe44ba3c3d6add353b79e21ffedee66c60ae72b..bfeb746ee83cfbf0679b5799f374b253e1161ad2 100644
--- a/app/views/projects/merge_requests/index.html.haml
+++ b/app/views/projects/merge_requests/index.html.haml
@@ -1,7 +1,7 @@
 - @no_container = true
 - @can_bulk_update = can?(current_user, :admin_merge_request, @project)
 - merge_project = can?(current_user, :create_merge_request, @project) ? @project : (current_user && current_user.fork_of(@project))
-- new_merge_request_path = namespace_project_new_merge_request_path(merge_project.namespace, merge_project) if merge_project
+- new_merge_request_path = project_new_merge_request_path(merge_project) if merge_project
 
 - page_title "Merge Requests"
 - unless @project.default_issues_tracker?
diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml
index dbbf1bde0886a427acfd92ae916ffef33ffbd9d7..13012151349f7de77e6a4846800b577df84bf189 100644
--- a/app/views/projects/merge_requests/show.html.haml
+++ b/app/views/projects/merge_requests/show.html.haml
@@ -35,21 +35,21 @@
           .nav-links.scrolling-tabs
             %ul.merge-request-tabs
               %li.notes-tab
-                = link_to namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: 'div#notes', action: 'show', toggle: 'tab' } do
+                = link_to project_merge_request_path(@project, @merge_request), data: { target: 'div#notes', action: 'show', toggle: 'tab' } do
                   Discussion
                   %span.badge= @merge_request.related_notes.user.count
               - if @merge_request.source_project
                 %li.commits-tab
-                  = link_to commits_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: 'div#commits', action: 'commits', toggle: 'tab' } do
+                  = link_to commits_project_merge_request_path(@project, @merge_request), data: { target: 'div#commits', action: 'commits', toggle: 'tab' } do
                     Commits
                     %span.badge= @commits_count
               - if @pipelines.any?
                 %li.pipelines-tab
-                  = link_to pipelines_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: '#pipelines', action: 'pipelines', toggle: 'tab' } do
+                  = link_to pipelines_project_merge_request_path(@project, @merge_request), data: { target: '#pipelines', action: 'pipelines', toggle: 'tab' } do
                     Pipelines
                     %span.badge= @pipelines.size
               %li.diffs-tab
-                = link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: 'div#diffs', action: 'diffs', toggle: 'tab' } do
+                = link_to diffs_project_merge_request_path(@project, @merge_request), data: { target: 'div#diffs', action: 'diffs', toggle: 'tab' } do
                   Changes
                   %span.badge= @merge_request.diff_size
         #resolve-count-app.line-resolve-all-container.prepend-top-10{ "v-cloak" => true }
@@ -76,7 +76,7 @@
         -# This tab is always loaded via AJAX
       #pipelines.pipelines.tab-pane
         - if @pipelines.any?
-          = render 'projects/commit/pipelines_list', disable_initialization: true, endpoint: pipelines_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
+          = render 'projects/commit/pipelines_list', disable_initialization: true, endpoint: pipelines_project_merge_request_path(@project, @merge_request)
       #diffs.diffs.tab-pane
         -# This tab is always loaded via AJAX
 
diff --git a/app/views/projects/milestones/_form.html.haml b/app/views/projects/milestones/_form.html.haml
index 9a95b2a82ffd710564998e8516d3258076d17c80..2e74b1b83cb280b264aa2cbe595604aeaa9da72e 100644
--- a/app/views/projects/milestones/_form.html.haml
+++ b/app/views/projects/milestones/_form.html.haml
@@ -19,7 +19,7 @@
   .form-actions
     - if @milestone.new_record?
       = f.submit 'Create milestone', class: "btn-create btn"
-      = link_to "Cancel", namespace_project_milestones_path(@project.namespace, @project), class: "btn btn-cancel"
+      = link_to "Cancel", project_milestones_path(@project), class: "btn btn-cancel"
     - else
       = f.submit 'Save changes', class: "btn-save btn"
-      = link_to "Cancel", namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-cancel"
+      = link_to "Cancel", project_milestone_path(@project, @milestone), class: "btn btn-cancel"
diff --git a/app/views/projects/milestones/_milestone.html.haml b/app/views/projects/milestones/_milestone.html.haml
index 77b566db6b6003fa475edce90af2fb6d0d4fe88b..bc82b45f9023dfe0f7129e1f278dbf19d607031f 100644
--- a/app/views/projects/milestones/_milestone.html.haml
+++ b/app/views/projects/milestones/_milestone.html.haml
@@ -1,5 +1,5 @@
 = render 'shared/milestones/milestone',
-          milestone_path: namespace_project_milestone_path(milestone.project.namespace, milestone.project, milestone),
-          issues_path: namespace_project_issues_path(milestone.project.namespace, milestone.project, milestone_title: milestone.title),
-          merge_requests_path: namespace_project_merge_requests_path(milestone.project.namespace, milestone.project, milestone_title: milestone.title),
+          milestone_path: project_milestone_path(milestone.project, milestone),
+          issues_path: project_issues_path(milestone.project, milestone_title: milestone.title),
+          merge_requests_path: project_merge_requests_path(milestone.project, milestone_title: milestone.title),
           milestone: milestone
diff --git a/app/views/projects/milestones/index.html.haml b/app/views/projects/milestones/index.html.haml
index e1096bd1d67f5e6af2b74fa8f6e8dbe5ca454c1c..e53fcd6e4250325db499442b391b6c0758946afd 100644
--- a/app/views/projects/milestones/index.html.haml
+++ b/app/views/projects/milestones/index.html.haml
@@ -9,7 +9,7 @@
     .nav-controls
       = render 'shared/milestones_sort_dropdown'
       - if can?(current_user, :admin_milestone, @project)
-        = link_to new_namespace_project_milestone_path(@project.namespace, @project), class: 'btn btn-new', title: 'New milestone' do
+        = link_to new_project_milestone_path(@project), class: 'btn btn-new', title: 'New milestone' do
           New milestone
 
   .milestones
diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml
index 4b692aba11cf9eec00508a80e8d38a338b040efd..0bf0e11c107dbbfbed4b112a4fe33d87c1569831 100644
--- a/app/views/projects/milestones/show.html.haml
+++ b/app/views/projects/milestones/show.html.haml
@@ -23,14 +23,14 @@
     .milestone-buttons
       - if can?(current_user, :admin_milestone, @project)
         - if @milestone.active?
-          = link_to 'Close milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
+          = link_to 'Close milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
         - else
-          = link_to 'Reopen milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped"
+          = link_to 'Reopen milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped"
 
-        = link_to edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-grouped btn-nr" do
+        = link_to edit_project_milestone_path(@project, @milestone), class: "btn btn-grouped btn-nr" do
           Edit
 
-        = link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-danger" do
+        = link_to project_milestone_path(@project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-danger" do
           Delete
 
       %a.btn.btn-default.btn-grouped.pull-right.visible-xs-block.js-sidebar-toggle{ href: "#" }
diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml
index ed6077f6c6bf208da7cadf20fe6cccc82e7a3d5f..e8c26636be9d4fad76ae0b59bc614b6ac2264b85 100644
--- a/app/views/projects/network/show.html.haml
+++ b/app/views/projects/network/show.html.haml
@@ -6,7 +6,7 @@
 %div{ class: container_class }
   .project-network
     .controls
-      = form_tag namespace_project_network_path(@project.namespace, @project, @id), method: :get, class: 'form-inline network-form' do |f|
+      = form_tag project_network_path(@project, @id), method: :get, class: 'form-inline network-form' do |f|
         = text_field_tag :extended_sha1, @options[:extended_sha1], placeholder: "Git revision", class: 'search-input form-control input-mx-250 search-sha'
         = button_tag class: 'btn btn-success' do
           = icon('search')
diff --git a/app/views/projects/no_repo.html.haml b/app/views/projects/no_repo.html.haml
index 1cf286ddc40ce18ed4f762a19e5ff933b5c3aeca..ba5845877e54fc25ee6b38bcda47dfeef1fcf055 100644
--- a/app/views/projects/no_repo.html.haml
+++ b/app/views/projects/no_repo.html.haml
@@ -9,12 +9,12 @@
 %hr
 
 .no-repo-actions
-  = link_to namespace_project_repository_path(@project.namespace, @project), method: :post, class: 'btn btn-primary' do
+  = link_to project_repository_path(@project), method: :post, class: 'btn btn-primary' do
     #{ _('Create empty bare repository') }
 
   %strong.prepend-left-10.append-right-10 or
 
-  = link_to new_namespace_project_import_path(@project.namespace, @project), class: 'btn' do
+  = link_to new_project_import_path(@project), class: 'btn' do
     #{ _('Import repository') }
 
 - if can? current_user, :remove_project, @project
diff --git a/app/views/projects/pages/_destroy.haml b/app/views/projects/pages/_destroy.haml
index 42d9ef5ccba3f1f87de3739fbef2535c46ae8f53..7d6c30b7f8d29d5d0ff5bb20f9ef5eb7520c91f2 100644
--- a/app/views/projects/pages/_destroy.haml
+++ b/app/views/projects/pages/_destroy.haml
@@ -7,6 +7,6 @@
         %p
           Removing the pages will prevent from exposing them to outside world.
         .form-actions
-          = link_to 'Remove pages', namespace_project_pages_path(@project.namespace, @project), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove"
+          = link_to 'Remove pages', project_pages_path(@project), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove"
   - else
     .nothing-here-block Only the project owner can remove pages
diff --git a/app/views/projects/pages/_list.html.haml b/app/views/projects/pages/_list.html.haml
index 4f2dd1a13983853109d36ae5ed24120561f2de3c..a85cda407afb1b8580ec58f3a5d524b2533c7524 100644
--- a/app/views/projects/pages/_list.html.haml
+++ b/app/views/projects/pages/_list.html.haml
@@ -6,8 +6,8 @@
       - @domains.each do |domain|
         %li
           .pull-right
-            = link_to 'Details', namespace_project_pages_domain_path(@project.namespace, @project, domain), class: "btn btn-sm btn-grouped"
-            = link_to 'Remove', namespace_project_pages_domain_path(@project.namespace, @project, domain), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove btn-sm btn-grouped"
+            = link_to 'Details', project_pages_domain_path(@project, domain), class: "btn btn-sm btn-grouped"
+            = link_to 'Remove', project_pages_domain_path(@project, domain), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove btn-sm btn-grouped"
           .clearfix
             %span= link_to domain.domain, domain.url
           %p
diff --git a/app/views/projects/pages/show.html.haml b/app/views/projects/pages/show.html.haml
index b22a54d75c803c8e50303a81967e7c6f5dad79bc..098b0ef56efb656ad31a041d7bd7ff5cd2686ff8 100644
--- a/app/views/projects/pages/show.html.haml
+++ b/app/views/projects/pages/show.html.haml
@@ -5,7 +5,7 @@
   Pages
 
   - if can?(current_user, :update_pages, @project) && (Gitlab.config.pages.external_http || Gitlab.config.pages.external_https)
-    = link_to new_namespace_project_pages_domain_path(@project.namespace, @project), class: 'btn btn-new pull-right', title: 'New Domain' do
+    = link_to new_project_pages_domain_path(@project), class: 'btn btn-new pull-right', title: 'New Domain' do
       %i.fa.fa-plus
       New Domain
 
diff --git a/app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml b/app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml
index 966d6cd8495e546d80d456de6cf703ed56114ca1..08ccd57c81a7453cdd51d312831cc9feff1a85d3 100644
--- a/app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml
+++ b/app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml
@@ -9,7 +9,7 @@
     %td
       - if pipeline_schedule.last_pipeline
         .status-icon-container{ class: "ci-status-icon-#{pipeline_schedule.last_pipeline.status}" }
-          = link_to namespace_project_pipeline_path(@project.namespace, @project, pipeline_schedule.last_pipeline.id) do
+          = link_to project_pipeline_path(@project, pipeline_schedule.last_pipeline.id) do
             = ci_icon_for_status(pipeline_schedule.last_pipeline.status)
             %span ##{pipeline_schedule.last_pipeline.id}
       - else
diff --git a/app/views/projects/pipeline_schedules/index.html.haml b/app/views/projects/pipeline_schedules/index.html.haml
index c296152e54f18e0e0128a36c146c82b5c93a22f4..05fe80e5fed28bb56fb48469b208cb2eb8e7c494 100644
--- a/app/views/projects/pipeline_schedules/index.html.haml
+++ b/app/views/projects/pipeline_schedules/index.html.haml
@@ -13,7 +13,7 @@
     = render "tabs", schedule_path_proc: schedule_path_proc, all_schedules: @all_schedules, scope: @scope
 
     .nav-controls
-      = link_to new_namespace_project_pipeline_schedule_path(@project.namespace, @project), class: 'btn btn-create' do
+      = link_to new_project_pipeline_schedule_path(@project), class: 'btn btn-create' do
         %span= _('New schedule')
 
   - if @schedules.present?
diff --git a/app/views/projects/pipelines/_head.html.haml b/app/views/projects/pipelines/_head.html.haml
index d2f0cb0806f88980bf388ee454ebd6ab16f497f9..ee2f236cec4a923010e118802565c3156a9aa563 100644
--- a/app/views/projects/pipelines/_head.html.haml
+++ b/app/views/projects/pipelines/_head.html.haml
@@ -29,6 +29,6 @@
 
         - if @project.feature_available?(:builds, current_user) && !@project.empty_repo?
           = nav_link(path: 'pipelines#charts') do
-            = link_to charts_namespace_project_pipelines_path(@project.namespace, @project), title: 'Charts', class: 'shortcuts-pipelines-charts' do
+            = link_to charts_project_pipelines_path(@project), title: 'Charts', class: 'shortcuts-pipelines-charts' do
               %span
                 Charts
diff --git a/app/views/projects/pipelines/_info.html.haml b/app/views/projects/pipelines/_info.html.haml
index 673c3370b62c6c03e7fee2b865087a4cb300f465..f514930673464cf20a7328ee6f3faf7a035fe2cf 100644
--- a/app/views/projects/pipelines/_info.html.haml
+++ b/app/views/projects/pipelines/_info.html.haml
@@ -26,10 +26,10 @@
   .well-segment.branch-info
     .icon-container.commit-icon
       = custom_icon("icon_commit")
-    = link_to @commit.short_id, namespace_project_commit_path(@project.namespace, @project, @pipeline.sha), class: "commit-sha js-details-short"
+    = link_to @commit.short_id, project_commit_path(@project, @pipeline.sha), class: "commit-sha js-details-short"
     = link_to("#", class: "js-details-expand hidden-xs hidden-sm") do
       %span.text-expander
         \...
     %span.js-details-content.hide
-      = link_to @pipeline.sha, namespace_project_commit_path(@project.namespace, @project, @pipeline.sha), class: "commit-sha commit-hash-full"
+      = link_to @pipeline.sha, project_commit_path(@project, @pipeline.sha), class: "commit-sha commit-hash-full"
     = clipboard_button(text: @pipeline.sha, title: "Copy commit SHA to clipboard")
diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml
index 85550e8fd3200e4be90c7f7526160089c6aebed7..ad61f033a1c390fca67fece889c8ab070a941864 100644
--- a/app/views/projects/pipelines/_with_tabs.html.haml
+++ b/app/views/projects/pipelines/_with_tabs.html.haml
@@ -3,15 +3,15 @@
 .tabs-holder
   %ul.pipelines-tabs.nav-links.no-top.no-bottom
     %li.js-pipeline-tab-link
-      = link_to namespace_project_pipeline_path(@project.namespace, @project, @pipeline), data: { target: 'div#js-tab-pipeline', action: 'pipelines', toggle: 'tab' },  class: 'pipeline-tab' do
+      = link_to project_pipeline_path(@project, @pipeline), data: { target: 'div#js-tab-pipeline', action: 'pipelines', toggle: 'tab' },  class: 'pipeline-tab' do
         Pipeline
     %li.js-builds-tab-link
-      = link_to builds_namespace_project_pipeline_path(@project.namespace, @project, @pipeline), data: {target: 'div#js-tab-builds', action: 'builds', toggle: 'tab' }, class: 'builds-tab' do
+      = link_to builds_project_pipeline_path(@project, @pipeline), data: {target: 'div#js-tab-builds', action: 'builds', toggle: 'tab' }, class: 'builds-tab' do
         Jobs
         %span.badge.js-builds-counter= pipeline.statuses.count
     - if failed_builds.present?
       %li.js-failures-tab-link
-        = link_to failures_namespace_project_pipeline_path(@project.namespace, @project, @pipeline), data: {target: 'div#js-tab-failures', action: 'failures', toggle: 'tab' }, class: 'failures-tab' do
+        = link_to failures_project_pipeline_path(@project, @pipeline), data: {target: 'div#js-tab-failures', action: 'failures', toggle: 'tab' }, class: 'failures-tab' do
           Failed Jobs
           %span.badge.js-failures-counter= failed_builds.count
 
diff --git a/app/views/projects/pipelines/index.html.haml b/app/views/projects/pipelines/index.html.haml
index 38237d2d97d4f1f874b0652cfcab20d774178f20..c1729850cf4ec01f71404289b2228df12b9c64b9 100644
--- a/app/views/projects/pipelines/index.html.haml
+++ b/app/views/projects/pipelines/index.html.haml
@@ -2,10 +2,10 @@
 - page_title "Pipelines"
 = render "projects/pipelines/head"
 
-#pipelines-list-vue{ data: { endpoint: namespace_project_pipelines_path(@project.namespace, @project, format: :json),
+#pipelines-list-vue{ data: { endpoint: project_pipelines_path(@project, format: :json),
   "css-class" => container_class,
   "help-page-path" => help_page_path('ci/quick_start/README'),
-  "new-pipeline-path" => new_namespace_project_pipeline_path(@project.namespace, @project),
+  "new-pipeline-path" => new_project_pipeline_path(@project),
   "can-create-pipeline" => can?(current_user, :create_pipeline, @project).to_s,
   "all-path" =>  project_pipelines_path(@project),
   "pending-path" => project_pipelines_path(@project, scope: :pending),
diff --git a/app/views/projects/pipelines/new.html.haml b/app/views/projects/pipelines/new.html.haml
index 71a8e490c3e5bea9b075d062bb36daa1193094d3..308f2611e024ec38dd2d048118dfb4aba9d3c8eb 100644
--- a/app/views/projects/pipelines/new.html.haml
+++ b/app/views/projects/pipelines/new.html.haml
@@ -4,7 +4,7 @@
   New Pipeline
 %hr
 
-= form_for @pipeline, as: :pipeline, url: namespace_project_pipelines_path(@project.namespace, @project), html: { id: "new-pipeline-form", class: "form-horizontal js-new-pipeline-form js-requires-input" } do |f|
+= form_for @pipeline, as: :pipeline, url: project_pipelines_path(@project), html: { id: "new-pipeline-form", class: "form-horizontal js-new-pipeline-form js-requires-input" } do |f|
   = form_errors(@pipeline)
   .form-group
     = f.label :ref, 'Create for', class: 'control-label'
@@ -17,7 +17,7 @@
       .help-block Existing branch name, tag
   .form-actions
     = f.submit 'Create pipeline', class: 'btn btn-create', tabindex: 3
-    = link_to 'Cancel', namespace_project_pipelines_path(@project.namespace, @project), class: 'btn btn-cancel'
+    = link_to 'Cancel', project_pipelines_path(@project), class: 'btn btn-cancel'
 
 :javascript
   var availableRefs = #{@project.repository.ref_names.to_json};
diff --git a/app/views/projects/pipelines/show.html.haml b/app/views/projects/pipelines/show.html.haml
index b39453a50fbcb7e099817b557642b0cab99d9d15..63f85fc69a2c5ebd11f5ef4e83f9fbc1ae19b7b7 100644
--- a/app/views/projects/pipelines/show.html.haml
+++ b/app/views/projects/pipelines/show.html.haml
@@ -8,7 +8,7 @@
 
   = render "projects/pipelines/with_tabs", pipeline: @pipeline
 
-.js-pipeline-details-vue{ data: { endpoint: namespace_project_pipeline_path(@project.namespace, @project, @pipeline, format: :json) } }
+.js-pipeline-details-vue{ data: { endpoint: project_pipeline_path(@project, @pipeline, format: :json) } }
 
 - content_for :page_specific_javascripts do
   = webpack_bundle_tag('common_vue')
diff --git a/app/views/projects/pipelines_settings/_show.html.haml b/app/views/projects/pipelines_settings/_show.html.haml
index 580129ca809bf223c85db1dc574b1ec8c2feb4d9..151d794fa927a7c57792ee6944ad3028e5f2c72b 100644
--- a/app/views/projects/pipelines_settings/_show.html.haml
+++ b/app/views/projects/pipelines_settings/_show.html.haml
@@ -3,7 +3,7 @@
     %h4.prepend-top-0
       Pipelines
   .col-lg-8
-    = form_for @project, url: namespace_project_pipelines_settings_path(@project.namespace.becomes(Namespace), @project) do |f|
+    = form_for @project, url: project_pipelines_settings_path(@project) do |f|
       %fieldset.builds-feature
         - unless @repository.gitlab_ci_yml
           .form-group
diff --git a/app/views/projects/project_members/_new_project_member.html.haml b/app/views/projects/project_members/_new_project_member.html.haml
index 8bf2246662a0363aa1a9bc3c48a29496393258b1..bf5b11ea30ce4d44e08cbcdfcea15040135db4d0 100644
--- a/app/views/projects/project_members/_new_project_member.html.haml
+++ b/app/views/projects/project_members/_new_project_member.html.haml
@@ -1,6 +1,6 @@
 .row
   .col-sm-12
-    = form_for @project_member, as: :project_member, url: namespace_project_project_members_path(@project.namespace, @project), html: { class: 'users-project-form' } do |f|
+    = form_for @project_member, as: :project_member, url: project_project_members_path(@project), html: { class: 'users-project-form' } do |f|
       .form-group
         = label_tag :user_ids, "Select members to invite", class: "label-light"
         = users_select_tag(:user_ids, multiple: true, class: "input-clamp", scope: :all, email_user: true, placeholder: "Search for members to update or invite")
@@ -18,4 +18,4 @@
           = text_field_tag :expires_at, nil, class: 'form-control js-access-expiration-date', placeholder: 'Expiration date'
           %i.clear-icon.js-clear-input
       = f.submit "Add to project", class: "btn btn-create"
-      = link_to "Import", import_namespace_project_project_members_path(@project.namespace, @project), class: "btn btn-default", title: "Import members from another project"
+      = link_to "Import", import_project_project_members_path(@project), class: "btn btn-default", title: "Import members from another project"
diff --git a/app/views/projects/project_members/_new_shared_group.html.haml b/app/views/projects/project_members/_new_shared_group.html.haml
index 643569db6464351cc0ea25b76edba908c4cdeeb7..c10ef648a8f6ed086211160b88438c6f43350899 100644
--- a/app/views/projects/project_members/_new_shared_group.html.haml
+++ b/app/views/projects/project_members/_new_shared_group.html.haml
@@ -1,6 +1,6 @@
 .row
   .col-sm-12
-    = form_tag namespace_project_group_links_path(@project.namespace, @project), class: 'js-requires-input', method: :post do
+    = form_tag project_group_links_path(@project), class: 'js-requires-input', method: :post do
       .form-group
         = label_tag :link_group_id, "Select a group to share with", class: "label-light"
         = groups_select_tag(:link_group_id, data: { skip_groups: @skip_groups }, class: "input-clamp", required: true)
diff --git a/app/views/projects/project_members/_team.html.haml b/app/views/projects/project_members/_team.html.haml
index 7b1a26043e1560fc31161c09f304e3a06b6becc4..7ed467c884194c15e5f81cc4e9bcd82975d72096 100644
--- a/app/views/projects/project_members/_team.html.haml
+++ b/app/views/projects/project_members/_team.html.haml
@@ -5,7 +5,7 @@
       %strong
         #{@project.name}
     %span.badge= @project_members.total_count
-    = form_tag namespace_project_settings_members_path(@project.namespace, @project), method: :get, class: 'form-inline member-search-form flex-project-members-form'  do
+    = form_tag project_settings_members_path(@project), method: :get, class: 'form-inline member-search-form flex-project-members-form'  do
       .form-group
         = search_field_tag :search, params[:search], { placeholder: 'Find existing members by name', class: 'form-control', spellcheck: false }
         %button.member-search-btn{ type: "submit", "aria-label" => "Submit search" }
diff --git a/app/views/projects/project_members/import.html.haml b/app/views/projects/project_members/import.html.haml
index 42ce4f8001b8dce7980fe4f36d916498f4a80646..03b33eb2da7cf005ec3cc10212bcae6277275b99 100644
--- a/app/views/projects/project_members/import.html.haml
+++ b/app/views/projects/project_members/import.html.haml
@@ -5,11 +5,11 @@
 %p.light
   Only project members will be imported. Group members will be skipped.
 %hr
-= form_tag apply_import_namespace_project_project_members_path(@project.namespace, @project), method: 'post', class: 'form-horizontal' do
+= form_tag apply_import_project_project_members_path(@project), method: 'post', class: 'form-horizontal' do
   .form-group
     = label_tag :source_project_id, "Project", class: 'control-label'
     .col-sm-10= select_tag(:source_project_id, options_from_collection_for_select(current_user.authorized_projects, :id, :name_with_namespace), prompt: "Select project", class: "select2 lg", required: true)
 
   .form-actions
     = button_tag 'Import project members', class: "btn btn-create"
-    = link_to "Cancel", namespace_project_settings_members_path(@project.namespace, @project), class: "btn btn-cancel"
+    = link_to "Cancel", project_settings_members_path(@project), class: "btn btn-cancel"
diff --git a/app/views/projects/protected_branches/_matching_branch.html.haml b/app/views/projects/protected_branches/_matching_branch.html.haml
index 27896272733510c473db83418c17400900eb18a1..98793d632e6b4666661f441b89bcd21827efce2f 100644
--- a/app/views/projects/protected_branches/_matching_branch.html.haml
+++ b/app/views/projects/protected_branches/_matching_branch.html.haml
@@ -6,5 +6,5 @@
       %span.label.label-info.prepend-left-5 default
   %td
     - commit = @project.commit(matching_branch.name)
-    = link_to(commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit.id), class: 'commit-sha')
+    = link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
     = time_ago_with_tooltip(commit.committed_date)
diff --git a/app/views/projects/protected_branches/_protected_branch.html.haml b/app/views/projects/protected_branches/_protected_branch.html.haml
index 0f80de94392c95830850647ed5206370d856107f..e4dadc42cc001d909fe7a3b492fcfd66a026508f 100644
--- a/app/views/projects/protected_branches/_protected_branch.html.haml
+++ b/app/views/projects/protected_branches/_protected_branch.html.haml
@@ -1,4 +1,4 @@
-%tr.js-protected-branch-edit-form{ data: { url: namespace_project_protected_branch_path(@project.namespace, @project, protected_branch) } }
+%tr.js-protected-branch-edit-form{ data: { url: project_protected_branch_path(@project, protected_branch) } }
   %td
     %span.ref-name= protected_branch.name
 
@@ -7,10 +7,10 @@
   %td
     - if protected_branch.wildcard?
       - matching_branches = protected_branch.matching(repository.branches)
-      = link_to pluralize(matching_branches.count, "matching branch"), namespace_project_protected_branch_path(@project.namespace, @project, protected_branch)
+      = link_to pluralize(matching_branches.count, "matching branch"), project_protected_branch_path(@project, protected_branch)
     - else
       - if commit = protected_branch.commit
-        = link_to(commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit.id), class: 'commit-sha')
+        = link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
         = time_ago_with_tooltip(commit.committed_date)
       - else
         (branch was removed from repository)
diff --git a/app/views/projects/protected_tags/_matching_tag.html.haml b/app/views/projects/protected_tags/_matching_tag.html.haml
index f17353df1221a7bbd4f8f943f48e850c210572ac..05f102d1ca399cf7191c49094c4f3f76b751f682 100644
--- a/app/views/projects/protected_tags/_matching_tag.html.haml
+++ b/app/views/projects/protected_tags/_matching_tag.html.haml
@@ -6,5 +6,5 @@
       %span.label.label-info.prepend-left-5 default
   %td
     - commit = @project.commit(matching_tag.name)
-    = link_to(commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit.id), class: 'commit-sha')
+    = link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
     = time_ago_with_tooltip(commit.committed_date)
diff --git a/app/views/projects/protected_tags/_protected_tag.html.haml b/app/views/projects/protected_tags/_protected_tag.html.haml
index f11ce0483a96a8deb50aa46e49489cb937c25a3e..5162da5e429357aef1d03f77d961ba9ffcfb6f2e 100644
--- a/app/views/projects/protected_tags/_protected_tag.html.haml
+++ b/app/views/projects/protected_tags/_protected_tag.html.haml
@@ -1,4 +1,4 @@
-%tr.js-protected-tag-edit-form{ data: { url: namespace_project_protected_tag_path(@project.namespace, @project, protected_tag) } }
+%tr.js-protected-tag-edit-form{ data: { url: project_protected_tag_path(@project, protected_tag) } }
   %td
     %span.ref-name= protected_tag.name
 
@@ -7,10 +7,10 @@
   %td
     - if protected_tag.wildcard?
       - matching_tags = protected_tag.matching(repository.tags)
-      = link_to pluralize(matching_tags.count, "matching tag"), namespace_project_protected_tag_path(@project.namespace, @project, protected_tag)
+      = link_to pluralize(matching_tags.count, "matching tag"), project_protected_tag_path(@project, protected_tag)
     - else
       - if commit = protected_tag.commit
-        = link_to(commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit.id), class: 'commit-sha')
+        = link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
         = time_ago_with_tooltip(commit.committed_date)
       - else
         (tag was removed from repository)
diff --git a/app/views/projects/registry/repositories/_image.html.haml b/app/views/projects/registry/repositories/_image.html.haml
index dcdc432b6541a0fcf34ab81b0bc148af25220510..a0535edafc36998510de21dbb5c940f8a261a093 100644
--- a/app/views/projects/registry/repositories/_image.html.haml
+++ b/app/views/projects/registry/repositories/_image.html.haml
@@ -8,7 +8,7 @@
 
     - if can?(current_user, :update_container_image, @project)
       .controls.hidden-xs.pull-right
-        = link_to namespace_project_container_registry_path(@project.namespace, @project, image),
+        = link_to project_container_registry_path(@project, image),
                   class: 'btn btn-remove has-tooltip',
                   title: 'Remove repository',
                   data: { confirm: 'Are you sure?' },
@@ -30,4 +30,3 @@
           = render partial: 'tag', collection: image.tags
     - else
       .nothing-here-block No tags in Container Registry for this container image.
-
diff --git a/app/views/projects/registry/repositories/_tag.html.haml b/app/views/projects/registry/repositories/_tag.html.haml
index 378a23f07e6fc0941b265ca809c50d6f3dc6d4bc..0b082a2137f380e7a2d6d081b7e0a29c8d041cd3 100644
--- a/app/views/projects/registry/repositories/_tag.html.haml
+++ b/app/views/projects/registry/repositories/_tag.html.haml
@@ -25,7 +25,7 @@
   - if can?(current_user, :update_container_image, @project)
     %td.content
       .controls.hidden-xs.pull-right
-        = link_to namespace_project_registry_repository_tag_path(@project.namespace, @project, tag.repository, tag.name),
+        = link_to project_registry_repository_tag_path(@project, tag.repository, tag.name),
                   method: :delete,
                   class: 'btn btn-remove has-tooltip',
                   title: 'Remove tag',
diff --git a/app/views/projects/releases/edit.html.haml b/app/views/projects/releases/edit.html.haml
index 93ee9382a6e0956321fe15dc4d84020379abfc31..0a5a38a3694cef4cb789696d1c4a825a116f82e1 100644
--- a/app/views/projects/releases/edit.html.haml
+++ b/app/views/projects/releases/edit.html.haml
@@ -10,11 +10,11 @@
         %strong= @tag.name
 
 
-  = form_for(@release, method: :put, url: namespace_project_tag_release_path(@project.namespace, @project, @tag.name), html: { class: 'form-horizontal common-note-form release-form js-quick-submit' }) do |f|
+  = form_for(@release, method: :put, url: project_tag_release_path(@project, @tag.name), html: { class: 'form-horizontal common-note-form release-form js-quick-submit' }) do |f|
     = render layout: 'projects/md_preview', locals: { url: preview_markdown_path(@project), referenced_users: true } do
       = render 'projects/zen', f: f, attr: :description, classes: 'note-textarea', placeholder: "Write your release notes or drag files here..."
       = render 'shared/notes/hints'
     .error-alert
     .prepend-top-default
       = f.submit 'Save changes', class: 'btn btn-save'
-      = link_to "Cancel", namespace_project_tag_path(@project.namespace, @project, @tag.name), class: "btn btn-default btn-cancel"
+      = link_to "Cancel", project_tag_path(@project, @tag.name), class: "btn btn-default btn-cancel"
diff --git a/app/views/projects/remove_fork.js.haml b/app/views/projects/remove_fork.js.haml
index 17b9fecfeb162f8f3ac88523a7fbe336c4d46516..6d083c5c5169bcacfb847a76bc9ecf9c1334b04b 100644
--- a/app/views/projects/remove_fork.js.haml
+++ b/app/views/projects/remove_fork.js.haml
@@ -1,2 +1,2 @@
 :plain
-    location.href = "#{edit_namespace_project_path(@project.namespace, @project)}";
+    location.href = "#{edit_project_path(@project)}";
diff --git a/app/views/projects/repositories/_feed.html.haml b/app/views/projects/repositories/_feed.html.haml
index d9c39fb87b76fcef28313effeb8268f0f38c9d4f..170f9e259df72b3343d4fdde4a47fee06924a0ff 100644
--- a/app/views/projects/repositories/_feed.html.haml
+++ b/app/views/projects/repositories/_feed.html.haml
@@ -1,7 +1,7 @@
 - commit = update
 %tr
   %td
-    = link_to namespace_project_commits_path(@project.namespace, @project, commit.head.name) do
+    = link_to project_commits_path(@project, commit.head.name) do
       %strong
         = commit.head.name
       - if @project.root_ref?(commit.head.name)
@@ -9,7 +9,7 @@
 
   %td
     %div
-      = link_to namespace_project_commits_path(@project.namespace, @project, commit.id) do
+      = link_to project_commits_path(@project, commit.id) do
         %code= commit.short_id
       = image_tag avatar_icon(commit.author_email), class: "", width: 16, alt: ''
       = markdown(truncate(commit.title, length: 40), pipeline: :single_line, author: commit.author)
diff --git a/app/views/projects/runners/_runner.html.haml b/app/views/projects/runners/_runner.html.haml
index 674f87e82205f6bed3d3b8c7e11d3f7dd5d4ba52..abc97bcdff580248870de1ec6ea1544e81599ea3 100644
--- a/app/views/projects/runners/_runner.html.haml
+++ b/app/views/projects/runners/_runner.html.haml
@@ -9,7 +9,7 @@
         = icon('lock', class: 'has-tooltip', title: 'Locked to current projects')
 
       %small
-        = link_to edit_namespace_project_runner_path(@project.namespace, @project, runner) do
+        = link_to edit_project_runner_path(@project, runner) do
           %i.fa.fa-edit.btn
     - else
       %span.commit-sha
@@ -21,7 +21,7 @@
           = link_to 'Remove Runner', runner_path(runner), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
         - else
           - runner_project = @project.runner_projects.find_by(runner_id: runner)
-          = link_to 'Disable for this project', namespace_project_runner_project_path(@project.namespace, @project, runner_project), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
+          = link_to 'Disable for this project', project_runner_project_path(@project, runner_project), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
       - elsif runner.specific?
         = form_for [@project.namespace.becomes(Namespace), @project, @project.runner_projects.new] do |f|
           = f.hidden_field :runner_id, value: runner.id
diff --git a/app/views/projects/runners/_shared_runners.html.haml b/app/views/projects/runners/_shared_runners.html.haml
index 0671dd66e78d29d818a3998eb081be52197fbad7..a4e820628f3641b317407dcdd38ce2040faa22cc 100644
--- a/app/views/projects/runners/_shared_runners.html.haml
+++ b/app/views/projects/runners/_shared_runners.html.haml
@@ -9,10 +9,10 @@
     on GitLab.com).
   %hr
   - if @project.shared_runners_enabled?
-    = link_to toggle_shared_runners_namespace_project_runners_path(@project.namespace, @project), class: 'btn btn-warning', method: :post do
+    = link_to toggle_shared_runners_project_runners_path(@project), class: 'btn btn-warning', method: :post do
       Disable shared Runners
   - else
-    = link_to toggle_shared_runners_namespace_project_runners_path(@project.namespace, @project), class: 'btn btn-success', method: :post do
+    = link_to toggle_shared_runners_project_runners_path(@project), class: 'btn btn-success', method: :post do
       Enable shared Runners
   &nbsp; for this project
 
diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml
index 6dffc0263920ec69bfb507185a23dd4ad11dd137..7eab428bb2e2ac5b1da88bf5874012b88b30b6ca 100644
--- a/app/views/projects/services/_form.html.haml
+++ b/app/views/projects/services/_form.html.haml
@@ -9,7 +9,7 @@
 
     %p= @service.description
   .col-lg-9
-    = form_for(@service, as: :service, url: namespace_project_service_path(@project.namespace, @project, @service.to_param), method: :put, html: { class: 'gl-show-field-errors form-horizontal js-integration-settings-form', data: { 'can-test' => @service.can_test?, 'test-url' => test_namespace_project_service_path } }) do |form|
+    = form_for(@service, as: :service, url: project_service_path(@project, @service.to_param), method: :put, html: { class: 'gl-show-field-errors form-horizontal js-integration-settings-form', data: { 'can-test' => @service.can_test?, 'test-url' => test_project_service_path(@project, @service) } }) do |form|
       = render 'shared/service_settings', form: form, subject: @service
       .footer-block.row-content-block
         %button.btn.btn-save{ type: 'submit' }
@@ -22,7 +22,7 @@
             - disabled_class = 'disabled'
             - disabled_title = @service.disabled_title
 
-        = link_to 'Cancel', namespace_project_settings_integrations_path(@project.namespace, @project), class: 'btn btn-cancel'
+        = link_to 'Cancel', project_settings_integrations_path(@project), class: 'btn btn-cancel'
 
 - if lookup_context.template_exists?('show', "projects/services/#{@service.to_param}", true)
   %hr
diff --git a/app/views/projects/services/_index.html.haml b/app/views/projects/services/_index.html.haml
index 997b702da33d70ddf0a5ae2975dca218390a1ea7..915c6b22162a5122d00d79836f3303d0e1df6931 100644
--- a/app/views/projects/services/_index.html.haml
+++ b/app/views/projects/services/_index.html.haml
@@ -21,7 +21,7 @@
           %td{ "aria-label" => "#{service.title}: status " + (service.activated? ? "on" : "off") }
             = boolean_to_icon service.activated?
           %td
-            = link_to edit_namespace_project_service_path(@project.namespace, @project, service.to_param) do
+            = link_to edit_project_service_path(@project, service.to_param) do
               %strong= service.title
           %td.hidden-xs
             = service.description
diff --git a/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml b/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml
index fcc91be11cd3de593f5075e5125f1d9c04e7a40f..44c0b7a90dc0fa36d367b3982387380a97dae8a3 100644
--- a/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml
+++ b/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml
@@ -2,6 +2,6 @@
   - unless @service.activated?
     .row
       .col-sm-9.col-sm-offset-3
-        = link_to new_namespace_project_mattermost_path(@project.namespace, @project), class: 'btn btn-lg' do
+        = link_to new_project_mattermost_path(@project), class: 'btn btn-lg' do
           = custom_icon('mattermost_logo', size: 15)
           Add to Mattermost
diff --git a/app/views/projects/services/prometheus/_show.html.haml b/app/views/projects/services/prometheus/_show.html.haml
index c4ac384ca1a95f6f2c88460ef64dd40c8065303d..0996ec06ab7eca3c7d7a55edb14408bfd89d9379 100644
--- a/app/views/projects/services/prometheus/_show.html.haml
+++ b/app/views/projects/services/prometheus/_show.html.haml
@@ -11,7 +11,7 @@
       = link_to 'More information', '#'
 
   .col-lg-9
-    .panel.panel-default.js-panel-monitored-metrics{ data: { "active-metrics" => "#{namespace_project_prometheus_active_metrics_path(@project.namespace, @project, :json)}" } }
+    .panel.panel-default.js-panel-monitored-metrics{ data: { "active-metrics" => "#{project_prometheus_active_metrics_path(@project, :json)}" } }
       .panel-heading
         %h3.panel-title
           Monitored
diff --git a/app/views/projects/settings/_head.html.haml b/app/views/projects/settings/_head.html.haml
index 00bd563999f7acaa42933c5cd171ad3c094f0b4f..b5773acb5a4d15e2a368f9c0367f0ee1e4881d6e 100644
--- a/app/views/projects/settings/_head.html.haml
+++ b/app/views/projects/settings/_head.html.haml
@@ -19,16 +19,16 @@
               %span
                 Integrations
           = nav_link(controller: :repository) do
-            = link_to namespace_project_settings_repository_path(@project.namespace, @project), title: 'Repository' do
+            = link_to project_settings_repository_path(@project), title: 'Repository' do
               %span
                 Repository
           - if @project.feature_available?(:builds, current_user)
             = nav_link(controller: :ci_cd) do
-              = link_to namespace_project_settings_ci_cd_path(@project.namespace, @project), title: 'Pipelines' do
+              = link_to project_settings_ci_cd_path(@project), title: 'Pipelines' do
                 %span
                   Pipelines
           - if Gitlab.config.pages.enabled
             = nav_link(controller: :pages) do
-              = link_to namespace_project_pages_path(@project.namespace, @project), title: 'Pages' do
+              = link_to project_pages_path(@project), title: 'Pages' do
                 %span
                   Pages
diff --git a/app/views/projects/settings/integrations/_project_hook.html.haml b/app/views/projects/settings/integrations/_project_hook.html.haml
index a6640592dba1ec6b6ca8dacc1cfbdda8c194e791..00700e286c3bce93125e0950a6f8fe433c353a9f 100644
--- a/app/views/projects/settings/integrations/_project_hook.html.haml
+++ b/app/views/projects/settings/integrations/_project_hook.html.haml
@@ -9,8 +9,8 @@
     .col-md-4.col-lg-5.text-right-lg.prepend-top-5
       %span.append-right-10.inline
         SSL Verification: #{hook.enable_ssl_verification ? "enabled" : "disabled"}
-      = link_to "Edit", edit_namespace_project_hook_path(@project.namespace, @project, hook), class: "btn btn-sm"
-      = link_to "Test", test_namespace_project_hook_path(@project.namespace, @project, hook), class: "btn btn-sm"
-      = link_to namespace_project_hook_path(@project.namespace, @project, hook), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-transparent" do
+      = link_to "Edit", edit_project_hook_path(@project, hook), class: "btn btn-sm"
+      = link_to "Test", test_project_hook_path(@project, hook), class: "btn btn-sm"
+      = link_to project_hook_path(@project, hook), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-transparent" do
         %span.sr-only Remove
         = icon('trash')
diff --git a/app/views/projects/show.atom.builder b/app/views/projects/show.atom.builder
index ed34f5c052015295b6b4d9c94809a74f8cf8b277..39f8cb9a0e0f197699017b0c598b795498707d56 100644
--- a/app/views/projects/show.atom.builder
+++ b/app/views/projects/show.atom.builder
@@ -1,7 +1,7 @@
 xml.title   "#{@project.name} activity"
-xml.link    href: namespace_project_url(@project.namespace, @project, rss_url_options), rel: "self", type: "application/atom+xml"
-xml.link    href: namespace_project_url(@project.namespace, @project), rel: "alternate", type: "text/html"
-xml.id      namespace_project_url(@project.namespace, @project)
+xml.link    href: project_url(@project, rss_url_options), rel: "self", type: "application/atom+xml"
+xml.link    href: project_url(@project), rel: "alternate", type: "text/html"
+xml.id      project_url(@project)
 xml.updated @events[0].updated_at.xmlschema if @events[0]
 
 xml << render(@events) if @events.any?
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml
index 152e50a79bbe5c47a8cd36c8e129e11b20bd1aab..ea780b1cb83edc90cf822b792b3d101e549f6564 100644
--- a/app/views/projects/show.html.haml
+++ b/app/views/projects/show.html.haml
@@ -1,7 +1,7 @@
 - @no_container = true
 
 = content_for :meta_tags do
-  = auto_discovery_link_tag(:atom, namespace_project_path(@project.namespace, @project, rss_url_options), title: "#{@project.name} activity")
+  = auto_discovery_link_tag(:atom, project_path(@project, rss_url_options), title: "#{@project.name} activity")
 
 = content_for :flash_message do
   - if current_user && can?(current_user, :download_code, @project)
@@ -16,16 +16,16 @@
   %nav.project-stats{ class: container_class }
     %ul.nav
       %li
-        = link_to project_files_path(@project) do
+        = link_to project_tree_path(@project) do
           #{_('Files')} (#{storage_counter(@project.statistics.total_repository_size)})
       %li
-        = link_to namespace_project_commits_path(@project.namespace, @project, current_ref) do
+        = link_to project_commits_path(@project, current_ref) do
           #{n_('Commit', 'Commits', @project.statistics.commit_count)} (#{number_with_delimiter(@project.statistics.commit_count)})
       %li
-        = link_to namespace_project_branches_path(@project.namespace, @project) do
+        = link_to project_branches_path(@project) do
           #{n_('Branch', 'Branches', @repository.branch_count)} (#{number_with_delimiter(@repository.branch_count)})
       %li
-        = link_to namespace_project_tags_path(@project.namespace, @project) do
+        = link_to project_tags_path(@project) do
           #{n_('Tag', 'Tags', @repository.tag_count)} (#{number_with_delimiter(@repository.tag_count)})
 
       - if default_project_view != 'readme' && @repository.readme
diff --git a/app/views/projects/snippets/_actions.html.haml b/app/views/projects/snippets/_actions.html.haml
index 34ee4ff1937d254f14201a4f5bd4fb390f89efa4..f09871c7fcc918cdd1763b1a1afb0fd084c9064d 100644
--- a/app/views/projects/snippets/_actions.html.haml
+++ b/app/views/projects/snippets/_actions.html.haml
@@ -2,16 +2,16 @@
 
 .hidden-xs
   - if can?(current_user, :update_project_snippet, @snippet)
-    = link_to edit_namespace_project_snippet_path(@project.namespace, @project, @snippet), class: "btn btn-grouped" do
+    = link_to edit_project_snippet_path(@project, @snippet), class: "btn btn-grouped" do
       Edit
   - if can?(current_user, :update_project_snippet, @snippet)
-    = link_to namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-inverted btn-remove", title: 'Delete Snippet' do
+    = link_to project_snippet_path(@project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-inverted btn-remove", title: 'Delete Snippet' do
       Delete
   - if can?(current_user, :create_project_snippet, @project)
-    = link_to new_namespace_project_snippet_path(@project.namespace, @project), class: 'btn btn-grouped btn-inverted btn-create', title: "New snippet" do
+    = link_to new_project_snippet_path(@project), class: 'btn btn-grouped btn-inverted btn-create', title: "New snippet" do
       New snippet
   - if @snippet.submittable_as_spam_by?(current_user)
-    = link_to 'Submit as spam', mark_as_spam_namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :post, class: 'btn btn-grouped btn-spam', title: 'Submit as spam'
+    = link_to 'Submit as spam', mark_as_spam_project_snippet_path(@project, @snippet), method: :post, class: 'btn btn-grouped btn-spam', title: 'Submit as spam'
 - if can?(current_user, :create_project_snippet, @project) || can?(current_user, :update_project_snippet, @snippet)
   .visible-xs-block.dropdown
     %button.btn.btn-default.btn-block.append-bottom-0.prepend-top-5{ data: { toggle: "dropdown" } }
@@ -21,16 +21,16 @@
       %ul
         - if can?(current_user, :create_project_snippet, @project)
           %li
-            = link_to new_namespace_project_snippet_path(@project.namespace, @project), title: "New snippet" do
+            = link_to new_project_snippet_path(@project), title: "New snippet" do
               New snippet
         - if can?(current_user, :update_project_snippet, @snippet)
           %li
-            = link_to namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, title: 'Delete Snippet' do
+            = link_to project_snippet_path(@project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, title: 'Delete Snippet' do
               Delete
         - if can?(current_user, :update_project_snippet, @snippet)
           %li
-            = link_to edit_namespace_project_snippet_path(@project.namespace, @project, @snippet) do
+            = link_to edit_project_snippet_path(@project, @snippet) do
               Edit
         - if @snippet.submittable_as_spam_by?(current_user)
           %li
-            = link_to 'Submit as spam', mark_as_spam_namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :post
+            = link_to 'Submit as spam', mark_as_spam_project_snippet_path(@project, @snippet), method: :post
diff --git a/app/views/projects/snippets/edit.html.haml b/app/views/projects/snippets/edit.html.haml
index 24b92094b7d9010cd8918034970a0dcea2cec40a..d41cc8e0425a3ceeac7eb769ec603239a573a990 100644
--- a/app/views/projects/snippets/edit.html.haml
+++ b/app/views/projects/snippets/edit.html.haml
@@ -3,4 +3,4 @@
 %h3.page-title
   Edit Snippet
 %hr
-= render "shared/snippets/form", url: namespace_project_snippet_path(@project.namespace, @project, @snippet)
+= render "shared/snippets/form", url: project_snippet_path(@project, @snippet)
diff --git a/app/views/projects/snippets/index.html.haml b/app/views/projects/snippets/index.html.haml
index 84e05cd6d88b49c1fd34282af7dc47a6b03d09d2..4f8ce526c83b9c689596355d94a872517d80ab3d 100644
--- a/app/views/projects/snippets/index.html.haml
+++ b/app/views/projects/snippets/index.html.haml
@@ -7,13 +7,13 @@
 
     .nav-controls.hidden-xs
       - if can?(current_user, :create_project_snippet, @project)
-        = link_to new_namespace_project_snippet_path(@project.namespace, @project), class: "btn btn-new", title: "New snippet" do
+        = link_to new_project_snippet_path(@project), class: "btn btn-new", title: "New snippet" do
           New snippet
 
 - if can?(current_user, :create_project_snippet, @project)
   .visible-xs
     &nbsp;
-    = link_to new_namespace_project_snippet_path(@project.namespace, @project), class: "btn btn-new btn-block", title: "New snippet" do
+    = link_to new_project_snippet_path(@project), class: "btn btn-new btn-block", title: "New snippet" do
       New snippet
 
 = render 'snippets/snippets'
diff --git a/app/views/projects/snippets/new.html.haml b/app/views/projects/snippets/new.html.haml
index cfed3a79bc5b0187eeb5576d2479ab63130346ff..d3e6b456f48d99a0d723f5e16141dc523ea8c108 100644
--- a/app/views/projects/snippets/new.html.haml
+++ b/app/views/projects/snippets/new.html.haml
@@ -3,4 +3,4 @@
 %h3.page-title
   New Snippet
 %hr
-= render "shared/snippets/form", url: namespace_project_snippets_path(@project.namespace, @project, @snippet)
+= render "shared/snippets/form", url: project_snippets_path(@project, @snippet)
diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml
index 44cb734d7b9da9570483df8e44e1e4177dfa4f46..468ab922542fade72c6fc7b5bd59a59518b5dc76 100644
--- a/app/views/projects/tags/_tag.html.haml
+++ b/app/views/projects/tags/_tag.html.haml
@@ -2,7 +2,7 @@
 - release = @releases.find { |release| release.tag == tag.name }
 %li.flex-row
   .row-main-content.str-truncated
-    = link_to namespace_project_tag_path(@project.namespace, @project, tag.name), class: 'item-title ref-name' do
+    = link_to project_tag_path(@project, tag.name), class: 'item-title ref-name' do
       = icon('tag')
       = tag.name
 
@@ -29,9 +29,9 @@
     = render 'projects/buttons/download', project: @project, ref: tag.name, pipeline: @tags_pipelines[tag.name]
 
     - if can?(current_user, :push_code, @project)
-      = link_to edit_namespace_project_tag_release_path(@project.namespace, @project, tag.name), class: 'btn has-tooltip', title: "Edit release notes", data: { container: "body" } do
+      = link_to edit_project_tag_release_path(@project, tag.name), class: 'btn has-tooltip', title: "Edit release notes", data: { container: "body" } do
         = icon("pencil")
 
     - if can?(current_user, :admin_project, @project)
-      = link_to namespace_project_tag_path(@project.namespace, @project, tag.name), class: "btn btn-remove remove-row has-tooltip #{protected_tag?(@project, tag) ? 'disabled' : ''}", title: "Delete tag", method: :delete, data: { confirm: "Deleting the '#{tag.name}' tag cannot be undone. Are you sure?", container: 'body' }, remote: true do
+      = link_to project_tag_path(@project, tag.name), class: "btn btn-remove remove-row has-tooltip #{protected_tag?(@project, tag) ? 'disabled' : ''}", title: "Delete tag", method: :delete, data: { confirm: "Deleting the '#{tag.name}' tag cannot be undone. Are you sure?", container: 'body' }, remote: true do
         = icon("trash-o")
diff --git a/app/views/projects/tags/index.html.haml b/app/views/projects/tags/index.html.haml
index 56656ea3d8600e01a4be4c8966e70242b74a45c9..bf97cbc1f68a813d79ae1f1545284dffa107f681 100644
--- a/app/views/projects/tags/index.html.haml
+++ b/app/views/projects/tags/index.html.haml
@@ -24,7 +24,7 @@
             %li
               = link_to title, filter_tags_path(sort: value), class: ("is-active" if @sort == value)
       - if can?(current_user, :push_code, @project)
-        = link_to new_namespace_project_tag_path(@project.namespace, @project), class: 'btn btn-create new-tag-btn' do
+        = link_to new_project_tag_path(@project), class: 'btn btn-create new-tag-btn' do
           New tag
 
   .tags
diff --git a/app/views/projects/tags/new.html.haml b/app/views/projects/tags/new.html.haml
index 52af295bddd8ffd5276c9f1a13d4fcdbba480b0d..f1bbaf40387743dfb2792fcc2db785fbcbb46b48 100644
--- a/app/views/projects/tags/new.html.haml
+++ b/app/views/projects/tags/new.html.haml
@@ -39,7 +39,7 @@
       .help-block Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page.
   .form-actions
     = button_tag 'Create tag', class: 'btn btn-create', tabindex: 3
-    = link_to 'Cancel', namespace_project_tags_path(@project.namespace, @project), class: 'btn btn-cancel'
+    = link_to 'Cancel', project_tags_path(@project), class: 'btn btn-cancel'
 
 :javascript
   window.gl = window.gl || { };
diff --git a/app/views/projects/tags/show.html.haml b/app/views/projects/tags/show.html.haml
index 2b81ce4b9fa9234312aeb24ba9208c932b1014f8..d02cd70f4c389a765a79ff6616fd5218d8f9cb4b 100644
--- a/app/views/projects/tags/show.html.haml
+++ b/app/views/projects/tags/show.html.haml
@@ -19,17 +19,17 @@
 
     .nav-controls.controls-flex
       - if can?(current_user, :push_code, @project)
-        = link_to edit_namespace_project_tag_release_path(@project.namespace, @project, @tag.name), class: 'btn controls-item has-tooltip', title: 'Edit release notes' do
+        = link_to edit_project_tag_release_path(@project, @tag.name), class: 'btn controls-item has-tooltip', title: 'Edit release notes' do
           = icon("pencil")
-      = link_to namespace_project_tree_path(@project.namespace, @project, @tag.name), class: 'btn controls-item has-tooltip', title: 'Browse files' do
+      = link_to project_tree_path(@project, @tag.name), class: 'btn controls-item has-tooltip', title: 'Browse files' do
         = icon('files-o')
-      = link_to namespace_project_commits_path(@project.namespace, @project, @tag.name), class: 'btn controls-item has-tooltip', title: 'Browse commits' do
+      = link_to project_commits_path(@project, @tag.name), class: 'btn controls-item has-tooltip', title: 'Browse commits' do
         = icon('history')
       .btn-container.controls-item
         = render 'projects/buttons/download', project: @project, ref: @tag.name
       - if can?(current_user, :admin_project, @project)
         .btn-container.controls-item-full
-          = link_to namespace_project_tag_path(@project.namespace, @project, @tag.name), class: "btn btn-remove remove-row has-tooltip #{protected_tag?(@project, @tag) ? 'disabled' : ''}", title: "Delete tag", method: :delete, data: { confirm: "Deleting the '#{@tag.name}' tag cannot be undone. Are you sure?" } do
+          = link_to project_tag_path(@project, @tag.name), class: "btn btn-remove remove-row has-tooltip #{protected_tag?(@project, @tag) ? 'disabled' : ''}", title: "Delete tag", method: :delete, data: { confirm: "Deleting the '#{@tag.name}' tag cannot be undone. Are you sure?" } do
             %i.fa.fa-trash-o
 
     - if @tag.message.present?
diff --git a/app/views/projects/transfer.js.haml b/app/views/projects/transfer.js.haml
index 17b9fecfeb162f8f3ac88523a7fbe336c4d46516..6d083c5c5169bcacfb847a76bc9ecf9c1334b04b 100644
--- a/app/views/projects/transfer.js.haml
+++ b/app/views/projects/transfer.js.haml
@@ -1,2 +1,2 @@
 :plain
-    location.href = "#{edit_namespace_project_path(@project.namespace, @project)}";
+    location.href = "#{edit_project_path(@project)}";
diff --git a/app/views/projects/tree/_blob_item.html.haml b/app/views/projects/tree/_blob_item.html.haml
index 425b460eb093a7af430a3925e5cdc7a82dac4c8f..fd8175e1e018f11e95692316c6db70c9acc17df7 100644
--- a/app/views/projects/tree/_blob_item.html.haml
+++ b/app/views/projects/tree/_blob_item.html.haml
@@ -2,7 +2,7 @@
   %td.tree-item-file-name
     = tree_icon(type, blob_item.mode, blob_item.name)
     - file_name = blob_item.name
-    = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@id || @commit.id, blob_item.name)), title: file_name do
+    = link_to project_blob_path(@project, tree_join(@id || @commit.id, blob_item.name)), title: file_name do
       %span.str-truncated= file_name
   %td.hidden-xs.tree-commit
   %td.tree-time-ago.cgray.text-right
diff --git a/app/views/projects/tree/_readme.html.haml b/app/views/projects/tree/_readme.html.haml
index f914781542754ba7972610363deab958e8d00b8e..4579a912f39c98a8ecbfe01e39b38d2884b7bfc9 100644
--- a/app/views/projects/tree/_readme.html.haml
+++ b/app/views/projects/tree/_readme.html.haml
@@ -2,8 +2,8 @@
   %article.file-holder.readme-holder{ class: ("limited-width-container" unless fluid_layout) }
     .js-file-title.file-title
       = blob_icon readme.mode, readme.name
-      = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@ref, readme.path)) do
+      = link_to project_blob_path(@project, tree_join(@ref, readme.path)) do
         %strong
           = readme.name
 
-    = render 'projects/blob/viewer', viewer: readme.rich_viewer, viewer_url: namespace_project_blob_path(@project.namespace, @project, tree_join(@ref, readme.path), viewer: :rich, format: :json)
+    = render 'projects/blob/viewer', viewer: readme.rich_viewer, viewer_url: project_blob_path(@project, tree_join(@ref, readme.path), viewer: :rich, format: :json)
diff --git a/app/views/projects/tree/_tree_commit_column.html.haml b/app/views/projects/tree/_tree_commit_column.html.haml
index 84da16b6bb15fbfc0125c3159612deeb9de93284..f3d4706809f2cb2b22a93a422564901c85d3f259 100644
--- a/app/views/projects/tree/_tree_commit_column.html.haml
+++ b/app/views/projects/tree/_tree_commit_column.html.haml
@@ -1,2 +1,2 @@
 %span.str-truncated
-  = link_to_gfm commit.full_title, namespace_project_commit_path(@project.namespace, @project, commit.id), class: "tree-commit-link"
+  = link_to_gfm commit.full_title, project_commit_path(@project, commit.id), class: "tree-commit-link"
diff --git a/app/views/projects/tree/_tree_content.html.haml b/app/views/projects/tree/_tree_content.html.haml
index 7854e1305dbf411914d0818ceabe14dd1637c984..6560bd5ab3fbef2f976cc5058e461a39ebf0d28d 100644
--- a/app/views/projects/tree/_tree_content.html.haml
+++ b/app/views/projects/tree/_tree_content.html.haml
@@ -10,7 +10,7 @@
       - if @path.present?
         %tr.tree-item
           %td.tree-item-file-name
-            = link_to "..", namespace_project_tree_path(@project.namespace, @project, up_dir_path), class: 'prepend-left-10'
+            = link_to "..", project_tree_path(@project, up_dir_path), class: 'prepend-left-10'
           %td
           %td.hidden-xs
 
@@ -20,7 +20,7 @@
     = render "projects/tree/readme", readme: tree.readme
 
 - if can_edit_tree?
-  = render 'projects/blob/upload', title: _('Upload New File'), placeholder: _('Upload New File'), button_title: _('Upload file'), form_path: namespace_project_create_blob_path(@project.namespace, @project, @id), method: :post
+  = render 'projects/blob/upload', title: _('Upload New File'), placeholder: _('Upload New File'), button_title: _('Upload file'), form_path: project_create_blob_path(@project, @id), method: :post
   = render 'projects/blob/new_dir'
 
 :javascript
diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml
index 00da76349dad1617c6ebd56f7feeb9d0ef8a83e8..858418ff8df7bb084eae9ed9fd9fee4393ef26aa 100644
--- a/app/views/projects/tree/_tree_header.html.haml
+++ b/app/views/projects/tree/_tree_header.html.haml
@@ -4,11 +4,11 @@
 
   %ul.breadcrumb.repo-breadcrumb
     %li
-      = link_to namespace_project_tree_path(@project.namespace, @project, @ref) do
+      = link_to project_tree_path(@project, @ref) do
         = @project.path
     - path_breadcrumbs do |title, path|
       %li
-        = link_to truncate(title, length: 40), namespace_project_tree_path(@project.namespace, @project, tree_join(@ref, path))
+        = link_to truncate(title, length: 40), project_tree_path(@project, tree_join(@ref, path))
 
     - if current_user
       %li
@@ -23,7 +23,7 @@
             %ul.dropdown-menu
               - if can_edit_tree?
                 %li
-                  = link_to namespace_project_new_blob_path(@project.namespace, @project, @id) do
+                  = link_to project_new_blob_path(@project, @id) do
                     = icon('pencil fw')
                     #{ _('New file') }
                 %li
@@ -36,10 +36,10 @@
                     #{ _('New directory') }
               - elsif can?(current_user, :fork_project, @project)
                 %li
-                  - continue_params = { to:         namespace_project_new_blob_path(@project.namespace, @project, @id),
+                  - continue_params = { to:         project_new_blob_path(@project, @id),
                                         notice:     edit_in_new_fork_notice,
                                         notice_now: edit_in_new_fork_notice_now }
-                  - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key:  current_user.namespace.id,
+                  - fork_path = project_forks_path(@project, namespace_key:  current_user.namespace.id,
                                                                                           continue:       continue_params)
                   = link_to fork_path, method: :post do
                     = icon('pencil fw')
@@ -48,7 +48,7 @@
                   - continue_params = { to:         request.fullpath,
                                         notice:     edit_in_new_fork_notice + " Try to upload a file again.",
                                         notice_now: edit_in_new_fork_notice_now }
-                  - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key:  current_user.namespace.id,
+                  - fork_path = project_forks_path(@project, namespace_key:  current_user.namespace.id,
                                                                                           continue:       continue_params)
                   = link_to fork_path, method: :post do
                     = icon('file fw')
@@ -57,7 +57,7 @@
                   - continue_params = { to:         request.fullpath,
                                         notice:     edit_in_new_fork_notice + " Try to create a new directory again.",
                                         notice_now: edit_in_new_fork_notice_now }
-                  - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key:  current_user.namespace.id,
+                  - fork_path = project_forks_path(@project, namespace_key:  current_user.namespace.id,
                                                                                           continue:       continue_params)
                   = link_to fork_path, method: :post do
                     = icon('folder fw')
@@ -65,17 +65,17 @@
 
               %li.divider
               %li
-                = link_to new_namespace_project_branch_path(@project.namespace, @project) do
+                = link_to new_project_branch_path(@project) do
                   = icon('code-fork fw')
                   #{ _('New branch') }
               %li
-                = link_to new_namespace_project_tag_path(@project.namespace, @project) do
+                = link_to new_project_tag_path(@project) do
                   = icon('tags fw')
                   #{ _('New tag') }
 
 .tree-controls
   = render 'projects/find_file_link'
 
-  = link_to s_('Commits|History'), namespace_project_commits_path(@project.namespace, @project, @id), class: 'btn'
+  = link_to s_('Commits|History'), project_commits_path(@project, @id), class: 'btn'
 
   = render 'projects/buttons/download', project: @project, ref: @ref
diff --git a/app/views/projects/tree/_tree_item.html.haml b/app/views/projects/tree/_tree_item.html.haml
index 15c9536133cd24b62924d0e2a20b8d6cd35f4572..0c9c8750f2ca7bb82880ef55d33bdd5c2ce05627 100644
--- a/app/views/projects/tree/_tree_item.html.haml
+++ b/app/views/projects/tree/_tree_item.html.haml
@@ -2,7 +2,7 @@
   %td.tree-item-file-name
     = tree_icon(type, tree_item.mode, tree_item.name)
     - path = flatten_tree(tree_item)
-    = link_to namespace_project_tree_path(@project.namespace, @project, tree_join(@id || @commit.id, path)), title: path do
+    = link_to project_tree_path(@project, tree_join(@id || @commit.id, path)), title: path do
       %span.str-truncated= path
   %td.hidden-xs.tree-commit
   %td.tree-time-ago.text-right
diff --git a/app/views/projects/tree/show.html.haml b/app/views/projects/tree/show.html.haml
index 96a08f9f8be14f99efbe8ae6a1724c7e64564669..3fb247c5ceb4399b33277ea5ed18307e0dac4a29 100644
--- a/app/views/projects/tree/show.html.haml
+++ b/app/views/projects/tree/show.html.haml
@@ -2,7 +2,7 @@
 
 - page_title @path.presence || _("Files"), @ref
 = content_for :meta_tags do
-  = auto_discovery_link_tag(:atom, namespace_project_commits_url(@project.namespace, @project, @ref, rss_url_options), title: "#{@project.name}:#{@ref} commits")
+  = auto_discovery_link_tag(:atom, project_commits_url(@project, @ref, rss_url_options), title: "#{@project.name}:#{@ref} commits")
 = render "projects/commits/head"
 
 = render 'projects/last_push'
diff --git a/app/views/projects/triggers/_trigger.html.haml b/app/views/projects/triggers/_trigger.html.haml
index 9b5f63ae81a5c5c5f4ca7fa017123d4a57d46229..6249c32b7cc570796feb9cd0f2a8a3358924c602 100644
--- a/app/views/projects/triggers/_trigger.html.haml
+++ b/app/views/projects/triggers/_trigger.html.haml
@@ -33,10 +33,10 @@
     - take_ownership_confirmation = "By taking ownership you will bind this trigger to your user account. With this the trigger will have access to all your projects as if it was you. Are you sure?"
     - revoke_trigger_confirmation = "By revoking a trigger you will break any processes making use of it. Are you sure?"
     - if trigger.owner != current_user && can?(current_user, :manage_trigger, trigger)
-      = link_to 'Take ownership', take_ownership_namespace_project_trigger_path(@project.namespace, @project, trigger), data: { confirm: take_ownership_confirmation }, method: :post, class: "btn btn-default btn-sm btn-trigger-take-ownership"
+      = link_to 'Take ownership', take_ownership_project_trigger_path(@project, trigger), data: { confirm: take_ownership_confirmation }, method: :post, class: "btn btn-default btn-sm btn-trigger-take-ownership"
     - if can?(current_user, :admin_trigger, trigger)
-      = link_to edit_namespace_project_trigger_path(@project.namespace, @project, trigger), method: :get, title: "Edit", class: "btn btn-default btn-sm" do
+      = link_to edit_project_trigger_path(@project, trigger), method: :get, title: "Edit", class: "btn btn-default btn-sm" do
         %i.fa.fa-pencil
     - if can?(current_user, :manage_trigger, trigger)
-      = link_to namespace_project_trigger_path(@project.namespace, @project, trigger), data: { confirm: revoke_trigger_confirmation }, method: :delete, title: "Revoke", class: "btn btn-default btn-warning btn-sm btn-trigger-revoke" do
+      = link_to project_trigger_path(@project, trigger), data: { confirm: revoke_trigger_confirmation }, method: :delete, title: "Revoke", class: "btn btn-default btn-warning btn-sm btn-trigger-revoke" do
         %i.fa.fa-trash
diff --git a/app/views/projects/update.js.haml b/app/views/projects/update.js.haml
index dcf1f767bf7967a8c4f9ab97bb1ea94b211c2c5e..2c05ebe52ae028839c067839295418e72e2085c2 100644
--- a/app/views/projects/update.js.haml
+++ b/app/views/projects/update.js.haml
@@ -1,6 +1,6 @@
 - if @project.valid?
   :plain
-    location.href = "#{edit_namespace_project_path(@project.namespace, @project)}";
+    location.href = "#{edit_project_path(@project)}";
 - else
   :plain
     $(".project-edit-errors").html("#{escape_javascript(render('errors'))}");
diff --git a/app/views/projects/variables/_table.html.haml b/app/views/projects/variables/_table.html.haml
index 59cd3c4b59271b3fc1b55ffbded5cfe866b062ed..4ce6a82881218cd0929d75a2a676ea7ab46fcf83 100644
--- a/app/views/projects/variables/_table.html.haml
+++ b/app/views/projects/variables/_table.html.haml
@@ -18,11 +18,11 @@
             %td.variable-value{ "data-value" => variable.value }******
             %td.variable-protected= Gitlab::Utils.boolean_to_yes_no(variable.protected)
             %td.variable-menu
-              = link_to namespace_project_variable_path(@project.namespace, @project, variable), class: "btn btn-transparent btn-variable-edit" do
+              = link_to project_variable_path(@project, variable), class: "btn btn-transparent btn-variable-edit" do
                 %span.sr-only
                   Update
                 = icon("pencil")
-              = link_to namespace_project_variable_path(@project.namespace, @project, variable), class: "btn btn-transparent btn-variable-delete", method: :delete, data: { confirm: "Are you sure?" } do
+              = link_to project_variable_path(@project, variable), class: "btn btn-transparent btn-variable-delete", method: :delete, data: { confirm: "Are you sure?" } do
                 %span.sr-only
                   Remove
                 = icon("trash")
diff --git a/app/views/projects/wikis/_form.html.haml b/app/views/projects/wikis/_form.html.haml
index c10b3004bc30665b8b94a21f0e46da5afdf649f1..fc6b7a3394319bde8eca8c7436be153a9dc4d46a 100644
--- a/app/views/projects/wikis/_form.html.haml
+++ b/app/views/projects/wikis/_form.html.haml
@@ -12,7 +12,7 @@
   .form-group
     .col-sm-12= f.label :content, class: 'control-label-full-width'
     .col-sm-12
-      = render layout: 'projects/md_preview', locals: { url: namespace_project_wiki_preview_markdown_path(@project.namespace, @project, @page.slug) } do
+      = render layout: 'projects/md_preview', locals: { url: project_wiki_preview_markdown_path(@project, @page.slug) } do
         = render 'projects/zen', f: f, attr: :content, classes: 'note-textarea', placeholder: 'Write your content or drag files here...'
         = render 'shared/notes/hints'
 
@@ -36,8 +36,8 @@
     - if @page && @page.persisted?
       = f.submit 'Save changes', class: "btn-save btn"
       .pull-right
-        = link_to "Cancel", namespace_project_wiki_path(@project.namespace, @project, @page), class: "btn btn-cancel btn-grouped"
+        = link_to "Cancel", project_wiki_path(@project, @page), class: "btn btn-cancel btn-grouped"
     - else
       = f.submit 'Create page', class: "btn-create btn"
       .pull-right
-        = link_to "Cancel", namespace_project_wiki_path(@project.namespace, @project, :home), class: "btn btn-cancel"
+        = link_to "Cancel", project_wiki_path(@project, :home), class: "btn btn-cancel"
diff --git a/app/views/projects/wikis/_main_links.html.haml b/app/views/projects/wikis/_main_links.html.haml
index 6a578dbf640d660e11980efcc1732f1186d459d3..3bbd8042c3a4b906fdd3380a355736952677cb60 100644
--- a/app/views/projects/wikis/_main_links.html.haml
+++ b/app/views/projects/wikis/_main_links.html.haml
@@ -2,8 +2,8 @@
   - if can?(current_user, :create_wiki, @project)
     = link_to '#modal-new-wiki', class: "add-new-wiki btn btn-new", "data-toggle" => "modal" do
       New page
-  = link_to namespace_project_wiki_history_path(@project.namespace, @project, @page), class: "btn" do
+  = link_to project_wiki_history_path(@project, @page), class: "btn" do
     Page history
   - if can?(current_user, :create_wiki, @project) && @page.latest?
-    = link_to namespace_project_wiki_edit_path(@project.namespace, @project, @page), class: "btn js-wiki-edit" do
+    = link_to project_wiki_edit_path(@project, @page), class: "btn js-wiki-edit" do
       Edit
diff --git a/app/views/projects/wikis/_new.html.haml b/app/views/projects/wikis/_new.html.haml
index 1e553940593e531a158e48562ab53fe2a5c48cb6..13dd8461433a829dddf84c0cd007fef4243b03af 100644
--- a/app/views/projects/wikis/_new.html.haml
+++ b/app/views/projects/wikis/_new.html.haml
@@ -9,7 +9,7 @@
           .form-group
             = label_tag :new_wiki_path do
               %span Page slug
-            = text_field_tag :new_wiki_path, nil, placeholder: 'how-to-setup', class: 'form-control', required: true, :'data-wikis-path' => namespace_project_wikis_path(@project.namespace, @project), autofocus: true
+            = text_field_tag :new_wiki_path, nil, placeholder: 'how-to-setup', class: 'form-control', required: true, :'data-wikis-path' => project_wikis_path(@project), autofocus: true
             %span.new-wiki-page-slug-tip
               = icon('lightbulb-o')
               Tip: You can specify the full path for the new file.
diff --git a/app/views/projects/wikis/_pages_wiki_page.html.haml b/app/views/projects/wikis/_pages_wiki_page.html.haml
index 6298cf6c8dafc6365c5d15fb2b9f612da34ca33a..7c2f562d4228fec0e75b60465770577c4ba335f1 100644
--- a/app/views/projects/wikis/_pages_wiki_page.html.haml
+++ b/app/views/projects/wikis/_pages_wiki_page.html.haml
@@ -1,5 +1,5 @@
 %li
-  = link_to wiki_page.title, namespace_project_wiki_path(@project.namespace, @project, wiki_page)
+  = link_to wiki_page.title, project_wiki_path(@project, wiki_page)
   %small (#{wiki_page.format})
   .pull-right
     %small Last edited #{time_ago_with_tooltip(wiki_page.commit.authored_date)}
diff --git a/app/views/projects/wikis/_sidebar.html.haml b/app/views/projects/wikis/_sidebar.html.haml
index c2f9e65015d249edc5a1ae7b36df033dabdcfd01..62873d3aa66c7a02d5e0c23b363b7c994247dced 100644
--- a/app/views/projects/wikis/_sidebar.html.haml
+++ b/app/views/projects/wikis/_sidebar.html.haml
@@ -3,7 +3,7 @@
     %a.gutter-toggle.pull-right.visible-xs-block.visible-sm-block.js-sidebar-wiki-toggle{ href: "#" }
       = icon('angle-double-right')
 
-    - git_access_url = namespace_project_wikis_git_access_path(@project.namespace, @project)
+    - git_access_url = project_wikis_git_access_path(@project)
     = link_to git_access_url, class: active_nav_link?(path: 'wikis#git_access') ? 'active' : '' do
       = succeed '&nbsp;' do
         = icon('cloud-download')
@@ -15,7 +15,7 @@
         = render @sidebar_wiki_entries, context: 'sidebar'
 
     .block
-      = link_to namespace_project_wikis_pages_path(@project.namespace, @project), class: 'btn btn-block' do
+      = link_to project_wikis_pages_path(@project), class: 'btn btn-block' do
         More Pages
 
 = render 'projects/wikis/new'
diff --git a/app/views/projects/wikis/_sidebar_wiki_page.html.haml b/app/views/projects/wikis/_sidebar_wiki_page.html.haml
index 0a61d90177be98cea964d2a1116c2ff1c91cadfe..2423ac6abcee21a4173cf620819ce55b0404a08f 100644
--- a/app/views/projects/wikis/_sidebar_wiki_page.html.haml
+++ b/app/views/projects/wikis/_sidebar_wiki_page.html.haml
@@ -1,3 +1,3 @@
 %li{ class: active_when(params[:id] == wiki_page.slug) }
-  = link_to namespace_project_wiki_path(@project.namespace, @project, wiki_page) do
+  = link_to project_wiki_path(@project, wiki_page) do
     = wiki_page.title.capitalize
diff --git a/app/views/projects/wikis/edit.html.haml b/app/views/projects/wikis/edit.html.haml
index fbe192a40ec5c877c3d712cfc608fdfd0e0c8f94..df0ec14eb3b6e769dcb13e287ae64d29d418f6d7 100644
--- a/app/views/projects/wikis/edit.html.haml
+++ b/app/views/projects/wikis/edit.html.haml
@@ -8,7 +8,7 @@
   .nav-text
     %h2.wiki-page-title
       - if @page.persisted?
-        = link_to @page.title.capitalize, namespace_project_wiki_path(@project.namespace, @project, @page)
+        = link_to @page.title.capitalize, project_wiki_path(@project, @page)
       - else
         = @page.title.capitalize
       %span.light
@@ -23,10 +23,10 @@
       = link_to '#modal-new-wiki', class: "add-new-wiki btn btn-new", "data-toggle" => "modal" do
         New page
     - if @page.persisted?
-      = link_to namespace_project_wiki_history_path(@project.namespace, @project, @page), class: "btn" do
+      = link_to project_wiki_history_path(@project, @page), class: "btn" do
         Page history
       - if can?(current_user, :admin_wiki, @project)
-        = link_to namespace_project_wiki_path(@project.namespace, @project, @page), data: { confirm: "Are you sure you want to delete this page?"}, method: :delete, class: "btn btn-danger" do
+        = link_to project_wiki_path(@project, @page), data: { confirm: "Are you sure you want to delete this page?"}, method: :delete, class: "btn btn-danger" do
           Delete
 
 = render 'form'
diff --git a/app/views/projects/wikis/history.html.haml b/app/views/projects/wikis/history.html.haml
index 0e47e2a5fa370d975e826c53206ffddf4fa62899..306feeff259016b09b02a09510d7033494f3fab6 100644
--- a/app/views/projects/wikis/history.html.haml
+++ b/app/views/projects/wikis/history.html.haml
@@ -6,7 +6,7 @@
 
   .nav-text
     %h2.wiki-page-title
-      = link_to @page.title.capitalize, namespace_project_wiki_path(@project.namespace, @project, @page)
+      = link_to @page.title.capitalize, project_wiki_path(@project, @page)
       %span.light
         &middot;
         History
diff --git a/app/views/projects/wikis/pages.html.haml b/app/views/projects/wikis/pages.html.haml
index 5fba2b1a5ae31e5b548e0a8510affcdef16537f4..dece1fad0bb75769904b20cbfebf0fe75d043643 100644
--- a/app/views/projects/wikis/pages.html.haml
+++ b/app/views/projects/wikis/pages.html.haml
@@ -9,7 +9,7 @@
         Wiki Pages
 
     .nav-controls
-      = link_to namespace_project_wikis_git_access_path(@project.namespace, @project), class: 'btn' do
+      = link_to project_wikis_git_access_path(@project), class: 'btn' do
         = icon('cloud-download')
         Clone repository
 
diff --git a/app/views/projects/wikis/show.html.haml b/app/views/projects/wikis/show.html.haml
index f003ff6b63fff987c5b6714b611db62f15713785..13591dd8e74c2d2883112b0673814188ae304b2b 100644
--- a/app/views/projects/wikis/show.html.haml
+++ b/app/views/projects/wikis/show.html.haml
@@ -22,7 +22,7 @@
 - if @page.historical?
   .warning_message
     This is an old version of this page.
-    You can view the #{link_to "most recent version", namespace_project_wiki_path(@project.namespace, @project, @page)} or browse the #{link_to "history", namespace_project_wiki_history_path(@project.namespace, @project, @page)}.
+    You can view the #{link_to "most recent version", project_wiki_path(@project, @page)} or browse the #{link_to "history", project_wiki_history_path(@project, @page)}.
 
 .wiki-holder.prepend-top-default.append-bottom-default
   .wiki
diff --git a/app/views/search/results/_blob.html.haml b/app/views/search/results/_blob.html.haml
index 7f1f807e2e7724a0adf53e02d747fc3ecfb57aa5..de473c23d666213ba72da973a0071facb27c2e76 100644
--- a/app/views/search/results/_blob.html.haml
+++ b/app/views/search/results/_blob.html.haml
@@ -3,7 +3,7 @@
   .file-holder
     .js-file-title.file-title
       - ref = @search_results.repository_ref
-      - blob_link = namespace_project_blob_path(@project.namespace, @project, tree_join(ref, file_name))
+      - blob_link = project_blob_path(@project, tree_join(ref, file_name))
       = link_to blob_link do
         %i.fa.fa-file
         %strong
diff --git a/app/views/search/results/_snippet_title.html.haml b/app/views/search/results/_snippet_title.html.haml
index 026f404ce072dd1a1717a4e5925486fff1394283..aef825691e07c19bd6a17fdc35d12758133af01b 100644
--- a/app/views/search/results/_snippet_title.html.haml
+++ b/app/views/search/results/_snippet_title.html.haml
@@ -11,7 +11,7 @@
 
   %small.pull-right.cgray
     - if snippet_title.project_id?
-      = link_to snippet_title.project.name_with_namespace, namespace_project_path(snippet_title.project.namespace, snippet_title.project)
+      = link_to snippet_title.project.name_with_namespace, project_path(snippet_title.project)
 
   .snippet-info
     = snippet_title.to_reference
diff --git a/app/views/search/results/_wiki_blob.html.haml b/app/views/search/results/_wiki_blob.html.haml
index d87f9df26773f057a413b713ffc9ecfa0bb81225..16a0e432d62343f61bc605b033233c5268870628 100644
--- a/app/views/search/results/_wiki_blob.html.haml
+++ b/app/views/search/results/_wiki_blob.html.haml
@@ -2,7 +2,7 @@
 .blob-result
   .file-holder
     .js-file-title.file-title
-      = link_to namespace_project_wiki_path(@project.namespace, @project, wiki_blob.basename) do
+      = link_to project_wiki_path(@project, wiki_blob.basename) do
         %i.fa.fa-file
         %strong
           = wiki_blob.basename
diff --git a/app/views/shared/_label.html.haml b/app/views/shared/_label.html.haml
index de0281e97c6f965e7eb99254870ad8ee7a9267dc..2f776a17f45dccf64e6c5d08d592d50f52520611 100644
--- a/app/views/shared/_label.html.haml
+++ b/app/views/shared/_label.html.haml
@@ -23,7 +23,7 @@
             - if can_subscribe_to_label_in_different_levels?(label)
               %a.js-unsubscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' if status.unsubscribed?), data: { url: toggle_subscription_path } }
                 %span Unsubscribe
-              %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_namespace_project_label_path(@project.namespace, @project, label) } }
+              %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_project_label_path(@project, label) } }
                 %span Subscribe at project level
               %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_group_label_path(label.group, label) } }
                 %span Subscribe at group level
@@ -56,7 +56,7 @@
               = icon('chevron-down')
             %ul.dropdown-menu
               %li
-                %a.js-subscribe-button{ class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_namespace_project_label_path(@project.namespace, @project, label) } }
+                %a.js-subscribe-button{ class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_project_label_path(@project, label) } }
                   Project level
                 %a.js-subscribe-button{ class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_group_label_path(label.group, label) } }
                   Group level
@@ -66,7 +66,7 @@
             = icon('spinner spin', class: 'label-subscribe-button-loading')
 
     - if label.is_a?(ProjectLabel) && label.project.group && can?(current_user, :admin_label, label.project.group)
-      = link_to promote_namespace_project_label_path(label.project.namespace, label.project, label), title: "Promote to Group Label", class: 'btn btn-transparent btn-action', data: {confirm: "Promoting this label will make this label available to all projects inside this group. Existing project labels with the same name will be merged. Are you sure?", toggle: "tooltip"}, method: :post do
+      = link_to promote_project_label_path(label.project, label), title: "Promote to Group Label", class: 'btn btn-transparent btn-action', data: {confirm: "Promoting this label will make this label available to all projects inside this group. Existing project labels with the same name will be merged. Are you sure?", toggle: "tooltip"}, method: :post do
         %span.sr-only Promote to Group
         = icon('level-up')
     - if can?(current_user, :admin_label, label)
diff --git a/app/views/shared/_label_row.html.haml b/app/views/shared/_label_row.html.haml
index 7b599dff0e3a74cb2564b8560d9d8d49680b65d4..7f58298c60fc70ab7c2f85fffa615c534d844b5b 100644
--- a/app/views/shared/_label_row.html.haml
+++ b/app/views/shared/_label_row.html.haml
@@ -2,7 +2,7 @@
   - if can?(current_user, :admin_label, @project)
     .draggable-handler
       = icon('bars')
-    .js-toggle-priority.toggle-priority{ data: { url: remove_priority_namespace_project_label_path(@project.namespace, @project, label),
+    .js-toggle-priority.toggle-priority{ data: { url: remove_priority_project_label_path(@project, label),
       dom_id: dom_id(label), type: label.type } }
       %button.add-priority.btn.has-tooltip{ title: 'Prioritize', type: 'button', :'data-placement' => 'top' }
         = icon('star-o')
diff --git a/app/views/shared/_mini_pipeline_graph.html.haml b/app/views/shared/_mini_pipeline_graph.html.haml
index aa93572bf9437a1f27baee17954f1ef8628d73bc..dff847159d3c5d973a3e1aff6ad275fa0c7020b4 100644
--- a/app/views/shared/_mini_pipeline_graph.html.haml
+++ b/app/views/shared/_mini_pipeline_graph.html.haml
@@ -6,7 +6,7 @@
       - status_klass = "ci-status-icon ci-status-icon-#{detailed_status.group}"
 
       .stage-container.dropdown{ class: klass }
-        %button.mini-pipeline-graph-dropdown-toggle.has-tooltip.js-builds-dropdown-button{ class: "ci-status-icon-#{detailed_status.group}", type: 'button', data: { toggle: 'dropdown', title: "#{stage.name}: #{detailed_status.label}", placement: 'top', "stage-endpoint" => stage_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline, stage: stage.name) } }
+        %button.mini-pipeline-graph-dropdown-toggle.has-tooltip.js-builds-dropdown-button{ class: "ci-status-icon-#{detailed_status.group}", type: 'button', data: { toggle: 'dropdown', title: "#{stage.name}: #{detailed_status.label}", placement: 'top', "stage-endpoint" => stage_project_pipeline_path(pipeline.project, pipeline, stage: stage.name) } }
           = custom_icon(icon_status)
           = icon('caret-down')
 
diff --git a/app/views/shared/_ref_switcher.html.haml b/app/views/shared/_ref_switcher.html.haml
index d52bb6b4dd792bf953aa7ddabe84e692d39e6a9b..4498c8f83493810b9c666d72db46daa93b315077 100644
--- a/app/views/shared/_ref_switcher.html.haml
+++ b/app/views/shared/_ref_switcher.html.haml
@@ -1,12 +1,12 @@
 - dropdown_toggle_text = @ref || @project.default_branch
-= form_tag switch_namespace_project_refs_path(@project.namespace, @project), method: :get, class: "project-refs-form" do
+= form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form" do
   = hidden_field_tag :destination, destination
   - if defined?(path)
     = hidden_field_tag :path, path
   - @options && @options.each do |key, value|
     = hidden_field_tag key, value, id: nil
   .dropdown
-    = dropdown_toggle dropdown_toggle_text, { toggle: "dropdown", selected: dropdown_toggle_text, ref: @ref, refs_url: refs_namespace_project_path(@project.namespace, @project), field_name: 'ref', submit_form_on_click: true }, { toggle_class: "js-project-refs-dropdown" }
+    = dropdown_toggle dropdown_toggle_text, { toggle: "dropdown", selected: dropdown_toggle_text, ref: @ref, refs_url: refs_project_path(@project), field_name: 'ref', submit_form_on_click: true }, { toggle_class: "js-project-refs-dropdown" }
     .dropdown-menu.dropdown-menu-selectable.git-revision-dropdown{ class: ("dropdown-menu-align-right" if local_assigns[:align_right]) }
       = dropdown_title _("Switch branch/tag")
       = dropdown_filter _("Search branches and tags")
diff --git a/app/views/shared/empty_states/_labels.html.haml b/app/views/shared/empty_states/_labels.html.haml
index 5e2f4cf109ded6a4d8cf0a1fc968a79a16b29e67..bfda522f2f66f397df3379c2bf63dfb42b1644de 100644
--- a/app/views/shared/empty_states/_labels.html.haml
+++ b/app/views/shared/empty_states/_labels.html.haml
@@ -7,5 +7,5 @@
       %h4 Labels can be applied to issues and merge requests to categorize them.
       %p You can also star a label to make it a priority label.
       - if can?(current_user, :admin_label, @project)
-        = link_to 'New label', new_namespace_project_label_path(@project.namespace, @project), class: 'btn btn-new', title: 'New label', id: 'new_label_link'
-        = link_to 'Generate a default set of labels', generate_namespace_project_labels_path(@project.namespace, @project), method: :post, class: 'btn btn-success btn-inverted', title: 'Generate a default set of labels', id: 'generate_labels_link'
+        = link_to 'New label', new_project_label_path(@project), class: 'btn btn-new', title: 'New label', id: 'new_label_link'
+        = link_to 'Generate a default set of labels', generate_project_labels_path(@project), method: :post, class: 'btn btn-success btn-inverted', title: 'Generate a default set of labels', id: 'generate_labels_link'
diff --git a/app/views/shared/issuable/_bulk_update_sidebar.html.haml b/app/views/shared/issuable/_bulk_update_sidebar.html.haml
index 7cfdfb6e6ee1ace825b21607fda2101b280940d9..964fe5220f73c7cc5723c427282565cbdfdde583 100644
--- a/app/views/shared/issuable/_bulk_update_sidebar.html.haml
+++ b/app/views/shared/issuable/_bulk_update_sidebar.html.haml
@@ -31,7 +31,7 @@
         .title
           Milestone
         .filter-item
-          = dropdown_tag("Select milestone", options: { title: "Assign milestone", toggle_class: "js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update", filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), use_id: true, default_label: "Milestone" } })
+          = dropdown_tag("Select milestone", options: { title: "Assign milestone", toggle_class: "js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update", filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: project_milestones_path(@project, :json), use_id: true, default_label: "Milestone" } })
       .block
         .title
           Labels
diff --git a/app/views/shared/issuable/_label_page_default.html.haml b/app/views/shared/issuable/_label_page_default.html.haml
index 9a8529c6cbb7a90ced227ec5b4c3fd5e50c9b2e8..e8feff32d2642470c203764fed2fc01aa1fadafe 100644
--- a/app/views/shared/issuable/_label_page_default.html.haml
+++ b/app/views/shared/issuable/_label_page_default.html.haml
@@ -20,7 +20,7 @@
             %a.dropdown-toggle-page{ href: "#" }
               Create new label
         %li
-          = link_to namespace_project_labels_path(@project.namespace, @project), :"data-is-link" => true do
+          = link_to project_labels_path(@project), :"data-is-link" => true do
             - if show_create && @project && can?(current_user, :admin_label, @project)
               Manage labels
             - else
diff --git a/app/views/shared/issuable/_milestone_dropdown.html.haml b/app/views/shared/issuable/_milestone_dropdown.html.haml
index 6750921338a6eb5f3f52f79b14266beb48c29541..955b8866c2c277aa1030a65b9cbca3adadcbd002 100644
--- a/app/views/shared/issuable/_milestone_dropdown.html.haml
+++ b/app/views/shared/issuable/_milestone_dropdown.html.haml
@@ -11,10 +11,10 @@
     %ul.dropdown-footer-list
       - if can? current_user, :admin_milestone, project
         %li
-          = link_to new_namespace_project_milestone_path(project.namespace, project), title: "New Milestone" do
+          = link_to new_project_milestone_path(project), title: "New Milestone" do
             Create new
       %li
-        = link_to namespace_project_milestones_path(project.namespace, project) do
+        = link_to project_milestones_path(project) do
           - if can? current_user, :admin_milestone, project
             Manage milestones
           - else
diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml
index 745f1ee62daa30e5f89ec9f8591208f0d5326cc7..ecbaa9017924d5bd00904d83f17c18d94b683119 100644
--- a/app/views/shared/issuable/_sidebar.html.haml
+++ b/app/views/shared/issuable/_sidebar.html.haml
@@ -37,13 +37,13 @@
             = link_to 'Edit', '#', class: 'edit-link pull-right'
         .value.hide-collapsed
           - if issuable.milestone
-            = link_to issuable.milestone.title, namespace_project_milestone_path(@project.namespace, @project, issuable.milestone), class: "bold has-tooltip", title: milestone_remaining_days(issuable.milestone), data: { container: "body", html: 1 }
+            = link_to issuable.milestone.title, project_milestone_path(@project, issuable.milestone), class: "bold has-tooltip", title: milestone_remaining_days(issuable.milestone), data: { container: "body", html: 1 }
           - else
             %span.no-value None
 
         .selectbox.hide-collapsed
           = f.hidden_field 'milestone_id', value: issuable.milestone_id, id: nil
-          = dropdown_tag('Milestone', options: { title: 'Assign milestone', toggle_class: 'js-milestone-select js-extra-options', filter: true, dropdown_class: 'dropdown-menu-selectable', placeholder: 'Search milestones', data: { show_no: true, field_name: "#{issuable.to_ability_name}[milestone_id]", project_id: @project.id, issuable_id: issuable.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), ability_name: issuable.to_ability_name, issue_update: issuable_json_path(issuable), use_id: true, default_no: true, selected: (issuable.milestone.name if issuable.milestone), null_default: true }})
+          = dropdown_tag('Milestone', options: { title: 'Assign milestone', toggle_class: 'js-milestone-select js-extra-options', filter: true, dropdown_class: 'dropdown-menu-selectable', placeholder: 'Search milestones', data: { show_no: true, field_name: "#{issuable.to_ability_name}[milestone_id]", project_id: @project.id, issuable_id: issuable.id, milestones: project_milestones_path(@project, :json), ability_name: issuable.to_ability_name, issue_update: issuable_json_path(issuable), use_id: true, default_no: true, selected: (issuable.milestone.name if issuable.milestone), null_default: true }})
       - if issuable.has_attribute?(:time_estimate)
         #issuable-time-tracker.block
           // Fallback while content is loading
@@ -106,7 +106,7 @@
             - selected_labels.each do |label|
               = hidden_field_tag "#{issuable.to_ability_name}[label_names][]", label.id, id: nil
             .dropdown
-              %button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: {toggle: "dropdown", default_label: "Labels", field_name: "#{issuable.to_ability_name}[label_names][]", ability_name: issuable.to_ability_name, show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path), issue_update: issuable_json_path(issuable), labels: (namespace_project_labels_path(@project.namespace, @project, :json) if @project) } }
+              %button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: {toggle: "dropdown", default_label: "Labels", field_name: "#{issuable.to_ability_name}[label_names][]", ability_name: issuable.to_ability_name, show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path), issue_update: issuable_json_path(issuable), labels: (project_labels_path(@project, :json) if @project) } }
                 %span.dropdown-toggle-text{ class: ("is-default" if selected_labels.empty?) }
                   = multi_label_name(selected_labels, "Labels")
                 = icon('chevron-down', 'aria-hidden': 'true')
diff --git a/app/views/shared/members/_group.html.haml b/app/views/shared/members/_group.html.haml
index 1d5a61cffce463d2ab9b3e51092afb6ef9b716d3..bcdad3c153a622629d1db465b3f1b76a2be2e45b 100644
--- a/app/views/shared/members/_group.html.haml
+++ b/app/views/shared/members/_group.html.haml
@@ -14,7 +14,7 @@
         %span{ class: ('text-warning' if group_link.expires_soon?) }
           Expires in #{distance_of_time_in_words_to_now(group_link.expires_at)}
   .controls.member-controls
-    = form_tag namespace_project_group_link_path(@project.namespace, @project, group_link), method: :put, remote: true, class: 'form-horizontal js-edit-member-form' do
+    = form_tag project_group_link_path(@project, group_link), method: :put, remote: true, class: 'form-horizontal js-edit-member-form' do
       = hidden_field_tag "group_link[group_access]", group_link.group_access
       .member-form-control.dropdown.append-right-5
         %button.dropdown-menu-toggle.js-member-permissions-dropdown{ type: "button",
@@ -36,7 +36,7 @@
         = text_field_tag 'group_link[expires_at]', group_link.expires_at, class: 'form-control js-access-expiration-date js-member-update-control', placeholder: 'Expiration date', id: "member_expires_at_#{group.id}", disabled: !can_admin_member
         %i.clear-icon.js-clear-input
     - if can_admin_member
-      = link_to namespace_project_group_link_path(@project.namespace, @project, group_link),
+      = link_to project_group_link_path(@project, group_link),
         method: :delete,
         data: { confirm: "Are you sure you want to remove #{group.name}?" },
         class: 'btn btn-remove prepend-left-10' do
diff --git a/app/views/shared/milestones/_milestone.html.haml b/app/views/shared/milestones/_milestone.html.haml
index 680e1f3a4ea3ad7f5c88f86920c74d64161f770b..ecc8b42979cbccfec756867bfd16a7b15a151bfb 100644
--- a/app/views/shared/milestones/_milestone.html.haml
+++ b/app/views/shared/milestones/_milestone.html.haml
@@ -35,9 +35,9 @@
       .col-sm-6= render('shared/milestone_expired', milestone: milestone)
       .col-sm-6.milestone-actions
         - if can?(current_user, :admin_milestone, milestone.project) and milestone.active?
-          = link_to edit_namespace_project_milestone_path(milestone.project.namespace, milestone.project, milestone), class: "btn btn-xs btn-grouped" do
+          = link_to edit_project_milestone_path(milestone.project, milestone), class: "btn btn-xs btn-grouped" do
             Edit
           \
-          = link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, milestone, milestone: {state_event: :close }), method: :put, remote: true, class: "btn btn-xs btn-close btn-grouped"
-          = link_to namespace_project_milestone_path(milestone.project.namespace, milestone.project, milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-xs btn-remove btn-grouped" do
+          = link_to 'Close Milestone', project_milestone_path(@project, milestone, milestone: {state_event: :close }), method: :put, remote: true, class: "btn btn-xs btn-close btn-grouped"
+          = link_to project_milestone_path(milestone.project, milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-xs btn-remove btn-grouped" do
             Delete
diff --git a/app/views/shared/milestones/_sidebar.html.haml b/app/views/shared/milestones/_sidebar.html.haml
index 9bb87640319ad7c79331ec018964ad9acac65bba..895fb8247b5e3452fc4ad9a9d8692d73ec9260de 100644
--- a/app/views/shared/milestones/_sidebar.html.haml
+++ b/app/views/shared/milestones/_sidebar.html.haml
@@ -21,7 +21,7 @@
       .title
         Start date
         - if @project && can?(current_user, :admin_milestone, @project)
-          = link_to 'Edit', edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: 'edit-link pull-right'
+          = link_to 'Edit', edit_project_milestone_path(@project, @milestone), class: 'edit-link pull-right'
       .value
         %span.value-content
           - if milestone.start_date
@@ -51,7 +51,7 @@
       .title.hide-collapsed
         Due date
         - if @project && can?(current_user, :admin_milestone, @project)
-          = link_to 'Edit', edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: 'edit-link pull-right'
+          = link_to 'Edit', edit_project_milestone_path(@project, @milestone), class: 'edit-link pull-right'
       .value.hide-collapsed
         %span.value-content
           - if milestone.due_date
@@ -73,7 +73,7 @@
           Issues
           %span.badge= milestone.issues_visible_to_user(current_user).count
           - if project && can?(current_user, :create_issue, project)
-            = link_to new_namespace_project_issue_path(project.namespace, project, issue: { milestone_id: milestone.id }), class: "pull-right", title: "New Issue" do
+            = link_to new_project_issue_path(project, issue: { milestone_id: milestone.id }), class: "pull-right", title: "New Issue" do
               New issue
         .value.hide-collapsed.bold
           %span.milestone-stat
diff --git a/app/views/shared/milestones/_tabs.html.haml b/app/views/shared/milestones/_tabs.html.haml
index 4de8a6cb15f0eb70a0adc974ff5b98f590da5bf2..e2d1695b7c3ad164590d96d67aa1dc2c60f68cd3 100644
--- a/app/views/shared/milestones/_tabs.html.haml
+++ b/app/views/shared/milestones/_tabs.html.haml
@@ -30,7 +30,7 @@
 
 .tab-content.milestone-content
   - if milestone.is_a?(GlobalMilestone) || can?(current_user, :read_issue, @project)
-    .tab-pane.active#tab-issues{ data: { sort_endpoint: (sort_issues_namespace_project_milestone_path(@project.namespace, @project, @milestone) if @project && current_user) } }
+    .tab-pane.active#tab-issues{ data: { sort_endpoint: (sort_issues_project_milestone_path(@project, @milestone) if @project && current_user) } }
       = render 'shared/milestones/issues_tab', issues: milestone.sorted_issues(current_user), show_project_name: show_project_name, show_full_project_name: show_full_project_name
     .tab-pane#tab-merge-requests
       -# loaded async
diff --git a/app/views/shared/milestones/_top.html.haml b/app/views/shared/milestones/_top.html.haml
index 2562f085338f5e8215e124afa3acbc7ab724fc9c..20a12613cfc1ba6ba0930b2f75a446feeb599b28 100644
--- a/app/views/shared/milestones/_top.html.haml
+++ b/app/views/shared/milestones/_top.html.haml
@@ -48,7 +48,7 @@
       %tr
         %td
           - project_name = group ? ms.project.name : ms.project.name_with_namespace
-          = link_to project_name, namespace_project_milestone_path(ms.project.namespace, ms.project, ms)
+          = link_to project_name, project_milestone_path(ms.project, ms)
         %td
           = ms.issues_visible_to_user(current_user).opened.count
         %td
diff --git a/app/views/shared/notes/_note.html.haml b/app/views/shared/notes/_note.html.haml
index 1e34b7c1e76acd2bef84930de58a4e8a2403ff5e..7174855e176bb6bf121969c426ad660b164a3988 100644
--- a/app/views/shared/notes/_note.html.haml
+++ b/app/views/shared/notes/_note.html.haml
@@ -60,6 +60,6 @@
             = link_to note.attachment.url, target: '_blank' do
               = icon('paperclip')
               = note.attachment_identifier
-              = link_to delete_attachment_namespace_project_note_path(note.project.namespace, note.project, note),
+              = link_to delete_attachment_project_note_path(note.project, note),
                 title: 'Delete this attachment', method: :delete, remote: true, data: { confirm: 'Are you sure you want to remove the attachment?' }, class: 'danger js-note-attachment-delete' do
                 = icon('trash-o', class: 'cred')
diff --git a/app/views/shared/projects/_project.html.haml b/app/views/shared/projects/_project.html.haml
index 8c3d6351ac24e1a335e927a65a209fa1706d5d6d..4bdbc26a4c3eabe5297491cba7839c9aa8509427 100644
--- a/app/views/shared/projects/_project.html.haml
+++ b/app/views/shared/projects/_project.html.haml
@@ -31,7 +31,7 @@
 
       - if show_last_commit_as_description
         .description.prepend-top-5
-          = link_to_gfm project.commit.title, namespace_project_commit_path(project.namespace, project, project.commit),
+          = link_to_gfm project.commit.title, project_commit_path(project, project.commit),
             class: "commit-row-message"
       - elsif project.description.present?
         .description.prepend-top-5
diff --git a/app/views/shared/snippets/_form.html.haml b/app/views/shared/snippets/_form.html.haml
index 8549cb91b0396ec8bcddcef5cc745919336ab445..43322978749c5dbe390fcb834def9a16e986b58e 100644
--- a/app/views/shared/snippets/_form.html.haml
+++ b/app/views/shared/snippets/_form.html.haml
@@ -36,6 +36,6 @@
         = f.submit 'Save changes', class: "btn-save btn"
 
       - if @snippet.project_id
-        = link_to "Cancel", namespace_project_snippets_path(@project.namespace, @project), class: "btn btn-cancel"
+        = link_to "Cancel", project_snippets_path(@project), class: "btn btn-cancel"
       - else
         = link_to "Cancel", snippets_path(@project), class: "btn btn-cancel"
diff --git a/app/views/shared/snippets/_snippet.html.haml b/app/views/shared/snippets/_snippet.html.haml
index 5d2d2317f22697394490fa6db051cf04c3d0630f..7388f20a9fde8203ee862978bfa4094d069dd4ce 100644
--- a/app/views/shared/snippets/_snippet.html.haml
+++ b/app/views/shared/snippets/_snippet.html.haml
@@ -30,7 +30,7 @@
     - if link_project && snippet.project_id?
       %span.hidden-xs
         in
-        = link_to namespace_project_path(snippet.project.namespace, snippet.project) do
+        = link_to project_path(snippet.project) do
           = snippet.project.name_with_namespace
 
     .pull-right.snippet-updated-at
diff --git a/app/views/users/calendar_activities.html.haml b/app/views/users/calendar_activities.html.haml
index d1e88274878c5873e8e3cdffebf81da96102bcf8..805a346a85e76870241c4d589e5592eb55e70574 100644
--- a/app/views/users/calendar_activities.html.haml
+++ b/app/views/users/calendar_activities.html.haml
@@ -12,7 +12,7 @@
         - if event.push?
           #{event.action_name} #{event.ref_type}
           %strong
-            - commits_path = namespace_project_commits_path(event.project.namespace, event.project, event.ref_name)
+            - commits_path = project_commits_path(event.project, event.ref_name)
             = link_to_if event.project.repository.branch_exists?(event.ref_name), event.ref_name, commits_path
         - else
           = event_action_name(event)
diff --git a/app/workers/expire_job_cache_worker.rb b/app/workers/expire_job_cache_worker.rb
index 08e281e7350163f36c54fd23c51c447fbac20a02..e383202260d24d85cb8d867c440106f47ceba954 100644
--- a/app/workers/expire_job_cache_worker.rb
+++ b/app/workers/expire_job_cache_worker.rb
@@ -18,18 +18,10 @@ class ExpireJobCacheWorker
   private
 
   def project_pipeline_path(project, pipeline)
-    Gitlab::Routing.url_helpers.namespace_project_pipeline_path(
-      project.namespace,
-      project,
-      pipeline,
-      format: :json)
+    Gitlab::Routing.url_helpers.project_pipeline_path(project, pipeline, format: :json)
   end
 
   def project_job_path(project, job)
-    Gitlab::Routing.url_helpers.namespace_project_build_path(
-      project.namespace,
-      project,
-      job.id,
-      format: :json)
+    Gitlab::Routing.url_helpers.project_build_path(project, job.id, format: :json)
   end
 end
diff --git a/app/workers/expire_pipeline_cache_worker.rb b/app/workers/expire_pipeline_cache_worker.rb
index 92e622285def059ce70bd8f3356ae94f47b189df..7c02d6cf8923f6e5ee649ea906f52b81348080fb 100644
--- a/app/workers/expire_pipeline_cache_worker.rb
+++ b/app/workers/expire_pipeline_cache_worker.rb
@@ -23,42 +23,24 @@ class ExpirePipelineCacheWorker
   private
 
   def project_pipelines_path(project)
-    Gitlab::Routing.url_helpers.namespace_project_pipelines_path(
-      project.namespace,
-      project,
-      format: :json)
+    Gitlab::Routing.url_helpers.project_pipelines_path(project, format: :json)
   end
 
   def project_pipeline_path(project, pipeline)
-    Gitlab::Routing.url_helpers.namespace_project_pipeline_path(
-      project.namespace,
-      project,
-      pipeline,
-      format: :json)
+    Gitlab::Routing.url_helpers.project_pipeline_path(project, pipeline, format: :json)
   end
 
   def commit_pipelines_path(project, commit)
-    Gitlab::Routing.url_helpers.pipelines_namespace_project_commit_path(
-      project.namespace,
-      project,
-      commit.id,
-      format: :json)
+    Gitlab::Routing.url_helpers.pipelines_project_commit_path(project, commit.id, format: :json)
   end
 
   def new_merge_request_pipelines_path(project)
-    Gitlab::Routing.url_helpers.namespace_project_new_merge_request_path(
-      project.namespace,
-      project,
-      format: :json)
+    Gitlab::Routing.url_helpers.project_new_merge_request_path(project, format: :json)
   end
 
   def each_pipelines_merge_request_path(project, pipeline)
     pipeline.all_merge_requests.each do |merge_request|
-      path = Gitlab::Routing.url_helpers.pipelines_namespace_project_merge_request_path(
-        project.namespace,
-        project,
-        merge_request,
-        format: :json)
+      path = Gitlab::Routing.url_helpers.pipelines_project_merge_request_path(project, merge_request, format: :json)
 
       yield(path)
     end
diff --git a/config/application.rb b/config/application.rb
index 3f39170a123ff4bc2f65bb816cbe7858d1d2488e..a9a961d75206bc11ddb255b4ea018134d81189fb 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -162,5 +162,25 @@ module Gitlab
     config.generators do |g|
       g.factory_girl false
     end
+
+    config.after_initialize do
+      Rails.application.reload_routes!
+
+      project_url_helpers = Module.new do
+        Gitlab::Application.routes.named_routes.helper_names.each do |name|
+          next unless name.include?('namespace_project')
+
+          define_method(name.sub('namespace_project', 'project')) do |project, *args|
+            send(name, project&.namespace, project, *args)
+          end
+        end
+      end
+
+      Gitlab::Routing.url_helpers.include project_url_helpers
+      Gitlab::Routing.url_helpers.extend project_url_helpers
+
+      GitlabRoutingHelper.include project_url_helpers
+      GitlabRoutingHelper.extend project_url_helpers
+    end
   end
 end
diff --git a/config/initializers/doorkeeper_openid_connect.rb b/config/initializers/doorkeeper_openid_connect.rb
index 4ff9019c43c62a53196fd058728f9d215809c299..c58f425b19be7941d2d78190292ec0da933803cb 100644
--- a/config/initializers/doorkeeper_openid_connect.rb
+++ b/config/initializers/doorkeeper_openid_connect.rb
@@ -29,7 +29,7 @@ Doorkeeper::OpenidConnect.configure do
       o.claim(:email)          { |user| user.public_email  }
       o.claim(:email_verified) { |user| true if user.public_email? }
       o.claim(:website)        { |user| user.full_website_url if user.website_url? }
-      o.claim(:profile)        { |user| Rails.application.routes.url_helpers.user_url user }
+      o.claim(:profile)        { |user| Gitlab::Routing.url_helpers.user_url user }
       o.claim(:picture)        { |user| user.avatar_url(only_path: false) }
     end
   end
diff --git a/config/initializers/relative_naming_ci_namespace.rb b/config/initializers/relative_naming_ci_namespace.rb
index 03ac55be0b694d7f75aecbe97492682870ef649e..d9d3034150fb43c1357885bd830f59f9662fa8a9 100644
--- a/config/initializers/relative_naming_ci_namespace.rb
+++ b/config/initializers/relative_naming_ci_namespace.rb
@@ -4,10 +4,10 @@
 # - [project.namespace, project, build]
 #
 # instead of:
-# - namespace_project_job_path(project.namespace, project, build)
+# - project_job_path(project, build)
 #
 # Without that, Ci:: namespace is used for resolving routes:
-# - namespace_project_ci_build_path(project.namespace, project, build)
+# - project_ci_build_path(project, build)
 
 module Ci
   def self.use_relative_model_naming?
diff --git a/features/steps/dashboard/dashboard.rb b/features/steps/dashboard/dashboard.rb
index 3c06b188f3ee12b7a409b17d97cab9ea33fa6326..0960f49aad3e76a728c59d931799652839d58966 100644
--- a/features/steps/dashboard/dashboard.rb
+++ b/features/steps/dashboard/dashboard.rb
@@ -27,7 +27,7 @@ class Spinach::Features::Dashboard < Spinach::FeatureSteps
 
   step 'I see prefilled new Merge Request page' do
     expect(page).to have_selector('.merge-request-form')
-    expect(current_path).to eq namespace_project_new_merge_request_path(@project.namespace, @project)
+    expect(current_path).to eq project_new_merge_request_path(@project)
     expect(find("#merge_request_target_project_id").value).to eq @project.id.to_s
     expect(find("input#merge_request_source_branch").value).to eq "fix"
     expect(find("input#merge_request_target_branch").value).to eq "master"
diff --git a/features/steps/explore/projects.rb b/features/steps/explore/projects.rb
index 1a55f40abb903f6a0b77ddfc461464b8d0518b97..f1288c15084329743c96aaaa1dcff451567fbb74 100644
--- a/features/steps/explore/projects.rb
+++ b/features/steps/explore/projects.rb
@@ -66,7 +66,7 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps
        title: "New feature",
        project: public_project
           )
-    visit namespace_project_issues_path(public_project.namespace, public_project)
+    visit project_issues_path(public_project)
   end
 
   step 'I should see list of issues for "Community" project' do
@@ -84,7 +84,7 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps
        title: "New internal feature",
        project: internal_project
           )
-    visit namespace_project_issues_path(internal_project.namespace, internal_project)
+    visit project_issues_path(internal_project)
   end
 
   step 'I should see list of issues for "Internal" project' do
@@ -94,7 +94,7 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps
   end
 
   step 'I visit "Community" merge requests page' do
-    visit namespace_project_merge_requests_path(public_project.namespace, public_project)
+    visit project_merge_requests_path(public_project)
   end
 
   step 'project "Community" has "Bug fix" open merge request' do
@@ -111,7 +111,7 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps
   end
 
   step 'I visit "Internal" merge requests page' do
-    visit namespace_project_merge_requests_path(internal_project.namespace, internal_project)
+    visit project_merge_requests_path(internal_project)
   end
 
   step 'project "Internal" has "Feature implemented" open merge request' do
diff --git a/features/steps/group/milestones.rb b/features/steps/group/milestones.rb
index 0542b06c0ab0a9a47fdae268cfb26eea7f9a37ce..7288dc87005464ce34cb89f82ee83318c9d528aa 100644
--- a/features/steps/group/milestones.rb
+++ b/features/steps/group/milestones.rb
@@ -39,7 +39,7 @@ class Spinach::Features::GroupMilestones < Spinach::FeatureSteps
     expect(page).to have_content('Milestone GL-113')
     expect(page).to have_content('Issues 3 Open: 3 Closed: 0')
     issue = Milestone.find_by(name: 'GL-113').issues.first
-    expect(page).to have_link(issue.title, href: namespace_project_issue_path(issue.project.namespace, issue.project, issue))
+    expect(page).to have_link(issue.title, href: project_issue_path(issue.project, issue))
   end
 
   step 'I fill milestone name' do
diff --git a/features/steps/project/archived.rb b/features/steps/project/archived.rb
index b6f1d417e21a620540a7b19f101e0e375300c8aa..e4847180be9617fbde807d158452e434311ff864 100644
--- a/features/steps/project/archived.rb
+++ b/features/steps/project/archived.rb
@@ -15,7 +15,7 @@ class Spinach::Features::ProjectArchived < Spinach::FeatureSteps
 
   When 'I visit project "Forum" page' do
     project = Project.find_by(name: "Forum")
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I should not see "Archived"' do
diff --git a/features/steps/project/badges/build.rb b/features/steps/project/badges/build.rb
index 96c59322f9b2f59d7a0231a836c2d5bb751f996b..5a9094ee9d3544df8c2640bf68d2c5149551ea4c 100644
--- a/features/steps/project/badges/build.rb
+++ b/features/steps/project/badges/build.rb
@@ -5,7 +5,7 @@ class Spinach::Features::ProjectBadgesBuild < Spinach::FeatureSteps
   include RepoHelpers
 
   step 'I display builds badge for a master branch' do
-    visit build_namespace_project_badges_path(@project.namespace, @project, ref: :master, format: :svg)
+    visit build_project_badges_path(@project, ref: :master, format: :svg)
   end
 
   step 'I should see a build success badge' do
diff --git a/features/steps/project/commits/commits.rb b/features/steps/project/commits/commits.rb
index f19fa1c7600a8803ad25e191d41099c55f20d0e6..305fff37c418a3ade5376e38ffcad3da79deef9a 100644
--- a/features/steps/project/commits/commits.rb
+++ b/features/steps/project/commits/commits.rb
@@ -33,7 +33,7 @@ class Spinach::Features::ProjectCommits < Spinach::FeatureSteps
   end
 
   step 'I click on commit link' do
-    visit namespace_project_commit_path(@project.namespace, @project, sample_commit.id)
+    visit project_commit_path(@project, sample_commit.id)
   end
 
   step 'I see commit info' do
@@ -73,7 +73,7 @@ class Spinach::Features::ProjectCommits < Spinach::FeatureSteps
   end
 
   step 'I visit commits list page for feature branch' do
-    visit namespace_project_commits_path(@project.namespace, @project, 'feature', { limit: 5 })
+    visit project_commits_path(@project, 'feature', { limit: 5 })
   end
 
   step 'I see feature branch commits' do
@@ -119,7 +119,7 @@ class Spinach::Features::ProjectCommits < Spinach::FeatureSteps
 
   step 'I should see button to the merge request' do
     merge_request = MergeRequest.find_by(title: 'Feature')
-    expect(page).to have_link "View open merge request", href: namespace_project_merge_request_path(@project.namespace, @project, merge_request)
+    expect(page).to have_link "View open merge request", href: project_merge_request_path(@project, merge_request)
   end
 
   step 'I see breadcrumb links' do
@@ -135,7 +135,7 @@ class Spinach::Features::ProjectCommits < Spinach::FeatureSteps
   end
 
   step 'I visit a commit with an image that changed' do
-    visit namespace_project_commit_path(@project.namespace, @project, sample_image_commit.id)
+    visit project_commit_path(@project, sample_image_commit.id)
   end
 
   step 'The diff links to both the previous and current image' do
diff --git a/features/steps/project/commits/revert.rb b/features/steps/project/commits/revert.rb
index 114de129d19d1522c6138722a3dd8ae4411ed57d..ebfa7a878bb066681b9cc52d2aee488e7d5b12d1 100644
--- a/features/steps/project/commits/revert.rb
+++ b/features/steps/project/commits/revert.rb
@@ -6,7 +6,7 @@ class Spinach::Features::RevertCommits < Spinach::FeatureSteps
   include RepoHelpers
 
   step 'I click on commit link' do
-    visit namespace_project_commit_path(@project.namespace, @project, sample_commit.id)
+    visit project_commit_path(@project, sample_commit.id)
   end
 
   step 'I click on the revert button' do
diff --git a/features/steps/project/commits/user_lookup.rb b/features/steps/project/commits/user_lookup.rb
index 2d43be5a38623d76483cecc4bbcb1f81aa060a0b..4599e0d032a81cd92f470bd2ee0f70444e368706 100644
--- a/features/steps/project/commits/user_lookup.rb
+++ b/features/steps/project/commits/user_lookup.rb
@@ -4,11 +4,11 @@ class Spinach::Features::ProjectCommitsUserLookup < Spinach::FeatureSteps
   include SharedPaths
 
   step 'I click on commit link' do
-    visit namespace_project_commit_path(@project.namespace, @project, sample_commit.id)
+    visit project_commit_path(@project, sample_commit.id)
   end
 
   step 'I click on another commit link' do
-    visit namespace_project_commit_path(@project.namespace, @project, sample_commit.parent_id)
+    visit project_commit_path(@project, sample_commit.parent_id)
   end
 
   step 'I have user with primary email' do
diff --git a/features/steps/project/create.rb b/features/steps/project/create.rb
index 28be9c6df5bc1ce519e7ee292f352e35ef532f98..60fa232672e86a2812457d3e4ef3a0767b5f27f0 100644
--- a/features/steps/project/create.rb
+++ b/features/steps/project/create.rb
@@ -7,12 +7,12 @@ class Spinach::Features::ProjectCreate < Spinach::FeatureSteps
     fill_in 'project_path', with: 'Empty'
     page.within '#content-body' do
       click_button "Create project"
-    end  
+    end
   end
 
   step 'I should see project page' do
     expect(page).to have_content "Empty"
-    expect(current_path).to eq namespace_project_path(Project.last.namespace, Project.last)
+    expect(current_path).to eq project_path(Project.last)
   end
 
   step 'I should see empty project instructions' do
diff --git a/features/steps/project/deploy_keys.rb b/features/steps/project/deploy_keys.rb
index 8ad9d4a47419c164370b41ee43bdb7b5dd4b542d..b58d595c7c6eb1780bac3f571a0206c5c603e609 100644
--- a/features/steps/project/deploy_keys.rb
+++ b/features/steps/project/deploy_keys.rb
@@ -36,7 +36,7 @@ class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps
   end
 
   step 'I should be on deploy keys page' do
-    expect(current_path).to eq namespace_project_settings_repository_path(@project.namespace, @project)
+    expect(current_path).to eq project_settings_repository_path(@project)
   end
 
   step 'I should see newly created deploy key' do
diff --git a/features/steps/project/fork.rb b/features/steps/project/fork.rb
index 35df403a85f214c7a562ffb2667b48a8314d91b8..dd4dff7f7a993f317847329e208aa42b76bbdc51 100644
--- a/features/steps/project/fork.rb
+++ b/features/steps/project/fork.rb
@@ -53,7 +53,7 @@ class Spinach::Features::ProjectFork < Spinach::FeatureSteps
 
   step 'I visit the forks page of the "Shop" project' do
     @project = Project.where(name: 'Shop').last
-    visit namespace_project_forks_path(@project.namespace, @project)
+    visit project_forks_path(@project)
   end
 
   step 'I should see my fork on the list' do
diff --git a/features/steps/project/forked_merge_requests.rb b/features/steps/project/forked_merge_requests.rb
index 2d9d3efd9d407d995716dfe4b6d6223217ab6ab7..c6cabace25b7e10955e40cd00ea3f3a7c352115e 100644
--- a/features/steps/project/forked_merge_requests.rb
+++ b/features/steps/project/forked_merge_requests.rb
@@ -25,7 +25,7 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
   step 'I should see merge request "Merge Request On Forked Project"' do
     expect(@project.merge_requests.size).to be >= 1
     @merge_request = @project.merge_requests.last
-    expect(current_path).to eq namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
+    expect(current_path).to eq project_merge_request_path(@project, @merge_request)
     expect(@merge_request.title).to eq "Merge Request On Forked Project"
     expect(@merge_request.source_project).to eq @forked_project
     expect(@merge_request.source_branch).to eq "fix"
@@ -77,7 +77,7 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
     expect(page).to have_content "An Edited Forked Merge Request"
     expect(@project.merge_requests.size).to be >= 1
     @merge_request = @project.merge_requests.last
-    expect(current_path).to eq namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
+    expect(current_path).to eq project_merge_request_path(@project, @merge_request)
     expect(@merge_request.source_project).to eq @forked_project
     expect(@merge_request.source_branch).to eq "fix"
     expect(@merge_request.target_branch).to eq "master"
@@ -97,7 +97,7 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
   end
 
   step 'I see the edit page prefilled for "Merge Request On Forked Project"' do
-    expect(current_path).to eq edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
+    expect(current_path).to eq edit_project_merge_request_path(@project, @merge_request)
     expect(page).to have_content "Edit merge request #{@merge_request.to_reference}"
     expect(find("#merge_request_title").value).to eq "Merge Request On Forked Project"
   end
diff --git a/features/steps/project/graph.rb b/features/steps/project/graph.rb
index 176d04d721cc430a92d279b108780ada5630f995..e78e25318a6d852ed060e5e7a3a215f74666f0e7 100644
--- a/features/steps/project/graph.rb
+++ b/features/steps/project/graph.rb
@@ -7,19 +7,19 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps
   end
 
   When 'I visit project "Shop" graph page' do
-    visit namespace_project_graph_path(project.namespace, project, "master")
+    visit project_graph_path(project, "master")
   end
 
   step 'I visit project "Shop" commits graph page' do
-    visit commits_namespace_project_graph_path(project.namespace, project, "master")
+    visit commits_project_graph_path(project, "master")
   end
 
   step 'I visit project "Shop" languages graph page' do
-    visit languages_namespace_project_graph_path(project.namespace, project, "master")
+    visit languages_project_graph_path(project, "master")
   end
 
   step 'I visit project "Shop" chart page' do
-    visit charts_namespace_project_graph_path(project.namespace, project, "master")
+    visit charts_project_graph_path(project, "master")
   end
 
   step 'page should have languages graphs' do
@@ -33,7 +33,7 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps
   end
 
   step 'I visit project "Shop" CI graph page' do
-    visit ci_namespace_project_graph_path(project.namespace, project, 'master')
+    visit ci_project_graph_path(project, 'master')
   end
 
   step 'page should have CI graphs' do
diff --git a/features/steps/project/issues/award_emoji.rb b/features/steps/project/issues/award_emoji.rb
index 2324edda975c60c0987b7bdac1021fc09f07f13a..bbd284b4633069b174d25095048542a29c863004 100644
--- a/features/steps/project/issues/award_emoji.rb
+++ b/features/steps/project/issues/award_emoji.rb
@@ -5,7 +5,7 @@ class Spinach::Features::AwardEmoji < Spinach::FeatureSteps
   include Select2Helper
 
   step 'I visit "Bugfix" issue page' do
-    visit namespace_project_issue_path(@project.namespace, @project, @issue)
+    visit project_issue_path(@project, @issue)
   end
 
   step 'I click the thumbsup award Emoji' do
diff --git a/features/steps/project/issues/issues.rb b/features/steps/project/issues/issues.rb
index e4a559d8ff5e2ceb7fcaf54d8d5cfef0eb1c2722..2deef9036d36f8e33bcc73dae9f9791ee0799393 100644
--- a/features/steps/project/issues/issues.rb
+++ b/features/steps/project/issues/issues.rb
@@ -247,7 +247,7 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
 
   When 'I visit empty project page' do
     project = Project.find_by(name: 'Empty Project')
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I see empty project details with ssh clone info' do
@@ -259,12 +259,12 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
 
   When "I visit project \"Community\" issues page" do
     project = Project.find_by(name: 'Community')
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   When "I visit empty project's issues page" do
     project = Project.find_by(name: 'Empty Project')
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   step 'I leave a comment with code block' do
diff --git a/features/steps/project/issues/labels.rb b/features/steps/project/issues/labels.rb
index 2828e41f731c9680b06e3dd0a74ad10160a8f318..dac18c537ac5cf692f0515e3b92f0b5cdcbc4598 100644
--- a/features/steps/project/issues/labels.rb
+++ b/features/steps/project/issues/labels.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectIssuesLabels < Spinach::FeatureSteps
   include SharedPaths
 
   step 'I visit \'bug\' label edit page' do
-    visit edit_namespace_project_label_path(project.namespace, project, bug_label)
+    visit edit_project_label_path(project, bug_label)
   end
 
   step 'I remove label \'bug\'' do
diff --git a/features/steps/project/merge_requests.rb b/features/steps/project/merge_requests.rb
index dceeed5aafebea0dbcc970f358e6b522ae57efc2..810cd75591b98961bf63d2564c850ba419b85096 100644
--- a/features/steps/project/merge_requests.rb
+++ b/features/steps/project/merge_requests.rb
@@ -256,7 +256,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
   end
 
   step 'I switch to the merge request\'s comments tab' do
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
   end
 
   step 'I click on the commit in the merge request' do
diff --git a/features/steps/project/merge_requests/acceptance.rb b/features/steps/project/merge_requests/acceptance.rb
index 870dc862992a9fc5bf8dccac24619bd1309fe385..3c640e3512a1611465740fca213ea7fa736ae8b3 100644
--- a/features/steps/project/merge_requests/acceptance.rb
+++ b/features/steps/project/merge_requests/acceptance.rb
@@ -1,6 +1,5 @@
 class Spinach::Features::ProjectMergeRequestsAcceptance < Spinach::FeatureSteps
   include LoginHelpers
-  include GitlabRoutingHelper
   include WaitForRequests
 
   step 'I am on the Merge Request detail page' do
diff --git a/features/steps/project/merge_requests/revert.rb b/features/steps/project/merge_requests/revert.rb
index 98d990f112f9d6e19a96d3c62b1083755f0cbbfd..25ccf5ab180f15cb32624dc79d835d3e6d86df44 100644
--- a/features/steps/project/merge_requests/revert.rb
+++ b/features/steps/project/merge_requests/revert.rb
@@ -1,6 +1,5 @@
 class Spinach::Features::RevertMergeRequests < Spinach::FeatureSteps
   include LoginHelpers
-  include GitlabRoutingHelper
   include WaitForRequests
 
   step 'I click on the revert button' do
diff --git a/features/steps/project/network_graph.rb b/features/steps/project/network_graph.rb
index 370e46265c7b0d121d2cc155bc8576b2807074dd..ba98d861e7bf8b4e630b5a11f15a21857d9a088b 100644
--- a/features/steps/project/network_graph.rb
+++ b/features/steps/project/network_graph.rb
@@ -12,11 +12,11 @@ class Spinach::Features::ProjectNetworkGraph < Spinach::FeatureSteps
     Network::Graph.stub(max_count: 10)
 
     @project = Project.find_by(name: "Shop")
-    visit namespace_project_network_path(@project.namespace, @project, "master")
+    visit project_network_path(@project, "master")
   end
 
   step "I visit project network page on branch 'test'" do
-    visit namespace_project_network_path(@project.namespace, @project, "'test'")
+    visit project_network_path(@project, "'test'")
   end
 
   step 'page should select "master" in select box' do
diff --git a/features/steps/project/pages.rb b/features/steps/project/pages.rb
index 4e6830f738b4cd765d2523c72f761be84b91c399..275fb4fc010ce16dfc3c97df9da708c27c9c32f4 100644
--- a/features/steps/project/pages.rb
+++ b/features/steps/project/pages.rb
@@ -15,7 +15,7 @@ class Spinach::Features::ProjectPages < Spinach::FeatureSteps
   end
 
   step 'I visit the Project Pages' do
-    visit namespace_project_pages_path(@project.namespace, @project)
+    visit project_pages_path(@project)
   end
 
   step 'I should see the usage of GitLab Pages' do
@@ -75,7 +75,7 @@ class Spinach::Features::ProjectPages < Spinach::FeatureSteps
   end
 
   step 'I visit add a new Pages Domain' do
-    visit new_namespace_project_pages_domain_path(@project.namespace, @project)
+    visit new_project_pages_domain_path(@project)
   end
 
   step 'I fill the domain' do
diff --git a/features/steps/project/project_group_links.rb b/features/steps/project/project_group_links.rb
index 5280a38ce818c8de61654a0c67bec4cef8f49c18..47ee31786a69e714b1ba46f8eec8eee5dfdcc93e 100644
--- a/features/steps/project/project_group_links.rb
+++ b/features/steps/project/project_group_links.rb
@@ -42,7 +42,7 @@ class Spinach::Features::ProjectGroupLinks < Spinach::FeatureSteps
   end
 
   step 'I visit project group links page' do
-    visit namespace_project_group_links_path(project.namespace, project)
+    visit project_group_links_path(project)
   end
 
   def project
diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb
index 92936f27c2054ec9b56801698494876d6c872530..b2ceb8dd9a8e4887ab6b0f40a7f851098ad60b4c 100644
--- a/features/steps/project/redirects.rb
+++ b/features/steps/project/redirects.rb
@@ -13,7 +13,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
 
   step 'I visit project "Community" page' do
     project = Project.find_by(name: 'Community')
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I should see project "Community" home page' do
@@ -25,12 +25,12 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
 
   step 'I visit project "Enterprise" page' do
     project = Project.find_by(name: 'Enterprise')
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I visit project "CommunityDoesNotExist" page' do
     project = Project.find_by(name: 'Community')
-    visit namespace_project_path(project.namespace, project) + 'DoesNotExist'
+    visit project_path(project) + 'DoesNotExist'
   end
 
   step 'I click on "Sign In"' do
diff --git a/features/steps/project/services.rb b/features/steps/project/services.rb
index 6bac4df16f896add453b89029445ebeceeb6114b..906a81b29b34de179c2e4f2dae89e799398403d1 100644
--- a/features/steps/project/services.rb
+++ b/features/steps/project/services.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectServices < Spinach::FeatureSteps
   include SharedPaths
 
   step 'I visit project "Shop" services page' do
-    visit namespace_project_settings_integrations_path(@project.namespace, @project)
+    visit project_settings_integrations_path(@project)
   end
 
   step 'I should see list of available services' do
diff --git a/features/steps/project/snippets.rb b/features/steps/project/snippets.rb
index dd49701a3d98a455a69b1ef51dfbfb77969a241d..b0407d3f07d2913f6c268fc0eb13880c9fd6e64c 100644
--- a/features/steps/project/snippets.rb
+++ b/features/steps/project/snippets.rb
@@ -91,7 +91,7 @@ class Spinach::Features::ProjectSnippets < Spinach::FeatureSteps
   end
 
   step 'I visit snippet page "Snippet one"' do
-    visit namespace_project_snippet_path(project.namespace, project, project_snippet)
+    visit project_snippet_path(project, project_snippet)
   end
 
   def project_snippet
diff --git a/features/steps/project/source/browse_files.rb b/features/steps/project/source/browse_files.rb
index 02434319a08c19829fc49db33990ff1ae6fa2d60..5475b32388c06af97172be78f69215f1fec0bdff 100644
--- a/features/steps/project/source/browse_files.rb
+++ b/features/steps/project/source/browse_files.rb
@@ -9,7 +9,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
   step "I don't have write access" do
     @project = create(:project, :repository, name: "Other Project", path: "other-project")
     @project.team << [@user, :reporter]
-    visit namespace_project_tree_path(@project.namespace, @project, root_ref)
+    visit project_tree_path(@project, root_ref)
   end
 
   step 'I should see files from repository' do
@@ -19,7 +19,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
   end
 
   step 'I should see files from repository for "6d39438"' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "6d39438")
+    expect(current_path).to eq project_tree_path(@project, "6d39438")
     expect(page).to have_content ".gitignore"
     expect(page).to have_content "LICENSE"
   end
@@ -240,16 +240,16 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
   end
 
   step 'I am redirected to the files URL' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, 'master')
+    expect(current_path).to eq project_tree_path(@project, 'master')
   end
 
   step 'I am redirected to the ".gitignore"' do
-    expect(current_path).to eq(namespace_project_blob_path(@project.namespace, @project, 'master/.gitignore'))
+    expect(current_path).to eq(project_blob_path(@project, 'master/.gitignore'))
   end
 
   step 'I am redirected to the permalink URL' do
     expect(current_path).to(
-      eq(namespace_project_blob_path(@project.namespace, @project,
+      eq(project_blob_path(@project,
                                      @project.repository.commit.sha +
                                      '/.gitignore'))
     )
@@ -257,26 +257,26 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 
   step 'I am redirected to the new file' do
     expect(current_path).to eq(
-      namespace_project_blob_path(@project.namespace, @project, 'master/' + new_file_name))
+      project_blob_path(@project, 'master/' + new_file_name))
   end
 
   step 'I am redirected to the new file with directory' do
     expect(current_path).to eq(
-      namespace_project_blob_path(@project.namespace, @project, 'master/' + new_file_name_with_directory))
+      project_blob_path(@project, 'master/' + new_file_name_with_directory))
   end
 
   step 'I am redirected to the new merge request page' do
-    expect(current_path).to eq(namespace_project_new_merge_request_path(@project.namespace, @project))
+    expect(current_path).to eq(project_new_merge_request_path(@project))
   end
 
   step "I am redirected to the fork's new merge request page" do
     fork = @user.fork_of(@project)
-    expect(current_path).to eq(namespace_project_new_merge_request_path(fork.namespace, fork))
+    expect(current_path).to eq(project_new_merge_request_path(fork))
   end
 
   step 'I am redirected to the root directory' do
     expect(current_path).to eq(
-      namespace_project_tree_path(@project.namespace, @project, 'master'))
+      project_tree_path(@project, 'master'))
   end
 
   step "I don't see the permalink link" do
@@ -327,11 +327,11 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
   end
 
   step "I visit the 'test' tree" do
-    visit namespace_project_tree_path(@project.namespace, @project, "'test'")
+    visit project_tree_path(@project, "'test'")
   end
 
   step "I visit the fix tree" do
-    visit namespace_project_tree_path(@project.namespace, @project, "fix/.testdir")
+    visit project_tree_path(@project, "fix/.testdir")
   end
 
   step 'I see the commit data' do
@@ -346,7 +346,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
 
   step 'I click on "files/lfs/lfs_object.iso" file in repo' do
     allow_any_instance_of(Project).to receive(:lfs_enabled?).and_return(true)
-    visit namespace_project_tree_path(@project.namespace, @project, "lfs")
+    visit project_tree_path(@project, "lfs")
     click_link 'files'
     click_link "lfs"
     click_link "lfs_object.iso"
@@ -389,7 +389,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
   end
 
   step 'I visit the SVG file' do
-    visit namespace_project_blob_path(@project.namespace, @project, 'new_branch_name/logo_sample.svg')
+    visit project_blob_path(@project, 'new_branch_name/logo_sample.svg')
   end
 
   step 'I can see the new rendered SVG image' do
diff --git a/features/steps/project/source/markdown_render.rb b/features/steps/project/source/markdown_render.rb
index cf31e61437ee720b0d398afbd4ca12c760da6afb..243a0f54f7f46ab85282645db89087cdb22647a8 100644
--- a/features/steps/project/source/markdown_render.rb
+++ b/features/steps/project/source/markdown_render.rb
@@ -14,7 +14,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see files from repository in markdown' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "markdown")
+    expect(current_path).to eq project_tree_path(@project, "markdown")
     expect(page).to have_content "README.md"
     expect(page).to have_content "CHANGELOG"
   end
@@ -34,7 +34,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see correct document rendered' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/README.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/README.md")
     wait_for_requests
     expect(page).to have_content "All API requests require authentication"
   end
@@ -44,7 +44,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see correct directory rendered' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "markdown/doc/raketasks")
+    expect(current_path).to eq project_tree_path(@project, "markdown/doc/raketasks")
     expect(page).to have_content "backup_restore.md"
     expect(page).to have_content "maintenance.md"
   end
@@ -54,7 +54,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see correct doc/api directory rendered' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "markdown/doc/api")
+    expect(current_path).to eq project_tree_path(@project, "markdown/doc/api")
     expect(page).to have_content "README.md"
     expect(page).to have_content "users.md"
   end
@@ -64,7 +64,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see correct maintenance file rendered' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/raketasks/maintenance.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/raketasks/maintenance.md")
     wait_for_requests
     expect(page).to have_content "bundle exec rake gitlab:env:info RAILS_ENV=production"
   end
@@ -98,7 +98,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I see correct file rendered' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/README.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/README.md")
     wait_for_requests
     expect(page).to have_content "Contents"
     expect(page).to have_link "Users"
@@ -110,7 +110,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see the correct document file' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/users.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/users.md")
     expect(page).to have_content "Get a list of users."
   end
 
@@ -121,30 +121,30 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   # Markdown branch
 
   When 'I visit markdown branch' do
-    visit namespace_project_tree_path(@project.namespace, @project, "markdown")
+    visit project_tree_path(@project, "markdown")
     wait_for_requests
   end
 
   When 'I visit markdown branch "README.md" blob' do
-    visit namespace_project_blob_path(@project.namespace, @project, "markdown/README.md")
+    visit project_blob_path(@project, "markdown/README.md")
   end
 
   When 'I visit markdown branch "d" tree' do
-    visit namespace_project_tree_path(@project.namespace, @project, "markdown/d")
+    visit project_tree_path(@project, "markdown/d")
   end
 
   When 'I visit markdown branch "d/README.md" blob' do
-    visit namespace_project_blob_path(@project.namespace, @project, "markdown/d/README.md")
+    visit project_blob_path(@project, "markdown/d/README.md")
   end
 
   step 'I should see files from repository in markdown branch' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "markdown")
+    expect(current_path).to eq project_tree_path(@project, "markdown")
     expect(page).to have_content "README.md"
     expect(page).to have_content "CHANGELOG"
   end
 
   step 'I see correct file rendered in markdown branch' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/README.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/README.md")
     wait_for_requests
     expect(page).to have_content "Contents"
     expect(page).to have_link "Users"
@@ -152,19 +152,19 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see correct document rendered for markdown branch' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/README.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/README.md")
     wait_for_requests
     expect(page).to have_content "All API requests require authentication"
   end
 
   step 'I should see correct directory rendered for markdown branch' do
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "markdown/doc/raketasks")
+    expect(current_path).to eq project_tree_path(@project, "markdown/doc/raketasks")
     expect(page).to have_content "backup_restore.md"
     expect(page).to have_content "maintenance.md"
   end
 
   step 'I should see the users document file in markdown branch' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/users.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/users.md")
     expect(page).to have_content "Get a list of users."
   end
 
@@ -172,54 +172,54 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
 
   step 'The link with text "empty" should have url "tree/markdown"' do
     wait_for_requests
-    find('a', text: /^empty$/)['href'] == current_host + namespace_project_tree_path(@project.namespace, @project, "markdown")
+    find('a', text: /^empty$/)['href'] == current_host + project_tree_path(@project, "markdown")
   end
 
   step 'The link with text "empty" should have url "blob/markdown/README.md"' do
-    find('a', text: /^empty$/)['href'] == current_host + namespace_project_blob_path(@project.namespace, @project, "markdown/README.md")
+    find('a', text: /^empty$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md")
   end
 
   step 'The link with text "empty" should have url "tree/markdown/d"' do
-    find('a', text: /^empty$/)['href'] == current_host + namespace_project_tree_path(@project.namespace, @project, "markdown/d")
+    find('a', text: /^empty$/)['href'] == current_host + project_tree_path(@project, "markdown/d")
   end
 
   step 'The link with text "empty" should have '\
        'url "blob/markdown/d/README.md"' do
-    find('a', text: /^empty$/)['href'] == current_host + namespace_project_blob_path(@project.namespace, @project, "markdown/d/README.md")
+    find('a', text: /^empty$/)['href'] == current_host + project_blob_path(@project, "markdown/d/README.md")
   end
 
   step 'The link with text "ID" should have url "tree/markdownID"' do
-    find('a', text: /^#id$/)['href'] == current_host + namespace_project_tree_path(@project.namespace, @project, "markdown") + '#id'
+    find('a', text: /^#id$/)['href'] == current_host + project_tree_path(@project, "markdown") + '#id'
   end
 
   step 'The link with text "/ID" should have url "tree/markdownID"' do
-    find('a', text: /^\/#id$/)['href'] == current_host + namespace_project_tree_path(@project.namespace, @project, "markdown") + '#id'
+    find('a', text: /^\/#id$/)['href'] == current_host + project_tree_path(@project, "markdown") + '#id'
   end
 
   step 'The link with text "README.mdID" '\
        'should have url "blob/markdown/README.mdID"' do
-    find('a', text: /^README.md#id$/)['href'] == current_host + namespace_project_blob_path(@project.namespace, @project, "markdown/README.md") + '#id'
+    find('a', text: /^README.md#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
   end
 
   step 'The link with text "d/README.mdID" should have '\
        'url "blob/markdown/d/README.mdID"' do
-    find('a', text: /^d\/README.md#id$/)['href'] == current_host + namespace_project_blob_path(@project.namespace, @project, "d/markdown/README.md") + '#id'
+    find('a', text: /^d\/README.md#id$/)['href'] == current_host + project_blob_path(@project, "d/markdown/README.md") + '#id'
   end
 
   step 'The link with text "ID" should have url "blob/markdown/README.mdID"' do
     wait_for_requests
-    find('a', text: /^#id$/)['href'] == current_host + namespace_project_blob_path(@project.namespace, @project, "markdown/README.md") + '#id'
+    find('a', text: /^#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
   end
 
   step 'The link with text "/ID" should have url "blob/markdown/README.mdID"' do
-    find('a', text: /^\/#id$/)['href'] == current_host + namespace_project_blob_path(@project.namespace, @project, "markdown/README.md") + '#id'
+    find('a', text: /^\/#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
   end
 
   # Wiki
 
   step 'I go to wiki page' do
     click_link "Wiki"
-    expect(current_path).to eq namespace_project_wiki_path(@project.namespace, @project, "home")
+    expect(current_path).to eq project_wiki_path(@project, "home")
   end
 
   step 'I add various links to the wiki page' do
@@ -231,7 +231,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'Wiki page should have added links' do
-    expect(current_path).to eq namespace_project_wiki_path(@project.namespace, @project, "home")
+    expect(current_path).to eq project_wiki_path(@project, "home")
     expect(page).to have_content "test GitLab API doc Rake tasks"
   end
 
@@ -252,7 +252,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I see new wiki page named test' do
-    expect(current_path).to eq  namespace_project_wiki_path(@project.namespace, @project, "test")
+    expect(current_path).to eq  project_wiki_path(@project, "test")
 
     page.within(:css, ".nav-text") do
       expect(page).to have_content "Test"
@@ -261,8 +261,8 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   When 'I go back to wiki page home' do
-    visit namespace_project_wiki_path(@project.namespace, @project, "home")
-    expect(current_path).to eq namespace_project_wiki_path(@project.namespace, @project, "home")
+    visit project_wiki_path(@project, "home")
+    expect(current_path).to eq project_wiki_path(@project, "home")
   end
 
   step 'I click on GitLab API doc link' do
@@ -270,7 +270,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I see Gitlab API document' do
-    expect(current_path).to eq namespace_project_wiki_path(@project.namespace, @project, "api")
+    expect(current_path).to eq project_wiki_path(@project, "api")
 
     page.within(:css, ".nav-text") do
       expect(page).to have_content "Create"
@@ -283,7 +283,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I see Rake tasks directory' do
-    expect(current_path).to eq namespace_project_wiki_path(@project.namespace, @project, "raketasks")
+    expect(current_path).to eq project_wiki_path(@project, "raketasks")
 
     page.within(:css, ".nav-text") do
       expect(page).to have_content "Create"
@@ -292,8 +292,8 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I go directory which contains README file' do
-    visit namespace_project_tree_path(@project.namespace, @project, "markdown/doc/api")
-    expect(current_path).to eq namespace_project_tree_path(@project.namespace, @project, "markdown/doc/api")
+    visit project_tree_path(@project, "markdown/doc/api")
+    expect(current_path).to eq project_tree_path(@project, "markdown/doc/api")
   end
 
   step 'I click on a relative link in README' do
@@ -301,7 +301,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
   end
 
   step 'I should see the correct markdown' do
-    expect(current_path).to eq namespace_project_blob_path(@project.namespace, @project, "markdown/doc/api/users.md")
+    expect(current_path).to eq project_blob_path(@project, "markdown/doc/api/users.md")
     wait_for_requests
     expect(page).to have_content "List users"
   end
diff --git a/features/steps/project/wiki.rb b/features/steps/project/wiki.rb
index 517c257d892d0e21e5dca4afac7544c2bf74b2c4..a2f5d2e1515825ca4a38511757898abf98eae279 100644
--- a/features/steps/project/wiki.rb
+++ b/features/steps/project/wiki.rb
@@ -11,7 +11,7 @@ class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
   end
 
   step 'I should be redirected back to the Edit Home Wiki page' do
-    expect(current_path).to eq namespace_project_wiki_path(project.namespace, project, :home)
+    expect(current_path).to eq project_wiki_path(project, :home)
   end
 
   step 'I create the Wiki Home page' do
@@ -42,7 +42,7 @@ class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
   end
 
   step 'I browse to that Wiki page' do
-    visit namespace_project_wiki_path(project.namespace, project, @page)
+    visit project_wiki_path(project, @page)
   end
 
   step 'I click on the Edit button' do
@@ -59,7 +59,7 @@ class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
   end
 
   step 'I should be redirected back to that Wiki page' do
-    expect(current_path).to eq namespace_project_wiki_path(project.namespace, project, @page)
+    expect(current_path).to eq project_wiki_path(project, @page)
   end
 
   step 'That page has two revisions' do
@@ -95,7 +95,7 @@ class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
   end
 
   step 'I browse to wiki page with images' do
-    visit namespace_project_wiki_path(project.namespace, project, @wiki_page)
+    visit project_wiki_path(project, @wiki_page)
   end
 
   step 'I click on existing image link' do
diff --git a/features/steps/shared/builds.rb b/features/steps/shared/builds.rb
index 624f1a7858bd2b76067b09d0e57db444b5eeb498..3b4c98ec00d935a56eb669fdcbe9ae32d144bcec 100644
--- a/features/steps/shared/builds.rb
+++ b/features/steps/shared/builds.rb
@@ -27,11 +27,11 @@ module SharedBuilds
   end
 
   step 'I visit recent build details page' do
-    visit namespace_project_job_path(@project.namespace, @project, @build)
+    visit project_job_path(@project, @build)
   end
 
   step 'I visit project builds page' do
-    visit namespace_project_jobs_path(@project.namespace, @project)
+    visit project_jobs_path(@project)
   end
 
   step 'recent build has artifacts available' do
@@ -56,7 +56,7 @@ module SharedBuilds
   end
 
   step 'I access artifacts download page' do
-    visit download_namespace_project_job_artifacts_path(@project.namespace, @project, @build)
+    visit download_project_job_artifacts_path(@project, @build)
   end
 
   step 'I see details of a build' do
diff --git a/features/steps/shared/issuable.rb b/features/steps/shared/issuable.rb
index 3d9cedf5c2d649b5e7b2a1c2fceeb327fe780241..7c842ba88fb853c7a31bd478cb3020c33ba63be0 100644
--- a/features/steps/shared/issuable.rb
+++ b/features/steps/shared/issuable.rb
@@ -51,22 +51,22 @@ module SharedIssuable
 
   step 'I visit issue page "Enterprise issue"' do
     issue = Issue.find_by(title: 'Enterprise issue')
-    visit namespace_project_issue_path(issue.project.namespace, issue.project, issue)
+    visit project_issue_path(issue.project, issue)
   end
 
   step 'I visit merge request page "Enterprise fix"' do
     mr = MergeRequest.find_by(title: 'Enterprise fix')
-    visit namespace_project_merge_request_path(mr.target_project.namespace, mr.target_project, mr)
+    visit project_merge_request_path(mr.target_project, mr)
   end
 
   step 'I visit issue page "Community issue"' do
     issue = Issue.find_by(title: 'Community issue')
-    visit namespace_project_issue_path(issue.project.namespace, issue.project, issue)
+    visit project_issue_path(issue.project, issue)
   end
 
   step 'I visit issue page "Community fix"' do
     mr = MergeRequest.find_by(title: 'Community fix')
-    visit namespace_project_merge_request_path(mr.target_project.namespace, mr.target_project, mr)
+    visit project_merge_request_path(mr.target_project, mr)
   end
 
   step 'I should not see any related merge requests' do
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 1f062dc400967a5f93d6fbb363b6c092fe6c9aaa..830263fd038df40c8750440e9e495a1f769ac3d5 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -201,67 +201,67 @@ module SharedPaths
   # ----------------------------------------
 
   step "I visit my project's home page" do
-    visit namespace_project_path(@project.namespace, @project)
+    visit project_path(@project)
   end
 
   step "I visit my project's settings page" do
-    visit edit_namespace_project_path(@project.namespace, @project)
+    visit edit_project_path(@project)
   end
 
   step "I visit my project's files page" do
-    visit namespace_project_tree_path(@project.namespace, @project, root_ref)
+    visit project_tree_path(@project, root_ref)
   end
 
   step 'I visit a binary file in the repo' do
-    visit namespace_project_blob_path(@project.namespace, @project,
+    visit project_blob_path(@project,
       File.join(root_ref, 'files/images/logo-black.png'))
   end
 
   step "I visit my project's commits page" do
-    visit namespace_project_commits_path(@project.namespace, @project, root_ref, { limit: 5 })
+    visit project_commits_path(@project, root_ref, { limit: 5 })
   end
 
   step "I visit my project's commits page for a specific path" do
-    visit namespace_project_commits_path(@project.namespace, @project, root_ref + "/app/models/project.rb", { limit: 5 })
+    visit project_commits_path(@project, root_ref + "/app/models/project.rb", { limit: 5 })
   end
 
   step 'I visit my project\'s commits stats page' do
-    visit stats_namespace_project_repository_path(@project.namespace, @project)
+    visit stats_project_repository_path(@project)
   end
 
   step "I visit my project's graph page" do
     # Stub Graph max_size to speed up test (10 commits vs. 650)
     Network::Graph.stub(max_count: 10)
 
-    visit namespace_project_network_path(@project.namespace, @project, root_ref)
+    visit project_network_path(@project, root_ref)
   end
 
   step "I visit my project's issues page" do
-    visit namespace_project_issues_path(@project.namespace, @project)
+    visit project_issues_path(@project)
   end
 
   step "I visit my project's merge requests page" do
-    visit namespace_project_merge_requests_path(@project.namespace, @project)
+    visit project_merge_requests_path(@project)
   end
 
   step "I visit my project's members page" do
-    visit namespace_project_project_members_path(@project.namespace, @project)
+    visit project_project_members_path(@project)
   end
 
   step "I visit my project's wiki page" do
-    visit namespace_project_wiki_path(@project.namespace, @project, :home)
+    visit project_wiki_path(@project, :home)
   end
 
   step 'I visit project hooks page' do
-    visit namespace_project_settings_integrations_path(@project.namespace, @project)
+    visit project_settings_integrations_path(@project)
   end
 
   step 'I visit project deploy keys page' do
-    visit namespace_project_deploy_keys_path(@project.namespace, @project)
+    visit project_deploy_keys_path(@project)
   end
 
   step 'I visit project find file page' do
-    visit namespace_project_find_file_path(@project.namespace, @project, root_ref)
+    visit project_find_file_path(@project, root_ref)
   end
 
   # ----------------------------------------
@@ -269,107 +269,107 @@ module SharedPaths
   # ----------------------------------------
 
   step 'I visit project "Shop" page' do
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I visit project "Shop" activity page' do
-    visit activity_namespace_project_path(project.namespace, project)
+    visit activity_project_path(project)
   end
 
   step 'I visit project "Forked Shop" merge requests page' do
-    visit namespace_project_merge_requests_path(@forked_project.namespace, @forked_project)
+    visit project_merge_requests_path(@forked_project)
   end
 
   step 'I visit edit project "Shop" page' do
-    visit edit_namespace_project_path(project.namespace, project)
+    visit edit_project_path(project)
   end
 
   step 'I visit project branches page' do
-    visit namespace_project_branches_path(@project.namespace, @project)
+    visit project_branches_path(@project)
   end
 
   step 'I visit project protected branches page' do
-    visit namespace_project_protected_branches_path(@project.namespace, @project)
+    visit project_protected_branches_path(@project)
   end
 
   step 'I visit compare refs page' do
-    visit namespace_project_compare_index_path(@project.namespace, @project)
+    visit project_compare_index_path(@project)
   end
 
   step 'I visit project commits page' do
-    visit namespace_project_commits_path(@project.namespace, @project, root_ref, { limit: 5 })
+    visit project_commits_path(@project, root_ref, { limit: 5 })
   end
 
   step 'I visit project commits page for stable branch' do
-    visit namespace_project_commits_path(@project.namespace, @project, 'stable', { limit: 5 })
+    visit project_commits_path(@project, 'stable', { limit: 5 })
   end
 
   step 'I visit project source page' do
-    visit namespace_project_tree_path(@project.namespace, @project, root_ref)
+    visit project_tree_path(@project, root_ref)
   end
 
   step 'I visit blob file from repo' do
-    visit namespace_project_blob_path(@project.namespace, @project, File.join(sample_commit.id, sample_blob.path))
+    visit project_blob_path(@project, File.join(sample_commit.id, sample_blob.path))
   end
 
   step 'I visit ".gitignore" file in repo' do
-    visit namespace_project_blob_path(@project.namespace, @project, File.join(root_ref, '.gitignore'))
+    visit project_blob_path(@project, File.join(root_ref, '.gitignore'))
   end
 
   step 'I am on the new file page' do
-    expect(current_path).to eq(namespace_project_create_blob_path(@project.namespace, @project, root_ref))
+    expect(current_path).to eq(project_create_blob_path(@project, root_ref))
   end
 
   step 'I am on the ".gitignore" edit file page' do
     expect(current_path).to eq(
-      namespace_project_edit_blob_path(@project.namespace, @project, File.join(root_ref, '.gitignore')))
+      project_edit_blob_path(@project, File.join(root_ref, '.gitignore')))
   end
 
   step 'I visit project source page for "6d39438"' do
-    visit namespace_project_tree_path(@project.namespace, @project, "6d39438")
+    visit project_tree_path(@project, "6d39438")
   end
 
   step 'I visit project source page for' \
        ' "6d394385cf567f80a8fd85055db1ab4c5295806f"' do
-    visit namespace_project_tree_path(@project.namespace, @project,
+    visit project_tree_path(@project,
                             '6d394385cf567f80a8fd85055db1ab4c5295806f')
   end
 
   step 'I visit project tags page' do
-    visit namespace_project_tags_path(@project.namespace, @project)
+    visit project_tags_path(@project)
   end
 
   step 'I visit project commit page' do
-    visit namespace_project_commit_path(@project.namespace, @project, sample_commit.id)
+    visit project_commit_path(@project, sample_commit.id)
   end
 
   step 'I visit project "Shop" issues page' do
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   step 'I visit issue page "Release 0.4"' do
     issue = Issue.find_by(title: "Release 0.4")
-    visit namespace_project_issue_path(issue.project.namespace, issue.project, issue)
+    visit project_issue_path(issue.project, issue)
   end
 
   step 'I visit project "Shop" labels page' do
     project = Project.find_by(name: 'Shop')
-    visit namespace_project_labels_path(project.namespace, project)
+    visit project_labels_path(project)
   end
 
   step 'I visit project "Forum" labels page' do
     project = Project.find_by(name: 'Forum')
-    visit namespace_project_labels_path(project.namespace, project)
+    visit project_labels_path(project)
   end
 
   step 'I visit project "Shop" new label page' do
     project = Project.find_by(name: 'Shop')
-    visit new_namespace_project_label_path(project.namespace, project)
+    visit new_project_label_path(project)
   end
 
   step 'I visit project "Forum" new label page' do
     project = Project.find_by(name: 'Forum')
-    visit new_namespace_project_label_path(project.namespace, project)
+    visit new_project_label_path(project)
   end
 
   step 'I visit merge request page "Bug NS-04"' do
@@ -394,28 +394,28 @@ module SharedPaths
 
   step 'I visit merge request page "Bug CO-01"' do
     mr = MergeRequest.find_by(title: "Bug CO-01")
-    visit namespace_project_merge_request_path(mr.target_project.namespace, mr.target_project, mr)
+    visit project_merge_request_path(mr.target_project, mr)
     wait_for_requests
   end
 
   step 'I visit project "Shop" merge requests page' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
   end
 
   step 'I visit forked project "Shop" merge requests page' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
   end
 
   step 'I visit project "Shop" milestones page' do
-    visit namespace_project_milestones_path(project.namespace, project)
+    visit project_milestones_path(project)
   end
 
   step 'I visit project "Shop" team page' do
-    visit namespace_project_project_members_path(project.namespace, project)
+    visit project_project_members_path(project)
   end
 
   step 'I visit project wiki page' do
-    visit namespace_project_wiki_path(@project.namespace, @project, :home)
+    visit project_wiki_path(@project, :home)
   end
 
   # ----------------------------------------
@@ -424,22 +424,22 @@ module SharedPaths
 
   step 'I visit project "Community" page' do
     project = Project.find_by(name: "Community")
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I visit project "Community" source page' do
     project = Project.find_by(name: 'Community')
-    visit namespace_project_tree_path(project.namespace, project, root_ref)
+    visit project_tree_path(project, root_ref)
   end
 
   step 'I visit project "Internal" page' do
     project = Project.find_by(name: "Internal")
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I visit project "Enterprise" page' do
     project = Project.find_by(name: "Enterprise")
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   # ----------------------------------------
@@ -448,7 +448,7 @@ module SharedPaths
 
   step "I visit empty project page" do
     project = Project.find_by(name: "Empty Public Project")
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step "I should not see command line instructions" do
@@ -480,7 +480,7 @@ module SharedPaths
   # ----------------------------------------
 
   step 'I visit project "Shop" snippets page' do
-    visit namespace_project_snippets_path(project.namespace, project)
+    visit project_snippets_path(project)
   end
 
   step 'I visit snippets page' do
@@ -497,7 +497,7 @@ module SharedPaths
 
   def merge_request_path(title)
     mr = MergeRequest.find_by(title: title)
-    namespace_project_merge_request_path(mr.target_project.namespace, mr.target_project, mr)
+    project_merge_request_path(mr.target_project, mr)
   end
 
   # ----------------------------------------
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index c4f1c57836f8e6d76aa94b916970e7c0c3aa54f3..729e2b8982c32624ed2af45f4ffcfd8623325077 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -61,12 +61,12 @@ module SharedProject
 
   step 'I visit my empty project page' do
     project = Project.find_by(name: 'Empty Project')
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'I visit project "Shop" activity page' do
     project = Project.find_by(name: 'Shop')
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   step 'project "Shop" has push event' do
@@ -101,7 +101,7 @@ module SharedProject
   end
 
   step 'I should see project settings' do
-    expect(current_path).to eq edit_namespace_project_path(@project.namespace, @project)
+    expect(current_path).to eq edit_project_path(@project)
     expect(page).to have_content("Project name")
     expect(page).to have_content("Sharing & Permissions")
   end
diff --git a/features/support/env.rb b/features/support/env.rb
index 1690465d9b29fee5ce40846ea98908ed1f9908c6..608d988755c6de2f0cddd3e0426d7d683967dea0 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -28,6 +28,7 @@ Spinach.hooks.before_run do
   TestEnv.disable_pre_receive
 
   include FactoryGirl::Syntax::Methods
+  include GitlabRoutingHelper
 end
 
 Spinach.hooks.after_scenario do |scenario_data, step_definitions|
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index cef5a0abe1228fdee95425d02125e58cac939c4a..9cd078a23561a98133ec6b057fb62bab85c5a2ac 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -434,7 +434,7 @@ module API
         target_url    = "namespace_project_#{target_type}_url"
         target_anchor = "note_#{todo.note_id}" if todo.note_id?
 
-        Gitlab::Application.routes.url_helpers.public_send(target_url,
+        Gitlab::Routing.url_helpers.public_send(target_url,
           todo.project.namespace, todo.project, todo.target, anchor: target_anchor)
       end
 
diff --git a/lib/banzai/filter/commit_range_reference_filter.rb b/lib/banzai/filter/commit_range_reference_filter.rb
index eaacb9591b1a12cd1473ca1533fda3092d940e9e..21bcb1c5ca8555d8e241c3c9b7653b452fac4dea 100644
--- a/lib/banzai/filter/commit_range_reference_filter.rb
+++ b/lib/banzai/filter/commit_range_reference_filter.rb
@@ -30,7 +30,7 @@ module Banzai
 
       def url_for_object(range, project)
         h = Gitlab::Routing.url_helpers
-        h.namespace_project_compare_url(project.namespace, project,
+        h.project_compare_url(project,
                                         range.to_param.merge(only_path: context[:only_path]))
       end
 
diff --git a/lib/banzai/filter/commit_reference_filter.rb b/lib/banzai/filter/commit_reference_filter.rb
index 69c06117edadc83953240a98ce5aeafe7b4110f3..714e03190258b0e836c2cd643a86e39b0e7e3fac 100644
--- a/lib/banzai/filter/commit_reference_filter.rb
+++ b/lib/banzai/filter/commit_reference_filter.rb
@@ -24,7 +24,7 @@ module Banzai
 
       def url_for_object(commit, project)
         h = Gitlab::Routing.url_helpers
-        h.namespace_project_commit_url(project.namespace, project, commit,
+        h.project_commit_url(project, commit,
                                         only_path: context[:only_path])
       end
 
diff --git a/lib/banzai/filter/label_reference_filter.rb b/lib/banzai/filter/label_reference_filter.rb
index a605dea149e56cf0d3e2fa503abf2986e2a9d58d..5364984c9d31c0b294045c5a2e21a790b8f8d4ff 100644
--- a/lib/banzai/filter/label_reference_filter.rb
+++ b/lib/banzai/filter/label_reference_filter.rb
@@ -61,8 +61,7 @@ module Banzai
 
       def url_for_object(label, project)
         h = Gitlab::Routing.url_helpers
-        h.namespace_project_issues_url(project.namespace, project, label_name: label.name,
-                                                                   only_path:  context[:only_path])
+        h.project_issues_url(project, label_name: label.name, only_path: context[:only_path])
       end
 
       def object_link_text(object, matches)
diff --git a/lib/banzai/filter/merge_request_reference_filter.rb b/lib/banzai/filter/merge_request_reference_filter.rb
index 3888acf935e5d87159daa93fc216813f80092f56..0eab865ac04802340b932a4c2a02a6379e6e781a 100644
--- a/lib/banzai/filter/merge_request_reference_filter.rb
+++ b/lib/banzai/filter/merge_request_reference_filter.rb
@@ -17,7 +17,7 @@ module Banzai
 
       def url_for_object(mr, project)
         h = Gitlab::Routing.url_helpers
-        h.namespace_project_merge_request_url(project.namespace, project, mr,
+        h.project_merge_request_url(project, mr,
                                             only_path: context[:only_path])
       end
 
diff --git a/lib/banzai/filter/milestone_reference_filter.rb b/lib/banzai/filter/milestone_reference_filter.rb
index f12014e191fd204248fde3f7c6f1f2351a3c77c1..45c033d32a8de734974726f6c36c9c60a5da6f1d 100644
--- a/lib/banzai/filter/milestone_reference_filter.rb
+++ b/lib/banzai/filter/milestone_reference_filter.rb
@@ -49,7 +49,7 @@ module Banzai
 
       def url_for_object(milestone, project)
         h = Gitlab::Routing.url_helpers
-        h.namespace_project_milestone_url(project.namespace, project, milestone,
+        h.project_milestone_url(project, milestone,
                                         only_path: context[:only_path])
       end
 
diff --git a/lib/banzai/filter/snippet_reference_filter.rb b/lib/banzai/filter/snippet_reference_filter.rb
index 212a0bbf2a03f775e01509a9707f5440d7d9e5d5..134a192c22bcecd03bdc48eb2feb0c7aa74d513e 100644
--- a/lib/banzai/filter/snippet_reference_filter.rb
+++ b/lib/banzai/filter/snippet_reference_filter.rb
@@ -17,7 +17,7 @@ module Banzai
 
       def url_for_object(snippet, project)
         h = Gitlab::Routing.url_helpers
-        h.namespace_project_snippet_url(project.namespace, project, snippet,
+        h.project_snippet_url(project, snippet,
                                         only_path: context[:only_path])
       end
     end
diff --git a/lib/banzai/filter/user_reference_filter.rb b/lib/banzai/filter/user_reference_filter.rb
index a798927823fb907ad5a6dcf5fd27611475e2e0ae..f3356d6c51efe5e1391c1ba6d955550a2ee19bae 100644
--- a/lib/banzai/filter/user_reference_filter.rb
+++ b/lib/banzai/filter/user_reference_filter.rb
@@ -107,7 +107,7 @@ module Banzai
         if author && !project.team.member?(author)
           link_content
         else
-          url = urls.namespace_project_url(project.namespace, project,
+          url = urls.project_url(project,
                                            only_path: context[:only_path])
 
           data = data_attribute(project: project.id, author: author.try(:id))
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index dd864eea3fa09c8ff72d8a1977fa8800686de710..721ed97bb6b6443e5f9513479074ad3cc9a0126b 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -126,8 +126,7 @@ module ExtractsPath
     raise InvalidPathError unless @commit
 
     @hex_path = Digest::SHA1.hexdigest(@path)
-    @logs_path = logs_file_namespace_project_ref_path(@project.namespace,
-                                                      @project, @ref, @path)
+    @logs_path = logs_file_project_ref_path(@project, @ref, @path)
 
   rescue RuntimeError, NoMethodError, InvalidPathError
     render_404
diff --git a/lib/gitlab/badge/build/metadata.rb b/lib/gitlab/badge/build/metadata.rb
index f87a7b7942ef7cdba6fbb37f6513b0d76d127054..2ee35a0d4c16155b34216418c8752bf630d64758 100644
--- a/lib/gitlab/badge/build/metadata.rb
+++ b/lib/gitlab/badge/build/metadata.rb
@@ -15,12 +15,11 @@ module Gitlab
         end
 
         def image_url
-          build_namespace_project_badges_url(@project.namespace,
-                                             @project, @ref, format: :svg)
+          build_project_badges_url(@project, @ref, format: :svg)
         end
 
         def link_url
-          namespace_project_commits_url(@project.namespace, @project, id: @ref)
+          project_commits_url(@project, id: @ref)
         end
       end
     end
diff --git a/lib/gitlab/badge/coverage/metadata.rb b/lib/gitlab/badge/coverage/metadata.rb
index 5358818562298a4af49697d8e8708fb155b9566d..e898f5d790e73e0b2951eefc3f9e71155f193447 100644
--- a/lib/gitlab/badge/coverage/metadata.rb
+++ b/lib/gitlab/badge/coverage/metadata.rb
@@ -16,13 +16,11 @@ module Gitlab
         end
 
         def image_url
-          coverage_namespace_project_badges_url(@project.namespace,
-                                                @project, @ref,
-                                                format: :svg)
+          coverage_project_badges_url(@project, @ref, format: :svg)
         end
 
         def link_url
-          namespace_project_commits_url(@project.namespace, @project, id: @ref)
+          project_commits_url(@project, @ref)
         end
       end
     end
diff --git a/lib/gitlab/badge/metadata.rb b/lib/gitlab/badge/metadata.rb
index 4a049ef758d180b6528eea0fb0724444a39b4bca..86c193650fb7f0350af288efb1bf6763b977a31c 100644
--- a/lib/gitlab/badge/metadata.rb
+++ b/lib/gitlab/badge/metadata.rb
@@ -4,7 +4,7 @@ module Gitlab
     # Abstract class for badge metadata
     #
     class Metadata
-      include Gitlab::Application.routes.url_helpers
+      include Gitlab::Routing.url_helpers
       include ActionView::Helpers::AssetTagHelper
       include ActionView::Helpers::UrlHelper
 
diff --git a/lib/gitlab/ci/status/build/cancelable.rb b/lib/gitlab/ci/status/build/cancelable.rb
index 439ef0ce0153228aa10b41fdd6149290a080881e..8ad3e57e59db1ce09e8c0fe16a5eb39dbae8b87a 100644
--- a/lib/gitlab/ci/status/build/cancelable.rb
+++ b/lib/gitlab/ci/status/build/cancelable.rb
@@ -12,9 +12,7 @@ module Gitlab
           end
 
           def action_path
-            cancel_namespace_project_job_path(subject.project.namespace,
-                                                subject.project,
-                                                subject)
+            cancel_project_job_path(subject.project, subject)
           end
 
           def action_method
diff --git a/lib/gitlab/ci/status/build/common.rb b/lib/gitlab/ci/status/build/common.rb
index b173c23fba4040cf6bb3c8be639350af0ea82a44..c0c7c7f5b5dac6764d8eebd64a3dc8838645c8ad 100644
--- a/lib/gitlab/ci/status/build/common.rb
+++ b/lib/gitlab/ci/status/build/common.rb
@@ -8,9 +8,7 @@ module Gitlab
           end
 
           def details_path
-            namespace_project_job_path(subject.project.namespace,
-                                         subject.project,
-                                         subject)
+            project_job_path(subject.project, subject)
           end
         end
       end
diff --git a/lib/gitlab/ci/status/build/play.rb b/lib/gitlab/ci/status/build/play.rb
index e80f32637940689ad431f92196180e50af45837d..c77265435997a1584e35cf94e32a4415457176fd 100644
--- a/lib/gitlab/ci/status/build/play.rb
+++ b/lib/gitlab/ci/status/build/play.rb
@@ -20,9 +20,7 @@ module Gitlab
           end
 
           def action_path
-            play_namespace_project_job_path(subject.project.namespace,
-                                              subject.project,
-                                              subject)
+            play_project_job_path(subject.project, subject)
           end
 
           def action_method
diff --git a/lib/gitlab/ci/status/build/retryable.rb b/lib/gitlab/ci/status/build/retryable.rb
index 56303e4cb1762ce9fc5f21bf7eba61cee6255cda..8c8fdc56d752562bbd97f9c2e52d379347a83993 100644
--- a/lib/gitlab/ci/status/build/retryable.rb
+++ b/lib/gitlab/ci/status/build/retryable.rb
@@ -16,9 +16,7 @@ module Gitlab
           end
 
           def action_path
-            retry_namespace_project_job_path(subject.project.namespace,
-                                               subject.project,
-                                               subject)
+            retry_project_job_path(subject.project, subject)
           end
 
           def action_method
diff --git a/lib/gitlab/ci/status/build/stop.rb b/lib/gitlab/ci/status/build/stop.rb
index 2778d6f3b523316518f163682a48a79c85044f74..d464738deafba9b681320d3eec35ddfc771d4b19 100644
--- a/lib/gitlab/ci/status/build/stop.rb
+++ b/lib/gitlab/ci/status/build/stop.rb
@@ -20,9 +20,7 @@ module Gitlab
           end
 
           def action_path
-            play_namespace_project_job_path(subject.project.namespace,
-                                              subject.project,
-                                              subject)
+            play_project_job_path(subject.project, subject)
           end
 
           def action_method
diff --git a/lib/gitlab/ci/status/pipeline/common.rb b/lib/gitlab/ci/status/pipeline/common.rb
index 76bfd18bf4040f369e53a751d22d8f66d92eb337..61bb07beb0fd6cff23f87a2619712e68976b2cd2 100644
--- a/lib/gitlab/ci/status/pipeline/common.rb
+++ b/lib/gitlab/ci/status/pipeline/common.rb
@@ -8,9 +8,7 @@ module Gitlab
           end
 
           def details_path
-            namespace_project_pipeline_path(subject.project.namespace,
-                                            subject.project,
-                                            subject)
+            project_pipeline_path(subject.project, subject)
           end
 
           def has_action?
diff --git a/lib/gitlab/ci/status/stage/common.rb b/lib/gitlab/ci/status/stage/common.rb
index 7852f492e1d0738b8f2e33af2e7412dd0c2e8356..bc99d92534795a4d352362a99aad8fcf0562932c 100644
--- a/lib/gitlab/ci/status/stage/common.rb
+++ b/lib/gitlab/ci/status/stage/common.rb
@@ -8,10 +8,7 @@ module Gitlab
           end
 
           def details_path
-            namespace_project_pipeline_path(subject.project.namespace,
-                                            subject.project,
-                                            subject.pipeline,
-                                            anchor: subject.name)
+            project_pipeline_path(subject.project, subject.pipeline, anchor: subject.name)
           end
 
           def has_action?
diff --git a/lib/gitlab/conflict/file.rb b/lib/gitlab/conflict/file.rb
index 75a213ef752d100258d4486bfed5376643e5212f..d2b4e6e209e568f19f556814c860e4f2ff105729 100644
--- a/lib/gitlab/conflict/file.rb
+++ b/lib/gitlab/conflict/file.rb
@@ -205,9 +205,7 @@ module Gitlab
           old_path: their_path,
           new_path: our_path,
           blob_icon: file_type_icon_class('file', our_mode, our_path),
-          blob_path: namespace_project_blob_path(merge_request.project.namespace,
-                                                 merge_request.project,
-                                                 ::File.join(merge_request.diff_refs.head_sha, our_path))
+          blob_path: project_blob_path(merge_request.project, ::File.join(merge_request.diff_refs.head_sha, our_path))
         }
 
         json_hash.tap do |json_hash|
@@ -223,11 +221,10 @@ module Gitlab
       end
 
       def content_path
-        conflict_for_path_namespace_project_merge_request_path(merge_request.project.namespace,
-                                                               merge_request.project,
-                                                               merge_request,
-                                                               old_path: their_path,
-                                                               new_path: our_path)
+        conflict_for_path_project_merge_request_path(merge_request.project,
+                                                     merge_request,
+                                                     old_path: their_path,
+                                                     new_path: our_path)
       end
 
       # Don't try to print merge_request or repository.
diff --git a/lib/gitlab/email/message/repository_push.rb b/lib/gitlab/email/message/repository_push.rb
index ea035e33eff8a262f10d6f2917a57863932c7208..42fc2a4ea194aa4beea8410d88bf03964fcab9f4 100644
--- a/lib/gitlab/email/message/repository_push.rb
+++ b/lib/gitlab/email/message/repository_push.rb
@@ -96,20 +96,13 @@ module Gitlab
         def target_url
           if @action == :push && commits
             if commits.length > 1
-              namespace_project_compare_url(project_namespace,
-                                            project,
-                                            from: compare.start_commit,
-                                            to:   compare.head_commit)
+              project_compare_url(project, from: compare.start_commit, to: compare.head_commit)
             else
-              namespace_project_commit_url(project_namespace,
-                                           project,
-                                           commits.first)
+              project_commit_url(project, commits.first)
             end
           else
             unless @action == :delete
-              namespace_project_tree_url(project_namespace,
-                                         project,
-                                         ref_name)
+              project_tree_url(project, ref_name)
             end
           end
         end
diff --git a/lib/gitlab/url_builder.rb b/lib/gitlab/url_builder.rb
index 23af9318d1ace37a14187d17c5271e3d42675c69..073af685a09da571329b4493d2d79ca9674e1761 100644
--- a/lib/gitlab/url_builder.rb
+++ b/lib/gitlab/url_builder.rb
@@ -23,9 +23,9 @@ module Gitlab
       when WikiPage
         wiki_page_url
       when ProjectSnippet
-        project_snippet_url(object)
+        project_snippet_url(object.project, object)
       when Snippet
-        personal_snippet_url(object)
+        snippet_url(object)
       else
         raise NotImplementedError.new("No URL builder defined for #{object.class}")
       end
@@ -65,13 +65,13 @@ module Gitlab
         if snippet.is_a?(PersonalSnippet)
           snippet_url(snippet, anchor: dom_id(object))
         else
-          project_snippet_url(snippet, anchor: dom_id(object))
+          project_snippet_url(snippet.project, snippet, anchor: dom_id(object))
         end
       end
     end
 
     def wiki_page_url
-      namespace_project_wiki_url(object.wiki.project.namespace, object.wiki.project, object.slug)
+      project_wiki_url(object.wiki.project, object.slug)
     end
   end
 end
diff --git a/spec/controllers/projects/artifacts_controller_spec.rb b/spec/controllers/projects/artifacts_controller_spec.rb
index 428bc45b8421ec2627e5e455cd8cce1460d5d4bc..d2c613a2423948450ae1768635e27942072bb66a 100644
--- a/spec/controllers/projects/artifacts_controller_spec.rb
+++ b/spec/controllers/projects/artifacts_controller_spec.rb
@@ -134,10 +134,7 @@ describe Projects::ArtifactsController do
     context 'found the job and redirect' do
       shared_examples 'redirect to the job' do
         it 'redirects' do
-          path = browse_namespace_project_job_artifacts_path(
-            project.namespace,
-            project,
-            job)
+          path = browse_project_job_artifacts_path(project, job)
 
           expect(response).to redirect_to(path)
         end
@@ -174,11 +171,7 @@ describe Projects::ArtifactsController do
         end
 
         it 'redirects' do
-          path = file_namespace_project_job_artifacts_path(
-            project.namespace,
-            project,
-            job,
-            'README.md')
+          path = file_project_job_artifacts_path(project, job, 'README.md')
 
           expect(response).to redirect_to(path)
         end
diff --git a/spec/controllers/projects/blob_controller_spec.rb b/spec/controllers/projects/blob_controller_spec.rb
index 561bc219bb4eea56723d322f73c5639f8790feb6..02bbc48dc593da4ab91030ccddac40b64f9f83ca 100644
--- a/spec/controllers/projects/blob_controller_spec.rb
+++ b/spec/controllers/projects/blob_controller_spec.rb
@@ -117,7 +117,7 @@ describe Projects::BlobController do
       end
 
       it 'redirects to blob show' do
-        expect(response).to redirect_to(namespace_project_blob_path(project.namespace, project, 'master/CHANGELOG'))
+        expect(response).to redirect_to(project_blob_path(project, 'master/CHANGELOG'))
       end
     end
 
@@ -164,7 +164,7 @@ describe Projects::BlobController do
     end
 
     def blob_after_edit_path
-      namespace_project_blob_path(project.namespace, project, 'master/CHANGELOG')
+      project_blob_path(project, 'master/CHANGELOG')
     end
 
     before do
@@ -186,7 +186,7 @@ describe Projects::BlobController do
       it 'redirects to MR diff' do
         put :update, mr_params
 
-        after_edit_path = diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+        after_edit_path = diffs_project_merge_request_path(project, merge_request)
         file_anchor = "##{Digest::SHA1.hexdigest('CHANGELOG')}"
         expect(response).to redirect_to(after_edit_path + file_anchor)
       end
@@ -223,7 +223,7 @@ describe Projects::BlobController do
         it 'redirects to blob' do
           put :update, default_params
 
-          expect(response).to redirect_to(namespace_project_blob_path(forked_project.namespace, forked_project, 'master/CHANGELOG'))
+          expect(response).to redirect_to(project_blob_path(forked_project, 'master/CHANGELOG'))
         end
       end
 
@@ -235,8 +235,7 @@ describe Projects::BlobController do
           put :update, default_params
 
           expect(response).to redirect_to(
-            namespace_project_new_merge_request_path(
-              forked_project.namespace,
+            project_new_merge_request_path(
               forked_project,
               merge_request: {
                 source_project_id: forked_project.id,
diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb
index 14426b09c73b06fd7d38acd778b2d1747da77eb4..9cd4e9dbf84b8e99203ee6bfc25cf34861c547a3 100644
--- a/spec/controllers/projects/branches_controller_spec.rb
+++ b/spec/controllers/projects/branches_controller_spec.rb
@@ -110,7 +110,7 @@ describe Projects::BranchesController do
             branch_name: branch,
             issue_iid: issue.iid
 
-          expect(response).to redirect_to namespace_project_tree_path(project.namespace, project, branch)
+          expect(response).to redirect_to project_tree_path(project, branch)
         end
 
         it 'redirects to autodeploy setup page' do
@@ -127,7 +127,7 @@ describe Projects::BranchesController do
             branch_name: branch,
             issue_iid: issue.iid
 
-          expect(response.location).to include(namespace_project_new_blob_path(project.namespace, project, branch))
+          expect(response.location).to include(project_new_blob_path(project, branch))
           expect(response).to have_http_status(302)
         end
       end
@@ -303,7 +303,7 @@ describe Projects::BranchesController do
 
       it 'redirects to branches path' do
         expect(response)
-          .to redirect_to(namespace_project_branches_path(project.namespace, project))
+          .to redirect_to(project_branches_path(project))
       end
     end
   end
@@ -323,7 +323,7 @@ describe Projects::BranchesController do
       it 'redirects to branches' do
         destroy_all_merged
 
-        expect(response).to redirect_to namespace_project_branches_path(project.namespace, project)
+        expect(response).to redirect_to project_branches_path(project)
       end
 
       it 'starts worker to delete merged branches' do
diff --git a/spec/controllers/projects/commit_controller_spec.rb b/spec/controllers/projects/commit_controller_spec.rb
index e10da40eaab945ba88fae912878a4fc056edd691..eb61a0c080c6da396e8bc478fedde0d16a9b3146 100644
--- a/spec/controllers/projects/commit_controller_spec.rb
+++ b/spec/controllers/projects/commit_controller_spec.rb
@@ -169,7 +169,7 @@ describe Projects::CommitController do
             start_branch: 'master',
             id: commit.id)
 
-        expect(response).to redirect_to namespace_project_commits_path(project.namespace, project, 'master')
+        expect(response).to redirect_to project_commits_path(project, 'master')
         expect(flash[:notice]).to eq('The commit has been successfully reverted.')
       end
     end
@@ -191,7 +191,7 @@ describe Projects::CommitController do
             start_branch: 'master',
             id: commit.id)
 
-        expect(response).to redirect_to namespace_project_commit_path(project.namespace, project, commit.id)
+        expect(response).to redirect_to project_commit_path(project, commit.id)
         expect(flash[:alert]).to match('Sorry, we cannot revert this commit automatically.')
       end
     end
@@ -218,7 +218,7 @@ describe Projects::CommitController do
             start_branch: 'master',
             id: master_pickable_commit.id)
 
-        expect(response).to redirect_to namespace_project_commits_path(project.namespace, project, 'master')
+        expect(response).to redirect_to project_commits_path(project, 'master')
         expect(flash[:notice]).to eq('The commit has been successfully cherry-picked.')
       end
     end
@@ -240,7 +240,7 @@ describe Projects::CommitController do
             start_branch: 'master',
             id: master_pickable_commit.id)
 
-        expect(response).to redirect_to namespace_project_commit_path(project.namespace, project, master_pickable_commit.id)
+        expect(response).to redirect_to project_commit_path(project, master_pickable_commit.id)
         expect(flash[:alert]).to match('Sorry, we cannot cherry-pick this commit automatically.')
       end
     end
diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb
index 8f4694c98542e84fa07e5f8ce627014f1a3c600c..b4f9fd9b7a21ad6503a8523c67db765a9a3106bf 100644
--- a/spec/controllers/projects/compare_controller_spec.rb
+++ b/spec/controllers/projects/compare_controller_spec.rb
@@ -72,7 +72,7 @@ describe Projects::CompareController do
            from: '',
            to: 'master')
 
-      expect(response).to redirect_to(namespace_project_compare_index_path(project.namespace, project, to: 'master'))
+      expect(response).to redirect_to(project_compare_index_path(project, to: 'master'))
     end
 
     it 'redirects back to index when params[:to] is empty and preserves params[:from]' do
@@ -82,7 +82,7 @@ describe Projects::CompareController do
            from: 'master',
            to: '')
 
-      expect(response).to redirect_to(namespace_project_compare_index_path(project.namespace, project, from: 'master'))
+      expect(response).to redirect_to(project_compare_index_path(project, from: 'master'))
     end
 
     it 'redirects back to index when params[:from] and params[:to] are empty' do
diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb
index ad0b046742d2e728129409033e5f50ad1c0ef188..9db8ff5bbaada52b481aae3b9fb1a9d6e6d77abd 100644
--- a/spec/controllers/projects/environments_controller_spec.rb
+++ b/spec/controllers/projects/environments_controller_spec.rb
@@ -184,7 +184,7 @@ describe Projects::EnvironmentsController do
         expect(response).to have_http_status(200)
         expect(json_response).to eq(
           { 'redirect_url' =>
-              namespace_project_job_url(project.namespace, project, action) })
+              project_job_url(project, action) })
       end
     end
 
@@ -198,7 +198,7 @@ describe Projects::EnvironmentsController do
         expect(response).to have_http_status(200)
         expect(json_response).to eq(
           { 'redirect_url' =>
-              namespace_project_environment_url(project.namespace, project, environment) })
+              project_environment_url(project, environment) })
       end
     end
   end
diff --git a/spec/controllers/projects/group_links_controller_spec.rb b/spec/controllers/projects/group_links_controller_spec.rb
index b5435357f532d8c085b76bfca4ddbf7d5c9075e1..48a2994cbc01d3b5dfeb8cf9bf7babf1518a859f 100644
--- a/spec/controllers/projects/group_links_controller_spec.rb
+++ b/spec/controllers/projects/group_links_controller_spec.rb
@@ -34,7 +34,7 @@ describe Projects::GroupLinksController do
 
       it 'redirects to project group links page' do
         expect(response).to redirect_to(
-          namespace_project_settings_members_path(project.namespace, project)
+          project_settings_members_path(project)
         )
       end
     end
@@ -65,7 +65,7 @@ describe Projects::GroupLinksController do
 
       it 'redirects to project group links page' do
         expect(response).to redirect_to(
-          namespace_project_settings_members_path(project.namespace, project)
+          project_settings_members_path(project)
         )
       end
     end
@@ -79,7 +79,7 @@ describe Projects::GroupLinksController do
 
       it 'redirects to project group links page' do
         expect(response).to redirect_to(
-          namespace_project_settings_members_path(project.namespace, project)
+          project_settings_members_path(project)
         )
         expect(flash[:alert]).to eq('Please select a group.')
       end
diff --git a/spec/controllers/projects/imports_controller_spec.rb b/spec/controllers/projects/imports_controller_spec.rb
index 6724b474179871b360c940617e5620e9de74b71f..9be613426161d1587e1d7ca2315609c74bd31b1d 100644
--- a/spec/controllers/projects/imports_controller_spec.rb
+++ b/spec/controllers/projects/imports_controller_spec.rb
@@ -59,7 +59,7 @@ describe Projects::ImportsController do
         it 'redirects to new_namespace_project_import_path' do
           get :show, namespace_id: project.namespace.to_param, project_id: project
 
-          expect(response).to redirect_to new_namespace_project_import_path(project.namespace, project)
+          expect(response).to redirect_to new_project_import_path(project)
         end
       end
 
@@ -75,7 +75,7 @@ describe Projects::ImportsController do
             get :show, namespace_id: project.namespace.to_param, project_id: project
 
             expect(flash[:notice]).to eq 'The project was successfully forked.'
-            expect(response).to redirect_to namespace_project_path(project.namespace, project)
+            expect(response).to redirect_to project_path(project)
           end
         end
 
@@ -84,14 +84,14 @@ describe Projects::ImportsController do
             get :show, namespace_id: project.namespace.to_param, project_id: project
 
             expect(flash[:notice]).to eq 'The project was successfully imported.'
-            expect(response).to redirect_to namespace_project_path(project.namespace, project)
+            expect(response).to redirect_to project_path(project)
           end
         end
 
         context 'when continue params is present' do
           let(:params) do
             {
-              to: namespace_project_path(project.namespace, project),
+              to: project_path(project),
               notice: 'Finished'
             }
           end
@@ -120,7 +120,7 @@ describe Projects::ImportsController do
         it 'redirects to namespace_project_path' do
           get :show, namespace_id: project.namespace.to_param, project_id: project
 
-          expect(response).to redirect_to namespace_project_path(project.namespace, project)
+          expect(response).to redirect_to project_path(project)
         end
       end
     end
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
index 9f98427a86b129a98d5ca80c2b0d2d87e227a3ce..22aad0b32257fa8689215600f6282a7d05a16aab 100644
--- a/spec/controllers/projects/issues_controller_spec.rb
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -35,7 +35,7 @@ describe Projects::IssuesController do
       it "returns 301 if request path doesn't match project path" do
         get :index, namespace_id: project.namespace, project_id: project.path.upcase
 
-        expect(response).to redirect_to(namespace_project_issues_path(project.namespace, project))
+        expect(response).to redirect_to(project_issues_path(project))
       end
 
       it "returns 404 when issues are disabled" do
@@ -329,7 +329,7 @@ describe Projects::IssuesController do
               update_verified_issue
 
               expect(response)
-                .to redirect_to(namespace_project_issue_path(project.namespace, project, issue))
+                .to redirect_to(project_issue_path(project, issue))
             end
 
             it 'accepts an issue after recaptcha is verified' do
diff --git a/spec/controllers/projects/labels_controller_spec.rb b/spec/controllers/projects/labels_controller_spec.rb
index bf1776eb3207bcf18fd70295e45510c9e799700d..f19ad4c2c8168edbf455063d8464c532b9095305 100644
--- a/spec/controllers/projects/labels_controller_spec.rb
+++ b/spec/controllers/projects/labels_controller_spec.rb
@@ -178,7 +178,7 @@ describe Projects::LabelsController do
             it 'redirects to the correct casing' do
               get :index, namespace_id: project.namespace, project_id: project.to_param.upcase
 
-              expect(response).to redirect_to(namespace_project_labels_path(project.namespace, project))
+              expect(response).to redirect_to(project_labels_path(project))
               expect(controller).not_to set_flash[:notice]
             end
           end
@@ -191,7 +191,7 @@ describe Projects::LabelsController do
         it 'redirects to the canonical path' do
           get :index, namespace_id: project.namespace, project_id: project.to_param + 'old'
 
-          expect(response).to redirect_to(namespace_project_labels_path(project.namespace, project))
+          expect(response).to redirect_to(project_labels_path(project))
           expect(controller).to set_flash[:notice].to(project_moved_message(redirect_route, project))
         end
       end
diff --git a/spec/controllers/projects/mattermosts_controller_spec.rb b/spec/controllers/projects/mattermosts_controller_spec.rb
index 422a8b6fac082fc7df5bd2b7ba9857fb8e03e81c..12e413db9025bd5eee7110ef634bd09f6d3cd92f 100644
--- a/spec/controllers/projects/mattermosts_controller_spec.rb
+++ b/spec/controllers/projects/mattermosts_controller_spec.rb
@@ -38,7 +38,7 @@ describe Projects::MattermostsController do
       it 'shows the error' do
         allow_any_instance_of(MattermostSlashCommandsService).to receive(:configure).and_return([false, "error message"])
 
-        expect(subject).to redirect_to(new_namespace_project_mattermost_url(project.namespace, project))
+        expect(subject).to redirect_to(new_project_mattermost_url(project))
       end
     end
 
@@ -51,7 +51,7 @@ describe Projects::MattermostsController do
         subject
         service = project.services.last
 
-        expect(subject).to redirect_to(edit_namespace_project_service_url(project.namespace, project, service))
+        expect(subject).to redirect_to(edit_project_service_url(project, service))
       end
     end
   end
diff --git a/spec/controllers/projects/pages_domains_controller_spec.rb b/spec/controllers/projects/pages_domains_controller_spec.rb
index 33853c4b9d02e06a4a9da1b1d30b57c22bd76de3..920189be3818a9a7c5b12210e82f57544dead4c6 100644
--- a/spec/controllers/projects/pages_domains_controller_spec.rb
+++ b/spec/controllers/projects/pages_domains_controller_spec.rb
@@ -46,7 +46,7 @@ describe Projects::PagesDomainsController do
         post(:create, request_params.merge(pages_domain: pages_domain_params))
       end.to change { PagesDomain.count }.by(1)
 
-      expect(response).to redirect_to(namespace_project_pages_path(project.namespace, project))
+      expect(response).to redirect_to(project_pages_path(project))
     end
   end
 
@@ -56,7 +56,7 @@ describe Projects::PagesDomainsController do
         delete(:destroy, request_params.merge(id: pages_domain.domain))
       end.to change { PagesDomain.count }.by(-1)
 
-      expect(response).to redirect_to(namespace_project_pages_path(project.namespace, project))
+      expect(response).to redirect_to(project_pages_path(project))
     end
   end
 
diff --git a/spec/controllers/projects/project_members_controller_spec.rb b/spec/controllers/projects/project_members_controller_spec.rb
index f2b59ba82caf9bb69d9ba3587baafbbf6fd6adf2..548ec8f487ffef2bebcca5cd42bcf04d54aae311 100644
--- a/spec/controllers/projects/project_members_controller_spec.rb
+++ b/spec/controllers/projects/project_members_controller_spec.rb
@@ -9,7 +9,7 @@ describe Projects::ProjectMembersController do
       get :index, namespace_id: project.namespace, project_id: project
 
       expect(response).to have_http_status(302)
-      expect(response.location).to include namespace_project_settings_members_path(project.namespace, project)
+      expect(response.location).to include project_settings_members_path(project)
     end
   end
 
@@ -50,7 +50,7 @@ describe Projects::ProjectMembersController do
                       access_level: Gitlab::Access::GUEST
 
         expect(response).to set_flash.to 'Users were successfully added.'
-        expect(response).to redirect_to(namespace_project_settings_members_path(project.namespace, project))
+        expect(response).to redirect_to(project_settings_members_path(project))
       end
 
       it 'adds no user to members' do
@@ -62,7 +62,7 @@ describe Projects::ProjectMembersController do
                       access_level: Gitlab::Access::GUEST
 
         expect(response).to set_flash.to 'Message'
-        expect(response).to redirect_to(namespace_project_settings_members_path(project.namespace, project))
+        expect(response).to redirect_to(project_settings_members_path(project))
       end
     end
   end
@@ -111,7 +111,7 @@ describe Projects::ProjectMembersController do
                            id: member
 
           expect(response).to redirect_to(
-            namespace_project_settings_members_path(project.namespace, project)
+            project_settings_members_path(project)
           )
           expect(project.members).not_to include member
         end
@@ -183,7 +183,7 @@ describe Projects::ProjectMembersController do
                          project_id: project
 
           expect(response).to set_flash.to 'Your access request to the project has been withdrawn.'
-          expect(response).to redirect_to(namespace_project_path(project.namespace, project))
+          expect(response).to redirect_to(project_path(project))
           expect(project.requesters).to be_empty
           expect(project.users).not_to include user
         end
@@ -202,7 +202,7 @@ describe Projects::ProjectMembersController do
 
       expect(response).to set_flash.to 'Your request for access has been queued for review.'
       expect(response).to redirect_to(
-        namespace_project_path(project.namespace, project)
+        project_path(project)
       )
       expect(project.requesters.exists?(user_id: user)).to be_truthy
       expect(project.users).not_to include user
@@ -253,7 +253,7 @@ describe Projects::ProjectMembersController do
                                         id: member
 
           expect(response).to redirect_to(
-            namespace_project_settings_members_path(project.namespace, project)
+            project_settings_members_path(project)
           )
           expect(project.members).to include member
         end
@@ -290,7 +290,7 @@ describe Projects::ProjectMembersController do
         expect(project.team_members).to include member
         expect(response).to set_flash.to 'Successfully imported'
         expect(response).to redirect_to(
-          namespace_project_settings_members_path(project.namespace, project)
+          project_settings_members_path(project)
         )
       end
     end
diff --git a/spec/controllers/projects/services_controller_spec.rb b/spec/controllers/projects/services_controller_spec.rb
index 4dc227a36d4131d352d14ebbc1619964fecaa24b..5a9d8a75f3e6880e1c8852cf75b0e47eee07a57d 100644
--- a/spec/controllers/projects/services_controller_spec.rb
+++ b/spec/controllers/projects/services_controller_spec.rb
@@ -79,7 +79,7 @@ describe Projects::ServicesController do
         put :update,
           namespace_id: project.namespace.id, project_id: project.id, id: service.id, service: { active: true }
 
-        expect(response).to redirect_to(namespace_project_settings_integrations_path(project.namespace, project))
+        expect(response).to redirect_to(project_settings_integrations_path(project))
         expect(flash[:notice]).to eq 'HipChat activated.'
       end
     end
diff --git a/spec/controllers/projects/snippets_controller_spec.rb b/spec/controllers/projects/snippets_controller_spec.rb
index ec0b7f8c96769e23fc6eb3f2cc383dab68e6e833..cc444f317979291e68b66c05820ce9fefffbe4c7 100644
--- a/spec/controllers/projects/snippets_controller_spec.rb
+++ b/spec/controllers/projects/snippets_controller_spec.rb
@@ -148,7 +148,7 @@ describe Projects::SnippetsController do
                            { spam_log_id: spam_logs.last.id,
                              recaptcha_verification: true })
 
-            expect(response).to redirect_to(Snippet.last)
+            expect(response).to redirect_to(project_snippet_path(project, Snippet.last))
           end
         end
       end
@@ -228,7 +228,7 @@ describe Projects::SnippetsController do
                                      { spam_log_id: spam_logs.last.id,
                                        recaptcha_verification: true })
 
-            expect(response).to redirect_to(snippet)
+            expect(response).to redirect_to(project_snippet_path(project, snippet))
           end
         end
       end
@@ -273,7 +273,7 @@ describe Projects::SnippetsController do
                                      { spam_log_id: spam_logs.last.id,
                                        recaptcha_verification: true })
 
-            expect(response).to redirect_to(snippet)
+            expect(response).to redirect_to(project_snippet_path(project, snippet))
           end
         end
       end
diff --git a/spec/controllers/projects/variables_controller_spec.rb b/spec/controllers/projects/variables_controller_spec.rb
index 1ecfe48475cbaaa17fc989dea634d818b165dc57..a0ecc7566537a59db820586eaab62b9f2ea09ecc 100644
--- a/spec/controllers/projects/variables_controller_spec.rb
+++ b/spec/controllers/projects/variables_controller_spec.rb
@@ -16,7 +16,7 @@ describe Projects::VariablesController do
                       variable: { key: "one", value: "two" }
 
         expect(flash[:notice]).to include 'Variables were successfully updated.'
-        expect(response).to redirect_to(namespace_project_settings_ci_cd_path(project.namespace, project))
+        expect(response).to redirect_to(project_settings_ci_cd_path(project))
       end
     end
 
@@ -44,7 +44,7 @@ describe Projects::VariablesController do
                       id: variable.id, variable: { key: variable.key, value: 'two' }
 
         expect(flash[:notice]).to include 'Variable was successfully updated.'
-        expect(response).to redirect_to(namespace_project_variables_path(project.namespace, project))
+        expect(response).to redirect_to(project_variables_path(project))
       end
 
       it 'renders the action #show if the variable key is invalid' do
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index 240a81367d02ef77b031d07de764a5b2b31cfc72..f96fe7ad5cba2ac52e840fa89ee63dfefed09e6e 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -482,7 +482,7 @@ describe ProjectsController do
         it 'redirects to the canonical path (testing non-show action)' do
           get :refs, namespace_id: 'foo', id: 'bar'
 
-          expect(response).to redirect_to(refs_namespace_project_path(namespace_id: public_project.namespace, id: public_project))
+          expect(response).to redirect_to(refs_project_path(public_project))
           expect(controller).to set_flash[:notice].to(project_moved_message(redirect_route, public_project))
         end
       end
diff --git a/spec/controllers/sent_notifications_controller_spec.rb b/spec/controllers/sent_notifications_controller_spec.rb
index 917bd44c91b32abc6c8c763843adac1300bc034b..7340a4e16c02043b9c1fa73825fc38f5532b1c02 100644
--- a/spec/controllers/sent_notifications_controller_spec.rb
+++ b/spec/controllers/sent_notifications_controller_spec.rb
@@ -88,7 +88,7 @@ describe SentNotificationsController, type: :controller do
 
         it 'redirects to the issue page' do
           expect(response)
-            .to redirect_to(namespace_project_issue_path(project.namespace, project, issue))
+            .to redirect_to(project_issue_path(project, issue))
         end
       end
 
@@ -114,7 +114,7 @@ describe SentNotificationsController, type: :controller do
 
         it 'redirects to the merge request page' do
           expect(response)
-            .to redirect_to(namespace_project_merge_request_path(project.namespace, project, merge_request))
+            .to redirect_to(project_merge_request_path(project, merge_request))
         end
       end
     end
diff --git a/spec/controllers/snippets_controller_spec.rb b/spec/controllers/snippets_controller_spec.rb
index 430d1208cd1cfb4a678e78c67c274d7688081a0f..15416a89017fa8ade7b262eb558ed319ef731029 100644
--- a/spec/controllers/snippets_controller_spec.rb
+++ b/spec/controllers/snippets_controller_spec.rb
@@ -341,7 +341,7 @@ describe SnippetsController do
                                      { spam_log_id: spam_logs.last.id,
                                        recaptcha_verification: true })
 
-            expect(response).to redirect_to(snippet)
+            expect(response).to redirect_to(snippet_path(snippet))
           end
         end
       end
diff --git a/spec/features/admin/admin_disables_git_access_protocol_spec.rb b/spec/features/admin/admin_disables_git_access_protocol_spec.rb
index 679bf63e0fd654ca5a224c699f32b038a66e6b8f..063d54270bdcda8c1550e830e48e78414871a462 100644
--- a/spec/features/admin/admin_disables_git_access_protocol_spec.rb
+++ b/spec/features/admin/admin_disables_git_access_protocol_spec.rb
@@ -51,7 +51,7 @@ feature 'Admin disables Git access protocol', feature: true do
   end
 
   def visit_project
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   def disable_http_protocol
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
index a4ce3e1d5ee0b6b9c0bc79dc223f2b7714f54f48..c6488cea798e450ba0ef3ebb4c96872ab6e070d7 100644
--- a/spec/features/admin/admin_projects_spec.rb
+++ b/spec/features/admin/admin_projects_spec.rb
@@ -42,7 +42,7 @@ describe "Admin::Projects", feature: true  do
     end
 
     it do
-      expect(current_path).to eq admin_namespace_project_path(project.namespace, project)
+      expect(current_path).to eq admin_project_path(project)
     end
 
     it "has project info" do
@@ -62,7 +62,7 @@ describe "Admin::Projects", feature: true  do
     end
 
     it 'transfers project to group web', js: true do
-      visit admin_namespace_project_path(project.namespace, project)
+      visit admin_project_path(project)
 
       click_button 'Search for Namespace'
       click_link 'group: web'
@@ -79,7 +79,7 @@ describe "Admin::Projects", feature: true  do
     end
 
     it 'adds admin a to a project as developer', js: true do
-      visit namespace_project_project_members_path(project.namespace, project)
+      visit project_project_members_path(project)
 
       page.within '.users-project-form' do
         select2(current_user.id, from: '#user_ids', multiple: true)
@@ -102,7 +102,7 @@ describe "Admin::Projects", feature: true  do
     end
 
     it 'removes admin from the project' do
-      visit namespace_project_project_members_path(project.namespace, project)
+      visit project_project_members_path(project)
 
       page.within '.content-list' do
         expect(page).to have_content(current_user.name)
diff --git a/spec/features/admin/admin_uses_repository_checks_spec.rb b/spec/features/admin/admin_uses_repository_checks_spec.rb
index 91d70435db88f6461232d3ac5ba19bc7321fa487..5be0e2b2f170cf074dc7d0736247b43872ca230a 100644
--- a/spec/features/admin/admin_uses_repository_checks_spec.rb
+++ b/spec/features/admin/admin_uses_repository_checks_spec.rb
@@ -43,6 +43,6 @@ feature 'Admin uses repository checks', feature: true do
   end
 
   def visit_admin_project_page(project)
-    visit admin_namespace_project_path(project.namespace, project)
+    visit admin_project_path(project)
   end
 end
diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb
index b94ad973fed955cd63b40692239e1b6554843a35..f7d170a7bf6654b2cb2efe46aa0e4864348b0dd6 100644
--- a/spec/features/atom/issues_spec.rb
+++ b/spec/features/atom/issues_spec.rb
@@ -16,7 +16,7 @@ describe 'Issues Feed', feature: true  do
     context 'when authenticated' do
       it 'renders atom feed' do
         gitlab_sign_in user
-        visit namespace_project_issues_path(project.namespace, project, :atom)
+        visit project_issues_path(project, :atom)
 
         expect(response_headers['Content-Type'])
           .to have_content('application/atom+xml')
@@ -30,7 +30,7 @@ describe 'Issues Feed', feature: true  do
 
     context 'when authenticated via private token' do
       it 'renders atom feed' do
-        visit namespace_project_issues_path(project.namespace, project, :atom,
+        visit project_issues_path(project, :atom,
                                             private_token: user.private_token)
 
         expect(response_headers['Content-Type'])
@@ -45,7 +45,7 @@ describe 'Issues Feed', feature: true  do
 
     context 'when authenticated via RSS token' do
       it 'renders atom feed' do
-        visit namespace_project_issues_path(project.namespace, project, :atom,
+        visit project_issues_path(project, :atom,
                                             rss_token: user.rss_token)
 
         expect(response_headers['Content-Type'])
@@ -59,7 +59,7 @@ describe 'Issues Feed', feature: true  do
     end
 
     it "renders atom feed with url parameters for project issues" do
-      visit namespace_project_issues_path(project.namespace, project,
+      visit project_issues_path(project,
                                           :atom, rss_token: user.rss_token, state: 'opened', assignee_id: user.id)
 
       link = find('link[type="application/atom+xml"]')
diff --git a/spec/features/auto_deploy_spec.rb b/spec/features/auto_deploy_spec.rb
index 74f5f70702a55d4c35cd66bd36fdc4c902e6eb00..3536d59bb0868927d1fe8eb86ffc6e383dd6e243 100644
--- a/spec/features/auto_deploy_spec.rb
+++ b/spec/features/auto_deploy_spec.rb
@@ -16,7 +16,7 @@ describe 'Auto deploy' do
     end
 
     it 'does not show a button to set up auto deploy' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
       expect(page).to have_no_content('Set up auto deploy')
     end
   end
@@ -24,7 +24,7 @@ describe 'Auto deploy' do
   context 'when a deployment service is active' do
     before do
       project.kubernetes_service.update!(active: true)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     it 'shows a button to set up auto deploy' do
diff --git a/spec/features/boards/add_issues_modal_spec.rb b/spec/features/boards/add_issues_modal_spec.rb
index ba58af2284146a3e2c60b5dc97620d28dbe8953b..eeb63f3f81a0001ca1fbdbbba25936cf66a4e4e9 100644
--- a/spec/features/boards/add_issues_modal_spec.rb
+++ b/spec/features/boards/add_issues_modal_spec.rb
@@ -16,12 +16,12 @@ describe 'Issue Boards add issue modal', :feature, :js do
 
     gitlab_sign_in(user)
 
-    visit namespace_project_board_path(project.namespace, project, board)
+    visit project_board_path(project, board)
     wait_for_requests
   end
 
   it 'resets filtered search state' do
-    visit namespace_project_board_path(project.namespace, project, board, search: 'testing')
+    visit project_board_path(project, board, search: 'testing')
 
     wait_for_requests
 
diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb
index 87fc31d414ced7ad818bcda913cd09dbd0ea88e7..1f69758117973bb1ad12ecc970441e897f79e3df 100644
--- a/spec/features/boards/boards_spec.rb
+++ b/spec/features/boards/boards_spec.rb
@@ -17,7 +17,7 @@ describe 'Issue Boards', feature: true, js: true do
 
   context 'no lists' do
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
       expect(page).to have_selector('.board', count: 3)
     end
@@ -81,7 +81,7 @@ describe 'Issue Boards', feature: true, js: true do
     let!(:issue9) { create(:labeled_issue, project: project, labels: [planning, testing, bug, accepting], relative_position: 1) }
 
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
 
       wait_for_requests
 
@@ -158,7 +158,7 @@ describe 'Issue Boards', feature: true, js: true do
         create(:labeled_issue, project: project, labels: [planning])
       end
 
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
 
       page.within(find('.board:nth-child(2)')) do
@@ -507,7 +507,7 @@ describe 'Issue Boards', feature: true, js: true do
 
   context 'keyboard shortcuts' do
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
     end
 
@@ -520,7 +520,7 @@ describe 'Issue Boards', feature: true, js: true do
   context 'signed out user' do
     before do
       gitlab_sign_out
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
     end
 
@@ -544,7 +544,7 @@ describe 'Issue Boards', feature: true, js: true do
       project.team << [user_guest, :guest]
       gitlab_sign_out
       gitlab_sign_in(user_guest)
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
     end
 
diff --git a/spec/features/boards/issue_ordering_spec.rb b/spec/features/boards/issue_ordering_spec.rb
index 1e620061e5edecd1928466ca8fca80eba6d2bd52..62693fb3d11a38835d9c153f60d33d6b116a3c61 100644
--- a/spec/features/boards/issue_ordering_spec.rb
+++ b/spec/features/boards/issue_ordering_spec.rb
@@ -22,7 +22,7 @@ describe 'Issue Boards', :feature, :js do
     let!(:issue4) { create(:labeled_issue, project: project, labels: [label]) }
 
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
 
       expect(page).to have_selector('.board', count: 3)
@@ -47,7 +47,7 @@ describe 'Issue Boards', :feature, :js do
 
   context 'ordering in list' do
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
 
       expect(page).to have_selector('.board', count: 3)
@@ -110,7 +110,7 @@ describe 'Issue Boards', :feature, :js do
     let!(:issue6) { create(:labeled_issue, project: project, title: 'testing 3', labels: [label2], relative_position: 1.0) }
 
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
 
       expect(page).to have_selector('.board', count: 4)
diff --git a/spec/features/boards/keyboard_shortcut_spec.rb b/spec/features/boards/keyboard_shortcut_spec.rb
index ed3b38e6a7e9b3c146ec034d303993d5cfefde8d..34ae6c9d81d3a272a3d853154b93fa9328972b65 100644
--- a/spec/features/boards/keyboard_shortcut_spec.rb
+++ b/spec/features/boards/keyboard_shortcut_spec.rb
@@ -8,7 +8,7 @@ describe 'Issue Boards shortcut', feature: true, js: true do
 
     gitlab_sign_in :admin
 
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   it 'takes user to issue board index' do
diff --git a/spec/features/boards/modal_filter_spec.rb b/spec/features/boards/modal_filter_spec.rb
index 8899e1ef5e5076e2bc115e44fe4e63eaeabdd545..40d1191a597610ebef8a7977d34f194c8b9e494e 100644
--- a/spec/features/boards/modal_filter_spec.rb
+++ b/spec/features/boards/modal_filter_spec.rb
@@ -202,7 +202,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
   end
 
   def visit_board
-    visit namespace_project_board_path(project.namespace, project, board)
+    visit project_board_path(project, board)
     wait_for_requests
 
     click_button('Add issues')
diff --git a/spec/features/boards/new_issue_spec.rb b/spec/features/boards/new_issue_spec.rb
index 77cd87d660178e8340134f87d19472727ee27eaa..fa9d8b3f33d40bc9ae06d7cd1921bd3973667986 100644
--- a/spec/features/boards/new_issue_spec.rb
+++ b/spec/features/boards/new_issue_spec.rb
@@ -12,7 +12,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
 
       gitlab_sign_in(user)
 
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
 
       expect(page).to have_selector('.board', count: 3)
@@ -83,7 +83,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
 
   context 'unauthorized user' do
     before do
-      visit namespace_project_board_path(project.namespace, project, board)
+      visit project_board_path(project, board)
       wait_for_requests
     end
 
diff --git a/spec/features/boards/sidebar_spec.rb b/spec/features/boards/sidebar_spec.rb
index 1c9595def217c8cde91ce980c67c9f71f1c28d76..f96ceffbc7dd8a48f8b10c576e0113ae6ee6f202 100644
--- a/spec/features/boards/sidebar_spec.rb
+++ b/spec/features/boards/sidebar_spec.rb
@@ -22,7 +22,7 @@ describe 'Issue Boards', feature: true, js: true do
 
     gitlab_sign_in(user)
 
-    visit namespace_project_board_path(project.namespace, project, board)
+    visit project_board_path(project, board)
     wait_for_requests
   end
 
@@ -83,7 +83,7 @@ describe 'Issue Boards', feature: true, js: true do
     create(:issue, project: project)
     create(:issue, :closed, project: project)
 
-    visit namespace_project_board_path(project.namespace, project, board)
+    visit project_board_path(project, board)
     wait_for_requests
 
     click_card(find('.board:nth-child(1)').first('.card'))
diff --git a/spec/features/boards/sub_group_project_spec.rb b/spec/features/boards/sub_group_project_spec.rb
index d57ae6a71e71eab6e20dab3388c6c14627949fad..ddff4737563cd2e79e59533a4fad88dbe0bec337 100644
--- a/spec/features/boards/sub_group_project_spec.rb
+++ b/spec/features/boards/sub_group_project_spec.rb
@@ -15,7 +15,7 @@ describe 'Sub-group project issue boards', :feature, :js do
 
     gitlab_sign_in(user)
 
-    visit namespace_project_board_path(project.namespace, project, board)
+    visit project_board_path(project, board)
     wait_for_requests
   end
 
diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb
index 0373f649ee81524ae154313735b54f9cda689ee2..fb1e47994ef4e3fac2ee3ee3abfd23e7245d1116 100644
--- a/spec/features/commits_spec.rb
+++ b/spec/features/commits_spec.rb
@@ -66,7 +66,7 @@ describe 'Commits' do
           end
 
           before do
-            visit namespace_project_commits_path(project.namespace, project, :master)
+            visit project_commits_path(project, :master)
           end
 
           it 'shows correct build status from default branch' do
@@ -192,7 +192,7 @@ describe 'Commits' do
     before do
       project.team << [user, :master]
       sign_in(user)
-      visit namespace_project_commits_path(project.namespace, project, branch_name)
+      visit project_commits_path(project, branch_name)
     end
 
     it 'includes the committed_date for each commit' do
diff --git a/spec/features/container_registry_spec.rb b/spec/features/container_registry_spec.rb
index 80d16539d5a692a88e9545b0cc1c4e4dad2e0e16..55ef1ef29bd4a4b784a671246372cccaa0ec6d8f 100644
--- a/spec/features/container_registry_spec.rb
+++ b/spec/features/container_registry_spec.rb
@@ -55,7 +55,6 @@ describe "Container Registry" do
   end
 
   def visit_container_registry
-    visit namespace_project_container_registry_index_path(
-      project.namespace, project)
+    visit project_container_registry_index_path(project)
   end
 end
diff --git a/spec/features/copy_as_gfm_spec.rb b/spec/features/copy_as_gfm_spec.rb
index 005c88f6bab0953d0243625493eb412b278feca2..25c5df56d57c79e6f061a738717fe5d32724be2b 100644
--- a/spec/features/copy_as_gfm_spec.rb
+++ b/spec/features/copy_as_gfm_spec.rb
@@ -16,7 +16,7 @@ describe 'Copy as GFM', feature: true, js: true do
       # `markdown` helper expects a `@project` variable
       @project = @feat.project
 
-      visit namespace_project_issue_path(@project.namespace, @project, @feat.issue)
+      visit project_issue_path(@project, @feat.issue)
     end
 
     # The filters referenced in lib/banzai/pipeline/gfm_pipeline.rb convert GitLab Flavored Markdown (GFM) to HTML.
@@ -121,13 +121,13 @@ describe 'Copy as GFM', feature: true, js: true do
         # full issue reference
         @feat.issue.to_reference(full: true),
         # issue URL
-        namespace_project_issue_url(@project.namespace, @project, @feat.issue),
+        project_issue_url(@project, @feat.issue),
         # issue URL with note anchor
-        namespace_project_issue_url(@project.namespace, @project, @feat.issue, anchor: 'note_123'),
+        project_issue_url(@project, @feat.issue, anchor: 'note_123'),
         # issue link
-        "[Issue](#{namespace_project_issue_url(@project.namespace, @project, @feat.issue)})",
+        "[Issue](#{project_issue_url(@project, @feat.issue)})",
         # issue link with note anchor
-        "[Issue](#{namespace_project_issue_url(@project.namespace, @project, @feat.issue, anchor: 'note_123')})"
+        "[Issue](#{project_issue_url(@project, @feat.issue, anchor: 'note_123')})"
       )
 
       verify(
@@ -466,7 +466,7 @@ describe 'Copy as GFM', feature: true, js: true do
 
     context 'from a diff' do
       before do
-        visit namespace_project_commit_path(project.namespace, project, sample_commit.id)
+        visit project_commit_path(project, sample_commit.id)
       end
 
       context 'selecting one word of text' do
@@ -507,7 +507,7 @@ describe 'Copy as GFM', feature: true, js: true do
 
     context 'from a blob' do
       before do
-        visit namespace_project_blob_path(project.namespace, project, File.join('master', 'files/ruby/popen.rb'))
+        visit project_blob_path(project, File.join('master', 'files/ruby/popen.rb'))
         wait_for_requests
       end
 
@@ -549,7 +549,7 @@ describe 'Copy as GFM', feature: true, js: true do
 
     context 'from a GFM code block' do
       before do
-        visit namespace_project_blob_path(project.namespace, project, File.join('markdown', 'doc/api/users.md'))
+        visit project_blob_path(project, File.join('markdown', 'doc/api/users.md'))
         wait_for_requests
       end
 
diff --git a/spec/features/cycle_analytics_spec.rb b/spec/features/cycle_analytics_spec.rb
index 5a7ea975455f7d50f3d36e45059c1d12363956eb..7825d23c8f929f95a04e813006277bf6fea470a8 100644
--- a/spec/features/cycle_analytics_spec.rb
+++ b/spec/features/cycle_analytics_spec.rb
@@ -16,7 +16,7 @@ feature 'Cycle Analytics', feature: true, js: true do
 
         gitlab_sign_in(user)
 
-        visit namespace_project_cycle_analytics_path(project.namespace, project)
+        visit project_cycle_analytics_path(project)
         wait_for_requests
       end
 
@@ -39,7 +39,7 @@ feature 'Cycle Analytics', feature: true, js: true do
         deploy_master
 
         gitlab_sign_in(user)
-        visit namespace_project_cycle_analytics_path(project.namespace, project)
+        visit project_cycle_analytics_path(project)
       end
 
       it 'shows data on each stage' do
@@ -71,7 +71,7 @@ feature 'Cycle Analytics', feature: true, js: true do
 
         project.team << [user, :master]
         gitlab_sign_in(user)
-        visit namespace_project_cycle_analytics_path(project.namespace, project)
+        visit project_cycle_analytics_path(project)
         wait_for_requests
       end
 
@@ -94,7 +94,7 @@ feature 'Cycle Analytics', feature: true, js: true do
       deploy_master
 
       gitlab_sign_in(guest)
-      visit namespace_project_cycle_analytics_path(project.namespace, project)
+      visit project_cycle_analytics_path(project)
       wait_for_requests
     end
 
diff --git a/spec/features/dashboard/project_member_activity_index_spec.rb b/spec/features/dashboard/project_member_activity_index_spec.rb
index 0ba87d921d0cfe5457dce6252053d738ac541e20..ea0b2e99c3e1699d26de17d088dee092fdc37005 100644
--- a/spec/features/dashboard/project_member_activity_index_spec.rb
+++ b/spec/features/dashboard/project_member_activity_index_spec.rb
@@ -10,7 +10,7 @@ feature 'Project member activity', feature: true, js: true do
 
   def visit_activities_and_wait_with_event(event_type)
     Event.create(project: project, author_id: user.id, action: event_type)
-    visit activity_namespace_project_path(project.namespace, project)
+    visit activity_project_path(project)
     wait_for_requests
   end
 
diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb
index e9ef5d7983a8bb5cadf596cec9d2d2e3e70b0fd3..7d1fe2bd43517a02eb0b1adce37e3de27cc6c884 100644
--- a/spec/features/dashboard/projects_spec.rb
+++ b/spec/features/dashboard/projects_spec.rb
@@ -68,7 +68,7 @@ feature 'Dashboard Projects' do
     it 'shows that the last pipeline passed' do
       visit dashboard_projects_path
 
-      expect(page).to have_xpath("//a[@href='#{pipelines_namespace_project_commit_path(project.namespace, project, project.commit)}']")
+      expect(page).to have_xpath("//a[@href='#{pipelines_project_commit_path(project, project.commit)}']")
     end
   end
 
diff --git a/spec/features/dashboard/todos/todos_spec.rb b/spec/features/dashboard/todos/todos_spec.rb
index 7fa4d198e00b643545b7967963e18d9521eb8b45..30bab7eeaa777f8bdc61d51597543ef2b04fa267 100644
--- a/spec/features/dashboard/todos/todos_spec.rb
+++ b/spec/features/dashboard/todos/todos_spec.rb
@@ -330,7 +330,7 @@ feature 'Dashboard Todos' do
     end
 
     it 'links to the pipelines for the merge request' do
-      href = pipelines_namespace_project_merge_request_path(project.namespace, project, todo.target)
+      href = pipelines_project_merge_request_path(project, todo.target)
 
       expect(page).to have_link "merge request #{todo.target.to_reference(full: true)}", href
     end
diff --git a/spec/features/discussion_comments/commit_spec.rb b/spec/features/discussion_comments/commit_spec.rb
index 96128061e4dedd48b0f92a8279d65d2241f4a179..620184e29330bc5d54813b50de86c0ab3ddabf92 100644
--- a/spec/features/discussion_comments/commit_spec.rb
+++ b/spec/features/discussion_comments/commit_spec.rb
@@ -11,7 +11,7 @@ describe 'Discussion Comments Merge Request', :feature, :js do
     project.add_master(user)
     gitlab_sign_in(user)
 
-    visit namespace_project_commit_path(project.namespace, project, sample_commit.id)
+    visit project_commit_path(project, sample_commit.id)
   end
 
   it_behaves_like 'discussion comments', 'commit'
diff --git a/spec/features/discussion_comments/issue_spec.rb b/spec/features/discussion_comments/issue_spec.rb
index d7c1cd12fb52615be3d893cf0649d620fb974a91..f90f82f8a4813056be8cc088bc80ab1737b1cd1d 100644
--- a/spec/features/discussion_comments/issue_spec.rb
+++ b/spec/features/discussion_comments/issue_spec.rb
@@ -9,7 +9,7 @@ describe 'Discussion Comments Issue', :feature, :js do
     project.add_master(user)
     gitlab_sign_in(user)
 
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   it_behaves_like 'discussion comments', 'issue'
diff --git a/spec/features/discussion_comments/merge_request_spec.rb b/spec/features/discussion_comments/merge_request_spec.rb
index 31fb9c72d257e1d05a064b2a63c42b585102710c..577d9c69bbc0a8a0ca740f836f2da7c413e985cc 100644
--- a/spec/features/discussion_comments/merge_request_spec.rb
+++ b/spec/features/discussion_comments/merge_request_spec.rb
@@ -9,7 +9,7 @@ describe 'Discussion Comments Merge Request', :feature, :js do
     project.add_master(user)
     gitlab_sign_in(user)
 
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
   end
 
   it_behaves_like 'discussion comments', 'merge request'
diff --git a/spec/features/discussion_comments/snippets_spec.rb b/spec/features/discussion_comments/snippets_spec.rb
index 998d633c83dc23db5bae9957b60442936879de6c..a59be88db7db3b4872db7ac3f1fa3e2cbb0d3870 100644
--- a/spec/features/discussion_comments/snippets_spec.rb
+++ b/spec/features/discussion_comments/snippets_spec.rb
@@ -9,7 +9,7 @@ describe 'Discussion Comments Issue', :feature, :js do
     project.add_master(user)
     gitlab_sign_in(user)
 
-    visit namespace_project_snippet_path(project.namespace, project, snippet)
+    visit project_snippet_path(project, snippet)
   end
 
   it_behaves_like 'discussion comments', 'snippet'
diff --git a/spec/features/expand_collapse_diffs_spec.rb b/spec/features/expand_collapse_diffs_spec.rb
index d492a15ea171ba6dcb12af9ab0afe3f97c78758a..f45752ab3f33de8dc3eac3971e40da342e64f683 100644
--- a/spec/features/expand_collapse_diffs_spec.rb
+++ b/spec/features/expand_collapse_diffs_spec.rb
@@ -14,7 +14,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
 
     # Ensure that undiffable.md is in .gitattributes
     project.repository.copy_gitattributes(branch)
-    visit namespace_project_commit_path(project.namespace, project, project.commit(branch))
+    visit project_commit_path(project, project.commit(branch))
     execute_script('window.ajaxUris = []; $(document).ajaxSend(function(event, xhr, settings) { ajaxUris.push(settings.url) });')
   end
 
@@ -38,7 +38,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
     expect(large_diff).not_to have_selector('.code')
     expect(large_diff).to have_selector('.nothing-here-block')
 
-    visit namespace_project_commit_path(project.namespace, project, project.commit(branch), anchor: "#{large_diff[:id]}_0_1")
+    visit project_commit_path(project, project.commit(branch), anchor: "#{large_diff[:id]}_0_1")
     execute_script('window.location.reload()')
 
     wait_for_requests
@@ -52,7 +52,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
     expect(large_diff).not_to have_selector('.code')
     expect(large_diff).to have_selector('.nothing-here-block')
 
-    visit namespace_project_commit_path(project.namespace, project, project.commit(branch), anchor: large_diff[:id])
+    visit project_commit_path(project, project.commit(branch), anchor: large_diff[:id])
     execute_script('window.location.reload()')
 
     wait_for_requests
diff --git a/spec/features/explore/new_menu_spec.rb b/spec/features/explore/new_menu_spec.rb
index 2d7e703688f70dfd5459f032de1ce88c86704581..5cd72e1d24956dda6ea9f8c6009c8e5ca28a44fa 100644
--- a/spec/features/explore/new_menu_spec.rb
+++ b/spec/features/explore/new_menu_spec.rb
@@ -47,7 +47,7 @@ feature 'Top Plus Menu', feature: true, js: true do
     end
 
     scenario 'click on New issue shows new issue page' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       click_topmenuitem("New issue")
 
@@ -56,7 +56,7 @@ feature 'Top Plus Menu', feature: true, js: true do
     end
 
     scenario 'click on New merge request shows new merge request page' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       click_topmenuitem("New merge request")
 
@@ -66,7 +66,7 @@ feature 'Top Plus Menu', feature: true, js: true do
     end
 
     scenario 'click on New project snippet shows new snippet page' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       page.within '.header-content' do
         find('.header-new-dropdown-toggle').trigger('click')
@@ -107,7 +107,7 @@ feature 'Top Plus Menu', feature: true, js: true do
     end
 
     scenario 'click on New issue shows new issue page' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       click_topmenuitem("New issue")
 
@@ -116,31 +116,31 @@ feature 'Top Plus Menu', feature: true, js: true do
     end
 
     scenario 'has no New merge request menu item' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       hasnot_topmenuitem("New merge request")
     end
 
     scenario 'has no New project snippet menu item' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(find('.header-new.dropdown')).not_to have_selector('.header-new-project-snippet')
     end
 
     scenario 'public project has no New Issue Button' do
-      visit namespace_project_path(public_project.namespace, public_project)
+      visit project_path(public_project)
 
       hasnot_topmenuitem("New issue")
     end
 
     scenario 'public project has no New merge request menu item' do
-      visit namespace_project_path(public_project.namespace, public_project)
+      visit project_path(public_project)
 
       hasnot_topmenuitem("New merge request")
     end
 
     scenario 'public project has no New project snippet menu item' do
-      visit namespace_project_path(public_project.namespace, public_project)
+      visit project_path(public_project)
 
       expect(find('.header-new.dropdown')).not_to have_selector('.header-new-project-snippet')
     end
diff --git a/spec/features/gitlab_flavored_markdown_spec.rb b/spec/features/gitlab_flavored_markdown_spec.rb
index 2d13af2a52aa8793db4e76dc29637e050177903b..8659a8686829a1cbb917af64ddd420803c2f7ecf 100644
--- a/spec/features/gitlab_flavored_markdown_spec.rb
+++ b/spec/features/gitlab_flavored_markdown_spec.rb
@@ -25,25 +25,25 @@ describe "GitLab Flavored Markdown", feature: true do
     end
 
     it "renders title in commits#index" do
-      visit namespace_project_commits_path(project.namespace, project, 'master', limit: 1)
+      visit project_commits_path(project, 'master', limit: 1)
 
       expect(page).to have_link(issue.to_reference)
     end
 
     it "renders title in commits#show" do
-      visit namespace_project_commit_path(project.namespace, project, commit)
+      visit project_commit_path(project, commit)
 
       expect(page).to have_link(issue.to_reference)
     end
 
     it "renders description in commits#show" do
-      visit namespace_project_commit_path(project.namespace, project, commit)
+      visit project_commit_path(project, commit)
 
       expect(page).to have_link(fred.to_reference)
     end
 
     it "renders title in repositories#branches" do
-      visit namespace_project_branches_path(project.namespace, project)
+      visit project_branches_path(project)
 
       expect(page).to have_link(issue.to_reference)
     end
@@ -66,19 +66,19 @@ describe "GitLab Flavored Markdown", feature: true do
     end
 
     it "renders subject in issues#index" do
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
 
       expect(page).to have_link(@other_issue.to_reference)
     end
 
     it "renders subject in issues#show" do
-      visit namespace_project_issue_path(project.namespace, project, @issue)
+      visit project_issue_path(project, @issue)
 
       expect(page).to have_link(@other_issue.to_reference)
     end
 
     it "renders details in issues#show" do
-      visit namespace_project_issue_path(project.namespace, project, @issue)
+      visit project_issue_path(project, @issue)
 
       expect(page).to have_link(fred.to_reference)
     end
@@ -92,13 +92,13 @@ describe "GitLab Flavored Markdown", feature: true do
     end
 
     it "renders title in merge_requests#index" do
-      visit namespace_project_merge_requests_path(project.namespace, project)
+      visit project_merge_requests_path(project)
 
       expect(page).to have_link(issue.to_reference)
     end
 
     it "renders title in merge_requests#show" do
-      visit namespace_project_merge_request_path(project.namespace, project, @merge_request)
+      visit project_merge_request_path(project, @merge_request)
 
       expect(page).to have_link(issue.to_reference)
     end
@@ -113,19 +113,19 @@ describe "GitLab Flavored Markdown", feature: true do
     end
 
     it "renders title in milestones#index" do
-      visit namespace_project_milestones_path(project.namespace, project)
+      visit project_milestones_path(project)
 
       expect(page).to have_link(issue.to_reference)
     end
 
     it "renders title in milestones#show" do
-      visit namespace_project_milestone_path(project.namespace, project, @milestone)
+      visit project_milestone_path(project, @milestone)
 
       expect(page).to have_link(issue.to_reference)
     end
 
     it "renders description in milestones#show" do
-      visit namespace_project_milestone_path(project.namespace, project, @milestone)
+      visit project_milestone_path(project, @milestone)
 
       expect(page).to have_link(fred.to_reference)
     end
diff --git a/spec/features/issuables/issuable_list_spec.rb b/spec/features/issuables/issuable_list_spec.rb
index f3a5a8463d1be2a85332ab768db0f55f7e02bff6..5046bfb59492381c44ce0c1bc2f498950de60a34 100644
--- a/spec/features/issuables/issuable_list_spec.rb
+++ b/spec/features/issuables/issuable_list_spec.rb
@@ -39,9 +39,9 @@ describe 'issuable list', feature: true do
 
   def visit_issuable_list(issuable_type)
     if issuable_type == :issue
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
     else
-      visit namespace_project_merge_requests_path(project.namespace, project)
+      visit project_merge_requests_path(project)
     end
   end
 
diff --git a/spec/features/issuables/user_sees_sidebar_spec.rb b/spec/features/issuables/user_sees_sidebar_spec.rb
index 4d7a7dc180616bf93472b571a1064fd764b883e1..948d151a517ec362d5be0f96ab57211661c0a418 100644
--- a/spec/features/issuables/user_sees_sidebar_spec.rb
+++ b/spec/features/issuables/user_sees_sidebar_spec.rb
@@ -14,7 +14,7 @@ describe 'Issue Sidebar on Mobile' do
 
   context 'mobile sidebar on merge requests', js: true do
     before do
-      visit namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
+      visit project_merge_request_path(merge_request.project, merge_request)
     end
 
     it_behaves_like "issue sidebar stays collapsed on mobile"
@@ -22,7 +22,7 @@ describe 'Issue Sidebar on Mobile' do
 
   context 'mobile sidebar on issues', js: true do
     before do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
     end
 
     it_behaves_like "issue sidebar stays collapsed on mobile"
diff --git a/spec/features/issues/award_emoji_spec.rb b/spec/features/issues/award_emoji_spec.rb
index 6698e2c79a147a468657f34666dcd07978abaffd..2c84965f7f3357562d80bc84715fb8b761c2ff33 100644
--- a/spec/features/issues/award_emoji_spec.rb
+++ b/spec/features/issues/award_emoji_spec.rb
@@ -19,7 +19,7 @@ describe 'Awards Emoji', feature: true do
       before do
         # The `heart_tip` emoji is not valid anymore so we need to skip validation
         issue.award_emoji.build(user: user, name: 'heart_tip').save!(validate: false)
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
         wait_for_requests
       end
 
@@ -33,7 +33,7 @@ describe 'Awards Emoji', feature: true do
       let!(:note) { create(:note_on_issue, noteable: issue, project: issue.project, note: "Hello world") }
 
       before do
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
         wait_for_requests
       end
 
@@ -97,7 +97,7 @@ describe 'Awards Emoji', feature: true do
 
   context 'unauthorized user', js: true do
     before do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
     end
 
     it 'has disabled emoji button' do
diff --git a/spec/features/issues/award_spec.rb b/spec/features/issues/award_spec.rb
index a1c97caea2055c73ecfd87716e1562556dd61521..62c5fce81b6db67d3564fc79fc3b808a8bbd921c 100644
--- a/spec/features/issues/award_spec.rb
+++ b/spec/features/issues/award_spec.rb
@@ -8,7 +8,7 @@ feature 'Issue awards', js: true, feature: true do
   describe 'logged in' do
     before do
       gitlab_sign_in(user)
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
       wait_for_requests
     end
 
@@ -17,7 +17,7 @@ feature 'Issue awards', js: true, feature: true do
       expect(page).to have_selector('.js-emoji-btn.active')
       expect(first('.js-emoji-btn')).to have_content '1'
 
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
       expect(first('.js-emoji-btn')).to have_content '1'
     end
 
@@ -26,7 +26,7 @@ feature 'Issue awards', js: true, feature: true do
       find('.js-emoji-btn.active').click
       expect(first('.js-emoji-btn')).to have_content '0'
 
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
       expect(first('.js-emoji-btn')).to have_content '0'
     end
 
@@ -40,7 +40,7 @@ feature 'Issue awards', js: true, feature: true do
 
   describe 'logged out' do
     before do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
       wait_for_requests
     end
 
diff --git a/spec/features/issues/bulk_assignment_labels_spec.rb b/spec/features/issues/bulk_assignment_labels_spec.rb
index a99c19cb78701717df1b58592020b503d9613b38..86226d97f79e5a1351795311a29d5fa3fba347d4 100644
--- a/spec/features/issues/bulk_assignment_labels_spec.rb
+++ b/spec/features/issues/bulk_assignment_labels_spec.rb
@@ -348,7 +348,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
     before do
       gitlab_sign_in user
 
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
     end
 
     context 'cannot bulk assign labels' do
@@ -410,7 +410,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
   end
 
   def enable_bulk_update
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
     click_button 'Edit Issues'
   end
 
diff --git a/spec/features/issues/create_branch_merge_request_spec.rb b/spec/features/issues/create_branch_merge_request_spec.rb
index aa538803dd880fd1277c7ab249535c7c8897ca9f..f730141f82c023f6eebf894ad2f47620b71da90b 100644
--- a/spec/features/issues/create_branch_merge_request_spec.rb
+++ b/spec/features/issues/create_branch_merge_request_spec.rb
@@ -12,7 +12,7 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
     end
 
     it 'allows creating a merge request from the issue page' do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
 
       select_dropdown_option('create-mr')
 
@@ -21,21 +21,21 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
       expect(page).to have_content("created branch 1-cherry-coloured-funk")
       expect(page).to have_content("mentioned in merge request !1")
 
-      visit namespace_project_merge_request_path(project.namespace, project, MergeRequest.first)
+      visit project_merge_request_path(project, MergeRequest.first)
 
       expect(page).to have_content('WIP: Resolve "Cherry-Coloured Funk"')
-      expect(current_path).to eq(namespace_project_merge_request_path(project.namespace, project, MergeRequest.first))
+      expect(current_path).to eq(project_merge_request_path(project, MergeRequest.first))
     end
 
     it 'allows creating a branch from the issue page' do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
 
       select_dropdown_option('create-branch')
 
       wait_for_requests
 
       expect(page).to have_selector('.dropdown-toggle-text ', text: '1-cherry-coloured-funk')
-      expect(current_path).to eq namespace_project_tree_path(project.namespace, project, '1-cherry-coloured-funk')
+      expect(current_path).to eq project_tree_path(project, '1-cherry-coloured-funk')
     end
 
     context "when there is a referenced merge request" do
@@ -52,7 +52,7 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
       before do
         referenced_mr.cache_merge_request_closes_issues!(user)
 
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
       end
 
       it 'disables the create branch button' do
@@ -66,7 +66,7 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
       it 'disables the create branch button' do
         issue = create(:issue, :confidential, project: project)
 
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
 
         expect(page).not_to have_css('.create-mr-dropdown-wrap')
       end
@@ -75,7 +75,7 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
 
   context 'for visitors' do
     before do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
     end
 
     it 'shows no buttons' do
diff --git a/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb b/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb
index 5f631043e15e7b60f680aa406407aa16c895d247..3b7622882c17e694b3a1600f4ada9921d14d7fb9 100644
--- a/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb
+++ b/spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb
@@ -10,12 +10,12 @@ feature 'Resolving all open discussions in a merge request from an issue', featu
     before do
       project.team << [user, :master]
       gitlab_sign_in user
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'shows a button to resolve all discussions by creating a new issue' do
       within('#resolve-count-app') do
-        expect(page).to have_link "Resolve all discussions in new issue", href: new_namespace_project_issue_path(project.namespace, project, merge_request_to_resolve_discussions_of: merge_request.iid)
+        expect(page).to have_link "Resolve all discussions in new issue", href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
       end
     end
 
@@ -25,13 +25,13 @@ feature 'Resolving all open discussions in a merge request from an issue', featu
       end
 
       it 'hides the link for creating a new issue' do
-        expect(page).not_to have_link "Resolve all discussions in new issue", href: new_namespace_project_issue_path(project.namespace, project, merge_request_to_resolve_discussions_of: merge_request.iid)
+        expect(page).not_to have_link "Resolve all discussions in new issue", href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
       end
     end
 
     context 'creating an issue for discussions' do
       before do
-        click_link "Resolve all discussions in new issue", href: new_namespace_project_issue_path(project.namespace, project, merge_request_to_resolve_discussions_of: merge_request.iid)
+        click_link "Resolve all discussions in new issue", href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
       end
 
       it_behaves_like 'creating an issue for a discussion'
@@ -45,7 +45,7 @@ feature 'Resolving all open discussions in a merge request from an issue', featu
       context 'with the internal tracker disabled' do
         before do
           project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED)
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it 'does not show a link to create a new issue' do
@@ -55,7 +55,7 @@ feature 'Resolving all open discussions in a merge request from an issue', featu
 
       context 'merge request has discussions that need to be resolved' do
         before do
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it 'shows a warning that the merge request contains unresolved discussions' do
@@ -64,13 +64,13 @@ feature 'Resolving all open discussions in a merge request from an issue', featu
 
         it 'has a link to resolve all discussions by creating an issue' do
           page.within '.mr-widget-body' do
-            expect(page).to have_link 'Create an issue to resolve them later', href: new_namespace_project_issue_path(project.namespace, project, merge_request_to_resolve_discussions_of: merge_request.iid)
+            expect(page).to have_link 'Create an issue to resolve them later', href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
           end
         end
 
         context 'creating an issue for discussions' do
           before do
-            page.click_link 'Create an issue to resolve them later', href: new_namespace_project_issue_path(project.namespace, project, merge_request_to_resolve_discussions_of: merge_request.iid)
+            page.click_link 'Create an issue to resolve them later', href: new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
           end
 
           it_behaves_like 'creating an issue for a discussion'
@@ -83,7 +83,7 @@ feature 'Resolving all open discussions in a merge request from an issue', featu
     before do
       project.team << [user, :reporter]
       gitlab_sign_in user
-      visit new_namespace_project_issue_path(project.namespace, project, merge_request_to_resolve_discussions_of: merge_request.iid)
+      visit new_project_issue_path(project, merge_request_to_resolve_discussions_of: merge_request.iid)
     end
 
     it 'Shows a notice to ask someone else to resolve the discussions' do
diff --git a/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb b/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb
index 9e9e214060f04501b828a76cf127fffe698ecc82..97d49184920a4c273b4fed130f41fa1036b832e9 100644
--- a/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb
+++ b/spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb
@@ -10,13 +10,13 @@ feature 'Resolve an open discussion in a merge request by creating an issue', fe
     before do
       project.team << [user, :master]
       gitlab_sign_in user
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     context 'with the internal tracker disabled' do
       before do
         project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED)
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
       end
 
       it 'does not show a link to create a new issue' do
@@ -43,14 +43,14 @@ feature 'Resolve an open discussion in a merge request by creating an issue', fe
     end
 
     it 'has a link to create a new issue for a discussion' do
-      new_issue_link = new_namespace_project_issue_path(project.namespace, project, discussion_to_resolve: discussion.id, merge_request_to_resolve_discussions_of: merge_request.iid)
+      new_issue_link = new_project_issue_path(project, discussion_to_resolve: discussion.id, merge_request_to_resolve_discussions_of: merge_request.iid)
 
       expect(page).to have_link 'Resolve this discussion in a new issue', href: new_issue_link
     end
 
     context 'creating the issue' do
       before do
-        click_link 'Resolve this discussion in a new issue', href: new_namespace_project_issue_path(project.namespace, project, discussion_to_resolve: discussion.id, merge_request_to_resolve_discussions_of: merge_request.iid)
+        click_link 'Resolve this discussion in a new issue', href: new_project_issue_path(project, discussion_to_resolve: discussion.id, merge_request_to_resolve_discussions_of: merge_request.iid)
       end
 
       it 'has a hidden field for the discussion' do
@@ -67,7 +67,7 @@ feature 'Resolve an open discussion in a merge request by creating an issue', fe
     before do
       project.team << [user, :reporter]
       gitlab_sign_in user
-      visit new_namespace_project_issue_path(project.namespace, project,
+      visit new_project_issue_path(project,
                                              merge_request_to_resolve_discussions_of: merge_request.iid,
                                              discussion_to_resolve: discussion.id)
     end
diff --git a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
index 96f6739af2d5aff80967ee8968db73f125ec2e6a..211f7eec560a7d593e5169e806f26f06bb42b292 100644
--- a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
@@ -26,7 +26,7 @@ describe 'Dropdown assignee', :feature, :js do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'behavior' do
diff --git a/spec/features/issues/filtered_search/dropdown_author_spec.rb b/spec/features/issues/filtered_search/dropdown_author_spec.rb
index 5ee824c662aabd46ad8f35c68e29be41328adf03..364c5564a1c82edd3f027c930cf7c95e95dd9c23 100644
--- a/spec/features/issues/filtered_search/dropdown_author_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_author_spec.rb
@@ -34,7 +34,7 @@ describe 'Dropdown author', js: true, feature: true do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'behavior' do
diff --git a/spec/features/issues/filtered_search/dropdown_hint_spec.rb b/spec/features/issues/filtered_search/dropdown_hint_spec.rb
index a05e4394ffdfcc767115e784d6d9bab324724d6d..14c506eead3949ca817f6c5f4e318dced7e904df 100644
--- a/spec/features/issues/filtered_search/dropdown_hint_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_hint_spec.rb
@@ -17,7 +17,7 @@ describe 'Dropdown hint', :js, :feature do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'behavior' do
diff --git a/spec/features/issues/filtered_search/dropdown_label_spec.rb b/spec/features/issues/filtered_search/dropdown_label_spec.rb
index aec9d7ceb5def6350ec032ac25111a30adc68bfb..04d2b39dbf2b5a954f20af1008c40c00a18fd8a8 100644
--- a/spec/features/issues/filtered_search/dropdown_label_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_label_spec.rb
@@ -37,7 +37,7 @@ describe 'Dropdown label', js: true, feature: true do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'keyboard navigation' do
diff --git a/spec/features/issues/filtered_search/dropdown_milestone_spec.rb b/spec/features/issues/filtered_search/dropdown_milestone_spec.rb
index b21f41946b72646615706f1b61c4feaa2fd50b5c..1507e9f76166f00b9b2d81f6887338801e06263c 100644
--- a/spec/features/issues/filtered_search/dropdown_milestone_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_milestone_spec.rb
@@ -33,7 +33,7 @@ describe 'Dropdown milestone', :feature, :js do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'behavior' do
diff --git a/spec/features/issues/filtered_search/filter_issues_spec.rb b/spec/features/issues/filtered_search/filter_issues_spec.rb
index 4cb728cc82b97d73e4f5ea119ac4ad0b2d01932f..9fc6391fa98e5e641600397b239c14933c0c326b 100644
--- a/spec/features/issues/filtered_search/filter_issues_spec.rb
+++ b/spec/features/issues/filtered_search/filter_issues_spec.rb
@@ -89,7 +89,7 @@ describe 'Filter issues', js: true, feature: true do
       milestone: future_milestone,
       project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'filter issues by author' do
@@ -804,7 +804,7 @@ describe 'Filter issues', js: true, feature: true do
 
   describe 'RSS feeds' do
     it 'updates atom feed link for project issues' do
-      visit namespace_project_issues_path(project.namespace, project, milestone_title: milestone.title, assignee_id: user.id)
+      visit project_issues_path(project, milestone_title: milestone.title, assignee_id: user.id)
       link = find_link('Subscribe')
       params = CGI.parse(URI.parse(link[:href]).query)
       auto_discovery_link = find('link[type="application/atom+xml"]', visible: false)
@@ -836,7 +836,7 @@ describe 'Filter issues', js: true, feature: true do
 
   context 'URL has a trailing slash' do
     before do
-      visit "#{namespace_project_issues_path(project.namespace, project)}/"
+      visit "#{project_issues_path(project)}/"
     end
 
     it 'milestone dropdown loads milestones' do
diff --git a/spec/features/issues/filtered_search/recent_searches_spec.rb b/spec/features/issues/filtered_search/recent_searches_spec.rb
index 09f228bcf49fb19ada85882dc5028010a2afb0d0..4a91ce4be07599cfe6331ae7d3afd7d7ef164c9d 100644
--- a/spec/features/issues/filtered_search/recent_searches_spec.rb
+++ b/spec/features/issues/filtered_search/recent_searches_spec.rb
@@ -22,7 +22,7 @@ describe 'Recent searches', js: true, feature: true do
   end
 
   it 'searching adds to recent searches' do
-    visit namespace_project_issues_path(project_1.namespace, project_1)
+    visit project_issues_path(project_1)
 
     input_filtered_search('foo', submit: true)
     input_filtered_search('bar', submit: true)
@@ -35,8 +35,8 @@ describe 'Recent searches', js: true, feature: true do
   end
 
   it 'visiting URL with search params adds to recent searches' do
-    visit namespace_project_issues_path(project_1.namespace, project_1, label_name: 'foo', search: 'bar')
-    visit namespace_project_issues_path(project_1.namespace, project_1, label_name: 'qux', search: 'garply')
+    visit project_issues_path(project_1, label_name: 'foo', search: 'bar')
+    visit project_issues_path(project_1, label_name: 'qux', search: 'garply')
 
     items = all('.filtered-search-history-dropdown-item', visible: false)
 
@@ -48,7 +48,7 @@ describe 'Recent searches', js: true, feature: true do
   it 'saved recent searches are restored last on the list' do
     set_recent_searches(project_1_local_storage_key, '["saved1", "saved2"]')
 
-    visit namespace_project_issues_path(project_1.namespace, project_1, search: 'foo')
+    visit project_issues_path(project_1, search: 'foo')
 
     items = all('.filtered-search-history-dropdown-item', visible: false)
 
@@ -59,12 +59,12 @@ describe 'Recent searches', js: true, feature: true do
   end
 
   it 'searches are scoped to projects' do
-    visit namespace_project_issues_path(project_1.namespace, project_1)
+    visit project_issues_path(project_1)
 
     input_filtered_search('foo', submit: true)
     input_filtered_search('bar', submit: true)
 
-    visit namespace_project_issues_path(project_2.namespace, project_2)
+    visit project_issues_path(project_2)
 
     input_filtered_search('more', submit: true)
     input_filtered_search('things', submit: true)
@@ -78,7 +78,7 @@ describe 'Recent searches', js: true, feature: true do
 
   it 'clicking item fills search input' do
     set_recent_searches(project_1_local_storage_key, '["foo", "bar"]')
-    visit namespace_project_issues_path(project_1.namespace, project_1)
+    visit project_issues_path(project_1)
 
     all('.filtered-search-history-dropdown-item', visible: false)[0].trigger('click')
     wait_for_filtered_search('foo')
@@ -88,7 +88,7 @@ describe 'Recent searches', js: true, feature: true do
 
   it 'clear recent searches button, clears recent searches' do
     set_recent_searches(project_1_local_storage_key, '["foo"]')
-    visit namespace_project_issues_path(project_1.namespace, project_1)
+    visit project_issues_path(project_1)
 
     items_before = all('.filtered-search-history-dropdown-item', visible: false)
 
@@ -102,7 +102,7 @@ describe 'Recent searches', js: true, feature: true do
 
   it 'shows flash error when failed to parse saved history' do
     set_recent_searches(project_1_local_storage_key, 'fail')
-    visit namespace_project_issues_path(project_1.namespace, project_1)
+    visit project_issues_path(project_1)
 
     expect(find('.flash-alert')).to have_text('An error occured while parsing recent searches')
   end
diff --git a/spec/features/issues/filtered_search/search_bar_spec.rb b/spec/features/issues/filtered_search/search_bar_spec.rb
index 806c732b93545f42a053e9bd84e62067ba7645f2..5b67d062f15eb56e3a50f62038c5e951eb037d36 100644
--- a/spec/features/issues/filtered_search/search_bar_spec.rb
+++ b/spec/features/issues/filtered_search/search_bar_spec.rb
@@ -12,7 +12,7 @@ describe 'Search bar', js: true, feature: true do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   def get_left_style(style)
diff --git a/spec/features/issues/filtered_search/visual_tokens_spec.rb b/spec/features/issues/filtered_search/visual_tokens_spec.rb
index 22488f3481382c21efc03894ee42e25d6dfc1c2f..08360bfa641033e454d9f8ca2228963f8503fe9a 100644
--- a/spec/features/issues/filtered_search/visual_tokens_spec.rb
+++ b/spec/features/issues/filtered_search/visual_tokens_spec.rb
@@ -28,7 +28,7 @@ describe 'Visual tokens', js: true, feature: true do
     gitlab_sign_in(user)
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
   end
 
   describe 'editing author token' do
diff --git a/spec/features/issues/form_spec.rb b/spec/features/issues/form_spec.rb
index 58f6bd277e4d64e50abf6da291a098ed71e459ac..5c75b0d56b069456ab046a55908275955243f0f7 100644
--- a/spec/features/issues/form_spec.rb
+++ b/spec/features/issues/form_spec.rb
@@ -1,7 +1,6 @@
 require 'rails_helper'
 
 describe 'New/edit issue', :feature, :js do
-  include GitlabRoutingHelper
   include ActionView::Helpers::JavaScriptHelper
   include FormHelper
 
@@ -21,7 +20,7 @@ describe 'New/edit issue', :feature, :js do
 
   context 'new issue' do
     before do
-      visit new_namespace_project_issue_path(project.namespace, project)
+      visit new_project_issue_path(project)
     end
 
     describe 'shorten users API pagination limit (CE)' do
@@ -39,7 +38,7 @@ describe 'New/edit issue', :feature, :js do
           options
         end
 
-        visit new_namespace_project_issue_path(project.namespace, project)
+        visit new_project_issue_path(project)
 
         click_button 'Unassigned'
 
@@ -221,7 +220,7 @@ describe 'New/edit issue', :feature, :js do
 
   context 'edit issue' do
     before do
-      visit edit_namespace_project_issue_path(project.namespace, project, issue)
+      visit edit_project_issue_path(project, issue)
     end
 
     it 'allows user to update issue' do
@@ -282,7 +281,7 @@ describe 'New/edit issue', :feature, :js do
     before do
       sub_group_project.add_master(user)
 
-      visit new_namespace_project_issue_path(sub_group_project.namespace, sub_group_project)
+      visit new_project_issue_path(sub_group_project)
     end
 
     it 'creates new label from dropdown' do
diff --git a/spec/features/issues/gfm_autocomplete_spec.rb b/spec/features/issues/gfm_autocomplete_spec.rb
index e61eb5233d0c5b35d688155a0efb0b1a7a64728e..a0f26bf9a92c57edc3d63ae0e64a055bd9f25efa 100644
--- a/spec/features/issues/gfm_autocomplete_spec.rb
+++ b/spec/features/issues/gfm_autocomplete_spec.rb
@@ -9,7 +9,7 @@ feature 'GFM autocomplete', feature: true, js: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
 
     wait_for_requests
   end
diff --git a/spec/features/issues/group_label_sidebar_spec.rb b/spec/features/issues/group_label_sidebar_spec.rb
index fc8515cfe9bc24092afb2467696744db3d402c3f..5531a662c67e2a3df53078c2663fd4e522c59332 100644
--- a/spec/features/issues/group_label_sidebar_spec.rb
+++ b/spec/features/issues/group_label_sidebar_spec.rb
@@ -6,13 +6,9 @@ describe 'Group label on issue', :feature do
     project = create(:empty_project, :public, namespace: group)
     feature = create(:group_label, group: group, title: 'feature')
     issue = create(:labeled_issue, project: project, labels: [feature])
-    label_link = namespace_project_issues_path(
-      project.namespace,
-      project,
-      label_name: [feature.name]
-    )
+    label_link = project_issues_path(project, label_name: [feature.name])
 
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
 
     link = find('.issuable-show-labels a')
 
diff --git a/spec/features/issues/issue_sidebar_spec.rb b/spec/features/issues/issue_sidebar_spec.rb
index 09724781a27e000ceecda538fb3da9fc88c047b3..8d9bfcdf4e0ce10ec38686da68bf35d38e3830da 100644
--- a/spec/features/issues/issue_sidebar_spec.rb
+++ b/spec/features/issues/issue_sidebar_spec.rb
@@ -166,7 +166,7 @@ feature 'Issue Sidebar', feature: true do
   end
 
   def visit_issue(project, issue)
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   def open_issue_sidebar
diff --git a/spec/features/issues/markdown_toolbar_spec.rb b/spec/features/issues/markdown_toolbar_spec.rb
index 66d823ec9d04b89d5ff0834daf7d2614567754bf..396b53556bf2cea13fb98188cd610c6dee32a28f 100644
--- a/spec/features/issues/markdown_toolbar_spec.rb
+++ b/spec/features/issues/markdown_toolbar_spec.rb
@@ -8,7 +8,7 @@ feature 'Issue markdown toolbar', feature: true, js: true do
   before do
     gitlab_sign_in(user)
 
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   it "doesn't include first new line when adding bold" do
diff --git a/spec/features/issues/move_spec.rb b/spec/features/issues/move_spec.rb
index d6e78157e5fc7a660dca24f3cd7639e6a0b9c5a7..568f2393aef98e26898ca67cc23bdb0e1b8fc6cc 100644
--- a/spec/features/issues/move_spec.rb
+++ b/spec/features/issues/move_spec.rb
@@ -95,10 +95,6 @@ feature 'issue move to another project' do
   end
 
   def issue_path(issue)
-    namespace_project_issue_path(issue.project.namespace, issue.project, issue)
-  end
-
-  def project_path(project)
-    namespace_project_path(new_project.namespace, new_project)
+    project_issue_path(issue.project, issue)
   end
 end
diff --git a/spec/features/issues/note_polling_spec.rb b/spec/features/issues/note_polling_spec.rb
index bd31e44ef337a4dfa6376f9ec641e6ce53255514..580b8d03fef65bb75e4c2c3507b119b8c23c9888 100644
--- a/spec/features/issues/note_polling_spec.rb
+++ b/spec/features/issues/note_polling_spec.rb
@@ -8,7 +8,7 @@ feature 'Issue notes polling', :feature, :js do
 
   describe 'creates' do
     before do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
     end
 
     it 'displays the new comment' do
@@ -28,7 +28,7 @@ feature 'Issue notes polling', :feature, :js do
 
       before do
         gitlab_sign_in(user)
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
       end
 
       it 'has .original-note-content to compare against' do
@@ -94,7 +94,7 @@ feature 'Issue notes polling', :feature, :js do
 
       before do
         gitlab_sign_in(user2)
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
       end
 
       it 'has .original-note-content to compare against' do
@@ -115,7 +115,7 @@ feature 'Issue notes polling', :feature, :js do
 
       before do
         gitlab_sign_in(user)
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
       end
 
       it 'has .original-note-content to compare against' do
diff --git a/spec/features/issues/notes_on_issues_spec.rb b/spec/features/issues/notes_on_issues_spec.rb
index f648295416f769e3d73f53a854436c317be2c06d..1871d853a9019afe0cd3e414fbd9c3ca1fd95bf1 100644
--- a/spec/features/issues/notes_on_issues_spec.rb
+++ b/spec/features/issues/notes_on_issues_spec.rb
@@ -10,7 +10,7 @@ describe 'Create notes on issues', :js, :feature do
     before do
       project.team << [user, :developer]
       gitlab_sign_in(user)
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
 
       fill_in 'note[note]', with: note_text
       click_button 'Comment'
diff --git a/spec/features/issues/spam_issues_spec.rb b/spec/features/issues/spam_issues_spec.rb
index 57c783790b51f1d78b7166849f02031a746e1677..76dae9212ddd8b58a8979f81bcd6925a532c108c 100644
--- a/spec/features/issues/spam_issues_spec.rb
+++ b/spec/features/issues/spam_issues_spec.rb
@@ -25,7 +25,7 @@ describe 'New issue', feature: true, js: true do
     before do
       WebMock.stub_request(:any, /.*akismet.com.*/).to_return(body: "true", status: 200)
 
-      visit new_namespace_project_issue_path(project.namespace, project)
+      visit new_project_issue_path(project)
     end
 
     it 'creates an issue after solving reCaptcha' do
@@ -50,7 +50,7 @@ describe 'New issue', feature: true, js: true do
     before do
       WebMock.stub_request(:any, /.*akismet.com.*/).to_return(body: 'false', status: 200)
 
-      visit new_namespace_project_issue_path(project.namespace, project)
+      visit new_project_issue_path(project)
     end
 
     it 'creates an issue' do
diff --git a/spec/features/issues/todo_spec.rb b/spec/features/issues/todo_spec.rb
index a1c00dd64f6c7cf6d7ef0afddd2cb03e6e0e5f04..1bcd717e8ddf633e07d10bdaadaf5094f08cec75 100644
--- a/spec/features/issues/todo_spec.rb
+++ b/spec/features/issues/todo_spec.rb
@@ -8,7 +8,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   it 'creates todo when clicking button' do
@@ -21,7 +21,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
       expect(page).to have_content '1'
     end
 
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
 
     page.within '.header-content .todos-count' do
       expect(page).to have_content '1'
@@ -36,7 +36,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
 
     expect(page).to have_selector('.todos-count', visible: false)
 
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
 
     expect(page).to have_selector('.todos-count', visible: false)
   end
diff --git a/spec/features/issues/update_issues_spec.rb b/spec/features/issues/update_issues_spec.rb
index df704b558393a49ebe7b4658c2311abd6802fcee..5a7c4f54cb638cf1d604a41ed1f92bfed1a53758 100644
--- a/spec/features/issues/update_issues_spec.rb
+++ b/spec/features/issues/update_issues_spec.rb
@@ -12,7 +12,7 @@ feature 'Multiple issue updating from issues#index', :js do
 
   context 'status' do
     it 'sets to closed' do
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
 
       click_button 'Edit Issues'
       find('#check-all-issues').click
@@ -25,7 +25,7 @@ feature 'Multiple issue updating from issues#index', :js do
 
     it 'sets to open' do
       create_closed
-      visit namespace_project_issues_path(project.namespace, project, state: 'closed')
+      visit project_issues_path(project, state: 'closed')
 
       click_button 'Edit Issues'
       find('#check-all-issues').click
@@ -39,7 +39,7 @@ feature 'Multiple issue updating from issues#index', :js do
 
   context 'assignee' do
     it 'updates to current user' do
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
 
       click_button 'Edit Issues'
       find('#check-all-issues').click
@@ -55,7 +55,7 @@ feature 'Multiple issue updating from issues#index', :js do
 
     it 'updates to unassigned' do
       create_assigned
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
 
       click_button 'Edit Issues'
       find('#check-all-issues').click
@@ -71,7 +71,7 @@ feature 'Multiple issue updating from issues#index', :js do
     let!(:milestone) { create(:milestone, project: project) }
 
     it 'updates milestone' do
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
 
       click_button 'Edit Issues'
       find('#check-all-issues').click
@@ -85,7 +85,7 @@ feature 'Multiple issue updating from issues#index', :js do
 
     it 'sets to no milestone' do
       create_with_milestone
-      visit namespace_project_issues_path(project.namespace, project)
+      visit project_issues_path(project)
 
       expect(first('.issue')).to have_content milestone.title
 
diff --git a/spec/features/issues/user_uses_slash_commands_spec.rb b/spec/features/issues/user_uses_slash_commands_spec.rb
index 168cdd0813754ee9d26f26a48c3ed13f450b93bc..ad28decfc007d31cb0a51e3c96e05fbe247b7d6f 100644
--- a/spec/features/issues/user_uses_slash_commands_spec.rb
+++ b/spec/features/issues/user_uses_slash_commands_spec.rb
@@ -14,7 +14,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
     before do
       project.team << [user, :master]
       gitlab_sign_in(user)
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
     end
 
     after do
@@ -43,7 +43,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
           project.team << [guest, :guest]
           gitlab_sign_out
           gitlab_sign_in(guest)
-          visit namespace_project_issue_path(project.namespace, project, issue)
+          visit project_issue_path(project, issue)
         end
 
         it 'does not create a note, and sets the due date accordingly' do
@@ -83,7 +83,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
           project.team << [guest, :guest]
           gitlab_sign_out
           gitlab_sign_in(guest)
-          visit namespace_project_issue_path(project.namespace, project, issue)
+          visit project_issue_path(project, issue)
         end
 
         it 'does not create a note, and sets the due date accordingly' do
@@ -108,7 +108,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
 
       context 'Issue' do
         before do
-          visit namespace_project_issue_path(project.namespace, project, issue)
+          visit project_issue_path(project, issue)
         end
 
         it_behaves_like 'issuable time tracker'
@@ -118,7 +118,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
         let(:merge_request) { create(:merge_request, source_project: project) }
 
         before do
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it_behaves_like 'issuable time tracker'
@@ -134,7 +134,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
 
       context 'Issue' do
         before do
-          visit namespace_project_issue_path(project.namespace, project, issue)
+          visit project_issue_path(project, issue)
         end
 
         it_behaves_like 'issuable time tracker'
@@ -144,7 +144,7 @@ feature 'Issues > User uses quick actions', feature: true, js: true do
         let(:merge_request) { create(:merge_request, source_project: project) }
 
         before do
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it_behaves_like 'issuable time tracker'
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index f47b89fd718e861f4f6f9fb34179773b82b6be9c..8cb62910e18d821598dcf0fe7aa09366c2fa70a4 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -24,7 +24,7 @@ describe 'Issues', feature: true do
     end
 
     before do
-      visit edit_namespace_project_issue_path(project.namespace, project, issue)
+      visit edit_project_issue_path(project, issue)
       find('.js-zen-enter').click
     end
 
@@ -42,7 +42,7 @@ describe 'Issues', feature: true do
     end
 
     it 'allows user to select unassigned', js: true do
-      visit edit_namespace_project_issue_path(project.namespace, project, issue)
+      visit edit_project_issue_path(project, issue)
 
       expect(page).to have_content "Assignee #{user.name}"
 
@@ -62,7 +62,7 @@ describe 'Issues', feature: true do
   describe 'due date', js: true do
     context 'on new form' do
       before do
-        visit new_namespace_project_issue_path(project.namespace, project)
+        visit new_project_issue_path(project)
       end
 
       it 'saves with due date' do
@@ -90,7 +90,7 @@ describe 'Issues', feature: true do
       let(:issue) { create(:issue, author: user, project: project, due_date: Date.today.at_beginning_of_month.to_s) }
 
       before do
-        visit edit_namespace_project_issue_path(project.namespace, project, issue)
+        visit edit_project_issue_path(project, issue)
       end
 
       it 'saves with due date' do
@@ -135,7 +135,7 @@ describe 'Issues', feature: true do
       issue = create(:issue, author: user, assignees: [user], project: project, title: 'foobar')
       create(:award_emoji, awardable: issue)
 
-      visit namespace_project_issues_path(project.namespace, project, assignee_id: user.id)
+      visit project_issues_path(project, assignee_id: user.id)
 
       expect(page).to have_content 'foobar'
       expect(page.all('.no-comments').first.text).to eq "0"
@@ -161,7 +161,7 @@ describe 'Issues', feature: true do
     let(:issue) { @issue }
 
     it 'allows filtering by issues with no specified assignee' do
-      visit namespace_project_issues_path(project.namespace, project, assignee_id: IssuableFinder::NONE)
+      visit project_issues_path(project, assignee_id: IssuableFinder::NONE)
 
       expect(page).to have_content 'foobar'
       expect(page).not_to have_content 'barbaz'
@@ -169,7 +169,7 @@ describe 'Issues', feature: true do
     end
 
     it 'allows filtering by a specified assignee' do
-      visit namespace_project_issues_path(project.namespace, project, assignee_id: user.id)
+      visit project_issues_path(project, assignee_id: user.id)
 
       expect(page).not_to have_content 'foobar'
       expect(page).to have_content 'barbaz'
@@ -190,14 +190,14 @@ describe 'Issues', feature: true do
     let(:later_due_milestone) { create(:milestone, due_date: '2013-12-12') }
 
     it 'sorts by newest' do
-      visit namespace_project_issues_path(project.namespace, project, sort: sort_value_recently_created)
+      visit project_issues_path(project, sort: sort_value_recently_created)
 
       expect(first_issue).to include('foo')
       expect(last_issue).to include('baz')
     end
 
     it 'sorts by oldest' do
-      visit namespace_project_issues_path(project.namespace, project, sort: sort_value_oldest_created)
+      visit project_issues_path(project, sort: sort_value_oldest_created)
 
       expect(first_issue).to include('baz')
       expect(last_issue).to include('foo')
@@ -206,7 +206,7 @@ describe 'Issues', feature: true do
     it 'sorts by most recently updated' do
       baz.updated_at = Time.now + 100
       baz.save
-      visit namespace_project_issues_path(project.namespace, project, sort: sort_value_recently_updated)
+      visit project_issues_path(project, sort: sort_value_recently_updated)
 
       expect(first_issue).to include('baz')
     end
@@ -214,7 +214,7 @@ describe 'Issues', feature: true do
     it 'sorts by least recently updated' do
       baz.updated_at = Time.now - 100
       baz.save
-      visit namespace_project_issues_path(project.namespace, project, sort: sort_value_oldest_updated)
+      visit project_issues_path(project, sort: sort_value_oldest_updated)
 
       expect(first_issue).to include('baz')
     end
@@ -226,13 +226,13 @@ describe 'Issues', feature: true do
       end
 
       it 'sorts by recently due date' do
-        visit namespace_project_issues_path(project.namespace, project, sort: sort_value_due_date_soon)
+        visit project_issues_path(project, sort: sort_value_due_date_soon)
 
         expect(first_issue).to include('foo')
       end
 
       it 'sorts by least recently due date' do
-        visit namespace_project_issues_path(project.namespace, project, sort: sort_value_due_date_later)
+        visit project_issues_path(project, sort: sort_value_due_date_later)
 
         expect(first_issue).to include('bar')
       end
@@ -240,7 +240,7 @@ describe 'Issues', feature: true do
       it 'sorts by least recently due date by excluding nil due dates' do
         bar.update(due_date: nil)
 
-        visit namespace_project_issues_path(project.namespace, project, sort: sort_value_due_date_later)
+        visit project_issues_path(project, sort: sort_value_due_date_later)
 
         expect(first_issue).to include('foo')
       end
@@ -255,7 +255,7 @@ describe 'Issues', feature: true do
         it 'sorts by least recently due date by excluding nil due dates' do
           bar.update(due_date: nil)
 
-          visit namespace_project_issues_path(project.namespace, project, label_names: [label.name], sort: sort_value_due_date_later)
+          visit project_issues_path(project, label_names: [label.name], sort: sort_value_due_date_later)
 
           expect(first_issue).to include('foo')
         end
@@ -269,7 +269,7 @@ describe 'Issues', feature: true do
       end
 
       it 'filters by none' do
-        visit namespace_project_issues_path(project.namespace, project, due_date: Issue::NoDueDate.name)
+        visit project_issues_path(project, due_date: Issue::NoDueDate.name)
 
         expect(page).not_to have_content('foo')
         expect(page).not_to have_content('bar')
@@ -277,7 +277,7 @@ describe 'Issues', feature: true do
       end
 
       it 'filters by any' do
-        visit namespace_project_issues_path(project.namespace, project, due_date: Issue::AnyDueDate.name)
+        visit project_issues_path(project, due_date: Issue::AnyDueDate.name)
 
         expect(page).to have_content('foo')
         expect(page).to have_content('bar')
@@ -289,7 +289,7 @@ describe 'Issues', feature: true do
         bar.update(due_date: Date.today.end_of_week)
         baz.update(due_date: Date.today - 8.days)
 
-        visit namespace_project_issues_path(project.namespace, project, due_date: Issue::DueThisWeek.name)
+        visit project_issues_path(project, due_date: Issue::DueThisWeek.name)
 
         expect(page).to have_content('foo')
         expect(page).to have_content('bar')
@@ -301,7 +301,7 @@ describe 'Issues', feature: true do
         bar.update(due_date: Date.today.end_of_month)
         baz.update(due_date: Date.today - 50.days)
 
-        visit namespace_project_issues_path(project.namespace, project, due_date: Issue::DueThisMonth.name)
+        visit project_issues_path(project, due_date: Issue::DueThisMonth.name)
 
         expect(page).to have_content('foo')
         expect(page).to have_content('bar')
@@ -313,7 +313,7 @@ describe 'Issues', feature: true do
         bar.update(due_date: Date.today + 20.days)
         baz.update(due_date: Date.yesterday)
 
-        visit namespace_project_issues_path(project.namespace, project, due_date: Issue::Overdue.name)
+        visit project_issues_path(project, due_date: Issue::Overdue.name)
 
         expect(page).not_to have_content('foo')
         expect(page).not_to have_content('bar')
@@ -330,14 +330,14 @@ describe 'Issues', feature: true do
       end
 
       it 'sorts by recently due milestone' do
-        visit namespace_project_issues_path(project.namespace, project, sort: sort_value_milestone_soon)
+        visit project_issues_path(project, sort: sort_value_milestone_soon)
 
         expect(first_issue).to include('foo')
         expect(last_issue).to include('baz')
       end
 
       it 'sorts by least recently due milestone' do
-        visit namespace_project_issues_path(project.namespace, project, sort: sort_value_milestone_later)
+        visit project_issues_path(project, sort: sort_value_milestone_later)
 
         expect(first_issue).to include('bar')
         expect(last_issue).to include('baz')
@@ -355,7 +355,7 @@ describe 'Issues', feature: true do
       end
 
       it 'sorts with a filter applied' do
-        visit namespace_project_issues_path(project.namespace, project,
+        visit project_issues_path(project,
                                             sort: sort_value_oldest_created,
                                             assignee_id: user2.id)
 
@@ -397,7 +397,7 @@ describe 'Issues', feature: true do
     let!(:label) { create(:label, project: project) }
 
     before do
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
     end
 
     it 'will not send ajax request when no data is changed' do
@@ -416,7 +416,7 @@ describe 'Issues', feature: true do
 
     context 'by authorized user' do
       it 'allows user to select unassigned', js: true do
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
 
         page.within('.assignee') do
           expect(page).to have_content "#{user.name}"
@@ -435,7 +435,7 @@ describe 'Issues', feature: true do
 
       it 'allows user to select an assignee', js: true do
         issue2 = create(:issue, project: project, author: user)
-        visit namespace_project_issue_path(project.namespace, project, issue2)
+        visit project_issue_path(project, issue2)
 
         page.within('.assignee') do
           expect(page).to have_content "No assignee"
@@ -456,7 +456,7 @@ describe 'Issues', feature: true do
 
       it 'allows user to unselect themselves', js: true do
         issue2 = create(:issue, project: project, author: user)
-        visit namespace_project_issue_path(project.namespace, project, issue2)
+        visit project_issue_path(project, issue2)
 
         page.within '.assignee' do
           click_link 'Edit'
@@ -487,7 +487,7 @@ describe 'Issues', feature: true do
         sign_out(:user)
         sign_in(guest)
 
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
         expect(page).to have_content issue.assignees.first.name
       end
     end
@@ -499,7 +499,7 @@ describe 'Issues', feature: true do
 
     context 'by authorized user' do
       it 'allows user to select unassigned', js: true do
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
 
         page.within('.milestone') do
           expect(page).to have_content "None"
@@ -517,7 +517,7 @@ describe 'Issues', feature: true do
       end
 
       it 'allows user to de-select milestone', js: true do
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
 
         page.within('.milestone') do
           click_link 'Edit'
@@ -550,7 +550,7 @@ describe 'Issues', feature: true do
         sign_out(:user)
         sign_in(guest)
 
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
         expect(page).to have_content milestone.title
       end
     end
@@ -565,7 +565,7 @@ describe 'Issues', feature: true do
       end
 
       it 'redirects to signin then back to new issue after signin' do
-        visit namespace_project_issues_path(project.namespace, project)
+        visit project_issues_path(project)
 
         click_link 'New issue'
 
@@ -575,13 +575,13 @@ describe 'Issues', feature: true do
         # need the full login flow
         gitlab_sign_in(create(:user))
 
-        expect(current_path).to eq new_namespace_project_issue_path(project.namespace, project)
+        expect(current_path).to eq new_project_issue_path(project)
       end
     end
 
     context 'dropzone upload file', js: true do
       before do
-        visit new_namespace_project_issue_path(project.namespace, project)
+        visit new_project_issue_path(project)
       end
 
       it 'uploads file when dragging into textarea' do
@@ -608,7 +608,7 @@ describe 'Issues', feature: true do
           message: 'added issue template',
           branch_name: 'master')
 
-        visit new_namespace_project_issue_path(project.namespace, project, issuable_template: 'bug')
+        visit new_project_issue_path(project, issuable_template: 'bug')
       end
 
       it 'fills in template' do
@@ -625,7 +625,7 @@ describe 'Issues', feature: true do
         project.issues << issue
         stub_incoming_email_setting(enabled: true, address: "p+%{key}@gl.ab")
 
-        visit namespace_project_issues_path(project.namespace, project)
+        visit project_issues_path(project)
         click_button('Email a new issue')
       end
 
@@ -654,7 +654,7 @@ describe 'Issues', feature: true do
       let(:issue) { create(:issue, project: project, author: user, assignees: [user]) }
 
       before do
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
       end
 
       it 'adds due date to issue' do
@@ -698,7 +698,7 @@ describe 'Issues', feature: true do
     it 'updates the title', js: true do
       issue = create(:issue, author: user, assignees: [user], project: project, title: 'new title')
 
-      visit namespace_project_issue_path(project.namespace, project, issue)
+      visit project_issue_path(project, issue)
 
       expect(page).to have_text("new title")
 
diff --git a/spec/features/merge_requests/assign_issues_spec.rb b/spec/features/merge_requests/assign_issues_spec.rb
index cb835f533e08dbedfd9b592839cabf5407701811..9d9a31ab8e84841042f0fb2a9c40f0e89bb72341 100644
--- a/spec/features/merge_requests/assign_issues_spec.rb
+++ b/spec/features/merge_requests/assign_issues_spec.rb
@@ -14,7 +14,7 @@ feature 'Merge request issue assignment', js: true, feature: true do
 
   def visit_merge_request(current_user = nil)
     gitlab_sign_in(current_user || user)
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
   end
 
   context 'logged in as author' do
diff --git a/spec/features/merge_requests/award_spec.rb b/spec/features/merge_requests/award_spec.rb
index e9dd755b6af6f5602f9c0f8d0be1e4aa8c7e5197..ed5a4fa5784d7fd85dca14affc5cd39ba19b068d 100644
--- a/spec/features/merge_requests/award_spec.rb
+++ b/spec/features/merge_requests/award_spec.rb
@@ -8,7 +8,7 @@ feature 'Merge request awards', js: true, feature: true do
   describe 'logged in' do
     before do
       gitlab_sign_in(user)
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'adds award to merge request' do
@@ -16,7 +16,7 @@ feature 'Merge request awards', js: true, feature: true do
       expect(page).to have_selector('.js-emoji-btn.active')
       expect(first('.js-emoji-btn')).to have_content '1'
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
       expect(first('.js-emoji-btn')).to have_content '1'
     end
 
@@ -25,7 +25,7 @@ feature 'Merge request awards', js: true, feature: true do
       find('.js-emoji-btn.active').click
       expect(first('.js-emoji-btn')).to have_content '0'
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
       expect(first('.js-emoji-btn')).to have_content '0'
     end
 
@@ -39,7 +39,7 @@ feature 'Merge request awards', js: true, feature: true do
 
   describe 'logged out' do
     before do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'does not see award menu button' do
diff --git a/spec/features/merge_requests/check_if_mergeable_with_unresolved_discussions_spec.rb b/spec/features/merge_requests/check_if_mergeable_with_unresolved_discussions_spec.rb
index 060cfb8fdd1d06f056319301597d833c8ebdc97c..0f8ab4cd92bc3426e90c3c6addde71323ae090ab 100644
--- a/spec/features/merge_requests/check_if_mergeable_with_unresolved_discussions_spec.rb
+++ b/spec/features/merge_requests/check_if_mergeable_with_unresolved_discussions_spec.rb
@@ -64,6 +64,6 @@ feature 'Check if mergeable with unresolved discussions', js: true, feature: tru
   end
 
   def visit_merge_request(merge_request)
-    visit namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
+    visit project_merge_request_path(merge_request.project, merge_request)
   end
 end
diff --git a/spec/features/merge_requests/cherry_pick_spec.rb b/spec/features/merge_requests/cherry_pick_spec.rb
index 6ba96570e3d4e55e7bd5caf69d18e8a0eda6825b..5a5f884c6b3579622e94b2bb7e8a7925df139d2f 100644
--- a/spec/features/merge_requests/cherry_pick_spec.rb
+++ b/spec/features/merge_requests/cherry_pick_spec.rb
@@ -28,7 +28,7 @@ describe 'Cherry-pick Merge Requests', js: true do
       end
 
       it "doesn't show a Cherry-pick button" do
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
 
         expect(page).not_to have_link "Cherry-pick"
       end
@@ -36,7 +36,7 @@ describe 'Cherry-pick Merge Requests', js: true do
 
     context "With a merge commit" do
       it "shows a Cherry-pick button" do
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
 
         expect(page).to have_link "Cherry-pick"
       end
diff --git a/spec/features/merge_requests/closes_issues_spec.rb b/spec/features/merge_requests/closes_issues_spec.rb
index 365b2555c35340f036ddddb42ef2f00d8b752a63..2f639b54637a57261acc0ccf2b9bd67ad42303b7 100644
--- a/spec/features/merge_requests/closes_issues_spec.rb
+++ b/spec/features/merge_requests/closes_issues_spec.rb
@@ -22,7 +22,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
 
     gitlab_sign_in user
 
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
     wait_for_requests
   end
 
diff --git a/spec/features/merge_requests/conflicts_spec.rb b/spec/features/merge_requests/conflicts_spec.rb
index 9c091befa27eb52a750bc1b9811f19fe24efdb3f..a9947381f46e6e1891b3ae713ce11ab8c24de6e8 100644
--- a/spec/features/merge_requests/conflicts_spec.rb
+++ b/spec/features/merge_requests/conflicts_spec.rb
@@ -86,7 +86,7 @@ feature 'Merge request conflict resolution', js: true, feature: true do
       let(:merge_request) { create_merge_request('conflict-resolvable') }
 
       before do
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
       end
 
       it 'shows a link to the conflict resolution page' do
@@ -117,7 +117,7 @@ feature 'Merge request conflict resolution', js: true, feature: true do
       let(:merge_request) { create_merge_request('conflict-contains-conflict-markers') }
 
       before do
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
         click_link('conflicts', href: /\/conflicts\Z/)
       end
 
@@ -166,7 +166,7 @@ feature 'Merge request conflict resolution', js: true, feature: true do
         project.team << [user, :developer]
         gitlab_sign_in(user)
 
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
       end
 
       it 'does not show a link to the conflict resolution page' do
diff --git a/spec/features/merge_requests/create_new_mr_spec.rb b/spec/features/merge_requests/create_new_mr_spec.rb
index 6a08e50bf5e9af76198bb16ff7272dc71978ff6a..198fcba4e78db444964c056e0c41582d564eb1c7 100644
--- a/spec/features/merge_requests/create_new_mr_spec.rb
+++ b/spec/features/merge_requests/create_new_mr_spec.rb
@@ -11,7 +11,7 @@ feature 'Create New Merge Request', feature: true, js: true do
   end
 
   it 'selects the source branch sha when a tag with the same name exists' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
 
     click_link 'New merge request'
     expect(page).to have_content('Source branch')
@@ -24,7 +24,7 @@ feature 'Create New Merge Request', feature: true, js: true do
   end
 
   it 'selects the target branch sha when a tag with the same name exists' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
 
     click_link 'New merge request'
 
@@ -38,7 +38,7 @@ feature 'Create New Merge Request', feature: true, js: true do
   end
 
   it 'generates a diff for an orphaned branch' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
 
     page.has_link?('New Merge Request') ? click_link("New Merge Request") : click_link('New merge request')
     expect(page).to have_content('Source branch')
@@ -65,7 +65,7 @@ feature 'Create New Merge Request', feature: true, js: true do
     it 'does not leak the private project name & namespace' do
       private_project = create(:project, :private)
 
-      visit namespace_project_new_merge_request_path(project.namespace, project, merge_request: { target_project_id: private_project.id })
+      visit project_new_merge_request_path(project, merge_request: { target_project_id: private_project.id })
 
       expect(page).not_to have_content private_project.path_with_namespace
       expect(page).to have_content project.path_with_namespace
@@ -76,7 +76,7 @@ feature 'Create New Merge Request', feature: true, js: true do
     it 'does not leak the private project name & namespace' do
       private_project = create(:project, :private)
 
-      visit namespace_project_new_merge_request_path(project.namespace, project, merge_request: { source_project_id: private_project.id })
+      visit project_new_merge_request_path(project, merge_request: { source_project_id: private_project.id })
 
       expect(page).not_to have_content private_project.path_with_namespace
       expect(page).to have_content project.path_with_namespace
@@ -84,13 +84,13 @@ feature 'Create New Merge Request', feature: true, js: true do
   end
 
   it 'populates source branch button' do
-    visit namespace_project_new_merge_request_path(project.namespace, project, change_branches: true, merge_request: { target_branch: 'master', source_branch: 'fix' })
+    visit project_new_merge_request_path(project, change_branches: true, merge_request: { target_branch: 'master', source_branch: 'fix' })
 
     expect(find('.js-source-branch')).to have_content('fix')
   end
 
   it 'allows to change the diff view' do
-    visit namespace_project_new_merge_request_path(project.namespace, project, merge_request: { target_branch: 'master', source_branch: 'fix' })
+    visit project_new_merge_request_path(project, merge_request: { target_branch: 'master', source_branch: 'fix' })
 
     click_link 'Changes'
 
@@ -106,7 +106,7 @@ feature 'Create New Merge Request', feature: true, js: true do
   end
 
   it 'does not allow non-existing branches' do
-    visit namespace_project_new_merge_request_path(project.namespace, project, merge_request: { target_branch: 'non-exist-target', source_branch: 'non-exist-source' })
+    visit project_new_merge_request_path(project, merge_request: { target_branch: 'non-exist-target', source_branch: 'non-exist-source' })
 
     expect(page).to have_content('The form contains the following errors')
     expect(page).to have_content('Source branch "non-exist-source" does not exist')
@@ -115,7 +115,7 @@ feature 'Create New Merge Request', feature: true, js: true do
 
   context 'when a branch contains commits that both delete and add the same image' do
     it 'renders the diff successfully' do
-      visit namespace_project_new_merge_request_path(project.namespace, project, merge_request: { target_branch: 'master', source_branch: 'deleted-image-test' })
+      visit project_new_merge_request_path(project, merge_request: { target_branch: 'master', source_branch: 'deleted-image-test' })
 
       click_link "Changes"
 
@@ -125,7 +125,7 @@ feature 'Create New Merge Request', feature: true, js: true do
 
   # Isolates a regression (see #24627)
   it 'does not show error messages on initial form' do
-    visit namespace_project_new_merge_request_path(project.namespace, project)
+    visit project_new_merge_request_path(project)
     expect(page).not_to have_selector('#error_explanation')
     expect(page).not_to have_content('The form contains the following error')
   end
@@ -138,8 +138,8 @@ feature 'Create New Merge Request', feature: true, js: true do
     end
 
     it 'shows pipelines for a new merge request' do
-      visit namespace_project_new_merge_request_path(
-        project.namespace, project,
+      visit project_new_merge_request_path(
+        project,
         merge_request: { target_branch: 'master', source_branch: 'fix' })
 
       page.within('.merge-request') do
diff --git a/spec/features/merge_requests/created_from_fork_spec.rb b/spec/features/merge_requests/created_from_fork_spec.rb
index 69059dfa5623ee9a72e20f39c061d64f625857c8..9f1b6be67d4062849c2b465d1aa2c0c3ee760569 100644
--- a/spec/features/merge_requests/created_from_fork_spec.rb
+++ b/spec/features/merge_requests/created_from_fork_spec.rb
@@ -64,7 +64,6 @@ feature 'Merge request created from fork' do
   end
 
   def visit_merge_request(mr)
-    visit namespace_project_merge_request_path(project.namespace,
-                                               project, mr)
+    visit project_merge_request_path(project, mr)
   end
 end
diff --git a/spec/features/merge_requests/deleted_source_branch_spec.rb b/spec/features/merge_requests/deleted_source_branch_spec.rb
index f2af31983197e311a635c8a6d35c855a63b8cd72..671c17cd9e335aae6ffaec74126dde96cdddd6c6 100644
--- a/spec/features/merge_requests/deleted_source_branch_spec.rb
+++ b/spec/features/merge_requests/deleted_source_branch_spec.rb
@@ -11,11 +11,7 @@ describe 'Deleted source branch', feature: true, js: true do
     gitlab_sign_in user
     merge_request.project.team << [user, :master]
     merge_request.update!(source_branch: 'this-branch-does-not-exist')
-    visit namespace_project_merge_request_path(
-      merge_request.project.namespace,
-      merge_request.project,
-      merge_request
-    )
+    visit project_merge_request_path(merge_request.project, merge_request)
   end
 
   it 'shows a message about missing source branch' do
diff --git a/spec/features/merge_requests/diff_notes_avatars_spec.rb b/spec/features/merge_requests/diff_notes_avatars_spec.rb
index 989dfb71d103b34cb28719804d685f2cb33333e2..1b45bb7386390425ba4d30c0648990e1b4afac99 100644
--- a/spec/features/merge_requests/diff_notes_avatars_spec.rb
+++ b/spec/features/merge_requests/diff_notes_avatars_spec.rb
@@ -25,7 +25,7 @@ feature 'Diff note avatars', feature: true, js: true do
 
   context 'discussion tab' do
     before do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'does not show avatars on discussion tab' do
@@ -50,7 +50,7 @@ feature 'Diff note avatars', feature: true, js: true do
 
   context 'commit view' do
     before do
-      visit namespace_project_commit_path(project.namespace, project, merge_request.commits.first.id)
+      visit project_commit_path(project, merge_request.commits.first.id)
     end
 
     it 'does not render avatar after commenting' do
@@ -65,7 +65,7 @@ feature 'Diff note avatars', feature: true, js: true do
         wait_for_requests
       end
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
 
       expect(page).to have_content('test comment')
       expect(page).not_to have_selector('.js-avatar-container')
@@ -76,7 +76,7 @@ feature 'Diff note avatars', feature: true, js: true do
   %w(inline parallel).each do |view|
     context "#{view} view" do
       before do
-        visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: view)
+        visit diffs_project_merge_request_path(project, merge_request, view: view)
 
         wait_for_requests
       end
@@ -168,7 +168,7 @@ feature 'Diff note avatars', feature: true, js: true do
         before do
           create_list(:diff_note_on_merge_request, 3, project: project, noteable: merge_request, in_reply_to: note)
 
-          visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: view)
+          visit diffs_project_merge_request_path(project, merge_request, view: view)
 
           wait_for_requests
         end
diff --git a/spec/features/merge_requests/diff_notes_resolve_spec.rb b/spec/features/merge_requests/diff_notes_resolve_spec.rb
index 0f8ca6f90d1d373f746b0ba81b7e847614143778..21dce18508555ccae20872cf0452ea31e199ce5e 100644
--- a/spec/features/merge_requests/diff_notes_resolve_spec.rb
+++ b/spec/features/merge_requests/diff_notes_resolve_spec.rb
@@ -494,6 +494,6 @@ feature 'Diff notes resolve', feature: true, js: true do
 
   def visit_merge_request(mr = nil)
     mr = mr || merge_request
-    visit namespace_project_merge_request_path(mr.project.namespace, mr.project, mr)
+    visit project_merge_request_path(mr.project, mr)
   end
 end
diff --git a/spec/features/merge_requests/diffs_spec.rb b/spec/features/merge_requests/diffs_spec.rb
index cb6cd6571a8f5ebf27910d014c9a11729d45cfa2..35976b615ade0fe4e514063a2baf860eb53be458 100644
--- a/spec/features/merge_requests/diffs_spec.rb
+++ b/spec/features/merge_requests/diffs_spec.rb
@@ -12,7 +12,7 @@ feature 'Diffs URL', js: true, feature: true do
     it 'renders the notes' do
       create :note_on_merge_request, project: project, noteable: merge_request, note: 'Rebasing with master'
 
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit diffs_project_merge_request_path(project, merge_request)
 
       # Load notes and diff through AJAX
       expect(page).to have_css('.note-text', visible: false, text: 'Rebasing with master')
@@ -26,7 +26,7 @@ feature 'Diffs URL', js: true, feature: true do
       let(:fragment) { "#note_#{note.id}" }
 
       before do
-        visit "#{diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)}#{fragment}"
+        visit "#{diffs_project_merge_request_path(project, merge_request)}#{fragment}"
       end
 
       it 'shows expanded note' do
@@ -39,7 +39,7 @@ feature 'Diffs URL', js: true, feature: true do
       let(:fragment) { "#note_#{note.id}" }
 
       before do
-        visit "#{diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)}#{fragment}"
+        visit "#{diffs_project_merge_request_path(project, merge_request)}#{fragment}"
       end
 
       it 'shows expanded note' do
@@ -52,7 +52,7 @@ feature 'Diffs URL', js: true, feature: true do
     it 'displays warning' do
       allow(Commit).to receive(:max_diff_options).and_return(max_files: 3)
 
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit diffs_project_merge_request_path(project, merge_request)
 
       page.within('.alert') do
         expect(page).to have_text("Too many changes to show. Plain diff Email patch To preserve
@@ -75,7 +75,7 @@ feature 'Diffs URL', js: true, feature: true do
     context 'as author' do
       it 'shows direct edit link' do
         gitlab_sign_in(author_user)
-        visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit diffs_project_merge_request_path(project, merge_request)
 
         # Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax
         expect(page).to have_selector("[id=\"#{changelog_id}\"] a.js-edit-blob")
@@ -85,7 +85,7 @@ feature 'Diffs URL', js: true, feature: true do
     context 'as user who needs to fork' do
       it 'shows fork/cancel confirmation' do
         gitlab_sign_in(user)
-        visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit diffs_project_merge_request_path(project, merge_request)
 
         # Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax
         find("[id=\"#{changelog_id}\"] .js-edit-blob").click
diff --git a/spec/features/merge_requests/discussion_spec.rb b/spec/features/merge_requests/discussion_spec.rb
index 88ae257236c3beffc8dfec7d40b15750cbf065e0..a50f66cfc6439216a34fa0316e08e35ed3757760 100644
--- a/spec/features/merge_requests/discussion_spec.rb
+++ b/spec/features/merge_requests/discussion_spec.rb
@@ -27,13 +27,13 @@ feature 'Merge Request Discussions', feature: true do
     let(:outdated_diff_refs) { project.commit("874797c3a73b60d2187ed6e2fcabd289ff75171e").diff_refs }
 
     before(:each) do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     context 'active discussions' do
       it 'shows a link to the diff' do
         within(".discussion[data-discussion-id='#{active_discussion.id}']") do
-          path = diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, anchor: active_discussion.line_code)
+          path = diffs_project_merge_request_path(project, merge_request, anchor: active_discussion.line_code)
           expect(page).to have_link('the diff', href: path)
         end
       end
@@ -42,7 +42,7 @@ feature 'Merge Request Discussions', feature: true do
     context 'outdated discussions' do
       it 'shows a link to the outdated diff' do
         within(".discussion[data-discussion-id='#{outdated_discussion.id}']") do
-          path = diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, diff_id: old_merge_request_diff.id, anchor: outdated_discussion.line_code)
+          path = diffs_project_merge_request_path(project, merge_request, diff_id: old_merge_request_diff.id, anchor: outdated_discussion.line_code)
           expect(page).to have_link('an old version of the diff', href: path)
         end
       end
@@ -72,7 +72,7 @@ feature 'Merge Request Discussions', feature: true do
     end
 
     before(:each) do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     context 'a regular commit comment' do
diff --git a/spec/features/merge_requests/edit_mr_spec.rb b/spec/features/merge_requests/edit_mr_spec.rb
index 804bf6967d60c7dd85f64e8c6831a69353e9ed48..8ee78526232ed3f438f551cc93ec6def5f34d1df 100644
--- a/spec/features/merge_requests/edit_mr_spec.rb
+++ b/spec/features/merge_requests/edit_mr_spec.rb
@@ -10,7 +10,7 @@ feature 'Edit Merge Request', feature: true do
 
     gitlab_sign_in user
 
-    visit edit_namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit edit_project_merge_request_path(project, merge_request)
   end
 
   context 'editing a MR' do
@@ -33,7 +33,7 @@ feature 'Edit Merge Request', feature: true do
       merge_request.update(merge_params: { 'force_remove_source_branch' => '1' })
       expect(merge_request.merge_params['force_remove_source_branch']).to be_truthy
 
-      visit edit_namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit edit_project_merge_request_path(project, merge_request)
       uncheck 'Remove source branch when merge request is accepted'
 
       click_button 'Save changes'
diff --git a/spec/features/merge_requests/filter_by_labels_spec.rb b/spec/features/merge_requests/filter_by_labels_spec.rb
index 9b677aeca0a32a5e0059dff7a3e7d1d8e7e2b041..e3d48128aeb9879e8546cb3b76589adcc67f8d14 100644
--- a/spec/features/merge_requests/filter_by_labels_spec.rb
+++ b/spec/features/merge_requests/filter_by_labels_spec.rb
@@ -28,7 +28,7 @@ feature 'Issue filtering by Labels', feature: true, js: true do
     project.team << [user, :master]
     gitlab_sign_in(user)
 
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
   end
 
   context 'filter by label bug' do
diff --git a/spec/features/merge_requests/filter_merge_requests_spec.rb b/spec/features/merge_requests/filter_merge_requests_spec.rb
index c12edf1fdf3497a9480f55b3f09231791d678149..2a62cda6d84437484c4ba624a2d86ffc0e18d3dc 100644
--- a/spec/features/merge_requests/filter_merge_requests_spec.rb
+++ b/spec/features/merge_requests/filter_merge_requests_spec.rb
@@ -17,7 +17,7 @@ describe 'Filter merge requests', feature: true do
     gitlab_sign_in(user)
     create(:merge_request, source_project: project, target_project: project)
 
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
   end
 
   describe 'for assignee from mr#index' do
@@ -191,7 +191,7 @@ describe 'Filter merge requests', feature: true do
         assignee: user)
       mr.labels << bug_label
 
-      visit namespace_project_merge_requests_path(project.namespace, project)
+      visit project_merge_requests_path(project)
     end
 
     context 'only text', js: true do
@@ -275,7 +275,7 @@ describe 'Filter merge requests', feature: true do
       mr1.labels << bug_label
       mr2.labels << bug_label
 
-      visit namespace_project_merge_requests_path(project.namespace, project)
+      visit project_merge_requests_path(project)
     end
 
     it 'is able to filter and sort merge requests' do
@@ -297,7 +297,7 @@ describe 'Filter merge requests', feature: true do
 
   describe 'filter by assignee id', js: true do
     it 'filter by current user' do
-      visit namespace_project_merge_requests_path(project.namespace, project, assignee_id: user.id)
+      visit project_merge_requests_path(project, assignee_id: user.id)
 
       expect_tokens([{ name: 'assignee', value: "@#{user.username}" }])
       expect_filtered_search_input_empty
@@ -307,7 +307,7 @@ describe 'Filter merge requests', feature: true do
       new_user = create(:user)
       project.add_developer(new_user)
 
-      visit namespace_project_merge_requests_path(project.namespace, project, assignee_id: new_user.id)
+      visit project_merge_requests_path(project, assignee_id: new_user.id)
 
       expect_tokens([{ name: 'assignee', value: "@#{new_user.username}" }])
       expect_filtered_search_input_empty
@@ -316,7 +316,7 @@ describe 'Filter merge requests', feature: true do
 
   describe 'filter by author id', js: true do
     it 'filter by current user' do
-      visit namespace_project_merge_requests_path(project.namespace, project, author_id: user.id)
+      visit project_merge_requests_path(project, author_id: user.id)
 
       expect_tokens([{ name: 'author', value: "@#{user.username}" }])
       expect_filtered_search_input_empty
@@ -326,7 +326,7 @@ describe 'Filter merge requests', feature: true do
       new_user = create(:user)
       project.add_developer(new_user)
 
-      visit namespace_project_merge_requests_path(project.namespace, project, author_id: new_user.id)
+      visit project_merge_requests_path(project, author_id: new_user.id)
 
       expect_tokens([{ name: 'author', value: "@#{new_user.username}" }])
       expect_filtered_search_input_empty
diff --git a/spec/features/merge_requests/form_spec.rb b/spec/features/merge_requests/form_spec.rb
index d03d498ce2146b4b8a4a38b3597c3d8b8db82317..8f2857c66f7ccfb4791db0a7a7ef2cab48bb254c 100644
--- a/spec/features/merge_requests/form_spec.rb
+++ b/spec/features/merge_requests/form_spec.rb
@@ -1,8 +1,6 @@
 require 'rails_helper'
 
 describe 'New/edit merge request', feature: true, js: true do
-  include GitlabRoutingHelper
-
   let!(:project)   { create(:project, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
   let(:fork_project) { create(:project, forked_from_project: project) }
   let!(:user)      { create(:user)}
@@ -23,8 +21,7 @@ describe 'New/edit merge request', feature: true, js: true do
 
     context 'new merge request' do
       before do
-        visit namespace_project_new_merge_request_path(
-          project.namespace,
+        visit project_new_merge_request_path(
           project,
           merge_request: {
             source_project_id: project.id,
@@ -114,7 +111,7 @@ describe 'New/edit merge request', feature: true, js: true do
                                  target_branch: 'master'
                               )
 
-        visit edit_namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit edit_project_merge_request_path(project, merge_request)
       end
 
       it 'updates merge request' do
@@ -182,8 +179,7 @@ describe 'New/edit merge request', feature: true, js: true do
 
     context 'new merge request' do
       before do
-        visit namespace_project_new_merge_request_path(
-          fork_project.namespace,
+        visit project_new_merge_request_path(
           fork_project,
           merge_request: {
             source_project_id: fork_project.id,
@@ -251,7 +247,7 @@ describe 'New/edit merge request', feature: true, js: true do
                                  target_branch: 'master'
                               )
 
-        visit edit_namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit edit_project_merge_request_path(project, merge_request)
       end
 
       it 'should update merge request' do
diff --git a/spec/features/merge_requests/merge_commit_message_toggle_spec.rb b/spec/features/merge_requests/merge_commit_message_toggle_spec.rb
index 27ba380b005799ada8d2e649b117e55d14d2ca3f..831c60625f45a197e796c5272857dcef0d83d2b9 100644
--- a/spec/features/merge_requests/merge_commit_message_toggle_spec.rb
+++ b/spec/features/merge_requests/merge_commit_message_toggle_spec.rb
@@ -36,7 +36,7 @@ feature 'Clicking toggle commit message link', feature: true, js: true do
 
     gitlab_sign_in user
 
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
 
     expect(page).not_to have_selector('.js-commit-message')
     click_button "Modify commit message"
diff --git a/spec/features/merge_requests/merge_immediately_with_pipeline_spec.rb b/spec/features/merge_requests/merge_immediately_with_pipeline_spec.rb
index 8af7d985036f8a2c4a148f74abf685fa4f6fc93a..716f829295ea5e77f24c667cdf03fc8431456074 100644
--- a/spec/features/merge_requests/merge_immediately_with_pipeline_spec.rb
+++ b/spec/features/merge_requests/merge_immediately_with_pipeline_spec.rb
@@ -29,7 +29,7 @@ feature 'Merge immediately', :feature, :js do
 
     before do
       gitlab_sign_in user
-      visit namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
+      visit project_merge_request_path(merge_request.project, merge_request)
     end
 
     it 'enables merge immediately' do
diff --git a/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb b/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb
index bfadd7cb81afa9a0efacb1c809ea753134e5f6fe..2a4178a819b7b89744f38aa6fcb0aa22c0f93e54 100644
--- a/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb
+++ b/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb
@@ -155,6 +155,6 @@ feature 'Merge When Pipeline Succeeds', :feature, :js do
   end
 
   def visit_merge_request(merge_request)
-    visit namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
+    visit project_merge_request_path(merge_request.project, merge_request)
   end
 end
diff --git a/spec/features/merge_requests/mini_pipeline_graph_spec.rb b/spec/features/merge_requests/mini_pipeline_graph_spec.rb
index 7664fbfbb4cb37a1fda91903947b252e18a8a79d..2c0632a4e8292be669f9d29d1bb6eb1b418b14c5 100644
--- a/spec/features/merge_requests/mini_pipeline_graph_spec.rb
+++ b/spec/features/merge_requests/mini_pipeline_graph_spec.rb
@@ -16,7 +16,7 @@ feature 'Mini Pipeline Graph', :js, :feature do
   end
 
   def visit_merge_request(format = :html)
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request, format: format)
+    visit project_merge_request_path(project, merge_request, format: format)
   end
 
   it 'should display a mini pipeline graph' do
@@ -111,7 +111,7 @@ feature 'Mini Pipeline Graph', :js, :feature do
         build_item.click
         find('.build-page')
 
-        expect(current_path).to eql(namespace_project_job_path(project.namespace, project, build))
+        expect(current_path).to eql(project_job_path(project, build))
       end
 
       it 'should show tooltip when hovered' do
diff --git a/spec/features/merge_requests/only_allow_merge_if_build_succeeds_spec.rb b/spec/features/merge_requests/only_allow_merge_if_build_succeeds_spec.rb
index 5cd9a7fbe269d311340719e092a02f94ecc7d10d..6bcfef71d253dba4e7443b140a0f230dd4279350 100644
--- a/spec/features/merge_requests/only_allow_merge_if_build_succeeds_spec.rb
+++ b/spec/features/merge_requests/only_allow_merge_if_build_succeeds_spec.rb
@@ -145,6 +145,6 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
   end
 
   def visit_merge_request(merge_request)
-    visit namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
+    visit project_merge_request_path(merge_request.project, merge_request)
   end
 end
diff --git a/spec/features/merge_requests/pipelines_spec.rb b/spec/features/merge_requests/pipelines_spec.rb
index c2241317e04163daa2cc5aa5e2e0af93b614b830..d55e6329a9fbe612e2d9df06d036f731e958e07b 100644
--- a/spec/features/merge_requests/pipelines_spec.rb
+++ b/spec/features/merge_requests/pipelines_spec.rb
@@ -19,7 +19,7 @@ feature 'Pipelines for Merge Requests', feature: true, js: true do
     end
 
     before do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     scenario 'user visits merge request pipelines tab' do
@@ -34,7 +34,7 @@ feature 'Pipelines for Merge Requests', feature: true, js: true do
 
   context 'without pipelines' do
     before do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     scenario 'user visits merge request page' do
diff --git a/spec/features/merge_requests/target_branch_spec.rb b/spec/features/merge_requests/target_branch_spec.rb
index 4328d66c748ce72b8732550c3bbb7ef58a495868..c61f817dd9aae9e52ef378a4a36aee43b6b98ea0 100644
--- a/spec/features/merge_requests/target_branch_spec.rb
+++ b/spec/features/merge_requests/target_branch_spec.rb
@@ -6,10 +6,7 @@ describe 'Target branch', feature: true, js: true do
   let(:project) { merge_request.project }
 
   def path_to_merge_request
-    namespace_project_merge_request_path(
-      project.namespace,
-      project, merge_request
-    )
+    project_merge_request_path(project, merge_request)
   end
 
   before do
diff --git a/spec/features/merge_requests/toggle_whitespace_changes_spec.rb b/spec/features/merge_requests/toggle_whitespace_changes_spec.rb
index cba9a2cda99b570ca2339545aeb36505746f121e..ae7e99d14628362f405f8cf69e67094017fc1dba 100644
--- a/spec/features/merge_requests/toggle_whitespace_changes_spec.rb
+++ b/spec/features/merge_requests/toggle_whitespace_changes_spec.rb
@@ -5,7 +5,7 @@ feature 'Toggle Whitespace Changes', js: true, feature: true do
     gitlab_sign_in :admin
     merge_request = create(:merge_request)
     project = merge_request.source_project
-    visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit diffs_project_merge_request_path(project, merge_request)
   end
 
   it 'has a button to toggle whitespace changes' do
diff --git a/spec/features/merge_requests/toggler_behavior_spec.rb b/spec/features/merge_requests/toggler_behavior_spec.rb
index c4c06e9a7a0c61d1938281ef53a8a1f4300d799c..219b9fd893823ce6da92b1b2f3984ce198769f65 100644
--- a/spec/features/merge_requests/toggler_behavior_spec.rb
+++ b/spec/features/merge_requests/toggler_behavior_spec.rb
@@ -11,7 +11,7 @@ feature 'toggler_behavior', js: true, feature: true do
     gitlab_sign_in :admin
     project = merge_request.source_project
     page.current_window.resize_to(1000, 300)
-    visit "#{namespace_project_merge_request_path(project.namespace, project, merge_request)}#{fragment_id}"
+    visit "#{project_merge_request_path(project, merge_request)}#{fragment_id}"
   end
 
   describe 'scroll position' do
diff --git a/spec/features/merge_requests/update_merge_requests_spec.rb b/spec/features/merge_requests/update_merge_requests_spec.rb
index d0418c74699bc53e01bcb2a89bbbc7fdaa846a0d..f8f3e37719818fe2dc2fa8f517c907b1821736b2 100644
--- a/spec/features/merge_requests/update_merge_requests_spec.rb
+++ b/spec/features/merge_requests/update_merge_requests_spec.rb
@@ -13,7 +13,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
   context 'status', js: true do
     describe 'close merge request' do
       before do
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
       end
 
       it 'closes merge request' do
@@ -26,7 +26,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
     describe 'reopen merge request' do
       before do
         merge_request.close
-        visit namespace_project_merge_requests_path(project.namespace, project, state: 'closed')
+        visit project_merge_requests_path(project, state: 'closed')
       end
 
       it 'reopens merge request' do
@@ -40,7 +40,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
   context 'assignee', js: true do
     describe 'set assignee' do
       before do
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
       end
 
       it "updates merge request with assignee" do
@@ -56,7 +56,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
       before do
         merge_request.assignee = user
         merge_request.save
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
       end
 
       it "removes assignee from the merge request" do
@@ -72,7 +72,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
 
     describe 'set milestone' do
       before do
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
       end
 
       it "updates merge request with milestone" do
@@ -86,7 +86,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
       before do
         merge_request.milestone = milestone
         merge_request.save
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
       end
 
       it "removes milestone from the merge request" do
diff --git a/spec/features/merge_requests/user_lists_merge_requests_spec.rb b/spec/features/merge_requests/user_lists_merge_requests_spec.rb
index cabb8e455f9d2053d6e6fa781a7affc0f78a18ce..f541f4959956458f209a41b69d1d2d2bd2cbb0e0 100644
--- a/spec/features/merge_requests/user_lists_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_lists_merge_requests_spec.rb
@@ -37,7 +37,7 @@ describe 'Projects > Merge requests > User lists merge requests', feature: true
   it 'filters on no assignee' do
     visit_merge_requests(project, assignee_id: IssuableFinder::NONE)
 
-    expect(current_path).to eq(namespace_project_merge_requests_path(project.namespace, project))
+    expect(current_path).to eq(project_merge_requests_path(project))
     expect(page).to have_content 'merge_lfs'
     expect(page).not_to have_content 'fix'
     expect(page).not_to have_content 'markdown'
@@ -136,7 +136,7 @@ describe 'Projects > Merge requests > User lists merge requests', feature: true
       end
 
       it 'sorts by recently due milestone' do
-        visit namespace_project_merge_requests_path(project.namespace, project,
+        visit project_merge_requests_path(project,
           label_name: [label.name, label2.name],
           assignee_id: user.id,
           sort: sort_value_milestone_soon)
diff --git a/spec/features/merge_requests/user_posts_diff_notes_spec.rb b/spec/features/merge_requests/user_posts_diff_notes_spec.rb
index ac7e0eb27274a8dfa2eec6bcb0f5608da438d63e..7b1ac60231adf349882ea8b840564852aa909775 100644
--- a/spec/features/merge_requests/user_posts_diff_notes_spec.rb
+++ b/spec/features/merge_requests/user_posts_diff_notes_spec.rb
@@ -17,7 +17,7 @@ feature 'Merge requests > User posts diff notes', :js do
 
   context 'when hovering over a parallel view diff file' do
     before do
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: 'parallel')
+      visit diffs_project_merge_request_path(project, merge_request, view: 'parallel')
     end
 
     context 'with an old line on the left and no line on the right' do
@@ -92,7 +92,7 @@ feature 'Merge requests > User posts diff notes', :js do
 
   context 'when hovering over an inline view diff file' do
     before do
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: 'inline')
+      visit diffs_project_merge_request_path(project, merge_request, view: 'inline')
     end
 
     context 'with a new line' do
@@ -136,9 +136,9 @@ feature 'Merge requests > User posts diff notes', :js do
 
     context 'when hovering over a diff discussion' do
       before do
-        visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: 'inline')
+        visit diffs_project_merge_request_path(project, merge_request, view: 'inline')
         should_allow_commenting(find('[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_7_7"]'))
-        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit project_merge_request_path(project, merge_request)
       end
 
       it 'does not allow commenting' do
@@ -149,7 +149,7 @@ feature 'Merge requests > User posts diff notes', :js do
 
   context 'when cancelling the comment addition' do
     before do
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: 'inline')
+      visit diffs_project_merge_request_path(project, merge_request, view: 'inline')
     end
 
     context 'with a new line' do
@@ -161,7 +161,7 @@ feature 'Merge requests > User posts diff notes', :js do
 
   describe 'with muliple note forms' do
     before do
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: 'inline')
+      visit diffs_project_merge_request_path(project, merge_request, view: 'inline')
       click_diff_line(find('[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_10_9"]'))
       click_diff_line(find('[id="6eb14e00385d2fb284765eb1cd8d420d33d63fc9_22_22"]'))
     end
@@ -181,7 +181,7 @@ feature 'Merge requests > User posts diff notes', :js do
   context 'when the MR only supports legacy diff notes' do
     before do
       merge_request.merge_request_diff.update_attributes(start_commit_sha: nil)
-      visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, view: 'inline')
+      visit diffs_project_merge_request_path(project, merge_request, view: 'inline')
     end
 
     context 'with a new line' do
diff --git a/spec/features/merge_requests/user_posts_notes_spec.rb b/spec/features/merge_requests/user_posts_notes_spec.rb
index 12f987e12ea690c744bb45aab71a13081eed4935..b3c8b0e9c346506e53355bf38775ced2e75886de 100644
--- a/spec/features/merge_requests/user_posts_notes_spec.rb
+++ b/spec/features/merge_requests/user_posts_notes_spec.rb
@@ -14,7 +14,7 @@ describe 'Merge requests > User posts notes', :js do
 
   before do
     gitlab_sign_in :admin
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
   end
 
   subject { page }
diff --git a/spec/features/merge_requests/user_sees_system_notes_spec.rb b/spec/features/merge_requests/user_sees_system_notes_spec.rb
index 0d88a8172b0bc3c11a4b33b7ef86fc2e60ba38c7..385708a28c5ee30e9bb81cc8c92cd044c1ff008a 100644
--- a/spec/features/merge_requests/user_sees_system_notes_spec.rb
+++ b/spec/features/merge_requests/user_sees_system_notes_spec.rb
@@ -15,7 +15,7 @@ feature 'Merge requests > User sees system notes' do
     end
 
     it 'shows the system note' do
-      visit namespace_project_merge_request_path(public_project.namespace, public_project, merge_request)
+      visit project_merge_request_path(public_project, merge_request)
 
       expect(page).to have_css('.system-note')
     end
@@ -23,7 +23,7 @@ feature 'Merge requests > User sees system notes' do
 
   context 'when not logged-in' do
     it 'hides the system note' do
-      visit namespace_project_merge_request_path(public_project.namespace, public_project, merge_request)
+      visit project_merge_request_path(public_project, merge_request)
 
       expect(page).not_to have_css('.system-note')
     end
diff --git a/spec/features/merge_requests/user_uses_slash_commands_spec.rb b/spec/features/merge_requests/user_uses_slash_commands_spec.rb
index a1f123f15ec48565fca3cd80c447f0c04cae3f35..229dcda7ce42786dd600b7581a3dd5261032abde 100644
--- a/spec/features/merge_requests/user_uses_slash_commands_spec.rb
+++ b/spec/features/merge_requests/user_uses_slash_commands_spec.rb
@@ -17,7 +17,7 @@ feature 'Merge Requests > User uses quick actions', feature: true, js: true do
     before do
       project.team << [user, :master]
       gitlab_sign_in(user)
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     after do
@@ -53,7 +53,7 @@ feature 'Merge Requests > User uses quick actions', feature: true, js: true do
           project.team << [guest, :guest]
           gitlab_sign_out
           gitlab_sign_in(guest)
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it 'does not change the WIP prefix' do
@@ -99,7 +99,7 @@ feature 'Merge Requests > User uses quick actions', feature: true, js: true do
           project.team << [guest, :guest]
           gitlab_sign_out
           gitlab_sign_in(guest)
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it 'does not merge the MR' do
@@ -131,7 +131,7 @@ feature 'Merge Requests > User uses quick actions', feature: true, js: true do
       end
 
       it 'changes target_branch in new merge_request' do
-        visit namespace_project_new_merge_request_path(another_project.namespace, another_project, new_url_opts)
+        visit project_new_merge_request_path(another_project, new_url_opts)
 
         fill_in "merge_request_title", with: 'My brand new feature'
         fill_in "merge_request_description", with: "le feature \n/target_branch fix\nFeature description:"
@@ -145,7 +145,7 @@ feature 'Merge Requests > User uses quick actions', feature: true, js: true do
       it 'does not change target branch when merge request is edited' do
         new_merge_request = create(:merge_request, source_project: another_project)
 
-        visit edit_namespace_project_merge_request_path(another_project.namespace, another_project, new_merge_request)
+        visit edit_project_merge_request_path(another_project, new_merge_request)
         fill_in "merge_request_description", with: "Want to update target branch\n/target_branch fix\n"
         click_button "Save changes"
 
@@ -183,7 +183,7 @@ feature 'Merge Requests > User uses quick actions', feature: true, js: true do
           project.team << [guest, :guest]
           gitlab_sign_out
           gitlab_sign_in(guest)
-          visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit project_merge_request_path(project, merge_request)
         end
 
         it 'does not change target branch' do
diff --git a/spec/features/merge_requests/versions_spec.rb b/spec/features/merge_requests/versions_spec.rb
index 04a72d3be341dcd52f8268208180679ae2f509c5..94fcfa398c9e92aab12fd9e3db48cd207ba32f59 100644
--- a/spec/features/merge_requests/versions_spec.rb
+++ b/spec/features/merge_requests/versions_spec.rb
@@ -9,7 +9,7 @@ feature 'Merge Request versions', js: true, feature: true do
 
   before do
     gitlab_sign_in :admin
-    visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit diffs_project_merge_request_path(project, merge_request)
   end
 
   it 'show the latest version of the diff' do
@@ -96,8 +96,7 @@ feature 'Merge Request versions', js: true, feature: true do
     end
 
     it 'has a path with comparison context' do
-      expect(page).to have_current_path diffs_namespace_project_merge_request_path(
-        project.namespace,
+      expect(page).to have_current_path diffs_project_merge_request_path(
         project,
         merge_request.iid,
         diff_id: merge_request_diff3.id,
diff --git a/spec/features/merge_requests/widget_deployments_spec.rb b/spec/features/merge_requests/widget_deployments_spec.rb
index e82e69c5f4a34383a44739d47ec964465076c089..c43c7460a08b2a545be09740c816e9a0602547c5 100644
--- a/spec/features/merge_requests/widget_deployments_spec.rb
+++ b/spec/features/merge_requests/widget_deployments_spec.rb
@@ -14,7 +14,7 @@ feature 'Widget Deployments Header', feature: true, js: true do
     background do
       gitlab_sign_in(user)
       project.team << [user, role]
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     scenario 'displays that the environment is deployed' do
diff --git a/spec/features/merge_requests/widget_spec.rb b/spec/features/merge_requests/widget_spec.rb
index d8e9b949204883e91a2807359c570230c3cbe742..8135411fe033ef0b12a12dca168ddf292e247961 100644
--- a/spec/features/merge_requests/widget_spec.rb
+++ b/spec/features/merge_requests/widget_spec.rb
@@ -12,8 +12,7 @@ describe 'Merge request', :feature, :js do
 
   context 'new merge request' do
     before do
-      visit namespace_project_new_merge_request_path(
-        project.namespace,
+      visit project_new_merge_request_path(
         project,
         merge_request: {
           source_project_id: project.id,
@@ -44,7 +43,7 @@ describe 'Merge request', :feature, :js do
     end
 
     before do
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'shows environments link' do
@@ -71,7 +70,7 @@ describe 'Merge request', :feature, :js do
                        type: 'CiService',
                        category: 'ci')
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'has danger button while waiting for external CI status' do
@@ -92,7 +91,7 @@ describe 'Merge request', :feature, :js do
                                       head_pipeline_of: merge_request)
       create(:ci_build, :pending, pipeline: pipeline)
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'has danger button when not succeeded' do
@@ -112,9 +111,7 @@ describe 'Merge request', :feature, :js do
         status: :manual,
         head_pipeline_of: merge_request)
 
-      visit namespace_project_merge_request_path(project.namespace,
-                                                 project,
-                                                 merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'shows information about blocked pipeline' do
@@ -136,7 +133,7 @@ describe 'Merge request', :feature, :js do
                                       head_pipeline_of: merge_request)
       create(:ci_build, :pending, pipeline: pipeline)
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'has info button when MWBS button' do
@@ -154,7 +151,7 @@ describe 'Merge request', :feature, :js do
         merge_error: 'Something went wrong'
       )
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'shows information about the merge error' do
@@ -175,7 +172,7 @@ describe 'Merge request', :feature, :js do
         merge_error: 'Something went wrong'
       )
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'shows information about the merge error' do
@@ -191,7 +188,7 @@ describe 'Merge request', :feature, :js do
   context 'merge error' do
     before do
       allow_any_instance_of(Repository).to receive(:merge).and_return(false)
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'updates the MR widget' do
@@ -212,7 +209,7 @@ describe 'Merge request', :feature, :js do
       gitlab_sign_out
       gitlab_sign_in user2
       merge_request.update(target_project: fork_project)
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+      visit project_merge_request_path(project, merge_request)
     end
 
     it 'user can merge into the source project' do
diff --git a/spec/features/merge_requests/wip_message_spec.rb b/spec/features/merge_requests/wip_message_spec.rb
index 0e304ba50af88a9e179c7ae0dbd1fd66672a6bc4..224723773bf66d136434435e240192bc19db26c6 100644
--- a/spec/features/merge_requests/wip_message_spec.rb
+++ b/spec/features/merge_requests/wip_message_spec.rb
@@ -11,8 +11,7 @@ feature 'Work In Progress help message', feature: true do
 
   context 'with WIP commits' do
     it 'shows a specific WIP hint' do
-      visit namespace_project_new_merge_request_path(
-        project.namespace,
+      visit project_new_merge_request_path(
         project,
         merge_request: {
           source_project_id: project.id,
@@ -32,8 +31,7 @@ feature 'Work In Progress help message', feature: true do
 
   context 'without WIP commits' do
     it 'shows the regular WIP message' do
-      visit namespace_project_new_merge_request_path(
-        project.namespace,
+      visit project_new_merge_request_path(
         project,
         merge_request: {
           source_project_id: project.id,
diff --git a/spec/features/milestone_spec.rb b/spec/features/milestone_spec.rb
index 58989581ffeb9b5be810b1f3d3d5b703a524476a..880c53343bcf28659f529a223e134383d527118c 100644
--- a/spec/features/milestone_spec.rb
+++ b/spec/features/milestone_spec.rb
@@ -11,7 +11,7 @@ feature 'Milestone', feature: true do
 
   feature 'Create a milestone' do
     scenario 'shows an informative message for a new milestone' do
-      visit new_namespace_project_milestone_path(project.namespace, project)
+      visit new_project_milestone_path(project)
 
       page.within '.milestone-form' do
         fill_in "milestone_title", with: '8.7'
@@ -31,7 +31,7 @@ feature 'Milestone', feature: true do
       milestone = create(:milestone, project: project, title: 8.7)
 
       create(:issue, title: "Bugfix1", project: project, milestone: milestone, state: "closed")
-      visit namespace_project_milestone_path(project.namespace, project, milestone)
+      visit project_milestone_path(project, milestone)
 
       expect(find('.alert-success')).to have_content('All issues for this milestone are closed. You may close this milestone now.')
     end
@@ -41,7 +41,7 @@ feature 'Milestone', feature: true do
     scenario 'displays validation message' do
       milestone = create(:milestone, project: project, title: 8.7)
 
-      visit new_namespace_project_milestone_path(project.namespace, project)
+      visit new_project_milestone_path(project)
       page.within '.milestone-form' do
         fill_in "milestone_title", with: milestone.title
       end
diff --git a/spec/features/milestones/show_spec.rb b/spec/features/milestones/show_spec.rb
index cdf6cfba402debb98d207fd1df06434aaca3b158..fc7d2f9662dba87b58c07e2c69629c5586f0f55d 100644
--- a/spec/features/milestones/show_spec.rb
+++ b/spec/features/milestones/show_spec.rb
@@ -13,7 +13,7 @@ describe 'Milestone show', feature: true do
   end
 
   def visit_milestone
-    visit namespace_project_milestone_path(project.namespace, project, milestone)
+    visit project_milestone_path(project, milestone)
   end
 
   it 'avoids N+1 database queries' do
diff --git a/spec/features/participants_autocomplete_spec.rb b/spec/features/participants_autocomplete_spec.rb
index b8966cf621c52bc8fc97b4f1cfbbfb9a1ccdbde5..a66d0f4abad193c6052390d40fa21ceb17a64ad0 100644
--- a/spec/features/participants_autocomplete_spec.rb
+++ b/spec/features/participants_autocomplete_spec.rb
@@ -29,7 +29,7 @@ feature 'Member autocomplete', :js do
   context 'adding a new note on a Issue' do
     let(:noteable) { create(:issue, author: author, project: project) }
     before do
-      visit namespace_project_issue_path(project.namespace, project, noteable)
+      visit project_issue_path(project, noteable)
     end
 
     include_examples "open suggestions when typing @"
@@ -42,7 +42,7 @@ feature 'Member autocomplete', :js do
                              target_project: project, author: author)
     end
     before do
-      visit namespace_project_merge_request_path(project.namespace, project, noteable)
+      visit project_merge_request_path(project, noteable)
     end
 
     include_examples "open suggestions when typing @"
@@ -56,7 +56,7 @@ feature 'Member autocomplete', :js do
     before do
       allow_any_instance_of(Commit).to receive(:author).and_return(author)
 
-      visit namespace_project_commit_path(project.namespace, project, noteable)
+      visit project_commit_path(project, noteable)
     end
 
     include_examples "open suggestions when typing @"
diff --git a/spec/features/projects/activity/rss_spec.rb b/spec/features/projects/activity/rss_spec.rb
index 84c81d43448974130c9c9f5fa15e2bca045dd7f9..97925bc2ebf043789be77c32b6822e570962a1e4 100644
--- a/spec/features/projects/activity/rss_spec.rb
+++ b/spec/features/projects/activity/rss_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 feature 'Project Activity RSS' do
   let(:project) { create(:empty_project, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
-  let(:path) { activity_namespace_project_path(project.namespace, project) }
+  let(:path) { activity_project_path(project) }
 
   before do
     create(:issue, project: project)
diff --git a/spec/features/projects/artifacts/browse_spec.rb b/spec/features/projects/artifacts/browse_spec.rb
index 68375956273491ba4c53ac0c490c013c9f437c33..a34c0c4cecdd4015e39504dd742734646da29a3c 100644
--- a/spec/features/projects/artifacts/browse_spec.rb
+++ b/spec/features/projects/artifacts/browse_spec.rb
@@ -6,7 +6,7 @@ feature 'Browse artifact', :js, feature: true do
   let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) }
 
   def browse_path(path)
-    browse_namespace_project_job_artifacts_path(project.namespace, project, job, path)
+    browse_project_job_artifacts_path(project, job, path)
   end
 
   context 'when visiting old URL' do
diff --git a/spec/features/projects/artifacts/download_spec.rb b/spec/features/projects/artifacts/download_spec.rb
index dd9454840ee577bfd72503ab1f52375fefebf2c1..b76f2be880e01c3c9c77129fab758067a47b5270 100644
--- a/spec/features/projects/artifacts/download_spec.rb
+++ b/spec/features/projects/artifacts/download_spec.rb
@@ -22,7 +22,7 @@ feature 'Download artifact', :js, feature: true do
 
     context 'via job id' do
       let(:download_url) do
-        download_namespace_project_job_artifacts_path(project.namespace, project, job)
+        download_project_job_artifacts_path(project, job)
       end
 
       it_behaves_like 'downloading'
@@ -30,7 +30,7 @@ feature 'Download artifact', :js, feature: true do
 
     context 'via branch name and job name' do
       let(:download_url) do
-        latest_succeeded_namespace_project_artifacts_path(project.namespace, project, "#{pipeline.ref}/download", job: job.name)
+        latest_succeeded_project_artifacts_path(project, "#{pipeline.ref}/download", job: job.name)
       end
 
       it_behaves_like 'downloading'
@@ -44,7 +44,7 @@ feature 'Download artifact', :js, feature: true do
 
     context 'via job id' do
       let(:download_url) do
-        download_namespace_project_job_artifacts_path(project.namespace, project, job)
+        download_project_job_artifacts_path(project, job)
       end
 
       it_behaves_like 'downloading'
@@ -52,7 +52,7 @@ feature 'Download artifact', :js, feature: true do
 
     context 'via branch name and job name' do
       let(:download_url) do
-        latest_succeeded_namespace_project_artifacts_path(project.namespace, project, "#{pipeline.ref}/download", job: job.name)
+        latest_succeeded_project_artifacts_path(project, "#{pipeline.ref}/download", job: job.name)
       end
 
       it_behaves_like 'downloading'
diff --git a/spec/features/projects/artifacts/file_spec.rb b/spec/features/projects/artifacts/file_spec.rb
index 860373e531bf5a44094d3a3c0ce7f4d0cbbd60b6..6d48470ca3a93ad4b08d292021e902cf3d1113a2 100644
--- a/spec/features/projects/artifacts/file_spec.rb
+++ b/spec/features/projects/artifacts/file_spec.rb
@@ -10,7 +10,7 @@ feature 'Artifact file', :js, feature: true do
   end
 
   def file_path(path)
-    file_namespace_project_job_artifacts_path(project.namespace, project, build, path)
+    file_project_job_artifacts_path(project, build, path)
   end
 
   context 'Text file' do
diff --git a/spec/features/projects/artifacts/raw_spec.rb b/spec/features/projects/artifacts/raw_spec.rb
index b589701729de272310e2ce1f7f7cad103139dcb6..3f38d720a0f961d9047eaf95f7ab4d56421072c5 100644
--- a/spec/features/projects/artifacts/raw_spec.rb
+++ b/spec/features/projects/artifacts/raw_spec.rb
@@ -6,7 +6,7 @@ feature 'Raw artifact', :js, feature: true do
   let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) }
 
   def raw_path(path)
-    raw_namespace_project_job_artifacts_path(project.namespace, project, job, path)
+    raw_project_job_artifacts_path(project, job, path)
   end
 
   context 'when visiting old URL' do
diff --git a/spec/features/projects/badges/coverage_spec.rb b/spec/features/projects/badges/coverage_spec.rb
index 9624e1a71b05a9106688be8f0c43e6e2d1d5b4f4..efadb6400962f1a4e5e7e0008e36e4b9c0953253 100644
--- a/spec/features/projects/badges/coverage_spec.rb
+++ b/spec/features/projects/badges/coverage_spec.rb
@@ -70,8 +70,7 @@ feature 'test coverage badge' do
   end
 
   def show_test_coverage_badge(job: nil)
-    visit coverage_namespace_project_badges_path(
-      project.namespace, project, ref: :master, job: job, format: :svg)
+    visit coverage_project_badges_path(project, ref: :master, job: job, format: :svg)
   end
 
   def expect_coverage_badge(coverage)
diff --git a/spec/features/projects/badges/list_spec.rb b/spec/features/projects/badges/list_spec.rb
index 348748152bb50b36d3e0a57805e1dea98c52170f..cbd44c49d04c399a1fcfbcf07d77517eaff0be89 100644
--- a/spec/features/projects/badges/list_spec.rb
+++ b/spec/features/projects/badges/list_spec.rb
@@ -6,7 +6,7 @@ feature 'list of badges' do
     project = create(:project)
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_pipelines_settings_path(project.namespace, project)
+    visit project_pipelines_settings_path(project)
   end
 
   scenario 'user wants to see build status badge' do
diff --git a/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb b/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb
index d94204230f617652d820e3c3b5ddb884226c78db..7564338b3014cf0a1c4eae266c42040c5fe09356 100644
--- a/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb
+++ b/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb
@@ -13,14 +13,14 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
     end
 
     def visit_blob(fragment = nil)
-      visit namespace_project_blob_path(project.namespace, project, tree_join('master', path), anchor: fragment)
+      visit project_blob_path(project, tree_join('master', path), anchor: fragment)
     end
 
     describe 'Click "Permalink" button' do
       it 'works with no initial line number fragment hash' do
         visit_blob
 
-        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(namespace_project_blob_path(project.namespace, project, tree_join(sha, path))))
+        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(project_blob_path(project, tree_join(sha, path))))
       end
 
       it 'maintains intitial fragment hash' do
@@ -28,7 +28,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
 
         visit_blob(fragment)
 
-        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(namespace_project_blob_path(project.namespace, project, tree_join(sha, path), anchor: fragment)))
+        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(project_blob_path(project, tree_join(sha, path), anchor: fragment)))
       end
 
       it 'changes fragment hash if line number clicked' do
@@ -39,7 +39,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
         find('#L3').click
         find("##{ending_fragment}").click
 
-        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(namespace_project_blob_path(project.namespace, project, tree_join(sha, path), anchor: ending_fragment)))
+        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(project_blob_path(project, tree_join(sha, path), anchor: ending_fragment)))
       end
 
       it 'with initial fragment hash, changes fragment hash if line number clicked' do
@@ -51,7 +51,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
         find('#L3').click
         find("##{ending_fragment}").click
 
-        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(namespace_project_blob_path(project.namespace, project, tree_join(sha, path), anchor: ending_fragment)))
+        expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(project_blob_path(project, tree_join(sha, path), anchor: ending_fragment)))
       end
     end
 
@@ -59,7 +59,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
       it 'works with no initial line number fragment hash' do
         visit_blob
 
-        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(namespace_project_blame_path(project.namespace, project, tree_join('master', path))))
+        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(project_blame_path(project, tree_join('master', path))))
       end
 
       it 'maintains intitial fragment hash' do
@@ -67,7 +67,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
 
         visit_blob(fragment)
 
-        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(namespace_project_blame_path(project.namespace, project, tree_join('master', path), anchor: fragment)))
+        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(project_blame_path(project, tree_join('master', path), anchor: fragment)))
       end
 
       it 'changes fragment hash if line number clicked' do
@@ -78,7 +78,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
         find('#L3').click
         find("##{ending_fragment}").click
 
-        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(namespace_project_blame_path(project.namespace, project, tree_join('master', path), anchor: ending_fragment)))
+        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(project_blame_path(project, tree_join('master', path), anchor: ending_fragment)))
       end
 
       it 'with initial fragment hash, changes fragment hash if line number clicked' do
@@ -90,7 +90,7 @@ feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', feature: true,
         find('#L3').click
         find("##{ending_fragment}").click
 
-        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(namespace_project_blame_path(project.namespace, project, tree_join('master', path), anchor: ending_fragment)))
+        expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(project_blame_path(project, tree_join('master', path), anchor: ending_fragment)))
       end
     end
   end
diff --git a/spec/features/projects/blobs/blob_show_spec.rb b/spec/features/projects/blobs/blob_show_spec.rb
index 71ffa352f80489d680404b487f7647611f1d7fd5..3427f639930713b088a417f7b4cb627d9fa749f4 100644
--- a/spec/features/projects/blobs/blob_show_spec.rb
+++ b/spec/features/projects/blobs/blob_show_spec.rb
@@ -4,7 +4,7 @@ feature 'File blob', :js, feature: true do
   let(:project) { create(:project, :public) }
 
   def visit_blob(path, anchor: nil, ref: 'master')
-    visit namespace_project_blob_path(project.namespace, project, File.join(ref, path), anchor: anchor)
+    visit project_blob_path(project, File.join(ref, path), anchor: anchor)
 
     wait_for_requests
   end
diff --git a/spec/features/projects/blobs/edit_spec.rb b/spec/features/projects/blobs/edit_spec.rb
index d0bc032ee9330ef7af1a513158602e50c201d5c8..c4e53293be0bfdcaac8cb892a3ebda43d98c5727 100644
--- a/spec/features/projects/blobs/edit_spec.rb
+++ b/spec/features/projects/blobs/edit_spec.rb
@@ -26,7 +26,7 @@ feature 'Editing file blob', feature: true, js: true do
 
     context 'from MR diff' do
       before do
-        visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+        visit diffs_project_merge_request_path(project, merge_request)
         edit_and_commit
       end
 
@@ -37,7 +37,7 @@ feature 'Editing file blob', feature: true, js: true do
 
     context 'from blob file path' do
       before do
-        visit namespace_project_blob_path(project.namespace, project, tree_join(branch, file_path))
+        visit project_blob_path(project, tree_join(branch, file_path))
         edit_and_commit
       end
 
@@ -55,7 +55,7 @@ feature 'Editing file blob', feature: true, js: true do
 
         before do
           project.team << [user, :developer]
-          visit namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path))
+          visit project_edit_blob_path(project, tree_join(branch, file_path))
         end
 
         it 'redirects to sign in and returns' do
@@ -63,7 +63,7 @@ feature 'Editing file blob', feature: true, js: true do
 
           gitlab_sign_in(user)
 
-          expect(page).to have_current_path(namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path)))
+          expect(page).to have_current_path(project_edit_blob_path(project, tree_join(branch, file_path)))
         end
       end
 
@@ -71,7 +71,7 @@ feature 'Editing file blob', feature: true, js: true do
         let(:user) { create(:user) }
 
         before do
-          visit namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path))
+          visit project_edit_blob_path(project, tree_join(branch, file_path))
         end
 
         it 'redirects to sign in and returns' do
@@ -79,7 +79,7 @@ feature 'Editing file blob', feature: true, js: true do
 
           gitlab_sign_in(user)
 
-          expect(page).to have_current_path(namespace_project_blob_path(project.namespace, project, tree_join(branch, file_path)))
+          expect(page).to have_current_path(project_blob_path(project, tree_join(branch, file_path)))
         end
       end
     end
@@ -97,18 +97,18 @@ feature 'Editing file blob', feature: true, js: true do
 
       context 'on some branch' do
         before do
-          visit namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path))
+          visit project_edit_blob_path(project, tree_join(branch, file_path))
         end
 
         it 'shows blob editor with same branch' do
-          expect(page).to have_current_path(namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path)))
+          expect(page).to have_current_path(project_edit_blob_path(project, tree_join(branch, file_path)))
           expect(find('.js-branch-name').value).to eq(branch)
         end
       end
 
       context 'with protected branch' do
         before do
-          visit namespace_project_edit_blob_path(project.namespace, project, tree_join(protected_branch, file_path))
+          visit project_edit_blob_path(project, tree_join(protected_branch, file_path))
         end
 
         it 'shows blob editor with patch branch' do
@@ -123,11 +123,11 @@ feature 'Editing file blob', feature: true, js: true do
       before do
         project.team << [user, :master]
         gitlab_sign_in(user)
-        visit namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path))
+        visit project_edit_blob_path(project, tree_join(branch, file_path))
       end
 
       it 'shows blob editor with same branch' do
-        expect(page).to have_current_path(namespace_project_edit_blob_path(project.namespace, project, tree_join(branch, file_path)))
+        expect(page).to have_current_path(project_edit_blob_path(project, tree_join(branch, file_path)))
         expect(find('.js-branch-name').value).to eq(branch)
       end
     end
diff --git a/spec/features/projects/blobs/shortcuts_blob_spec.rb b/spec/features/projects/blobs/shortcuts_blob_spec.rb
index 30e2d5872679f1d74216a86285597c1d977a29c7..9cacda843783a259dcd58a717c02f8d3ec99e734 100644
--- a/spec/features/projects/blobs/shortcuts_blob_spec.rb
+++ b/spec/features/projects/blobs/shortcuts_blob_spec.rb
@@ -12,7 +12,7 @@ feature 'Blob shortcuts', feature: true do
     end
 
     def visit_blob(fragment = nil)
-      visit namespace_project_blob_path(project.namespace, project, tree_join('master', path), anchor: fragment)
+      visit project_blob_path(project, tree_join('master', path), anchor: fragment)
     end
 
     describe 'pressing "y"' do
@@ -21,7 +21,7 @@ feature 'Blob shortcuts', feature: true do
 
         find('body').native.send_key('y')
 
-        expect(page).to have_current_path(get_absolute_url(namespace_project_blob_path(project.namespace, project, tree_join(sha, path))), url: true)
+        expect(page).to have_current_path(get_absolute_url(project_blob_path(project, tree_join(sha, path))), url: true)
       end
 
       it 'maintains fragment hash when redirecting' do
@@ -30,7 +30,7 @@ feature 'Blob shortcuts', feature: true do
 
         find('body').native.send_key('y')
 
-        expect(page).to have_current_path(get_absolute_url(namespace_project_blob_path(project.namespace, project, tree_join(sha, path), anchor: fragment)), url: true)
+        expect(page).to have_current_path(get_absolute_url(project_blob_path(project, tree_join(sha, path), anchor: fragment)), url: true)
       end
     end
   end
diff --git a/spec/features/projects/branches/download_buttons_spec.rb b/spec/features/projects/branches/download_buttons_spec.rb
index d8c4d475a2cce3fd02888456548375b1485e0da4..52323c21112afeedcacb1df68ccb0eda5b5463e2 100644
--- a/spec/features/projects/branches/download_buttons_spec.rb
+++ b/spec/features/projects/branches/download_buttons_spec.rb
@@ -29,13 +29,11 @@ feature 'Download buttons in branches page', feature: true do
   describe 'when checking branches' do
     context 'with artifacts' do
       before do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
       end
 
       scenario 'shows download artifacts button' do
-        href = latest_succeeded_namespace_project_artifacts_path(
-          project.namespace, project, 'binary-encoding/download',
-          job: 'build')
+        href = latest_succeeded_project_artifacts_path(project, 'binary-encoding/download', job: 'build')
 
         expect(page).to have_link "Download '#{build.name}'", href: href
       end
diff --git a/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb b/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
index 406fa52e723d9d397d31c052e433665f2046cbca..ab9af8fa603d7fbcd4995f694588b3bde2c83a84 100644
--- a/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
+++ b/spec/features/projects/branches/new_branch_ref_dropdown_spec.rb
@@ -9,7 +9,7 @@ describe 'New Branch Ref Dropdown', :js, :feature do
     project.add_master(user)
 
     gitlab_sign_in(user)
-    visit new_namespace_project_branch_path(project.namespace, project)
+    visit new_project_branch_path(project)
   end
 
   it 'filters a list of branches and tags' do
diff --git a/spec/features/projects/branches_spec.rb b/spec/features/projects/branches_spec.rb
index 0050864d3051cb92307442030957470d7ada03e9..4fae324d8d5edf39ef9af399a6bf0c6d42e5deea 100644
--- a/spec/features/projects/branches_spec.rb
+++ b/spec/features/projects/branches_spec.rb
@@ -19,7 +19,7 @@ describe 'Branches', feature: true do
 
     describe 'Initial branches page' do
       it 'shows all the branches' do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         repository.branches_sorted_by(:name).first(20).each do |branch|
           expect(page).to have_content("#{branch.name}")
@@ -28,7 +28,7 @@ describe 'Branches', feature: true do
       end
 
       it 'sorts the branches by name' do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         click_button "Name" # Open sorting dropdown
         click_link "Name"
@@ -40,7 +40,7 @@ describe 'Branches', feature: true do
       end
 
       it 'sorts the branches by last updated' do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         click_button "Name" # Open sorting dropdown
         click_link "Last updated"
@@ -52,7 +52,7 @@ describe 'Branches', feature: true do
       end
 
       it 'sorts the branches by oldest updated' do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         click_button "Name" # Open sorting dropdown
         click_link "Oldest updated"
@@ -64,17 +64,17 @@ describe 'Branches', feature: true do
       end
 
       it 'avoids a N+1 query in branches index' do
-        control_count = ActiveRecord::QueryRecorder.new { visit namespace_project_branches_path(project.namespace, project) }.count
+        control_count = ActiveRecord::QueryRecorder.new { visit project_branches_path(project) }.count
 
         %w(one two three four five).each { |ref| repository.add_branch(user, ref, 'master') }
 
-        expect { visit namespace_project_branches_path(project.namespace, project) }.not_to exceed_query_limit(control_count)
+        expect { visit project_branches_path(project) }.not_to exceed_query_limit(control_count)
       end
     end
 
     describe 'Find branches' do
       it 'shows filtered branches', js: true do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         fill_in 'branch-search', with: 'fix'
         find('#branch-search').native.send_keys(:enter)
@@ -86,7 +86,7 @@ describe 'Branches', feature: true do
 
     describe 'Delete unprotected branch' do
       it 'removes branch after confirmation', js: true do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         fill_in 'branch-search', with: 'fix'
 
@@ -104,7 +104,7 @@ describe 'Branches', feature: true do
     describe 'Delete protected branch' do
       before do
         project.add_user(user, :master)
-        visit namespace_project_protected_branches_path(project.namespace, project)
+        visit project_protected_branches_path(project)
         set_protected_branch_name('fix')
         click_on "Protect"
 
@@ -114,7 +114,7 @@ describe 'Branches', feature: true do
       end
 
       it 'does not allow devleoper to removes protected branch', js: true do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         fill_in 'branch-search', with: 'fix'
         find('#branch-search').native.send_keys(:enter)
@@ -132,7 +132,7 @@ describe 'Branches', feature: true do
 
     describe 'Delete protected branch' do
       before do
-        visit namespace_project_protected_branches_path(project.namespace, project)
+        visit project_protected_branches_path(project)
         set_protected_branch_name('fix')
         click_on "Protect"
 
@@ -141,7 +141,7 @@ describe 'Branches', feature: true do
       end
 
       it 'removes branch after modal confirmation', js: true do
-        visit namespace_project_branches_path(project.namespace, project)
+        visit project_branches_path(project)
 
         fill_in 'branch-search', with: 'fix'
         find('#branch-search').native.send_keys(:enter)
@@ -164,7 +164,7 @@ describe 'Branches', feature: true do
 
   context 'logged out' do
     before do
-      visit namespace_project_branches_path(project.namespace, project)
+      visit project_branches_path(project)
     end
 
     it 'does not show merge request button' do
diff --git a/spec/features/projects/commit/builds_spec.rb b/spec/features/projects/commit/builds_spec.rb
index e5b1f95f2b96b67f377a4e5cda6e500cdd64f4d6..69eeb8e285e76205f9625366cca060c696484f70 100644
--- a/spec/features/projects/commit/builds_spec.rb
+++ b/spec/features/projects/commit/builds_spec.rb
@@ -17,7 +17,7 @@ feature 'project commit pipelines', js: true do
     end
 
     scenario 'user views commit pipelines page' do
-      visit pipelines_namespace_project_commit_path(project.namespace, project, project.commit.sha)
+      visit pipelines_project_commit_path(project, project.commit.sha)
 
       page.within('.table-holder') do
         expect(page).to have_content project.pipelines[0].status # pipeline status
diff --git a/spec/features/projects/commit/cherry_pick_spec.rb b/spec/features/projects/commit/cherry_pick_spec.rb
index 0d3fa72fbf5507044c3207c9423f552dfd2c1ed7..2d18add82b50148f8d9f6843f4557b679d6be591 100644
--- a/spec/features/projects/commit/cherry_pick_spec.rb
+++ b/spec/features/projects/commit/cherry_pick_spec.rb
@@ -10,7 +10,7 @@ describe 'Cherry-pick Commits' do
   before do
     sign_in(user)
     project.team << [user, :master]
-    visit namespace_project_commit_path(project.namespace, project, master_pickable_commit.id)
+    visit project_commit_path(project, master_pickable_commit.id)
   end
 
   context "I cherry-pick a commit" do
@@ -43,7 +43,7 @@ describe 'Cherry-pick Commits' do
         uncheck 'create_merge_request'
         click_button 'Cherry-pick'
       end
-      visit namespace_project_commit_path(project.namespace, project, master_pickable_commit.id)
+      visit project_commit_path(project, master_pickable_commit.id)
       find("a[href='#modal-cherry-pick-commit']").click
       page.within('#modal-cherry-pick-commit') do
         uncheck 'create_merge_request'
diff --git a/spec/features/projects/commit/mini_pipeline_graph_spec.rb b/spec/features/projects/commit/mini_pipeline_graph_spec.rb
index 570a7ae7b1662b3b868e1dec1a6518579ff3b75a..c8222326e919c42ae67c40fa933b4f02090f5b2e 100644
--- a/spec/features/projects/commit/mini_pipeline_graph_spec.rb
+++ b/spec/features/projects/commit/mini_pipeline_graph_spec.rb
@@ -22,7 +22,7 @@ feature 'Mini Pipeline Graph in Commit View', :js, :feature do
 
     before do
       build.run
-      visit namespace_project_commit_path(project.namespace, project, project.commit.id)
+      visit project_commit_path(project, project.commit.id)
     end
 
     it 'should display a mini pipeline graph' do
@@ -43,7 +43,7 @@ feature 'Mini Pipeline Graph in Commit View', :js, :feature do
 
   context 'when commit does not have pipelines' do
     before do
-      visit namespace_project_commit_path(project.namespace, project, project.commit.id)
+      visit project_commit_path(project, project.commit.id)
     end
 
     it 'should not display a mini pipeline graph' do
diff --git a/spec/features/projects/commit/rss_spec.rb b/spec/features/projects/commit/rss_spec.rb
index f7548a56984a62c639d30c11f59bfc20ea7cb537..152c0d7c8de0c0632f1ea71916d8da5256b3bef0 100644
--- a/spec/features/projects/commit/rss_spec.rb
+++ b/spec/features/projects/commit/rss_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 feature 'Project Commits RSS' do
   let(:project) { create(:project, :repository, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
-  let(:path) { namespace_project_commits_path(project.namespace, project, :master) }
+  let(:path) { project_commits_path(project, :master) }
 
   context 'when signed in' do
     before do
diff --git a/spec/features/projects/compare_spec.rb b/spec/features/projects/compare_spec.rb
index 4743d69fb7503b393f2f9e039a318d89c92d74f8..c3adfa87c444aa5806fffc1ef8858e7f07549475 100644
--- a/spec/features/projects/compare_spec.rb
+++ b/spec/features/projects/compare_spec.rb
@@ -7,7 +7,7 @@ describe "Compare", js: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_compare_index_path(project.namespace, project, from: "master", to: "master")
+    visit project_compare_index_path(project, from: "master", to: "master")
   end
 
   describe "branches" do
diff --git a/spec/features/projects/deploy_keys_spec.rb b/spec/features/projects/deploy_keys_spec.rb
index a31960639fea2a3304be5d6ad99535c0bcac9802..a310d14be1037015bddecd6f72a2dfaa2d2915d6 100644
--- a/spec/features/projects/deploy_keys_spec.rb
+++ b/spec/features/projects/deploy_keys_spec.rb
@@ -15,7 +15,7 @@ describe 'Project deploy keys', :js, :feature do
     end
 
     it 'removes association between project and deploy key' do
-      visit namespace_project_settings_repository_path(project.namespace, project)
+      visit project_settings_repository_path(project)
 
       page.within(find('.deploy-keys')) do
         expect(page).to have_selector('.deploy-keys li', count: 1)
diff --git a/spec/features/projects/developer_views_empty_project_instructions_spec.rb b/spec/features/projects/developer_views_empty_project_instructions_spec.rb
index a943f1e6a088234ff52362e4e4ef9c12859f7d4f..290dc1a2f79091340ab85f02b9a94974fc47f496 100644
--- a/spec/features/projects/developer_views_empty_project_instructions_spec.rb
+++ b/spec/features/projects/developer_views_empty_project_instructions_spec.rb
@@ -47,7 +47,7 @@ feature 'Developer views empty project instructions', feature: true do
   end
 
   def visit_project
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   def select_protocol(protocol)
diff --git a/spec/features/projects/diffs/diff_show_spec.rb b/spec/features/projects/diffs/diff_show_spec.rb
index 48b7f1e0f34a65c72f507a24ccc6a1b56e041e23..b528b28349533c031fc49d6d443f01ddd549a7a8 100644
--- a/spec/features/projects/diffs/diff_show_spec.rb
+++ b/spec/features/projects/diffs/diff_show_spec.rb
@@ -4,7 +4,7 @@ feature 'Diff file viewer', :js, feature: true do
   let(:project) { create(:project, :public, :repository) }
 
   def visit_commit(sha, anchor: nil)
-    visit namespace_project_commit_path(project.namespace, project, sha, anchor: anchor)
+    visit project_commit_path(project, sha, anchor: anchor)
 
     wait_for_requests
   end
diff --git a/spec/features/projects/edit_spec.rb b/spec/features/projects/edit_spec.rb
index ca202b95a448340c9734d7d1d6e9d903e302903b..78c1a1f1d1ae22e1c92df950086d518e22acdb2b 100644
--- a/spec/features/projects/edit_spec.rb
+++ b/spec/features/projects/edit_spec.rb
@@ -8,7 +8,7 @@ feature 'Project edit', feature: true, js: true do
     project.team << [user, :master]
     gitlab_sign_in(user)
 
-    visit edit_namespace_project_path(project.namespace, project)
+    visit edit_project_path(project)
   end
 
   context 'feature visibility' do
diff --git a/spec/features/projects/environments/environment_metrics_spec.rb b/spec/features/projects/environments/environment_metrics_spec.rb
index a98a69a0fd630bb2a9620958d0b76d333307323b..841514ac7070faeaba3fd7b9038c0064a32da487 100644
--- a/spec/features/projects/environments/environment_metrics_spec.rb
+++ b/spec/features/projects/environments/environment_metrics_spec.rb
@@ -32,8 +32,6 @@ feature 'Environment > Metrics', :feature do
   end
 
   def visit_environment(environment)
-    visit namespace_project_environment_path(environment.project.namespace,
-                                             environment.project,
-                                             environment)
+    visit project_environment_path(environment.project, environment)
   end
 end
diff --git a/spec/features/projects/environments/environment_spec.rb b/spec/features/projects/environments/environment_spec.rb
index 7d565555f1f1a111f651afc24282b5cf2abb2857..e3f40f8e661692fe6cf154120d7e1e0f0baf3d21 100644
--- a/spec/features/projects/environments/environment_spec.rb
+++ b/spec/features/projects/environments/environment_spec.rb
@@ -114,7 +114,7 @@ feature 'Environment', :feature do
                 before do
                   # Stub #terminals as it causes js-enabled feature specs to render the page incorrectly
                   allow_any_instance_of(Environment).to receive(:terminals) { nil }
-                  visit terminal_namespace_project_environment_path(project.namespace, project, environment)
+                  visit terminal_project_environment_path(project, environment)
                 end
 
                 it 'displays a web terminal' do
@@ -194,9 +194,7 @@ feature 'Environment', :feature do
                              name: 'staging-1.0/review',
                              state: :available)
 
-        visit folder_namespace_project_environments_path(project.namespace,
-                                                         project,
-                                                         id: 'staging-1.0')
+        visit folder_project_environments_path(project, id: 'staging-1.0')
       end
 
       it 'renders a correct environment folder' do
@@ -221,7 +219,7 @@ feature 'Environment', :feature do
     end
 
     scenario 'user deletes the branch with running environment' do
-      visit namespace_project_branches_path(project.namespace, project, search: 'feature')
+      visit project_branches_path(project, search: 'feature')
 
       remove_branch_with_hooks(project, user, 'feature') do
         page.within('.js-branch-feature') { find('a.btn-remove').click }
@@ -249,12 +247,10 @@ feature 'Environment', :feature do
   end
 
   def visit_environment(environment)
-    visit namespace_project_environment_path(environment.project.namespace,
-                                             environment.project,
-                                             environment)
+    visit project_environment_path(environment.project, environment)
   end
 
   def have_terminal_button
-    have_link(nil, href: terminal_namespace_project_environment_path(project.namespace, project, environment))
+    have_link(nil, href: terminal_project_environment_path(project, environment))
   end
 end
diff --git a/spec/features/projects/environments/environments_spec.rb b/spec/features/projects/environments/environments_spec.rb
index cf4d996a32d8e0ea9bc0ada093c6ea3dd97895be..af3af3eb965b73fd271431cef757d88f17b3722b 100644
--- a/spec/features/projects/environments/environments_spec.rb
+++ b/spec/features/projects/environments/environments_spec.rb
@@ -29,7 +29,7 @@ feature 'Environments page', :feature, :js do
 
       describe 'in available tab page' do
         it 'should show one environment' do
-          visit namespace_project_environments_path(project.namespace, project, scope: 'available')
+          visit project_environments_path(project, scope: 'available')
           expect(page).to have_css('.environments-container')
           expect(page.all('.environment-name').length).to eq(1)
         end
@@ -37,7 +37,7 @@ feature 'Environments page', :feature, :js do
 
       describe 'in stopped tab page' do
         it 'should show no environments' do
-          visit namespace_project_environments_path(project.namespace, project, scope: 'stopped')
+          visit project_environments_path(project, scope: 'stopped')
           expect(page).to have_css('.environments-container')
           expect(page).to have_content('You don\'t have any environments right now')
         end
@@ -49,7 +49,7 @@ feature 'Environments page', :feature, :js do
 
       describe 'in available tab page' do
         it 'should show no environments' do
-          visit namespace_project_environments_path(project.namespace, project, scope: 'available')
+          visit project_environments_path(project, scope: 'available')
           expect(page).to have_css('.environments-container')
           expect(page).to have_content('You don\'t have any environments right now')
         end
@@ -57,7 +57,7 @@ feature 'Environments page', :feature, :js do
 
       describe 'in stopped tab page' do
         it 'should show one environment' do
-          visit namespace_project_environments_path(project.namespace, project, scope: 'stopped')
+          visit project_environments_path(project, scope: 'stopped')
           expect(page).to have_css('.environments-container')
           expect(page.all('.environment-name').length).to eq(1)
         end
@@ -277,10 +277,10 @@ feature 'Environments page', :feature, :js do
   end
 
   def have_terminal_button
-    have_link(nil, href: terminal_namespace_project_environment_path(project.namespace, project, environment))
+    have_link(nil, href: terminal_project_environment_path(project, environment))
   end
 
   def visit_environments(project)
-    visit namespace_project_environments_path(project.namespace, project)
+    visit project_environments_path(project)
   end
 end
diff --git a/spec/features/projects/features_visibility_spec.rb b/spec/features/projects/features_visibility_spec.rb
index db2790a4bced50150f2b7cd676b8f0a836c33941..45b0c8d1a1839bbe47af37b138464623947b4306 100644
--- a/spec/features/projects/features_visibility_spec.rb
+++ b/spec/features/projects/features_visibility_spec.rb
@@ -17,7 +17,7 @@ describe 'Edit Project Settings', feature: true do
     tools.each do |tool_name, shortcut_name|
       describe "feature #{tool_name}" do
         it 'toggles visibility' do
-          visit edit_namespace_project_path(project.namespace, project)
+          visit edit_project_path(project)
 
           select 'Disabled', from: "project_project_feature_attributes_#{tool_name}_access_level"
           click_button 'Save changes'
@@ -44,7 +44,7 @@ describe 'Edit Project Settings', feature: true do
         project.project_feature.update(issues_access_level: ProjectFeature::DISABLED)
         allow_any_instance_of(Project).to receive(:external_issue_tracker).and_return(JiraService.new)
 
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
 
         expect(page).to have_selector(".shortcuts-issues")
       end
@@ -52,7 +52,7 @@ describe 'Edit Project Settings', feature: true do
 
     context "pipelines subtabs" do
       it "shows builds when enabled" do
-        visit namespace_project_pipelines_path(project.namespace, project)
+        visit project_pipelines_path(project)
 
         expect(page).to have_selector(".shortcuts-builds")
       end
@@ -60,7 +60,7 @@ describe 'Edit Project Settings', feature: true do
       it "hides builds when disabled" do
         allow(Ability).to receive(:allowed?).with(member, :read_builds, project).and_return(false)
 
-        visit namespace_project_pipelines_path(project.namespace, project)
+        visit project_pipelines_path(project)
 
         expect(page).not_to have_selector(".shortcuts-builds")
       end
@@ -73,11 +73,11 @@ describe 'Edit Project Settings', feature: true do
 
     let(:tools) do
       {
-        builds: namespace_project_job_path(project.namespace, project, job),
-        issues: namespace_project_issues_path(project.namespace, project),
-        wiki: namespace_project_wiki_path(project.namespace, project, :home),
-        snippets: namespace_project_snippets_path(project.namespace, project),
-        merge_requests: namespace_project_merge_requests_path(project.namespace, project)
+        builds: project_job_path(project, job),
+        issues: project_issues_path(project),
+        wiki: project_wiki_path(project, :home),
+        snippets: project_snippets_path(project),
+        merge_requests: project_merge_requests_path(project)
       }
     end
 
@@ -157,7 +157,7 @@ describe 'Edit Project Settings', feature: true do
     before do
       project.team << [member, :master]
       gitlab_sign_in(member)
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
     end
 
     it "disables repository related features" do
@@ -174,7 +174,7 @@ describe 'Edit Project Settings', feature: true do
       click_button "Save changes"
       wait_for_requests
 
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(page).to have_content "Customize your workflow!"
     end
@@ -187,7 +187,7 @@ describe 'Edit Project Settings', feature: true do
       click_button "Save changes"
       wait_for_requests
 
-      visit activity_namespace_project_path(project.namespace, project)
+      visit activity_project_path(project)
 
       page.within(".event-filter") do
         expect(page).to have_selector("a", count: 2)
@@ -205,7 +205,7 @@ describe 'Edit Project Settings', feature: true do
         expect(page).to have_content("Comments")
       end
 
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
 
       select "Disabled", from: "project_project_feature_attributes_merge_requests_access_level"
 
@@ -213,7 +213,7 @@ describe 'Edit Project Settings', feature: true do
         expect(page).to have_content("Comments")
       end
 
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
 
       select "Disabled", from: "project_project_feature_attributes_repository_access_level"
 
@@ -221,14 +221,14 @@ describe 'Edit Project Settings', feature: true do
         expect(page).not_to have_content("Comments")
       end
 
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
     end
 
     def save_changes_and_check_activity_tab
       click_button "Save changes"
       wait_for_requests
 
-      visit activity_namespace_project_path(project.namespace, project)
+      visit activity_project_path(project)
 
       page.within(".event-filter") do
         yield
@@ -243,7 +243,7 @@ describe 'Edit Project Settings', feature: true do
     before do
       project.team << [member, :guest]
       gitlab_sign_in(member)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     it "does not show project statistic for guest" do
diff --git a/spec/features/projects/files/browse_files_spec.rb b/spec/features/projects/files/browse_files_spec.rb
index 34aef958ec6d3381b37cb9139bebfbc8c50d0b36..ac2b926f4decc59494ef0ce891c5e25db32b51b8 100644
--- a/spec/features/projects/files/browse_files_spec.rb
+++ b/spec/features/projects/files/browse_files_spec.rb
@@ -7,7 +7,7 @@ feature 'user browses project', feature: true, js: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_tree_path(project.namespace, project, project.default_branch)
+    visit project_tree_path(project, project.default_branch)
   end
 
   scenario "can see blame of '.gitignore'" do
diff --git a/spec/features/projects/files/creating_a_file_spec.rb b/spec/features/projects/files/creating_a_file_spec.rb
index 2a1cc01fe682c73b8272315ec6de46c37afc8289..c31056c3ff732627220e8703abe22e2e80c18aa4 100644
--- a/spec/features/projects/files/creating_a_file_spec.rb
+++ b/spec/features/projects/files/creating_a_file_spec.rb
@@ -7,7 +7,7 @@ feature 'User wants to create a file', feature: true do
   background do
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_new_blob_path(project.namespace, project, project.default_branch)
+    visit project_new_blob_path(project, project.default_branch)
   end
 
   def submit_new_file(options)
diff --git a/spec/features/projects/files/dockerfile_dropdown_spec.rb b/spec/features/projects/files/dockerfile_dropdown_spec.rb
index 4f1b858846225b26fd4ea6c519131531b42783ae..783d98dafa7fb7c8e64f1f3a3010dba7acc17460 100644
--- a/spec/features/projects/files/dockerfile_dropdown_spec.rb
+++ b/spec/features/projects/files/dockerfile_dropdown_spec.rb
@@ -9,7 +9,7 @@ feature 'User wants to add a Dockerfile file', feature: true do
 
     gitlab_sign_in user
 
-    visit namespace_project_new_blob_path(project.namespace, project, 'master', file_name: 'Dockerfile')
+    visit project_new_blob_path(project, 'master', file_name: 'Dockerfile')
   end
 
   scenario 'user can see Dockerfile dropdown' do
diff --git a/spec/features/projects/files/download_buttons_spec.rb b/spec/features/projects/files/download_buttons_spec.rb
index 60182bfebe91af8f1b5937386a50814cd77eeb81..4f4fab8a6e5e4d57d2947614c165e80d854e0fb9 100644
--- a/spec/features/projects/files/download_buttons_spec.rb
+++ b/spec/features/projects/files/download_buttons_spec.rb
@@ -29,14 +29,11 @@ feature 'Download buttons in files tree', feature: true do
   describe 'when files tree' do
     context 'with artifacts' do
       before do
-        visit namespace_project_tree_path(
-          project.namespace, project, project.default_branch)
+        visit project_tree_path(project, project.default_branch)
       end
 
       scenario 'shows download artifacts button' do
-        href = latest_succeeded_namespace_project_artifacts_path(
-          project.namespace, project, "#{project.default_branch}/download",
-          job: 'build')
+        href = latest_succeeded_project_artifacts_path(project, "#{project.default_branch}/download", job: 'build')
 
         expect(page).to have_link "Download '#{build.name}'", href: href
       end
diff --git a/spec/features/projects/files/edit_file_soft_wrap_spec.rb b/spec/features/projects/files/edit_file_soft_wrap_spec.rb
index 6e361ac43129760a794eedeaee653bb6e98bd3ee..83aea070901607dd3b6c018cf3cb50d5e84a4e3c 100644
--- a/spec/features/projects/files/edit_file_soft_wrap_spec.rb
+++ b/spec/features/projects/files/edit_file_soft_wrap_spec.rb
@@ -6,7 +6,7 @@ feature 'User uses soft wrap whilst editing file', feature: true, js: true do
     project = create(:project)
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_new_blob_path(project.namespace, project, 'master', file_name: 'test_file-name')
+    visit project_new_blob_path(project, 'master', file_name: 'test_file-name')
     editor = find('.file-editor.code')
     editor.click
     editor.send_keys 'Touch water with paw then recoil in horror chase dog then
diff --git a/spec/features/projects/files/editing_a_file_spec.rb b/spec/features/projects/files/editing_a_file_spec.rb
index e97ff5fded76e382ef532c6a51cd18f002193d22..c9b0dbd0ffb4b73359942b8384717339a137256d 100644
--- a/spec/features/projects/files/editing_a_file_spec.rb
+++ b/spec/features/projects/files/editing_a_file_spec.rb
@@ -18,7 +18,7 @@ feature 'User wants to edit a file', feature: true do
   background do
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_edit_blob_path(project.namespace, project,
+    visit project_edit_blob_path(project,
                                            File.join(project.default_branch, '.gitignore'))
   end
 
diff --git a/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb b/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb
index 83a837fba4471aef3e75642c09d16d04fe8e7c35..07b4aa80f4b055812de9b5ff35bd2b19e37db54e 100644
--- a/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb
+++ b/spec/features/projects/files/files_sort_submodules_with_folders_spec.rb
@@ -7,7 +7,7 @@ feature 'User views files page', feature: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_tree_path(project.namespace, project, project.repository.root_ref)
+    visit project_tree_path(project, project.repository.root_ref)
   end
 
   scenario 'user sees folders and submodules sorted together, followed by files' do
diff --git a/spec/features/projects/files/find_file_keyboard_spec.rb b/spec/features/projects/files/find_file_keyboard_spec.rb
index 6a914820ac94468c2e9c601036fc28d00f932c0e..087eef5d4076c81a8c05782a938ab27ac564a464 100644
--- a/spec/features/projects/files/find_file_keyboard_spec.rb
+++ b/spec/features/projects/files/find_file_keyboard_spec.rb
@@ -8,7 +8,7 @@ feature 'Find file keyboard shortcuts', feature: true, js: true do
     project.team << [user, :master]
     gitlab_sign_in user
 
-    visit namespace_project_find_file_path(project.namespace, project, project.repository.root_ref)
+    visit project_find_file_path(project, project.repository.root_ref)
 
     wait_for_requests
   end
diff --git a/spec/features/projects/files/find_files_spec.rb b/spec/features/projects/files/find_files_spec.rb
index 166ec5c921b025d792798979de3cb223675f96f5..d2ccc9a073232bb30b42dcd6ffb817e66ff6e657 100644
--- a/spec/features/projects/files/find_files_spec.rb
+++ b/spec/features/projects/files/find_files_spec.rb
@@ -10,20 +10,13 @@ feature 'Find files button in the tree header', feature: true do
   end
 
   scenario 'project main screen' do
-    visit namespace_project_path(
-      project.namespace,
-      project
-    )
+    visit project_path(project)
 
     expect(page).to have_selector('.tree-controls .shortcuts-find-file')
   end
 
   scenario 'project tree screen' do
-    visit namespace_project_tree_path(
-      project.namespace,
-      project,
-      project.default_branch
-    )
+    visit project_tree_path(project, project.default_branch)
 
     expect(page).to have_selector('.tree-controls .shortcuts-find-file')
   end
diff --git a/spec/features/projects/files/gitignore_dropdown_spec.rb b/spec/features/projects/files/gitignore_dropdown_spec.rb
index 7f02ec6b73d5800e52595c8d3c6cd1d186ce8ad1..23c145d0a1182a1a3268cd17ee92788a594da94f 100644
--- a/spec/features/projects/files/gitignore_dropdown_spec.rb
+++ b/spec/features/projects/files/gitignore_dropdown_spec.rb
@@ -6,7 +6,7 @@ feature 'User wants to add a .gitignore file', feature: true do
     project = create(:project)
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_new_blob_path(project.namespace, project, 'master', file_name: '.gitignore')
+    visit project_new_blob_path(project, 'master', file_name: '.gitignore')
   end
 
   scenario 'user can see .gitignore dropdown' do
diff --git a/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb b/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
index f4b17c2518c2f1334365026444b84ca7df4d931e..0539b77e3ddea290bf50377e7c860a828918a229 100644
--- a/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
+++ b/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
@@ -6,7 +6,7 @@ feature 'User wants to add a .gitlab-ci.yml file', feature: true do
     project = create(:project)
     project.team << [user, :master]
     gitlab_sign_in user
-    visit namespace_project_new_blob_path(project.namespace, project, 'master', file_name: '.gitlab-ci.yml')
+    visit project_new_blob_path(project, 'master', file_name: '.gitlab-ci.yml')
   end
 
   scenario 'user can see .gitlab-ci.yml dropdown' do
diff --git a/spec/features/projects/files/project_owner_creates_license_file_spec.rb b/spec/features/projects/files/project_owner_creates_license_file_spec.rb
index 7daf016dd223cb0dbb1bc8d2cf5dc07c3533c4c2..3a4ed3d8cf08e8f900751a9e3a2a45107ec0fe3b 100644
--- a/spec/features/projects/files/project_owner_creates_license_file_spec.rb
+++ b/spec/features/projects/files/project_owner_creates_license_file_spec.rb
@@ -8,11 +8,11 @@ feature 'project owner creates a license file', feature: true, js: true do
       message: 'Remove LICENSE', branch_name: 'master')
     project.team << [project_master, :master]
     gitlab_sign_in(project_master)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'project master creates a license file manually from a template' do
-    visit namespace_project_tree_path(project.namespace, project, project.repository.root_ref)
+    visit project_tree_path(project, project.repository.root_ref)
     find('.add-to-tree').click
     click_link 'New file'
 
@@ -30,7 +30,7 @@ feature 'project owner creates a license file', feature: true, js: true do
     click_button 'Commit changes'
 
     expect(current_path).to eq(
-      namespace_project_blob_path(project.namespace, project, 'master/LICENSE'))
+      project_blob_path(project, 'master/LICENSE'))
     expect(page).to have_content('MIT License')
     expect(page).to have_content("Copyright (c) #{Time.now.year} #{project.namespace.human_name}")
   end
@@ -40,7 +40,7 @@ feature 'project owner creates a license file', feature: true, js: true do
 
     expect(page).to have_content('New file')
     expect(current_path).to eq(
-      namespace_project_new_blob_path(project.namespace, project, 'master'))
+      project_new_blob_path(project, 'master'))
     expect(find('#file_name').value).to eq('LICENSE')
     expect(page).to have_selector('.license-selector')
 
@@ -54,7 +54,7 @@ feature 'project owner creates a license file', feature: true, js: true do
     click_button 'Commit changes'
 
     expect(current_path).to eq(
-      namespace_project_blob_path(project.namespace, project, 'master/LICENSE'))
+      project_blob_path(project, 'master/LICENSE'))
     expect(page).to have_content('MIT License')
     expect(page).to have_content("Copyright (c) #{Time.now.year} #{project.namespace.human_name}")
   end
diff --git a/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb b/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
index eab19d520300d91dee49151018768e9ff19d3469..77f97826427006d65a860370c7d85c98168a361a 100644
--- a/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
+++ b/spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
@@ -9,13 +9,13 @@ feature 'project owner sees a link to create a license file in empty project', f
   end
 
   scenario 'project master creates a license file from a template' do
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
     click_link 'Create empty bare repository'
     click_on 'LICENSE'
     expect(page).to have_content('New file')
 
     expect(current_path).to eq(
-      namespace_project_new_blob_path(project.namespace, project, 'master'))
+      project_new_blob_path(project, 'master'))
     expect(find('#file_name').value).to eq('LICENSE')
     expect(page).to have_selector('.license-selector')
 
@@ -31,7 +31,7 @@ feature 'project owner sees a link to create a license file in empty project', f
     click_button 'Commit changes'
 
     expect(current_path).to eq(
-      namespace_project_blob_path(project.namespace, project, 'master/LICENSE'))
+      project_blob_path(project, 'master/LICENSE'))
     expect(page).to have_content('MIT License')
     expect(page).to have_content("Copyright (c) #{Time.now.year} #{project.namespace.human_name}")
   end
diff --git a/spec/features/projects/files/template_type_dropdown_spec.rb b/spec/features/projects/files/template_type_dropdown_spec.rb
index 028a0919640f0c14b0a6d28cc3941218dc9c9181..53b673538e5e2c46334128c513e25fc5fa98c80b 100644
--- a/spec/features/projects/files/template_type_dropdown_spec.rb
+++ b/spec/features/projects/files/template_type_dropdown_spec.rb
@@ -31,7 +31,7 @@ feature 'Template type dropdown selector', js: true do
 
   context 'editing a matching file' do
     before do
-      visit namespace_project_edit_blob_path(project.namespace, project, File.join(project.default_branch, 'LICENSE'))
+      visit project_edit_blob_path(project, File.join(project.default_branch, 'LICENSE'))
     end
 
     scenario 'displayed' do
@@ -61,7 +61,7 @@ feature 'Template type dropdown selector', js: true do
 
   context 'creating a matching file' do
     before do
-      visit namespace_project_new_blob_path(project.namespace, project, 'master', file_name: '.gitignore')
+      visit project_new_blob_path(project, 'master', file_name: '.gitignore')
     end
 
     scenario 'is displayed' do
@@ -79,7 +79,7 @@ feature 'Template type dropdown selector', js: true do
 
   context 'creating a file' do
     before do
-      visit namespace_project_new_blob_path(project.namespace, project, project.default_branch)
+      visit project_new_blob_path(project, project.default_branch)
     end
 
     scenario 'type selector is shown' do
@@ -129,7 +129,7 @@ def check_type_selector_toggle_text(template_type)
 end
 
 def create_and_edit_file(file_name)
-  visit namespace_project_new_blob_path(project.namespace, project, 'master', file_name: file_name)
+  visit project_new_blob_path(project, 'master', file_name: file_name)
   click_button "Commit changes"
-  visit namespace_project_edit_blob_path(project.namespace, project, File.join(project.default_branch, file_name))
+  visit project_edit_blob_path(project, File.join(project.default_branch, file_name))
 end
diff --git a/spec/features/projects/files/undo_template_spec.rb b/spec/features/projects/files/undo_template_spec.rb
index 4ccd123f46e4ebf8d8ff7e81d644841cb7b42983..e18ff42942ff834b12a7825e2e9b6de4bf37dbdc 100644
--- a/spec/features/projects/files/undo_template_spec.rb
+++ b/spec/features/projects/files/undo_template_spec.rb
@@ -11,7 +11,7 @@ feature 'Template Undo Button', js: true do
 
   context 'editing a matching file and applying a template' do
     before do
-      visit namespace_project_edit_blob_path(project.namespace, project, File.join(project.default_branch, "LICENSE"))
+      visit project_edit_blob_path(project, File.join(project.default_branch, "LICENSE"))
       select_file_template('.js-license-selector', 'Apache License 2.0')
     end
 
@@ -22,7 +22,7 @@ feature 'Template Undo Button', js: true do
 
   context 'creating a non-matching file' do 
     before do
-      visit namespace_project_new_blob_path(project.namespace, project, 'master')
+      visit project_new_blob_path(project, 'master')
       select_file_template_type('LICENSE')
       select_file_template('.js-license-selector', 'Apache License 2.0')
     end
diff --git a/spec/features/projects/gfm_autocomplete_load_spec.rb b/spec/features/projects/gfm_autocomplete_load_spec.rb
index aa4ed217a34dbf71664bbd203b27da2b291c8206..a8661ad4d249c795eaf9ceebb6fb2b09888ed7ec 100644
--- a/spec/features/projects/gfm_autocomplete_load_spec.rb
+++ b/spec/features/projects/gfm_autocomplete_load_spec.rb
@@ -6,7 +6,7 @@ describe 'GFM autocomplete loading', feature: true, js: true do
   before do
     gitlab_sign_in :admin
 
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   it 'does not load on project#show' do
@@ -14,7 +14,7 @@ describe 'GFM autocomplete loading', feature: true, js: true do
   end
 
   it 'loads on new issue page' do
-    visit new_namespace_project_issue_path(project.namespace, project)
+    visit new_project_issue_path(project)
 
     expect(evaluate_script('gl.GfmAutoComplete.dataSources')).not_to eq({})
   end
diff --git a/spec/features/projects/group_links_spec.rb b/spec/features/projects/group_links_spec.rb
index 778f5d61ae37da6c0af75f215707a2f6794005fa..64415ffe57f3276e72d71b142ecfdef31120f5eb 100644
--- a/spec/features/projects/group_links_spec.rb
+++ b/spec/features/projects/group_links_spec.rb
@@ -14,7 +14,7 @@ feature 'Project group links', :feature, :js do
 
   context 'setting an expiration date for a group link' do
     before do
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
 
       click_on 'share-with-group-tab'
 
@@ -43,7 +43,7 @@ feature 'Project group links', :feature, :js do
     end
 
     it 'does not show ancestors', :nested_groups do
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
 
       click_on 'share-with-group-tab'
       click_link 'Search for a group'
@@ -61,7 +61,7 @@ feature 'Project group links', :feature, :js do
       group.add_owner(master)
       group_two.add_owner(master)
 
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
       execute_script 'GroupsSelect.PER_PAGE = 1;'
       open_select2 '#link_group_id'
     end
diff --git a/spec/features/projects/guest_navigation_menu_spec.rb b/spec/features/projects/guest_navigation_menu_spec.rb
index e1f7f06c113af9866669e0bd17636e4c81d15793..f6e24a0aa31079ab1b6c6fa2ec05c79c1089d062 100644
--- a/spec/features/projects/guest_navigation_menu_spec.rb
+++ b/spec/features/projects/guest_navigation_menu_spec.rb
@@ -11,7 +11,7 @@ describe 'Guest navigation menu' do
   end
 
   it 'shows allowed tabs only' do
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
 
     within('.layout-nav') do
       expect(page).to have_content 'Project'
@@ -25,7 +25,7 @@ describe 'Guest navigation menu' do
   end
 
   it 'does not show fork button' do
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
 
     within('.count-buttons') do
       expect(page).not_to have_link 'Fork'
@@ -33,7 +33,7 @@ describe 'Guest navigation menu' do
   end
 
   it 'does not show clone path' do
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
 
     within('.project-repo-buttons') do
       expect(page).not_to have_selector '.project-clone-holder'
@@ -49,7 +49,7 @@ describe 'Guest navigation menu' do
     end
 
     it 'does not show the project file list landing page' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(page).not_to have_selector '.project-stats'
       expect(page).not_to have_selector '.project-last-commit'
@@ -58,7 +58,7 @@ describe 'Guest navigation menu' do
     end
 
     it 'shows the customize workflow when issues and wiki are disabled' do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(page).to have_selector '.project-show-customize_workflow'
     end
@@ -66,7 +66,7 @@ describe 'Guest navigation menu' do
     it 'shows the wiki when enabled' do
       project.project_feature.update!(wiki_access_level: ProjectFeature::PRIVATE)
 
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(page).to have_selector '.project-show-wiki'
     end
@@ -74,7 +74,7 @@ describe 'Guest navigation menu' do
     it 'shows the issues when enabled' do
       project.project_feature.update!(issues_access_level: ProjectFeature::PRIVATE)
 
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(page).to have_selector '.issues-list'
     end
diff --git a/spec/features/projects/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb
index b5c647779342f7923027b1882c91721c14732ea6..b7f0ad9197edd60e7830111dac40e6e015365a15 100644
--- a/spec/features/projects/import_export/export_file_spec.rb
+++ b/spec/features/projects/import_export/export_file_spec.rb
@@ -37,13 +37,13 @@ feature 'Import/Export - project export integration test', feature: true, js: tr
     end
 
     scenario 'exports a project successfully' do
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
 
       expect(page).to have_content('Export project')
 
       click_link 'Export project'
 
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
 
       expect(page).to have_content('Download export')
 
diff --git a/spec/features/projects/import_export/namespace_export_file_spec.rb b/spec/features/projects/import_export/namespace_export_file_spec.rb
index b0a68f0d61f62e12a787ef403a76abdcc6b2b648..f12b28f05fcdeb969f7122c262776d7a10083dce 100644
--- a/spec/features/projects/import_export/namespace_export_file_spec.rb
+++ b/spec/features/projects/import_export/namespace_export_file_spec.rb
@@ -48,13 +48,13 @@ feature 'Import/Export - Namespace export file cleanup', feature: true, js: true
     end
 
     def setup_export_project
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
 
       expect(page).to have_content('Export project')
 
       click_link 'Export project'
 
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
 
       expect(page).to have_content('Download export')
     end
diff --git a/spec/features/projects/issuable_templates_spec.rb b/spec/features/projects/issuable_templates_spec.rb
index 26a09985312d6a1d254e370556058c79bf23072e..83d1dfd91a9897eca1c9ca5fdb6aa56400ce4d56 100644
--- a/spec/features/projects/issuable_templates_spec.rb
+++ b/spec/features/projects/issuable_templates_spec.rb
@@ -28,7 +28,7 @@ feature 'issuable templates', feature: true, js: true do
         longtemplate_content,
         message: 'added issue template',
         branch_name: 'master')
-      visit edit_namespace_project_issue_path project.namespace, project, issue
+      visit edit_project_issue_path project, issue
       fill_in :'issue[title]', with: 'test issue title'
     end
 
@@ -81,7 +81,7 @@ feature 'issuable templates', feature: true, js: true do
         template_content,
         message: 'added issue template',
         branch_name: 'master')
-      visit edit_namespace_project_issue_path project.namespace, project, issue
+      visit edit_project_issue_path project, issue
       fill_in :'issue[title]', with: 'test issue title'
       fill_in :'issue[description]', with: prior_description
     end
@@ -105,7 +105,7 @@ feature 'issuable templates', feature: true, js: true do
         template_content,
         message: 'added merge request template',
         branch_name: 'master')
-      visit edit_namespace_project_merge_request_path project.namespace, project, merge_request
+      visit edit_project_merge_request_path project, merge_request
       fill_in :'merge_request[title]', with: 'test merge request title'
     end
 
@@ -135,7 +135,7 @@ feature 'issuable templates', feature: true, js: true do
         template_content,
         message: 'added merge request template',
         branch_name: 'master')
-      visit edit_namespace_project_merge_request_path project.namespace, project, merge_request
+      visit edit_project_merge_request_path project, merge_request
       fill_in :'merge_request[title]', with: 'test merge request title'
     end
 
diff --git a/spec/features/projects/issues/list_spec.rb b/spec/features/projects/issues/list_spec.rb
index b2db07a75ef3d0e622f1210eb9a033ec4882f726..380ade24a3264bead40768986ed011548686ccc1 100644
--- a/spec/features/projects/issues/list_spec.rb
+++ b/spec/features/projects/issues/list_spec.rb
@@ -13,7 +13,7 @@ feature 'Issues List' do
   scenario 'user does not see create new list button' do
     create(:issue, project: project)
 
-    visit namespace_project_issues_path(project.namespace, project)
+    visit project_issues_path(project)
 
     expect(page).not_to have_selector('.js-new-board-list')
   end
diff --git a/spec/features/projects/issues/rss_spec.rb b/spec/features/projects/issues/rss_spec.rb
index 38733d39932f378d125105dcbf9376eb17e9b689..d68606ab54529d0e1dcb962acf4c02480619d38d 100644
--- a/spec/features/projects/issues/rss_spec.rb
+++ b/spec/features/projects/issues/rss_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 feature 'Project Issues RSS' do
   let(:project) { create(:empty_project, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
-  let(:path) { namespace_project_issues_path(project.namespace, project) }
+  let(:path) { project_issues_path(project) }
 
   before do
     create(:issue, project: project)
diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb
index 070cdbf1ceffce0f0e0f945f09658c342329afb3..e52151e9585ee70472a39fe72c165a9267b6c670 100644
--- a/spec/features/projects/jobs_spec.rb
+++ b/spec/features/projects/jobs_spec.rb
@@ -5,7 +5,6 @@ feature 'Jobs', :feature do
   let(:user) { create(:user) }
   let(:user_access_level) { :developer }
   let(:project) { create(:project) }
-  let(:namespace) { project.namespace }
   let(:pipeline) { create(:ci_pipeline, project: project) }
 
   let(:job) { create(:ci_build, :trace, pipeline: pipeline) }
@@ -25,7 +24,7 @@ feature 'Jobs', :feature do
 
     context "Pending scope" do
       before do
-        visit namespace_project_jobs_path(project.namespace, project, scope: :pending)
+        visit project_jobs_path(project, scope: :pending)
       end
 
       it "shows Pending tab jobs" do
@@ -40,7 +39,7 @@ feature 'Jobs', :feature do
     context "Running scope" do
       before do
         job.run!
-        visit namespace_project_jobs_path(project.namespace, project, scope: :running)
+        visit project_jobs_path(project, scope: :running)
       end
 
       it "shows Running tab jobs" do
@@ -55,7 +54,7 @@ feature 'Jobs', :feature do
     context "Finished scope" do
       before do
         job.run!
-        visit namespace_project_jobs_path(project.namespace, project, scope: :finished)
+        visit project_jobs_path(project, scope: :finished)
       end
 
       it "shows Finished tab jobs" do
@@ -68,7 +67,7 @@ feature 'Jobs', :feature do
     context "All jobs" do
       before do
         project.builds.running_or_pending.each(&:success)
-        visit namespace_project_jobs_path(project.namespace, project)
+        visit project_jobs_path(project)
       end
 
       it "shows All tab jobs" do
@@ -82,7 +81,7 @@ feature 'Jobs', :feature do
 
     context "when visiting old URL" do
       let(:jobs_url) do
-        namespace_project_jobs_path(project.namespace, project)
+        project_jobs_path(project)
       end
 
       before do
@@ -98,7 +97,7 @@ feature 'Jobs', :feature do
   describe "POST /:project/jobs/:id/cancel_all" do
     before do
       job.run!
-      visit namespace_project_jobs_path(project.namespace, project)
+      visit project_jobs_path(project)
       click_link "Cancel running"
     end
 
@@ -117,7 +116,7 @@ feature 'Jobs', :feature do
       let(:job) { create(:ci_build, :success, pipeline: pipeline) }
 
       before do
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       it 'shows status name', :js do
@@ -140,7 +139,7 @@ feature 'Jobs', :feature do
       let(:job) { create(:ci_build, :success, pipeline: pipeline) }
 
       before do
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       it 'shows retry button' do
@@ -157,7 +156,7 @@ feature 'Jobs', :feature do
         let(:job) { create(:ci_build, :failed, pipeline: pipeline) }
 
         before do
-          visit namespace_project_job_path(namespace, project, job)
+          visit project_job_path(project, job)
         end
 
         it 'shows New issue button' do
@@ -166,10 +165,10 @@ feature 'Jobs', :feature do
 
         it 'links to issues/new with the title and description filled in' do
           button_title = "Build Failed ##{job.id}"
-          job_path = namespace_project_job_path(namespace, project, job)
+          job_path = project_job_path(project, job)
           options = { issue: { title: button_title, description: job_path } }
 
-          href = new_namespace_project_issue_path(namespace, project, options)
+          href = new_project_issue_path(project, options)
 
           page.within('.header-action-buttons') do
             expect(find('.js-new-issue')['href']).to include(href)
@@ -180,7 +179,7 @@ feature 'Jobs', :feature do
 
     context "Job from other project" do
       before do
-        visit namespace_project_job_path(project.namespace, project, job2)
+        visit project_job_path(project, job2)
       end
 
       it { expect(page.status_code).to eq(404) }
@@ -189,7 +188,7 @@ feature 'Jobs', :feature do
     context "Download artifacts" do
       before do
         job.update_attributes(artifacts_file: artifacts_file)
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       it 'has button to download artifacts' do
@@ -202,7 +201,7 @@ feature 'Jobs', :feature do
         job.update_attributes(artifacts_file: artifacts_file,
                               artifacts_expire_at: expire_at)
 
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       context 'no expire date defined' do
@@ -248,7 +247,7 @@ feature 'Jobs', :feature do
 
     context "when visiting old URL" do
       let(:job_url) do
-        namespace_project_job_path(project.namespace, project, job)
+        project_job_path(project, job)
       end
 
       before do
@@ -264,7 +263,7 @@ feature 'Jobs', :feature do
       before do
         job.run!
 
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       it do
@@ -276,7 +275,7 @@ feature 'Jobs', :feature do
       before do
         job.run!
 
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       context 'when job has an initial trace' do
@@ -300,7 +299,7 @@ feature 'Jobs', :feature do
       end
 
       before do
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       it 'shows variable key and value after click', js: true do
@@ -325,7 +324,7 @@ feature 'Jobs', :feature do
         let(:job) { create(:ci_build, :success, environment: environment.name, deployments: [deployment], pipeline: pipeline) }
 
         it 'shows a link for the job' do
-          visit namespace_project_job_path(project.namespace, project, job)
+          visit project_job_path(project, job)
 
           expect(page).to have_link environment.name
         end
@@ -335,7 +334,7 @@ feature 'Jobs', :feature do
         let(:job) { create(:ci_build, :failed, environment: environment.name, pipeline: pipeline) }
 
         it 'shows a link for the job' do
-          visit namespace_project_job_path(project.namespace, project, job)
+          visit project_job_path(project, job)
 
           expect(page).to have_link environment.name
         end
@@ -346,7 +345,7 @@ feature 'Jobs', :feature do
         let(:job) { create(:ci_build, :success, environment: environment.name, pipeline: pipeline) }
 
         it 'shows a link to latest deployment' do
-          visit namespace_project_job_path(project.namespace, project, job)
+          visit project_job_path(project, job)
 
           expect(page).to have_link('latest deployment')
         end
@@ -358,7 +357,7 @@ feature 'Jobs', :feature do
     context "Job from project" do
       before do
         job.run!
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
         find('.js-cancel-job').click()
       end
 
@@ -373,7 +372,7 @@ feature 'Jobs', :feature do
     context "Job from project", :js do
       before do
         job.run!
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
         find('.js-cancel-job').click()
         find('.js-retry-button').trigger('click')
       end
@@ -394,7 +393,7 @@ feature 'Jobs', :feature do
 
         gitlab_sign_out_direct
         gitlab_sign_in(create(:user))
-        visit namespace_project_job_path(project.namespace, project, job)
+        visit project_job_path(project, job)
       end
 
       it 'does not show the Retry button' do
@@ -408,14 +407,14 @@ feature 'Jobs', :feature do
   describe "GET /:project/jobs/:id/download" do
     before do
       job.update_attributes(artifacts_file: artifacts_file)
-      visit namespace_project_job_path(project.namespace, project, job)
+      visit project_job_path(project, job)
       click_link 'Download'
     end
 
     context "Build from other project" do
       before do
         job2.update_attributes(artifacts_file: artifacts_file)
-        visit download_namespace_project_job_artifacts_path(project.namespace, project, job2)
+        visit download_project_job_artifacts_path(project, job2)
       end
 
       it { expect(page.status_code).to eq(404) }
@@ -428,7 +427,7 @@ feature 'Jobs', :feature do
         before do
           Capybara.current_session.driver.headers = { 'X-Sendfile-Type' => 'X-Sendfile' }
           job.run!
-          visit namespace_project_job_path(project.namespace, project, job)
+          visit project_job_path(project, job)
           find('.js-raw-link-controller').click()
         end
 
@@ -443,7 +442,7 @@ feature 'Jobs', :feature do
         before do
           Capybara.current_session.driver.headers = { 'X-Sendfile-Type' => 'X-Sendfile' }
           job2.run!
-          visit raw_namespace_project_job_path(project.namespace, project, job2)
+          visit raw_project_job_path(project, job2)
         end
 
         it 'sends the right headers' do
@@ -467,7 +466,7 @@ feature 'Jobs', :feature do
             .to receive(:paths)
             .and_return([existing_file])
 
-          visit namespace_project_job_path(namespace, project, job)
+          visit project_job_path(project, job)
 
           find('.js-raw-link-controller').click
         end
@@ -485,7 +484,7 @@ feature 'Jobs', :feature do
             .to receive(:paths)
             .and_return([])
 
-          visit namespace_project_job_path(namespace, project, job)
+          visit project_job_path(project, job)
         end
 
         it 'sends the right headers' do
@@ -496,7 +495,7 @@ feature 'Jobs', :feature do
 
     context "when visiting old URL" do
       let(:raw_job_url) do
-        raw_namespace_project_job_path(project.namespace, project, job)
+        raw_project_job_path(project, job)
       end
 
       before do
@@ -512,7 +511,7 @@ feature 'Jobs', :feature do
   describe "GET /:project/jobs/:id/trace.json" do
     context "Job from project" do
       before do
-        visit trace_namespace_project_job_path(project.namespace, project, job, format: :json)
+        visit trace_project_job_path(project, job, format: :json)
       end
 
       it { expect(page.status_code).to eq(200) }
@@ -520,7 +519,7 @@ feature 'Jobs', :feature do
 
     context "Job from other project" do
       before do
-        visit trace_namespace_project_job_path(project.namespace, project, job2, format: :json)
+        visit trace_project_job_path(project, job2, format: :json)
       end
 
       it { expect(page.status_code).to eq(404) }
@@ -530,7 +529,7 @@ feature 'Jobs', :feature do
   describe "GET /:project/jobs/:id/status" do
     context "Job from project" do
       before do
-        visit status_namespace_project_job_path(project.namespace, project, job)
+        visit status_project_job_path(project, job)
       end
 
       it { expect(page.status_code).to eq(200) }
@@ -538,7 +537,7 @@ feature 'Jobs', :feature do
 
     context "Job from other project" do
       before do
-        visit status_namespace_project_job_path(project.namespace, project, job2)
+        visit status_project_job_path(project, job2)
       end
 
       it { expect(page.status_code).to eq(404) }
diff --git a/spec/features/projects/labels/issues_sorted_by_priority_spec.rb b/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
index 2c47758f30ea01643b83eb8c6b40db79f787b38f..89e31a72869fdea140046942a5c823faed25cf40 100644
--- a/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
+++ b/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
@@ -29,7 +29,7 @@ feature 'Issue prioritization', feature: true do
       issue_1.labels << label_5
 
       gitlab_sign_in user
-      visit namespace_project_issues_path(project.namespace, project, sort: 'label_priority')
+      visit project_issues_path(project, sort: 'label_priority')
 
       # Ensure we are indicating that issues are sorted by priority
       expect(page).to have_selector('.dropdown-toggle', text: 'Label priority')
@@ -68,7 +68,7 @@ feature 'Issue prioritization', feature: true do
       issue_6.labels << label_5 # 8 - No priority
 
       gitlab_sign_in user
-      visit namespace_project_issues_path(project.namespace, project, sort: 'label_priority')
+      visit project_issues_path(project, sort: 'label_priority')
 
       expect(page).to have_selector('.dropdown-toggle', text: 'Label priority')
 
diff --git a/spec/features/projects/labels/subscription_spec.rb b/spec/features/projects/labels/subscription_spec.rb
index 584dc294f05c4fada4f24a4867d61a33c1009e59..04617bfe03e2736b6eb6e9a6ae4e41b6099ad9b5 100644
--- a/spec/features/projects/labels/subscription_spec.rb
+++ b/spec/features/projects/labels/subscription_spec.rb
@@ -14,7 +14,7 @@ feature 'Labels subscription', feature: true do
     end
 
     scenario 'users can subscribe/unsubscribe to labels', js: true do
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content('bug')
       expect(page).to have_content('feature')
@@ -55,7 +55,7 @@ feature 'Labels subscription', feature: true do
 
   context 'when not signed in' do
     it 'users can not subscribe/unsubscribe to labels' do
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content 'bug'
       expect(page).to have_content 'feature'
diff --git a/spec/features/projects/labels/update_prioritization_spec.rb b/spec/features/projects/labels/update_prioritization_spec.rb
index 589bfb9fbc9773afc96575b2791b04d1e8c9998c..034613ea6beeddc7833d8a691349e8b6f60b9e12 100644
--- a/spec/features/projects/labels/update_prioritization_spec.rb
+++ b/spec/features/projects/labels/update_prioritization_spec.rb
@@ -18,7 +18,7 @@ feature 'Prioritize labels', feature: true do
     end
 
     scenario 'user can prioritize a group label', js: true do
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content('Star labels to start sorting by priority')
 
@@ -37,7 +37,7 @@ feature 'Prioritize labels', feature: true do
     scenario 'user can unprioritize a group label', js: true do
       create(:label_priority, project: project, label: feature, priority: 1)
 
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       page.within('.prioritized-labels') do
         expect(page).to have_content('feature')
@@ -53,7 +53,7 @@ feature 'Prioritize labels', feature: true do
     end
 
     scenario 'user can prioritize a project label', js: true do
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content('Star labels to start sorting by priority')
 
@@ -72,7 +72,7 @@ feature 'Prioritize labels', feature: true do
     scenario 'user can unprioritize a project label', js: true do
       create(:label_priority, project: project, label: bug, priority: 1)
 
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       page.within('.prioritized-labels') do
         expect(page).to have_content('bug')
@@ -92,7 +92,7 @@ feature 'Prioritize labels', feature: true do
       create(:label_priority, project: project, label: bug, priority: 1)
       create(:label_priority, project: project, label: feature, priority: 2)
 
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content 'bug'
       expect(page).to have_content 'feature'
@@ -122,7 +122,7 @@ feature 'Prioritize labels', feature: true do
 
       gitlab_sign_in guest
 
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content 'bug'
       expect(page).to have_content 'wontfix'
@@ -133,7 +133,7 @@ feature 'Prioritize labels', feature: true do
 
   context 'as a non signed in user' do
     it 'does not prioritize labels' do
-      visit namespace_project_labels_path(project.namespace, project)
+      visit project_labels_path(project)
 
       expect(page).to have_content 'bug'
       expect(page).to have_content 'wontfix'
diff --git a/spec/features/projects/main/download_buttons_spec.rb b/spec/features/projects/main/download_buttons_spec.rb
index 514453db47245645e4566e753a3a4b57e5f3db46..b14e0f089f04c95efa5d4a7b392db3acecb35be0 100644
--- a/spec/features/projects/main/download_buttons_spec.rb
+++ b/spec/features/projects/main/download_buttons_spec.rb
@@ -29,13 +29,11 @@ feature 'Download buttons in project main page', feature: true do
   describe 'when checking project main page' do
     context 'with artifacts' do
       before do
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
       end
 
       scenario 'shows download artifacts button' do
-        href = latest_succeeded_namespace_project_artifacts_path(
-          project.namespace, project, "#{project.default_branch}/download",
-          job: 'build')
+        href = latest_succeeded_project_artifacts_path(project, "#{project.default_branch}/download", job: 'build')
 
         expect(page).to have_link "Download '#{build.name}'", href: href
       end
diff --git a/spec/features/projects/main/rss_spec.rb b/spec/features/projects/main/rss_spec.rb
index fee8cfe2c33f2f2385a03ee8346bb50fbda275a0..5f48253dd06c70e39a5d92b01178987a5e8f75c2 100644
--- a/spec/features/projects/main/rss_spec.rb
+++ b/spec/features/projects/main/rss_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 feature 'Project RSS' do
   let(:project) { create(:project, :repository, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
-  let(:path) { namespace_project_path(project.namespace, project) }
+  let(:path) { project_path(project) }
 
   context 'when signed in' do
     before do
diff --git a/spec/features/projects/members/anonymous_user_sees_members_spec.rb b/spec/features/projects/members/anonymous_user_sees_members_spec.rb
index d82cf53c690fac4d50506eb0a69f717490b4d5ff..4958d5594acbfef5d6cf0ab17e4d93c0cbc0ef8b 100644
--- a/spec/features/projects/members/anonymous_user_sees_members_spec.rb
+++ b/spec/features/projects/members/anonymous_user_sees_members_spec.rb
@@ -11,10 +11,10 @@ feature 'Projects > Members > Anonymous user sees members', feature: true do
   end
 
   scenario "anonymous user visits the project's members page and sees the list of members" do
-    visit namespace_project_settings_members_path(project.namespace, project)
+    visit project_settings_members_path(project)
 
     expect(current_path).to eq(
-      namespace_project_settings_members_path(project.namespace, project))
+      project_settings_members_path(project))
     expect(page).to have_content(user.name)
   end
 end
diff --git a/spec/features/projects/members/group_links_spec.rb b/spec/features/projects/members/group_links_spec.rb
index 00d2a27597bab2cf2efd4130724acf0dfbbd7c96..61cd7db15f5ae2a576be1408ab22f0aee473fcae 100644
--- a/spec/features/projects/members/group_links_spec.rb
+++ b/spec/features/projects/members/group_links_spec.rb
@@ -10,7 +10,7 @@ feature 'Projects > Members > Anonymous user sees members', feature: true, js: t
     @group_link = create(:project_group_link, project: project, group: group)
 
     gitlab_sign_in(user)
-    visit namespace_project_settings_members_path(project.namespace, project)
+    visit project_settings_members_path(project)
   end
 
   it 'updates group access level' do
@@ -22,7 +22,7 @@ feature 'Projects > Members > Anonymous user sees members', feature: true, js: t
 
     wait_for_requests
 
-    visit namespace_project_settings_members_path(project.namespace, project)
+    visit project_settings_members_path(project)
 
     expect(first('.group_member')).to have_content('Guest')
   end
diff --git a/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb b/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb
index 7e71dbc24c08a333cfcdba92b229b6ccd23b9d90..1c429202abad6d1421ab3b6e4c2973636846750c 100644
--- a/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb
+++ b/spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb
@@ -8,7 +8,7 @@ feature 'Projects > Members > Group member cannot leave group project', feature:
   background do
     group.add_developer(user)
     gitlab_sign_in(user)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'user does not see a "Leave project" link' do
diff --git a/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb b/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb
index 60a5cd9ec63d449f9d2068da5787c7db4b851dae..7250a0d26fc9bf73a295501d9f3a351004d7974d 100644
--- a/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb
+++ b/spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb
@@ -42,6 +42,6 @@ feature 'Projects > Members > Group member cannot request access to his group pr
 
   def login_and_visit_project_page(user)
     gitlab_sign_in(user)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 end
diff --git a/spec/features/projects/members/group_members_spec.rb b/spec/features/projects/members/group_members_spec.rb
index 76fe6a00dabcfe7365b3715aa6c726a1ace21d9b..0acf5134cce5831dad94dab4f8dbe3760b2e5bb3 100644
--- a/spec/features/projects/members/group_members_spec.rb
+++ b/spec/features/projects/members/group_members_spec.rb
@@ -19,7 +19,7 @@ feature 'Projects members', feature: true do
   context 'with a group invitee' do
     before do
       group_invitee
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
     end
 
     scenario 'does not appear in the project members page' do
@@ -33,7 +33,7 @@ feature 'Projects members', feature: true do
     before do
       group_invitee
       project_invitee
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
     end
 
     scenario 'shows the project invitee, the project developer, and the group owner' do
@@ -54,7 +54,7 @@ feature 'Projects members', feature: true do
   context 'with a group requester' do
     before do
       group.request_access(group_requester)
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
     end
 
     scenario 'does not appear in the project members page' do
@@ -68,7 +68,7 @@ feature 'Projects members', feature: true do
     before do
       group.request_access(group_requester)
       project.request_access(project_requester)
-      visit namespace_project_settings_members_path(project.namespace, project)
+      visit project_settings_members_path(project)
     end
 
     scenario 'shows the project requester, the project developer, and the group owner' do
diff --git a/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb b/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb
index 66da28b07fe2abdc273e62e7308758afd5c766e4..5a28a7538f8fcc52e0ee56b5e9479d786ed7268b 100644
--- a/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb
+++ b/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb
@@ -11,7 +11,7 @@ feature 'Projects > Members > Group requester cannot request access to project',
     gitlab_sign_in(user)
     visit group_path(group)
     perform_enqueued_jobs { click_link 'Request Access' }
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'group requester does not see the request access / withdraw access request button' do
diff --git a/spec/features/projects/members/list_spec.rb b/spec/features/projects/members/list_spec.rb
index 9fdd7df0ee54ac3913d7e62c4e3e2461e6910a84..b62bf2f62930c7845617bd333db74de378efd29b 100644
--- a/spec/features/projects/members/list_spec.rb
+++ b/spec/features/projects/members/list_spec.rb
@@ -85,6 +85,6 @@ feature 'Project members list', feature: true do
   end
 
   def visit_members_page
-    visit namespace_project_settings_members_path(project.namespace, project)
+    visit project_settings_members_path(project)
   end
 end
diff --git a/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb b/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
index 21b48b7fdd19e83667c3a91952eb2966722946bb..ca2172bb905903a84019d2db0a162f69d6e0fb77 100644
--- a/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
+++ b/spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
@@ -16,7 +16,7 @@ feature 'Projects > Members > Master adds member with expiration date', feature:
   scenario 'expiration date is displayed in the members list' do
     travel_to Time.zone.parse('2016-08-06 08:00') do
       date = 4.days.from_now
-      visit namespace_project_project_members_path(project.namespace, project)
+      visit project_project_members_path(project)
 
       page.within '.users-project-form' do
         select2(new_member.id, from: '#user_ids', multiple: true)
@@ -34,7 +34,7 @@ feature 'Projects > Members > Master adds member with expiration date', feature:
     travel_to Time.zone.parse('2016-08-06 08:00') do
       date = 3.days.from_now
       project.team.add_users([new_member.id], :developer, expires_at: Date.today.to_s(:medium))
-      visit namespace_project_project_members_path(project.namespace, project)
+      visit project_project_members_path(project)
 
       page.within "#project_member_#{new_member.project_members.first.id}" do
         find('.js-access-expiration-date').set date.to_s(:medium)
diff --git a/spec/features/projects/members/master_manages_access_requests_spec.rb b/spec/features/projects/members/master_manages_access_requests_spec.rb
index bd445e27243a136435340ac2799a3e5be6577019..69c5927428c251c1a1866dd406a111e72eacddbd 100644
--- a/spec/features/projects/members/master_manages_access_requests_spec.rb
+++ b/spec/features/projects/members/master_manages_access_requests_spec.rb
@@ -12,13 +12,13 @@ feature 'Projects > Members > Master manages access requests', feature: true do
   end
 
   scenario 'master can see access requests' do
-    visit namespace_project_project_members_path(project.namespace, project)
+    visit project_project_members_path(project)
 
     expect_visible_access_request(project, user)
   end
 
   scenario 'master can grant access' do
-    visit namespace_project_project_members_path(project.namespace, project)
+    visit project_project_members_path(project)
 
     expect_visible_access_request(project, user)
 
@@ -29,7 +29,7 @@ feature 'Projects > Members > Master manages access requests', feature: true do
   end
 
   scenario 'master can deny access' do
-    visit namespace_project_project_members_path(project.namespace, project)
+    visit project_project_members_path(project)
 
     expect_visible_access_request(project, user)
 
diff --git a/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb b/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb
index 703f5dff6b56e29b2569568f5fd036b7f20c8dfa..f0da201da85d95c2cab8020a2122e8981737590c 100644
--- a/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb
+++ b/spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb
@@ -7,7 +7,7 @@ feature 'Projects > Members > Member cannot request access to his project', feat
   background do
     project.team << [member, :developer]
     gitlab_sign_in(member)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'member does not see the request access button' do
diff --git a/spec/features/projects/members/member_leaves_project_spec.rb b/spec/features/projects/members/member_leaves_project_spec.rb
index 8e1788f7f2adc266e8e3cc2d145aafc006e1da6e..31d8bbdc0b6021c4aac64d862e1b886987fae260 100644
--- a/spec/features/projects/members/member_leaves_project_spec.rb
+++ b/spec/features/projects/members/member_leaves_project_spec.rb
@@ -7,7 +7,7 @@ feature 'Projects > Members > Member leaves project', feature: true do
   background do
     project.team << [user, :developer]
     gitlab_sign_in(user)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'user leaves project' do
diff --git a/spec/features/projects/members/owner_cannot_leave_project_spec.rb b/spec/features/projects/members/owner_cannot_leave_project_spec.rb
index 70e4bb19c0f81d9784f16f059120415fc298a452..a1ccc6ddf65425ca25e68c4bcbdb56087b9af1fb 100644
--- a/spec/features/projects/members/owner_cannot_leave_project_spec.rb
+++ b/spec/features/projects/members/owner_cannot_leave_project_spec.rb
@@ -5,7 +5,7 @@ feature 'Projects > Members > Owner cannot leave project', feature: true do
 
   background do
     gitlab_sign_in(project.owner)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'user does not see a "Leave project" link' do
diff --git a/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb b/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb
index 0cd7e3afedafe1b1e6f575f60b9d90efa31a8dff..54f5d0d165ba75f0de08dfb0a011774a7518c72c 100644
--- a/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb
+++ b/spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb
@@ -5,7 +5,7 @@ feature 'Projects > Members > Owner cannot request access to his project', featu
 
   background do
     gitlab_sign_in(project.owner)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'owner does not see the request access button' do
diff --git a/spec/features/projects/members/sorting_spec.rb b/spec/features/projects/members/sorting_spec.rb
index 66d98ef8b9081348ae878ca5390915c5b6541457..7c02b49a0ab92ed523e3cab15319e57f874f4aac 100644
--- a/spec/features/projects/members/sorting_spec.rb
+++ b/spec/features/projects/members/sorting_spec.rb
@@ -84,7 +84,7 @@ feature 'Projects > Members > Sorting', feature: true do
   end
 
   def visit_members_list(sort:)
-    visit namespace_project_project_members_path(project.namespace.to_param, project, sort: sort)
+    visit project_project_members_path(project, sort: sort)
   end
 
   def first_member
diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb
index 081009f232577a94ae50a05cca2f437ca2d30b3e..247cc0e6f2c9ec5e41ad02c13a46e695ea1c5bd4 100644
--- a/spec/features/projects/members/user_requests_access_spec.rb
+++ b/spec/features/projects/members/user_requests_access_spec.rb
@@ -7,12 +7,12 @@ feature 'Projects > Members > User requests access', feature: true do
 
   background do
     gitlab_sign_in(user)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
   end
 
   scenario 'request access feature is disabled' do
     project.update_attributes(request_access_enabled: false)
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
 
     expect(page).not_to have_content 'Request Access'
   end
@@ -35,7 +35,7 @@ feature 'Projects > Members > User requests access', feature: true do
       project.project_feature.update!(repository_access_level: ProjectFeature::PRIVATE,
                                       builds_access_level: ProjectFeature::PRIVATE,
                                       merge_requests_access_level: ProjectFeature::PRIVATE)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       expect(page).to have_content 'Request Access'
     end
@@ -49,7 +49,7 @@ feature 'Projects > Members > User requests access', feature: true do
     open_project_settings_menu
     click_link 'Members'
 
-    visit namespace_project_settings_members_path(project.namespace, project)
+    visit project_settings_members_path(project)
     page.within('.content') do
       expect(page).not_to have_content(user.name)
     end
diff --git a/spec/features/projects/merge_request_button_spec.rb b/spec/features/projects/merge_request_button_spec.rb
index 58054bbbbeda60d474a5e5f8ded7922241ed47de..771dd7d3208a5cc41fb3096da24853f2fd1c0523 100644
--- a/spec/features/projects/merge_request_button_spec.rb
+++ b/spec/features/projects/merge_request_button_spec.rb
@@ -23,10 +23,9 @@ feature 'Merge Request button', feature: true do
       end
 
       it 'shows Create merge request button' do
-        href = namespace_project_new_merge_request_path(project.namespace,
-                                                        project,
-                                                        merge_request: { source_branch: 'feature',
-                                                                         target_branch: 'master' })
+        href = project_new_merge_request_path(project,
+                                              merge_request: { source_branch: 'feature',
+                                                               target_branch: 'master' })
 
         visit url
 
@@ -67,10 +66,9 @@ feature 'Merge Request button', feature: true do
         let(:user) { forked_project.owner }
 
         it 'shows Create merge request button' do
-          href = namespace_project_new_merge_request_path(forked_project.namespace,
-                                                          forked_project,
-                                                          merge_request: { source_branch: 'feature',
-                                                                           target_branch: 'master' })
+          href = project_new_merge_request_path(forked_project,
+                                                merge_request: { source_branch: 'feature',
+                                                                 target_branch: 'master' })
 
           visit fork_url
 
@@ -85,24 +83,24 @@ feature 'Merge Request button', feature: true do
   context 'on branches page' do
     it_behaves_like 'Merge request button only shown when allowed' do
       let(:label) { 'Merge request' }
-      let(:url) { namespace_project_branches_path(project.namespace, project, search: 'feature') }
-      let(:fork_url) { namespace_project_branches_path(forked_project.namespace, forked_project, search: 'feature') }
+      let(:url) { project_branches_path(project, search: 'feature') }
+      let(:fork_url) { project_branches_path(forked_project, search: 'feature') }
     end
   end
 
   context 'on compare page' do
     it_behaves_like 'Merge request button only shown when allowed' do
       let(:label) { 'Create merge request' }
-      let(:url) { namespace_project_compare_path(project.namespace, project, from: 'master', to: 'feature') }
-      let(:fork_url) { namespace_project_compare_path(forked_project.namespace, forked_project, from: 'master', to: 'feature') }
+      let(:url) { project_compare_path(project, from: 'master', to: 'feature') }
+      let(:fork_url) { project_compare_path(forked_project, from: 'master', to: 'feature') }
     end
   end
 
   context 'on commits page' do
     it_behaves_like 'Merge request button only shown when allowed' do
       let(:label) { 'Create merge request' }
-      let(:url) { namespace_project_commits_path(project.namespace, project, 'feature') }
-      let(:fork_url) { namespace_project_commits_path(forked_project.namespace, forked_project, 'feature') }
+      let(:url) { project_commits_path(project, 'feature') }
+      let(:fork_url) { project_commits_path(forked_project, 'feature') }
     end
   end
 end
diff --git a/spec/features/projects/merge_requests/list_spec.rb b/spec/features/projects/merge_requests/list_spec.rb
index 7ce3156215ac480fc17d7790a630cb619a8889aa..ff4d22b3881ad9c4af37a8a54b023beaa23028ff 100644
--- a/spec/features/projects/merge_requests/list_spec.rb
+++ b/spec/features/projects/merge_requests/list_spec.rb
@@ -13,28 +13,28 @@ feature 'Merge Requests List' do
   scenario 'user does not see create new list button' do
     create(:merge_request, source_project: project)
 
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
 
     expect(page).not_to have_selector('.js-new-board-list')
   end
 
   it 'should show an empty state' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
 
     expect(page).to have_selector('.empty-state')
   end
 
   it 'empty state should have a create merge request button' do
-    visit namespace_project_merge_requests_path(project.namespace, project)
+    visit project_merge_requests_path(project)
 
-    expect(page).to have_link 'New merge request', href: namespace_project_new_merge_request_path(project.namespace, project)
+    expect(page).to have_link 'New merge request', href: project_new_merge_request_path(project)
   end
 
   context 'if there are merge requests' do
     before do
       create(:merge_request, assignee: user, source_project: project)
 
-      visit namespace_project_merge_requests_path(project.namespace, project)
+      visit project_merge_requests_path(project)
     end
 
     it 'should not show an empty state' do
diff --git a/spec/features/projects/milestones/milestone_spec.rb b/spec/features/projects/milestones/milestone_spec.rb
index a02e4118784e4fa1774684740273a82440d07908..1913ef728d31c73ff215e0309ec80249039485c3 100644
--- a/spec/features/projects/milestones/milestone_spec.rb
+++ b/spec/features/projects/milestones/milestone_spec.rb
@@ -11,7 +11,7 @@ feature 'Project milestone', :feature do
 
   context 'when project has enabled issues' do
     before do
-      visit namespace_project_milestone_path(project.namespace, project, milestone)
+      visit project_milestone_path(project, milestone)
     end
 
     it 'shows issues tab' do
@@ -38,7 +38,7 @@ feature 'Project milestone', :feature do
   context 'when project has disabled issues' do
     before do
       project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED)
-      visit namespace_project_milestone_path(project.namespace, project, milestone)
+      visit project_milestone_path(project, milestone)
     end
 
     it 'hides issues tab' do
@@ -68,7 +68,7 @@ feature 'Project milestone', :feature do
     before do
       create(:issue, project: project, milestone: milestone)
 
-      visit namespace_project_milestone_path(project.namespace, project, milestone)
+      visit project_milestone_path(project, milestone)
     end
 
     describe 'the collapsed sidebar' do
diff --git a/spec/features/projects/milestones/milestones_sorting_spec.rb b/spec/features/projects/milestones/milestones_sorting_spec.rb
index 2350089255dd0a25149fa560a301960aee99d3b4..1b74758445ba78463e33add18f5f313ec638dfe0 100644
--- a/spec/features/projects/milestones/milestones_sorting_spec.rb
+++ b/spec/features/projects/milestones/milestones_sorting_spec.rb
@@ -19,7 +19,7 @@ feature 'Milestones sorting', :feature, :js do
   end
 
   scenario 'visit project milestones and sort by due_date_asc' do
-    visit namespace_project_milestones_path(project.namespace, project)
+    visit project_milestones_path(project)
 
     expect(page).to have_button('Due soon')
 
diff --git a/spec/features/projects/milestones/new_spec.rb b/spec/features/projects/milestones/new_spec.rb
index 7403822c7fbb5dfa1cd721bff44b9e4630783b5a..3c81db502bc9f7f7ad9d9593c07c4eaa6c535780 100644
--- a/spec/features/projects/milestones/new_spec.rb
+++ b/spec/features/projects/milestones/new_spec.rb
@@ -6,7 +6,7 @@ feature 'Creating a new project milestone', :feature, :js do
 
   before do
     login_as(user)
-    visit new_namespace_project_milestone_path(project.namespace, project)
+    visit new_project_milestone_path(project)
   end
 
   it 'description has autocomplete' do
diff --git a/spec/features/projects/no_password_spec.rb b/spec/features/projects/no_password_spec.rb
index 30a16e38e3c3ff63094a1688b4b1900e00bbef74..53ac18fa7ccbee4149690a5a383b1866c2dad8c4 100644
--- a/spec/features/projects/no_password_spec.rb
+++ b/spec/features/projects/no_password_spec.rb
@@ -6,7 +6,7 @@ feature 'No Password Alert' do
   context 'with internal auth enabled' do
     before do
       sign_in(user)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     context 'when user has a password' do
@@ -37,7 +37,7 @@ feature 'No Password Alert' do
     context 'when user has no personal access tokens' do
       it 'has a personal access token alert' do
         gitlab_sign_in_via('saml', user, 'my-uid')
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
 
         expect(page).to have_content "You won't be able to pull or push project code via HTTP until you create a personal access token on your account"
       end
@@ -47,7 +47,7 @@ feature 'No Password Alert' do
       it 'shows no alert' do
         create(:personal_access_token, user: user)
         gitlab_sign_in_via('saml', user, 'my-uid')
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
 
         expect(page).not_to have_content "You won't be able to pull or push project code via HTTP until you create a personal access token on your account"
       end
@@ -59,7 +59,7 @@ feature 'No Password Alert' do
 
     before do
       sign_in(user)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     it 'shows no alert' do
diff --git a/spec/features/projects/pages_spec.rb b/spec/features/projects/pages_spec.rb
index e9a3cfb7f6031e3800b011c879164c4d4d82c839..e2cc38e276f420ecbdb758489653ef49b7fc2b06 100644
--- a/spec/features/projects/pages_spec.rb
+++ b/spec/features/projects/pages_spec.rb
@@ -15,7 +15,7 @@ feature 'Pages', feature: true do
 
   shared_examples 'no pages deployed' do
     scenario 'does not see anything to destroy' do
-      visit namespace_project_pages_path(project.namespace, project)
+      visit project_pages_path(project)
 
       expect(page).not_to have_link('Remove pages')
       expect(page).not_to have_text('Only the project owner can remove pages')
@@ -33,7 +33,7 @@ feature 'Pages', feature: true do
       end
 
       scenario 'sees "Remove pages" link' do
-        visit namespace_project_pages_path(project.namespace, project)
+        visit project_pages_path(project)
 
         expect(page).to have_link('Remove pages')
       end
@@ -49,7 +49,7 @@ feature 'Pages', feature: true do
       end
 
       scenario 'sees "Only the project owner can remove pages" text' do
-        visit namespace_project_pages_path(project.namespace, project)
+        visit project_pages_path(project)
 
         expect(page).to have_text('Only the project owner can remove pages')
       end
diff --git a/spec/features/projects/pipeline_schedules_spec.rb b/spec/features/projects/pipeline_schedules_spec.rb
index dfb973c37e557519e405d96ae12a555df3f51d7a..d8bb7ca9a83e0c9b0bca2f7af87afed9c564333a 100644
--- a/spec/features/projects/pipeline_schedules_spec.rb
+++ b/spec/features/projects/pipeline_schedules_spec.rb
@@ -135,15 +135,15 @@ feature 'Pipeline Schedules', :feature do
   end
 
   def visit_new_pipeline_schedule
-    visit new_namespace_project_pipeline_schedule_path(project.namespace, project, pipeline_schedule)
+    visit new_project_pipeline_schedule_path(project, pipeline_schedule)
   end
 
   def edit_pipeline_schedule
-    visit edit_namespace_project_pipeline_schedule_path(project.namespace, project, pipeline_schedule)
+    visit edit_project_pipeline_schedule_path(project, pipeline_schedule)
   end
 
   def visit_pipelines_schedules
-    visit namespace_project_pipeline_schedules_path(project.namespace, project, scope: scope)
+    visit project_pipeline_schedules_path(project, scope: scope)
   end
 
   def select_timezone
diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb
index e182995922d88f8dbffaabf0efd02267e41b1f5c..bd6750d2208fcfc23c3580fb81b1b1e445a70c4d 100644
--- a/spec/features/projects/pipelines/pipeline_spec.rb
+++ b/spec/features/projects/pipelines/pipeline_spec.rb
@@ -1,8 +1,6 @@
 require 'spec_helper'
 
 describe 'Pipeline', :feature, :js do
-  include GitlabRoutingHelper
-
   let(:project) { create(:empty_project) }
   let(:user) { create(:user) }
 
@@ -48,7 +46,7 @@ describe 'Pipeline', :feature, :js do
     let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id, user: user) }
 
     before do
-      visit namespace_project_pipeline_path(project.namespace, project, pipeline)
+      visit project_pipeline_path(project, pipeline)
     end
 
     it 'shows the pipeline graph' do
@@ -194,7 +192,7 @@ describe 'Pipeline', :feature, :js do
     let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id) }
 
     before do
-      visit builds_namespace_project_pipeline_path(project.namespace, project, pipeline)
+      visit builds_project_pipeline_path(project, pipeline)
     end
 
     it 'shows a list of jobs' do
@@ -266,7 +264,7 @@ describe 'Pipeline', :feature, :js do
   describe 'GET /:project/pipelines/:id/failures' do
     let(:project) { create(:project) }
     let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id) }
-    let(:pipeline_failures_page) { failures_namespace_project_pipeline_path(project.namespace, project, pipeline) }
+    let(:pipeline_failures_page) { failures_project_pipeline_path(project, pipeline) }
     let!(:failed_build) { create(:ci_build, :failed, pipeline: pipeline) }
 
     context 'with failed build' do
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index d36d073e02251b84efb5491bf7d3a3684340037a..a82a804e4c1892bd43adae1b31c9c42d0f43be94 100644
--- a/spec/features/projects/pipelines/pipelines_spec.rb
+++ b/spec/features/projects/pipelines/pipelines_spec.rb
@@ -51,7 +51,7 @@ describe 'Pipelines', :feature, :js do
 
       context 'header tabs' do
         before do
-          visit namespace_project_pipelines_path(project.namespace, project)
+          visit project_pipelines_path(project)
           wait_for_requests
         end
 
@@ -369,14 +369,14 @@ describe 'Pipelines', :feature, :js do
         end
 
         it 'should render pagination' do
-          visit namespace_project_pipelines_path(project.namespace, project)
+          visit project_pipelines_path(project)
           wait_for_requests
 
           expect(page).to have_selector('.gl-pagination')
         end
 
         it 'should render second page of pipelines' do
-          visit namespace_project_pipelines_path(project.namespace, project, page: '2')
+          visit project_pipelines_path(project, page: '2')
           wait_for_requests
 
           expect(page).to have_selector('.gl-pagination .page', count: 2)
@@ -405,7 +405,7 @@ describe 'Pipelines', :feature, :js do
 
         create(:generic_commit_status, pipeline: pipeline, stage: 'external', name: 'jenkins', stage_idx: 3)
 
-        visit namespace_project_pipeline_path(project.namespace, project, pipeline)
+        visit project_pipeline_path(project, pipeline)
         wait_for_requests
       end
 
@@ -440,7 +440,7 @@ describe 'Pipelines', :feature, :js do
       let(:project) { create(:project) }
 
       before do
-        visit new_namespace_project_pipeline_path(project.namespace, project)
+        visit new_project_pipeline_path(project)
       end
 
       context 'for valid commit', js: true do
@@ -479,7 +479,7 @@ describe 'Pipelines', :feature, :js do
       let(:project) { create(:project) }
 
       before do
-        visit new_namespace_project_pipeline_path(project.namespace, project)
+        visit new_project_pipeline_path(project)
       end
 
       describe 'new pipeline page' do
@@ -508,7 +508,7 @@ describe 'Pipelines', :feature, :js do
 
   context 'when user is not logged in' do
     before do
-      visit namespace_project_pipelines_path(project.namespace, project)
+      visit project_pipelines_path(project)
     end
 
     context 'when project is public' do
@@ -526,7 +526,7 @@ describe 'Pipelines', :feature, :js do
   end
 
   def visit_project_pipelines(**query)
-    visit namespace_project_pipelines_path(project.namespace, project, query)
+    visit project_pipelines_path(project, query)
     wait_for_requests
   end
 end
diff --git a/spec/features/projects/project_settings_spec.rb b/spec/features/projects/project_settings_spec.rb
index baa38ff8cca20fe22dd8aa6e9d66d81a53207b0a..1f78f242399d1ae5e4ba57b54a91a61b536b83bc 100644
--- a/spec/features/projects/project_settings_spec.rb
+++ b/spec/features/projects/project_settings_spec.rb
@@ -12,7 +12,7 @@ describe 'Edit Project Settings', feature: true do
 
   describe 'Project settings section', js: true do
     it 'shows errors for invalid project name' do
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
       fill_in 'project_name_edit', with: 'foo&bar'
       click_button 'Save changes'
       expect(page).to have_field 'project_name_edit', with: 'foo&bar'
@@ -21,7 +21,7 @@ describe 'Edit Project Settings', feature: true do
     end
 
     it 'shows a successful notice when the project is updated' do
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
       fill_in 'project_name_edit', with: 'hello world'
       click_button 'Save changes'
       expect(page).to have_content "Project 'hello world' was successfully updated."
@@ -75,7 +75,7 @@ describe 'Edit Project Settings', feature: true do
       end
 
       specify 'the project is accessible via a redirect from the old path' do
-        old_path = namespace_project_path(project.namespace, project)
+        old_path = project_path(project)
         rename_project(project, path: 'bar')
         new_path = namespace_project_path(project.namespace, 'bar')
         visit old_path
@@ -85,7 +85,7 @@ describe 'Edit Project Settings', feature: true do
 
       context 'and a new project is added with the same path' do
         it 'overrides the redirect' do
-          old_path = namespace_project_path(project.namespace, project)
+          old_path = project_path(project)
           rename_project(project, path: 'bar')
           new_project = create(:empty_project, namespace: user.namespace, path: 'gitlabhq', name: 'quz')
           visit old_path
@@ -122,7 +122,7 @@ describe 'Edit Project Settings', feature: true do
     end
 
     specify 'the project is accessible via a redirect from the old path' do
-      old_path = namespace_project_path(project.namespace, project)
+      old_path = project_path(project)
       transfer_project(project, group)
       new_path = namespace_project_path(group, project)
       visit old_path
@@ -132,7 +132,7 @@ describe 'Edit Project Settings', feature: true do
 
     context 'and a new project is added with the same path' do
       it 'overrides the redirect' do
-        old_path = namespace_project_path(project.namespace, project)
+        old_path = project_path(project)
         transfer_project(project, group)
         new_project = create(:empty_project, namespace: user.namespace, path: 'gitlabhq', name: 'quz')
         visit old_path
@@ -144,7 +144,7 @@ describe 'Edit Project Settings', feature: true do
 end
 
 def rename_project(project, name: nil, path: nil)
-  visit edit_namespace_project_path(project.namespace, project)
+  visit edit_project_path(project)
   fill_in('project_name', with: name) if name
   fill_in('Path', with: path) if path
   click_button('Rename project')
@@ -153,7 +153,7 @@ def rename_project(project, name: nil, path: nil)
 end
 
 def transfer_project(project, namespace)
-  visit edit_namespace_project_path(project.namespace, project)
+  visit edit_project_path(project)
   select2(namespace.id, from: '#new_namespace_id')
   click_button('Transfer project')
   confirm_transfer_modal
diff --git a/spec/features/projects/ref_switcher_spec.rb b/spec/features/projects/ref_switcher_spec.rb
index 016a992bdcfb4c043d39697e1172fbea3a11219b..342f083f25a8a442fe9c10389445164460d72081 100644
--- a/spec/features/projects/ref_switcher_spec.rb
+++ b/spec/features/projects/ref_switcher_spec.rb
@@ -7,7 +7,7 @@ feature 'Ref switcher', feature: true, js: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_tree_path(project.namespace, project, 'master')
+    visit project_tree_path(project, 'master')
   end
 
   it 'allow user to change ref by enter key' do
diff --git a/spec/features/projects/services/jira_service_spec.rb b/spec/features/projects/services/jira_service_spec.rb
index 8cd216c8fdb94d04b824f4ff3cd031048760dd27..9e4f420689cde66296a3c76ecfcd18bbf8279e39 100644
--- a/spec/features/projects/services/jira_service_spec.rb
+++ b/spec/features/projects/services/jira_service_spec.rb
@@ -26,7 +26,7 @@ feature 'Setup Jira service', :feature, :js do
     project.team << [user, :master]
     gitlab_sign_in(user)
 
-    visit namespace_project_settings_integrations_path(project.namespace, project)
+    visit project_settings_integrations_path(project)
   end
 
   describe 'user sets and activates Jira Service' do
@@ -42,7 +42,7 @@ feature 'Setup Jira service', :feature, :js do
         wait_for_requests
 
         expect(page).to have_content('JIRA activated.')
-        expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+        expect(current_path).to eq(project_settings_integrations_path(project))
       end
     end
 
@@ -76,7 +76,7 @@ feature 'Setup Jira service', :feature, :js do
         wait_for_requests
 
         expect(page).to have_content('JIRA activated.')
-        expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+        expect(current_path).to eq(project_settings_integrations_path(project))
       end
     end
   end
@@ -89,7 +89,7 @@ feature 'Setup Jira service', :feature, :js do
         click_button('Save changes')
 
         expect(page).to have_content('JIRA settings saved, but not activated.')
-        expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+        expect(current_path).to eq(project_settings_integrations_path(project))
       end
     end
   end
diff --git a/spec/features/projects/services/mattermost_slash_command_spec.rb b/spec/features/projects/services/mattermost_slash_command_spec.rb
index d87985f1c92215b1b058cc2fe08660710b5f65d8..aaa354903aad95c53531a2885278be9d10b45009 100644
--- a/spec/features/projects/services/mattermost_slash_command_spec.rb
+++ b/spec/features/projects/services/mattermost_slash_command_spec.rb
@@ -10,7 +10,7 @@ feature 'Setup Mattermost slash commands', :feature, :js do
     stub_mattermost_setting(enabled: mattermost_enabled)
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit edit_namespace_project_service_path(project.namespace, project, service)
+    visit edit_project_service_path(project, service)
   end
 
   describe 'user visits the mattermost slash command config page' do
@@ -30,7 +30,7 @@ feature 'Setup Mattermost slash commands', :feature, :js do
       fill_in 'service_token', with: token
       click_on 'Save changes'
 
-      expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+      expect(current_path).to eq(project_settings_integrations_path(project))
       expect(page).to have_content('Mattermost slash commands settings saved, but not activated.')
     end
 
@@ -41,7 +41,7 @@ feature 'Setup Mattermost slash commands', :feature, :js do
       check 'service_active'
       click_on 'Save changes'
 
-      expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+      expect(current_path).to eq(project_settings_integrations_path(project))
       expect(page).to have_content('Mattermost slash commands activated.')
     end
 
diff --git a/spec/features/projects/services/slack_service_spec.rb b/spec/features/projects/services/slack_service_spec.rb
index 50707e6a49fe9a18cd720d1157c51d20493f5b0c..5e3c3b00476d10edf5f5a97d367924cc3f14e32b 100644
--- a/spec/features/projects/services/slack_service_spec.rb
+++ b/spec/features/projects/services/slack_service_spec.rb
@@ -13,7 +13,7 @@ feature 'Projects > Slack service > Setup events', feature: true do
   end
 
   scenario 'user can filter events by channel' do
-    visit edit_namespace_project_service_path(project.namespace, project, service)
+    visit edit_project_service_path(project, service)
 
     expect(page.find_field("service_push_channel").value).to have_content '1'
     expect(page.find_field("service_issue_channel").value).to have_content '2'
diff --git a/spec/features/projects/services/slack_slash_command_spec.rb b/spec/features/projects/services/slack_slash_command_spec.rb
index 3fae38c1799a14442c4c4495d4da0628108f96ce..aaa775ce51f6586e9c661c224c35606fe00895b7 100644
--- a/spec/features/projects/services/slack_slash_command_spec.rb
+++ b/spec/features/projects/services/slack_slash_command_spec.rb
@@ -8,7 +8,7 @@ feature 'Slack slash commands', feature: true do
   background do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit edit_namespace_project_service_path(project.namespace, project, service)
+    visit edit_project_service_path(project, service)
   end
 
   it 'shows a token placeholder' do
@@ -25,7 +25,7 @@ feature 'Slack slash commands', feature: true do
     fill_in 'service_token', with: 'token'
     click_on 'Save'
 
-    expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+    expect(current_path).to eq(project_settings_integrations_path(project))
     expect(page).to have_content('Slack slash commands settings saved, but not activated.')
   end
 
@@ -34,7 +34,7 @@ feature 'Slack slash commands', feature: true do
     check 'service_active'
     click_on 'Save'
 
-    expect(current_path).to eq(namespace_project_settings_integrations_path(project.namespace, project))
+    expect(current_path).to eq(project_settings_integrations_path(project))
     expect(page).to have_content('Slack slash commands activated.')
   end
 
diff --git a/spec/features/projects/settings/integration_settings_spec.rb b/spec/features/projects/settings/integration_settings_spec.rb
index a59374b37eab7d5c1e00ba228db986ac78fcb00d..f708a3009f1aa25c3716e7de5279ec293dd62922 100644
--- a/spec/features/projects/settings/integration_settings_spec.rb
+++ b/spec/features/projects/settings/integration_settings_spec.rb
@@ -4,7 +4,7 @@ feature 'Integration settings', feature: true do
   let(:project) { create(:empty_project) }
   let(:user) { create(:user) }
   let(:role) { :developer }
-  let(:integrations_path) { namespace_project_settings_integrations_path(project.namespace, project) }
+  let(:integrations_path) { project_settings_integrations_path(project) }
 
   background do
     gitlab_sign_in(user)
@@ -109,7 +109,7 @@ feature 'Integration settings', feature: true do
 
       scenario 'show list of hook logs' do
         hook_log
-        visit edit_namespace_project_hook_path(project.namespace, project, hook)
+        visit edit_project_hook_path(project, hook)
 
         expect(page).to have_content('Recent Deliveries')
         expect(page).to have_content(hook_log.url)
@@ -117,7 +117,7 @@ feature 'Integration settings', feature: true do
 
       scenario 'show hook log details' do
         hook_log
-        visit edit_namespace_project_hook_path(project.namespace, project, hook)
+        visit edit_project_hook_path(project, hook)
         click_link 'View details'
 
         expect(page).to have_content("POST #{hook_log.url}")
@@ -129,11 +129,11 @@ feature 'Integration settings', feature: true do
         WebMock.stub_request(:post, hook.url)
 
         hook_log
-        visit edit_namespace_project_hook_path(project.namespace, project, hook)
+        visit edit_project_hook_path(project, hook)
         click_link 'View details'
         click_link 'Resend Request'
 
-        expect(current_path).to eq(edit_namespace_project_hook_path(project.namespace, project, hook))
+        expect(current_path).to eq(edit_project_hook_path(project, hook))
       end
     end
   end
diff --git a/spec/features/projects/settings/merge_requests_settings_spec.rb b/spec/features/projects/settings/merge_requests_settings_spec.rb
index f2af14ceab290499f15e3d42afa74111200f20a5..451e2f3e04e0f1371c04747f8659a29822af06a4 100644
--- a/spec/features/projects/settings/merge_requests_settings_spec.rb
+++ b/spec/features/projects/settings/merge_requests_settings_spec.rb
@@ -1,8 +1,6 @@
 require 'spec_helper'
 
 feature 'Project settings > Merge Requests', feature: true, js: true do
-  include GitlabRoutingHelper
-
   let(:project) { create(:empty_project, :public) }
   let(:user) { create(:user) }
 
diff --git a/spec/features/projects/settings/pipelines_settings_spec.rb b/spec/features/projects/settings/pipelines_settings_spec.rb
index c33fbd49d21994f0375c43a257234e1180bdffa0..0d78feb2b93f24214e460fb1f473135f152adcb8 100644
--- a/spec/features/projects/settings/pipelines_settings_spec.rb
+++ b/spec/features/projects/settings/pipelines_settings_spec.rb
@@ -1,8 +1,6 @@
 require 'spec_helper'
 
 feature "Pipelines settings", feature: true do
-  include GitlabRoutingHelper
-
   let(:project) { create(:empty_project) }
   let(:user) { create(:user) }
   let(:role) { :developer }
@@ -10,7 +8,7 @@ feature "Pipelines settings", feature: true do
   background do
     gitlab_sign_in(user)
     project.team << [user, role]
-    visit namespace_project_pipelines_settings_path(project.namespace, project)
+    visit project_pipelines_settings_path(project)
   end
 
   context 'for developer' do
diff --git a/spec/features/projects/settings/repository_settings_spec.rb b/spec/features/projects/settings/repository_settings_spec.rb
index 35cd0d6e83219da2b6bcde080d5a7a488e311bdb..9cc04925a0aafeab00804cbc6df29dd5c86d98a4 100644
--- a/spec/features/projects/settings/repository_settings_spec.rb
+++ b/spec/features/projects/settings/repository_settings_spec.rb
@@ -14,7 +14,7 @@ feature 'Repository settings', feature: true do
     given(:role) { :developer }
 
     scenario 'is not allowed to view' do
-      visit namespace_project_settings_repository_path(project.namespace, project)
+      visit project_settings_repository_path(project)
 
       expect(page.status_code).to eq(404)
     end
@@ -32,7 +32,7 @@ feature 'Repository settings', feature: true do
         project.deploy_keys << private_deploy_key
         project.deploy_keys << public_deploy_key
 
-        visit namespace_project_settings_repository_path(project.namespace, project)
+        visit project_settings_repository_path(project)
 
         expect(page.status_code).to eq(200)
         expect(page).to have_content('private_deploy_key')
@@ -40,7 +40,7 @@ feature 'Repository settings', feature: true do
       end
 
       scenario 'add a new deploy key' do
-        visit namespace_project_settings_repository_path(project.namespace, project)
+        visit project_settings_repository_path(project)
 
         fill_in 'deploy_key_title', with: 'new_deploy_key'
         fill_in 'deploy_key_key', with: new_ssh_key
@@ -53,7 +53,7 @@ feature 'Repository settings', feature: true do
 
       scenario 'edit an existing deploy key' do
         project.deploy_keys << private_deploy_key
-        visit namespace_project_settings_repository_path(project.namespace, project)
+        visit project_settings_repository_path(project)
 
         find('li', text: private_deploy_key.title).click_link('Edit')
 
@@ -70,7 +70,7 @@ feature 'Repository settings', feature: true do
         project2.team << [user, role]
         project2.deploy_keys << private_deploy_key
 
-        visit namespace_project_settings_repository_path(project.namespace, project)
+        visit project_settings_repository_path(project)
 
         find('li', text: private_deploy_key.title).click_link('Edit')
 
@@ -84,7 +84,7 @@ feature 'Repository settings', feature: true do
 
       scenario 'remove an existing deploy key' do
         project.deploy_keys << private_deploy_key
-        visit namespace_project_settings_repository_path(project.namespace, project)
+        visit project_settings_repository_path(project)
 
         find('li', text: private_deploy_key.title).click_button('Remove')
 
diff --git a/spec/features/projects/settings/visibility_settings_spec.rb b/spec/features/projects/settings/visibility_settings_spec.rb
index 18c71dee41b78830dfc5f15b482eb832dd10a8c9..a9a6441d4e8241db94e3df15e5921b003562ca6e 100644
--- a/spec/features/projects/settings/visibility_settings_spec.rb
+++ b/spec/features/projects/settings/visibility_settings_spec.rb
@@ -7,7 +7,7 @@ feature 'Visibility settings', feature: true, js: true do
   context 'as owner' do
     before do
       gitlab_sign_in(user)
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
     end
 
     scenario 'project visibility select is available' do
@@ -33,7 +33,7 @@ feature 'Visibility settings', feature: true, js: true do
     before do
       project.team << [master_user, :master]
       gitlab_sign_in(master_user)
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
     end
 
     scenario 'project visibility is locked' do
diff --git a/spec/features/projects/shortcuts_spec.rb b/spec/features/projects/shortcuts_spec.rb
index cec79277c3366e38de21b3e3f761486074b6609a..682bea87c8a835f206e6e382dbf0de4b51feeefd 100644
--- a/spec/features/projects/shortcuts_spec.rb
+++ b/spec/features/projects/shortcuts_spec.rb
@@ -8,7 +8,7 @@ feature 'Project shortcuts', feature: true do
     before do
       project.team << [user, :master]
       gitlab_sign_in user
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     describe 'pressing "i"' do
diff --git a/spec/features/projects/snippets/create_snippet_spec.rb b/spec/features/projects/snippets/create_snippet_spec.rb
index c75d6dbc30785eade1cfccd27addd62f03c8fb63..37c11c0e88d1bdc83622be847f01c76f7862f7d2 100644
--- a/spec/features/projects/snippets/create_snippet_spec.rb
+++ b/spec/features/projects/snippets/create_snippet_spec.rb
@@ -19,7 +19,7 @@ feature 'Create Snippet', :js, feature: true do
       project.team << [user, :master]
       gitlab_sign_in(user)
 
-      visit namespace_project_snippets_path(project.namespace, project)
+      visit project_snippets_path(project)
 
       click_on('New snippet')
     end
@@ -77,7 +77,7 @@ feature 'Create Snippet', :js, feature: true do
     it 'shows a public snippet on the index page but not the New snippet button' do
       snippet = create(:project_snippet, :public, project: project)
 
-      visit namespace_project_snippets_path(project.namespace, project)
+      visit project_snippets_path(project)
 
       expect(page).to have_content(snippet.title)
       expect(page).not_to have_content('New snippet')
diff --git a/spec/features/projects/snippets/show_spec.rb b/spec/features/projects/snippets/show_spec.rb
index 9e73ba4123bb776ffb457584b0c08ebe0e226e60..d401d09497f1e1215696ba820f0c5f0a46ad63b5 100644
--- a/spec/features/projects/snippets/show_spec.rb
+++ b/spec/features/projects/snippets/show_spec.rb
@@ -15,7 +15,7 @@ feature 'Project snippet', :js, feature: true do
     let(:content) { project.repository.blob_at('master', 'files/ruby/popen.rb').data }
 
     before do
-      visit namespace_project_snippet_path(project.namespace, project, snippet)
+      visit project_snippet_path(project, snippet)
 
       wait_for_requests
     end
@@ -46,7 +46,7 @@ feature 'Project snippet', :js, feature: true do
 
     context 'visiting directly' do
       before do
-        visit namespace_project_snippet_path(project.namespace, project, snippet)
+        visit project_snippet_path(project, snippet)
 
         wait_for_requests
       end
@@ -118,7 +118,7 @@ feature 'Project snippet', :js, feature: true do
 
     context 'visiting with a line number anchor' do
       before do
-        visit namespace_project_snippet_path(project.namespace, project, snippet, anchor: 'L1')
+        visit project_snippet_path(project, snippet, anchor: 'L1')
 
         wait_for_requests
       end
diff --git a/spec/features/projects/snippets_spec.rb b/spec/features/projects/snippets_spec.rb
index 80dbffaffc7f87bc1667967dfe37a6e4791001ec..8edef2eba1371fde8acb4dc1e822decdaaa1366e 100644
--- a/spec/features/projects/snippets_spec.rb
+++ b/spec/features/projects/snippets_spec.rb
@@ -10,7 +10,7 @@ describe 'Project snippets', :js, feature: true do
       before do
         allow(Snippet).to receive(:default_per_page).and_return(1)
 
-        visit namespace_project_snippets_path(project.namespace, project)
+        visit project_snippets_path(project)
       end
 
       it_behaves_like 'paginated snippets'
@@ -18,7 +18,7 @@ describe 'Project snippets', :js, feature: true do
 
     context 'list content' do
       it 'contains all project snippets' do
-        visit namespace_project_snippets_path(project.namespace, project)
+        visit project_snippets_path(project)
 
         expect(page).to have_selector('.snippet-row', count: 2)
 
@@ -30,7 +30,7 @@ describe 'Project snippets', :js, feature: true do
     context 'when submitting a note' do
       before do
         gitlab_sign_in :admin
-        visit namespace_project_snippet_path(project.namespace, project, snippets[0])
+        visit project_snippet_path(project, snippets[0])
       end
 
       it 'should have autocomplete' do
diff --git a/spec/features/projects/sub_group_issuables_spec.rb b/spec/features/projects/sub_group_issuables_spec.rb
index 63eb97d5a927f715b2edff0c804fe60873150ed0..5bbad78d0bb0401e8a20b0d63d58a33d55b45d74 100644
--- a/spec/features/projects/sub_group_issuables_spec.rb
+++ b/spec/features/projects/sub_group_issuables_spec.rb
@@ -12,13 +12,13 @@ describe 'Subgroup Issuables', :feature, :js, :nested_groups do
   end
 
   it 'shows the full subgroup title when issues index page is empty' do
-    visit namespace_project_issues_path(project.namespace.to_param, project.to_param)
+    visit project_issues_path(project)
 
     expect_to_have_full_subgroup_title
   end
 
   it 'shows the full subgroup title when merge requests index page is empty' do
-    visit namespace_project_merge_requests_path(project.namespace.to_param, project.to_param)
+    visit project_merge_requests_path(project)
 
     expect_to_have_full_subgroup_title
   end
diff --git a/spec/features/projects/tags/download_buttons_spec.rb b/spec/features/projects/tags/download_buttons_spec.rb
index ca00a51aa3cf368357b5a52484b222d9f9cbe118..186876e454fd8c5b1f1211e2b057e0c0344f80f4 100644
--- a/spec/features/projects/tags/download_buttons_spec.rb
+++ b/spec/features/projects/tags/download_buttons_spec.rb
@@ -30,13 +30,11 @@ feature 'Download buttons in tags page', feature: true do
   describe 'when checking tags' do
     context 'with artifacts' do
       before do
-        visit namespace_project_tags_path(project.namespace, project)
+        visit project_tags_path(project)
       end
 
       scenario 'shows download artifacts button' do
-        href = latest_succeeded_namespace_project_artifacts_path(
-          project.namespace, project, "#{tag}/download",
-          job: 'build')
+        href = latest_succeeded_project_artifacts_path(project, "#{tag}/download", job: 'build')
 
         expect(page).to have_link "Download '#{build.name}'", href: href
       end
diff --git a/spec/features/projects/tree/rss_spec.rb b/spec/features/projects/tree/rss_spec.rb
index 135584e5bf876ed1a8d2ca73b308f8566de3f48f..4583374c931e13fbe59d51d302038c63911c6eee 100644
--- a/spec/features/projects/tree/rss_spec.rb
+++ b/spec/features/projects/tree/rss_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 feature 'Project Tree RSS' do
   let(:project) { create(:project, :repository, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
-  let(:path) { namespace_project_tree_path(project.namespace, project, :master) }
+  let(:path) { project_tree_path(project, :master) }
 
   context 'when signed in' do
     before do
diff --git a/spec/features/projects/user_create_dir_spec.rb b/spec/features/projects/user_create_dir_spec.rb
index 5d0acad3832185ee1297fb0a0c94d60752671c0a..01f288934bfaad2a6c5aaf8d9b83828901b37852 100644
--- a/spec/features/projects/user_create_dir_spec.rb
+++ b/spec/features/projects/user_create_dir_spec.rb
@@ -8,7 +8,7 @@ feature 'New directory creation', feature: true, js: true do
   background do
     gitlab_sign_in(user)
     project.team << [user, role]
-    visit namespace_project_tree_path(project.namespace, project, 'master')
+    visit project_tree_path(project, 'master')
     open_new_directory_modal
     fill_in 'dir_name', with: 'new_directory'
   end
@@ -51,7 +51,7 @@ feature 'New directory creation', feature: true, js: true do
       expect(page).to have_content 'New Merge Request'
       expect(page).to have_content "From #{new_branch_name} into master"
       expect(page).to have_content 'Add new directory'
-      expect(current_path).to eq(namespace_project_new_merge_request_path(project.namespace, project))
+      expect(current_path).to eq(project_new_merge_request_path(project))
     end
   end
 end
diff --git a/spec/features/projects/user_creates_project_spec.rb b/spec/features/projects/user_creates_project_spec.rb
index 29f1eb8d73edfa769b6a05818359209a45df698a..1c3791f63ac2efd4b0cc590ae9327a59fa08d090 100644
--- a/spec/features/projects/user_creates_project_spec.rb
+++ b/spec/features/projects/user_creates_project_spec.rb
@@ -18,7 +18,7 @@ feature 'User creates a project', js: true do
 
     project = Project.last
 
-    expect(current_path).to eq(namespace_project_path(project.namespace, project))
+    expect(current_path).to eq(project_path(project))
     expect(page).to have_content('Empty')
     expect(page).to have_content('git init')
     expect(page).to have_content('git remote')
diff --git a/spec/features/projects/view_on_env_spec.rb b/spec/features/projects/view_on_env_spec.rb
index f6a640b90b4947881a9568c058cc5caf1fb1c614..0c06aa25c06355dad80d07ab58d81e987d3059de 100644
--- a/spec/features/projects/view_on_env_spec.rb
+++ b/spec/features/projects/view_on_env_spec.rb
@@ -52,7 +52,7 @@ describe 'View on environment', js: true do
         before do
           gitlab_sign_in(user)
 
-          visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
+          visit diffs_project_merge_request_path(project, merge_request)
 
           wait_for_requests
         end
@@ -68,7 +68,7 @@ describe 'View on environment', js: true do
         before do
           gitlab_sign_in(user)
 
-          visit namespace_project_compare_path(project.namespace, project, from: 'master', to: branch_name)
+          visit project_compare_path(project, from: 'master', to: branch_name)
 
           wait_for_requests
         end
@@ -82,7 +82,7 @@ describe 'View on environment', js: true do
         before do
           gitlab_sign_in(user)
 
-          visit namespace_project_compare_path(project.namespace, project, from: 'master', to: sha)
+          visit project_compare_path(project, from: 'master', to: sha)
 
           wait_for_requests
         end
@@ -96,7 +96,7 @@ describe 'View on environment', js: true do
         before do
           gitlab_sign_in(user)
 
-          visit namespace_project_blob_path(project.namespace, project, File.join(branch_name, file_path))
+          visit project_blob_path(project, File.join(branch_name, file_path))
 
           wait_for_requests
         end
@@ -110,7 +110,7 @@ describe 'View on environment', js: true do
         before do
           gitlab_sign_in(user)
 
-          visit namespace_project_blob_path(project.namespace, project, File.join(sha, file_path))
+          visit project_blob_path(project, File.join(sha, file_path))
 
           wait_for_requests
         end
@@ -124,7 +124,7 @@ describe 'View on environment', js: true do
         before do
           gitlab_sign_in(user)
 
-          visit namespace_project_commit_path(project.namespace, project, sha)
+          visit project_commit_path(project, sha)
 
           wait_for_requests
         end
diff --git a/spec/features/projects/wiki/markdown_preview_spec.rb b/spec/features/projects/wiki/markdown_preview_spec.rb
index fd6c09943e3c9417ebc8a38ae8d29002cfbf2dbc..d79ab809c7df0b683eb6c38b8bee5f2182bd6c0a 100644
--- a/spec/features/projects/wiki/markdown_preview_spec.rb
+++ b/spec/features/projects/wiki/markdown_preview_spec.rb
@@ -18,7 +18,7 @@ feature 'Projects > Wiki > User previews markdown changes', feature: true, js: t
 
     gitlab_sign_in(user)
 
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
     find('.shortcuts-wiki').trigger('click')
   end
 
diff --git a/spec/features/projects/wiki/shortcuts_spec.rb b/spec/features/projects/wiki/shortcuts_spec.rb
index ab0ed9b82040b6c94ea0cb42c72624221eae64c9..d189f84da0ee43004a12024f91414b94c866e1d2 100644
--- a/spec/features/projects/wiki/shortcuts_spec.rb
+++ b/spec/features/projects/wiki/shortcuts_spec.rb
@@ -9,7 +9,7 @@ feature 'Wiki shortcuts', :feature, :js do
 
   before do
     gitlab_sign_in(user)
-    visit namespace_project_wiki_path(project.namespace, project, wiki_page)
+    visit project_wiki_path(project, wiki_page)
   end
 
   scenario 'Visit edit wiki page using "e" keyboard shortcut' do
diff --git a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb
index a477dcf7ee927dd13be7277e97e6154134eeb1f7..86b31057a556bd2841e70badb8e1d264857f1bb0 100644
--- a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb
+++ b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb
@@ -7,7 +7,7 @@ feature 'Projects > Wiki > User creates wiki page', js: true, feature: true do
     project.team << [user, :master]
     gitlab_sign_in(user)
 
-    visit namespace_project_path(project.namespace, project)
+    visit project_path(project)
     find('.shortcuts-wiki').trigger('click')
   end
 
diff --git a/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb b/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb
index 7d31122af352255ba5f909ed19db563f9c531dda..749721b97ebaf94f4ce6abeabfff05654eb04894 100644
--- a/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb
+++ b/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb
@@ -17,7 +17,7 @@ describe 'Projects > Wiki > User views Git access wiki page', :feature do
   end
 
   scenario 'Visit Wiki Page Current Commit' do
-    visit namespace_project_wiki_path(project.namespace, project, wiki_page)
+    visit project_wiki_path(project, wiki_page)
 
     click_link 'Clone repository'
     expect(page).to have_text("Clone repository #{project.wiki.path_with_namespace}")
diff --git a/spec/features/projects/wiki/user_updates_wiki_page_spec.rb b/spec/features/projects/wiki/user_updates_wiki_page_spec.rb
index 64a3043868127fe8df77625c8329628ba5714d34..3b9f7ff96fb6776f888b4403b9b13971463ee4b1 100644
--- a/spec/features/projects/wiki/user_updates_wiki_page_spec.rb
+++ b/spec/features/projects/wiki/user_updates_wiki_page_spec.rb
@@ -8,7 +8,7 @@ feature 'Projects > Wiki > User updates wiki page', feature: true do
     WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute
     gitlab_sign_in(user)
 
-    visit namespace_project_wikis_path(project.namespace, project)
+    visit project_wikis_path(project)
   end
 
   context 'in the user namespace' do
diff --git a/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb b/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb
index 8a88ab247f3717189052f4cbee8e4b4ec4719dae..8e3912d994e2915d1c33031166c510bd4c7b3813 100644
--- a/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb
+++ b/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb
@@ -26,18 +26,13 @@ feature 'Projects > Wiki > User views the wiki page', feature: true do
   end
 
   scenario 'Visit Wiki Page Current Commit' do
-    visit namespace_project_wiki_path(project.namespace, project, wiki_page)
+    visit project_wiki_path(project, wiki_page)
 
     expect(page).to have_selector('a.btn', text: 'Edit')
   end
 
   scenario 'Visit Wiki Page Historical Commit' do
-    visit namespace_project_wiki_path(
-      project.namespace,
-      project,
-      wiki_page,
-      version_id: old_page_version_id
-    )
+    visit project_wiki_path(project, wiki_page, version_id: old_page_version_id)
 
     expect(page).not_to have_selector('a.btn', text: 'Edit')
   end
diff --git a/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb b/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb
index 3679992516745b1476f9a2ffd7507dc910add2a7..a305d27c7ec37e8194abfdb3c08fef57c2185d16 100644
--- a/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb
+++ b/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb
@@ -27,14 +27,10 @@ describe 'Projects > Wiki > User views wiki in project page', feature: true do
       end
 
       it 'displays the correct URL for the link' do
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
         expect(page).to have_link(
           'some link',
-          href: namespace_project_wiki_path(
-            project.namespace,
-            project,
-            'other-page'
-          )
+          href: project_wiki_path(project, 'other-page')
         )
       end
     end
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index 7e8a703db934b78d8fa4e010a5e2a96f1e4be87a..361e3a6d8e599a65e82beb4023cb124e26b3b567 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 feature 'Project', feature: true do
   describe 'description' do
     let(:project) { create(:project, :repository) }
-    let(:path)    { namespace_project_path(project.namespace, project) }
+    let(:path)    { project_path(project) }
 
     before do
       gitlab_sign_in(:admin)
@@ -41,7 +41,7 @@ feature 'Project', feature: true do
     before do
       gitlab_sign_in user
       create(:forked_project_link, forked_to_project: project)
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
     end
 
     it 'removes fork' do
@@ -62,7 +62,7 @@ feature 'Project', feature: true do
     before do
       gitlab_sign_in(user)
       project.team << [user, :master]
-      visit edit_namespace_project_path(project.namespace, project)
+      visit edit_project_path(project)
     end
 
     it 'removes a project' do
@@ -81,7 +81,7 @@ feature 'Project', feature: true do
     before do
       gitlab_sign_in(user)
       project.add_user(user, Gitlab::Access::MASTER)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     it 'clicks toggle and shows dropdown', js: true do
@@ -101,7 +101,7 @@ feature 'Project', feature: true do
         gitlab_sign_in(user)
         project.add_user(user, Gitlab::Access::MASTER)
         project2.add_user(user, Gitlab::Access::MASTER)
-        visit namespace_project_issue_path(project.namespace, project, issue)
+        visit project_issue_path(project, issue)
       end
 
       it 'clicks toggle and shows dropdown' do
@@ -124,7 +124,7 @@ feature 'Project', feature: true do
     before do
       project.team << [user, :master]
       gitlab_sign_in user
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
     end
 
     it 'has working links to files' do
diff --git a/spec/features/protected_branches_spec.rb b/spec/features/protected_branches_spec.rb
index 20b8e10f0f7d097e8514fe923231b7b174ebeb67..952eb6c364330c329e79e38b1943f9d2288cb88e 100644
--- a/spec/features/protected_branches_spec.rb
+++ b/spec/features/protected_branches_spec.rb
@@ -16,7 +16,7 @@ feature 'Protected Branches', feature: true, js: true do
 
   describe "explicit protected branches" do
     it "allows creating explicit protected branches" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       set_protected_branch_name('some-branch')
       click_on "Protect"
 
@@ -29,7 +29,7 @@ feature 'Protected Branches', feature: true, js: true do
       commit = create(:commit, project: project)
       project.repository.add_branch(user, 'some-branch', commit.id)
 
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       set_protected_branch_name('some-branch')
       click_on "Protect"
 
@@ -37,7 +37,7 @@ feature 'Protected Branches', feature: true, js: true do
     end
 
     it "displays an error message if the named branch does not exist" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       set_protected_branch_name('some-branch')
       click_on "Protect"
 
@@ -47,7 +47,7 @@ feature 'Protected Branches', feature: true, js: true do
 
   describe "wildcard protected branches" do
     it "allows creating protected branches with a wildcard" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       set_protected_branch_name('*-stable')
       click_on "Protect"
 
@@ -60,7 +60,7 @@ feature 'Protected Branches', feature: true, js: true do
       project.repository.add_branch(user, 'production-stable', 'master')
       project.repository.add_branch(user, 'staging-stable', 'master')
 
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       set_protected_branch_name('*-stable')
       click_on "Protect"
 
@@ -72,11 +72,11 @@ feature 'Protected Branches', feature: true, js: true do
       project.repository.add_branch(user, 'staging-stable', 'master')
       project.repository.add_branch(user, 'development', 'master')
 
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       set_protected_branch_name('*-stable')
       click_on "Protect"
 
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
       click_on "2 matching branches"
 
       within(".protected-branches-list") do
diff --git a/spec/features/protected_tags_spec.rb b/spec/features/protected_tags_spec.rb
index 73a8069215404cbc8c131f243054dc7b191d9dff..4ffd97fb221e3924d0daea49de1bb7d8e714e660 100644
--- a/spec/features/protected_tags_spec.rb
+++ b/spec/features/protected_tags_spec.rb
@@ -17,7 +17,7 @@ feature 'Projected Tags', feature: true, js: true do
 
   describe "explicit protected tags" do
     it "allows creating explicit protected tags" do
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       set_protected_tag_name('some-tag')
       click_on "Protect"
 
@@ -30,7 +30,7 @@ feature 'Projected Tags', feature: true, js: true do
       commit = create(:commit, project: project)
       project.repository.add_tag(user, 'some-tag', commit.id)
 
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       set_protected_tag_name('some-tag')
       click_on "Protect"
 
@@ -38,7 +38,7 @@ feature 'Projected Tags', feature: true, js: true do
     end
 
     it "displays an error message if the named tag does not exist" do
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       set_protected_tag_name('some-tag')
       click_on "Protect"
 
@@ -48,7 +48,7 @@ feature 'Projected Tags', feature: true, js: true do
 
   describe "wildcard protected tags" do
     it "allows creating protected tags with a wildcard" do
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       set_protected_tag_name('*-stable')
       click_on "Protect"
 
@@ -61,7 +61,7 @@ feature 'Projected Tags', feature: true, js: true do
       project.repository.add_tag(user, 'production-stable', 'master')
       project.repository.add_tag(user, 'staging-stable', 'master')
 
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       set_protected_tag_name('*-stable')
       click_on "Protect"
 
@@ -73,11 +73,11 @@ feature 'Projected Tags', feature: true, js: true do
       project.repository.add_tag(user, 'staging-stable', 'master')
       project.repository.add_tag(user, 'development', 'master')
 
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       set_protected_tag_name('*-stable')
       click_on "Protect"
 
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
       click_on "2 matching tags"
 
       within(".protected-tags-list") do
diff --git a/spec/features/reportable_note/commit_spec.rb b/spec/features/reportable_note/commit_spec.rb
index 12049822753b627d707b09371732c6a2e579f8e9..2486f779753bc391a7750aee3e2b1d552c97d473 100644
--- a/spec/features/reportable_note/commit_spec.rb
+++ b/spec/features/reportable_note/commit_spec.rb
@@ -15,7 +15,7 @@ describe 'Reportable note on commit', :feature, :js do
     let!(:note) { create(:note_on_commit, commit_id: sample_commit.id, project: project) }
 
     before do
-      visit namespace_project_commit_path(project.namespace, project, sample_commit.id)
+      visit project_commit_path(project, sample_commit.id)
     end
 
     it_behaves_like 'reportable note'
@@ -25,7 +25,7 @@ describe 'Reportable note on commit', :feature, :js do
     let!(:note) { create(:diff_note_on_commit, commit_id: sample_commit.id, project: project) }
 
     before do
-      visit namespace_project_commit_path(project.namespace, project, sample_commit.id)
+      visit project_commit_path(project, sample_commit.id)
     end
 
     it_behaves_like 'reportable note'
diff --git a/spec/features/reportable_note/issue_spec.rb b/spec/features/reportable_note/issue_spec.rb
index ca2a7f414967b94de644bf9a8b30191fbaee639d..d283c2d3c8f51842b161cbf2ce2c8b7a4d3daa5c 100644
--- a/spec/features/reportable_note/issue_spec.rb
+++ b/spec/features/reportable_note/issue_spec.rb
@@ -10,7 +10,7 @@ describe 'Reportable note on issue', :feature, :js do
     project.add_master(user)
     gitlab_sign_in(user)
 
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   it_behaves_like 'reportable note'
diff --git a/spec/features/reportable_note/merge_request_spec.rb b/spec/features/reportable_note/merge_request_spec.rb
index 8e75b4af3ebfdcb25238a6bdcc0a8858424187ce..fe25c894b858e4148006aa090df7a7f2759d02ff 100644
--- a/spec/features/reportable_note/merge_request_spec.rb
+++ b/spec/features/reportable_note/merge_request_spec.rb
@@ -9,7 +9,7 @@ describe 'Reportable note on merge request', :feature, :js do
     project.add_master(user)
     gitlab_sign_in(user)
 
-    visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    visit project_merge_request_path(project, merge_request)
   end
 
   context 'a normal note' do
diff --git a/spec/features/reportable_note/snippets_spec.rb b/spec/features/reportable_note/snippets_spec.rb
index 5bee4a31379a10e5251ea7b8b0f3358f4ca9274c..b3044d3d04817e8e90ce0bedeac22af14317d205 100644
--- a/spec/features/reportable_note/snippets_spec.rb
+++ b/spec/features/reportable_note/snippets_spec.rb
@@ -14,7 +14,7 @@ describe 'Reportable note on snippets', :feature, :js do
     let!(:note) { create(:note_on_project_snippet, noteable: snippet, project: project) }
 
     before do
-      visit namespace_project_snippet_path(project.namespace, project, snippet)
+      visit project_snippet_path(project, snippet)
     end
 
     it_behaves_like 'reportable note'
diff --git a/spec/features/runners_spec.rb b/spec/features/runners_spec.rb
index ea18879b4bfa2b028b5fcf7cfbfb0568c9d22d90..00f59f8f197dd982f3da2d5eba76fcb96c84d6f0 100644
--- a/spec/features/runners_spec.rb
+++ b/spec/features/runners_spec.rb
@@ -1,8 +1,6 @@
 require 'spec_helper'
 
 describe "Runners" do
-  include GitlabRoutingHelper
-
   let(:user) { create(:user) }
 
   before do
@@ -124,7 +122,7 @@ describe "Runners" do
     end
 
     scenario 'user checks default configuration' do
-      visit namespace_project_runner_path(project.namespace, project, runner)
+      visit project_runner_path(project, runner)
 
       expect(page).to have_content 'Can run untagged jobs Yes'
     end
diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb
index 64469f999afde796c82d6daafea3704144b3f424..69b4219395583ea0d42f596a31b3b028d281f973 100644
--- a/spec/features/search_spec.rb
+++ b/spec/features/search_spec.rb
@@ -88,7 +88,7 @@ describe "Search", feature: true  do
       end
 
       it 'finds comment' do
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
 
         page.within '.search' do
           fill_in 'search', with: note.note
@@ -111,7 +111,7 @@ describe "Search", feature: true  do
                     project: project)
       # Must visit project dashboard since global search won't search
       # everything (e.g. comments, snippets, etc.)
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       page.within '.search' do
         fill_in 'search', with: note.note
@@ -125,7 +125,7 @@ describe "Search", feature: true  do
 
     it 'finds a commit' do
       project = create(:project, :repository) { |p| p.add_reporter(user) }
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       page.within '.search' do
         fill_in 'search', with: 'add'
@@ -139,7 +139,7 @@ describe "Search", feature: true  do
 
     it 'finds a code' do
       project = create(:project, :repository) { |p| p.add_reporter(user) }
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
 
       page.within '.search' do
         fill_in 'search', with: 'application.js'
@@ -156,7 +156,7 @@ describe "Search", feature: true  do
 
   describe 'Right header search field', feature: true do
     it 'allows enter key to search', js: true do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
       fill_in 'search', with: 'gitlab'
       find('#search').native.send_keys(:enter)
 
@@ -167,7 +167,7 @@ describe "Search", feature: true  do
 
     describe 'Search in project page' do
       before do
-        visit namespace_project_path(project.namespace, project)
+        visit project_path(project)
       end
 
       it 'shows top right search form' do
@@ -256,7 +256,7 @@ describe "Search", feature: true  do
 
       click_button 'Search'
 
-      expect(page).to have_current_path(namespace_project_commit_path(project.namespace, project, '6d394385cf567f80a8fd85055db1ab4c5295806f'))
+      expect(page).to have_current_path(project_commit_path(project, '6d394385cf567f80a8fd85055db1ab4c5295806f'))
     end
 
     it 'redirects to single commit regardless of query case' do
@@ -264,7 +264,7 @@ describe "Search", feature: true  do
 
       click_button 'Search'
 
-      expect(page).to have_current_path(namespace_project_commit_path(project.namespace, project, '6d394385cf567f80a8fd85055db1ab4c5295806f'))
+      expect(page).to have_current_path(project_commit_path(project, '6d394385cf567f80a8fd85055db1ab4c5295806f'))
     end
 
     it 'holds on /search page when the only commit is found by message' do
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index 5e26b8bbed6183494bf373f91c6660def53ab35c..1000a0bdd89b449fd9f132965d15f19c4405afff 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -13,7 +13,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path" do
-    subject { namespace_project_path(project.namespace, project) }
+    subject { project_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -27,7 +27,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/tree/master" do
-    subject { namespace_project_tree_path(project.namespace, project, project.repository.root_ref) }
+    subject { project_tree_path(project, project.repository.root_ref) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -41,7 +41,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/commits/master" do
-    subject { namespace_project_commits_path(project.namespace, project, project.repository.root_ref, limit: 1) }
+    subject { project_commits_path(project, project.repository.root_ref, limit: 1) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -55,7 +55,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/commit/:sha" do
-    subject { namespace_project_commit_path(project.namespace, project, project.repository.commit) }
+    subject { project_commit_path(project, project.repository.commit) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -69,7 +69,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/compare" do
-    subject { namespace_project_compare_index_path(project.namespace, project) }
+    subject { project_compare_index_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -83,7 +83,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/members" do
-    subject { namespace_project_settings_members_path(project.namespace, project) }
+    subject { project_settings_members_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -97,7 +97,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/ci_cd" do
-    subject { namespace_project_settings_ci_cd_path(project.namespace, project) }
+    subject { project_settings_ci_cd_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -111,7 +111,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/repository" do
-    subject { namespace_project_settings_repository_path(project.namespace, project) }
+    subject { project_settings_repository_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -126,7 +126,7 @@ describe "Internal Project Access", feature: true  do
 
   describe "GET /:project_path/blob" do
     let(:commit) { project.repository.commit }
-    subject { namespace_project_blob_path(project.namespace, project, File.join(commit.id, '.gitignore')) }
+    subject { project_blob_path(project, File.join(commit.id, '.gitignore')) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -140,7 +140,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/edit" do
-    subject { edit_namespace_project_path(project.namespace, project) }
+    subject { edit_project_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -154,7 +154,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/deploy_keys" do
-    subject { namespace_project_deploy_keys_path(project.namespace, project) }
+    subject { project_deploy_keys_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -168,7 +168,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/issues" do
-    subject { namespace_project_issues_path(project.namespace, project) }
+    subject { project_issues_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -183,7 +183,7 @@ describe "Internal Project Access", feature: true  do
 
   describe "GET /:project_path/issues/:id/edit" do
     let(:issue) { create(:issue, project: project) }
-    subject { edit_namespace_project_issue_path(project.namespace, project, issue) }
+    subject { edit_project_issue_path(project, issue) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -197,7 +197,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets" do
-    subject { namespace_project_snippets_path(project.namespace, project) }
+    subject { project_snippets_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -211,7 +211,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/new" do
-    subject { new_namespace_project_snippet_path(project.namespace, project) }
+    subject { new_project_snippet_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -225,7 +225,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/merge_requests" do
-    subject { namespace_project_merge_requests_path(project.namespace, project) }
+    subject { project_merge_requests_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -239,7 +239,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/merge_requests/new" do
-    subject { namespace_project_new_merge_request_path(project.namespace, project) }
+    subject { project_new_merge_request_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -253,7 +253,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/branches" do
-    subject { namespace_project_branches_path(project.namespace, project) }
+    subject { project_branches_path(project) }
 
     before do
       # Speed increase
@@ -272,7 +272,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/tags" do
-    subject { namespace_project_tags_path(project.namespace, project) }
+    subject { project_tags_path(project) }
 
     before do
       # Speed increase
@@ -291,7 +291,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/integrations" do
-    subject { namespace_project_settings_integrations_path(project.namespace, project) }
+    subject { project_settings_integrations_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -305,7 +305,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipelines" do
-    subject { namespace_project_pipelines_path(project.namespace, project) }
+    subject { project_pipelines_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -320,7 +320,7 @@ describe "Internal Project Access", feature: true  do
 
   describe "GET /:project_path/pipelines/:id" do
     let(:pipeline) { create(:ci_pipeline, project: project) }
-    subject { namespace_project_pipeline_path(project.namespace, project, pipeline) }
+    subject { project_pipeline_path(project, pipeline) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -334,7 +334,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/builds" do
-    subject { namespace_project_jobs_path(project.namespace, project) }
+    subject { project_jobs_path(project) }
 
     context "when allowed for public and internal" do
       before do
@@ -372,7 +372,7 @@ describe "Internal Project Access", feature: true  do
   describe "GET /:project_path/builds/:id" do
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, pipeline: pipeline) }
-    subject { namespace_project_job_path(project.namespace, project, build.id) }
+    subject { project_job_path(project, build.id) }
 
     context "when allowed for public and internal" do
       before do
@@ -410,7 +410,7 @@ describe "Internal Project Access", feature: true  do
   describe 'GET /:project_path/builds/:id/trace' do
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, pipeline: pipeline) }
-    subject { trace_namespace_project_job_path(project.namespace, project, build.id) }
+    subject { trace_project_job_path(project, build.id) }
 
     context 'when allowed for public and internal' do
       before do
@@ -446,7 +446,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipeline_schedules" do
-    subject { namespace_project_pipeline_schedules_path(project.namespace, project) }
+    subject { project_pipeline_schedules_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -460,7 +460,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments" do
-    subject { namespace_project_environments_path(project.namespace, project) }
+    subject { project_environments_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -475,7 +475,7 @@ describe "Internal Project Access", feature: true  do
 
   describe "GET /:project_path/environments/:id" do
     let(:environment) { create(:environment, project: project) }
-    subject { namespace_project_environment_path(project.namespace, project, environment) }
+    subject { project_environment_path(project, environment) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -490,7 +490,7 @@ describe "Internal Project Access", feature: true  do
 
   describe "GET /:project_path/environments/:id/deployments" do
     let(:environment) { create(:environment, project: project) }
-    subject { namespace_project_environment_deployments_path(project.namespace, project, environment) }
+    subject { project_environment_deployments_path(project, environment) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -504,7 +504,7 @@ describe "Internal Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments/new" do
-    subject { new_namespace_project_environment_path(project.namespace, project) }
+    subject { new_project_environment_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -526,7 +526,7 @@ describe "Internal Project Access", feature: true  do
       project.container_repositories << container_repository
     end
 
-    subject { namespace_project_container_registry_index_path(project.namespace, project) }
+    subject { project_container_registry_index_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index b676c236758f161bf87d0d231c00764514c43443..94d759393caaa7649827a8e473d2ccd43e72c392 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -13,7 +13,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path" do
-    subject { namespace_project_path(project.namespace, project) }
+    subject { project_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -27,7 +27,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/tree/master" do
-    subject { namespace_project_tree_path(project.namespace, project, project.repository.root_ref) }
+    subject { project_tree_path(project, project.repository.root_ref) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -41,7 +41,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/commits/master" do
-    subject { namespace_project_commits_path(project.namespace, project, project.repository.root_ref, limit: 1) }
+    subject { project_commits_path(project, project.repository.root_ref, limit: 1) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -55,7 +55,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/commit/:sha" do
-    subject { namespace_project_commit_path(project.namespace, project, project.repository.commit) }
+    subject { project_commit_path(project, project.repository.commit) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -69,7 +69,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/compare" do
-    subject { namespace_project_compare_index_path(project.namespace, project) }
+    subject { project_compare_index_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -83,7 +83,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/members" do
-    subject { namespace_project_settings_members_path(project.namespace, project) }
+    subject { project_settings_members_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -97,7 +97,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/ci_cd" do
-    subject { namespace_project_settings_ci_cd_path(project.namespace, project) }
+    subject { project_settings_ci_cd_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -111,7 +111,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/repository" do
-    subject { namespace_project_settings_repository_path(project.namespace, project) }
+    subject { project_settings_repository_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -126,7 +126,7 @@ describe "Private Project Access", feature: true  do
 
   describe "GET /:project_path/blob" do
     let(:commit) { project.repository.commit }
-    subject { namespace_project_blob_path(project.namespace, project, File.join(commit.id, '.gitignore'))}
+    subject { project_blob_path(project, File.join(commit.id, '.gitignore'))}
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -140,7 +140,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/edit" do
-    subject { edit_namespace_project_path(project.namespace, project) }
+    subject { edit_project_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -154,7 +154,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/deploy_keys" do
-    subject { namespace_project_deploy_keys_path(project.namespace, project) }
+    subject { project_deploy_keys_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -168,7 +168,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/issues" do
-    subject { namespace_project_issues_path(project.namespace, project) }
+    subject { project_issues_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -183,7 +183,7 @@ describe "Private Project Access", feature: true  do
 
   describe "GET /:project_path/issues/:id/edit" do
     let(:issue) { create(:issue, project: project) }
-    subject { edit_namespace_project_issue_path(project.namespace, project, issue) }
+    subject { edit_project_issue_path(project, issue) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -197,7 +197,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets" do
-    subject { namespace_project_snippets_path(project.namespace, project) }
+    subject { project_snippets_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -211,7 +211,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/merge_requests" do
-    subject { namespace_project_merge_requests_path(project.namespace, project) }
+    subject { project_merge_requests_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -225,7 +225,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/branches" do
-    subject { namespace_project_branches_path(project.namespace, project) }
+    subject { project_branches_path(project) }
 
     before do
       # Speed increase
@@ -244,7 +244,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/tags" do
-    subject { namespace_project_tags_path(project.namespace, project) }
+    subject { project_tags_path(project) }
 
     before do
       # Speed increase
@@ -263,7 +263,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/namespace/hooks" do
-    subject { namespace_project_settings_integrations_path(project.namespace, project) }
+    subject { project_settings_integrations_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -277,7 +277,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipelines" do
-    subject { namespace_project_pipelines_path(project.namespace, project) }
+    subject { project_pipelines_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -304,7 +304,7 @@ describe "Private Project Access", feature: true  do
 
   describe "GET /:project_path/pipelines/:id" do
     let(:pipeline) { create(:ci_pipeline, project: project) }
-    subject { namespace_project_pipeline_path(project.namespace, project, pipeline) }
+    subject { project_pipeline_path(project, pipeline) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -330,7 +330,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/builds" do
-    subject { namespace_project_jobs_path(project.namespace, project) }
+    subject { project_jobs_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -358,7 +358,7 @@ describe "Private Project Access", feature: true  do
   describe "GET /:project_path/builds/:id" do
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, pipeline: pipeline) }
-    subject { namespace_project_job_path(project.namespace, project, build.id) }
+    subject { project_job_path(project, build.id) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -391,7 +391,7 @@ describe "Private Project Access", feature: true  do
   describe 'GET /:project_path/builds/:id/trace' do
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, pipeline: pipeline) }
-    subject { trace_namespace_project_job_path(project.namespace, project, build.id) }
+    subject { trace_project_job_path(project, build.id) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -421,7 +421,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments" do
-    subject { namespace_project_environments_path(project.namespace, project) }
+    subject { project_environments_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -436,7 +436,7 @@ describe "Private Project Access", feature: true  do
 
   describe "GET /:project_path/environments/:id" do
     let(:environment) { create(:environment, project: project) }
-    subject { namespace_project_environment_path(project.namespace, project, environment) }
+    subject { project_environment_path(project, environment) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -451,7 +451,7 @@ describe "Private Project Access", feature: true  do
 
   describe "GET /:project_path/environments/:id/deployments" do
     let(:environment) { create(:environment, project: project) }
-    subject { namespace_project_environment_deployments_path(project.namespace, project, environment) }
+    subject { project_environment_deployments_path(project, environment) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -465,7 +465,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments/new" do
-    subject { new_namespace_project_environment_path(project.namespace, project) }
+    subject { new_project_environment_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -479,7 +479,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipeline_schedules" do
-    subject { namespace_project_pipeline_schedules_path(project.namespace, project) }
+    subject { project_pipeline_schedules_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -493,7 +493,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipeline_schedules/new" do
-    subject { new_namespace_project_pipeline_schedule_path(project.namespace, project) }
+    subject { new_project_pipeline_schedule_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -507,7 +507,7 @@ describe "Private Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments/new" do
-    subject { new_namespace_project_pipeline_schedule_path(project.namespace, project) }
+    subject { new_project_pipeline_schedule_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -529,7 +529,7 @@ describe "Private Project Access", feature: true  do
       project.container_repositories << container_repository
     end
 
-    subject { namespace_project_container_registry_index_path(project.namespace, project) }
+    subject { project_container_registry_index_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index 59655b0c31a768b22daa5a541a331f58c5c8a3b4..d45e1dbc09b4c611bad771ee0c8ae45372bfef17 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -13,7 +13,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path" do
-    subject { namespace_project_path(project.namespace, project) }
+    subject { project_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -27,7 +27,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/tree/master" do
-    subject { namespace_project_tree_path(project.namespace, project, project.repository.root_ref) }
+    subject { project_tree_path(project, project.repository.root_ref) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -41,7 +41,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/commits/master" do
-    subject { namespace_project_commits_path(project.namespace, project, project.repository.root_ref, limit: 1) }
+    subject { project_commits_path(project, project.repository.root_ref, limit: 1) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -55,7 +55,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/commit/:sha" do
-    subject { namespace_project_commit_path(project.namespace, project, project.repository.commit) }
+    subject { project_commit_path(project, project.repository.commit) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -69,7 +69,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/compare" do
-    subject { namespace_project_compare_index_path(project.namespace, project) }
+    subject { project_compare_index_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -83,7 +83,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/members" do
-    subject { namespace_project_settings_members_path(project.namespace, project) }
+    subject { project_settings_members_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -97,7 +97,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/ci_cd" do
-    subject { namespace_project_settings_ci_cd_path(project.namespace, project) }
+    subject { project_settings_ci_cd_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -111,7 +111,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/repository" do
-    subject { namespace_project_settings_repository_path(project.namespace, project) }
+    subject { project_settings_repository_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -125,7 +125,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipelines" do
-    subject { namespace_project_pipelines_path(project.namespace, project) }
+    subject { project_pipelines_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -140,7 +140,7 @@ describe "Public Project Access", feature: true  do
 
   describe "GET /:project_path/pipelines/:id" do
     let(:pipeline) { create(:ci_pipeline, project: project) }
-    subject { namespace_project_pipeline_path(project.namespace, project, pipeline) }
+    subject { project_pipeline_path(project, pipeline) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -154,7 +154,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/builds" do
-    subject { namespace_project_jobs_path(project.namespace, project) }
+    subject { project_jobs_path(project) }
 
     context "when allowed for public" do
       before do
@@ -192,7 +192,7 @@ describe "Public Project Access", feature: true  do
   describe "GET /:project_path/builds/:id" do
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, pipeline: pipeline) }
-    subject { namespace_project_job_path(project.namespace, project, build.id) }
+    subject { project_job_path(project, build.id) }
 
     context "when allowed for public" do
       before do
@@ -230,7 +230,7 @@ describe "Public Project Access", feature: true  do
   describe 'GET /:project_path/builds/:id/trace' do
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, pipeline: pipeline) }
-    subject { trace_namespace_project_job_path(project.namespace, project, build.id) }
+    subject { trace_project_job_path(project, build.id) }
 
     context 'when allowed for public' do
       before do
@@ -266,7 +266,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/pipeline_schedules" do
-    subject { namespace_project_pipeline_schedules_path(project.namespace, project) }
+    subject { project_pipeline_schedules_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -280,7 +280,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments" do
-    subject { namespace_project_environments_path(project.namespace, project) }
+    subject { project_environments_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -295,7 +295,7 @@ describe "Public Project Access", feature: true  do
 
   describe "GET /:project_path/environments/:id" do
     let(:environment) { create(:environment, project: project) }
-    subject { namespace_project_environment_path(project.namespace, project, environment) }
+    subject { project_environment_path(project, environment) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -310,7 +310,7 @@ describe "Public Project Access", feature: true  do
 
   describe "GET /:project_path/environments/:id/deployments" do
     let(:environment) { create(:environment, project: project) }
-    subject { namespace_project_environment_deployments_path(project.namespace, project, environment) }
+    subject { project_environment_deployments_path(project, environment) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -324,7 +324,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/environments/new" do
-    subject { new_namespace_project_environment_path(project.namespace, project) }
+    subject { new_project_environment_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -340,7 +340,7 @@ describe "Public Project Access", feature: true  do
   describe "GET /:project_path/blob" do
     let(:commit) { project.repository.commit }
 
-    subject { namespace_project_blob_path(project.namespace, project, File.join(commit.id, '.gitignore')) }
+    subject { project_blob_path(project, File.join(commit.id, '.gitignore')) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -353,7 +353,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/edit" do
-    subject { edit_namespace_project_path(project.namespace, project) }
+    subject { edit_project_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -367,7 +367,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/deploy_keys" do
-    subject { namespace_project_deploy_keys_path(project.namespace, project) }
+    subject { project_deploy_keys_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -381,7 +381,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/issues" do
-    subject { namespace_project_issues_path(project.namespace, project) }
+    subject { project_issues_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -396,7 +396,7 @@ describe "Public Project Access", feature: true  do
 
   describe "GET /:project_path/issues/:id/edit" do
     let(:issue) { create(:issue, project: project) }
-    subject { edit_namespace_project_issue_path(project.namespace, project, issue) }
+    subject { edit_project_issue_path(project, issue) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -410,7 +410,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets" do
-    subject { namespace_project_snippets_path(project.namespace, project) }
+    subject { project_snippets_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -424,7 +424,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/new" do
-    subject { new_namespace_project_snippet_path(project.namespace, project) }
+    subject { new_project_snippet_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -438,7 +438,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/merge_requests" do
-    subject { namespace_project_merge_requests_path(project.namespace, project) }
+    subject { project_merge_requests_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -452,7 +452,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/merge_requests/new" do
-    subject { namespace_project_new_merge_request_path(project.namespace, project) }
+    subject { project_new_merge_request_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -466,7 +466,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/branches" do
-    subject { namespace_project_branches_path(project.namespace, project) }
+    subject { project_branches_path(project) }
 
     before do
       # Speed increase
@@ -485,7 +485,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/tags" do
-    subject { namespace_project_tags_path(project.namespace, project) }
+    subject { project_tags_path(project) }
 
     before do
       # Speed increase
@@ -504,7 +504,7 @@ describe "Public Project Access", feature: true  do
   end
 
   describe "GET /:project_path/settings/integrations" do
-    subject { namespace_project_settings_integrations_path(project.namespace, project) }
+    subject { project_settings_integrations_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -526,7 +526,7 @@ describe "Public Project Access", feature: true  do
       project.container_repositories << container_repository
     end
 
-    subject { namespace_project_container_registry_index_path(project.namespace, project) }
+    subject { project_container_registry_index_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
diff --git a/spec/features/security/project/snippet/internal_access_spec.rb b/spec/features/security/project/snippet/internal_access_spec.rb
index 2659b3ee3ec3aee20c5ce0e5b5032dcd2fe83221..2420caa88c4efdab056def301d6a45546ee3b409 100644
--- a/spec/features/security/project/snippet/internal_access_spec.rb
+++ b/spec/features/security/project/snippet/internal_access_spec.rb
@@ -9,7 +9,7 @@ describe "Internal Project Snippets Access", feature: true  do
   let(:private_snippet)  { create(:project_snippet, :private,  project: project, author: project.owner) }
 
   describe "GET /:project_path/snippets" do
-    subject { namespace_project_snippets_path(project.namespace, project) }
+    subject { project_snippets_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -23,7 +23,7 @@ describe "Internal Project Snippets Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/new" do
-    subject { new_namespace_project_snippet_path(project.namespace, project) }
+    subject { new_project_snippet_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -38,7 +38,7 @@ describe "Internal Project Snippets Access", feature: true  do
 
   describe "GET /:project_path/snippets/:id" do
     context "for an internal snippet" do
-      subject { namespace_project_snippet_path(project.namespace, project, internal_snippet) }
+      subject { project_snippet_path(project, internal_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -52,7 +52,7 @@ describe "Internal Project Snippets Access", feature: true  do
     end
 
     context "for a private snippet" do
-      subject { namespace_project_snippet_path(project.namespace, project, private_snippet) }
+      subject { project_snippet_path(project, private_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -68,7 +68,7 @@ describe "Internal Project Snippets Access", feature: true  do
 
   describe "GET /:project_path/snippets/:id/raw" do
     context "for an internal snippet" do
-      subject { raw_namespace_project_snippet_path(project.namespace, project, internal_snippet) }
+      subject { raw_project_snippet_path(project, internal_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -82,7 +82,7 @@ describe "Internal Project Snippets Access", feature: true  do
     end
 
     context "for a private snippet" do
-      subject { raw_namespace_project_snippet_path(project.namespace, project, private_snippet) }
+      subject { raw_project_snippet_path(project, private_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
diff --git a/spec/features/security/project/snippet/private_access_spec.rb b/spec/features/security/project/snippet/private_access_spec.rb
index 6eb9f163bd5b25d782c79a3c13f20c2f14ebfaab..0b8548a675b8e23134f3372e2227104fe66de23e 100644
--- a/spec/features/security/project/snippet/private_access_spec.rb
+++ b/spec/features/security/project/snippet/private_access_spec.rb
@@ -8,7 +8,7 @@ describe "Private Project Snippets Access", feature: true  do
   let(:private_snippet)  { create(:project_snippet, :private, project: project, author: project.owner) }
 
   describe "GET /:project_path/snippets" do
-    subject { namespace_project_snippets_path(project.namespace, project) }
+    subject { project_snippets_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -22,7 +22,7 @@ describe "Private Project Snippets Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/new" do
-    subject { new_namespace_project_snippet_path(project.namespace, project) }
+    subject { new_project_snippet_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -36,7 +36,7 @@ describe "Private Project Snippets Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/:id for a private snippet" do
-    subject { namespace_project_snippet_path(project.namespace, project, private_snippet) }
+    subject { project_snippet_path(project, private_snippet) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -50,7 +50,7 @@ describe "Private Project Snippets Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/:id/raw for a private snippet" do
-    subject { raw_namespace_project_snippet_path(project.namespace, project, private_snippet) }
+    subject { raw_project_snippet_path(project, private_snippet) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
diff --git a/spec/features/security/project/snippet/public_access_spec.rb b/spec/features/security/project/snippet/public_access_spec.rb
index f3329d0bc9609bb83f0e6f4c8769a584a2ed5ca2..153f8f964a6597576cca523a795f4f437a02538d 100644
--- a/spec/features/security/project/snippet/public_access_spec.rb
+++ b/spec/features/security/project/snippet/public_access_spec.rb
@@ -10,7 +10,7 @@ describe "Public Project Snippets Access", feature: true  do
   let(:private_snippet)  { create(:project_snippet, :private,  project: project, author: project.owner) }
 
   describe "GET /:project_path/snippets" do
-    subject { namespace_project_snippets_path(project.namespace, project) }
+    subject { project_snippets_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -24,7 +24,7 @@ describe "Public Project Snippets Access", feature: true  do
   end
 
   describe "GET /:project_path/snippets/new" do
-    subject { new_namespace_project_snippet_path(project.namespace, project) }
+    subject { new_project_snippet_path(project) }
 
     it { is_expected.to be_allowed_for(:admin) }
     it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -39,7 +39,7 @@ describe "Public Project Snippets Access", feature: true  do
 
   describe "GET /:project_path/snippets/:id" do
     context "for a public snippet" do
-      subject { namespace_project_snippet_path(project.namespace, project, public_snippet) }
+      subject { project_snippet_path(project, public_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -53,7 +53,7 @@ describe "Public Project Snippets Access", feature: true  do
     end
 
     context "for an internal snippet" do
-      subject { namespace_project_snippet_path(project.namespace, project, internal_snippet) }
+      subject { project_snippet_path(project, internal_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -67,7 +67,7 @@ describe "Public Project Snippets Access", feature: true  do
     end
 
     context "for a private snippet" do
-      subject { namespace_project_snippet_path(project.namespace, project, private_snippet) }
+      subject { project_snippet_path(project, private_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -83,7 +83,7 @@ describe "Public Project Snippets Access", feature: true  do
 
   describe "GET /:project_path/snippets/:id/raw" do
     context "for a public snippet" do
-      subject { raw_namespace_project_snippet_path(project.namespace, project, public_snippet) }
+      subject { raw_project_snippet_path(project, public_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -97,7 +97,7 @@ describe "Public Project Snippets Access", feature: true  do
     end
 
     context "for an internal snippet" do
-      subject { raw_namespace_project_snippet_path(project.namespace, project, internal_snippet) }
+      subject { raw_project_snippet_path(project, internal_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
@@ -111,7 +111,7 @@ describe "Public Project Snippets Access", feature: true  do
     end
 
     context "for a private snippet" do
-      subject { raw_namespace_project_snippet_path(project.namespace, project, private_snippet) }
+      subject { raw_project_snippet_path(project, private_snippet) }
 
       it { is_expected.to be_allowed_for(:admin) }
       it { is_expected.to be_allowed_for(:owner).of(project) }
diff --git a/spec/features/tags/master_creates_tag_spec.rb b/spec/features/tags/master_creates_tag_spec.rb
index 52db3583dac7bcc10902e20d5bcade1f585a0f2e..3bf5544a837e9887ed21beeaca93f1c29c8dec45 100644
--- a/spec/features/tags/master_creates_tag_spec.rb
+++ b/spec/features/tags/master_creates_tag_spec.rb
@@ -11,7 +11,7 @@ feature 'Master creates tag', feature: true do
 
   context 'from tag list' do
     before do
-      visit namespace_project_tags_path(project.namespace, project)
+      visit project_tags_path(project)
     end
 
     scenario 'with an invalid name displays an error' do
@@ -36,7 +36,7 @@ feature 'Master creates tag', feature: true do
       create_tag_in_form(tag: 'v3.0', ref: 'master', message: "Awesome tag message\n\n- hello\n- world")
 
       expect(current_path).to eq(
-        namespace_project_tag_path(project.namespace, project, 'v3.0'))
+        project_tag_path(project, 'v3.0'))
       expect(page).to have_content 'v3.0'
       page.within 'pre.wrap' do
         expect(page).to have_content "Awesome tag message\n\n- hello\n- world"
@@ -47,7 +47,7 @@ feature 'Master creates tag', feature: true do
       create_tag_in_form(tag: 'v4.0', ref: 'master', desc: "Awesome release notes\n\n- hello\n- world")
 
       expect(current_path).to eq(
-        namespace_project_tag_path(project.namespace, project, 'v4.0'))
+        project_tag_path(project, 'v4.0'))
       expect(page).to have_content 'v4.0'
       page.within '.description' do
         expect(page).to have_content 'Awesome release notes'
@@ -72,7 +72,7 @@ feature 'Master creates tag', feature: true do
 
   context 'from new tag page' do
     before do
-      visit new_namespace_project_tag_path(project.namespace, project)
+      visit new_project_tag_path(project)
     end
 
     it 'description has autocomplete', :js do
diff --git a/spec/features/tags/master_deletes_tag_spec.rb b/spec/features/tags/master_deletes_tag_spec.rb
index 58f33e954f9cb7daf588662ff054588c5d30c68b..04f9cecd46d1b519ea3413210d88d3b52911ae1c 100644
--- a/spec/features/tags/master_deletes_tag_spec.rb
+++ b/spec/features/tags/master_deletes_tag_spec.rb
@@ -7,7 +7,7 @@ feature 'Master deletes tag', feature: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_tags_path(project.namespace, project)
+    visit project_tags_path(project)
   end
 
   context 'from the tags list page', js: true do
@@ -24,12 +24,12 @@ feature 'Master deletes tag', feature: true do
     scenario 'deletes the tag' do
       click_on 'v1.0.0'
       expect(current_path).to eq(
-        namespace_project_tag_path(project.namespace, project, 'v1.0.0'))
+        project_tag_path(project, 'v1.0.0'))
 
       click_on 'Delete tag'
 
       expect(current_path).to eq(
-        namespace_project_tags_path(project.namespace, project))
+        project_tags_path(project))
       expect(page).not_to have_content 'v1.0.0'
     end
   end
diff --git a/spec/features/tags/master_updates_tag_spec.rb b/spec/features/tags/master_updates_tag_spec.rb
index 18c8c4c511c25933389ca364f5406a1396363404..092ffbb6d23f74bae7d3e75dc6fcc6c22409287d 100644
--- a/spec/features/tags/master_updates_tag_spec.rb
+++ b/spec/features/tags/master_updates_tag_spec.rb
@@ -7,7 +7,7 @@ feature 'Master updates tag', feature: true do
   before do
     project.team << [user, :master]
     gitlab_sign_in(user)
-    visit namespace_project_tags_path(project.namespace, project)
+    visit project_tags_path(project)
   end
 
   context 'from the tags list page' do
@@ -20,7 +20,7 @@ feature 'Master updates tag', feature: true do
       click_button 'Save changes'
 
       expect(current_path).to eq(
-        namespace_project_tag_path(project.namespace, project, 'v1.1.0'))
+        project_tag_path(project, 'v1.1.0'))
       expect(page).to have_content 'v1.1.0'
       expect(page).to have_content 'Awesome release notes'
     end
@@ -45,7 +45,7 @@ feature 'Master updates tag', feature: true do
       click_button 'Save changes'
 
       expect(current_path).to eq(
-        namespace_project_tag_path(project.namespace, project, 'v1.1.0'))
+        project_tag_path(project, 'v1.1.0'))
       expect(page).to have_content 'v1.1.0'
       expect(page).to have_content 'Awesome release notes'
     end
diff --git a/spec/features/tags/master_views_tags_spec.rb b/spec/features/tags/master_views_tags_spec.rb
index 3c21fa066946449b8c6fd1ebc0e82f090ddb9665..b1f3207eeea7e1564f60603a986f0f0262465c8a 100644
--- a/spec/features/tags/master_views_tags_spec.rb
+++ b/spec/features/tags/master_views_tags_spec.rb
@@ -11,13 +11,13 @@ feature 'Master views tags', feature: true do
   context 'when project has no tags' do
     let(:project) { create(:project_empty_repo) }
     before do
-      visit namespace_project_path(project.namespace, project)
+      visit project_path(project)
       click_on 'README'
       fill_in :commit_message, with: 'Add a README file', visible: true
       # Remove pre-receive hook so we can push without auth
       FileUtils.rm_f(File.join(project.repository.path, 'hooks', 'pre-receive'))
       click_button 'Commit changes'
-      visit namespace_project_tags_path(project.namespace, project)
+      visit project_tags_path(project)
     end
 
     scenario 'displays a specific message' do
@@ -30,15 +30,15 @@ feature 'Master views tags', feature: true do
     let(:repository) { project.repository }
 
     before do
-      visit namespace_project_tags_path(project.namespace, project)
+      visit project_tags_path(project)
     end
 
     scenario 'avoids a N+1 query in branches index' do
-      control_count = ActiveRecord::QueryRecorder.new { visit namespace_project_tags_path(project.namespace, project) }.count
+      control_count = ActiveRecord::QueryRecorder.new { visit project_tags_path(project) }.count
 
       %w(one two three four five).each { |tag| repository.add_tag(user, tag, 'master', 'foo') }
 
-      expect { visit namespace_project_tags_path(project.namespace, project) }.not_to exceed_query_limit(control_count)
+      expect { visit project_tags_path(project) }.not_to exceed_query_limit(control_count)
     end
 
     scenario 'views the tags list page' do
@@ -49,7 +49,7 @@ feature 'Master views tags', feature: true do
       click_on 'v1.0.0'
 
       expect(current_path).to eq(
-        namespace_project_tag_path(project.namespace, project, 'v1.0.0'))
+        project_tag_path(project, 'v1.0.0'))
       expect(page).to have_content 'v1.0.0'
       expect(page).to have_content 'This tag has no release notes.'
     end
@@ -59,24 +59,24 @@ feature 'Master views tags', feature: true do
         click_on 'v1.0.0'
 
         expect(current_path).to eq(
-          namespace_project_tag_path(project.namespace, project, 'v1.0.0'))
+          project_tag_path(project, 'v1.0.0'))
 
         click_on 'Browse files'
 
         expect(current_path).to eq(
-          namespace_project_tree_path(project.namespace, project, 'v1.0.0'))
+          project_tree_path(project, 'v1.0.0'))
       end
 
       scenario 'has a button to browse commits' do
         click_on 'v1.0.0'
 
         expect(current_path).to eq(
-          namespace_project_tag_path(project.namespace, project, 'v1.0.0'))
+          project_tag_path(project, 'v1.0.0'))
 
         click_on 'Browse commits'
 
         expect(current_path).to eq(
-          namespace_project_commits_path(project.namespace, project, 'v1.0.0'))
+          project_commits_path(project, 'v1.0.0'))
       end
     end
   end
diff --git a/spec/features/task_lists_spec.rb b/spec/features/task_lists_spec.rb
index 51b1b8e2328ac4e06689e1f9ee5e5969ab465cb5..dfc362321aaaa0f5748460fa8eef213ca5a4c674 100644
--- a/spec/features/task_lists_spec.rb
+++ b/spec/features/task_lists_spec.rb
@@ -59,7 +59,7 @@ feature 'Task Lists', feature: true do
   end
 
   def visit_issue(project, issue)
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   describe 'for Issues', feature: true do
@@ -98,7 +98,7 @@ feature 'Task Lists', feature: true do
       end
 
       it 'provides a summary on Issues#index' do
-        visit namespace_project_issues_path(project.namespace, project)
+        visit project_issues_path(project)
         expect(page).to have_content("2 of 6 tasks completed")
       end
     end
@@ -116,7 +116,7 @@ feature 'Task Lists', feature: true do
       end
 
       it 'provides a summary on Issues#index' do
-        visit namespace_project_issues_path(project.namespace, project)
+        visit project_issues_path(project)
 
         expect(page).to have_content("0 of 1 task completed")
       end
@@ -135,7 +135,7 @@ feature 'Task Lists', feature: true do
       end
 
       it 'provides a summary on Issues#index' do
-        visit namespace_project_issues_path(project.namespace, project)
+        visit project_issues_path(project)
 
         expect(page).to have_content("1 of 1 task completed")
       end
@@ -242,7 +242,7 @@ feature 'Task Lists', feature: true do
 
   describe 'for Merge Requests' do
     def visit_merge_request(project, merge)
-      visit namespace_project_merge_request_path(project.namespace, project, merge)
+      visit project_merge_request_path(project, merge)
     end
 
     describe 'multiple tasks' do
@@ -281,7 +281,7 @@ feature 'Task Lists', feature: true do
       end
 
       it 'provides a summary on MergeRequests#index' do
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
         expect(page).to have_content("2 of 6 tasks completed")
       end
     end
@@ -298,7 +298,7 @@ feature 'Task Lists', feature: true do
       end
 
       it 'provides a summary on MergeRequests#index' do
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
         expect(page).to have_content("0 of 1 task completed")
       end
     end
@@ -315,7 +315,7 @@ feature 'Task Lists', feature: true do
       end
 
       it 'provides a summary on MergeRequests#index' do
-        visit namespace_project_merge_requests_path(project.namespace, project)
+        visit project_merge_requests_path(project)
         expect(page).to have_content("1 of 1 task completed")
       end
     end
diff --git a/spec/features/triggers_spec.rb b/spec/features/triggers_spec.rb
index 5af2c0e9035da296a1840009ff183b253d7f67c6..47d5f94f54e4f99ea222c97ff65bac4d24d9acd6 100644
--- a/spec/features/triggers_spec.rb
+++ b/spec/features/triggers_spec.rb
@@ -14,7 +14,7 @@ feature 'Triggers', feature: true, js: true do
     @project.team << [user2, :master]
     @project.team << [guest_user, :guest]
 
-    visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+    visit project_settings_ci_cd_path(@project)
   end
 
   describe 'create trigger workflow' do
@@ -42,7 +42,7 @@ feature 'Triggers', feature: true, js: true do
 
     scenario 'click on edit trigger opens edit trigger page' do
       create(:ci_trigger, owner: user, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if edit page has correct descrption
       find('a[title="Edit"]').click
@@ -51,7 +51,7 @@ feature 'Triggers', feature: true, js: true do
 
     scenario 'edit trigger and save' do
       create(:ci_trigger, owner: user, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if edit page opens, then fill in new description and save
       find('a[title="Edit"]').click
@@ -67,7 +67,7 @@ feature 'Triggers', feature: true, js: true do
     scenario 'edit "legacy" trigger and save' do
       # Create new trigger without owner association, i.e. Legacy trigger
       create(:ci_trigger, owner: nil, project: @project)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if the trigger can be edited and description is blank
       find('a[title="Edit"]').click
@@ -84,7 +84,7 @@ feature 'Triggers', feature: true, js: true do
   describe 'trigger "Take ownership" workflow' do
     before(:each) do
       create(:ci_trigger, owner: user2, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
     end
 
     scenario 'button "Take ownership" has correct alert' do
@@ -106,7 +106,7 @@ feature 'Triggers', feature: true, js: true do
   describe 'trigger "Revoke" workflow' do
     before(:each) do
       create(:ci_trigger, owner: user2, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
     end
 
     scenario 'button "Revoke" has correct alert' do
@@ -131,7 +131,7 @@ feature 'Triggers', feature: true, js: true do
 
     scenario 'show "legacy" badge for legacy trigger' do
       create(:ci_trigger, owner: nil, project: @project)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if trigger without owner (i.e. legacy) shows "legacy" badge and is editable
       expect(page.find('.triggers-list')).to have_content 'legacy'
@@ -140,7 +140,7 @@ feature 'Triggers', feature: true, js: true do
 
     scenario 'show "invalid" badge for trigger with owner having insufficient permissions' do
       create(:ci_trigger, owner: guest_user, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if trigger without owner (i.e. legacy) shows "legacy" badge and is non-editable
       expect(page.find('.triggers-list')).to have_content 'invalid'
@@ -150,7 +150,7 @@ feature 'Triggers', feature: true, js: true do
     scenario 'do not show "Edit" or full token for not owned trigger' do
       # Create trigger with user different from current_user
       create(:ci_trigger, owner: user2, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if trigger not owned by current_user shows only first few token chars and doesn't have copy-to-clipboard button
       expect(page.find('.triggers-list')).to have_content(@project.triggers.first.token[0..3])
@@ -163,7 +163,7 @@ feature 'Triggers', feature: true, js: true do
 
     scenario 'show "Edit" and full token for owned trigger' do
       create(:ci_trigger, owner: user, project: @project, description: trigger_title)
-      visit namespace_project_settings_ci_cd_path(@project.namespace, @project)
+      visit project_settings_ci_cd_path(@project)
 
       # See if trigger shows full token and has copy-to-clipboard button
       expect(page.find('.triggers-list')).to have_content @project.triggers.first.token
diff --git a/spec/features/uploads/user_uploads_file_to_note_spec.rb b/spec/features/uploads/user_uploads_file_to_note_spec.rb
index 77a1012762d1b3a1f506439a1d5128632340a114..736178897a648fd335302f682d229bf9cf857d1e 100644
--- a/spec/features/uploads/user_uploads_file_to_note_spec.rb
+++ b/spec/features/uploads/user_uploads_file_to_note_spec.rb
@@ -9,7 +9,7 @@ feature 'User uploads file to note', feature: true do
 
   before do
     gitlab_sign_in(user)
-    visit namespace_project_issue_path(project.namespace, project, issue)
+    visit project_issue_path(project, issue)
   end
 
   context 'before uploading' do
diff --git a/spec/features/variables_spec.rb b/spec/features/variables_spec.rb
index 85085bf305a4991cade748f58ee60864517044d0..1a2dedf27eb63d9070ce9e07a94f8e6801b5924e 100644
--- a/spec/features/variables_spec.rb
+++ b/spec/features/variables_spec.rb
@@ -10,7 +10,7 @@ describe 'Project variables', js: true do
     project.team << [user, :master]
     project.variables << variable
 
-    visit namespace_project_settings_ci_cd_path(project.namespace, project)
+    visit project_settings_ci_cd_path(project)
   end
 
   it 'shows list of variables' do
diff --git a/spec/fixtures/markdown.md.erb b/spec/fixtures/markdown.md.erb
index 51a3e91d201ecda60848681015a1a8ade6a1c5d2..58b43805705558cfa42a6cf6ed13ae19f79af512 100644
--- a/spec/fixtures/markdown.md.erb
+++ b/spec/fixtures/markdown.md.erb
@@ -166,9 +166,9 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Issue in another project: <%= xissue.to_reference(project) %>
 - Ignored in code: `<%= issue.to_reference %>`
 - Ignored in links: [Link to <%= issue.to_reference %>](#issue-link)
-- Issue by URL: <%= urls.namespace_project_issue_url(issue.project.namespace, issue.project, issue) %>
+- Issue by URL: <%= urls.project_issue_url(issue.project, issue) %>
 - Link to issue by reference: [Issue](<%= issue.to_reference %>)
-- Link to issue by URL: [Issue](<%= urls.namespace_project_issue_url(issue.project.namespace, issue.project, issue) %>)
+- Link to issue by URL: [Issue](<%= urls.project_issue_url(issue.project, issue) %>)
 
 #### MergeRequestReferenceFilter
 
@@ -176,9 +176,9 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Merge request in another project: <%= xmerge_request.to_reference(project) %>
 - Ignored in code: `<%= merge_request.to_reference %>`
 - Ignored in links: [Link to <%= merge_request.to_reference %>](#merge-request-link)
-- Merge request by URL: <%= urls.namespace_project_merge_request_url(merge_request.project.namespace, merge_request.project, merge_request) %>
+- Merge request by URL: <%= urls.project_merge_request_url(merge_request.project, merge_request) %>
 - Link to merge request by reference: [Merge request](<%= merge_request.to_reference %>)
-- Link to merge request by URL: [Merge request](<%= urls.namespace_project_merge_request_url(merge_request.project.namespace, merge_request.project, merge_request) %>)
+- Link to merge request by URL: [Merge request](<%= urls.project_merge_request_url(merge_request.project, merge_request) %>)
 
 #### SnippetReferenceFilter
 
@@ -186,9 +186,9 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Snippet in another project: <%= xsnippet.to_reference(project) %>
 - Ignored in code: `<%= snippet.to_reference %>`
 - Ignored in links: [Link to <%= snippet.to_reference %>](#snippet-link)
-- Snippet by URL: <%= urls.namespace_project_snippet_url(snippet.project.namespace, snippet.project, snippet) %>
+- Snippet by URL: <%= urls.project_snippet_url(snippet.project, snippet) %>
 - Link to snippet by reference: [Snippet](<%= snippet.to_reference %>)
-- Link to snippet by URL: [Snippet](<%= urls.namespace_project_snippet_url(snippet.project.namespace, snippet.project, snippet) %>)
+- Link to snippet by URL: [Snippet](<%= urls.project_snippet_url(snippet.project, snippet) %>)
 
 #### CommitRangeReferenceFilter
 
@@ -196,9 +196,9 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Range in another project: <%= xcommit_range.to_reference(project) %>
 - Ignored in code: `<%= commit_range.to_reference %>`
 - Ignored in links: [Link to <%= commit_range.to_reference %>](#commit-range-link)
-- Range by URL: <%= urls.namespace_project_compare_url(commit_range.project.namespace, commit_range.project, commit_range.to_param) %>
+- Range by URL: <%= urls.project_compare_url(commit_range.project, commit_range.to_param) %>
 - Link to range by reference: [Range](<%= commit_range.to_reference %>)
-- Link to range by URL: [Range](<%= urls.namespace_project_compare_url(commit_range.project.namespace, commit_range.project, commit_range.to_param) %>)
+- Link to range by URL: [Range](<%= urls.project_compare_url(commit_range.project, commit_range.to_param) %>)
 
 #### CommitReferenceFilter
 
@@ -206,9 +206,9 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Commit in another project: <%= xcommit.to_reference(project) %>
 - Ignored in code: `<%= commit.to_reference %>`
 - Ignored in links: [Link to <%= commit.to_reference %>](#commit-link)
-- Commit by URL: <%= urls.namespace_project_commit_url(commit.project.namespace, commit.project, commit) %>
+- Commit by URL: <%= urls.project_commit_url(commit.project, commit) %>
 - Link to commit by reference: [Commit](<%= commit.to_reference %>)
-- Link to commit by URL: [Commit](<%= urls.namespace_project_commit_url(commit.project.namespace, commit.project, commit) %>)
+- Link to commit by URL: [Commit](<%= urls.project_commit_url(commit.project, commit) %>)
 
 #### LabelReferenceFilter
 
@@ -227,7 +227,7 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Milestone in another project: <%= xmilestone.to_reference(project) %>
 - Ignored in code: `<%= simple_milestone.to_reference %>`
 - Ignored in links: [Link to <%= simple_milestone.to_reference %>](#milestone-link)
-- Milestone by URL: <%= urls.namespace_project_milestone_url(milestone.project.namespace, milestone.project, milestone) %>
+- Milestone by URL: <%= urls.project_milestone_url(milestone.project, milestone) %>
 - Link to milestone by URL: [Milestone](<%= milestone.to_reference %>)
 
 ### Task Lists
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index f161dbb4cf03f8cfefe202121b31ecfe1ef5e579..e0cad1da86ad825c27600c48ae19b963eaae17bb 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -76,7 +76,7 @@ describe ApplicationHelper do
 
       allow_any_instance_of(Project).to receive(:avatar_in_git).and_return(true)
 
-      avatar_url = "#{gitlab_host}#{namespace_project_avatar_path(project.namespace, project)}"
+      avatar_url = "#{gitlab_host}#{project_avatar_path(project)}"
       expect(helper.project_icon(project.full_path).to_s).to match(image_tag(avatar_url))
     end
   end
diff --git a/spec/helpers/gitlab_routing_helper_spec.rb b/spec/helpers/gitlab_routing_helper_spec.rb
index 14847d0a49e584e630cf21e9d6937d2ba41baf6f..7a522487a74b0fcf82aaf75a0619cce7d9b5b5c3 100644
--- a/spec/helpers/gitlab_routing_helper_spec.rb
+++ b/spec/helpers/gitlab_routing_helper_spec.rb
@@ -5,37 +5,37 @@ describe GitlabRoutingHelper do
     describe '#project_members_url' do
       let(:project) { build_stubbed(:empty_project) }
 
-      it { expect(project_members_url(project)).to eq namespace_project_project_members_url(project.namespace, project) }
+      it { expect(project_members_url(project)).to eq project_project_members_url(project) }
     end
 
     describe '#project_member_path' do
       let(:project_member) { create(:project_member) }
 
-      it { expect(project_member_path(project_member)).to eq namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member) }
+      it { expect(project_member_path(project_member)).to eq project_project_member_path(project_member.source, project_member) }
     end
 
     describe '#request_access_project_members_path' do
       let(:project) { build_stubbed(:empty_project) }
 
-      it { expect(request_access_project_members_path(project)).to eq request_access_namespace_project_project_members_path(project.namespace, project) }
+      it { expect(request_access_project_members_path(project)).to eq request_access_project_project_members_path(project) }
     end
 
     describe '#leave_project_members_path' do
       let(:project) { build_stubbed(:empty_project) }
 
-      it { expect(leave_project_members_path(project)).to eq leave_namespace_project_project_members_path(project.namespace, project) }
+      it { expect(leave_project_members_path(project)).to eq leave_project_project_members_path(project) }
     end
 
     describe '#approve_access_request_project_member_path' do
       let(:project_member) { create(:project_member) }
 
-      it { expect(approve_access_request_project_member_path(project_member)).to eq approve_access_request_namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member) }
+      it { expect(approve_access_request_project_member_path(project_member)).to eq approve_access_request_project_project_member_path(project_member.source, project_member) }
     end
 
     describe '#resend_invite_project_member_path' do
       let(:project_member) { create(:project_member) }
 
-      it { expect(resend_invite_project_member_path(project_member)).to eq resend_invite_namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member) }
+      it { expect(resend_invite_project_member_path(project_member)).to eq resend_invite_project_project_member_path(project_member.source, project_member) }
     end
   end
 
diff --git a/spec/helpers/issues_helper_spec.rb b/spec/helpers/issues_helper_spec.rb
index 00db98fd9d21f302f94c7b663814e2caac6b6be0..8f7f17a484f0ff171b0589edf74366c69d668c73 100644
--- a/spec/helpers/issues_helper_spec.rb
+++ b/spec/helpers/issues_helper_spec.rb
@@ -137,7 +137,7 @@ describe IssuesHelper do
       let(:merge_request) { create(:merge_request) }
 
       it "links just the merge request" do
-        expected_path = namespace_project_merge_request_path(merge_request.project.namespace, merge_request.project, merge_request)
+        expected_path = project_merge_request_path(merge_request.project, merge_request)
 
         expect(link_to_discussions_to_resolve(merge_request, nil)).to include(expected_path)
       end
diff --git a/spec/helpers/markup_helper_spec.rb b/spec/helpers/markup_helper_spec.rb
index b4226f96a04bd32882b8a645ff3ca0b916791f0e..4b6a351cf709e83c1d6ca5f8a210489dc08eb349 100644
--- a/spec/helpers/markup_helper_spec.rb
+++ b/spec/helpers/markup_helper_spec.rb
@@ -25,17 +25,17 @@ describe MarkupHelper do
       let(:actual) { "#{merge_request.to_reference} -> #{commit.to_reference} -> #{issue.to_reference}" }
 
       it "links to the merge request" do
-        expected = namespace_project_merge_request_path(project.namespace, project, merge_request)
+        expected = project_merge_request_path(project, merge_request)
         expect(helper.markdown(actual)).to match(expected)
       end
 
       it "links to the commit" do
-        expected = namespace_project_commit_path(project.namespace, project, commit)
+        expected = project_commit_path(project, commit)
         expect(helper.markdown(actual)).to match(expected)
       end
 
       it "links to the issue" do
-        expected = namespace_project_issue_path(project.namespace, project, issue)
+        expected = project_issue_path(project, issue)
         expect(helper.markdown(actual)).to match(expected)
       end
     end
@@ -46,7 +46,7 @@ describe MarkupHelper do
       let(:second_issue) { create(:issue, project: second_project) }
 
       it 'links to the issue' do
-        expected = namespace_project_issue_path(second_project.namespace, second_project, second_issue)
+        expected = project_issue_path(second_project, second_issue)
         expect(markdown(actual, project: second_project)).to match(expected)
       end
     end
@@ -69,7 +69,7 @@ describe MarkupHelper do
 
       # First issue link
       expect(doc.css('a')[1].attr('href'))
-        .to eq namespace_project_issue_path(project.namespace, project, issues[0])
+        .to eq project_issue_path(project, issues[0])
       expect(doc.css('a')[1].text).to eq issues[0].to_reference
 
       # Internal commit link
@@ -78,7 +78,7 @@ describe MarkupHelper do
 
       # Second issue link
       expect(doc.css('a')[3].attr('href'))
-        .to eq namespace_project_issue_path(project.namespace, project, issues[1])
+        .to eq project_issue_path(project, issues[1])
       expect(doc.css('a')[3].text).to eq issues[1].to_reference
 
       # Trailing commit link
diff --git a/spec/helpers/milestones_helper_spec.rb b/spec/helpers/milestones_helper_spec.rb
index 24d4f1b49384128f10643341d90af939ae1f288b..b8f9c02a4864c01f908537489b43399d1009c95f 100644
--- a/spec/helpers/milestones_helper_spec.rb
+++ b/spec/helpers/milestones_helper_spec.rb
@@ -10,7 +10,7 @@ describe MilestonesHelper do
       it 'returns project milestones JSON URL' do
         assign(:project, project)
 
-        expect(helper.milestones_filter_dropdown_path).to eq(namespace_project_milestones_path(project.namespace, project, :json))
+        expect(helper.milestones_filter_dropdown_path).to eq(project_milestones_path(project, :json))
       end
     end
 
@@ -18,7 +18,7 @@ describe MilestonesHelper do
       it 'returns targeted project milestones JSON URL' do
         assign(:target_project, project2)
 
-        expect(helper.milestones_filter_dropdown_path).to eq(namespace_project_milestones_path(project2.namespace, project2, :json))
+        expect(helper.milestones_filter_dropdown_path).to eq(project_milestones_path(project2, :json))
       end
     end
 
diff --git a/spec/helpers/notes_helper_spec.rb b/spec/helpers/notes_helper_spec.rb
index cc861af8533b271dda801618f44979b8f1a706f4..56f252ba27347ec474a3605e09e0f01f7b6379de 100644
--- a/spec/helpers/notes_helper_spec.rb
+++ b/spec/helpers/notes_helper_spec.rb
@@ -53,7 +53,7 @@ describe NotesHelper do
           let(:discussion) { create(:diff_note_on_merge_request, noteable: merge_request, project: project).to_discussion }
 
           it 'returns the diff path with the line code' do
-            expect(helper.discussion_path(discussion)).to eq(diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, anchor: discussion.line_code))
+            expect(helper.discussion_path(discussion)).to eq(diffs_project_merge_request_path(project, merge_request, anchor: discussion.line_code))
           end
         end
 
@@ -77,7 +77,7 @@ describe NotesHelper do
           end
 
           it 'returns the diff version path with the line code' do
-            expect(helper.discussion_path(discussion)).to eq(diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, diff_id: merge_request_diff1, anchor: discussion.line_code))
+            expect(helper.discussion_path(discussion)).to eq(diffs_project_merge_request_path(project, merge_request, diff_id: merge_request_diff1, anchor: discussion.line_code))
           end
         end
 
@@ -101,7 +101,7 @@ describe NotesHelper do
           end
 
           it 'returns the diff version comparison path with the line code' do
-            expect(helper.discussion_path(discussion)).to eq(diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, diff_id: merge_request_diff3, start_sha: merge_request_diff1.head_commit_sha, anchor: discussion.line_code))
+            expect(helper.discussion_path(discussion)).to eq(diffs_project_merge_request_path(project, merge_request, diff_id: merge_request_diff3, start_sha: merge_request_diff1.head_commit_sha, anchor: discussion.line_code))
           end
         end
 
@@ -129,7 +129,7 @@ describe NotesHelper do
           end
 
           it 'returns the diff path with the line code' do
-            expect(helper.discussion_path(discussion)).to eq(diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, anchor: discussion.line_code))
+            expect(helper.discussion_path(discussion)).to eq(diffs_project_merge_request_path(project, merge_request, anchor: discussion.line_code))
           end
         end
 
@@ -160,7 +160,7 @@ describe NotesHelper do
         let(:discussion) { create(:diff_note_on_commit, project: project).to_discussion }
 
         it 'returns the commit path with the line code' do
-          expect(helper.discussion_path(discussion)).to eq(namespace_project_commit_path(project.namespace, project, commit, anchor: discussion.line_code))
+          expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit, anchor: discussion.line_code))
         end
       end
 
@@ -168,7 +168,7 @@ describe NotesHelper do
         let(:discussion) { create(:legacy_diff_note_on_commit, project: project).to_discussion }
 
         it 'returns the commit path with the line code' do
-          expect(helper.discussion_path(discussion)).to eq(namespace_project_commit_path(project.namespace, project, commit, anchor: discussion.line_code))
+          expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit, anchor: discussion.line_code))
         end
       end
 
@@ -176,7 +176,7 @@ describe NotesHelper do
         let(:discussion) { create(:discussion_note_on_commit, project: project).to_discussion }
 
         it 'returns the commit path' do
-          expect(helper.discussion_path(discussion)).to eq(namespace_project_commit_path(project.namespace, project, commit))
+          expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit))
         end
       end
     end
diff --git a/spec/lib/banzai/filter/commit_range_reference_filter_spec.rb b/spec/lib/banzai/filter/commit_range_reference_filter_spec.rb
index fc67c7ec3c4e1869ab07ff985abccc311b9242e1..60c27bc0d3c3f2e04b52c1fd05f93939fb997a49 100644
--- a/spec/lib/banzai/filter/commit_range_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/commit_range_reference_filter_spec.rb
@@ -29,14 +29,14 @@ describe Banzai::Filter::CommitRangeReferenceFilter, lib: true do
       doc = reference_filter("See #{reference2}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_compare_url(project.namespace, project, range2.to_param)
+        .to eq urls.project_compare_url(project, range2.to_param)
     end
 
     it 'links to a valid three-dot reference' do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_compare_url(project.namespace, project, range.to_param)
+        .to eq urls.project_compare_url(project, range.to_param)
     end
 
     it 'links to a valid short ID' do
@@ -94,7 +94,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter, lib: true do
       link = doc.css('a').first.attr('href')
 
       expect(link).not_to match %r(https?://)
-      expect(link).to eq urls.namespace_project_compare_url(project.namespace, project, from: commit1.id, to: commit2.id, only_path: true)
+      expect(link).to eq urls.project_compare_url(project, from: commit1.id, to: commit2.id, only_path: true)
     end
   end
 
@@ -106,7 +106,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_compare_url(project2.namespace, project2, range.to_param)
+        .to eq urls.project_compare_url(project2, range.to_param)
     end
 
     it 'link has valid text' do
@@ -141,7 +141,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_compare_url(project2.namespace, project2, range.to_param)
+        .to eq urls.project_compare_url(project2, range.to_param)
     end
 
     it 'link has valid text' do
@@ -176,7 +176,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_compare_url(project2.namespace, project2, range.to_param)
+        .to eq urls.project_compare_url(project2, range.to_param)
     end
 
     it 'link has valid text' do
@@ -205,7 +205,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter, lib: true do
     let(:namespace) { create(:namespace) }
     let(:project2)  { create(:project, :public, :repository, namespace: namespace) }
     let(:range)  { CommitRange.new("#{commit1.id}...master", project) }
-    let(:reference) { urls.namespace_project_compare_url(project2.namespace, project2, from: commit1.id, to: 'master') }
+    let(:reference) { urls.project_compare_url(project2, from: commit1.id, to: 'master') }
 
     before do
       range.project = project2
diff --git a/spec/lib/banzai/filter/commit_reference_filter_spec.rb b/spec/lib/banzai/filter/commit_reference_filter_spec.rb
index c4d8d3b66826f46025ec64b5a91a479c54246e1a..f6893641481df20e14390905d182f1fce22a20cb 100644
--- a/spec/lib/banzai/filter/commit_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/commit_reference_filter_spec.rb
@@ -27,7 +27,7 @@ describe Banzai::Filter::CommitReferenceFilter, lib: true do
 
         expect(doc.css('a').first.text).to eq commit.short_id
         expect(doc.css('a').first.attr('href'))
-          .to eq urls.namespace_project_commit_url(project.namespace, project, reference)
+          .to eq urls.project_commit_url(project, reference)
       end
     end
 
@@ -90,7 +90,7 @@ describe Banzai::Filter::CommitReferenceFilter, lib: true do
       link = doc.css('a').first.attr('href')
 
       expect(link).not_to match %r(https?://)
-      expect(link).to eq urls.namespace_project_commit_url(project.namespace, project, reference, only_path: true)
+      expect(link).to eq urls.project_commit_url(project, reference, only_path: true)
     end
   end
 
@@ -175,13 +175,13 @@ describe Banzai::Filter::CommitReferenceFilter, lib: true do
     let(:namespace) { create(:namespace) }
     let(:project2)  { create(:project, :public, :repository, namespace: namespace) }
     let(:commit)    { project2.commit }
-    let(:reference) { urls.namespace_project_commit_url(project2.namespace, project2, commit.id) }
+    let(:reference) { urls.project_commit_url(project2, commit.id) }
 
     it 'links to a valid reference' do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_commit_url(project2.namespace, project2, commit.id)
+        .to eq urls.project_commit_url(project2, commit.id)
     end
 
     it 'links with adjacent text' do
diff --git a/spec/lib/banzai/filter/label_reference_filter_spec.rb b/spec/lib/banzai/filter/label_reference_filter_spec.rb
index cb3cf982351f564c06774f705844bf132ce880da..8daef3ca6916553f9f75359fdc8c28f9e7147775 100644
--- a/spec/lib/banzai/filter/label_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/label_reference_filter_spec.rb
@@ -45,7 +45,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
     link = doc.css('a').first.attr('href')
 
     expect(link).not_to match %r(https?://)
-    expect(link).to eq urls.namespace_project_issues_path(project.namespace, project, label_name: label.name)
+    expect(link).to eq urls.project_issues_path(project, label_name: label.name)
   end
 
   context 'project that does not exist referenced' do
@@ -73,7 +73,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
     end
 
     it 'links with adjacent text' do
@@ -96,7 +96,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
       expect(doc.text).to eq 'See gfm'
     end
 
@@ -120,7 +120,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
       expect(doc.text).to eq 'See 2fa'
     end
 
@@ -144,7 +144,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
       expect(doc.text).to eq 'See ?g.fm&'
     end
 
@@ -169,7 +169,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
       expect(doc.text).to eq 'See gfm references'
     end
 
@@ -193,7 +193,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
       expect(doc.text).to eq 'See 2 factor authentication'
     end
 
@@ -217,7 +217,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
       expect(doc.text).to eq 'See g.fm & references?'
     end
 
@@ -250,9 +250,9 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
         doc = reference_filter("See #{references}")
 
         expect(doc.css('a').map { |a| a.attr('href') }).to match_array([
-          urls.namespace_project_issues_url(project.namespace, project, label_name: bug.name),
-          urls.namespace_project_issues_url(project.namespace, project, label_name: feature_proposal.name),
-          urls.namespace_project_issues_url(project.namespace, project, label_name: technical_debt.name)
+          urls.project_issues_url(project, label_name: bug.name),
+          urls.project_issues_url(project, label_name: feature_proposal.name),
+          urls.project_issues_url(project, label_name: technical_debt.name)
         ])
         expect(doc.text).to eq 'See bug, feature proposal, technical debt'
       end
@@ -265,9 +265,9 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
         doc = reference_filter("See #{references}")
 
         expect(doc.css('a').map { |a| a.attr('href') }).to match_array([
-          urls.namespace_project_issues_url(project.namespace, project, label_name: bug.name),
-          urls.namespace_project_issues_url(project.namespace, project, label_name: feature_proposal.name),
-          urls.namespace_project_issues_url(project.namespace, project, label_name: technical_debt.name)
+          urls.project_issues_url(project, label_name: bug.name),
+          urls.project_issues_url(project, label_name: feature_proposal.name),
+          urls.project_issues_url(project, label_name: technical_debt.name)
         ])
         expect(doc.text).to eq 'See bug feature proposal technical debt'
       end
@@ -288,7 +288,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_issues_url(project.namespace, project, label_name: label.name)
+        .project_issues_url(project, label_name: label.name)
     end
 
     it 'links with adjacent text' do
@@ -325,7 +325,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
         doc = reference_filter("See #{reference}", project: project)
 
         expect(doc.css('a').first.attr('href')).to eq urls
-          .namespace_project_issues_url(project.namespace, project, label_name: group_label.name)
+          .project_issues_url(project, label_name: group_label.name)
         expect(doc.text).to eq 'See gfm references'
       end
 
@@ -348,7 +348,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
         doc = reference_filter("See #{reference}", project: project)
 
         expect(doc.css('a').first.attr('href')).to eq urls
-          .namespace_project_issues_url(project.namespace, project, label_name: group_label.name)
+          .project_issues_url(project, label_name: group_label.name)
         expect(doc.text).to eq "See gfm references"
       end
 
@@ -373,9 +373,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'links to a valid reference' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(project2.namespace,
-                                                 project2,
-                                                 label_name: label.name)
+        .to eq urls.project_issues_url(project2, label_name: label.name)
     end
 
     it 'has valid color' do
@@ -407,9 +405,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'links to a valid reference' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(project2.namespace,
-                                                 project2,
-                                                 label_name: label.name)
+        .to eq urls.project_issues_url(project2, label_name: label.name)
     end
 
     it 'has valid color' do
@@ -441,9 +437,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'links to a valid reference' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(project2.namespace,
-                                                 project2,
-                                                 label_name: label.name)
+        .to eq urls.project_issues_url(project2, label_name: label.name)
     end
 
     it 'has valid color' do
@@ -477,9 +471,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'points to referenced project issues page' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(another_project.namespace,
-                                                 another_project,
-                                                 label_name: group_label.name)
+        .to eq urls.project_issues_url(another_project, label_name: group_label.name)
     end
 
     it 'has valid color' do
@@ -514,9 +506,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'points to referenced project issues page' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(another_project.namespace,
-                                                 another_project,
-                                                 label_name: group_label.name)
+        .to eq urls.project_issues_url(another_project, label_name: group_label.name)
     end
 
     it 'has valid color' do
@@ -550,9 +540,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'points to referenced project issues page' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(project.namespace,
-                                                 project,
-                                                 label_name: group_label.name)
+        .to eq urls.project_issues_url(project, label_name: group_label.name)
     end
 
     it 'has valid color' do
@@ -584,9 +572,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
     it 'points to referenced project issues page' do
       expect(result.css('a').first.attr('href'))
-        .to eq urls.namespace_project_issues_url(project.namespace,
-                                                 project,
-                                                 label_name: group_label.name)
+        .to eq urls.project_issues_url(project, label_name: group_label.name)
     end
 
     it 'has valid color' do
diff --git a/spec/lib/banzai/filter/merge_request_reference_filter_spec.rb b/spec/lib/banzai/filter/merge_request_reference_filter_spec.rb
index cd91681551eaaae38eac20c09976c9440c0bd6e2..1ad329b64527ccb9231a5e95df03fa27f5d28cbb 100644
--- a/spec/lib/banzai/filter/merge_request_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/merge_request_reference_filter_spec.rb
@@ -37,7 +37,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_merge_request_url(project.namespace, project, merge)
+        .project_merge_request_url(project, merge)
     end
 
     it 'links with adjacent text' do
@@ -95,7 +95,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter, lib: true do
       link = doc.css('a').first.attr('href')
 
       expect(link).not_to match %r(https?://)
-      expect(link).to eq urls.namespace_project_merge_request_url(project.namespace, project, merge, only_path: true)
+      expect(link).to eq urls.project_merge_request_url(project, merge, only_path: true)
     end
   end
 
@@ -108,8 +108,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_merge_request_url(project2.namespace,
-                                                       project2, merge)
+        .to eq urls.project_merge_request_url(project2, merge)
     end
 
     it 'link has valid text' do
@@ -142,8 +141,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_merge_request_url(project2.namespace,
-                                                      project2, merge)
+        .to eq urls.project_merge_request_url(project2, merge)
     end
 
     it 'link has valid text' do
@@ -176,8 +174,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_merge_request_url(project2.namespace,
-                                                      project2, merge)
+        .to eq urls.project_merge_request_url(project2, merge)
     end
 
     it 'link has valid text' do
@@ -203,7 +200,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter, lib: true do
     let(:namespace) { create(:namespace, name: 'cross-reference') }
     let(:project2)  { create(:empty_project, :public, namespace: namespace) }
     let(:merge)     { create(:merge_request, source_project: project2, target_project: project2) }
-    let(:reference) { urls.namespace_project_merge_request_url(project2.namespace, project2, merge) + '/diffs#note_123' }
+    let(:reference) { urls.project_merge_request_url(project2, merge) + '/diffs#note_123' }
 
     it 'links to a valid reference' do
       doc = reference_filter("See #{reference}")
diff --git a/spec/lib/banzai/filter/milestone_reference_filter_spec.rb b/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
index fe88b9cb73ececc1ca67572d82ef27987532e202..7fab5613afcfcd40b49057471b5c7d9894fb7292 100644
--- a/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
@@ -45,7 +45,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
 
     expect(link).not_to match %r(https?://)
     expect(link).to eq urls
-      .namespace_project_milestone_path(project.namespace, project, milestone)
+      .project_milestone_path(project, milestone)
   end
 
   context 'Integer-based references' do
@@ -53,7 +53,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(project.namespace, project, milestone)
+        .project_milestone_url(project, milestone)
     end
 
     it 'links with adjacent text' do
@@ -76,7 +76,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(project.namespace, project, milestone)
+        .project_milestone_url(project, milestone)
       expect(doc.text).to eq 'See gfm'
     end
 
@@ -100,7 +100,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(project.namespace, project, milestone)
+        .project_milestone_url(project, milestone)
       expect(doc.text).to eq 'See gfm references'
     end
 
@@ -123,7 +123,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(project.namespace, project, milestone)
+        .project_milestone_url(project, milestone)
     end
 
     it 'links with adjacent text' do
@@ -157,9 +157,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
 
     it 'points to referenced project milestone page' do
       expect(result.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(another_project.namespace,
-                                        another_project,
-                                        milestone)
+        .project_milestone_url(another_project, milestone)
     end
 
     it 'link has valid text' do
@@ -196,9 +194,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
 
     it 'points to referenced project milestone page' do
       expect(result.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(another_project.namespace,
-                                        another_project,
-                                        milestone)
+        .project_milestone_url(another_project, milestone)
     end
 
     it 'link has valid text' do
@@ -235,9 +231,7 @@ describe Banzai::Filter::MilestoneReferenceFilter, lib: true do
 
     it 'points to referenced project milestone page' do
       expect(result.css('a').first.attr('href')).to eq urls
-        .namespace_project_milestone_url(another_project.namespace,
-                                        another_project,
-                                        milestone)
+        .project_milestone_url(another_project, milestone)
     end
 
     it 'link has valid text' do
diff --git a/spec/lib/banzai/filter/snippet_reference_filter_spec.rb b/spec/lib/banzai/filter/snippet_reference_filter_spec.rb
index e851120bc3ae2c4df1479d2c45a68615e5d4e3e4..9704db0c221944381e91c564085bd49837e20b13 100644
--- a/spec/lib/banzai/filter/snippet_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/snippet_reference_filter_spec.rb
@@ -23,7 +23,7 @@ describe Banzai::Filter::SnippetReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href')).to eq urls
-        .namespace_project_snippet_url(project.namespace, project, snippet)
+        .project_snippet_url(project, snippet)
     end
 
     it 'links with adjacent text' do
@@ -75,7 +75,7 @@ describe Banzai::Filter::SnippetReferenceFilter, lib: true do
       link = doc.css('a').first.attr('href')
 
       expect(link).not_to match %r(https?://)
-      expect(link).to eq urls.namespace_project_snippet_url(project.namespace, project, snippet, only_path: true)
+      expect(link).to eq urls.project_snippet_url(project, snippet, only_path: true)
     end
   end
 
@@ -89,7 +89,7 @@ describe Banzai::Filter::SnippetReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_snippet_url(project2.namespace, project2, snippet)
+        .to eq urls.project_snippet_url(project2, snippet)
     end
 
     it 'link has valid text' do
@@ -122,7 +122,7 @@ describe Banzai::Filter::SnippetReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_snippet_url(project2.namespace, project2, snippet)
+        .to eq urls.project_snippet_url(project2, snippet)
     end
 
     it 'link has valid text' do
@@ -155,7 +155,7 @@ describe Banzai::Filter::SnippetReferenceFilter, lib: true do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_snippet_url(project2.namespace, project2, snippet)
+        .to eq urls.project_snippet_url(project2, snippet)
     end
 
     it 'link has valid text' do
@@ -181,13 +181,13 @@ describe Banzai::Filter::SnippetReferenceFilter, lib: true do
     let(:namespace) { create(:namespace, name: 'cross-reference') }
     let(:project2)  { create(:empty_project, :public, namespace: namespace) }
     let(:snippet)   { create(:project_snippet, project: project2) }
-    let(:reference) { urls.namespace_project_snippet_url(project2.namespace, project2, snippet) }
+    let(:reference) { urls.project_snippet_url(project2, snippet) }
 
     it 'links to a valid reference' do
       doc = reference_filter("See #{reference}")
 
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_snippet_url(project2.namespace, project2, snippet)
+        .to eq urls.project_snippet_url(project2, snippet)
     end
 
     it 'links with adjacent text' do
diff --git a/spec/lib/banzai/filter/user_reference_filter_spec.rb b/spec/lib/banzai/filter/user_reference_filter_spec.rb
index edf3846b7429d5c43e111d91bdc9784be50b6c0d..77561e00573c34078fb092203853413726cdcb2b 100644
--- a/spec/lib/banzai/filter/user_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/user_reference_filter_spec.rb
@@ -43,7 +43,7 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do
 
       expect(doc.css('a').length).to eq 1
       expect(doc.css('a').first.attr('href'))
-        .to eq urls.namespace_project_url(project.namespace, project)
+        .to eq urls.project_url(project)
     end
 
     it 'includes a data-author attribute when there is an author' do
diff --git a/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb b/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
index 2b8c76f2bb8f49890fa85e0359e4e12e36f98f76..1eb90dc1847454757ffeccde950c28e2358b7220 100644
--- a/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
+++ b/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
@@ -22,11 +22,7 @@ describe Banzai::Pipeline::GfmPipeline do
       link = result.css('a').first
 
       expect(link['href']).to eq(
-        Gitlab::Routing.url_helpers.namespace_project_issue_path(
-          other_project.namespace,
-          other_project,
-          issue
-        )
+        Gitlab::Routing.url_helpers.project_issue_path(other_project, issue)
       )
     end
   end
diff --git a/spec/lib/gitlab/closing_issue_extractor_spec.rb b/spec/lib/gitlab/closing_issue_extractor_spec.rb
index ca68010cb895d0447dce4834c8a530460a043bdd..fe988266ae3c9da86c575eda7a256e45d7e1969b 100644
--- a/spec/lib/gitlab/closing_issue_extractor_spec.rb
+++ b/spec/lib/gitlab/closing_issue_extractor_spec.rb
@@ -276,7 +276,7 @@ describe Gitlab::ClosingIssueExtractor, lib: true do
 
     context "with a cross-project URL" do
       it do
-        message = "Closes #{urls.namespace_project_issue_url(issue2.project.namespace, issue2.project, issue2)}"
+        message = "Closes #{urls.project_issue_url(issue2.project, issue2)}"
         expect(subject.closed_by_message(message)).to eq([issue2])
       end
     end
@@ -292,7 +292,7 @@ describe Gitlab::ClosingIssueExtractor, lib: true do
 
     context "with an invalid URL" do
       it do
-        message = "Closes https://google.com#{urls.namespace_project_issue_path(issue2.project.namespace, issue2.project, issue2)}"
+        message = "Closes https://google.com#{urls.project_issue_path(issue2.project, issue2)}"
         expect(subject.closed_by_message(message)).to eq([])
       end
     end
@@ -347,14 +347,14 @@ describe Gitlab::ClosingIssueExtractor, lib: true do
       end
 
       it "fetches cross-project URL references" do
-        message = "Closes #{urls.namespace_project_issue_url(issue2.project.namespace, issue2.project, issue2)} and #{reference}"
+        message = "Closes #{urls.project_issue_url(issue2.project, issue2)} and #{reference}"
 
         expect(subject.closed_by_message(message))
             .to match_array([issue, issue2])
       end
 
       it "ignores invalid cross-project URL references" do
-        message = "Closes https://google.com#{urls.namespace_project_issue_path(issue2.project.namespace, issue2.project, issue2)} and #{reference}"
+        message = "Closes https://google.com#{urls.project_issue_path(issue2.project, issue2)} and #{reference}"
 
         expect(subject.closed_by_message(message))
             .to match_array([issue])
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 980b24370d072a650a1723af9c3fa3e9db8b288c..683e893968b7729e9483f417345484b8b6de03d3 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -52,7 +52,7 @@ describe Notify do
           it 'has the correct subject and body' do
             aggregate_failures do
               is_expected.to have_referable_subject(issue)
-              is_expected.to have_body_text(namespace_project_issue_path(project.namespace, project, issue))
+              is_expected.to have_body_text(project_issue_path(project, issue))
             end
           end
 
@@ -99,7 +99,7 @@ describe Notify do
               is_expected.to have_referable_subject(issue, reply: true)
               is_expected.to have_html_escaped_body_text(previous_assignee.name)
               is_expected.to have_html_escaped_body_text(assignee.name)
-              is_expected.to have_body_text(namespace_project_issue_path(project.namespace, project, issue))
+              is_expected.to have_body_text(project_issue_path(project, issue))
             end
           end
         end
@@ -125,7 +125,7 @@ describe Notify do
             aggregate_failures do
               is_expected.to have_referable_subject(issue, reply: true)
               is_expected.to have_body_text('foo, bar, and baz')
-              is_expected.to have_body_text(namespace_project_issue_path(project.namespace, project, issue))
+              is_expected.to have_body_text(project_issue_path(project, issue))
             end
           end
 
@@ -165,7 +165,7 @@ describe Notify do
               is_expected.to have_referable_subject(issue, reply: true)
               is_expected.to have_body_text(status)
               is_expected.to have_html_escaped_body_text(current_user.name)
-              is_expected.to have_body_text(namespace_project_issue_path project.namespace, project, issue)
+              is_expected.to have_body_text(project_issue_path project, issue)
             end
           end
         end
@@ -185,13 +185,12 @@ describe Notify do
           end
 
           it 'has the correct subject and body' do
-            new_issue_url = namespace_project_issue_path(new_issue.project.namespace,
-                                                         new_issue.project, new_issue)
+            new_issue_url = project_issue_path(new_issue.project, new_issue)
 
             aggregate_failures do
               is_expected.to have_referable_subject(issue, reply: true)
               is_expected.to have_body_text(new_issue_url)
-              is_expected.to have_body_text(namespace_project_issue_path(project.namespace, project, issue))
+              is_expected.to have_body_text(project_issue_path(project, issue))
             end
           end
         end
@@ -216,7 +215,7 @@ describe Notify do
           it 'has the correct subject and body' do
             aggregate_failures do
               is_expected.to have_referable_subject(merge_request)
-              is_expected.to have_body_text(namespace_project_merge_request_path(project.namespace, project, merge_request))
+              is_expected.to have_body_text(project_merge_request_path(project, merge_request))
               is_expected.to have_body_text(merge_request.source_branch)
               is_expected.to have_body_text(merge_request.target_branch)
             end
@@ -265,7 +264,7 @@ describe Notify do
             aggregate_failures do
               is_expected.to have_referable_subject(merge_request, reply: true)
               is_expected.to have_html_escaped_body_text(previous_assignee.name)
-              is_expected.to have_body_text(namespace_project_merge_request_path(project.namespace, project, merge_request))
+              is_expected.to have_body_text(project_merge_request_path(project, merge_request))
               is_expected.to have_html_escaped_body_text(assignee.name)
             end
           end
@@ -291,7 +290,7 @@ describe Notify do
           it 'has the correct subject and body' do
             is_expected.to have_referable_subject(merge_request, reply: true)
             is_expected.to have_body_text('foo, bar, and baz')
-            is_expected.to have_body_text(namespace_project_merge_request_path(project.namespace, project, merge_request))
+            is_expected.to have_body_text(project_merge_request_path(project, merge_request))
           end
         end
 
@@ -316,7 +315,7 @@ describe Notify do
               is_expected.to have_referable_subject(merge_request, reply: true)
               is_expected.to have_body_text(status)
               is_expected.to have_html_escaped_body_text(current_user.name)
-              is_expected.to have_body_text(namespace_project_merge_request_path(project.namespace, project, merge_request))
+              is_expected.to have_body_text(project_merge_request_path(project, merge_request))
             end
           end
         end
@@ -341,7 +340,7 @@ describe Notify do
             aggregate_failures do
               is_expected.to have_referable_subject(merge_request, reply: true)
               is_expected.to have_body_text('merged')
-              is_expected.to have_body_text(namespace_project_merge_request_path(project.namespace, project, merge_request))
+              is_expected.to have_body_text(project_merge_request_path(project, merge_request))
             end
           end
         end
@@ -390,7 +389,7 @@ describe Notify do
 
           is_expected.to have_subject "Request to join the #{project.name_with_namespace} project"
           is_expected.to have_html_escaped_body_text project.name_with_namespace
-          is_expected.to have_body_text namespace_project_project_members_url(project.namespace, project)
+          is_expected.to have_body_text project_project_members_url(project)
           is_expected.to have_body_text project_member.human_access
         end
       end
@@ -417,7 +416,7 @@ describe Notify do
 
           is_expected.to have_subject "Request to join the #{project.name_with_namespace} project"
           is_expected.to have_html_escaped_body_text project.name_with_namespace
-          is_expected.to have_body_text namespace_project_project_members_url(project.namespace, project)
+          is_expected.to have_body_text project_project_members_url(project)
           is_expected.to have_body_text project_member.human_access
         end
       end
@@ -609,7 +608,7 @@ describe Notify do
 
       describe 'on a merge request' do
         let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
-        let(:note_on_merge_request_path) { namespace_project_merge_request_path(project.namespace, project, merge_request, anchor: "note_#{note.id}") }
+        let(:note_on_merge_request_path) { project_merge_request_path(project, merge_request, anchor: "note_#{note.id}") }
 
         before do
           allow(note).to receive(:noteable).and_return(merge_request)
@@ -634,7 +633,7 @@ describe Notify do
 
       describe 'on an issue' do
         let(:issue) { create(:issue, project: project) }
-        let(:note_on_issue_path) { namespace_project_issue_path(project.namespace, project, issue, anchor: "note_#{note.id}") }
+        let(:note_on_issue_path) { project_issue_path(project, issue, anchor: "note_#{note.id}") }
 
         before do
           allow(note).to receive(:noteable).and_return(issue)
@@ -725,7 +724,7 @@ describe Notify do
       describe 'on a merge request' do
         let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
         let(:note) { create(:discussion_note_on_merge_request, noteable: merge_request, project: project, author: note_author) }
-        let(:note_on_merge_request_path) { namespace_project_merge_request_path(project.namespace, project, merge_request, anchor: "note_#{note.id}") }
+        let(:note_on_merge_request_path) { project_merge_request_path(project, merge_request, anchor: "note_#{note.id}") }
 
         before do
           allow(note).to receive(:noteable).and_return(merge_request)
@@ -752,7 +751,7 @@ describe Notify do
       describe 'on an issue' do
         let(:issue) { create(:issue, project: project) }
         let(:note) { create(:discussion_note_on_issue, noteable: issue, project: project, author: note_author) }
-        let(:note_on_issue_path) { namespace_project_issue_path(project.namespace, project, issue, anchor: "note_#{note.id}") }
+        let(:note_on_issue_path) { project_issue_path(project, issue, anchor: "note_#{note.id}") }
 
         before do
           allow(note).to receive(:noteable).and_return(issue)
@@ -1022,7 +1021,7 @@ describe Notify do
   describe 'email on push for a created branch' do
     let(:example_site_path) { root_path }
     let(:user) { create(:user) }
-    let(:tree_path) { namespace_project_tree_path(project.namespace, project, "empty-branch") }
+    let(:tree_path) { project_tree_path(project, "empty-branch") }
 
     subject { described_class.repository_push_email(project.id, author_id: user.id, ref: 'refs/heads/empty-branch', action: :create) }
 
@@ -1048,7 +1047,7 @@ describe Notify do
   describe 'email on push for a created tag' do
     let(:example_site_path) { root_path }
     let(:user) { create(:user) }
-    let(:tree_path) { namespace_project_tree_path(project.namespace, project, "v1.0") }
+    let(:tree_path) { project_tree_path(project, "v1.0") }
 
     subject { described_class.repository_push_email(project.id, author_id: user.id, ref: 'refs/tags/v1.0', action: :create) }
 
@@ -1122,7 +1121,7 @@ describe Notify do
     let(:raw_compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_image_commit.id, sample_commit.id) }
     let(:compare) { Compare.decorate(raw_compare, project) }
     let(:commits) { compare.commits }
-    let(:diff_path) { namespace_project_compare_path(project.namespace, project, from: Commit.new(compare.base, project), to: Commit.new(compare.head, project)) }
+    let(:diff_path) { project_compare_path(project, from: Commit.new(compare.base, project), to: Commit.new(compare.head, project)) }
     let(:send_from_committer_email) { false }
     let(:diff_refs) { Gitlab::Diff::DiffRefs.new(base_sha: project.merge_base_commit(sample_image_commit.id, sample_commit.id).id, head_sha: sample_commit.id) }
 
@@ -1216,7 +1215,7 @@ describe Notify do
     let(:raw_compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_commit.parent_id, sample_commit.id) }
     let(:compare) { Compare.decorate(raw_compare, project) }
     let(:commits) { compare.commits }
-    let(:diff_path) { namespace_project_commit_path(project.namespace, project, commits.first) }
+    let(:diff_path) { project_commit_path(project, commits.first) }
     let(:diff_refs) { Gitlab::Diff::DiffRefs.new(base_sha: project.merge_base_commit(sample_image_commit.id, sample_commit.id).id, head_sha: sample_commit.id) }
 
     subject { described_class.repository_push_email(project.id, author_id: user.id, ref: 'refs/heads/master', action: :push, compare: compare, diff_refs: diff_refs) }
diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb
index d4d3c9478a002e8217cb53559a43a3c655bcee07..e78d2cfdb3371d2d2afa59a804ec50cd57c66698 100644
--- a/spec/requests/projects/cycle_analytics_events_spec.rb
+++ b/spec/requests/projects/cycle_analytics_events_spec.rb
@@ -21,7 +21,7 @@ describe 'cycle analytics events', api: true do
     end
 
     it 'lists the issue events' do
-      get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_issue_path(project, format: :json)
 
       first_issue_iid = project.issues.sort(:created_desc).pluck(:iid).first.to_s
 
@@ -30,7 +30,7 @@ describe 'cycle analytics events', api: true do
     end
 
     it 'lists the plan events' do
-      get namespace_project_cycle_analytics_plan_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_plan_path(project, format: :json)
 
       first_mr_short_sha = project.merge_requests.sort(:created_asc).first.commits.first.short_id
 
@@ -39,7 +39,7 @@ describe 'cycle analytics events', api: true do
     end
 
     it 'lists the code events' do
-      get namespace_project_cycle_analytics_code_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_code_path(project, format: :json)
 
       expect(json_response['events']).not_to be_empty
 
@@ -49,14 +49,14 @@ describe 'cycle analytics events', api: true do
     end
 
     it 'lists the test events' do
-      get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_test_path(project, format: :json)
 
       expect(json_response['events']).not_to be_empty
       expect(json_response['events'].first['date']).not_to be_empty
     end
 
     it 'lists the review events' do
-      get namespace_project_cycle_analytics_review_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_review_path(project, format: :json)
 
       first_mr_iid = project.merge_requests.sort(:created_desc).pluck(:iid).first.to_s
 
@@ -65,14 +65,14 @@ describe 'cycle analytics events', api: true do
     end
 
     it 'lists the staging events' do
-      get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_staging_path(project, format: :json)
 
       expect(json_response['events']).not_to be_empty
       expect(json_response['events'].first['date']).not_to be_empty
     end
 
     it 'lists the production events' do
-      get namespace_project_cycle_analytics_production_path(project.namespace, project, format: :json)
+      get project_cycle_analytics_production_path(project, format: :json)
 
       first_issue_iid = project.issues.sort(:created_desc).pluck(:iid).first.to_s
 
@@ -84,7 +84,7 @@ describe 'cycle analytics events', api: true do
       it 'lists the test events' do
         branch = project.merge_requests.first.source_branch
 
-        get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json, branch: branch)
+        get project_cycle_analytics_test_path(project, format: :json, branch: branch)
 
         expect(json_response['events']).not_to be_empty
         expect(json_response['events'].first['date']).not_to be_empty
@@ -97,19 +97,19 @@ describe 'cycle analytics events', api: true do
       end
 
       it 'does not list the test events' do
-        get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json)
+        get project_cycle_analytics_test_path(project, format: :json)
 
         expect(response).to have_http_status(:not_found)
       end
 
       it 'does not list the staging events' do
-        get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json)
+        get project_cycle_analytics_staging_path(project, format: :json)
 
         expect(response).to have_http_status(:not_found)
       end
 
       it 'lists the issue events' do
-        get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json)
+        get project_cycle_analytics_issue_path(project, format: :json)
 
         expect(response).to have_http_status(:ok)
       end
diff --git a/spec/serializers/deploy_key_entity_spec.rb b/spec/serializers/deploy_key_entity_spec.rb
index ed89fccc3d0ab9e7d51e747b12ae1f330eb76457..9620f9665cf115b5be61156fecc2b95233b1ffcb 100644
--- a/spec/serializers/deploy_key_entity_spec.rb
+++ b/spec/serializers/deploy_key_entity_spec.rb
@@ -29,7 +29,7 @@ describe DeployKeyEntity do
           {
             id: project.id,
             name: project.name,
-            full_path: namespace_project_path(project.namespace, project),
+            full_path: project_path(project),
             full_name: project.full_name
           }
         ]
diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb
index 8d3dafafab2932557f794516b502dd21d41e6b8d..e35e4c1d6314e5bc75078b215bfac053d39657fa 100644
--- a/spec/services/system_note_service_spec.rb
+++ b/spec/services/system_note_service_spec.rb
@@ -807,7 +807,7 @@ describe SystemNoteService, services: true do
             body: hash_including(
               GlobalID: "GitLab",
               object: {
-                url: namespace_project_commit_url(project.namespace, project, commit),
+                url: project_commit_url(project, commit),
                 title: "GitLab: Mentioned on commit - #{commit.title}",
                 icon: { title: "GitLab", url16x16: "https://gitlab.com/favicon.ico" },
                 status: { resolved: false }
@@ -833,7 +833,7 @@ describe SystemNoteService, services: true do
             body: hash_including(
               GlobalID: "GitLab",
               object: {
-                url: namespace_project_issue_url(project.namespace, project, issue),
+                url: project_issue_url(project, issue),
                 title: "GitLab: Mentioned on issue - #{issue.title}",
                 icon: { title: "GitLab", url16x16: "https://gitlab.com/favicon.ico" },
                 status: { resolved: false }
@@ -859,7 +859,7 @@ describe SystemNoteService, services: true do
             body: hash_including(
               GlobalID: "GitLab",
               object: {
-                url: namespace_project_snippet_url(project.namespace, project, snippet),
+                url: project_snippet_url(project, snippet),
                 title: "GitLab: Mentioned on snippet - #{snippet.title}",
                 icon: { title: "GitLab", url16x16: "https://gitlab.com/favicon.ico" },
                 status: { resolved: false }
@@ -1098,7 +1098,7 @@ describe SystemNoteService, services: true do
 
       diff_id = merge_request.merge_request_diff.id
       line_code = change_position.line_code(project.repository)
-      expect(subject.note).to include(diffs_namespace_project_merge_request_url(project.namespace, project, merge_request, diff_id: diff_id, anchor: line_code))
+      expect(subject.note).to include(diffs_project_merge_request_url(project, merge_request, diff_id: diff_id, anchor: line_code))
     end
   end
 end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index fdef6fd5221f970390f9b61ab1f6a0c5129fbd77..3e90a642d56974dd745185c44c9fea1820449773 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -57,7 +57,7 @@ RSpec.configure do |config|
   config.include StubGitlabCalls
   config.include StubGitlabData
   config.include ApiHelpers, :api
-  config.include Rails.application.routes.url_helpers, type: :routing
+  config.include Gitlab::Routing.url_helpers, type: :routing
   config.include MigrationsHelpers, :migration
 
   config.infer_spec_type_from_file_location!
diff --git a/spec/support/issue_helpers.rb b/spec/support/issue_helpers.rb
index 8524179374334dc15ab84ea4243c044877718d16..ffd72515f37ea4eb4164eec641e7adee72ef0d33 100644
--- a/spec/support/issue_helpers.rb
+++ b/spec/support/issue_helpers.rb
@@ -1,6 +1,6 @@
 module IssueHelpers
   def visit_issues(project, opts = {})
-    visit namespace_project_issues_path project.namespace, project, opts
+    visit project_issues_path project, opts
   end
 
   def first_issue
diff --git a/spec/support/merge_request_helpers.rb b/spec/support/merge_request_helpers.rb
index 326b85eabd01ab5a300c66256e54bf5ac8b0987b..772adff4626c941b9657c8b7a293e56472c775ad 100644
--- a/spec/support/merge_request_helpers.rb
+++ b/spec/support/merge_request_helpers.rb
@@ -1,6 +1,6 @@
 module MergeRequestHelpers
   def visit_merge_requests(project, opts = {})
-    visit namespace_project_merge_requests_path project.namespace, project, opts
+    visit project_merge_requests_path project, opts
   end
 
   def first_merge_request
diff --git a/spec/support/protected_tags/access_control_ce_shared_examples.rb b/spec/support/protected_tags/access_control_ce_shared_examples.rb
index 1d11512ef82e06da41a2464c4c1a8b9e162061a4..421a51fc3360a72b573936d98f99503ab0769518 100644
--- a/spec/support/protected_tags/access_control_ce_shared_examples.rb
+++ b/spec/support/protected_tags/access_control_ce_shared_examples.rb
@@ -1,7 +1,7 @@
 RSpec.shared_examples "protected tags > access control > CE" do
   ProtectedTag::CreateAccessLevel.human_access_levels.each do |(access_type_id, access_type_name)|
     it "allows creating protected tags that #{access_type_name} can create" do
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
 
       set_protected_tag_name('master')
 
@@ -22,7 +22,7 @@ RSpec.shared_examples "protected tags > access control > CE" do
     end
 
     it "allows updating protected tags so that #{access_type_name} can create them" do
-      visit namespace_project_protected_tags_path(project.namespace, project)
+      visit project_protected_tags_path(project)
 
       set_protected_tag_name('master')
 
diff --git a/spec/support/routing_helpers.rb b/spec/support/routing_helpers.rb
new file mode 100644
index 0000000000000000000000000000000000000000..af1f4760804d0e50f5ee41bb40576e53af1861f1
--- /dev/null
+++ b/spec/support/routing_helpers.rb
@@ -0,0 +1,3 @@
+RSpec.configure do |config|
+  config.include GitlabRoutingHelper
+end
diff --git a/spec/support/shared_examples/features/protected_branches_access_control_ce.rb b/spec/support/shared_examples/features/protected_branches_access_control_ce.rb
index b6341127a76aa661c4cd45306428f8300e81601a..66e598e2691a6b5b34fccdaae421cdae761a1218 100644
--- a/spec/support/shared_examples/features/protected_branches_access_control_ce.rb
+++ b/spec/support/shared_examples/features/protected_branches_access_control_ce.rb
@@ -1,7 +1,7 @@
 shared_examples "protected branches > access control > CE" do
   ProtectedBranch::PushAccessLevel.human_access_levels.each do |(access_type_id, access_type_name)|
     it "allows creating protected branches that #{access_type_name} can push to" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
 
       set_protected_branch_name('master')
 
@@ -21,7 +21,7 @@ shared_examples "protected branches > access control > CE" do
     end
 
     it "allows updating protected branches so that #{access_type_name} can push to them" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
 
       set_protected_branch_name('master')
 
@@ -46,7 +46,7 @@ shared_examples "protected branches > access control > CE" do
 
   ProtectedBranch::MergeAccessLevel.human_access_levels.each do |(access_type_id, access_type_name)|
     it "allows creating protected branches that #{access_type_name} can merge to" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
 
       set_protected_branch_name('master')
 
@@ -66,7 +66,7 @@ shared_examples "protected branches > access control > CE" do
     end
 
     it "allows updating protected branches so that #{access_type_name} can merge to them" do
-      visit namespace_project_protected_branches_path(project.namespace, project)
+      visit project_protected_branches_path(project)
 
       set_protected_branch_name('master')
 
diff --git a/spec/views/ci/status/_badge.html.haml_spec.rb b/spec/views/ci/status/_badge.html.haml_spec.rb
index 72323da283834829563dfcf735495781fa346b9d..6a4738ba44393723c8bf200b4fbcb1e82ed4ae32 100644
--- a/spec/views/ci/status/_badge.html.haml_spec.rb
+++ b/spec/views/ci/status/_badge.html.haml_spec.rb
@@ -16,8 +16,7 @@ describe 'ci/status/_badge', :view do
       end
 
       it 'has link to build details page' do
-        details_path = namespace_project_job_path(
-          project.namespace, project, build)
+        details_path = project_job_path(project, build)
 
         render_status(build)
 
diff --git a/spec/views/projects/merge_requests/_commits.html.haml_spec.rb b/spec/views/projects/merge_requests/_commits.html.haml_spec.rb
index 3e17fe2104b6d0fe410b0891468cdceb3ef70536..98c7de9b709fbcf4cbdcc0f9167e7be4b818a487 100644
--- a/spec/views/projects/merge_requests/_commits.html.haml_spec.rb
+++ b/spec/views/projects/merge_requests/_commits.html.haml_spec.rb
@@ -25,10 +25,7 @@ describe 'projects/merge_requests/_commits.html.haml' do
     render
 
     commit = source_project.commit(merge_request.source_branch)
-    href = namespace_project_commit_path(
-      source_project.namespace,
-      source_project,
-      commit)
+    href = project_commit_path(source_project, commit)
 
     expect(rendered).to have_link(Commit.truncate_sha(commit.sha), href: href)
   end