diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb
index ab9aa65f7b98aa88b14bc1213917831815d1b0f6..33fe3c73822673c9503595d48124e88036647afc 100644
--- a/spec/controllers/admin/users_controller_spec.rb
+++ b/spec/controllers/admin/users_controller_spec.rb
@@ -39,7 +39,7 @@ describe Admin::UsersController do
         user.ldap_block
       end
 
-      it 'will not unblock user' do
+      it 'does not unblock user' do
         put :unblock, id: user.username
         user.reload
         expect(user.blocked?).to be_truthy
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 8bd210cbc3dd4a5a4c095d681fd8f5070737e739..98e912f000cffea9e041a8695f9fc12f20984b38 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -5,7 +5,7 @@ describe ApplicationController do
     let(:user) { create(:user) }
     let(:controller) { ApplicationController.new }
 
-    it 'should redirect if the user is over their password expiry' do
+    it 'redirects if the user is over their password expiry' do
       user.password_expires_at = Time.new(2002)
       expect(user.ldap_user?).to be_falsey
       allow(controller).to receive(:current_user).and_return(user)
@@ -14,7 +14,7 @@ describe ApplicationController do
       controller.send(:check_password_expiration)
     end
 
-    it 'should not redirect if the user is under their password expiry' do
+    it 'does not redirect if the user is under their password expiry' do
       user.password_expires_at = Time.now + 20010101
       expect(user.ldap_user?).to be_falsey
       allow(controller).to receive(:current_user).and_return(user)
@@ -22,7 +22,7 @@ describe ApplicationController do
       controller.send(:check_password_expiration)
     end
 
-    it 'should not redirect if the user is over their password expiry but they are an ldap user' do
+    it 'does not redirect if the user is over their password expiry but they are an ldap user' do
       user.password_expires_at = Time.new(2002)
       allow(user).to receive(:ldap_user?).and_return(true)
       allow(controller).to receive(:current_user).and_return(user)
diff --git a/spec/controllers/groups/avatars_controller_spec.rb b/spec/controllers/groups/avatars_controller_spec.rb
index 91d639218e59e263e378fb9ecca081ec5b23229d..506aeee7d2a34e7918a8e0d8e2ecbeadb764f164 100644
--- a/spec/controllers/groups/avatars_controller_spec.rb
+++ b/spec/controllers/groups/avatars_controller_spec.rb
@@ -9,7 +9,7 @@ describe Groups::AvatarsController do
     sign_in(user)
   end
 
-  it 'destroy should remove avatar from DB' do
+  it 'removes avatar from DB calling destroy' do
     delete :destroy, group_id: group.path
     @group = assigns(:group)
     expect(@group.avatar.present?).to be_falsey
diff --git a/spec/controllers/groups/milestones_controller_spec.rb b/spec/controllers/groups/milestones_controller_spec.rb
index b0793cb1655280f3c8b22cf93f87dd180b1766b2..8c52f615b8ba06076e11ba44d56882bbe39a47ae 100644
--- a/spec/controllers/groups/milestones_controller_spec.rb
+++ b/spec/controllers/groups/milestones_controller_spec.rb
@@ -15,7 +15,7 @@ describe Groups::MilestonesController do
   end
 
   describe "#create" do
-    it "should create group milestone with Chinese title" do
+    it "creates group milestone with Chinese title" do
       post :create,
            group_id: group.id,
            milestone: { project_ids: [project.id, project2.id], title: title }
diff --git a/spec/controllers/profiles/avatars_controller_spec.rb b/spec/controllers/profiles/avatars_controller_spec.rb
index ad5855df0a433eadd70ae0a74db6435a1cb0cc6d..4fa0462ccdfbfdf18b3146f1f7dbc3161255fbe3 100644
--- a/spec/controllers/profiles/avatars_controller_spec.rb
+++ b/spec/controllers/profiles/avatars_controller_spec.rb
@@ -8,7 +8,7 @@ describe Profiles::AvatarsController do
     controller.instance_variable_set(:@user, user)
   end
 
-  it 'destroy should remove avatar from DB' do
+  it 'removes avatar from DB by calling destroy' do
     delete :destroy
     @user = assigns(:user)
     expect(@user.avatar.present?).to be_falsey
diff --git a/spec/controllers/profiles/keys_controller_spec.rb b/spec/controllers/profiles/keys_controller_spec.rb
index 3a82083717ff07833ba8d954bde6cd24f1bcd76f..6bcfae0fc13d912c96ebd76d0562bf4bfad4aae5 100644
--- a/spec/controllers/profiles/keys_controller_spec.rb
+++ b/spec/controllers/profiles/keys_controller_spec.rb
@@ -6,7 +6,7 @@ describe Profiles::KeysController do
   describe '#new' do
     before { sign_in(user) }
 
-    it 'redirect to #index' do
+    it 'redirects to #index' do
       get :new
 
       expect(response).to redirect_to(profile_keys_path)
@@ -15,7 +15,7 @@ describe Profiles::KeysController do
 
   describe "#get_keys" do
     describe "non existant user" do
-      it "should generally not work" do
+      it "does not generally work" do
         get :get_keys, username: 'not-existent'
 
         expect(response).not_to be_success
@@ -23,19 +23,19 @@ describe Profiles::KeysController do
     end
 
     describe "user with no keys" do
-      it "should generally work" do
+      it "does generally work" do
         get :get_keys, username: user.username
 
         expect(response).to be_success
       end
 
-      it "should render all keys separated with a new line" do
+      it "renders all keys separated with a new line" do
         get :get_keys, username: user.username
 
         expect(response.body).to eq("")
       end
 
-      it "should respond with text/plain content type" do
+      it "responds with text/plain content type" do
         get :get_keys, username: user.username
         expect(response.content_type).to eq("text/plain")
       end
@@ -47,13 +47,13 @@ describe Profiles::KeysController do
         user.keys << create(:another_key)
       end
 
-      it "should generally work" do
+      it "does generally work" do
         get :get_keys, username: user.username
 
         expect(response).to be_success
       end
 
-      it "should render all keys separated with a new line" do
+      it "renders all keys separated with a new line" do
         get :get_keys, username: user.username
 
         expect(response.body).not_to eq("")
@@ -65,13 +65,13 @@ describe Profiles::KeysController do
         expect(response.body).to match(/AQDmTillFzNTrrGgwaCKaSj/)
       end
 
-      it "should not render the comment of the key" do
+      it "does not render the comment of the key" do
         get :get_keys, username: user.username
 
         expect(response.body).not_to match(/dummy@gitlab.com/)
       end
 
-      it "should respond with text/plain content type" do
+      it "responds with text/plain content type" do
         get :get_keys, username: user.username
         expect(response.content_type).to eq("text/plain")
       end
diff --git a/spec/controllers/projects/avatars_controller_spec.rb b/spec/controllers/projects/avatars_controller_spec.rb
index 4d724ca9ed0175624b18a7460df5487147493bb1..f5ea097af8b5a22fb67690d93a4150c3da0ce4f2 100644
--- a/spec/controllers/projects/avatars_controller_spec.rb
+++ b/spec/controllers/projects/avatars_controller_spec.rb
@@ -10,7 +10,7 @@ describe Projects::AvatarsController do
     controller.instance_variable_set(:@project, project)
   end
 
-  it 'destroy should remove avatar from DB' do
+  it 'removes avatar from DB by calling destroy' do
     delete :destroy, namespace_id: project.namespace.id, project_id: project.id
     expect(project.avatar.present?).to be_falsey
     expect(project).to be_valid
diff --git a/spec/controllers/projects/commit_controller_spec.rb b/spec/controllers/projects/commit_controller_spec.rb
index 940019b708b6e12b08d3c33fd1df99dd377a54b4..7e440193d7be1e7a463117b5850a1383d201f02e 100644
--- a/spec/controllers/projects/commit_controller_spec.rb
+++ b/spec/controllers/projects/commit_controller_spec.rb
@@ -47,25 +47,25 @@ describe Projects::CommitController do
     end
 
     shared_examples "export as" do |format|
-      it "should generally work" do
+      it "does generally work" do
         go(id: commit.id, format: format)
 
         expect(response).to be_success
       end
 
-      it "should generate it" do
+      it "generates it" do
         expect_any_instance_of(Commit).to receive(:"to_#{format}")
 
         go(id: commit.id, format: format)
       end
 
-      it "should render it" do
+      it "renders it" do
         go(id: commit.id, format: format)
 
         expect(response.body).to eq(commit.send(:"to_#{format}"))
       end
 
-      it "should not escape Html" do
+      it "does not escape Html" do
         allow_any_instance_of(Commit).to receive(:"to_#{format}").
           and_return('HTML entities &<>" ')
 
@@ -88,7 +88,7 @@ describe Projects::CommitController do
         expect(response.body).to start_with("diff --git")
       end
 
-      it "should really only be a git diff without whitespace changes" do
+      it "is only be a git diff without whitespace changes" do
         go(id: '66eceea0db202bb39c4e445e8ca28689645366c5', format: format, w: 1)
 
         expect(response.body).to start_with("diff --git")
@@ -103,13 +103,13 @@ describe Projects::CommitController do
       include_examples "export as", :patch
       let(:format) { :patch }
 
-      it "should really be a git email patch" do
+      it "is a git email patch" do
         go(id: commit.id, format: format)
 
         expect(response.body).to start_with("From #{commit.id}")
       end
 
-      it "should contain a git diff" do
+      it "contains a git diff" do
         go(id: commit.id, format: format)
 
         expect(response.body).to match(/^diff --git/)
@@ -147,7 +147,7 @@ describe Projects::CommitController do
 
   describe 'POST revert' do
     context 'when target branch is not provided' do
-      it 'should render the 404 page' do
+      it 'renders the 404 page' do
         post(:revert,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
@@ -159,7 +159,7 @@ describe Projects::CommitController do
     end
 
     context 'when the revert was successful' do
-      it 'should redirect to the commits page' do
+      it 'redirects to the commits page' do
         post(:revert,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
@@ -180,7 +180,7 @@ describe Projects::CommitController do
             id: commit.id)
       end
 
-      it 'should redirect to the commit page' do
+      it 'redirects to the commit page' do
         # Reverting a commit that has been already reverted.
         post(:revert,
             namespace_id: project.namespace.to_param,
@@ -196,7 +196,7 @@ describe Projects::CommitController do
 
   describe 'POST cherry_pick' do
     context 'when target branch is not provided' do
-      it 'should render the 404 page' do
+      it 'renders the 404 page' do
         post(:cherry_pick,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
@@ -208,7 +208,7 @@ describe Projects::CommitController do
     end
 
     context 'when the cherry-pick was successful' do
-      it 'should redirect to the commits page' do
+      it 'redirects to the commits page' do
         post(:cherry_pick,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
@@ -229,7 +229,7 @@ describe Projects::CommitController do
             id: master_pickable_commit.id)
       end
 
-      it 'should redirect to the commit page' do
+      it 'redirects to the commit page' do
         # Cherry-picking a commit that has been already cherry-picked.
         post(:cherry_pick,
             namespace_id: project.namespace.to_param,
diff --git a/spec/controllers/projects/commits_controller_spec.rb b/spec/controllers/projects/commits_controller_spec.rb
index 7d8089c4bc60dc5970e327f480bb077802578b9a..2518a48e336429b268f65d82bdabb3177db3ada1 100644
--- a/spec/controllers/projects/commits_controller_spec.rb
+++ b/spec/controllers/projects/commits_controller_spec.rb
@@ -11,7 +11,7 @@ describe Projects::CommitsController do
 
   describe "GET show" do
     context "as atom feed" do
-      it "should render as atom" do
+      it "renders as atom" do
         get(:show,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb
index ed4cc36de58d70f511cb94e3e6d089cf52897578..7a57801c437c0e02ac4db39d356ddd8131ea33ab 100644
--- a/spec/controllers/projects/compare_controller_spec.rb
+++ b/spec/controllers/projects/compare_controller_spec.rb
@@ -11,7 +11,7 @@ describe Projects::CompareController do
     project.team << [user, :master]
   end
 
-  it 'compare should show some diffs' do
+  it 'compare shows some diffs' do
     get(:show,
         namespace_id: project.namespace.to_param,
         project_id: project.to_param,
@@ -23,7 +23,7 @@ describe Projects::CompareController do
     expect(assigns(:commits).length).to be >= 1
   end
 
-  it 'compare should show some diffs with ignore whitespace change option' do
+  it 'compare shows some diffs with ignore whitespace change option' do
     get(:show,
         namespace_id: project.namespace.to_param,
         project_id: project.to_param,
@@ -41,7 +41,7 @@ describe Projects::CompareController do
   end
 
   describe 'non-existent refs' do
-    it 'invalid source ref' do
+    it 'uses invalid source ref' do
       get(:show,
           namespace_id: project.namespace.to_param,
           project_id: project.to_param,
@@ -53,7 +53,7 @@ describe Projects::CompareController do
       expect(assigns(:commits)).to eq([])
     end
 
-    it 'invalid target ref' do
+    it 'uses invalid target ref' do
       get(:show,
           namespace_id: project.namespace.to_param,
           project_id: project.to_param,
diff --git a/spec/controllers/projects/forks_controller_spec.rb b/spec/controllers/projects/forks_controller_spec.rb
index f66bcb8099cb37b8c00fa4f825c2f15177a66bad..ac3469cb8a9da2e4039450810000f87d8d0a8b6d 100644
--- a/spec/controllers/projects/forks_controller_spec.rb
+++ b/spec/controllers/projects/forks_controller_spec.rb
@@ -16,7 +16,7 @@ describe Projects::ForksController do
     context 'when fork is public' do
       before { forked_project.update_attribute(:visibility_level, Project::PUBLIC) }
 
-      it 'should be visible for non logged in users' do
+      it 'is visible for non logged in users' do
         get_forks
 
         expect(assigns[:forks]).to be_present
@@ -28,7 +28,7 @@ describe Projects::ForksController do
         forked_project.update_attributes(visibility_level: Project::PRIVATE, group: group)
       end
 
-      it 'should not be visible for non logged in users' do
+      it 'is not be visible for non logged in users' do
         get_forks
 
         expect(assigns[:forks]).to be_blank
@@ -38,7 +38,7 @@ describe Projects::ForksController do
         before { sign_in(project.creator) }
 
         context 'when user is not a Project member neither a group member' do
-          it 'should not see the Project listed' do
+          it 'does not see the Project listed' do
             get_forks
 
             expect(assigns[:forks]).to be_blank
@@ -48,7 +48,7 @@ describe Projects::ForksController do
         context 'when user is a member of the Project' do
           before { forked_project.team << [project.creator, :developer] }
 
-          it 'should see the project listed' do
+          it 'sees the project listed' do
             get_forks
 
             expect(assigns[:forks]).to be_present
@@ -58,7 +58,7 @@ describe Projects::ForksController do
         context 'when user is a member of the Group' do
           before { forked_project.group.add_developer(project.creator) }
 
-          it 'should see the project listed' do
+          it 'sees the project listed' do
             get_forks
 
             expect(assigns[:forks]).to be_present
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
index ec820de3d09a330b7a22595e5d05fbf4dbb63b60..b6a0276846cacbc8e7f8f046b91a3b4fdeccaa56 100644
--- a/spec/controllers/projects/issues_controller_spec.rb
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -30,7 +30,7 @@ describe Projects::IssuesController do
         expect(response).to have_http_status(200)
       end
 
-      it "return 301 if request path doesn't match project path" do
+      it "returns 301 if request path doesn't match project path" do
         get :index, namespace_id: project.namespace.path, project_id: project.path.upcase
 
         expect(response).to redirect_to(namespace_project_issues_path(project.namespace, project))
@@ -119,21 +119,21 @@ describe Projects::IssuesController do
     let!(:request_forgery_timing_attack) { create(:issue, :confidential, project: project, assignee: assignee) }
 
     describe 'GET #index' do
-      it 'should not list confidential issues for guests' do
+      it 'does not list confidential issues for guests' do
         sign_out(:user)
         get_issues
 
         expect(assigns(:issues)).to eq [issue]
       end
 
-      it 'should not list confidential issues for non project members' do
+      it 'does not list confidential issues for non project members' do
         sign_in(non_member)
         get_issues
 
         expect(assigns(:issues)).to eq [issue]
       end
 
-      it 'should not list confidential issues for project members with guest role' do
+      it 'does not list confidential issues for project members with guest role' do
         sign_in(member)
         project.team << [member, :guest]
 
@@ -142,7 +142,7 @@ describe Projects::IssuesController do
         expect(assigns(:issues)).to eq [issue]
       end
 
-      it 'should list confidential issues for author' do
+      it 'lists confidential issues for author' do
         sign_in(author)
         get_issues
 
@@ -150,7 +150,7 @@ describe Projects::IssuesController do
         expect(assigns(:issues)).not_to include request_forgery_timing_attack
       end
 
-      it 'should list confidential issues for assignee' do
+      it 'lists confidential issues for assignee' do
         sign_in(assignee)
         get_issues
 
@@ -158,7 +158,7 @@ describe Projects::IssuesController do
         expect(assigns(:issues)).to include request_forgery_timing_attack
       end
 
-      it 'should list confidential issues for project members' do
+      it 'lists confidential issues for project members' do
         sign_in(member)
         project.team << [member, :developer]
 
@@ -168,7 +168,7 @@ describe Projects::IssuesController do
         expect(assigns(:issues)).to include request_forgery_timing_attack
       end
 
-      it 'should list confidential issues for admin' do
+      it 'lists confidential issues for admin' do
         sign_in(admin)
         get_issues
 
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index 1f6bc84dfe8d05c878e59dc6d1555e6ce3c422ad..69758494543085e94dd493877311407b40b3fec1 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -36,7 +36,7 @@ describe Projects::MergeRequestsController do
 
   describe "GET show" do
     shared_examples "export merge as" do |format|
-      it "should generally work" do
+      it "does generally work" do
         get(:show,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
@@ -46,7 +46,7 @@ describe Projects::MergeRequestsController do
         expect(response).to be_success
       end
 
-      it "should generate it" do
+      it "generates it" do
         expect_any_instance_of(MergeRequest).to receive(:"to_#{format}")
 
         get(:show,
@@ -56,7 +56,7 @@ describe Projects::MergeRequestsController do
             format: format)
       end
 
-      it "should render it" do
+      it "renders it" do
         get(:show,
             namespace_id: project.namespace.to_param,
             project_id: project.to_param,
@@ -66,7 +66,7 @@ describe Projects::MergeRequestsController do
         expect(response.body).to eq(merge_request.send(:"to_#{format}").to_s)
       end
 
-      it "should not escape Html" do
+      it "does not escape Html" do
         allow_any_instance_of(MergeRequest).to receive(:"to_#{format}").
           and_return('HTML entities &<>" ')
 
@@ -118,7 +118,7 @@ describe Projects::MergeRequestsController do
 
     context 'when filtering by opened state' do
       context 'with opened merge requests' do
-        it 'should list those merge requests' do
+        it 'lists those merge requests' do
           get_merge_requests
 
           expect(assigns(:merge_requests)).to include(merge_request)
@@ -131,7 +131,7 @@ describe Projects::MergeRequestsController do
           merge_request.reopen!
         end
 
-        it 'should list those merge requests' do
+        it 'lists those merge requests' do
           get_merge_requests
 
           expect(assigns(:merge_requests)).to include(merge_request)
diff --git a/spec/controllers/projects/milestones_controller_spec.rb b/spec/controllers/projects/milestones_controller_spec.rb
index d173bb350f1c66c0615d3114ffa5a4290e37ce87..4e3ef5dc6fa7f303c1c5c1558cf69f14a9562006 100644
--- a/spec/controllers/projects/milestones_controller_spec.rb
+++ b/spec/controllers/projects/milestones_controller_spec.rb
@@ -14,7 +14,7 @@ describe Projects::MilestonesController do
   end
 
   describe "#destroy" do
-    it "should remove milestone" do
+    it "removes milestone" do
       expect(issue.milestone_id).to eq(milestone.id)
 
       delete :destroy, namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid, format: :js
diff --git a/spec/controllers/projects/project_members_controller_spec.rb b/spec/controllers/projects/project_members_controller_spec.rb
index 5e2a8cf38490ba81d46d6e900ecac8ca0da5be31..19d05aef0a6fcb78ed8a86951c0e8eb8570452ac 100644
--- a/spec/controllers/projects/project_members_controller_spec.rb
+++ b/spec/controllers/projects/project_members_controller_spec.rb
@@ -167,7 +167,7 @@ describe Projects::ProjectMembersController do
           sign_in(user)
         end
 
-        it 'cannot remove himself from the project' do
+        it 'does not remove himself from the project' do
           delete :leave, namespace_id: project.namespace,
                          project_id: project
 
diff --git a/spec/controllers/projects/protected_branches_controller_spec.rb b/spec/controllers/projects/protected_branches_controller_spec.rb
index 596d8d34b7c9a69045afda7cbcee09635c230eed..da6112a13f7587ab365ef38b770dd1bfbd5ff12c 100644
--- a/spec/controllers/projects/protected_branches_controller_spec.rb
+++ b/spec/controllers/projects/protected_branches_controller_spec.rb
@@ -3,7 +3,7 @@ require('spec_helper')
 describe Projects::ProtectedBranchesController do
   describe "GET #index" do
     let(:project) { create(:project_empty_repo, :public) }
-    it "redirect empty repo to projects page" do
+    it "redirects empty repo to projects page" do
       get(:index, namespace_id: project.namespace.to_param, project_id: project.to_param)
     end
   end
diff --git a/spec/controllers/projects/raw_controller_spec.rb b/spec/controllers/projects/raw_controller_spec.rb
index 48f799d8ca1f4cd1cb0579ace17e0d5a3ed437f3..04bd9a01f7b71f259082f7569072b90a4fe544a6 100644
--- a/spec/controllers/projects/raw_controller_spec.rb
+++ b/spec/controllers/projects/raw_controller_spec.rb
@@ -24,7 +24,7 @@ describe Projects::RawController do
     context 'image header' do
       let(:id) { 'master/files/images/6049019_460s.jpg' }
 
-      it 'set image content type header' do
+      it 'sets image content type header' do
         get(:show,
             namespace_id: public_project.namespace.to_param,
             project_id: public_project.to_param,
diff --git a/spec/controllers/projects/services_controller_spec.rb b/spec/controllers/projects/services_controller_spec.rb
index ccd8c741c832427ade04df1b95499031c2ba8700..cccd492ef0672cd75508fc4024f5edab57657937 100644
--- a/spec/controllers/projects/services_controller_spec.rb
+++ b/spec/controllers/projects/services_controller_spec.rb
@@ -19,7 +19,7 @@ describe Projects::ServicesController do
 
     describe "#test" do
       context 'success' do
-        it "should redirect and show success message" do
+        it "redirects and show success message" do
           expect(service).to receive(:test).and_return({ success: true, result: 'done' })
           get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
           expect(response.status).to redirect_to('/')
@@ -28,7 +28,7 @@ describe Projects::ServicesController do
       end
 
       context 'failure' do
-        it "should redirect and show failure message" do
+        it "redirects and show failure message" do
           expect(service).to receive(:test).and_return({ success: false, result: 'Bad test' })
           get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
           expect(response.status).to redirect_to('/')
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index 3edce4d339c53979daf98e29fe7cdca0f4208f34..ffe0641ddd78932daed3f78012dfc1094c4af861 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -128,7 +128,7 @@ describe ProjectsController do
     context "when the url contains .atom" do
       let(:public_project_with_dot_atom) { build(:project, :public, name: 'my.atom', path: 'my.atom') }
 
-      it 'expect an error creating the project' do
+      it 'expects an error creating the project' do
         expect(public_project_with_dot_atom).not_to be_valid
       end
     end
@@ -222,7 +222,7 @@ describe ProjectsController do
           create(:forked_project_link, forked_to_project: project_fork)
         end
 
-        it 'should remove fork from project' do
+        it 'removes fork from project' do
           delete(:remove_fork,
               namespace_id: project_fork.namespace.to_param,
               id: project_fork.to_param, format: :js)
@@ -236,7 +236,7 @@ describe ProjectsController do
       context 'when project not forked' do
         let(:unforked_project) { create(:project, namespace: user.namespace) }
 
-        it 'should do nothing if project was not forked' do
+        it 'does nothing if project was not forked' do
           delete(:remove_fork,
               namespace_id: unforked_project.namespace.to_param,
               id: unforked_project.to_param, format: :js)
@@ -256,7 +256,7 @@ describe ProjectsController do
   end
 
   describe "GET refs" do
-    it "should get a list of branches and tags" do
+    it "gets a list of branches and tags" do
       get :refs, namespace_id: public_project.namespace.path, id: public_project.path
 
       parsed_body = JSON.parse(response.body)
@@ -265,7 +265,7 @@ describe ProjectsController do
       expect(parsed_body["Commits"]).to be_nil
     end
 
-    it "should get a list of branches, tags and commits" do
+    it "gets a list of branches, tags and commits" do
       get :refs, namespace_id: public_project.namespace.path, id: public_project.path, ref: "123456"
 
       parsed_body = JSON.parse(response.body)
diff --git a/spec/features/admin/admin_abuse_reports_spec.rb b/spec/features/admin/admin_abuse_reports_spec.rb
index 16baf7e951625f5d0e093fbfc67a8b6722beba3c..c1731e6414a80c2efed91d85f133cf694263e8e3 100644
--- a/spec/features/admin/admin_abuse_reports_spec.rb
+++ b/spec/features/admin/admin_abuse_reports_spec.rb
@@ -11,7 +11,7 @@ describe "Admin::AbuseReports", feature: true, js: true  do
       end
 
       describe 'in the abuse report view' do
-        it "should present a link to the user's profile" do
+        it "presents a link to the user's profile" do
           visit admin_abuse_reports_path
 
           expect(page).to have_link user.name, href: user_path(user)
@@ -19,7 +19,7 @@ describe "Admin::AbuseReports", feature: true, js: true  do
       end
 
       describe 'in the profile page of the user' do
-        it 'should show a link to the admin view of the user' do
+        it 'shows a link to the admin view of the user' do
           visit user_path(user)
 
           expect(page).to have_link '', href: admin_user_path(user)
diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb
index 7964951ae99c66996d496226ad272124d457167d..b3ce72b1452ebb67b62167ef88ad26377dab6a46 100644
--- a/spec/features/admin/admin_hooks_spec.rb
+++ b/spec/features/admin/admin_hooks_spec.rb
@@ -9,7 +9,7 @@ describe "Admin::Hooks", feature: true do
   end
 
   describe "GET /admin/hooks" do
-    it "should be ok" do
+    it "is ok" do
       visit admin_root_path
 
       page.within ".layout-nav" do
@@ -19,7 +19,7 @@ describe "Admin::Hooks", feature: true do
       expect(current_path).to eq(admin_hooks_path)
     end
 
-    it "should have hooks list" do
+    it "has hooks list" do
       visit admin_hooks_path
       expect(page).to have_content(@system_hook.url)
     end
@@ -33,7 +33,7 @@ describe "Admin::Hooks", feature: true do
       expect { click_button "Add System Hook" }.to change(SystemHook, :count).by(1)
     end
 
-    it "should open new hook popup" do
+    it "opens new hook popup" do
       expect(current_path).to eq(admin_hooks_path)
       expect(page).to have_content(@url)
     end
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
index 101d955d693c74d1ee29497fa0df828b03c37560..30ded9202a4975f16a42a1b0e8503dc192d72517 100644
--- a/spec/features/admin/admin_projects_spec.rb
+++ b/spec/features/admin/admin_projects_spec.rb
@@ -11,11 +11,11 @@ describe "Admin::Projects", feature: true  do
       visit admin_namespaces_projects_path
     end
 
-    it "should be ok" do
+    it "is ok" do
       expect(current_path).to eq(admin_namespaces_projects_path)
     end
 
-    it "should have projects list" do
+    it "has projects list" do
       expect(page).to have_content(@project.name)
     end
   end
@@ -26,7 +26,7 @@ describe "Admin::Projects", feature: true  do
       click_link "#{@project.name}"
     end
 
-    it "should have project info" do
+    it "has project info" do
       expect(page).to have_content(@project.path)
       expect(page).to have_content(@project.name)
     end
diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb
index 767504df251e172e583e5bd18fac0d009bedbf04..cb3191dfdde4c83e5bfd5e1daf8814532880564b 100644
--- a/spec/features/admin/admin_users_spec.rb
+++ b/spec/features/admin/admin_users_spec.rb
@@ -8,11 +8,11 @@ describe "Admin::Users", feature: true  do
       visit admin_users_path
     end
 
-    it "should be ok" do
+    it "is ok" do
       expect(current_path).to eq(admin_users_path)
     end
 
-    it "should have users list" do
+    it "has users list" do
       expect(page).to have_content(@user.email)
       expect(page).to have_content(@user.name)
     end
@@ -66,11 +66,11 @@ describe "Admin::Users", feature: true  do
       fill_in "user_email", with: "bigbang@mail.com"
     end
 
-    it "should create new user" do
+    it "creates new user" do
       expect { click_button "Create user" }.to change {User.count}.by(1)
     end
 
-    it "should apply defaults to user" do
+    it "applies defaults to user" do
       click_button "Create user"
       user = User.find_by(username: 'bang')
       expect(user.projects_limit).
@@ -79,20 +79,20 @@ describe "Admin::Users", feature: true  do
         to eq(Gitlab.config.gitlab.default_can_create_group)
     end
 
-    it "should create user with valid data" do
+    it "creates user with valid data" do
       click_button "Create user"
       user = User.find_by(username: 'bang')
       expect(user.name).to eq('Big Bang')
       expect(user.email).to eq('bigbang@mail.com')
     end
 
-    it "should call send mail" do
+    it "calls send mail" do
       expect_any_instance_of(NotificationService).to receive(:new_user)
 
       click_button "Create user"
     end
 
-    it "should send valid email to user with email & password" do
+    it "sends valid email to user with email & password" do
       perform_enqueued_jobs do
         click_button "Create user"
       end
@@ -106,7 +106,7 @@ describe "Admin::Users", feature: true  do
   end
 
   describe "GET /admin/users/:id" do
-    it "should have user info" do
+    it "has user info" do
       visit admin_users_path
       click_link @user.name
 
@@ -123,13 +123,13 @@ describe "Admin::Users", feature: true  do
           expect(page).to have_content('Impersonate')
         end
 
-        it 'should not show impersonate button for admin itself' do
+        it 'does not show impersonate button for admin itself' do
           visit admin_user_path(@user)
 
           expect(page).not_to have_content('Impersonate')
         end
 
-        it 'should not show impersonate button for blocked user' do
+        it 'does not show impersonate button for blocked user' do
           another_user.block
 
           visit admin_user_path(another_user)
@@ -153,7 +153,7 @@ describe "Admin::Users", feature: true  do
           expect(icon).not_to eql nil
         end
 
-        it 'can log out of impersonated user back to original user' do
+        it 'logs out of impersonated user back to original user' do
           find(:css, 'li.impersonation a').click
 
           expect(page.find(:css, '.header-user .profile-link')['data-user']).to eql(@user.username)
@@ -197,7 +197,7 @@ describe "Admin::Users", feature: true  do
       click_link "edit_user_#{@simple_user.id}"
     end
 
-    it "should have user edit page" do
+    it "has user edit page" do
       expect(page).to have_content('Name')
       expect(page).to have_content('Password')
     end
@@ -212,12 +212,12 @@ describe "Admin::Users", feature: true  do
         click_button "Save changes"
       end
 
-      it "should show page with  new data" do
+      it "shows page with  new data" do
         expect(page).to have_content('bigbang@mail.com')
         expect(page).to have_content('Big Bang')
       end
 
-      it "should change user entry" do
+      it "changes user entry" do
         @simple_user.reload
         expect(@simple_user.name).to eq('Big Bang')
         expect(@simple_user.is_admin?).to be_truthy
diff --git a/spec/features/atom/dashboard_spec.rb b/spec/features/atom/dashboard_spec.rb
index f81a3c117ff23df177f768c151f399eb26b2bdf5..746df36bb258992171f480987aaaf76970707bf5 100644
--- a/spec/features/atom/dashboard_spec.rb
+++ b/spec/features/atom/dashboard_spec.rb
@@ -5,7 +5,7 @@ describe "Dashboard Feed", feature: true  do
     let!(:user) { create(:user, name: "Jonh") }
 
     context "projects atom feed via private token" do
-      it "should render projects atom feed" do
+      it "renders projects atom feed" do
         visit dashboard_projects_path(:atom, private_token: user.private_token)
         expect(body).to have_selector('feed title')
       end
@@ -23,11 +23,11 @@ describe "Dashboard Feed", feature: true  do
         visit dashboard_projects_path(:atom, private_token: user.private_token)
       end
 
-      it "should have issue opened event" do
+      it "has issue opened event" do
         expect(body).to have_content("#{user.name} opened issue ##{issue.iid}")
       end
 
-      it "should have issue comment event" do
+      it "has issue comment event" do
         expect(body).
           to have_content("#{user.name} commented on issue ##{issue.iid}")
       end
diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb
index baa7814e96a017ab5cc74ae3c5a5e12586f14ab3..09c140868fb818bdbc5adb966081040ed09c15fd 100644
--- a/spec/features/atom/issues_spec.rb
+++ b/spec/features/atom/issues_spec.rb
@@ -9,7 +9,7 @@ describe 'Issues Feed', feature: true  do
     before { project.team << [user, :developer] }
 
     context 'when authenticated' do
-      it 'should render atom feed' do
+      it 'renders atom feed' do
         login_with user
         visit namespace_project_issues_path(project.namespace, project, :atom)
 
@@ -22,7 +22,7 @@ describe 'Issues Feed', feature: true  do
     end
 
     context 'when authenticated via private token' do
-      it 'should render atom feed' do
+      it 'renders atom feed' do
         visit namespace_project_issues_path(project.namespace, project, :atom,
                                             private_token: user.private_token)
 
diff --git a/spec/features/atom/users_spec.rb b/spec/features/atom/users_spec.rb
index 91704377a07a47c708fa95c5c7626019be94278f..a8833194421fca4eb355e158ad1c1a2cf8935aa9 100644
--- a/spec/features/atom/users_spec.rb
+++ b/spec/features/atom/users_spec.rb
@@ -5,7 +5,7 @@ describe "User Feed", feature: true  do
     let!(:user) { create(:user) }
 
     context 'user atom feed via private token' do
-      it "should render user atom feed" do
+      it "renders user atom feed" do
         visit user_path(user, :atom, private_token: user.private_token)
         expect(body).to have_selector('feed title')
       end
@@ -43,24 +43,24 @@ describe "User Feed", feature: true  do
         visit user_path(user, :atom, private_token: user.private_token)
       end
 
-      it 'should have issue opened event' do
+      it 'has issue opened event' do
         expect(body).to have_content("#{safe_name} opened issue ##{issue.iid}")
       end
 
-      it 'should have issue comment event' do
+      it 'has issue comment event' do
         expect(body).
           to have_content("#{safe_name} commented on issue ##{issue.iid}")
       end
 
-      it 'should have XHTML summaries in issue descriptions' do
+      it 'has XHTML summaries in issue descriptions' do
         expect(body).to match /we have a bug!<\/p>\n\n<hr ?\/>\n\n<p>I guess/
       end
 
-      it 'should have XHTML summaries in notes' do
+      it 'has XHTML summaries in notes' do
         expect(body).to match /Bug confirmed <img[^>]*\/>/
       end
 
-      it 'should have XHTML summaries in merge request descriptions' do
+      it 'has XHTML summaries in merge request descriptions' do
         expect(body).to match /Here is the fix: <\/p><div[^>]*><a[^>]*><img[^>]*\/><\/a><\/div>/
       end
     end
diff --git a/spec/features/ci_lint_spec.rb b/spec/features/ci_lint_spec.rb
index 30e29d9d5526545c8483d3fdc455e7f21ab75b7e..81077f4b00547fc52506a4e1f82239907388a3a3 100644
--- a/spec/features/ci_lint_spec.rb
+++ b/spec/features/ci_lint_spec.rb
@@ -17,7 +17,7 @@ describe 'CI Lint' do
         File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
       end
 
-      it 'Yaml parsing' do
+      it 'parses Yaml' do
         within "table" do
           expect(page).to have_content('Job - rspec')
           expect(page).to have_content('Job - spinach')
diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb
index 45e1a157a1f1bca31e79769d162695050e67d8b3..5910803df51f4f2c6541da76827fbe2f4cb8962f 100644
--- a/spec/features/commits_spec.rb
+++ b/spec/features/commits_spec.rb
@@ -52,7 +52,7 @@ describe 'Commits' do
             visit namespace_project_commits_path(project.namespace, project, :master)
           end
 
-          it 'should show build status' do
+          it 'shows build status' do
             page.within("//li[@id='commit-#{pipeline.short_sha}']") do
               expect(page).to have_css(".ci-status-link")
             end
diff --git a/spec/features/compare_spec.rb b/spec/features/compare_spec.rb
index c62556948e0faadd495b976288131ca1cf89264e..ca7f73e24cc864d9290cc2407c259b59d4ef4eb8 100644
--- a/spec/features/compare_spec.rb
+++ b/spec/features/compare_spec.rb
@@ -11,11 +11,11 @@ describe "Compare", js: true do
   end
 
   describe "branches" do
-    it "should pre-populate fields" do
+    it "pre-populates fields" do
       expect(page.find_field("from").value).to eq("master")
     end
 
-    it "should compare branches" do
+    it "compares branches" do
       fill_in "from", with: "fea"
       find("#from").click
 
@@ -28,7 +28,7 @@ describe "Compare", js: true do
   end
 
   describe "tags" do
-    it "should compare tags" do
+    it "compares tags" do
       fill_in "from", with: "v1.0"
       find("#from").click
 
diff --git a/spec/features/dashboard/label_filter_spec.rb b/spec/features/dashboard/label_filter_spec.rb
index 24e83d44010cb0bc7fdd511e0c30427447c14b91..4cff12de854a2da9a41f22d7a3717ee4653ea5e6 100644
--- a/spec/features/dashboard/label_filter_spec.rb
+++ b/spec/features/dashboard/label_filter_spec.rb
@@ -16,7 +16,7 @@ describe 'Dashboard > label filter', feature: true, js: true do
   end
 
   context 'duplicate labels' do
-    it 'should remove duplicate labels' do
+    it 'removes duplicate labels' do
       page.within('.labels-filter') do
         click_button 'Label'
       end
diff --git a/spec/features/dashboard_issues_spec.rb b/spec/features/dashboard_issues_spec.rb
index 39805da9d0bb3f8a35a6584d50cc34be7a4c0729..3fb1cb37544717b3a1c3747a546c6d056f52979b 100644
--- a/spec/features/dashboard_issues_spec.rb
+++ b/spec/features/dashboard_issues_spec.rb
@@ -16,7 +16,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do
       visit_issues
     end
 
-    it 'should show all issues with no milestone' do
+    it 'shows all issues with no milestone' do
       show_milestone_dropdown
 
       click_link 'No Milestone'
@@ -24,7 +24,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do
       expect(page).to have_selector('.issue', count: 1)
     end
 
-    it 'should show all issues with any milestone' do
+    it 'shows all issues with any milestone' do
       show_milestone_dropdown
 
       click_link 'Any Milestone'
@@ -32,7 +32,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do
       expect(page).to have_selector('.issue', count: 2)
     end
 
-    it 'should show all issues with the selected milestone' do
+    it 'shows all issues with the selected milestone' do
       show_milestone_dropdown
 
       page.within '.dropdown-content' do
diff --git a/spec/features/gitlab_flavored_markdown_spec.rb b/spec/features/gitlab_flavored_markdown_spec.rb
index a89ac09f23692e81866c942674255b137454359a..84d73d693bcfea5611df4683d955896e537d9b1f 100644
--- a/spec/features/gitlab_flavored_markdown_spec.rb
+++ b/spec/features/gitlab_flavored_markdown_spec.rb
@@ -23,25 +23,25 @@ describe "GitLab Flavored Markdown", feature: true do
   end
 
   describe "for commits" do
-    it "should render title in commits#index" do
+    it "renders title in commits#index" do
       visit namespace_project_commits_path(project.namespace, project, 'master', limit: 1)
 
       expect(page).to have_link(issue.to_reference)
     end
 
-    it "should render title in commits#show" do
+    it "renders title in commits#show" do
       visit namespace_project_commit_path(project.namespace, project, commit)
 
       expect(page).to have_link(issue.to_reference)
     end
 
-    it "should render description in commits#show" do
+    it "renders description in commits#show" do
       visit namespace_project_commit_path(project.namespace, project, commit)
 
       expect(page).to have_link(fred.to_reference)
     end
 
-    it "should render title in repositories#branches" do
+    it "renders title in repositories#branches" do
       visit namespace_project_branches_path(project.namespace, project)
 
       expect(page).to have_link(issue.to_reference)
@@ -62,19 +62,19 @@ describe "GitLab Flavored Markdown", feature: true do
                       description: "ask #{fred.to_reference} for details")
     end
 
-    it "should render subject in issues#index" do
+    it "renders subject in issues#index" do
       visit namespace_project_issues_path(project.namespace, project)
 
       expect(page).to have_link(@other_issue.to_reference)
     end
 
-    it "should render subject in issues#show" do
+    it "renders subject in issues#show" do
       visit namespace_project_issue_path(project.namespace, project, @issue)
 
       expect(page).to have_link(@other_issue.to_reference)
     end
 
-    it "should render details in issues#show" do
+    it "renders details in issues#show" do
       visit namespace_project_issue_path(project.namespace, project, @issue)
 
       expect(page).to have_link(fred.to_reference)
@@ -86,13 +86,13 @@ describe "GitLab Flavored Markdown", feature: true do
       @merge_request = create(:merge_request, source_project: project, target_project: project, title: "fix #{issue.to_reference}")
     end
 
-    it "should render title in merge_requests#index" do
+    it "renders title in merge_requests#index" do
       visit namespace_project_merge_requests_path(project.namespace, project)
 
       expect(page).to have_link(issue.to_reference)
     end
 
-    it "should render title in merge_requests#show" do
+    it "renders title in merge_requests#show" do
       visit namespace_project_merge_request_path(project.namespace, project, @merge_request)
 
       expect(page).to have_link(issue.to_reference)
@@ -107,19 +107,19 @@ describe "GitLab Flavored Markdown", feature: true do
                           description: "ask #{fred.to_reference} for details")
     end
 
-    it "should render title in milestones#index" do
+    it "renders title in milestones#index" do
       visit namespace_project_milestones_path(project.namespace, project)
 
       expect(page).to have_link(issue.to_reference)
     end
 
-    it "should render title in milestones#show" do
+    it "renders title in milestones#show" do
       visit namespace_project_milestone_path(project.namespace, project, @milestone)
 
       expect(page).to have_link(issue.to_reference)
     end
 
-    it "should render description in milestones#show" do
+    it "renders description in milestones#show" do
       visit namespace_project_milestone_path(project.namespace, project, @milestone)
 
       expect(page).to have_link(fred.to_reference)
diff --git a/spec/features/help_pages_spec.rb b/spec/features/help_pages_spec.rb
index 1e2306d7f5930b9f7c67ce0094195141b25878e6..e2101b333e23170003718cf079eec9f36bcc8c7d 100644
--- a/spec/features/help_pages_spec.rb
+++ b/spec/features/help_pages_spec.rb
@@ -5,7 +5,7 @@ describe 'Help Pages', feature: true do
     before do
       login_as :user
     end
-    it 'replace the variable $your_email with the email of the user' do
+    it 'replaces the variable $your_email with the email of the user' do
       visit help_page_path('ssh/README')
       expect(page).to have_content("ssh-keygen -t rsa -C \"#{@user.email}\"")
     end
diff --git a/spec/features/issues/award_emoji_spec.rb b/spec/features/issues/award_emoji_spec.rb
index 07a854ea01419177d76cb7664c2103f2a47a2846..6eb04cf74c523db554b8574e3eaab06ca8eb85de 100644
--- a/spec/features/issues/award_emoji_spec.rb
+++ b/spec/features/issues/award_emoji_spec.rb
@@ -21,32 +21,32 @@ describe 'Awards Emoji', feature: true do
       visit namespace_project_issue_path(project.namespace, project, issue)
     end
 
-    it 'should increment the thumbsdown emoji', js: true do
+    it 'increments the thumbsdown emoji', js: true do
       find('[data-emoji="thumbsdown"]').click
       sleep 2
       expect(thumbsdown_emoji).to have_text("1")
     end
 
     context 'click the thumbsup emoji' do
-      it 'should increment the thumbsup emoji', js: true do
+      it 'increments the thumbsup emoji', js: true do
         find('[data-emoji="thumbsup"]').click
         sleep 2
         expect(thumbsup_emoji).to have_text("1")
       end
 
-      it 'should decrement the thumbsdown emoji', js: true do
+      it 'decrements the thumbsdown emoji', js: true do
         expect(thumbsdown_emoji).to have_text("0")
       end
     end
 
     context 'click the thumbsdown emoji' do
-      it 'should increment the thumbsdown emoji', js: true do
+      it 'increments the thumbsdown emoji', js: true do
         find('[data-emoji="thumbsdown"]').click
         sleep 2
         expect(thumbsdown_emoji).to have_text("1")
       end
 
-      it 'should decrement the thumbsup emoji', js: true do
+      it 'decrements the thumbsup emoji', js: true do
         expect(thumbsup_emoji).to have_text("0")
       end
     end
diff --git a/spec/features/issues/award_spec.rb b/spec/features/issues/award_spec.rb
index 63efecf87802bd842aea91ae8e35fc62a007d11d..401e1ea2b893e27216bbf160a980cac0877f92c4 100644
--- a/spec/features/issues/award_spec.rb
+++ b/spec/features/issues/award_spec.rb
@@ -11,7 +11,7 @@ feature 'Issue awards', js: true, feature: true do
       visit namespace_project_issue_path(project.namespace, project, issue)
     end
 
-    it 'should add award to issue' do
+    it 'adds award to issue' do
       first('.js-emoji-btn').click
       expect(page).to have_selector('.js-emoji-btn.active')
       expect(first('.js-emoji-btn')).to have_content '1'
@@ -20,7 +20,7 @@ feature 'Issue awards', js: true, feature: true do
       expect(first('.js-emoji-btn')).to have_content '1'
     end
 
-    it 'should remove award from issue' do
+    it 'removes award from issue' do
       first('.js-emoji-btn').click
       find('.js-emoji-btn.active').click
       expect(first('.js-emoji-btn')).to have_content '0'
@@ -29,7 +29,7 @@ feature 'Issue awards', js: true, feature: true do
       expect(first('.js-emoji-btn')).to have_content '0'
     end
 
-    it 'should only have one menu on the page' do
+    it 'only has one menu on the page' do
       first('.js-add-award').click
       expect(page).to have_selector('.emoji-menu')
 
@@ -42,7 +42,7 @@ feature 'Issue awards', js: true, feature: true do
       visit namespace_project_issue_path(project.namespace, project, issue)
     end
 
-    it 'should not see award menu button' do
+    it 'does not see award menu button' do
       expect(page).not_to have_selector('.js-award-holder')
     end
   end
diff --git a/spec/features/issues/bulk_assignment_labels_spec.rb b/spec/features/issues/bulk_assignment_labels_spec.rb
index afc093cc1f5626c8d943b82b0e84451f2131fbcd..bc2c087c9b9a0f44ebc0a2608c716baaf36e92e5 100644
--- a/spec/features/issues/bulk_assignment_labels_spec.rb
+++ b/spec/features/issues/bulk_assignment_labels_spec.rb
@@ -175,7 +175,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
           visit namespace_project_issues_path(project.namespace, project)
         end
 
-        it 'labels are kept' do
+        it 'keeps labels' do
           expect(find("#issue_#{issue1.id}")).to have_content 'bug'
           expect(find("#issue_#{issue2.id}")).to have_content 'feature'
 
@@ -197,7 +197,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
           visit namespace_project_issues_path(project.namespace, project)
         end
 
-        it 'existing label is kept and new label is present' do
+        it 'keeps existing label and new label is present' do
           expect(find("#issue_#{issue1.id}")).to have_content 'bug'
 
           check 'check_all_issues'
@@ -222,7 +222,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
           visit namespace_project_issues_path(project.namespace, project)
         end
 
-        it 'existing label is kept and new label is present' do
+        it 'keeps existing label and new label is present' do
           expect(find("#issue_#{issue1.id}")).to have_content 'bug'
           expect(find("#issue_#{issue1.id}")).to have_content 'bug'
           expect(find("#issue_#{issue2.id}")).to have_content 'feature'
@@ -252,7 +252,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
           visit namespace_project_issues_path(project.namespace, project)
         end
 
-        it 'labels are kept' do
+        it 'keeps labels' do
           expect(find("#issue_#{issue1.id}")).to have_content 'bug'
           expect(find("#issue_#{issue1.id}")).to have_content 'First Release'
           expect(find("#issue_#{issue2.id}")).to have_content 'feature'
diff --git a/spec/features/issues/filter_by_labels_spec.rb b/spec/features/issues/filter_by_labels_spec.rb
index cb117d2476f16e221c175fdd7d9659b13d8cd156..908b18e5339cdf55cc8f5b2e0fdab047a1c3753c 100644
--- a/spec/features/issues/filter_by_labels_spec.rb
+++ b/spec/features/issues/filter_by_labels_spec.rb
@@ -37,25 +37,25 @@ feature 'Issue filtering by Labels', feature: true do
       wait_for_ajax
     end
 
-    it 'should show issue "Bugfix1" and "Bugfix2" in issues list' do
+    it 'shows issue "Bugfix1" and "Bugfix2" in issues list' do
       expect(page).to have_content "Bugfix1"
       expect(page).to have_content "Bugfix2"
     end
 
-    it 'should not show "Feature1" in issues list' do
+    it 'does not show "Feature1" in issues list' do
       expect(page).not_to have_content "Feature1"
     end
 
-    it 'should show label "bug" in filtered-labels' do
+    it 'shows label "bug" in filtered-labels' do
       expect(find('.filtered-labels')).to have_content "bug"
     end
 
-    it 'should not show label "feature" and "enhancement" in filtered-labels' do
+    it 'does not show label "feature" and "enhancement" in filtered-labels' do
       expect(find('.filtered-labels')).not_to have_content "feature"
       expect(find('.filtered-labels')).not_to have_content "enhancement"
     end
 
-    it 'should remove label "bug"' do
+    it 'removes label "bug"' do
       find('.js-label-filter-remove').click
       wait_for_ajax
       expect(find('.filtered-labels', visible: false)).to have_no_content "bug"
@@ -71,20 +71,20 @@ feature 'Issue filtering by Labels', feature: true do
       wait_for_ajax
     end
 
-    it 'should show issue "Feature1" in issues list' do
+    it 'shows issue "Feature1" in issues list' do
       expect(page).to have_content "Feature1"
     end
 
-    it 'should not show "Bugfix1" and "Bugfix2" in issues list' do
+    it 'does not show "Bugfix1" and "Bugfix2" in issues list' do
       expect(page).not_to have_content "Bugfix2"
       expect(page).not_to have_content "Bugfix1"
     end
 
-    it 'should show label "feature" in filtered-labels' do
+    it 'shows label "feature" in filtered-labels' do
       expect(find('.filtered-labels')).to have_content "feature"
     end
 
-    it 'should not show label "bug" and "enhancement" in filtered-labels' do
+    it 'does not show label "bug" and "enhancement" in filtered-labels' do
       expect(find('.filtered-labels')).not_to have_content "bug"
       expect(find('.filtered-labels')).not_to have_content "enhancement"
     end
@@ -99,20 +99,20 @@ feature 'Issue filtering by Labels', feature: true do
       wait_for_ajax
     end
 
-    it 'should show issue "Bugfix2" in issues list' do
+    it 'shows issue "Bugfix2" in issues list' do
       expect(page).to have_content "Bugfix2"
     end
 
-    it 'should not show "Feature1" and "Bugfix1" in issues list' do
+    it 'does not show "Feature1" and "Bugfix1" in issues list' do
       expect(page).not_to have_content "Feature1"
       expect(page).not_to have_content "Bugfix1"
     end
 
-    it 'should show label "enhancement" in filtered-labels' do
+    it 'shows label "enhancement" in filtered-labels' do
       expect(find('.filtered-labels')).to have_content "enhancement"
     end
 
-    it 'should not show label "feature" and "bug" in filtered-labels' do
+    it 'does not show label "feature" and "bug" in filtered-labels' do
       expect(find('.filtered-labels')).not_to have_content "bug"
       expect(find('.filtered-labels')).not_to have_content "feature"
     end
@@ -128,21 +128,21 @@ feature 'Issue filtering by Labels', feature: true do
       wait_for_ajax
     end
 
-    it 'should not show "Bugfix1" or "Feature1" in issues list' do
+    it 'does not show "Bugfix1" or "Feature1" in issues list' do
       expect(page).not_to have_content "Bugfix1"
       expect(page).not_to have_content "Feature1"
     end
 
-    it 'should show label "enhancement" and "feature" in filtered-labels' do
+    it 'shows label "enhancement" and "feature" in filtered-labels' do
       expect(find('.filtered-labels')).to have_content "enhancement"
       expect(find('.filtered-labels')).to have_content "feature"
     end
 
-    it 'should not show label "bug" in filtered-labels' do
+    it 'does not show label "bug" in filtered-labels' do
       expect(find('.filtered-labels')).not_to have_content "bug"
     end
 
-    it 'should remove label "enhancement"' do
+    it 'removes label "enhancement"' do
       find('.js-label-filter-remove', match: :first).click
       wait_for_ajax
       expect(find('.filtered-labels')).to have_no_content "enhancement"
@@ -159,20 +159,20 @@ feature 'Issue filtering by Labels', feature: true do
       wait_for_ajax
     end
 
-    it 'should show issue "Bugfix2" in issues list' do
+    it 'shows issue "Bugfix2" in issues list' do
       expect(page).to have_content "Bugfix2"
     end
 
-    it 'should not show "Feature1"' do
+    it 'does not show "Feature1"' do
       expect(page).not_to have_content "Feature1"
     end
 
-    it 'should show label "bug" and "enhancement" in filtered-labels' do
+    it 'shows label "bug" and "enhancement" in filtered-labels' do
       expect(find('.filtered-labels')).to have_content "bug"
       expect(find('.filtered-labels')).to have_content "enhancement"
     end
 
-    it 'should not show label "feature" in filtered-labels' do
+    it 'does not show label "feature" in filtered-labels' do
       expect(find('.filtered-labels')).not_to have_content "feature"
     end
   end
@@ -191,7 +191,7 @@ feature 'Issue filtering by Labels', feature: true do
       end
     end
 
-    it 'should allow user to remove filtered labels' do
+    it 'allows user to remove filtered labels' do
       first('.js-label-filter-remove').click
       wait_for_ajax
 
@@ -201,7 +201,7 @@ feature 'Issue filtering by Labels', feature: true do
   end
 
   context 'dropdown filtering', js: true do
-    it 'should filter by label name' do
+    it 'filters by label name' do
       page.within '.labels-filter' do
         click_button 'Label'
         wait_for_ajax
diff --git a/spec/features/issues/filter_by_milestone_spec.rb b/spec/features/issues/filter_by_milestone_spec.rb
index 9944518589378aae5e141d4bfcb51435eb430e86..485dc5600616d6cf5fe24cff40fe4f129744862d 100644
--- a/spec/features/issues/filter_by_milestone_spec.rb
+++ b/spec/features/issues/filter_by_milestone_spec.rb
@@ -15,7 +15,7 @@ feature 'Issue filtering by Milestone', feature: true do
   end
 
   context 'filters by upcoming milestone', js: true do
-    it 'should not show issues with no expiry' do
+    it 'does not show issues with no expiry' do
       create(:issue, project: project)
       create(:issue, project: project, milestone: milestone)
 
@@ -25,7 +25,7 @@ feature 'Issue filtering by Milestone', feature: true do
       expect(page).to have_css('.issue', count: 0)
     end
 
-    it 'should show issues in future' do
+    it 'shows issues in future' do
       milestone = create(:milestone, project: project, due_date: Date.tomorrow)
       create(:issue, project: project)
       create(:issue, project: project, milestone: milestone)
@@ -36,7 +36,7 @@ feature 'Issue filtering by Milestone', feature: true do
       expect(page).to have_css('.issue', count: 1)
     end
 
-    it 'should not show issues in past' do
+    it 'does not show issues in past' do
       milestone = create(:milestone, project: project, due_date: Date.yesterday)
       create(:issue, project: project)
       create(:issue, project: project, milestone: milestone)
diff --git a/spec/features/issues/filter_issues_spec.rb b/spec/features/issues/filter_issues_spec.rb
index 4b9b5394b61afcfc72b53c9f5dcf5dc83839b587..ea81ee54c908b210b0fcfd78cae3361336c7e775 100644
--- a/spec/features/issues/filter_issues_spec.rb
+++ b/spec/features/issues/filter_issues_spec.rb
@@ -26,17 +26,17 @@ describe 'Filter issues', feature: true do
     end
 
     context 'assignee', js: true do
-      it 'should update to current user' do
+      it 'updates to current user' do
         expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
       end
 
-      it 'should not change when closed link is clicked' do
+      it 'does not change when closed link is clicked' do
         find('.issues-state-filters a', text: "Closed").click
 
         expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
       end
 
-      it 'should not change when all link is clicked' do
+      it 'does not change when all link is clicked' do
         find('.issues-state-filters a', text: "All").click
 
         expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
@@ -56,17 +56,17 @@ describe 'Filter issues', feature: true do
     end
 
     context 'milestone', js: true do
-      it 'should update to current milestone' do
+      it 'updates to current milestone' do
         expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title)
       end
 
-      it 'should not change when closed link is clicked' do
+      it 'does not change when closed link is clicked' do
         find('.issues-state-filters a', text: "Closed").click
 
         expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title)
       end
 
-      it 'should not change when all link is clicked' do
+      it 'does not change when all link is clicked' do
         find('.issues-state-filters a', text: "All").click
 
         expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title)
@@ -81,7 +81,7 @@ describe 'Filter issues', feature: true do
       wait_for_ajax
     end
 
-    it 'should filter by any label' do
+    it 'filters by any label' do
       find('.dropdown-menu-labels a', text: 'Any Label').click
       page.first('.labels-filter .dropdown-title .dropdown-menu-close-icon').click
       wait_for_ajax
@@ -89,7 +89,7 @@ describe 'Filter issues', feature: true do
       expect(find('.labels-filter')).to have_content 'Label'
     end
 
-    it 'should filter by no label' do
+    it 'filters by no label' do
       find('.dropdown-menu-labels a', text: 'No Label').click
       page.first('.labels-filter .dropdown-title .dropdown-menu-close-icon').click
       wait_for_ajax
@@ -100,7 +100,7 @@ describe 'Filter issues', feature: true do
       expect(find('.js-label-select .dropdown-toggle-text')).to have_content('No Label')
     end
 
-    it 'should filter by no label' do
+    it 'filters by no label' do
       find('.dropdown-menu-labels a', text: label.title).click
       page.within '.labels-filter' do
         expect(page).to have_content label.title
@@ -128,19 +128,19 @@ describe 'Filter issues', feature: true do
     end
 
     context 'assignee and label', js: true do
-      it 'should update to current assignee and label' do
+      it 'updates to current assignee and label' do
         expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
         expect(find('.js-label-select .dropdown-toggle-text')).to have_content(label.title)
       end
 
-      it 'should not change when closed link is clicked' do
+      it 'does not change when closed link is clicked' do
         find('.issues-state-filters a', text: "Closed").click
 
         expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
         expect(find('.js-label-select .dropdown-toggle-text')).to have_content(label.title)
       end
 
-      it 'should not change when all link is clicked' do
+      it 'does not change when all link is clicked' do
         find('.issues-state-filters a', text: "All").click
 
         expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
@@ -168,7 +168,7 @@ describe 'Filter issues', feature: true do
     end
 
     context 'only text', js: true do
-      it 'should filter issues by searched text' do
+      it 'filters issues by searched text' do
         fill_in 'issue_search', with: 'Bug'
 
         page.within '.issues-list' do
@@ -176,7 +176,7 @@ describe 'Filter issues', feature: true do
         end
       end
 
-      it 'should not show any issues' do
+      it 'does not show any issues' do
         fill_in 'issue_search', with: 'testing'
 
         page.within '.issues-list' do
@@ -186,7 +186,7 @@ describe 'Filter issues', feature: true do
     end
 
     context 'text and dropdown options', js: true do
-      it 'should filter by text and label' do
+      it 'filters by text and label' do
         fill_in 'issue_search', with: 'Bug'
 
         page.within '.issues-list' do
@@ -204,7 +204,7 @@ describe 'Filter issues', feature: true do
         end
       end
 
-      it 'should filter by text and milestone' do
+      it 'filters by text and milestone' do
         fill_in 'issue_search', with: 'Bug'
 
         page.within '.issues-list' do
@@ -221,7 +221,7 @@ describe 'Filter issues', feature: true do
         end
       end
 
-      it 'should filter by text and assignee' do
+      it 'filters by text and assignee' do
         fill_in 'issue_search', with: 'Bug'
 
         page.within '.issues-list' do
@@ -238,7 +238,7 @@ describe 'Filter issues', feature: true do
         end
       end
 
-      it 'should filter by text and author' do
+      it 'filters by text and author' do
         fill_in 'issue_search', with: 'Bug'
 
         page.within '.issues-list' do
@@ -269,7 +269,7 @@ describe 'Filter issues', feature: true do
       visit namespace_project_issues_path(project.namespace, project)
     end
 
-    it 'should be able to filter and sort issues' do
+    it 'is able to filter and sort issues' do
       click_button 'Label'
       wait_for_ajax
       page.within '.labels-filter' do
diff --git a/spec/features/issues/issue_sidebar_spec.rb b/spec/features/issues/issue_sidebar_spec.rb
index 5739bc64dfb2b8c723000a459e4fbc03affb8197..4b1aec8bf7164eecc89982a6cb5bbcbc39ad38fe 100644
--- a/spec/features/issues/issue_sidebar_spec.rb
+++ b/spec/features/issues/issue_sidebar_spec.rb
@@ -17,7 +17,7 @@ feature 'Issue Sidebar', feature: true do
     end
 
     describe 'when clicking on edit labels', js: true do
-      it 'dropdown has an option to create a new label' do
+      it 'shows dropdown option to create a new label' do
         find('.block.labels .edit-link').click
 
         page.within('.block.labels') do
@@ -27,7 +27,7 @@ feature 'Issue Sidebar', feature: true do
     end
 
     context 'creating a new label', js: true do
-      it 'option to crate a new label is present' do
+      it 'shows option to crate a new label is present' do
         page.within('.block.labels') do
           find('.edit-link').click
 
@@ -35,7 +35,7 @@ feature 'Issue Sidebar', feature: true do
         end
       end
 
-      it 'dropdown switches to "create label" section' do
+      it 'shows dropdown switches to "create label" section' do
         page.within('.block.labels') do
           find('.edit-link').click
           click_link 'Create new'
@@ -44,7 +44,7 @@ feature 'Issue Sidebar', feature: true do
         end
       end
 
-      it 'new label is added' do
+      it 'adds new label' do
         page.within('.block.labels') do
           find('.edit-link').click
           sleep 1
diff --git a/spec/features/issues/new_branch_button_spec.rb b/spec/features/issues/new_branch_button_spec.rb
index 16e188d2a8af869fd79e0c5c192335fa851b896c..e528aff4d41454920daab187a0c44d1bdf8e98b5 100644
--- a/spec/features/issues/new_branch_button_spec.rb
+++ b/spec/features/issues/new_branch_button_spec.rb
@@ -41,7 +41,7 @@ feature 'Start new branch from an issue', feature: true do
   end
 
   context "for visiters" do
-    it 'no button is shown', js: true do
+    it 'shows no buttons', js: true do
       visit namespace_project_issue_path(project.namespace, project, issue)
 
       expect(page).not_to have_css('#new-branch')
diff --git a/spec/features/issues/todo_spec.rb b/spec/features/issues/todo_spec.rb
index bc0f437a8ce8d23b2b6c1aee33f11c4a5ebe8807..de8fdda388dc7a109cd6e5c6eebcceec0c472934 100644
--- a/spec/features/issues/todo_spec.rb
+++ b/spec/features/issues/todo_spec.rb
@@ -11,7 +11,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
     visit namespace_project_issue_path(project.namespace, project, issue)
   end
 
-  it 'should create todo when clicking button' do
+  it 'creates todo when clicking button' do
     page.within '.issuable-sidebar' do
       click_button 'Add Todo'
       expect(page).to have_content 'Mark Done'
@@ -28,7 +28,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
     end
   end
 
-  it 'should mark a todo as done' do
+  it 'marks a todo as done' do
     page.within '.issuable-sidebar' do
       click_button 'Add Todo'
       click_button 'Mark Done'
diff --git a/spec/features/issues/update_issues_spec.rb b/spec/features/issues/update_issues_spec.rb
index ddbd69b28912af7ffa682bb2c24cc7622a6a472a..ae5da3877a89aaa7717ce92697fb5bf7333d66b9 100644
--- a/spec/features/issues/update_issues_spec.rb
+++ b/spec/features/issues/update_issues_spec.rb
@@ -13,7 +13,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
   end
 
   context 'status', js: true do
-    it 'should be set to closed' do
+    it 'sets to closed' do
       visit namespace_project_issues_path(project.namespace, project)
 
       find('#check_all_issues').click
@@ -24,7 +24,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
       expect(page).to have_selector('.issue', count: 0)
     end
 
-    it 'should be set to open' do
+    it 'sets to open' do
       create_closed
       visit namespace_project_issues_path(project.namespace, project, state: 'closed')
 
@@ -38,7 +38,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
   end
 
   context 'assignee', js: true do
-    it 'should update to current user' do
+    it 'updates to current user' do
       visit namespace_project_issues_path(project.namespace, project)
 
       find('#check_all_issues').click
@@ -52,7 +52,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
       end
     end
 
-    it 'should update to unassigned' do
+    it 'updates to unassigned' do
       create_assigned
       visit namespace_project_issues_path(project.namespace, project)
 
@@ -68,7 +68,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
   context 'milestone', js: true do
     let(:milestone)  { create(:milestone, project: project) }
 
-    it 'should update milestone' do
+    it 'updates milestone' do
       visit namespace_project_issues_path(project.namespace, project)
 
       find('#check_all_issues').click
@@ -80,7 +80,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
       expect(find('.issue')).to have_content milestone.title
     end
 
-    it 'should set to no milestone' do
+    it 'sets to no milestone' do
       create_with_milestone
       visit namespace_project_issues_path(project.namespace, project)
 
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index 9c92b52898c3916e846f6611b827f92a0d42ac48..cb445e22af0a5aeb20bb200bba8205ae826705dd 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -26,7 +26,7 @@ describe 'Issues', feature: true do
       find('.js-zen-enter').click
     end
 
-    it 'should open new issue popup' do
+    it 'opens new issue popup' do
       expect(page).to have_content("Issue ##{issue.iid}")
     end
 
@@ -71,7 +71,7 @@ describe 'Issues', feature: true do
         visit new_namespace_project_issue_path(project.namespace, project)
       end
 
-      it 'should save with due date' do
+      it 'saves with due date' do
         date = Date.today.at_beginning_of_month
 
         fill_in 'issue_title', with: 'bug 345'
@@ -99,7 +99,7 @@ describe 'Issues', feature: true do
         visit edit_namespace_project_issue_path(project.namespace, project, issue)
       end
 
-      it 'should save with due date' do
+      it 'saves with due date' do
         date = Date.today.at_beginning_of_month
 
         expect(find('#issuable-due-date').value).to eq date.to_s
@@ -155,7 +155,7 @@ describe 'Issues', feature: true do
 
     let(:issue) { @issue }
 
-    it 'should allow filtering by issues with no specified assignee' do
+    it 'allows filtering by issues with no specified assignee' do
       visit namespace_project_issues_path(project.namespace, project, assignee_id: IssuableFinder::NONE)
 
       expect(page).to have_content 'foobar'
@@ -163,7 +163,7 @@ describe 'Issues', feature: true do
       expect(page).not_to have_content 'gitlab'
     end
 
-    it 'should allow filtering by a specified assignee' do
+    it 'allows filtering by a specified assignee' do
       visit namespace_project_issues_path(project.namespace, project, assignee_id: @user.id)
 
       expect(page).not_to have_content 'foobar'
@@ -514,7 +514,7 @@ describe 'Issues', feature: true do
         visit new_namespace_project_issue_path(project.namespace, project)
       end
 
-      it 'should upload file when dragging into textarea' do
+      it 'uploads file when dragging into textarea' do
         drop_in_dropzone test_image_file
 
         # Wait for the file to upload
@@ -562,7 +562,7 @@ describe 'Issues', feature: true do
         visit namespace_project_issue_path(project.namespace, project, issue)
       end
 
-      it 'should add due date to issue' do
+      it 'adds due date to issue' do
         page.within '.due_date' do
           click_link 'Edit'
 
@@ -574,7 +574,7 @@ describe 'Issues', feature: true do
         end
       end
 
-      it 'should remove due date from issue' do
+      it 'removes due date from issue' do
         page.within '.due_date' do
           click_link 'Edit'
 
diff --git a/spec/features/login_spec.rb b/spec/features/login_spec.rb
index c4e8b1da5312d0e2049469019b35cfc9e511c24f..2523b4b78982c6d5afe78a1ca9d66a3ed8aae604 100644
--- a/spec/features/login_spec.rb
+++ b/spec/features/login_spec.rb
@@ -131,7 +131,7 @@ feature 'Login', feature: true do
         expect_any_instance_of(Object).to receive(:omniauth_authorize_path).with(:user, "saml").and_return('/users/auth/saml')
       end
 
-      it 'should show 2FA prompt after OAuth login' do
+      it 'shows 2FA prompt after OAuth login' do
         stub_omniauth_config(enabled: true, auto_link_saml_user: true, allow_single_sign_on: ['saml'], providers: [saml_config])
         user = create(:omniauth_user, :two_factor, extern_uid: 'my-uid', provider: 'saml')
         login_via('saml', user, 'my-uid')
diff --git a/spec/features/merge_requests/award_spec.rb b/spec/features/merge_requests/award_spec.rb
index 007f67d60804e11bffc33c4675ad7614e89a76a5..ac260e118d00c9d9e8e0e263c443ad984470ba63 100644
--- a/spec/features/merge_requests/award_spec.rb
+++ b/spec/features/merge_requests/award_spec.rb
@@ -11,7 +11,7 @@ feature 'Merge request awards', js: true, feature: true do
       visit namespace_project_merge_request_path(project.namespace, project, merge_request)
     end
 
-    it 'should add award to merge request' do
+    it 'adds award to merge request' do
       first('.js-emoji-btn').click
       expect(page).to have_selector('.js-emoji-btn.active')
       expect(first('.js-emoji-btn')).to have_content '1'
@@ -20,7 +20,7 @@ feature 'Merge request awards', js: true, feature: true do
       expect(first('.js-emoji-btn')).to have_content '1'
     end
 
-    it 'should remove award from merge request' do
+    it 'removes award from merge request' do
       first('.js-emoji-btn').click
       find('.js-emoji-btn.active').click
       expect(first('.js-emoji-btn')).to have_content '0'
@@ -29,7 +29,7 @@ feature 'Merge request awards', js: true, feature: true do
       expect(first('.js-emoji-btn')).to have_content '0'
     end
 
-    it 'should only have one menu on the page' do
+    it 'has only one menu on the page' do
       first('.js-add-award').click
       expect(page).to have_selector('.emoji-menu')
 
@@ -42,7 +42,7 @@ feature 'Merge request awards', js: true, feature: true do
       visit namespace_project_merge_request_path(project.namespace, project, merge_request)
     end
 
-    it 'should not see award menu button' do
+    it 'does not see award menu button' do
       expect(page).not_to have_selector('.js-award-holder')
     end
   end
diff --git a/spec/features/merge_requests/edit_mr_spec.rb b/spec/features/merge_requests/edit_mr_spec.rb
index 9e007ab7635f90ede8dd52b60e531c60359ce0dd..4109e78f56031f7dcae40811274e58c9111b5ac1 100644
--- a/spec/features/merge_requests/edit_mr_spec.rb
+++ b/spec/features/merge_requests/edit_mr_spec.rb
@@ -14,7 +14,7 @@ feature 'Edit Merge Request', feature: true do
   end
 
   context 'editing a MR' do
-    it 'form should have class js-quick-submit' do
+    it 'has class js-quick-submit in form' do
       expect(page).to have_selector('.js-quick-submit')
     end
   end
diff --git a/spec/features/merge_requests/filter_by_milestone_spec.rb b/spec/features/merge_requests/filter_by_milestone_spec.rb
index e3ecd60a5f3e12ebedd772fc315d6d00f49d5ef0..bb0bb590a465c2692a1192119f7e297863470a32 100644
--- a/spec/features/merge_requests/filter_by_milestone_spec.rb
+++ b/spec/features/merge_requests/filter_by_milestone_spec.rb
@@ -21,7 +21,7 @@ feature 'Merge Request filtering by Milestone', feature: true do
   end
 
   context 'filters by upcoming milestone', js: true do
-    it 'should not show issues with no expiry' do
+    it 'does not show issues with no expiry' do
       create(:merge_request, :with_diffs, source_project: project)
       create(:merge_request, :simple, source_project: project, milestone: milestone)
 
@@ -31,7 +31,7 @@ feature 'Merge Request filtering by Milestone', feature: true do
       expect(page).to have_css('.merge-request', count: 0)
     end
 
-    it 'should show issues in future' do
+    it 'shows issues in future' do
       milestone = create(:milestone, project: project, due_date: Date.tomorrow)
       create(:merge_request, :with_diffs, source_project: project)
       create(:merge_request, :simple, source_project: project, milestone: milestone)
@@ -42,7 +42,7 @@ feature 'Merge Request filtering by Milestone', feature: true do
       expect(page).to have_css('.merge-request', count: 1)
     end
 
-    it 'should not show issues in past' do
+    it 'does not show issues in past' do
       milestone = create(:milestone, project: project, due_date: Date.yesterday)
       create(:merge_request, :with_diffs, source_project: project)
       create(:merge_request, :simple, source_project: project, milestone: milestone)
diff --git a/spec/features/merge_requests/merge_when_build_succeeds_spec.rb b/spec/features/merge_requests/merge_when_build_succeeds_spec.rb
index 96f7b8c993238c902dfb6875016b92835e2b2aed..60bc07bd1a0fa9218a847b4e566e2883a56cb6cd 100644
--- a/spec/features/merge_requests/merge_when_build_succeeds_spec.rb
+++ b/spec/features/merge_requests/merge_when_build_succeeds_spec.rb
@@ -73,7 +73,7 @@ feature 'Merge When Build Succeeds', feature: true, js: true do
   end
 
   context 'Build is not active' do
-    it "should not allow for enabling" do
+    it "does not allow for enabling" do
       visit_merge_request(merge_request)
       expect(page).not_to have_link "Merge When Build Succeeds"
     end
diff --git a/spec/features/milestone_spec.rb b/spec/features/milestone_spec.rb
index c2c7acff3e8dc7462d08ba4ea9ec551b97b631c7..c43661e56813ae8a9135266d5c6a57abd3578de6 100644
--- a/spec/features/milestone_spec.rb
+++ b/spec/features/milestone_spec.rb
@@ -13,7 +13,7 @@ feature 'Milestone', feature: true do
   end
 
   feature 'Create a milestone' do
-    scenario 'should show an informative message for a new issue' do
+    scenario 'shows an informative message for a new issue' do
       visit new_namespace_project_milestone_path(project.namespace, project)
       page.within '.milestone-form' do
         fill_in "milestone_title", with: '8.7'
@@ -25,7 +25,7 @@ feature 'Milestone', feature: true do
   end
 
   feature 'Open a milestone with closed issues' do
-    scenario 'should show an informative message' do
+    scenario 'shows an informative message' do
       create(:issue, title: "Bugfix1", project: project, milestone: milestone, state: "closed")
       visit namespace_project_milestone_path(project.namespace, project, milestone)
 
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index 0b38c413f4401ce5fa4e5275e10575e4f9f3fdad..7a9edbbe33968fda188cd4f9772f80b9013181c2 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -23,7 +23,7 @@ describe 'Comments', feature: true do
     subject { page }
 
     describe 'the note form' do
-      it 'should be valid' do
+      it 'is valid' do
         is_expected.to have_css('.js-main-target-form', visible: true, count: 1)
         expect(find('.js-main-target-form input[type=submit]').value).
           to eq('Comment')
@@ -39,7 +39,7 @@ describe 'Comments', feature: true do
           end
         end
 
-        it 'should have enable submit button and preview button' do
+        it 'has enable submit button and preview button' do
           page.within('.js-main-target-form') do
             expect(page).not_to have_css('.js-comment-button[disabled]')
             expect(page).to have_css('.js-md-preview-button', visible: true)
@@ -57,7 +57,7 @@ describe 'Comments', feature: true do
         end
       end
 
-      it 'should be added and form reset' do
+      it 'is added and form reset' do
         is_expected.to have_content('This is awsome!')
         page.within('.js-main-target-form') do
           expect(page).to have_no_field('note[note]', with: 'This is awesome!')
@@ -70,7 +70,7 @@ describe 'Comments', feature: true do
     end
 
     describe 'when editing a note', js: true do
-      it 'should contain the hidden edit form' do
+      it 'contains the hidden edit form' do
         page.within("#note_#{note.id}") do
           is_expected.to have_css('.note-edit-form', visible: false)
         end
@@ -82,7 +82,7 @@ describe 'Comments', feature: true do
           find(".js-note-edit").click
         end
 
-        it 'should show the note edit form and hide the note body' do
+        it 'shows the note edit form and hide the note body' do
           page.within("#note_#{note.id}") do
             expect(find('.current-note-edit-form', visible: true)).to be_visible
             expect(find('.note-edit-form', visible: true)).to be_visible
@@ -234,7 +234,7 @@ describe 'Comments', feature: true do
           end
         end
 
-        it 'should be added as discussion' do
+        it 'adds as discussion' do
           is_expected.to have_content('Another comment on line 10')
           is_expected.to have_css('.notes_holder')
           is_expected.to have_css('.notes_holder .note', count: 1)
diff --git a/spec/features/participants_autocomplete_spec.rb b/spec/features/participants_autocomplete_spec.rb
index c7c00a3266a32cfe5bd3e84301e7861b75d1e64f..a78a1c9c8905ca1721c7026df7707a4765961e40 100644
--- a/spec/features/participants_autocomplete_spec.rb
+++ b/spec/features/participants_autocomplete_spec.rb
@@ -12,17 +12,17 @@ feature 'Member autocomplete', feature: true do
   end
 
   shared_examples "open suggestions" do
-    it 'suggestions are displayed' do
+    it 'displays suggestions' do
       expect(page).to have_selector('.atwho-view', visible: true)
     end
 
-    it 'author is suggested' do
+    it 'suggests author' do
       page.within('.atwho-view', visible: true) do
         expect(page).to have_content(author.username)
       end
     end
 
-    it 'participant is suggested' do
+    it 'suggests participant' do
       page.within('.atwho-view', visible: true) do
         expect(page).to have_content(participant.username)
       end
diff --git a/spec/features/pipelines_spec.rb b/spec/features/pipelines_spec.rb
index 377a9aba60d890761e28b5838e8af239280bfcaa..eace76c370f15ccccc0018afaceb9a4dd1333f98 100644
--- a/spec/features/pipelines_spec.rb
+++ b/spec/features/pipelines_spec.rb
@@ -82,11 +82,11 @@ describe "Pipelines" do
 
         before { visit namespace_project_pipelines_path(project.namespace, project) }
 
-        it 'not be cancelable' do
+        it 'is not cancelable' do
           expect(page).not_to have_link('Cancel')
         end
 
-        it 'pipeline is running' do
+        it 'has pipeline running' do
           expect(page).to have_selector('.ci-running')
         end
       end
@@ -96,11 +96,11 @@ describe "Pipelines" do
 
         before { visit namespace_project_pipelines_path(project.namespace, project) }
 
-        it 'not be retryable' do
+        it 'is not retryable' do
           expect(page).not_to have_link('Retry')
         end
 
-        it 'pipeline is failed' do
+        it 'has failed pipeline' do
           expect(page).to have_selector('.ci-failed')
         end
       end
@@ -147,7 +147,7 @@ describe "Pipelines" do
 
     before { visit namespace_project_pipeline_path(project.namespace, project, pipeline) }
 
-    it 'showing a list of builds' do
+    it 'shows a list of builds' do
       expect(page).to have_content('Test')
       expect(page).to have_content(@success.id)
       expect(page).to have_content('Deploy')
diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb
index c80253fead8c7dd280eaa2036d22f244c09a0bc8..c3d8c349ca4c1bfeae0526a1a52383814a111932 100644
--- a/spec/features/profile_spec.rb
+++ b/spec/features/profile_spec.rb
@@ -15,7 +15,7 @@ describe 'Profile account page', feature: true do
 
     it { expect(page).to have_content('Remove account') }
 
-    it 'should delete the account' do
+    it 'deletes the account' do
       expect { click_link 'Delete account' }.to change { User.count }.by(-1)
       expect(current_path).to eq(new_user_session_path)
     end
@@ -27,7 +27,7 @@ describe 'Profile account page', feature: true do
       visit profile_account_path
     end
 
-    it 'should not have option to remove account' do
+    it 'does not have option to remove account' do
       expect(page).not_to have_content('Remove account')
       expect(current_path).to eq(profile_account_path)
     end
diff --git a/spec/features/projects/labels/update_prioritization_spec.rb b/spec/features/projects/labels/update_prioritization_spec.rb
index 98ba93b4036b3ed0d45780f904deb99868ae41d7..cb7495da8ebf4b278dae1dff54547be3ee461753 100644
--- a/spec/features/projects/labels/update_prioritization_spec.rb
+++ b/spec/features/projects/labels/update_prioritization_spec.rb
@@ -87,7 +87,7 @@ feature 'Prioritize labels', feature: true do
   end
 
   context 'as a guest' do
-    it 'can not prioritize labels' do
+    it 'does not prioritize labels' do
       user = create(:user)
       guest = create(:user)
       project = create(:project, name: 'test', namespace: user.namespace)
@@ -102,7 +102,7 @@ feature 'Prioritize labels', feature: true do
   end
 
   context 'as a non signed in user' do
-    it 'can not prioritize labels' do
+    it 'does not prioritize labels' do
       user = create(:user)
       project = create(:project, name: 'test', namespace: user.namespace)
 
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index 6fa8298d4895b7bd17d34792f4590d50e50ecda9..1b14c66fe286ec30fa059e7773f2d6c34667235e 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -44,7 +44,7 @@ feature 'Project', feature: true do
       visit edit_namespace_project_path(project.namespace, project)
     end
 
-    it 'should remove fork' do
+    it 'removes fork' do
       expect(page).to have_content 'Remove fork relationship'
 
       remove_with_confirm('Remove fork relationship', project.path)
@@ -65,7 +65,7 @@ feature 'Project', feature: true do
       visit edit_namespace_project_path(project.namespace, project)
     end
 
-    it 'should remove project' do
+    it 'removes project' do
       expect { remove_with_confirm('Remove project', project.path) }.to change {Project.count}.by(-1)
     end
   end
@@ -82,7 +82,7 @@ feature 'Project', feature: true do
       visit namespace_project_path(project.namespace, project)
     end
 
-    it 'click toggle and show dropdown', js: true do
+    it 'clicks toggle and shows dropdown', js: true do
       find('.js-projects-dropdown-toggle').click
       expect(page).to have_css('.dropdown-menu-projects .dropdown-content li', count: 1)
     end
@@ -102,7 +102,7 @@ feature 'Project', feature: true do
         visit namespace_project_issue_path(project.namespace, project, issue)
       end
 
-      it 'click toggle and show dropdown' do
+      it 'clicks toggle and shows dropdown' do
         find('.js-projects-dropdown-toggle').click
         expect(page).to have_css('.dropdown-menu-projects .dropdown-content li', count: 2)
 
diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb
index 09f70cd3b002e57db9504b09a3752ab855ad93ba..b7a25d80fec90a01565e7fd328a58d45706fa530 100644
--- a/spec/features/search_spec.rb
+++ b/spec/features/search_spec.rb
@@ -12,7 +12,7 @@ describe "Search", feature: true  do
     visit search_path
   end
 
-  it 'top right search form is not present' do
+  it 'does not show top right search form' do
     expect(page).not_to have_selector('.search')
   end
 
@@ -76,16 +76,16 @@ describe "Search", feature: true  do
         visit namespace_project_path(project.namespace, project)
       end
 
-      it 'top right search form is present' do
+      it 'shows top right search form' do
         expect(page).to have_selector('#search')
       end
 
-      it 'top right search form contains location badge' do
+      it 'contains location badge in top right search form' do
         expect(page).to have_selector('.has-location-badge')
       end
 
       context 'clicking the search field', js: true do
-        it 'should show category search dropdown' do
+        it 'shows category search dropdown' do
           page.find('#search').click
 
           expect(page).to have_selector('.dropdown-header', text: /#{project.name}/i)
@@ -97,7 +97,7 @@ describe "Search", feature: true  do
           page.find('#search').click
         end
 
-        it 'should take user to her issues page when issues assigned is clicked' do
+        it 'takes user to her issues page when issues assigned is clicked' do
           find('.dropdown-menu').click_link 'Issues assigned to me'
           sleep 2
 
@@ -105,7 +105,7 @@ describe "Search", feature: true  do
           expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
         end
 
-        it 'should take user to her issues page when issues authored is clicked' do
+        it 'takes user to her issues page when issues authored is clicked' do
           find('.dropdown-menu').click_link "Issues I've created"
           sleep 2
 
@@ -113,7 +113,7 @@ describe "Search", feature: true  do
           expect(find('.js-author-search .dropdown-toggle-text')).to have_content(user.name)
         end
 
-        it 'should take user to her MR page when MR assigned is clicked' do
+        it 'takes user to her MR page when MR assigned is clicked' do
           find('.dropdown-menu').click_link 'Merge requests assigned to me'
           sleep 2
 
@@ -121,7 +121,7 @@ describe "Search", feature: true  do
           expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
         end
 
-        it 'should take user to her MR page when MR authored is clicked' do
+        it 'takes user to her MR page when MR authored is clicked' do
           find('.dropdown-menu').click_link "Merge requests I've created"
           sleep 2
 
@@ -137,7 +137,7 @@ describe "Search", feature: true  do
           end
         end
 
-        it 'should not display the category search dropdown' do
+        it 'does not display the category search dropdown' do
           expect(page).not_to have_selector('.dropdown-header', text: /#{project.name}/i)
         end
       end
diff --git a/spec/features/todos/todos_spec.rb b/spec/features/todos/todos_spec.rb
index 0bdb1628c748509dc22ee4d6a098b61657522edd..0342f4f1d97e31b9dcde976092e1af23354cf940 100644
--- a/spec/features/todos/todos_spec.rb
+++ b/spec/features/todos/todos_spec.rb
@@ -24,7 +24,7 @@ describe 'Dashboard Todos', feature: true do
         visit dashboard_todos_path
       end
 
-      it 'todo is present' do
+      it 'has todo present' do
         expect(page).to have_selector('.todos-list .todo', count: 1)
       end
 
diff --git a/spec/features/variables_spec.rb b/spec/features/variables_spec.rb
index a2b8f7b6931ffb5c9786a48b37aecc633b4ed09e..61f2bc61e0ca8ddb5eab6ec7c3e038074705bb47 100644
--- a/spec/features/variables_spec.rb
+++ b/spec/features/variables_spec.rb
@@ -13,13 +13,13 @@ describe 'Project variables', js: true do
     visit namespace_project_variables_path(project.namespace, project)
   end
 
-  it 'should show list of variables' do
+  it 'shows list of variables' do
     page.within('.variables-table') do
       expect(page).to have_content(variable.key)
     end
   end
 
-  it 'should add new variable' do
+  it 'adds new variable' do
     fill_in('variable_key', with: 'key')
     fill_in('variable_value', with: 'key value')
     click_button('Add new variable')
@@ -29,7 +29,7 @@ describe 'Project variables', js: true do
     end
   end
 
-  it 'should delete variable' do
+  it 'deletes variable' do
     page.within('.variables-table') do
       find('.btn-variable-delete').click
     end
@@ -37,7 +37,7 @@ describe 'Project variables', js: true do
     expect(page).not_to have_selector('variables-table')
   end
 
-  it 'should edit variable' do
+  it 'edits variable' do
     page.within('.variables-table') do
       find('.btn-variable-edit').click
     end
diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb
index bc385fd0d691c68820214a50d0c9ec293d46f9c8..535aabfc18d5fdf5712995428dbed844f507097a 100644
--- a/spec/finders/merge_requests_finder_spec.rb
+++ b/spec/finders/merge_requests_finder_spec.rb
@@ -18,13 +18,13 @@ describe MergeRequestsFinder do
   end
 
   describe "#execute" do
-    it 'should filter by scope' do
+    it 'filters by scope' do
       params = { scope: 'authored', state: 'opened' }
       merge_requests = MergeRequestsFinder.new(user, params).execute
       expect(merge_requests.size).to eq(2)
     end
 
-    it 'should filter by project' do
+    it 'filters by project' do
       params = { project_id: project1.id, scope: 'authored', state: 'opened' }
       merge_requests = MergeRequestsFinder.new(user, params).execute
       expect(merge_requests.size).to eq(1)
diff --git a/spec/finders/notes_finder_spec.rb b/spec/finders/notes_finder_spec.rb
index 8db897b16466bfe3f61d622f50f108a8ac7a0e38..7c6860372cc2c1041e61b2f78049a90ac6e3c11b 100644
--- a/spec/finders/notes_finder_spec.rb
+++ b/spec/finders/notes_finder_spec.rb
@@ -19,12 +19,12 @@ describe NotesFinder do
       note2
     end
 
-    it 'should find all notes' do
+    it 'finds all notes' do
       notes = NotesFinder.new.execute(project, user, params)
       expect(notes.size).to eq(2)
     end
 
-    it 'should raise an exception for an invalid target_type' do
+    it 'raises an exception for an invalid target_type' do
       params.merge!(target_type: 'invalid')
       expect { NotesFinder.new.execute(project, user, params) }.to raise_error('invalid target_type')
     end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 3e15a137e33a6c78b397090d150faad7a1f121d8..73f5470cf358bb276f19ebee38b9aa11ba91686b 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -54,7 +54,7 @@ describe ApplicationHelper do
   describe 'project_icon' do
     let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') }
 
-    it 'should return an url for the avatar' do
+    it 'returns an url for the avatar' do
       project = create(:project, avatar: File.open(avatar_file_path))
 
       avatar_url = "http://localhost/uploads/project/avatar/#{project.id}/banana_sample.gif"
@@ -62,7 +62,7 @@ describe ApplicationHelper do
         to eq "<img src=\"#{avatar_url}\" alt=\"Banana sample\" />"
     end
 
-    it 'should give uploaded icon when present' do
+    it 'gives uploaded icon when present' do
       project = create(:project)
 
       allow_any_instance_of(Project).to receive(:avatar_in_git).and_return(true)
@@ -76,14 +76,14 @@ describe ApplicationHelper do
   describe 'avatar_icon' do
     let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') }
 
-    it 'should return an url for the avatar' do
+    it 'returns an url for the avatar' do
       user = create(:user, avatar: File.open(avatar_file_path))
 
       expect(helper.avatar_icon(user.email).to_s).
         to match("/uploads/user/avatar/#{user.id}/banana_sample.gif")
     end
 
-    it 'should return an url for the avatar with relative url' do
+    it 'returns an url for the avatar with relative url' do
       stub_config_setting(relative_url_root: '/gitlab')
       # Must be stubbed after the stub above, and separately
       stub_config_setting(url: Settings.send(:build_gitlab_url))
@@ -94,14 +94,14 @@ describe ApplicationHelper do
         to match("/gitlab/uploads/user/avatar/#{user.id}/banana_sample.gif")
     end
 
-    it 'should call gravatar_icon when no User exists with the given email' do
+    it 'calls gravatar_icon when no User exists with the given email' do
       expect(helper).to receive(:gravatar_icon).with('foo@example.com', 20, 2)
 
       helper.avatar_icon('foo@example.com', 20, 2)
     end
 
     describe 'using a User' do
-      it 'should return an URL for the avatar' do
+      it 'returns an URL for the avatar' do
         user = create(:user, avatar: File.open(avatar_file_path))
 
         expect(helper.avatar_icon(user).to_s).
@@ -146,7 +146,7 @@ describe ApplicationHelper do
           to match('https://secure.gravatar.com')
       end
 
-      it 'should return custom gravatar path when gravatar_url is set' do
+      it 'returns custom gravatar path when gravatar_url is set' do
         stub_gravatar_setting(plain_url: 'http://example.local/?s=%{size}&hash=%{hash}')
 
         expect(gravatar_icon(user_email, 20)).
@@ -266,19 +266,19 @@ describe ApplicationHelper do
       allow(helper).to receive(:current_user).and_return(user)
     end
 
-    it 'should preserve encoding' do
+    it 'preserves encoding' do
       expect(content.encoding.name).to eq('UTF-8')
       expect(helper.render_markup('foo.rst', content).encoding.name).to eq('UTF-8')
     end
 
-    it "should delegate to #markdown when file name corresponds to Markdown" do
+    it "delegates to #markdown when file name corresponds to Markdown" do
       expect(helper).to receive(:gitlab_markdown?).with('foo.md').and_return(true)
       expect(helper).to receive(:markdown).and_return('NOEL')
 
       expect(helper.render_markup('foo.md', content)).to eq('NOEL')
     end
 
-    it "should delegate to #asciidoc when file name corresponds to AsciiDoc" do
+    it "delegates to #asciidoc when file name corresponds to AsciiDoc" do
       expect(helper).to receive(:asciidoc?).with('foo.adoc').and_return(true)
       expect(helper).to receive(:asciidoc).and_return('NOEL')
 
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index b2d6d59b1ee0c467bb01c143c777e80dbb278398..94972eed945b274f61a72a9694b4bd003cb4d2d0 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -17,19 +17,19 @@ describe BlobHelper do
   end
 
   describe '#highlight' do
-    it 'should return plaintext for unknown lexer context' do
+    it 'returns plaintext for unknown lexer context' do
       result = helper.highlight(blob_name, no_context_content)
       expect(result).to eq(%[<pre class="code highlight"><code><span id="LC1" class="line">:type "assem"))</span></code></pre>])
     end
 
-    it 'should highlight single block' do
+    it 'highlights single block' do
       expected = %Q[<pre class="code highlight"><code><span id="LC1" class="line"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span>
 <span id="LC2" class="line"><span class="ss">:type</span> <span class="s">"assem"</span><span class="p">))</span></span></code></pre>]
 
       expect(helper.highlight(blob_name, blob_content)).to eq(expected)
     end
 
-    it 'should highlight multi-line comments' do
+    it 'highlights multi-line comments' do
       result = helper.highlight(blob_name, multiline_content)
       html = Nokogiri::HTML(result)
       lines = html.search('.s')
@@ -49,7 +49,7 @@ describe BlobHelper do
 <span id="LC4" class="line"> ddd</span></code></pre>)
       end
 
-      it 'should highlight each line properly' do
+      it 'highlights each line properly' do
         result = helper.highlight(blob_name, blob_content)
         expect(result).to eq(expected)
       end
@@ -62,7 +62,7 @@ describe BlobHelper do
     let(:expected_svg_path) { File.join(Rails.root, 'spec', 'fixtures', 'sanitized.svg') }
     let(:expected) { open(expected_svg_path).read }
 
-    it 'should retain essential elements' do
+    it 'retains essential elements' do
       blob = OpenStruct.new(data: data)
       expect(sanitize_svg(blob).data).to eq(expected)
     end
diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb
index b6554de1c64989e0153486d8c1d91b2cf2e32797..faecad744c0e72ffeb48c991e70b1bfebb254bd6 100644
--- a/spec/helpers/diff_helper_spec.rb
+++ b/spec/helpers/diff_helper_spec.rb
@@ -32,16 +32,16 @@ describe DiffHelper do
   end
 
   describe 'diff_options' do
-    it 'should return no collapse false' do
+    it 'returns no collapse false' do
       expect(diff_options).to include(no_collapse: false)
     end
 
-    it 'should return no collapse true if expand_all_diffs' do
+    it 'returns no collapse true if expand_all_diffs' do
       allow(controller).to receive(:params) { { expand_all_diffs: true } }
       expect(diff_options).to include(no_collapse: true)
     end
 
-    it 'should return no collapse true if action name diff_for_path' do
+    it 'returns no collapse true if action name diff_for_path' do
       allow(controller).to receive(:action_name) { 'diff_for_path' }
       expect(diff_options).to include(no_collapse: true)
     end
@@ -60,11 +60,11 @@ describe DiffHelper do
   end
 
   describe '#diff_line_content' do
-    it 'should return non breaking space when line is empty' do
+    it 'returns non breaking space when line is empty' do
       expect(diff_line_content(nil)).to eq(' &nbsp;')
     end
 
-    it 'should return the line itself' do
+    it 'returns the line itself' do
       expect(diff_line_content(diff_file.diff_lines.first.text)).
         to eq('@@ -6,12 +6,18 @@ module Popen')
       expect(diff_line_content(diff_file.diff_lines.first.type)).to eq('match')
diff --git a/spec/helpers/emails_helper_spec.rb b/spec/helpers/emails_helper_spec.rb
index 7a3e38d7e63cae8b0ce804635823b8317df47dc0..3223556e1d3444980ed81a24d912062f3f5f7bf1 100644
--- a/spec/helpers/emails_helper_spec.rb
+++ b/spec/helpers/emails_helper_spec.rb
@@ -8,37 +8,37 @@ describe EmailsHelper do
     end
 
     context 'when time limit is less than 2 hours' do
-      it 'should display the time in hours using a singular unit' do
+      it 'displays the time in hours using a singular unit' do
         validate_time_string(1.hour, '1 hour')
       end
     end
 
     context 'when time limit is 2 or more hours' do
-      it 'should display the time in hours using a plural unit' do
+      it 'displays the time in hours using a plural unit' do
         validate_time_string(2.hours, '2 hours')
       end
     end
 
     context 'when time limit contains fractions of an hour' do
-      it 'should round down to the nearest hour' do
+      it 'rounds down to the nearest hour' do
         validate_time_string(96.minutes, '1 hour')
       end
     end
 
     context 'when time limit is 24 or more hours' do
-      it 'should display the time in days using a singular unit' do
+      it 'displays the time in days using a singular unit' do
         validate_time_string(24.hours, '1 day')
       end
     end
 
     context 'when time limit is 2 or more days' do
-      it 'should display the time in days using a plural unit' do
+      it 'displays the time in days using a plural unit' do
         validate_time_string(2.days, '2 days')
       end
     end
 
     context 'when time limit contains fractions of a day' do
-      it 'should round down to the nearest day' do
+      it 'rounds down to the nearest day' do
         validate_time_string(57.hours, '2 days')
       end
     end
diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb
index 6b5e3d93d48da88f7c01d576bb4c07ff2126600c..022aba0c0d079946ad05e6749cd9491370616107 100644
--- a/spec/helpers/events_helper_spec.rb
+++ b/spec/helpers/events_helper_spec.rb
@@ -6,34 +6,34 @@ describe EventsHelper do
       allow(helper).to receive(:current_user).and_return(double)
     end
 
-    it 'should display one line of plain text without alteration' do
+    it 'displays one line of plain text without alteration' do
       input = 'A short, plain note'
       expect(helper.event_note(input)).to match(input)
       expect(helper.event_note(input)).not_to match(/\.\.\.\z/)
     end
 
-    it 'should display inline code' do
+    it 'displays inline code' do
       input = 'A note with `inline code`'
       expected = 'A note with <code>inline code</code>'
 
       expect(helper.event_note(input)).to match(expected)
     end
 
-    it 'should truncate a note with multiple paragraphs' do
+    it 'truncates a note with multiple paragraphs' do
       input = "Paragraph 1\n\nParagraph 2"
       expected = 'Paragraph 1...'
 
       expect(helper.event_note(input)).to match(expected)
     end
 
-    it 'should display the first line of a code block' do
+    it 'displays the first line of a code block' do
       input = "```\nCode block\nwith two lines\n```"
       expected = %r{<pre.+><code>Code block\.\.\.</code></pre>}
 
       expect(helper.event_note(input)).to match(expected)
     end
 
-    it 'should truncate a single long line of text' do
+    it 'truncates a single long line of text' do
       text = 'The quick brown fox jumped over the lazy dog twice' # 50 chars
       input = text * 4
       expected = (text * 2).sub(/.{3}/, '...')
@@ -41,7 +41,7 @@ describe EventsHelper do
       expect(helper.event_note(input)).to match(expected)
     end
 
-    it 'should preserve a link href when link text is truncated' do
+    it 'preserves a link href when link text is truncated' do
       text = 'The quick brown fox jumped over the lazy dog' # 44 chars
       input = "#{text}#{text}#{text} " # 133 chars
       link_url = 'http://example.com/foo/bar/baz' # 30 chars
@@ -52,7 +52,7 @@ describe EventsHelper do
       expect(helper.event_note(input)).to match(expected_link_text)
     end
 
-    it 'should preserve code color scheme' do
+    it 'preserves code color scheme' do
       input = "```ruby\ndef test\n  'hello world'\nend\n```"
       expected = '<pre class="code highlight js-syntax-highlight ruby">' \
         "<code><span class=\"k\">def</span> <span class=\"nf\">test</span>\n" \
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index ade5c3b02d93660f9ef8eb9d39d3d31f00334e63..5368e5fab067fd5a3d17c120f3e2ff8c4a6b1411 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -26,17 +26,17 @@ describe GitlabMarkdownHelper do
     describe "referencing multiple objects" do
       let(:actual) { "#{merge_request.to_reference} -> #{commit.to_reference} -> #{issue.to_reference}" }
 
-      it "should link to the merge request" do
+      it "links to the merge request" do
         expected = namespace_project_merge_request_path(project.namespace, project, merge_request)
         expect(helper.markdown(actual)).to match(expected)
       end
 
-      it "should link to the commit" do
+      it "links to the commit" do
         expected = namespace_project_commit_path(project.namespace, project, commit)
         expect(helper.markdown(actual)).to match(expected)
       end
 
-      it "should link to the issue" do
+      it "links to the issue" do
         expected = namespace_project_issue_path(project.namespace, project, issue)
         expect(helper.markdown(actual)).to match(expected)
       end
@@ -47,7 +47,7 @@ describe GitlabMarkdownHelper do
       let(:second_project) { create(:project, :public) }
       let(:second_issue) { create(:issue, project: second_project) }
 
-      it 'should link to the issue' do
+      it 'links to the issue' do
         expected = namespace_project_issue_path(second_project.namespace, second_project, second_issue)
         expect(markdown(actual, project: second_project)).to match(expected)
       end
@@ -58,7 +58,7 @@ describe GitlabMarkdownHelper do
     let(:commit_path) { namespace_project_commit_path(project.namespace, project, commit) }
     let(:issues)      { create_list(:issue, 2, project: project) }
 
-    it 'should handle references nested in links with all the text' do
+    it 'handles references nested in links with all the text' do
       actual = helper.link_to_gfm("This should finally fix #{issues[0].to_reference} and #{issues[1].to_reference} for real", commit_path)
       doc = Nokogiri::HTML.parse(actual)
 
@@ -88,7 +88,7 @@ describe GitlabMarkdownHelper do
       expect(doc.css('a')[4].text).to eq ' for real'
     end
 
-    it 'should forward HTML options' do
+    it 'forwards HTML options' do
       actual = helper.link_to_gfm("Fixed in #{commit.id}", commit_path, class: 'foo')
       doc = Nokogiri::HTML.parse(actual)
 
@@ -110,7 +110,7 @@ describe GitlabMarkdownHelper do
       expect(act).to eq %Q(<a href="/foo">#{issues[0].to_reference}</a>)
     end
 
-    it 'should replace commit message with emoji to link' do
+    it 'replaces commit message with emoji to link' do
       actual = link_to_gfm(':book:Book', '/foo')
       expect(actual).
         to eq %Q(<img class="emoji" title=":book:" alt=":book:" src="http://localhost/assets/1F4D6.png" height="20" width="20" align="absmiddle"><a href="/foo">Book</a>)
@@ -125,7 +125,7 @@ describe GitlabMarkdownHelper do
       helper.instance_variable_set(:@project_wiki, @wiki)
     end
 
-    it "should use Wiki pipeline for markdown files" do
+    it "uses Wiki pipeline for markdown files" do
       allow(@wiki).to receive(:format).and_return(:markdown)
 
       expect(helper).to receive(:markdown).with('wiki content', pipeline: :wiki, project_wiki: @wiki, page_slug: "nested/page")
@@ -133,7 +133,7 @@ describe GitlabMarkdownHelper do
       helper.render_wiki_content(@wiki)
     end
 
-    it "should use Asciidoctor for asciidoc files" do
+    it "uses Asciidoctor for asciidoc files" do
       allow(@wiki).to receive(:format).and_return(:asciidoc)
 
       expect(helper).to receive(:asciidoc).with('wiki content')
@@ -141,7 +141,7 @@ describe GitlabMarkdownHelper do
       helper.render_wiki_content(@wiki)
     end
 
-    it "should use the Gollum renderer for all other file types" do
+    it "uses the Gollum renderer for all other file types" do
       allow(@wiki).to receive(:format).and_return(:rdoc)
       formatted_content_stub = double('formatted_content')
       expect(formatted_content_stub).to receive(:html_safe)
diff --git a/spec/helpers/graph_helper_spec.rb b/spec/helpers/graph_helper_spec.rb
index 4acf38771b7ab8b799c003efc27778aac7f17221..51c49f0e5871b8c912f123d024229df3f77ae7b6 100644
--- a/spec/helpers/graph_helper_spec.rb
+++ b/spec/helpers/graph_helper_spec.rb
@@ -6,7 +6,7 @@ describe GraphHelper do
     let(:commit)  { project.commit("master") }
     let(:graph) { Network::Graph.new(project, 'master', commit, '') }
 
-    it 'filter our refs used by GitLab' do
+    it 'filters our refs used by GitLab' do
       allow(commit).to receive(:ref_names).and_return(['refs/merge-requests/abc', 'master', 'refs/tmp/xyz'])
       self.instance_variable_set(:@graph, graph)
       refs = get_refs(project.repository, commit)
diff --git a/spec/helpers/groups_helper_spec.rb b/spec/helpers/groups_helper_spec.rb
index 4ea90a80a926649ba2597bf08ddad0831a8c14e8..0807534720a9b69a6b1812692b5de048bd2710dc 100644
--- a/spec/helpers/groups_helper_spec.rb
+++ b/spec/helpers/groups_helper_spec.rb
@@ -4,7 +4,7 @@ describe GroupsHelper do
   describe 'group_icon' do
     avatar_file_path = File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif')
 
-    it 'should return an url for the avatar' do
+    it 'returns an url for the avatar' do
       group = create(:group)
       group.avatar = File.open(avatar_file_path)
       group.save!
@@ -12,7 +12,7 @@ describe GroupsHelper do
         to match("/uploads/group/avatar/#{group.id}/banana_sample.gif")
     end
 
-    it 'should give default avatar_icon when no avatar is present' do
+    it 'gives default avatar_icon when no avatar is present' do
       group = create(:group)
       group.save!
       expect(group_icon(group.path)).to match('group_avatar.png')
diff --git a/spec/helpers/issues_helper_spec.rb b/spec/helpers/issues_helper_spec.rb
index 9ee46dd2508b246d49c9743fc5ca70c5b798574b..5e4655dfc95f5dd8f4cfcc042841fe1fb2a0e1e0 100644
--- a/spec/helpers/issues_helper_spec.rb
+++ b/spec/helpers/issues_helper_spec.rb
@@ -10,18 +10,19 @@ describe IssuesHelper do
     let(:ext_expected) { issues_url.gsub(':id', issue.iid.to_s).gsub(':project_id', ext_project.id.to_s) }
     let(:int_expected) { polymorphic_path([@project.namespace, project, issue]) }
 
-    it "should return internal path if used internal tracker" do
+    it "returns internal path if used internal tracker" do
       @project = project
+
       expect(url_for_issue(issue.iid)).to match(int_expected)
     end
 
-    it "should return path to external tracker" do
+    it "returns path to external tracker" do
       @project = ext_project
 
       expect(url_for_issue(issue.iid)).to match(ext_expected)
     end
 
-    it "should return empty string if project nil" do
+    it "returns empty string if project nil" do
       @project = nil
 
       expect(url_for_issue(issue.iid)).to eq ""
@@ -45,7 +46,7 @@ describe IssuesHelper do
         allow(Gitlab.config).to receive(:issues_tracker).and_return(nil)
       end
 
-      it "should return external path" do
+      it "returns external path" do
         expect(url_for_issue(issue.iid)).to match(ext_expected)
       end
     end
diff --git a/spec/helpers/notes_helper_spec.rb b/spec/helpers/notes_helper_spec.rb
index af371248ae95ee943a14fa2b377ea368d8dbd1a4..153f1864ceb8041f3597191494e9617b957e91df 100644
--- a/spec/helpers/notes_helper_spec.rb
+++ b/spec/helpers/notes_helper_spec.rb
@@ -21,7 +21,7 @@ describe NotesHelper do
   end
 
   describe "#notes_max_access_for_users" do
-    it 'return human access levels' do
+    it 'returns human access levels' do
       expect(helper.note_max_access_for_user(owner_note)).to eq('Owner')
       expect(helper.note_max_access_for_user(master_note)).to eq('Master')
       expect(helper.note_max_access_for_user(reporter_note)).to eq('Reporter')
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index 601b6915e27e83d1c13a76f6e324b885b79d90bb..b0bb991539b38ca0fb189c96739f72aafec045c6 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -42,7 +42,7 @@ describe SearchHelper do
         expect(search_autocomplete_opts(project.name).size).to eq(1)
       end
 
-      it "should not include the public group" do
+      it "does not include the public group" do
         group = create(:group)
         expect(search_autocomplete_opts(group.name).size).to eq(0)
       end
diff --git a/spec/helpers/submodule_helper_spec.rb b/spec/helpers/submodule_helper_spec.rb
index 101217591322d5c279222cd37071486b43aedf52..37ac6a2699d2d8aebe1997bba0f3dfa45c7c4658 100644
--- a/spec/helpers/submodule_helper_spec.rb
+++ b/spec/helpers/submodule_helper_spec.rb
@@ -17,35 +17,35 @@ describe SubmoduleHelper do
         allow(Gitlab.config.gitlab).to receive(:protocol).and_return('http') # set this just to be sure
       end
 
-      it 'should detect ssh on standard port' do
+      it 'detects ssh on standard port' do
         allow(Gitlab.config.gitlab_shell).to receive(:ssh_port).and_return(22) # set this just to be sure
         allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return(Settings.send(:build_gitlab_shell_ssh_path_prefix))
         stub_url([ config.user, '@', config.host, ':gitlab-org/gitlab-ce.git' ].join(''))
         expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
       end
 
-      it 'should detect ssh on non-standard port' do
+      it 'detects ssh on non-standard port' do
         allow(Gitlab.config.gitlab_shell).to receive(:ssh_port).and_return(2222)
         allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return(Settings.send(:build_gitlab_shell_ssh_path_prefix))
         stub_url([ 'ssh://', config.user, '@', config.host, ':2222/gitlab-org/gitlab-ce.git' ].join(''))
         expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
       end
 
-      it 'should detect http on standard port' do
+      it 'detects http on standard port' do
         allow(Gitlab.config.gitlab).to receive(:port).and_return(80)
         allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
         stub_url([ 'http://', config.host, '/gitlab-org/gitlab-ce.git' ].join(''))
         expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
       end
 
-      it 'should detect http on non-standard port' do
+      it 'detects http on non-standard port' do
         allow(Gitlab.config.gitlab).to receive(:port).and_return(3000)
         allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
         stub_url([ 'http://', config.host, ':3000/gitlab-org/gitlab-ce.git' ].join(''))
         expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
       end
 
-      it 'should work with relative_url_root' do
+      it 'works with relative_url_root' do
         allow(Gitlab.config.gitlab).to receive(:port).and_return(80) # set this just to be sure
         allow(Gitlab.config.gitlab).to receive(:relative_url_root).and_return('/gitlab/root')
         allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
@@ -55,22 +55,22 @@ describe SubmoduleHelper do
     end
 
     context 'submodule on github.com' do
-      it 'should detect ssh' do
+      it 'detects ssh' do
         stub_url('git@github.com:gitlab-org/gitlab-ce.git')
         expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ])
       end
 
-      it 'should detect http' do
+      it 'detects http' do
         stub_url('http://github.com/gitlab-org/gitlab-ce.git')
         expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ])
       end
 
-      it 'should detect https' do
+      it 'detects https' do
         stub_url('https://github.com/gitlab-org/gitlab-ce.git')
         expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ])
       end
 
-      it 'should return original with non-standard url' do
+      it 'returns original with non-standard url' do
         stub_url('http://github.com/gitlab-org/gitlab-ce')
         expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ])
 
@@ -80,22 +80,22 @@ describe SubmoduleHelper do
     end
 
     context 'submodule on gitlab.com' do
-      it 'should detect ssh' do
+      it 'detects ssh' do
         stub_url('git@gitlab.com:gitlab-org/gitlab-ce.git')
         expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ])
       end
 
-      it 'should detect http' do
+      it 'detects http' do
         stub_url('http://gitlab.com/gitlab-org/gitlab-ce.git')
         expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ])
       end
 
-      it 'should detect https' do
+      it 'detects https' do
         stub_url('https://gitlab.com/gitlab-org/gitlab-ce.git')
         expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ])
       end
 
-      it 'should return original with non-standard url' do
+      it 'returns original with non-standard url' do
         stub_url('http://gitlab.com/gitlab-org/gitlab-ce')
         expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ])
 
@@ -105,7 +105,7 @@ describe SubmoduleHelper do
     end
 
     context 'submodule on unsupported' do
-      it 'should return original' do
+      it 'returns original' do
         stub_url('http://mygitserver.com/gitlab-org/gitlab-ce')
         expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ])
 
diff --git a/spec/helpers/tree_helper_spec.rb b/spec/helpers/tree_helper_spec.rb
index c70dd8076e0e6c79c5049ea53ebb2443ef598629..8d6537ba4b54b6eced05bac9a9faa4ea84846a18 100644
--- a/spec/helpers/tree_helper_spec.rb
+++ b/spec/helpers/tree_helper_spec.rb
@@ -12,7 +12,7 @@ describe TreeHelper do
     context "on a directory containing more than one file/directory" do
       let(:tree_item) { double(name: "files", path: "files") }
 
-      it "should return the directory name" do
+      it "returns the directory name" do
         expect(flatten_tree(tree_item)).to match('files')
       end
     end
@@ -20,7 +20,7 @@ describe TreeHelper do
     context "on a directory containing only one directory" do
       let(:tree_item) { double(name: "foo", path: "foo") }
 
-      it "should return the flattened path" do
+      it "returns the flattened path" do
         expect(flatten_tree(tree_item)).to match('foo/bar')
       end
     end
diff --git a/spec/lib/ci/charts_spec.rb b/spec/lib/ci/charts_spec.rb
index 97f2e97b062711776540b709949b38c6372c9b9c..034ea098193adf5458de21dccdc2f1e8cb26f430 100644
--- a/spec/lib/ci/charts_spec.rb
+++ b/spec/lib/ci/charts_spec.rb
@@ -7,12 +7,12 @@ describe Ci::Charts, lib: true do
       FactoryGirl.create(:ci_build, pipeline: @pipeline)
     end
 
-    it 'should return build times in minutes' do
+    it 'returns build times in minutes' do
       chart = Ci::Charts::BuildTime.new(@pipeline.project)
       expect(chart.build_times).to eq([2])
     end
 
-    it 'should handle nil build times' do
+    it 'handles nil build times' do
       create(:ci_pipeline, duration: nil, project: @pipeline.project)
 
       chart = Ci::Charts::BuildTime.new(@pipeline.project)