diff --git a/features/project/merge_requests.feature b/features/project/merge_requests.feature
index f1adf0bd34d97f833efe3907aad15895e3f2f440..f8a43e1ee367f5a4609cde754375aa00b024593d 100644
--- a/features/project/merge_requests.feature
+++ b/features/project/merge_requests.feature
@@ -193,21 +193,21 @@ Feature: Project Merge Requests
   @javascript
   Scenario: I can't preview without text
     Given I visit merge request page "Bug NS-04"
-    And I click link "Edit"
+    And I click link "Edit" for the merge request
     And I haven't written any description text
     Then I should not see the Markdown preview button
 
   @javascript
   Scenario: I can preview with text
     Given I visit merge request page "Bug NS-04"
-    And I click link "Edit"
+    And I click link "Edit" for the merge request
     And I write a description like "Nice"
     Then I should see the Markdown preview button
 
   @javascript
   Scenario: I preview a merge request description
     Given I visit merge request page "Bug NS-04"
-    And I click link "Edit"
+    And I click link "Edit" for the merge request
     And I preview a description text like "Bug fixed :smile:"
     Then I should see the Markdown preview
     And I should not see the Markdown text field
@@ -215,6 +215,6 @@ Feature: Project Merge Requests
   @javascript
   Scenario: I can edit after preview
     Given I visit merge request page "Bug NS-04"
-    And I click link "Edit"
+    And I click link "Edit" for the merge request
     And I preview a description text like "Bug fixed :smile:"
     Then I should see the Markdown edit button
diff --git a/features/steps/project/merge_requests.rb b/features/steps/project/merge_requests.rb
index 32bee9a563f3a2616f9e01d227d0240fa861985f..d5e060bdbe818ed9328745d5a8176079ff89244f 100644
--- a/features/steps/project/merge_requests.rb
+++ b/features/steps/project/merge_requests.rb
@@ -1,5 +1,6 @@
 class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
   include SharedAuthentication
+  include SharedIssuable
   include SharedProject
   include SharedNote
   include SharedPaths
@@ -10,10 +11,6 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
     click_link "New Merge Request"
   end
 
-  step 'I click link "Edit"' do
-    click_link 'Edit'
-  end
-
   step 'I click link "Bug NS-04"' do
     click_link "Bug NS-04"
   end
diff --git a/features/steps/shared/diff_note.rb b/features/steps/shared/diff_note.rb
index bd22e95daee3cb9685845e6c6f6154cc33f6f496..8871b93edb69754267fe6a3be2808b5e3731284c 100644
--- a/features/steps/shared/diff_note.rb
+++ b/features/steps/shared/diff_note.rb
@@ -32,7 +32,7 @@ module SharedDiffNote
     click_diff_line(sample_commit.line_code)
     within("#{diff_file_selector} form[rel$='#{sample_commit.line_code}']") do
       fill_in "note[note]", with: "Should fix it :smile:"
-      find('.js-md-preview-button').trigger('click')
+      find('.js-md-preview-button').click
     end
   end
 
@@ -41,7 +41,7 @@ module SharedDiffNote
 
     within("#{diff_file_selector} form[rel$='#{sample_commit.del_line_code}']") do
       fill_in "note[note]", with: "DRY this up"
-      find('.js-md-preview-button').trigger('click')
+      find('.js-md-preview-button').click
     end
   end
 
@@ -73,7 +73,7 @@ module SharedDiffNote
 
   step 'I should not see the diff comment preview button' do
     within(diff_file_selector) do
-      page.should have_css('.js-md-preview-button', visible: false)
+      expect(page).not_to have_css('.js-md-preview-button')
     end
   end
 
@@ -131,27 +131,27 @@ module SharedDiffNote
 
   step 'I should see the diff comment preview' do
     within("#{diff_file_selector} form") do
-      page.should have_css('.js-md-preview', visible: false)
+      expect(page).to have_css('.js-md-preview')
     end
   end
 
   step 'I should see the diff comment edit button' do
     within(diff_file_selector) do
-      page.should have_css('.js-md-write-button', visible: true)
+      expect(page).to have_css('.js-md-write-button')
     end
   end
 
   step 'I should see the diff comment preview button' do
     within(diff_file_selector) do
-      page.should have_css('.js-md-preview-button', visible: true)
+      expect(page).to have_css('.js-md-preview-button')
     end
   end
 
   step 'I should see two separate previews' do
     within(diff_file_selector) do
-      page.should have_css('.js-md-preview', visible: true, count: 2)
-      page.should have_content("Should fix it")
-      page.should have_content("DRY this up")
+      expect(page).to have_css('.js-md-preview', count: 2)
+      expect(page).to have_content("Should fix it")
+      expect(page).to have_content("DRY this up")
     end
   end
 
diff --git a/features/steps/shared/issuable.rb b/features/steps/shared/issuable.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a0150e90380d00ebc979ed104eeb212ef759837a
--- /dev/null
+++ b/features/steps/shared/issuable.rb
@@ -0,0 +1,15 @@
+module SharedIssuable
+  include Spinach::DSL
+
+  def edit_issuable
+    find('.issue-btn-group').click_link 'Edit'
+  end
+
+  step 'I click link "Edit" for the merge request' do
+    edit_issuable
+  end
+
+  step 'I click link "Edit" for the issue' do
+    edit_issuable
+  end
+end
diff --git a/features/steps/shared/markdown.rb b/features/steps/shared/markdown.rb
index f3e61aa8e49b2506ea10ff9a6eb7dea553fb3b4a..df4514b5646e93a73b8975bae79cabd6eb53854e 100644
--- a/features/steps/shared/markdown.rb
+++ b/features/steps/shared/markdown.rb
@@ -56,27 +56,27 @@ EOT
   end
 
   step 'I should not see the Markdown preview' do
-    find('.gfm-form').should have_css('.js-md-preview', visible: false)
+    expect(find('.gfm-form')).not_to have_css('.js-md-preview')
   end
 
   step 'I should not see the Markdown preview button' do
-    find('.gfm-form').should have_css('.js-md-preview-button', visible: false)
+    expect(find('.gfm-form')).not_to have_css('.js-md-preview-button')
   end
 
   step 'I should not see the Markdown text field' do
-    find('.gfm-form').should have_css('textarea', visible: false)
+    expect(find('.gfm-form')).not_to have_css('textarea')
   end
 
   step 'I should see the Markdown edit button' do
-    find('.gfm-form').should have_css('.js-md-write-button', visible: true)
+    expect(find('.gfm-form')).to have_css('.js-md-write-button')
   end
 
   step 'I should see the Markdown preview' do
-    find('.gfm-form').should have_css('.js-md-preview', visible: true)
+    expect(find('.gfm-form')).to have_css('.js-md-preview')
   end
 
   step 'I should see the Markdown preview button' do
-    find('.gfm-form').should have_css('.js-md-preview-button', visible: true)
+    expect(find('.gfm-form')).to have_css('.js-md-preview-button')
   end
 
   step 'I write a description like "Nice"' do
@@ -86,7 +86,7 @@ EOT
   step 'I preview a description text like "Bug fixed :smile:"' do
     within('.gfm-form') do
       fill_in 'Description', with: 'Bug fixed :smile:'
-      find('.js-md-preview-button').trigger('click')
+      find('.js-md-preview-button').click()
     end
   end
 
diff --git a/features/steps/shared/note.rb b/features/steps/shared/note.rb
index e298312f065f59dc83f751a468fafac891935a52..a83f74228af37eed8de6a21a6bda401bc2f24015 100644
--- a/features/steps/shared/note.rb
+++ b/features/steps/shared/note.rb
@@ -23,7 +23,7 @@ module SharedNote
   step 'I preview a comment text like "Bug fixed :smile:"' do
     within(".js-main-target-form") do
       fill_in "note[note]", with: "Bug fixed :smile:"
-      find('.js-md-preview-button').trigger('click')
+      find('.js-md-preview-button').click
     end
   end
 
@@ -51,13 +51,13 @@ module SharedNote
 
   step 'I should not see the comment preview' do
     within(".js-main-target-form") do
-      page.should have_css('.js-md-preview', visible: false)
+      expect(page).not_to have_css('.js-md-preview')
     end
   end
 
   step 'I should not see the comment preview button' do
     within(".js-main-target-form") do
-      page.should have_css('.js-md-preview-button', visible: false)
+      expect(page).not_to have_css('.js-md-preview-button')
     end
   end
 
@@ -81,19 +81,19 @@ module SharedNote
 
   step 'I should see the comment edit button' do
     within(".js-main-target-form") do
-      page.should have_css('.js-md-write-button', visible: true)
+      expect(page).to have_css('.js-md-write-button')
     end
   end
 
   step 'I should see the comment preview' do
     within(".js-main-target-form") do
-      page.should have_css('.js-md-preview', visible: true)
+      expect(page).to have_css('.js-md-preview')
     end
   end
 
   step 'I should see the comment preview button' do
     within(".js-main-target-form") do
-      page.should have_css('.js-md-preview-button', visible: true)
+      expect(page).to have_css('.js-md-preview-button')
     end
   end
 
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index bf3c12012e5cc5ac20b7673da5475d60b38a74df..36394265abf182c61863bf4eb9567fb537c1add7 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -19,8 +19,10 @@ describe 'Comments' do
       it 'should be valid' do
         should have_css(".js-main-target-form", visible: true, count: 1)
         find(".js-main-target-form input[type=submit]").value.should == "Add Comment"
-        within(".js-main-target-form") { should_not have_link("Cancel") }
-        within('.js-main-target-form') { should have_css('.js-md-preview-button', visible: false) }
+        within('.js-main-target-form') do
+          expect(page).not_to have_link('Cancel')
+          expect(page).not_to have_css('.js-md-preview-button', visible: true)
+        end
       end
 
       describe "with text" do
@@ -31,8 +33,10 @@ describe 'Comments' do
         end
 
         it 'should have enable submit button and preview button' do
-          within(".js-main-target-form") { should_not have_css(".js-comment-button[disabled]") }
-          within('.js-main-target-form') { should have_css('.js-md-preview-button', visible: true) }
+          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')
+          end
         end
       end
     end
@@ -41,15 +45,17 @@ describe 'Comments' do
       before do
         within(".js-main-target-form") do
           fill_in "note[note]", with: "This is awsome!"
-          find('.js-md-preview-button').trigger('click')
+          find('.js-md-preview-button').click
           click_button "Add Comment"
         end
       end
 
       it 'should be added and form reset' do
         should have_content("This is awsome!")
-        within(".js-main-target-form") { should have_no_field("note[note]", with: "This is awesome!") }
-        within('.js-main-target-form') { should have_css('.js-md-preview', visible: false) }
+        within(".js-main-target-form") do
+          expect(page).to have_no_field("note[note]", with: "This is awesome!")
+          expect(page).not_to have_css('.js-md-preview', visible: true)
+        end
         within(".js-main-target-form") { should have_css(".js-note-text", visible: true) }
       end
     end
@@ -172,11 +178,11 @@ describe 'Comments' do
           # add two separate texts and trigger previews on both
           within("tr[id='#{line_code}'] + .js-temp-notes-holder") do
             fill_in "note[note]", with: "One comment on line 7"
-            find('.js-md-preview-button').trigger('click')
+            find('.js-md-preview-button').click
           end
           within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
             fill_in "note[note]", with: "Another comment on line 10"
-            find('.js-md-preview-button').trigger('click')
+            find('.js-md-preview-button').click
           end
         end
       end